Error de Snakemake en el clúster: el objeto “Wildcards” no tiene el atributo “output”.
Me encuentro con un error de que el objeto ‘Wildcards’ no tiene el atributo ‘output’, similar a esta pregunta anterior (https://stackoverflow.com/questions/64318645/wildcards-object-has-no-attribute-output), cuando envío Snakemake a mi clúster. Me preguntaba si tienes alguna sugerencia de cómo hacerlo compatible con el clúster.
Si bien mi regla “annotate_snps” funciona cuando la pruebo localmente, obtengo el siguiente error en el clúster:
“`rule annotate_snps:
input: results/CI226380_S4/vars/CI226380S4bwaH37Rv_gatk.vcf.gz
output: results/CI226380_S4/vars/CI226380S4bwaH37Rv_gatk_rename.vcf.gz, results/CI226380_S4/vars/CI226380S4bwaH37Rv_gatk_tmp.vcf.gz, results/CI226380_S4/vars/CI226380S4bwaH37Rv_gatk_ann.vcf.gz
log: results/CI226380_S4/vars/CI226380S4bwaH37Rv_annotate_snps.log
jobid: 1139
wildcards: samp=CI226380_S4, mapper=bwa, ref=H37Rv
<p>WorkflowError en la línea 173 de /oak/stanford/scg/lab_jandr/walter/tb/mtb/workflow/Snakefile:
'Wildcards' object no tiene el atributo 'output'
Mi regla está definida de la siguiente manera:
rule annotate_snps:
input:
vcf='results/{samp}/vars/{samp}{mapper}{ref}gatk.vcf.gz'
log:
'results/{samp}/vars/{samp}{mapper}{ref}annotate_snps.log'
output:
rename_vcf=temp('results/{samp}/vars/{samp}{mapper}{ref}gatk_rename.vcf.gz'),
tmp_vcf=temp('results/{samp}/vars/{samp}{mapper}{ref}gatk_tmp.vcf.gz'),
ann_vcf='results/{samp}/vars/{samp}{mapper}{ref}gatk_ann.vcf.gz'
params:
bed=config['bed_path'],
vcf_header=config['vcf_header']
shell:
'''
# Renombrar Cromosoma para que sea consistente con los genomas snpEff/Ensembl.
zcat {input.vcf}| sed 's/NC_000962.3/Chromosome/g' | bgzip > {output.rename_vcf}
tabix {output.rename_vcf}
<pre><code># Ejecutar snpEff
java -jar -Xmx8g {config[snpeff]} eff {config[snpeff_db]} {output.rename_vcf} -dataDir {config[snpeff_datapath]} -noStats -no-downstream -no-upstream -canon > {output.tmp_vcf}
# También utilizar archivo BED para anotar vcf
bcftools annotate -a {params.bed} -h {params.vcf_header} -c CHROM,FROM,TO,FORMAT/PPE {output.tmp_vcf} > {output.ann_vcf}
'''
</code></pre>
“`
¡Muchas gracias de antemano!
davy.ai
El mensaje de error indica que el objeto
Wildcards
no tiene un atributooutput
, lo que sugiere que podría haber un problema con la forma en que se definen los archivos de salida en la directivaoutput
para la reglaannotate_snps
.Según la regla proporcionada, parece que la función
temp
se está utilizando para algunos de los archivos de salida. Sin embargo,temp
no es reconocido en algunas plataformas de clúster. En este caso, una solución posible sería reemplazar los archivos de salida definidos contemp
por archivos de salida regulares.Por ejemplo, en lugar de:
Podrías usar:
Alternativamente, podrías consultar con el administrador del clúster o la documentación para ver si hay alguna forma de hacer que la función
temp
funcione en el clúster específico que estás utilizando.Otros problemas potenciales que podrían causar este error incluyen casos en los que el archivo
output
no coincide con el patrón esperado o no se encuentra. Para solucionarlo, asegúrate de que las rutas de archivo definidas en la directivaoutput
coincidan exactamente con las rutas de archivo generadas por la regla.