Rodrigo Santamaría - Home |...

57
Bioinformática Transformada de Burrows-Wheeler Rodrigo Santamaría

Transcript of Rodrigo Santamaría - Home |...

Page 1: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BioinformáticaTransformadadeBurrows-Wheeler

RodrigoSantamaría

Page 2: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BWT

TransformadadeBurrows-Wheeler

definiciónyconstruccióninversayreconstrucción

• TransformadadeBurrows-Wheeler

• Búsquedadepatrones

2

Page 3: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

LatransformadadeBurrows-Wheeler

• Hemosreducidoengranmedidalamemorianecesariaparaconstruirestructurasdedatosqueacelerenlabúsquedadepatrones– Estadodelartehastacomienzosdeestesiglo

• ¿Podemosreduciraúnmáslamemorianecesaria,hastaqueseaaproximadamenteigualaltextoenelquehacemoslasbúsquedas?

3

Page 4: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Compresióndecadenas

• Compresiónrun-length– Sustituirrepeticionesconsecutivasporunnúmero:• TTTTTGGGAAAACCCCCCA à 5T3G4A6C1A

– Podríacomprimirungenomaen8caracteres,sipreviamenteloordenáramos• Pero,porsupuesto,lacadenaoriginalnoseríarecuperable• Necesitamosunmétodoquemaximicelasrepeticionesperoquepermitarecuperarlasecuenciaoriginal

4

Page 5: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Construcción• MatrizdeBurrows-Wheeler (M)

– Seconstruyerealizandotodaslasrotacionescíclicasyordenándolas alfabéticamente

• TransformadadeBurrows-Wheeler– ÚltimacolumnadeM

Rotacionescíclicas M(“panamabananas$”)panamabananas$ $panamabananas

$panamabananas abananas$panam

s$panamabanana amabananas$pan

as$panamabanan anamabananas$p

nas$panamabana ananas$panamab

anas$panamaban anas$panamaban

nanas$panamaba as$panamabanan

ananas$panamab bananas$panama

bananas$panama mabananas$pana

abananas$panam namabananas$pa

mabananas$pana nanas$panamaba

amabananas$pan nas$panamabana

namabananas$pa panamabananas$

anamabananas$p s$panamabanana

Page 6: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio1

• Implementarlafunciónbwt:– entrada:

• text (añadiendouncarácterespecial$ alfinal)– salida:transformadadeBurrows-Wheeler

• Ejemplo:– text:“panamabananas$”– salida:['s', 'm', 'n', 'p', 'b', 'n', 'n', 'a', 'a',

'a', 'a', 'a', '$', 'a']

• Prueba:– text=‘AACGATAGCGGTAGA$’

6

Page 7: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Derepeticionesaruns• ElefectoquetieneBWTsobreunacadenaestransformarrepeticionesenruns (cadenasdecaracteresrepetidosdemaneraconsecutiva):– bwt(“panamabananas$”)=smnpbnnaaaaa$a

• ¿Porqué?• ¿Podemos reconstruir lacadena original apartirdesu BWT?Sino,nonos sirve denada

• Muy bonito,pero ¿ensu construcciónnonecesitamosmantener una matriz |Text|·|Text|?

7

Page 8: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Propiedadprincipio-findeM

• Lak-ésima ocurrenciadeunsímboloenlaprimeracolumnaysuk-ésima ocurrenciaenlaúltimacolumnacorrespondenalamismaposicióneneltextooriginal

$1 a b ? ? ? ? ? ? ? ? a1a1 ? ? ? ? ? ? ? ? ? ? r1a2 ? ? ? ? ? ? ? ? ? ? d1a3 ? ? ? ? ? ? ? ? ? ? $1a4 ? ? ? ? ? ? ? ? ? ? r2a5 ? ? ? ? ? ? ? ? ? ? c1b1 ? ? ? ? ? ? ? ? ? ? a2b2 ? ? ? ? ? ? ? ? ? ? a3c1 ? ? ? ? ? ? ? ? ? ? a4d1 ? ? ? ? ? ? ? ? ? ? a5r1 ? ? ? ? ? ? ? ? ? ? b1r2 ? ? ? ? ? ? ? ? ? ? b2

ParalainversadeBWT,estapropiedadnospermitedecidircuáldelasanterioreseslaopcióncorrecta!

8

Page 9: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

InversadeBWT

