我有几个带有后缀.1.ht2l到.8.ht2l的基因组文件
bob.1.ht2l
...
bob.8.ht2l
steve.1.ht2l
...
steve.8.ht2l和血清RNAseq样本
flower_kevin_1.fastq.gz
flower_kevin_2.fastq.gz
flower_daniel_1.fastq.gz
flower_daniel_2.fastq.gz 我需要使所有的rnaseq读对每个基因组。如dariober所建议的那样更新:
workdir: "/path/to/aligned"
(HISAT2_INDEX_PREFIX,)=glob_wildcards("/path/to/index/{prefix}.1.ht2l")
(SAMPLES,)=glob_wildcards("/path/to/{sample}_1.fastq.gz")
print(HISAT2_INDEX_PREFIX)
print (SAMPLES)
rule all:
input:
expand("{prefix}.{sample}.bam", zip, prefix=HISAT2_INDEX_PREFIX, sample=SAMPLES)
rule hisat2:
input:
hisat2_index=expand("%s.{ix}.ht2l" % "/path/to/index/{prefix}", ix=range(1, 9), prefix = HISAT2_INDEX_PREFIX),
fastq1="/path/to/{sample}_1.fastq.gz",
fastq2="/path/to/{sample}_2.fastq.gz"
output:
bam = "{prefix}.{sample}.bam",
txt = "{prefix}.{sample}.txt",
log: "{prefix}.{sample}.snakemake_log.txt"
threads: 5
shell:
"/Tools/hisat2-2.1.0/hisat2 -p {threads} -x {/path/to/index/{wildcards.prefix}"
" -1 {input.fastq1} -2 {input.fastq2} --summary-file {output.txt} |"
"/Tools/samtools-1.9/samtools sort -@ {threads} -o {output.bam}"我遇到的问题是,当运行HISAT2时将所有bob.1.ht2l:bob.8.ht2l和steve.1.ht2l:steve.8.ht2l作为-x输入。而rna-seq则应分别定位于每个基因组。错误在哪里?注:我以前的问题是:Snakemake: HISAT2 alignment of many RNAseq reads against many genomes
发布于 2020-01-15 16:17:45
我认为您的困惑来自于这样一个事实: hisat需要索引文件的前缀,而不是所有索引文件的列表。因此,代替-x {input.hisat2_index} (即索引文件列表)使用类似于-x /path/to/{wildcards.prefix}的东西。
换句话说,只有在这些文件准备好之后,输入hisat2_index=expand(...)才能告诉snakemake启动这个规则,但是您不能直接使用它们(当然,hisat确实使用它们,但是您没有将它们传递给命令行)。
https://stackoverflow.com/questions/59754604
复制相似问题