nextflow - Nextflow deepTools 指纹
问题描述
我正在尝试使用 nextflow 管道从 deeptool 执行指纹(bamCoverage)。当我输入 bam 文件并运行脚本时。它说我没有索引文件。错误:[E::idx_find_and_load] 无法检索 'Kasumi_NCOR1.genome.sorted.bam' 的索引文件 [E::idx_find_and_load] 无法检索 'Kasumi_NCOR1.genome.sorted.bam' 的索引文件'Kasumi_NCOR1.genome.sorted .bam' 似乎没有索引。你必须先索引文件!
process fingerprint_cov {
publishDir "${params.outdir}/fingerprint_cov", mode: 'copy'
input:
set val(sample_id), file(samples) from sorted_bam_sample_control_ch.samples
set val(sample_id_c), file(controls) from sorted_bam_sample_control_ch.controls
output:
set val(sample_id), file("${sample_id}.cov.bedgraph") into sample_cov_ch
set val(sample_id_c), file("${sample_id_c}.cov.bedgraph") into control_cov_ch
script:
"""
bamCoverage -b ${samples} -o ${sample_id}.cov.bedgraph -of bedgraph -bs 1000 -p 10
bamCoverage -b ${controls} -o ${sample_id_c}.cov.bedgraph -of bedgraph -bs 1000 -p 10
"""
}
sorted_bam_sample_control_ch.samples 包含所有示例 bam 文件,而 sorted_bam_sample_control_ch.control 包含控制 bam 文件。如何输入 bam.bai 文件?我也看到输出 bam 和 bam.bai 到一个频道,但是如何处理这个步骤?
这是我的示例输入。但是当我运行该过程时,它只运行一个样本
[Kasumi_H3K36, [/mnt/Data/cut_and_tag/work/0c/24e138a92a1eb0d906e1e9fad9ba4b/Kasumi_H3K36.genome.sorted.bam, /mnt/Data/cut_and_tag/work/0c/24e138a92a1eb0d906e1e9fad9ba4b/Kasumi_H3K36.genome.sorted.bam.bai]]
[Kasumi_H4K5, [/mnt/Data/cut_and_tag/work/7e/a740e11ce39f2a310b749603c785a4/Kasumi_H4K5.genome.sorted.bam, /mnt/Data/cut_and_tag/work/7e/a740e11ce39f2a310b749603c785a4/Kasumi_H4K5.genome.sorted.bam.bai]]
[Kasumi_NCOR1, [/mnt/Data/cut_and_tag/work/b8/e91ff7c7aea0fa3a0814530ab07972/Kasumi_NCOR1.genome.sorted.bam, /mnt/Data/cut_and_tag/work/b8/e91ff7c7aea0fa3a0814530ab07972/Kasumi_NCOR1.genome.sorted.bam.bai]]
[Kasumi_JMJD1C, [/mnt/Data/cut_and_tag/work/49/99ebe402d2b1953a95968525e258f6/Kasumi_JMJD1C.genome.sorted.bam, /mnt/Data/cut_and_tag/work/49/99ebe402d2b1953a95968525e258f6/Kasumi_JMJD1C.genome.sorted.bam.bai]]
这是控制输入
[Kasumi_IgG, [/mnt/Data/cut_and_tag/work/0e/1cd7aefd90105205e58fb6ef912aa4/Kasumi_IgG.genome.sorted.bam, /mnt/Data/cut_and_tag/work/0e/1cd7aefd90105205e58fb6ef912aa4/Kasumi_IgG.genome.sorted.bam.bai]]
解决方案
如果索引 (.bai) 文件尚不存在,您需要先索引 BAM 文件。你可以用samtools index <bam>
这个。
然后,您需要做的就是以某种方式将这些输入到您的流程中。我发现不是在每个输入集/元组中都有一个单独的变量,而是将 BAM 文件及其索引分组为以下形式的元组:tuple( bam, bai )
那么您的流程可能如下所示:
process fingerprint_cov {
publishDir "${params.outdir}/fingerprint_cov", mode: 'copy'
input:
set val(test_sample_id), file(indexed_test_bam) from sorted_bam_sample_control_ch.samples
set val(control_sample_id), file(indexed_control_bam) from sorted_bam_sample_control_ch.controls
output:
set val(test_sample_id), file("${test_sample_id}.cov.bedgraph") into sample_cov_ch
set val(control_sample_id), file("${control_sample_id}.cov.bedgraph") into control_cov_ch
script:
def test_bam = indexed_test_bam.first()
def control_bam = indexed_control_bam.first()
"""
bamCoverage -b "${test_bam}" -o "${sample_id}.cov.bedgraph" -of bedgraph -bs 1000 -p 10
bamCoverage -b "${control_bam}" -o "${sample_id_c}.cov.bedgraph" -of bedgraph -bs 1000 -p 10
"""
}
推荐阅读
- angularjs - 单击不可见的单选按钮
- javascript - 如何延迟 SurveyMonkey 弹出窗口?
- sql - AWS Athena SQL 对不同行中的最小值进行分组和查找
- javascript - 如何使用预定义的字符串读取嵌套对象的值
- c# - 仅在 Datagrid WPF C# 中显示项目的子集
- uwp - UWP CreateFile2 ERROR_NOT_SUPPORTED_IN_APPCONTAINER 打开设备
- python - python中的JSON到JSONL
- c# - 将 Serilog 连接到 MSSQL 数据库的细节和基础是什么?
- python - 如何在 Python3 中使用生成器对象( pathlib.iterdir )进行比较?
- python - 使用带参数的映射器函数重命名数据框列