Skip to content

Latest commit

 

History

History
121 lines (101 loc) · 7.74 KB

workflows_compare.md

File metadata and controls

121 lines (101 loc) · 7.74 KB

Workflows comparisons (DRAFT)

  • Brest

Je ne sais pas comment les différents pipelines vont être comparés. Pour notre équipe à B, j'avais commencé à tester quelques programmes à l'aide du site http://www.bioplanet.com/gcat. L'intérêt de ce site est qu'il propose des jeux de données de "Genome in a Bottle". Pour faire court, ce groupe cherche à définir les bonnes pratiques pour l'analyse des NGS chez l'Humain. https://sites.stanford.edu/abms/giab

Ils ont défini les "vrais SNPs/INDELs" de l'individu NA12878 (CEU fem) par croisement des données de 11 génomes entiers et 3 exomes avec 5 plateformes.

Le site GCAT permet de se comparer à ces vrais résultats. Vous pouvez voir le résultat de mes tests ici : http://www.bioplanet.com/gcat/reports/4729-bqdrqlgmnn/variant-calls/ion-torrent-225bp-se-exome-20x/soft-filter-freebayes/compare-4728-gevntnynqi-4693-sbxjhtwddx-4695-kshrgugcrf/group-read-depth

Les résultats du pipeline ADES sont très surprenant (peu de 'vrais' SNPs détectés). Je dis "très surprenant" parce que nos tests avec GATK n'ont qu'une seule étape de différente du pipeline ADES (je m'attendais donc à des résultats quasi identique), il s'agit de 'IndelRealigner'. Le pipeline ADES utilise l'option '-targetIntervals $TARGET', nous utilisons le résultat de RealignerTargetCreator. (Note : nous utilisons GATK 3.2, mais les notes de version n'indique pas de changement majeurs avec la 3.3)

Avant de tirer de conclusion, je précise que j'ai filtré le fastq fourni et j'ai pu constaté que le filtrage joue un rôle très important parfois. (un filtre à peine plus fort divise la sensibilité de Freebayes par 10 !)

* Les filtres
__no filter__ : le fichier fastq brut.
__soft_filter__ : le fichier fastq a été filtré avec les commandes suivantes
	(FASTX Toolkit 0.0.14)
	fastq_quality_trimmer -t 22 -i gcat_set_054_1.fastq \
			| ../fastx_trimmer -f 5 -l 230 \
		> gcat_set_054_soft_filter.fastq
	# le premier prog. rogne toutes les extrémités des séquences si leurs bases ont une qualité inférieure à 22.
	# Le second coupe les 5 premières bases et après la 230e de chaque séquence.
	# Les valeurs ont été choisi "à l'oeil" à l'aide des graphes de fastqc.

* L'alignement - contruction des bam
La génération du bam a été fait à l'aide d'un script maison qui reprend les recommandations de GATK.
La référence utilisée est HG19.

