В настоящее время я столкнулся с некоторыми проблемами, связанными с запуском snakemake промежуточных правил, необходимых для контрольной точки. После попытки устранить эту проблему я считаю, что проблема заключается в команде расширения в функции aggregate_input
, но не могу понять, почему она ведет себя так, как есть.
Вот текущая документация по контрольным точкам от snakemake, которую я смоделировал после https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#data-dependent-conditional-execution
rule all:
input:
¦ expand("string_tie_assembly/{sample}.gtf", sample=sample),
¦ expand("combined_fasta/{sample}.fa", sample=sample),
¦ "aggregated_fasta/all_fastas_combined.fa"
checkpoint clustering:
input:
¦ "string_tie_assembly_merged/merged_{sample}.gtf"
output:
¦ clusters = directory("split_gtf_file/{sample}")
shell:
¦ """
¦ mkdir -p split_gtf_file/{wildcards.sample} ;
collapse_gtf_file.py -gtf {input} -o split_gtf_file/{wildcards.sample}/{wildcards.sample}
¦ """
rule gtf_to_fasta:
input:
¦ "split_gtf_file/{sample}/{sample}_{i}.gtf"
output:
¦ "lncRNA_fasta/{sample}/canidate_{sample}_{i}.fa"
shell:
¦ "gffread -w {output} -g {reference} {input}"
rule rename_fasta_files:
input:
¦ "lncRNA_fasta/{sample}/canidate_{sample}_{i}.fa"
output:
¦ "lncRNA_fasta_renamed/{sample}/{sample}_{i}.fa"
shell:
¦ "seqtk rename {input} {wildcards.sample}_{i} > {output}"
#Gather N number of output files from the GTF split
def aggregate_input(wildcards):
checkpoint_output = checkpoints.clustering.get(**wildcards).output[0]
x = expand("lncRNA_fasta_renamed/{sample}/{sample}_{i}.fa",
¦ sample=sample,
¦ i=glob_wildcards(os.path.join(checkpoint_output, "{i}.fa")).i)
print(x)
return x
#Aggregate fasta from split GTF files together
rule combine_fasta_file:
input:
¦ aggregate_input
output:
¦ "combined_fasta/{sample}.fa"
shell:
"cat {input} > {output}"
¦ aggregate_input
output:
¦ "combined_fasta/{sample}.fa"
shell:
¦ "cat {input} > {output}"
#Aggegate aggregated fasta files
def gather_files(wildcards):
files = expand("combined_fasta/{sample}.fa", sample=sample)
return(files)
rule aggregate_fasta_files:
input:
¦ gather_files
output:
¦ "aggregated_fasta/all_fastas_combined.fa"
shell:
¦ "cat {input} > {output}"
Проблема, с которой я постоянно сталкиваюсь, заключается в том, что после запуска этого файла snakemake правило combine_fasta_file
не запускается. Потратив больше времени на эту ошибку, я понял, что проблема заключалась в том, что функция aggregate_input
не расширялась и возвращает пустой список []
вместо того, что я ожидал, который представляет собой список всех файлов в расширенном каталоге, то есть: lncRNA_fasta_renamed/{sample}/{sample}_{i}.fa
.
Это странно, особенно с учетом того факта, что checkpoint clustering
работает правильно, а выходные файлы вывода находятся в rule all
Кто-нибудь знает, почему это так? Или это может быть по какой-то причине.
Команда, используемая для запуска snakemake: snakemake -rs Assemble_regions.snake --configfile snake_config_files / annotated_group_config.yaml
target files
, и определили ли вы их в своем snakefile или через командную строку во время его выполнения? Какая команда используется для запуска snakemake? Какие правила правильно выполняются на этом этапе? - person Manavalan Gajapathy   schedule 23.05.2019