REMARQUE : Il s'agit de LUMPY 0.2.13 avec des modifications supplémentaires pour permettre à lumpyexpress de fonctionner lorsque le fichier principal est une CRAM et non un BAM. Les séparateurs et discordants doivent toujours être des fichiers BAM car LUMPY lui-même ne prend pas encore en charge CRAM comme entrée. Cela nécessite que la commande hexdump soit disponible.
Pour des questions et des discussions sur LUMPY, veuillez visiter le forum à l'adresse :
https://groups.google.com/forum/#!forum/lumpy-discuss
Un cadre probabiliste pour la découverte de variantes structurelles.
Ryan M Layer, Colby Chiang, Aaron R Quinlan et Ira M Hall. 2014. « LUMPY : un cadre probabiliste pour la découverte de variantes structurelles. » Biologie du génome 15 (6) : R84. est ce que je:10.1186/gb-2014-15-6-r84.
Notez que smoove est la méthode recommandée pour exécuter lumpy
car il rassemble les meilleures pratiques de lumpy
et des outils associés et aura un temps d'exécution plus court et un taux de faux positifs inférieur à celui lumpyexpress
décrit ci-dessous.
Téléchargez et installez
git clone --recursive https://github.com/arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
Exécutez LUMPY Express
lumpyexpress
-B my.bam
-S my.splitters.bam
-D my.discordants.bam
-o output.vcf
Méthode d'installation par défaut :
git clone --recursive [email protected]:arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
Installation avec costom zlib (erreur de compilation gzopen64) :
git clone --recursive [email protected]:arq5x/lumpy-sv.git
cd lumpy-sv
export ZLIB_PATH="/usr/lib/x86_64-linux-gnu/"; #when /usr/lib/x86_64-linux-gnu/libz.so
make
cp bin/* /usr/local/bin/.
Détection automatisée des points d’arrêt pour les analyses standard.
usage: lumpyexpress [options]
Arguments requis
-B FILE coordinate-sorted BAM file(s) (comma separated)
-S FILE split reads BAM file(s) (comma separated)
-D FILE discordant reads BAM files(s) (comma separated)
Arguments facultatifs
-o STR output [fullBam.bam.vcf]
-x FILE BED file to exclude
-P output probability curves for each variant
-m INT minimum sample weight for a call [4]
-r FLOAT trim threshold [0]
-T DIR temp directory [./output_prefix.XXXXXXXXXXXX]
-k keep temporary files
-K FILE path to lumpyexpress.config file
(default: same directory as lumpyexpress)
-v verbose
-h show this message
LUMPY Express exécute plusieurs programmes externes dont les chemins sont spécifiés dans scripts/lumpyexpress.config. Cette configuration doit résider dans le même répertoire que lumpyexpress, ou être spécifiée explicitement avec l'indicateur -K.
Le Makefile d'installation génère automatiquement un fichier lumpyexpress.config et le place dans le répertoire "bin".
LUMPY Express attend des fichiers BAM alignés BWA-MEM en entrée. Il analyse automatiquement les informations sur les échantillons, les bibliothèques et les groupes de lecture à l'aide des balises @RG dans l'en-tête BAM. Chaque fichier BAM doit contenir exactement un échantillon.
L'entrée minimale est un fichier BAM trié par coordonnées (-B), à partir duquel LUMPY Express extrait les séparateurs et les discordants à l'aide de SAMBLASTER avant d'exécuter LUMPY. En option, les utilisateurs peuvent fournir des fichiers BAM répartiteurs triés par coordonnées (-S) et discordants (-D) qui contourneront l'extraction SAMBLASTER pour une analyse plus rapide.
LUMPY Express produit un fichier VCF selon la spécification VCF 4.2.
Détection de point d'arrêt flexible et personnalisable pour les utilisateurs avancés.
usage: lumpy [options]
Possibilités
-g Genome file (defines chromosome order)
-e Show evidence for each call
-w File read windows size (default 1000000)
-mw minimum weight across all samples for a call
-msw minimum per-sample weight for a call
-tt trim threshold
-x exclude file bed file
-t temp file prefix, must be to a writeable directory
-P output probability curve for each variant
-b output as BEDPE instead of VCF
-sr bam_file:,
id:,
back_distance:,
min_mapping_threshold:,
weight:,
min_clip:,
read_group:
-pe bam_file:,
id:,
histo_file:,
mean:,
stdev:,
read_length:,
min_non_overlap:,
discordant_z:,
back_distance:,
min_mapping_threshold:,
weight:,
read_group:
-bedpe bedpe_file:,
id:,
weight:
Nous vous recommandons d'aligner les données avec SpeedSeq, qui effectue l'alignement BWA-MEM, marque les doublons et extrait les paires de lecture divisées et discordantes.
speedseq align -R "@RGtID:idtSM:sampletLB:lib"
human_g1k_v37.fasta
sample.1.fq
sample.2.fq
Sinon, les données peuvent être alignées sur BWA-MEM.
# Align the data
bwa mem -R "@RGtID:idtSM:sampletLB:lib" human_g1k_v37.fasta sample.1.fq sample.2.fq
| samblaster --excludeDups --addMateTags --maxSplitCount 2 --minNonOverlap 20
| samtools view -S -b -
> sample.bam
# Extract the discordant paired-end alignments.
samtools view -b -F 1294 sample.bam > sample.discordants.unsorted.bam
# Extract the split-read alignments
samtools view -h sample.bam
| scripts/extractSplitReads_BwaMem -i stdin
| samtools view -Sb -
> sample.splitters.unsorted.bam
# Sort both alignments
samtools sort sample.discordants.unsorted.bam sample.discordants
samtools sort sample.splitters.unsorted.bam sample.splitters
LUMPY propose deux alternatives d'exécution distinctes. LUMPY Express est un wrapper simplifié pour les analyses standard. LUMPY (traditionnel) est plus personnalisable, pour les utilisateurs avancés et les expériences spécialisées.
Exécutez LUMPY Express sur un seul échantillon avec des séparateurs et des discordants pré-extraits
lumpyexpress
-B sample.bam
-S sample.splitters.bam
-D sample.discordants.bam
-o sample.vcf
Exécutez LUMPY Express conjointement sur plusieurs échantillons avec des séparateurs et des discordants pré-extraits
lumpyexpress
-B sample1.bam,sample2.bam,sample3.bam
-S sample1.splitters.bam,sample2.splitters.bam,sample3.splitters.bam
-D sample1.discordants.bam,sample2.discordants.bam,sample3.discordants.bam
-o multi_sample.vcf
Exécutez LUMPY Express sur une paire tumeur-normale
lumpyexpress
-B tumor.bam,normal.bam
-S tumor.splitters.bam,normal.splitters.bam
-D tumor.discordants.bam,normal.discordants.bam
-o tumor_normal.vcf
Tout d'abord, générez des statistiques empiriques sur la taille des insertions sur chaque bibliothèque du fichier BAM.
samtools view -r readgroup1 sample.bam
| tail -n+100000
| scripts/pairend_distro.py
-r 101
-X 4
-N 10000
-o sample.lib1.histo
Le script ci-dessus (scripts/pairend_distro.py) affichera la moyenne et le stdev à l'écran. Pour ces exemples, nous supposerons que la moyenne est de 500 et que l'écart-type est de 50.
Exécutez LUMPY avec des lectures appariées et fractionnées.
lumpy
-mw 4
-tt 0
-pe id:sample,bam_file:sample.discordants.bam,histo_file:sample.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample,bam_file:sample.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> sample.vcf
Exécutez LUMPY sur un fichier BAM avec plusieurs bibliothèques.
lumpy
-mw 4
-tt 0
-pe id:sample,read_group:rg1,bam_file:sample.discordants.bam,histo_file:sample.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample,read_group:rg2,bam_file:sample.discordants.bam,histo_file:sample.lib2.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample,bam_file:sample.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> sample.vcf
Exécutez LUMPY sur plusieurs échantillons avec plusieurs bibliothèques.
lumpy
-mw 4
-tt 0
-pe id:sample1,bam_file:sample1.discordants.bam,read_group:rg1,read_group:rg2,histo_file:sample1.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample1,bam_file:sample1.discordants.bam,read_group:rg3,histo_file:sample1.lib2.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-pe id:sample2,bam_file:sample2.discordants.bam,read_group:rg4,histo_file:sample2.lib1.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample1,bam_file:sample1.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
-sr id:sample2,bam_file:sample2.splitters.bam,back_distance:10,weight:1,min_mapping_threshold:20
> multi_sample.vcf
Exécutez LUMPY en excluant les régions de faible complexité.
Heng Li fournit un ensemble de régions de faible complexité dans les informations supplémentaires de son article, « Vers une meilleure compréhension des artefacts dans les appels de variantes à partir d'échantillons à haute couverture » sur https://doi.org/10.1093/bioinformatics/btu356.
unzip btu356_Supplementary_Data.zip
unzip btu356-suppl_data.zip
lumpy
-mw 4
-tt 0.0
-x btu356_LCR-hs37d5.bed/btu356_LCR-hs37d5.bed
-pe bam_file:sample.discordants.bam,histo_file:sample.pe.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
-sr bam_file:sample.sr.sort.bam,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
> sample.exclude.vcf
Exécutez LUMPY en excluant les régions à très forte couverture.
Nous pouvons demander à Lumpy d'ignorer certaines régions en utilisant l'option d'exclusion de région. Dans cet exemple, nous recherchons puis excluons les régions qui ont une couverture très élevée. Nous utilisons d'abord le script get_coverages.py pour trouver les couvertures minimale, maximale et moyenne des fichiers sr et pe bam, et pour créer des profils de couverture pour les deux fichiers.
python ../scripts/get_coverages.py
sample.pe.sort.bam
sample.sr.sort.bam
# sample.pe.sort.bam.coverage min:1 max:14 mean(non-zero):2.35557521272
# sample.sr.sort.bam.coverage min:1 max:7 mean(non-zero):1.08945936729
À partir de ce résultat, nous choisirons d'exclure les régions qui ont une couverture supérieure à 10x. Pour créer le fichier d'exclusion, nous utiliserons le script get_exclude_regions.py pour créer le fichier exclure.bed
python ../scripts/get_exclude_regions.py
10
exclude.bed
sample.pe.sort.bam
sample.sr.sort.bam
Nous réexécutons maintenant Lumpy avec l'option d'exclusion (-x)
lumpy
-mw 4
-tt 0.0
-x exclude.bed
-pe bam_file:sample.discordants.bam,histo_file:sample.pe.histo,mean:500,stdev:50,read_length:101,min_non_overlap:101,discordant_z:5,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
-sr bam_file:sample.sr.sort.bam,back_distance:10,weight:1,id:sample,min_mapping_threshold:1
> sample.exclude.vcf
SVTyper peut appeler des génotypes sur les fichiers VCF de sortie LUMPY à l'aide d'un algorithme bayésien du maximum de vraisemblance.
svtyper
-B sample.bam
-S sample.splitters.bam
-i sample.vcf
> sample.gt.vcf
Le script test/test.sh
exécute Lumpy sur plusieurs ensembles de données simulés et compare les résultats au résultat correct connu. Les exemples d'ensembles de données peuvent être trouvés sur http://layerlab.org/lumpy/data.tar.gz. Cette boule tar doit être extraite dans le répertoire lumpy de niveau supérieur. Le script test/test.sh
vérifie l'existence de ce répertoire avant d'exécuter LUMPY.
Tous les fichiers bam traités par Lumpy doivent être triés par position. Pour vérifier si vos bams sont correctement triés, utilisez le script check_sorting.py
python ../scripts/check_sorting.py
pe.pos_sorted.bam
sr.pos_sorted.bam
pe.name_sorted.bam
# pe.pos_sorted.bam
# in order
# sr.pos_sorted.bam
# in order
# pe.name_sorted.bam
# out of order: chr10 102292476 occurred after chr10 102292893