我有一个输入文件如下
SampleName Run Read1 Read2
A run1 test/true_data/4k_R1.fq test/true_data/4k_R2.fq
A run2 test/samples/A.fastq test/samples/A2.fastq
B run1 test/samples/B.fastq test/samples/B2.fastq
C run1 test/samples/C.fastq test/samples/C5.fastq
D
所以我获取数组中的所有索引:
sample_table = pd.read_table('samples.tsv', sep=' ', lineterminator='\n')
sample_table = sample_table.drop_duplicates(subset='SampleName', keep='first', inplace=False)
sample_table = sample_table.dropna()
sample_table.set_index('SampleName',inplace=True)
sample_ID=sample_table.index.values
在此刻sample_ID=['A' 'B' 'C']
这就是我想要的。
然后我想设置一个变量 r1 ,它将对应于每个样本的 Read2 的 Read1 和 r2 。
rule all:
input:
expand("test/fltr/{ID_sample}.fq", ID_sample=sample_ID)
rule send_reads:
input:
#Tried both way but it does not work
r1=sample_table.loc["{ID_sample}",'Read1']
r2=sample_table.Read2["{ID_sample}"]
output:
"test/fltr/{ID_sample}{input.r1}.fq"
shell:
"touch {output}"
我收到错误
标签 [{ID_sample}] 不在 [索引] 中
这是语法错误还是更大的错误?
我刚刚开始使用 Snakemake,我以为我在教程之后已经理解了它,但显然我没有。
多谢,
干杯
lambda
可以使用函数来获取该值。
input:
lambda wildcards, output: sample_table.Read2[wildcards.ID_sample]
另外,根据您的rule all
, your output
需要是test/fltr/{ID_sample}.fq
。并且,您必须使用逗号分隔两个变量input
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)