我对我的其中一项规则的RaisedButton
有相当复杂的要求。
我在CSV文件(output
)中有一些示例,其中包含如下嵌套信息:
samples.csv
我将它们作为熊猫数据框存储在region,run_id,sample_id
A,1,150
A,3,111
A,3,145
A,3,153
B,4,105
B,4,107
中。
Snakefile
我有一条规则samples = pd.read_csv("samples.csv").set_index(
["region", "run_id", "sample_id"], drop=False
)
,它接收一个fastq文件,该文件是demultiplex
中sample_id
的所有run_id
读取的组合
region
此多路分解规则的作用是将这个合并的fastq文件放入并为该rule demultiplex:
input:
"analysis/{region}/{run}/basecalled.fastq"
中的每个sample_id
(条形码)返回一个fastq文件。
所以我在这里遇到的困难是如何使run_id
映射到output
。
在正在运行的示例中,我实际上想要的是input
规则,该规则对每个有效(demultiplex
,region
)对都执行一次,但是会产生多个文件。因此所需的分组将如下所示:
run_id
因此,该示例中的规则input:
"analysis/A/1/basecalled.fastq"
output:
["analysis/A/1/demultiplex/150.fastq"]
input:
"analysis/A/3/basecalled.fastq"
output:
["analysis/A/3/demultiplex/111.fastq",
"analysis/A/3/demultiplex/145.fastq",
"analysis/A/3/demultiplex/153.fastq"]
input:
"analysis/B/4/basecalled.fastq"
output:
["analysis/B/4/demultiplex/105.fastq",
"analysis/B/4/demultiplex/107.fastq"]
将运行3次。
答案 0 :(得分:0)
一种解决方案可能是为每个需要多路分解的fastq文件触摸一个文件。在下面的代码中,假设可以从样本表中的信息重构主fastq文件的路径(如果我理解正确的话,应该是这种情况):
import pandas as pd
samples = pd.read_csv("samples.csv").set_index(
["region", "run_id", "sample_id"], drop=False
)
fastq= samples[['region', 'run_id']].drop_duplicates()
rule all:
input:
expand('analysis/{region}/{run}/demultiplex/demux.done', zip, \
region= list(fastq['region']), run= list(fastq['run_id']))
rule demultiplex:
input:
"analysis/{region}/{run}/basecalled.fastq",
output:
touch('analysis/{region}/{run}/demultiplex/demux.done'),
shell:
r"""
demux {input}
"""