Pandas 蛇人与熊猫

Pandas 蛇人与熊猫,pandas,snakemake,Pandas,Snakemake,我有一个如下的输入文件 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 所以我

我有一个如下的输入文件

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\u ID=['A''B''C']
这正是我想要的。 然后我想设置一个变量r1,它将对应于每个样本的Read1和Read2的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,我以为在教程之后我已经理解了它,但显然我没有

非常感谢,
Cheers

lambda
函数可用于获取该值

input:
    lambda wildcards, output: sample_table.Read2[wildcards.ID_sample]

另外,根据
规则all
,您的
输出需要是
test/fltr/{ID\u sample}.fq
。而且,在
输入

@Eddie中,你必须使用逗号来分隔两个变量,你找到了一个合适的解决方案吗?如果可以在pandas语法中使用{sample},那将非常好,但这似乎不受支持。我还需要它改变我的读取长度参数每个样本,从我的样本表。我希望它能起作用:read_length=str(samples.Read1['{sample}']),这样我就可以在脚本中使用{read_length}(甚至:read_length=str(samples.Read1[wildcards.sample])。。。没有lambda函数可以实现吗?