es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el objeto Wildcards no tiene un atributo output, lo que sugiere que podría haber un problema con la forma en que se definen los archivos de salida en la directiva output para la regla annotate_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 con temp por archivos de salida regulares.

    Por ejemplo, en lugar de:

    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'
    

    Podrías usar:

    rename_vcf='results/{samp}/vars/{samp}_{mapper}_{ref}_gatk_rename.vcf.gz',
    tmp_vcf='results/{samp}/vars/{samp}_{mapper}_{ref}_gatk_tmp.vcf.gz',
    ann_vcf='results/{samp}/vars/{samp}_{mapper}_{ref}_gatk_ann.vcf.gz'
    

    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 directiva output coincidan exactamente con las rutas de archivo generadas por la regla.

Comments are closed.