Я написал простой конвейер ChIP-seq в Snakemake, используя файл конфигурации в формате JSON, и пробный прогон прошел, как и ожидалось.После прочтения лучших рекомендаций я переключился на файл конфигурации в формате yaml и внес соответствующие изменения, но теперь получаю «строковые индексы должны быть целыми ошибками».
Конвейер работаетTrimmomatic, FastQC, Bowtie2 и MACS2 максимально используют обертки.Для простоты я включил только код Trimmomatic и FastQC, так как думаю, что проблема заключается в чтении файла конфигурации.Файл конфигурации содержит примеры (три файла csv), каталоги (для создания согласованной структуры каталогов), базовое имя выходного файла и данные последовательности (геном и т. Д.).
config.yaml
---
samples:
sample_names:samples.csv
sample_files:files.csv
sample_comparisons:comps.csv
directories:
base_dir: /base/
sample_dir: Samples/
seq_dir: Raw_Sequences/
trim_dir: Sequences/
aln_dir: Alignments/
peak_dir: Peak_Calling/
logs_dir: Logs/
out_base: base
ref_seq_data:
genome:<genome directory>
bt2_index:<bowtie2 index directory>
...
Snakefile
import pandas as pd
shell.prefix("set -euo pipefail; ")
configfile: "config.yaml"
sample_names = config["samples"]["sample_names"]
sample_files = config["samples"]["sample_files"]
sample_comparisons = config["samples"]["sample_comparisons"]
base_dir = config["directories"]["base_dir"]
sample_dir = config["directories"]["base_dir"]+config["directories"]["sample_dir"]
seq_dir = config["directories"]["seq_dir"]
trim_dir = config["directories"]["sample_dir"]+config["directories"]["trim_dir"]
aln_dir = config["directories"]["sample_dir"]+config["directories"]["aln_dir"]
peak_dir = config["directories"]["sample_dir"]+config["directories"]["peak_dir"]
log_dir = config["directories"]["sample_dir"]+config["directories"]["logs_dir"]
genome = config["ref_seq_data"]["genome"]
out_base = config["out_base"]
samples = pd.read_csv(sample_names, index_col="sample")
files = pd.read_csv(sample_files, index_col = "sample")
comparisons = pd.read_csv(sample_comparisons)
rule all:
input:
expand(log_dir+"{sample}_{read}_fastqc.html", sample = samples, read = [1,2])
# Load Rules
include: "Snakemake_rules/NGS_QC.smk"
Полученное сообщение об ошибке:
TypeError в строке 7 Snakefile: строковые индексы должны быть целыми числами
При использовании файла конфигурации в формате JSON он не разбивался на группы (каждая строка была автономной), и при вызове этих строк с помощью config [] он правильно назначал правильные значения.
Большинство изобсуждение, которое я видел по этому поводу, включает итерацию, поэтому я не уверен, почему здесь возникает ошибка при использовании файла в формате yaml.