Multiple sequence alignments - UNAMcongresos.nnb.unam.mx/TIB2014/sites/default/files/... · MIRA...

Preview:

Citation preview

Ensambles Ensambles GenómicosGenómicos

Karel EstradaKarel Estrada

Ensamblado de genomas

• Dependiendo de la tecnología y del tipo de “ensamblador” que se eliga, los requerimientos de cómputo varían..

• Para genomas pequeños (1~5Mbases), una computadora con 4Gb de RAM podria ser suficiente.

• Sin embargo, genomas de mayor tamaño requieren mucho mas memoria y tiempo de cómputo...

• Las nuevas tecnologías, generan “reads cortos” donde un enfoque de OLC para armar la secuencia original no es conveniente.

Ensamblado de genomasDefiniciones..

Definition of Coverage

Length of genomic segment: LNumber of reads: nLength of each read: l

Definition: Coverage C = nl/L

How much coverage is enough?

C

Ensamblado de genomasReconstructing the Sequence (Fragment Assembly)

Cover region with ~5-fold redundancy (5X) ?

reads

Concepto de K-mero

Tamaño de palabra k N-k+1 = número total de palabras contenidas en un read (N

es la longitud del read) Los k-meros nos permiten conectar reads

Repeats

Bacterial genomes: %Mammals: %

Repeat types:Low-Complexity DNA (e.g. ATATATATACATA…)Microsatellite repeats: (a1…ak)N where k ~ 3-6

(e.g. CAGCAGTAGCAGCACCAG)Common Repeat Families (transposones)

SINE (Short Interspersed Nuclear Elements)(e.g. ALU: ~300-long, 106 copies)

LINE (Long Interspersed Nuclear Elements)~500-5,000-long, 200,000 copies

Other-Genes that are duplicated & then diverge (paralogs)-Recent duplications, ~100,000-long, very similar copies

Armado - “Contigs”

Consensus (15- 30Kbp)Consensus (15- 30Kbp)

ReadsReads

ContigContigArmado sin reads pareados implica no tener información de orden ni orientación.

??

Reads pareados permiten ligar los contigs en Scaffolds donde el tamaño es conocido.

2-pair2-pair

Mean & Std.Dev.Mean & Std.Dev.is knownis known

ScaffoldScaffold

Armado - “Scaffolds”

ChromosomeChromosome

ContigContig

Gap (mean & std. dev. Known)Gap (mean & std. dev. Known)Read pair (mates)Read pair (mates)

ConsensusConsensus

Reads (of several haplotypes)Reads (of several haplotypes)

SNPsSNPs

SUPERCONTIGCONTIG 1.3

CONTIG 1.4

CONTIG 1.2

CONTIG 1.1

Armado - “Gaps”

sequencing gap - sabemos el orden y la orientación de los contigs por tener al menos un par que cubre el “gap”.

physical gap – no tenemos información conocida sobre los contigs adyacentes, ni sobre el ADN que atraviesa el “gap”.

Sequencing gaps

Physical gaps

Ensamblado de genomasAlgoritmos..

● Overlap, layout, consensus (OLC)

● De Bruijn Graph (k-mer)

● Burrows Wheeler transform (FM-index)

Ensamblado de genomasAlgoritmos..

● Overlap, Layout, Consensus (OLC)

Overlap:Busca todos los pares de secuencia que sobrelapan

Layout:Quita los sobrelapes redundantes y de baja calidad

Consensus:Mezcla los pares de secuencias que sobrelapan solo entre ellas

Find Overlapping Reads

• Correct errors using multiple alignment

TAGATTACACAGATTACTGATAGATTACACAGATTACTGATAG TTACACAGATTATTGATAGATTACACAGATTACTGATAGATTACACAGATTACTGA

C: 20C: 35T: 30C: 35C: 40

C: 20C: 35C: 0C: 35C: 40

• Score alignments

• Accept alignments with good scores

A: 15A: 25A: 40A: 25-

A: 15A: 25A: 40A: 25A: 0

Ensamblado de genomasAlgoritmos..