• SeauntextodesconocidocuyaBWTes– bwt(texto)=ard$rcaaaabb

• Conocemos laprimera yúltima columna desumatriz correspondiente:– Laúltima esbwt(texto)– Laprimera essort(bwt(texto))

$ ? ? ? ? ? ? ? ? ? ? aa ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? da ? ? ? ? ? ? ? ? ? ? $a ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? cb ? ? ? ? ? ? ? ? ? ? ab ? ? ? ? ? ? ? ? ? ? ac ? ? ? ? ? ? ? ? ? ? ad ? ? ? ? ? ? ? ? ? ? ar ? ? ? ? ? ? ? ? ? ? br ? ? ? ? ? ? ? ? ? ? b 9

Page 10: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

InversadeBWT

• Sabemosqueelprimersímbolodelacadenadebeseguiral$entodaslasrotaciones– Bastaconmirarlafiladonde$estáenlaúltimacolumna:• Elprimersímbolodelacadenaseráelqueestéenlaprimeracolumnadedichafila

$ a ? ? ? ? ? ? ? ? ? aa ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? da ? ? ? ? ? ? ? ? ? ? $a ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? cb ? ? ? ? ? ? ? ? ? ? ab ? ? ? ? ? ? ? ? ? ? ac ? ? ? ? ? ? ? ? ? ? ad ? ? ? ? ? ? ? ? ? ? ar ? ? ? ? ? ? ? ? ? ? br ? ? ? ? ? ? ? ? ? ? b

10

Page 11: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

InversadeBWT

• Siguiendolamismalógica,alaalepuedeseguirunab,cód

$ a b ? ? ? ? ? ? ? ? aa ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? da ? ? ? ? ? ? ? ? ? ? $a ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? cb ? ? ? ? ? ? ? ? ? ? ab ? ? ? ? ? ? ? ? ? ? ac ? ? ? ? ? ? ? ? ? ? ad ? ? ? ? ? ? ? ? ? ? ar ? ? ? ? ? ? ? ? ? ? br ? ? ? ? ? ? ? ? ? ? b

$ a c ? ? ? ? ? ? ? ? aa ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? da ? ? ? ? ? ? ? ? ? ? $a ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? cb ? ? ? ? ? ? ? ? ? ? ab ? ? ? ? ? ? ? ? ? ? ac ? ? ? ? ? ? ? ? ? ? ad ? ? ? ? ? ? ? ? ? ? ar ? ? ? ? ? ? ? ? ? ? br ? ? ? ? ? ? ? ? ? ? b

$ a d ? ? ? ? ? ? ? ? aa ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? da ? ? ? ? ? ? ? ? ? ? $a ? ? ? ? ? ? ? ? ? ? ra ? ? ? ? ? ? ? ? ? ? cb ? ? ? ? ? ? ? ? ? ? ab ? ? ? ? ? ? ? ? ? ? ac ? ? ? ? ? ? ? ? ? ? ad ? ? ? ? ? ? ? ? ? ? ar ? ? ? ? ? ? ? ? ? ? br ? ? ? ? ? ? ? ? ? ? b

11

Page 12: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

InversadeBWT

• ContinuamosconelprocesohastaresolverlaprimerafiladeM,quecontieneeltextooriginal

$1 a b r a c a d a b r a1a1 ? ? ? ? ? ? ? ? ? ? r1a2 ? ? ? ? ? ? ? ? ? ? d1a3 ? ? ? ? ? ? ? ? ? ? $1a4 ? ? ? ? ? ? ? ? ? ? r2a5 ? ? ? ? ? ? ? ? ? ? c1b1 ? ? ? ? ? ? ? ? ? ? a2b2 ? ? ? ? ? ? ? ? ? ? a3c1 ? ? ? ? ? ? ? ? ? ? a4d1 ? ? ? ? ? ? ? ? ? ? a5r1 ? ? ? ? ? ? ? ? ? ? b1r2 ? ? ? ? ? ? ? ? ? ? b2

12

Page 13: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio2

• Implementarlafunciónibwt*:– entrada:

• transformada (conunúnicosímbolo$)

– salida:texto talquebwt(texto)=transformada

• Ejemplo:– transformada:ard$rcaaaabb– salida:abracadabra$

• Prueba:– transformada=‘enwvpeoseu$llt’

