NOTA: Este es LUMPY 0.2.13 con cambios adicionales para permitir que lumpyexpress funcione cuando el archivo principal es CRAM, no BAM. Los divisores y discordantes aún deben ser archivos BAM ya que LUMPY aún no admite CRAM como entrada. Esto requiere que el comando hexdump esté disponible.
Si tiene preguntas y debates sobre LUMPY, visite el foro en:
https://groups.google.com/forum/#!forum/lumpy-discuss
Un marco probabilístico para el descubrimiento de variantes estructurales.
Ryan M Layer, Colby Chiang, Aaron R Quinlan e Ira M Hall. 2014. "LUMPY: un marco probabilístico para el descubrimiento de variantes estructurales". Biología del genoma 15 (6): R84. doi:10.1186/gb-2014-15-6-r84.
Tenga en cuenta que smoove es la forma recomendada de ejecutar lumpy
, ya que recopila las mejores prácticas de lumpy
y las herramientas asociadas y tendrá un tiempo de ejecución más corto y una tasa de falsos positivos más baja que lumpyexpress
que se describe a continuación.
Descargar e instalar
git clone --recursive https://github.com/arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
Ejecute LUMPY Express
lumpyexpress
-B my.bam
-S my.splitters.bam
-D my.discordants.bam
-o output.vcf
Método predeterminado para instalar:
git clone --recursive [email protected]:arq5x/lumpy-sv.git
cd lumpy-sv
make
cp bin/* /usr/local/bin/.
Instalación con costom zlib (error de compilación 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/.
Detección automatizada de puntos de interrupción para análisis estándar.
usage: lumpyexpress [options]
Argumentos requeridos
-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)
Argumentos opcionales
-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 ejecuta varios programas externos cuyas rutas se especifican en scripts/lumpyexpress.config. Esta configuración debe residir en el mismo directorio que lumpyexpress o especificarse explícitamente con el indicador -K.
La instalación Makefile genera automáticamente un archivo lumpyexpress.config y lo coloca en el directorio "bin".
LUMPY Express espera archivos BAM alineados con BWA-MEM como entrada. Analiza automáticamente información de muestra, biblioteca y grupo de lectura utilizando las etiquetas @RG en el encabezado BAM. Se espera que cada archivo BAM contenga exactamente una muestra.
La entrada mínima es un archivo BAM ordenado por coordenadas (-B), del cual LUMPY Express extrae divisores y discordantes usando SAMBLASTER antes de ejecutar LUMPY. Opcionalmente, los usuarios pueden proporcionar archivos BAM divisores (-S) y discordantes (-D) ordenados por coordenadas que omitirán la extracción de SAMBLASTER para un análisis más rápido.
LUMPY Express produce un archivo VCF según la especificación VCF 4.2.
Detección de puntos de interrupción flexible y personalizable para usuarios avanzados.
usage: lumpy [options]
Opciones
-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:
Recomendamos alinear los datos con SpeedSeq, que realiza la alineación BWA-MEM, marca duplicados y extrae pares de lectura divididos y discordantes.
speedseq align -R "@RGtID:idtSM:sampletLB:lib"
human_g1k_v37.fasta
sample.1.fq
sample.2.fq
De lo contrario, los datos pueden alinearse con 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 tiene dos alternativas de ejecución distintas. LUMPY Express es un contenedor simplificado para análisis estándar. LUMPY (tradicional) es más personalizable, para usuarios avanzados y experimentos especializados.
Ejecute LUMPY Express en una sola muestra con divisores y discordantes preextraídos
lumpyexpress
-B sample.bam
-S sample.splitters.bam
-D sample.discordants.bam
-o sample.vcf
Ejecute LUMPY Express de forma conjunta en varias muestras con divisores y discordantes preextraídos
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
Ejecute LUMPY Express en un par tumor-normal
lumpyexpress
-B tumor.bam,normal.bam
-S tumor.splitters.bam,normal.splitters.bam
-D tumor.discordants.bam,normal.discordants.bam
-o tumor_normal.vcf
Primero, genere estadísticas empíricas del tamaño de inserción en cada biblioteca en el archivo BAM.
samtools view -r readgroup1 sample.bam
| tail -n+100000
| scripts/pairend_distro.py
-r 101
-X 4
-N 10000
-o sample.lib1.histo
El script anterior (scripts/pairend_distro.py) mostrará la media y el desarrollo estándar en la pantalla. Para estos ejemplos asumiremos que la media es 500 y la desviación estándar es 50.
Ejecute LUMPY con lecturas divididas y de extremos emparejados.
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
Ejecute LUMPY en un archivo BAM con varias bibliotecas.
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
Ejecute LUMPY en varias muestras con varias bibliotecas.
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
Ejecute LUMPY excluyendo las regiones de baja complejidad.
Heng Li proporciona un conjunto de regiones de baja complejidad en la información complementaria de su artículo, "Hacia una mejor comprensión de los artefactos en llamadas variantes a partir de muestras de alta cobertura" en 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
Ejecute LUMPY excluyendo las regiones de muy alta cobertura.
Podemos indicarle a Lumpy que ignore ciertas regiones usando la opción de exclusión de región. En este ejemplo encontramos y luego excluimos regiones que tienen una cobertura muy alta. Primero usamos el script get_coverages.py para encontrar las coberturas mínima, máxima y media de los archivos sr y pe bam, y para crear perfiles de cobertura para ambos archivos.
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
De este resultado, elegiremos excluir las regiones que tengan una cobertura superior a 10 veces. Para crear el archivo de exclusión usaremos el script get_exclude_regions.py para crear el archivo excluir.bed
python ../scripts/get_exclude_regions.py
10
exclude.bed
sample.pe.sort.bam
sample.sr.sort.bam
Ahora volvemos a ejecutar lumpy con la opción excluir (-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 puede llamar a genotipos en archivos VCF de salida LUMPY utilizando un algoritmo bayesiano de máxima verosimilitud.
svtyper
-B sample.bam
-S sample.splitters.bam
-i sample.vcf
> sample.gt.vcf
El script test/test.sh
se ejecuta de forma irregular en varios conjuntos de datos simulados y compara los resultados con el resultado correcto conocido. Los conjuntos de datos de muestra se pueden encontrar en http://layerlab.org/lumpy/data.tar.gz. Esta bola de alquitrán debe extraerse en el directorio grumoso de nivel superior. El script test/test.sh
comprueba la existencia de este directorio antes de ejecutar LUMPY.
Todos los archivos bam que se procesan con grumos deben ordenarse por posición. Para verificar si sus bams están ordenados correctamente, use el 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