● Burrows Wheeler transform (FM-index)

Overlap, Layout, Consensus, utilizando el algoritmo de “Ferragina-Manzine index” para encontrar todos los pares de secuenciasque sobrelapan de manera más eficiente..

Ensamblado de genomasAlgoritmos..

● De Bruijn Graph (k-mer)

Antecedentes (Bruijn)

Euler (1736)

Circuito Euleriano: <=>

Conexo + grados de entradas y salidas iguales.

Nicolas de Bruijn (~1951)

“BEST theorem”

Cuantos CE tiene un Grafo Euleriano dirigido ?

L a) Overlapb) Gráfica usando un k-

mero de tamaño 4c) Consenso

a) Gráfica De Bruijn que diverge debido a un error de secuenciación al final del read causando un camino cerrado

b) Una burbuja causada por un error en la mitad del read

c) Un repeat causando caminos diferentes

Ejemplo:

Ejemplo:

GAGCTGGTGATCAGCGAGC

Seq:

Ensamblado de genomasProgramas..

Overlap, Layout, Consensus

● CAP3 ● Mira ● Newbler ● Arachne ● …..

Burrows Wheeler Transform

● String Graph Assembler SGA

●…..

De Bruijn Graph

● ABySS ● Velvet ● AllPaths ● Soap ● …..

Velvet - Ensamble de novo%> ./velveth output_directory k-mer [[-file_format][-read_type] filename]

File formats:fasta (default)fastqfasta.gzfastq.gzsambam...

Read categories are:short (default)shortPairedshort2 (same as short, but for a separate insert-size library)shortPaired2 (see above)long (for Sanger, 454 or even reference sequences)longPaired

Velvet - Ensamble de novo

Velvetg is the core of Velvet (de Bruijn graph is built and manipulated)

%> ./velvetg # muestra ayuda (no se preocupen, no se tienen que utilizar todas las opciones)

%> ./velvetg output_directory/

Velvet - Ensamble de novo

%>velveth example_assembly_velvet 40 -shortPaired -fastq illum_reads_72pb_paired1.fq illum_reads_72pb_paired2.fq[0.000000] Velvet can't work with even length k-mers, such as 40. We'll use 39 instead, if you don't mind.[0.000997] Reading FastQ file illum_reads_72pb_paired1.fq[1.566786] 690765 reads found..........

Velvet - Ensamble de novo

%>velvetg example_assembly_velvet/ -ins_length 200 -read_trkg yes

STDERR..…Final graph has 466 nodes and n50 of 20761, max 85929, total 1000498, using 775166/1381530 reads

Velvet - Ensamble de novo

Mejora del armado.. El tamaño de kmero tiene el mayor impacto..

Multiple k-mersProbar varios k-meros a la vez.. pueden hacer todas la s longitudes de k como: m ≤ k ≤ M con paso de s:%> velveth output_directory/ m,M,k (..data files..)

%>for ((i=33;i<56;i +=2)); do velvetg example_assembly_velvet_$i/ -ins_length 200 -exp_cov auto -cov_cutoff auto; done

Velvet - Ensamble de novoEjerc.. mejorar armado..

para ver exp_cov manual:

%>R%>data = read.table("stats.txt", header=TRUE) %>source("http://www.bioconductor.org/biocLite.R")%>biocLite("plotrix")%>library(plotrix)%>weighted.hist(data$short1_cov, data$lgth, breaks=0:50)

Ver datos.. interpretación..

%>velvetg example_assembly_velvet_37/ -ins_length 200 -exp_cov ?? cov_cutoff ??

Velvet - Ensamble de novo

K-mer Nodes n50 Largest contig33 35 .. .. 55

Otra forma de obtener las estadísticas:

%>for ((i=33;i<56;i +=2)); do echo example_assembly_velvet_$i; ../stats example_assembly_velvet_$i/contigs.fa; done

Velvet - Ensamble de novo