13*Serecomienda programar previamente una función subscripts que,dadauna cadena detexto,retorne elnúmero deocurrencias decada letra

Page 14: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BWT

Búsquedadepatronesbúsqueda

mejorasenrendimientoymemoria

• TransformadadeBurrows-Wheeler

• Búsquedadepatrones• Búsquedasaproximadas

14

Page 15: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BúsquedadepatronesconBWT

• TodaslascoincidenciasdeunpatrónconuntextoseagrupanjuntasenlamatrizdeBWT:

$panamabananasabananas$panamamabananas$pananamabananas$pananas$panamabanas$panamabanas$panamabananbananas$panamamabananas$pananamabananas$pananas$panamabanas$panamabanapanamabananas$s$panamabanana

Podríamos irbuscando lasfilascomenzandoconelprimersímbolo delpatrónbuscado

Luego,paraesasfilasbuscamoscuálescontienenensusegundacolumnaelsegundo carácterdelpatrón.Yasísucesivamente.

Enelejemplo,elpatrónana

15

Page 16: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Memoria

• LaaproximaciónparabúsquedadepatronesnopuedeconfiarenalmacenarunamatrizMdetamaño|Text|x|Text|– DebemosdiseñarunabúsquedaquesóloutilicelaprimerayúltimacolumnadeM

– Paraellousaremosdenuevolapropiedadprincipio-findelamatrizM

16

Page 17: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BúsquedadepatronesconBWT(ii)

• patrón=ana,texto=“panamabananas$”$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

1)Empezamosporlaúltimaletra(a)ybuscamostodas lasfilasquelatenganenlaprimeracolumna

2)Nosquedamosconaquellasqueenlaúltimacolumnatenganlapenúltimaletra(n)

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

17

Page 18: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BúsquedadepatronesconBWT(ii)

• patrón=ana,texto=“panamabananas$”

3)Identificamoslascoincidenciasanterioresenlaprimeracolumnayrepetimoselproceso

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

4)Alterminarseelpatrón,laposicióndeloscaracteresenlacolumnaprimeranosdalasocurrenciasdelpatróneneltexto

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

18

Page 19: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BúsquedadepatronesconBWT(ii)

• Estemododebúsquedasepuedevercomounaactualizacióndelospunterosqueindicanlascoincidenciasentramoscrecientesdelpatrón:

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

0

13

1

6

9

11

3

5

19

Page 20: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mapeoprimero-a-último

• Traduccióndelaprimerayúltimacolumnaapunterosnuméricosdefila

i PrimeraColumna

ÚltimaColumna

PrimeroAUltimo(i)

0 $1 s1 13

1 a1 m1 8

2 a2 n1 9

3 a3 p1 12

4 a4 b1 7

5 a5 n2 10

6 a6 n3 11

7 b1 a1 1

8 m1 a2 2

9 n1 a3 3

10 n2 a4 4

11 n3 a5 5

12 p1 $1 0

13 s1 a6 6 20

Page 21: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BWMatchingbwMatching(primeraColumna, últimaColumna, patrón, primeroAÚltimo)

top <- 0

bottom <- 0

mientras top <= bottom

si patrón no vacíosímbolo <- última letra en patrón

eliminar última letra de patrón

posiciones <- [tob:bottom]

si últimaColumna[posiciones] contiene símbolo

topi <- primera posición de símbolo en dichas posiciones

bottomi <- ultima posición de símbolo en dichas posiciones

top <- primeroAÚltimo[topi]

bottom <- primeroAÚltimo[bottomi]

si noreturn 0

si noreturn posiciones de bottom a top

return 0 21

Page 22: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio3• ImplementarlafunciónbwMatching segúnelpseudocódigoanterior

– entrada:• primeraColumna deunamatrizM correspondiente altextoenelquequeremosbuscarun

patrón• ultimaColumna dedichamatrizM• primeroAUltimo listadepunteros enlamatrizM• [Opcionalmente, sepueden sustituirestostresparámetrosdeentradaporeltexto,yconstruir

lamatrizylalistadepunterosdentrodelafunción]• patron quesebusca

– salida:posiciones delasfilasdelamatrizM quecontienenelpatrón

• Ejemplo:– texto:panamabananas$– patrón:ana– salida:[3,4,5]

• Prueba:– texto=oricVC*

– patrón=cgga22*http://vis.usal.es/rodrigo/documentos/bioinfo/avanzada/datos/oric.txt

