Snakemake InputFunctionException。 AttributeError:“通配符”对象没有属性

问题描述 投票:0回答:1

我有一个带有ChIP-seq单端fastq文件名allfiles=['/path/file1.fastq','/path/file2.fastq','/path/file3.fastq']的列表对象。我正在尝试将该对象allfiles设置为通配符(我希望输入fastqc规则(以及其他诸如映射的规则,但让我们保持简单)。我尝试了下面代码中的内容([ C0])。但是,这给了我一个错误

lambda wildcards: data.loc[(wildcards.sample),'read1']

有人确切地知道如何定义它吗?看来我很接近,我有大致的了解,但我无法正确执行语法。谢谢!

代码:

"InputFunctionException in line 118 of Snakefile:
AttributeError: 'Wildcards' object has no attribute 'sample'
Wildcards:
" 
wildcard snakemake
1个回答
0
投票

当前import pandas as pd import numpy as np # Read in config file parameters configfile: 'config.yaml' sampleFile = config['samples'] # three columns: sample ID , /path/to/chipseq_file_SE.fastq , /path/to/chipseq_input.fastq outputDir = config['outputdir'] # output directory outDir = outputDir + "/MyExperiment" qcDir = outDir + "/QC" # Read in the samples table data = pd.read_csv(sampleFile, header=0, names=['sample', 'read1', 'inputs']).set_index('sample', drop=False) samples = data['sample'].unique().tolist() # sample IDs read1 = data['read1'].unique().tolist() # ChIP-treatment file single-end file inplist= data['inputs'].unique().tolist() # the ChIP-input files inplistUni= data['inputs'].unique().tolist() # the ChIP-input files (unique) allfiles = read1 + inplistUni # Target rule rule all: input: expand(f'{qcDir}' + '/raw/{sample}_fastqc.html', sample=samples), expand(f'{qcDir}' + '/raw/{sample}_fastqc.zip', sample=samples), # fastqc report generation rule fastqc: input: lambda wildcards: data.loc[(wildcards.sample), 'read1'] output: html=expand(f'{qcDir}' + '/raw/{sample}_fastqc.html',sample=samples) , zip=expand(f'{qcDir}' + '/raw/{sample}_fastqc.zip',sample=samples) log: expand(f'{logDir}' + '/qc/{sample}_fastqc_raw.log',sample=samples) threads: 4 wrapper: "fastqc {input} 2>> {log}" output文件在解析后没有任何通配符。也就是说,snakefile中当前有一个作业,其中rule fastqc尝试为所有样本生成一个输出文件。

但是,您似乎希望为每个样本分别运行rule fastqc。在这种情况下,需要将其概括如下,其中rule fastqc是通配符:

{sample}
© www.soinside.com 2019 - 2024. All rights reserved.