example_assembly_velvet_33sum = 996140, n = 82, ave = 12148.0487804878, largest = 123161N50 = 46555, n = 7N60 = 40367, n = 9N70 = 25878, n = 12N80 = 18537, n = 16N90 = 13781, n = 22N100 = 65, n = 82example_assembly_velvet_35sum = 996129, n = 72, ave = 13835.125, largest = 150596N50 = 54070, n = 6N60 = 43920, n = 8N70 = 30660, n = 11N80 = 21863, n = 15N90 = 18539, n = 19N100 = 69, n = 72

Velvet - Ensamble de novo

Ensamble con referencia:

%> velveth example_assembly_velvet_ref_37 37 -reference -fasta Salmonella_YU39_partial_chrom.fna -shortPaired -fastq illum_reads_72pb_paired1.fq illum_reads_72pb_paired2.fq

%> velvetg example_assembly_velvet_ref_37/ -ins_length 200 -exp_cov 18 -cov_cutoff 8 -read_trkg yes

OJO: make MAXKMERLENGTH=97 LONGSEQUENCES=1

Velvet - Ensamble de novo

Ensamble con referencia (Cont..)

Ahora comparamos las salidas del armado sin referencia con k= 37 y este...

mejora ?

Tip: ver “stats” y agarrar un número de corte de tamaño de contig = 500pb. (-min_contig_lgth 500)

Velvet - “Scaffolds”Como ya saben, los templados de DNA pueden ser secuenciados por ambos extremos, conociendo la distancia entre estos (“insert size”).

Imaginen ahora mapear los “reads” de vuelta a los contigs ensamblados. En algunos casos ambos reads de un par estarán en contigs diferentes. Podemos usar esos pares para colocar los dos contigs en un scaffold, orientarlos y poner Ns entre ellos que cumplan con el tamaño de inserto. Velvet hace esto automáticamente y el pueden definir el número de pares requeridos para unir dos contigs con el parámetro: -min_pair_count (default: 5)

MIRA – Ensamble con referencia

Ensamble con referencia (Cont..)

MIRA is a multi-pass DNA sequence data assembler/mapper for whole genome and EST/RNASeq projects.

Puede utilizar:• electrophoresis sequencing (Sanger sequencing)• 454 pyrosequencing (GS20, FLX or Titanium)• Ion Torrent• Solexa (Illumina) sequencing• (in development) Pacific Biosciences sequencing

MIRA – Ensamble con referencia

Manual: http://mira-assembler.sourceforge.net/docs/DefinitiveGuideToMIRA.html

( preocúpense, se tienen que utilizar muchas opciones )

MIRA – Ensamble con referencia

Ejemplo: MIRA 3

%>mira -GE:pro=example:not=4 -job=mapping,genome,accurate,solexa -AS:nop=1 -SB:lb=1:abnc=0:bft=fasta -SK:not=4 SOLEXA_SETTINGS -LR:lsd=1:ft=fastq -FN:fqi=/media/Curso/e.coli-K12-reads-72bp-R_part.fq -GE:tismin=300:tismax=500 -CO:fnicpst=1 COMMON_SETTINGS -FN:bbin=/media/Curso/E.coli-k12.complete.genome.fna > & log_assembly.txt

Ejemplo: MIRA 4

%> mira manifest.conf

MIRA – Ensamble con referencia

MIRA 4%> mira manifest.conf

Manifest.conf:# Example for a manifest describing a mapping assembly with# unpaired Illumina data# First part: defining some basic things# In this example, we just give a name to the assembly# and tell MIRA it should map a genome in accurate modeproject = Mira_pairedend_plusrefjob = genome,mapping,accurateparameters = -GE:not=4# The second part defines the sequencing data MIRA should load and assemble# The data is logically divided into "readgroups"# first, the reference sequencereadgroupis_referencedata = ../../data/Salmonella_YU39_partial_chrom.fnastrain = YU39# now the Illumina datareadgroup = pairedendlibsdata = ../../data/*fastqtechnology = solexastrain = YU39_art_illumina

MIRA – Ensamble con referencia

MIRA 4

Ejercicio:.. armar un single_end