Page 23: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio• CargaelgenomadeVcholerae (~1.1Mbases)– AplicaelbwMatching asusprimeras10Kbases,monitorizandooestimando:• TiempoinvertidoenconstruirM• MemoriarequeridaparaalmacenarM• Tiempoinvertidoenlabúsqueda

– Repitecon50Kbases• ¿Estemétododebúsquedaesescalablehasta1.1Mbases?– ¿Cuáleselprincipalcuellodebotella?– Unosepuededesanimarviendoqueunnavegadoroeditordetextocualquieranoshacelabúsquedasinproblemaspara1.1Maestenivel…¡paciencia!J

23

Page 24: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mejora1)Recuperandolaposicióndelospatrones

• Antesdemeternosconlareduccióndememoria,nosfaltaundetalle:– ¡Nosabemosdóndeestánlospatronesencontradoseneltexto!• Sóloestamosretornandolasposicionesenlamatriz

• Necesitaremosunarray desufijosdeltexto– RetornarsuffixArray[top:bottom+1] envezdelasposicionesdebottom atop

24

Page 25: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mejora2)Reduciendolamemoria• EstamosreservandomemoriaparaM– Si|texto|=106à |M|=|texto|2=1012

• Casi1000GBparaungenomadeltamañodeVcholerae• Realmentesólonecesitamos|pattern|columnasdeM paraasegurarlabúsqueda– Si|texto|=106 y|pattern|=10à 107

• 10MparaungenomadeltamañodeVcholerae• Ypodemosbuscark-merosdehastatamaño10

• LomismopasaconlasconstruccióndesuffixArray– Podemosmodificarlaversióndelasesiónanterior

25

Page 26: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mejora 2)Reduciendo lamemoria

26

Por ejemplo,para latransformadadepanamabananas$ siqueremos buscar patrones delongitud máxima 4

1)Rotar 2)Ordenarpana|$ $pans

$pan|s abanm

s$pa|a amabn

as$p|n anamp

nas$|a ananb

anas|n anasn

nana|a as$pn

anan|b banaa

bana|a mabaa

aban|m namaa

maba|a nanaa

amab|n nas$a

nama|a pana$

anam|p s$paa

Page 27: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mejora3)Primerasocurrencias

• Lamemoriaesclaramenteunproblema– Paraungenomadehumano(~3GB)tansólomantenerlaprimeray/oúltimacolumnadeMenRAMesbastantecostoso

• Realmente,nonecesitamostodalaprimeracolumna,sóloelíndicedelaprimeraocurrenciadecadasímbolo– 3GBà 5caracteres

27

Page 28: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Primeras ocurrencias

28

$ 0a 1b 7m 8n 9p 12

1)Rotar 2)Ordenar 3)Primerasocpana|$ $pans

$pan|s abanm

s$pa|a amabn

as$p|n anamp

nas$|a ananb

anas|n anasn

nana|a as$pn

anan|b banaa

bana|a mabaa

aban|m namaa

maba|a nanaa

amab|n nas$a

nama|a pana$

anam|p s$paa

Page 29: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio4• ImplementarlafunciónfirstOccurrence*

– entrada:• symbol carácterdelquequeremoscontarelnúmerodeocurrenciasentexto• text textoenelquequeremoscontarelsímbolo

– salida:primeraposicióndesymbol entext

• Ejemplo:– texto:$aaaaaabmnnps– símbolo:n– salida:9

• Prueba:– Aplicaratodos lossímbolosen $aaaaaabmnnps paraobtenerunalistade

primerasocurrencias• PISTA:Muysencillo utilizandomap

29*PISTA:trivialenpythonusando lafunción index para str

Page 30: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

lambda

• Unaformacompactayelegantedeprogramarenpython eselusodelafunciónlambda

• Esunaformaabreviadadedefinirunafunción– lambda x:x+3 <-> def(x): return x+3

• LambdafacilitalaprogramaciónfuncionalenPython– Esdecir,permiteincluirfuncionescomoargumentosdeotrasfunciones

30

Page 31: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

map

• map esunafunciónqueaplicaotrafunciónfatodosloselementosdeunalistas

map(lambda x:x*2+10, [2,3,4])

à[14,16,18]

• Otrousocomúnequivalenteamap:

[x*2+10 for x in [2,3,4]]

31

Page 32: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

filter

