CIBERER / GdTBioinfo-nf-snvs

MIT License
0 stars 0 forks source link

[FEATURE] Add Haplotypecaller Dragen mode #3

Open yolandabq opened 7 months ago

yolandabq commented 7 months ago

Which type of feature are you implementing?

Is there an existing issue / PR for this?

Is there already an implementation for this feature?

Describe the feature

Add variant calling with dragen mode. Two steps are needed:

Background

No response

Proposed implementation

Import gatk CalibrateDragstrModel from nf-core modules:https://github.com/nf-core/modules/blob/master/modules/nf-core/gatk4/calibratedragstrmodel/main.nf Use parameter to use gatk haplotypecaller with --dragen--mode: https://nf-co.re/modules/gatk4_haplotypecaller

Anything else?

No response

Related Issues

No response

Are you going to work on this?

yolandabq commented 3 months ago

Hay que añadir otro paso, el ComposeSTRTableFile (https://nf-co.re/modules/gatk4_composestrtablefile/). Se hace a partir del fasta, y se genera un tsv que se utiliza después en el paso de "CalibrateDragstrModel". (https://gatk.broadinstitute.org/hc/en-us/articles/4407897446939--How-to-Run-germline-single-sample-short-variant-discovery-in-DRAGEN-mode)

Esa tabla .tsv solo tiene que generarse una vez para el fasta de referecia (es como un índice). ¿Habría que importar el módulo y que se ejecutara cada vez que se corra? ¿O si se lanzan varias muestras a la vez, puede hacerse que solo se genere una vez?

yolandabq commented 3 months ago

Otra duda. Para correr Dragen, lo que se hace es correr el gatk HaplotypeCaller con la opción --dragen-mode y añadiendo el output de la función CalibrateDragstrModel:

gatk HaplotypeCaller \ -R ref.fasta \ -I input_reads.bam \ -L interval_list \ -O output_file.vcf \ --dragen-mode true \ --dragstr-params-path dragstr_model.txt

Ya tenemos el módulo gatk HaplotypeCaller importado. Mi duda es: ¿cómo hacemos para correr dos veces el mismo módulo con diferentes argumentos? ¿Habría que importarlo en el main con un alias? ¿Cómo añadimos después que una vez lo corra con --dragen-mode true y otra vez sin esta opción? @yocra3 ¿tú sabes cómo se haría? Supongo que sería modificando los archivos de configuración de los módulos, pero no tengo muy claro cómo se haría. Quizás me estoy perdiendo algo y es fácil de hacer.

yocra3 commented 2 months ago

Hola @yolandabq,

Corrígeme si me equivoco, pero entiendo que va el Haplotypecaller se usa como dos herramientas de variant calling, una ejecutándolo del modo normal y otra del modo DRAGEN. ¿Es correcto?

Si eso está bien, creo que hay que repensar la organización de la pipeline. Como comentamos al principio, queremos que los usuarios puedan elegir las herramientas que usamos en cada paso. Para ello, me parece más fácil que se pueda elegir que subworkflows/módulos se ejecutan a nivel del workflow principal que añadir esta opción dentro de un subworkflow. Por lo tanto, el issue #5 habría que cerrarlo, ya que no va a haber un subworkflow que ejecute todas las herramientas, sino un subworkflow/módulo por herramienta.

Respecto a tus preguntas. El ComposeSTRTableFile se tiene que ejecutar una sola vez. Viendo mi propuesta del punto anterior, esto lo haremos dentro del workflow principal y el resultado se lo pasamos a HaplotypeCaller. Sobre el segundo punto, la opción es hacerlo con alias, como comentabas. Se puede pasar fácilmente los parámetros de configuración en el conf/modules.config. Tienes un ejemplo en la pipeline de rna-seq. Si buscas FASTQC_TRIM, este es un alias del módulo FASTQC donde han modificado los parámetros. La implementación del módulo ya tiene un hueco para el archivo del ComposeSTRTableFile, así que será fácil incluirlo también.

En resumen, creo que todo el trabajo de este issue, no estará en este módulo, sino luego en la manera de integrarlo en la pipeline.