# Example for a manifest describing a de-novo assembly with# unpaired Illumina data# First part: defining some basic things# In this example, we just give a name to the assembly# and tell MIRA it should map a genome in accurate modeproject = Salmonella_singleendsjob = genome,denovo,accurate# The second part defines the sequencing data MIRA should load and assemble# The data is logically divided into "readgroups"# here comes the unpaired Illumina datareadgroup = fromUUAB_projectdata = ../../data/illum_reads_72pb_paired1.fastqtechnology = solexa

MIRA – Ensamble con referencia

MIRA 4Ejercicio:.. armar el paired_end y compararlo con el mejor armado obtenido con Velvet..

# Example for a lazy manifest describing a denovo assembly with# one library of paired reads# First part: defining some basic things# In this example, we just give a name to the assembly# and tell MIRA it should map a genome in accurate modeproject = pairedend_Mirajob = genome,denovo,accurate# The second part defines the sequencing data MIRA should load and assemble# The data is logically divided into "readgroups"# now the Illumina paired-end data#readgroup = DataIlluminaPairedLib#autopairing#data = ../../data/project_1.fastq ../../data/project_2.fastq#technology = solexa#If you know the orientation of the reads and/or the library size, you can tell this MIRA the following way (just showing the#readgroup definition here):readgroup = DataIlluminaPairedEnd200simLibdata = ../../data/illum_reads_72pb_paired1.fastq ../../data/illum_reads_72pb_paired2.fastqtechnology = solexatemplate_size = 150 350segment_placement = ---> <---

MIRA – Ensamble con referencia

MIRA 4Ejercicio:.. armar el paired_end haciendo un mapping a la referencia..

# Example for a manifest describing a mapping assembly with# paired Illumina data# First part: defining some basic things# In this example, we just give a name to the assembly# and tell MIRA it should map a genome in accurate modeproject = Mira_pairedend_plusrefjob = genome,mapping,accurateparameters = -GE:not=32# The second part defines the sequencing data MIRA should load and assemble# The data is logically divided into "readgroups"# first, the reference sequencereadgroupis_referencedata = ../../data/Salmonella_YU39_partial_chrom.fastastrain = YU39# now the Illumina datareadgroup = DataIlluminaPairedEnd200simLibdata = ../../data/illum_reads_72pb_paired1.fastq ../../data/illum_reads_72pb_paired2.fastqtechnology = solexatemplate_size = 150 350segment_placement = ---> <---strain = YU39_art_illumina

Trabajo con el “draft”

• Obtener la secuencia completa del genoma.

– Ordenar contigs.

– Completar los GAPs.

– Resolver ambigüedades por repeticiones.

– Unir contigs.

Mejorar el “draft”

Podemos considerar que tenemos un buen armado si tenemos menos de 100 supercontigs.

Existen varias herramientas que sirven para mejorar los armados..

– SSPACE: Sirve para hacer Scaffolding. Aunque la mayoría de los ensambladores lo hacen está herramienta generalmente los mejora.

– REAPR: Evalúa el Scaffolding, rompiendo los scaffolds incorrectos.

Trabajo con el “draft”(PAGIT)

• Protocolo PAGIT– ABACAS / Nucmer: Alineamiento contra

referencia para orientar contigs– IMAGE / GapFiller: para llenar los gaps de los

contigs que se orientan con ABACAS– ICORN: para corregir los posibles errores de

secuenciacion 454 e Illumina– RATT / Exonerate / MAKER: para transferir la

anotacion a partir de las referencias hacia nuestras moleculas ya corregidas

ABACASAlinear – Ordenar - Orientar

Tendremos un único Scaffold con el que podremos trabajar para llenar los Gaps.

ACT: (visualizador de la comparación entre dos o más secuencias)

Trabajo con el “draft”(ABACAS)

%>/usr/local/PAGIT/ABACAS/abacas.pl -r ../Salmonella_YU39_partial_chrom.fna -q contigs.fa -p nucmer

%>act ../Salmonella_YU39_partial_chrom.fasta contigs.fa_Salmonella_YU39_partial_chrom.fna.crunch contigs.fa_Salmonella_YU39_partial_chrom.fna.fasta