• filter seleccionasólolosvaloresdeunalistas quecumplanlacondicióndefinidaenunafunciónf

filter(lambda x:x>10, [2,8,13,33])

à [13,33]

32

Page 33: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

reduce

• reduce esunafunciónqueaplicaunafunciónf alosdosprimeroselementosdeunalistas ycontinúaaplicandof alresultadomáselsiguienteelementodes

reduce(lambda x,y:x+y+1, [2,3,4])

à 11

33

Page 34: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio• Implementarlafuncióncount

– entrada:• symbol carácterdelquequeremoscontarelnúmerodeocurrenciasentexto• n longitudentextohastaelquequeremoscontarocurrencias• text textoenelquequeremos contarelsímbolo

– salida:númerodevecesqueaparecesymbol entext[:n]

• Ejemplo:– texto:smnpbnnaaaaa$a– símbolo:n– n:10– salida:3

34

Page 35: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio• ConstruirbwMatchingV2 modificandolasecciónde

pseudocódigomarcadaenverdeenbwMatching por:

top <- firstOccurrence(símbolo) + count(símbolo,top,últimaColumna)

bottom <- firstOccurrence(símbolo) + count(símbolo,bottom+1,últimaColumna)-1

• Conestamodificacióneliminamoselmapeoprimero-a-último yprimeraColumna delabúsqueda– AunquelassustituimosporfirstOccurrence y

count• Estudiarsisehaobtenidoalgunamejoraenvelocidad

omemoriaconrespectoalaversiónanterior– ¿Porqué? 35

Page 36: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mejora4)Lapreguntadelmillón

• Cuandoempezamosatrabajarconcadenasde1millóndeelementosomás,empiezaahaberproblemasadistintosniveles:– range estarágenerandounalistatambiénde1M• Utilizarxrange paraiterarenlosbucles

– laslistasdepython nosoneficientes• Utilizarnumpy.array

– EnvoltoriodeestructurasdirectamentedeC

36

Page 37: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

numpy.array

• EnPython tenemoslaclaselist– Noesexactamenteunarray,puestieneuntamañodinámicoypuedecontenerelementosedistintostipos• Estolahacemuyflexible,peromenoseficiente

• Labibliotecanumpy ofrecearray– Hayquedeclararsutamañoysutipo– Aúnasí,muyflexibleenladeclaracióndetipos– Permitearrays multidimensionales(matrices)

37

Page 38: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

numpy.array

Eluso es similaraldeuna lista,salvopor las restricciones altamaño.Permite definir tipos distintos enlas columnas delatabla/matriz mediante elargumento dtype.Lostipos sepueden modularentamaño conuna sintaxis simple.Podemos acceder afilas ocolumnas también demanera sencilla. 38

Page 39: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio

• ConloquehemosvistodeberíamospodertratarconungenomapequeñocomoeldeVcholerae (1.1Mbases) con:– Tiempodebúsqueda<1s– Tiempodeconstruccióndeestructuras<10s– MemoriaRAMutilizadadespreciable

• Revisatusoluciónintentandollegaraestepunto

39

Page 40: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

(mi)ejercicio

• Estossonmisresultadosconlasdistintasversionesdelabúsqueda– ElbloqueodecadaversiónsuelevenirdadoporelconsumodeRAM

Versión Alcance Mejoras

3 10K Versión confirstOccurrence ysuffixArray (diap.25,28ysigs)

4 100K Reducir lalongitud desecuencia guardada enlabúsqueda (diap.24)

5 500K Reducir lalongitud también enBWT

6 1.1MVchol

Reducir también enfunciones count ycheckpoints~3senlaconstrucción,<1senbúsquedas

7 4.6MEcoli

Aplicar xrange ynp.array atodas las funciones~15senlaconstrucción,<1senbúsquedas

40

Page 41: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Recapitulando

• Parahacerbúsquedasrápidasengenomas,exploramosestructurasdedatosnuevas

• Lamejoraentiempovaasociadaaunincrementodememoriaparaalmacenardichasestructuras– Mejoramoslasestructuras(treeà trieà array)• 1TBà 60GBà 12GBparaelgenomahumano(3GB)

– Seguimosmejorando(BWT,firstOccurrence)• à Conunpocomásdeingenio,llegaremoshastaunos4.5GBenRAMparaelgenomahumano.

41

Page 42: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BWT

