微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Snakemake 中使用 cutadapt 适配器文件输入

如何解决在 Snakemake 中使用 cutadapt 适配器文件输入

我是 Snakemake 的新手,正在尝试移植我的 BASH 代码以使用 Snakemake 规则。免责声明,我试图在 shell 块中使用带有头文件和适配器序列的 fasta 文件解复用带有 cutadapt 的 fastq 文件。加载与 fasta 标头匹配的样本名称,并在规则 all 中将其指定为通配符:

rule all:
input:
    expand([os.path.join(outDir,"reads_trim.fq"),os.path.join(outDir,"{name}.tmp")],name=samples_list)

reads_trim 文件一个标准的、连接的 fastq 文件(来自 Nanopore 测序)。我的问题是这个规则运行了 12 次,因为我的“samples_list”中有 12 个样本。然后我得到 12 个输出文件,正如我应该的那样,命名正确,但它们都包含完全相同的内容。我想知道如果它只运行一次,输出是否正确,但还没有找到强制这种行为的方法

rule demultiplex:
""" Demultiplex Nextera-styled barcodes using the compiled barcode fasta file """
input:
    barcodeFile=os.path.join(outDir,"barcodes_used.fasta"),fastqFile=os.path.join(outDir,"reads_trim.fq")
output: os.path.join(outDir,"{name}.tmp")
message: "Demultiplexing trimmed reads"
log: "logs/cutadapt/demultiplexing_{name}.log"
shell:
    """
    cutadapt -e 0.20 -O 10 -m 15 -M 15 -g file:{input.barcodeFile} -o {output} {input.fastqFile}
    """

知道如何获得一个文件进入的标准行为,x 个文件以不同的输出(找到适配器的位置)吗?

解决方法

我不熟悉用于解复用的 cutadapt,但从快速浏览 docs,我 认为你想要这些东西(我简化了你的原始代码):

rule all:
    input:
        expand("{name}.tmp",name= samples_list),rule demultiplex:
    input:
        barcodeFile= "barcodes_used.fasta",fastqFile= "reads_trim.fq"
    output: 
        expand("{name}.tmp",name=samples_list),shell:
        r"""
        cutadapt ... -g file:{input.barcodeFile} -o {{name}}.tmp {input.fastqFile}
        """

如果输入 reads_trim.fq 一次生成所有 12 个输出文件,则 您需要在 output 指令中列出所有 12 个输出。我使用了 expand() 函数。注意 {{name}}.tmp 有双花括号 告诉snakemake它不是通配符,但它的读法完全相同 {name}(根据 cutadapt 文档,如果我没看错的话)。

顺便问一下,你确定 cutadapt 可以解复用 Nanopore 吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?