L'alignement du fastq n'a été fait qu'avec bwa mem, sauf lorsque l'alignement fait partie intégrante du pipeline.
C'est le prog. qui semble le plus utilisé, et je n'ai pas le temps de tester toutes les combinaisons possibles.
Les séquences dupliquées ont été marquées. (L'en-tête a aussi été modifié).
	bwa mem -M -t 20 -R $header "$REF_FASTA" $fastq_in \
			| samtools view -uS - \
			| samtools sort - "$with_dup_file"
	picard-tools MarkDuplicates INPUT=$with_dup_file.bam OUTPUT=$bam_out METRICS_FILE=$metrics
	samtools index "$bam_out"

Nous avons fait un réalignement local
$GATK_CALL -T RealignerTargetCreator -I $bam_in -o $tmp_file -known $MILLS_VCF
$GATK_CALL -T IndelRealigner -I $bam_in -targetIntervals $tmp_file.intervals -o $bam_out

Nous avons réajusté les scores d'alignement (toujours selon les recommandations de GATK.
$GATK_CALL -T BaseRecalibrator -I $bam_in --knownSites $DBSNP_VCF -o $tmp_file
$GATK_CALL -T PrintReads -I $bam_in --BQSR $tmp_file -o $bam_out

bwa : Version: 0.7.5a-r405
picard-tools : Copyright 2010 The Broad Institute
samtools     : samtools 1.0, Using htslib 1.0
gatk         : 3.2-2-gec30cee

remarques :
	 Le réalignement local autour des indel n'apporte aucune modification (à confirmer).
	 J'ai constaté que lorsqu'une mutation est suivi d'une insertion (erreur de séquençage),
	 le bam contient toujours l'insertion suivi de la mutation. J'ai observé que celà empêche la détection de certains variants.
	 -> C'est peut-être une difficulté de tous les programmes d'alignement.

* Les filtres post-détection
Certains filtres ont été appliqués sur les VCF obtenus après la détection.
*only_PASS* marque les résultats où seuls les variants satisfaisants les filtres ont été rapportés.

* La détection des SNPs/INDELs
	Les fichiers de ref pour dbNSP, HapMap et Omni et Mills sont ceux fournis par le bundle GATK.
	dbSNP  : b138
	HapMap : hapmap_3.3
	OMNI_VCF : 1000G_omni2.5.hg19.vcf.gz
	Indel/Mills : Mills_and_1000G_gold_standard.indels.hg19
ADES_pipeline - tout le pipeline a été fait à partir du fastq filtré.
Freebayes - version:  v0.9.18-3-gb72a21b
	$freebayes --fasta-reference $REF_FASTA gcat_set_054_soft_filter.recalibrated.bam > fb.vcf
Freebayes only_PASS - FILTER='QA>=20&&QR>=20', appliqué avec GATK VariantFiltration
GotCloud  - version: 1.14.9
	Par défaut utilise l'algorithme _aln_ de bwa.
	Testé avec l'algo _mem_ (la doc ne le précise pas mais on peut le choisir _info de la développeuse).
GATK_Haplotype Caller - script maison qui reprend l'ensemble des recommandations de GATK pour HC.
GATK_Unified Genotyper - script maison qui reprend l'ensemble des recommandations de GATK pour UG.
scalpel - Version: 0.3.1(beta)
	logiciel de détection des indels (validé sur données illumina)
	testé sur vcf générés par GotCloud.
	perl scalpel.pl --single --bam gcat_set_054_soft_filter.recalibrated.bam --bed gcat_set_054.bed --ref hg19.fasta --logs --numprocs 30

* Mes conclusion provisoire
Tous les logiciels sont mauvais pour la détection des indels.
Freebayes est très bien et peu sensible au bruit, mais il faut trouver un bon filtre que qualité (sur le vcf).
	-> sensibilité +
GotCloud est très bien pour les SNPs.
	-> spécificité +
Freebayes et GotCloud sont extrèment rapides (hors alignement) sur 1 seul jeu de données (GotCloud = 3 min.)
(Got cloud redevient "seulement correct" en multi-sample -> 3 indiv. = 1 heure)
GATK génère des gvcf qui peuvent être précieux pour la recherche (multi-sample).
pipeline filtre nb SNPs nb InDels GiB sens. GiB spec. VP FP FN VN
GATK-HC no filter 1514 284 1.90% 99.999% 296 235 15253 37238356
GATK-HC soft filter 41502 33299 58.98% 99.962% 8939 14183 6218 37224408
GATK-HC soft filter PASS 39747 32319 58.75% 99.963% 8906 13799 6252 37224792
GATK-HC hard filter 4766 1239 7.79% 99.998% 1198 852 14183 37237739
GATK-UG no filter NA NA NA NA NA NA NA NA
GATK-UG soft filter 51450 39515 64.23% 99.951% 9760 18393 5436 37220198
GATK-UG soft filter PASS 47902 34969 63.74% 99.955% 9687 16597 5511 37221994
GATK-UG hard filter 5394 63 8.62% 99.999% 1325 467 14038 37238124
FreeBayes no filter 72195 278289 74.65% 99.927% 10607 101793 3602 37136798
FreeBayes soft filter 66606 265158 73.39% 99.734% 10398 99206 3771 37139385
FreeBayes soft filter PASS 324714 35800 31.86% 99.979% 4779 7685 10219 37230906
FreeBayes hard filter 6917 3889 7.90% 99.994% 1196 2198 13939 37236393
ADES soft filter 5242 24081 4.03% 99.984% 631 5821 15014 37232770
gotCloud soft filter 21034 0 46.94% 99.995% 7020 1941 7936 37236650
gotCloud (BWA MEM) SNP + INDEL soft filter 21033 35081 47.05% 99.960% 7034 148 7917 37223755
gotCloud (BWA MEM) GC_SNP + Scalpel_INDEL soft filter 21033 2451 46.94% 99.992% 7021 3143 7935 37235448
Les données de Genome in a Bottle sont dispo sur le ftp du NCBI.
Je vais les examiner d'avantage pour casser la boite-noire qu'est le site bioplanet. (avez-vous remarqué que selon les tests, le nombre total de 'vrais' SNPs =VP++FN n'est pas le même ?)