Búsquedasaproximadasarrays parcialesdesufijospuntosdecontrolenBWT

• TransformadadeBurrows-Wheeler

• Búsquedadepatrones• Búsquedasaproximadas

42

Page 43: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mejora5)Arrays parcialesdesufijos

• Añadiendoarrays desufijosaBWmatchingestamosaumentandolamemoriadenuevo,cuandojustoloquenecesitamosesreducirla

• SuffixArrayk(texto) contienesólolosvaloresdeSuffixArray(texto) queseanmúltiplosdek– Típicamentek=100

TODO:versiónnuevadeBWmatching que losuse

43

Page 44: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Mejora6)PuntosdecontrolenBW

• Lafuncióncount tieneunacomplejidadO(|Text|)yseejecutaconcadarechequeo detop ybottom

• Podríamosprecomputarlo,perodenuevoempeoraríamoselconsumodememoria

• Comoenelcasodelosarrays desufijosparciales,lasoluciónesprecomputar algunoscount einferirelrestocuandoseanecesario

44

Page 45: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

• Loscheckpoints para“panamabananas$”– Elresultadodeaplicarcount acadasímbolok yposicióni

• SóloalmacenamoslasposicionesmúltiplodeC=5– Lonormal,C=100– Eneldibujo,ennegrita

• count(a,13)– Vamosalcheckpointmás

cercano(a=3)– Avanzopor

últimaColumna hastallegaral13,viendosihaymásaesenlaposición10(sí),11 (sí)y12 (no)

– Entotal:• count(a,13)=3+2=5

i últimaColumna count$ a b m n p s

0 s 0 0 0 0 0 0 01 m 0 0 0 0 0 0 12 n 0 0 0 1 0 0 13 p 0 0 0 1 1 0 14 b 0 0 0 1 1 1 15 n 0 0 1 1 1 1 16 n 0 0 1 1 2 1 17 a 0 0 1 1 3 1 18 a 0 1 1 1 3 1 19 a 0 2 1 1 3 1 110 a 0 3 1 1 3 1 111 a 0 4 1 1 3 1 112 $ 0 5 1 1 3 1 113 a 0 5 1 1 3 1 1

1 6 1 1 3 1 145

Page 46: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio• Implementarlafuncióncheckpoints

– entrada:• lastColumn ctransformada deBurrows-Wheeler deuntexto• symbols todos lossímbolosdeltexto(sólounavezcadauno)• c determinacadacuantasposicionesdelastColumn establecemosuncheckpoint

– salida:vectoresconlospuntosdechequeoparacadasímbolo

• Ejemplo:– texto:smnpbnnaaaaa$a– símbolos:smnpba$– c:5– salida: {'$': [0, 0, 0], 'a': [0, 0, 3], 'b': [0, 1, 1],

'm': [0, 1, 1], 'n': [0, 1, 3], 'p': [0, 1, 1], 's': [0, 1, 1]}

46

Page 47: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio• Implementarlafuncióncounts

– entrada:• symbol carácterdelquequeremoscontarelnúmerodeocurrenciasentexto• pos longitudentextohastaelquequeremos contarocurrencias• text transformadadeBurrows-Wheeler (i.e.últimaColumna)• checkpoints vectorescalculadoscadakposiciones paratodos lossímbolos• k

– salida:númerodevecesqueaparecesymbol entext[:pos]

• Ejemplo:– texto:smnpbnnaaaaa$a– símbolo:a– pos:13– checkpoints:los calculados en el ejercicio anterior– k:5– salida:5

47

Page 48: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio

• Pruebatumétodocongenomascrecientesentamaño.– Aquíestánlostiemposqueyoconsigo:Especie Tamaño Construcción1 Búsqueda1

Vcholerae 1.1M 3s 0.03s

Ecoli 4.6M 15s 0.12s

Bbrevis 6.3M 24s 0.2s

H sapiens(chr.Y)* 26.4M 107s2 0.2s

H sapiens(chr.1)* 503.0M

1Tiemposparabuscarun9-mer,yconstruyendoparaencontrar9-merscomomucho.ElespacioenRAMesdespreciable hastallegaraaHsapiens, con0.8GdeRAMparaelchrY225srotacióncíclica,45sordenación, 4senfirstOccurrences,33sencheckpoints.*Descargableaquí:http://hgdownload.cse.ucsc.edu/downloads.html#human

48

Page 49: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Búsquedadepatronesaproximados

• Engeneral,vamosabuscarpatronesqueaparezcanconcomomuchod discordancias

• Teorema:sidoscadenasdelongitudn coincidenconcomomuchod discordancias,entoncescompartenunk-merodelongitudk=n/(d+1)– Prueba:elmodomásdispersodelasdiscordanciasestenerunacadak=n/(d+1)posicionesà entredosdedichasposicionesnohabrádiscordancia

49

Page 50: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Búsquedadepatronesaproximados

• Graciasaesteteoremapodemosutilizarlosmétodosrápidosdebúsquedaexactadepatronesparabúsquedascondiscordancias:1. Dividirpattern enk=n/(d+1)partes(semillas)2. Búsquedaexactadesemillasentexto

(deteccióndesemillas)3. Extenderlassemillasenambasdireccionespara

verificarsielpatrónocurreconunmáximodeddiscordancias(extensióndesemillas)

50

Page 51: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BúsquedaaproximadayBWT

• BWTmatching peroconunarray dediscordancia,porejemplo:– text=panamabananas$, pattern=dna, d=1

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

$1 panamabanana s1a1 bananas$pana m1a2 mabananas$pa n1a3 namabananas$ p1a4 nanas$panama b1a5 nas$panamaba n2a6 s$panamabana n3b1 ananas$panam a1m1 abananas$pan a2n1 amabananas$p a3n2 anas$panamab a4n3 as$panamaban a5p1 anamabananas $1s1 $panamabanan a6

000000

222111

110001

51

Page 52: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Búsquedaaproximadayrendimiento

• Labúsquedaaproximadapuedereducirmuchoelrendimiento– Seconsideranmuchascadenascandidatas– d sesuelemantener<3

Especie Tamaño d=01 # d=1 # d=2 # d=3 #

Vcholerae 1.1M 0.03 1 0.4 61 5.2 984 36.4 8579

0.03 0 0.07 0 0.1 0 0.6 11Tiemposensegundos parabuscarel9-merCGGAACGGT, conhastadinconsistencias y#devecesqueseencuentraelpatrón.Tambiénparael20-merCTATTCGCCGCCAACGTGGG

52

Page 53: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio5• ImplementarlafunciónbwMatchingV3

– entrada:• text textoenelquequeremoscontarelpatrón• pattern patrónabuscar• d númerodemutacionessobreelpatrónpermitidas• cf transformadadeBurrows Wheeler (primeracolumnadelamatriz)detext*• fo primerasocurrenciasenlatransformadadetext• sa array desufijosdetext• cp checkpoints delatransformada(k=5)

– salida:listacontodaslasposicionesdesymbol conhastadmutacionesentext

53

*Todos estos parámetros adicionales sonpara evitar tener que construir laestructura dedatos delatransformada concada nueva búsqueda sobre text

Page 54: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio5• Ejemplo:

– text:panamabananas$– pattern:bna– d:1– cf:smnpbnnaaaaa$a– fo:{'a': 1, 'b': 7, '$': 0, 'm': 8, 'n': 9, 'p': 12,

's': 13}

– sa:[13, 5, 3, 1, 7, 9, 11, 6, 4, 2, 8, 10, 0, 12]

– cp:{'a': [0, 0, 3], 'b': [0, 1, 1], '$': [0, 0, 0], 'm': [0, 1, 1], 'n': [0, 1, 3], 'p': [0, 1, 1], 's': [0, 1, 1]}

– salida:[1, 9, 7]

54

Page 55: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

Ejercicio*• Prueba:

– text:genoma deVcholerae– pattern:gattaca– d:1– Elresto deparámetros sepueden obtener apartir detext

– Aunque elmétodo debe calcular las posiciones decada ocurrencia,sólo sepide como solución elnúmero totaldeocurrencias

55

*Enviar lasolución encontrada (código yunpequeño informe deunpardefoliossobre elrendimiento,complejidad, etc.)alcorreodelprofesor

Page 56: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

56

Page 57: Rodrigo Santamaría - Home | VisUSALvis.usal.es/rodrigo/documentos/bioinfo/muii/sesiones/6-bwt.pdf · La transformada de Burrows-Wheeler • Hemos reducido en gran medida la memoria

BWTaplicada aunatiracómica deGarfieldhttp://www.mezzacotta.net/garfield/?comic=691

57