rodrigo santamaría - home |...
TRANSCRIPT
BioinformáticaTransformadadeBurrows-Wheeler
RodrigoSantamaría
BWT
TransformadadeBurrows-Wheeler
definiciónyconstruccióninversayreconstrucción
• TransformadadeBurrows-Wheeler
• Búsquedadepatrones
2
LatransformadadeBurrows-Wheeler
• Hemosreducidoengranmedidalamemorianecesariaparaconstruirestructurasdedatosqueacelerenlabúsquedadepatrones– Estadodelartehastacomienzosdeestesiglo
• ¿Podemosreduciraúnmáslamemorianecesaria,hastaqueseaaproximadamenteigualaltextoenelquehacemoslasbúsquedas?
3
Compresióndecadenas
• Compresiónrun-length– Sustituirrepeticionesconsecutivasporunnúmero:• TTTTTGGGAAAACCCCCCA à 5T3G4A6C1A
– Podríacomprimirungenomaen8caracteres,sipreviamenteloordenáramos• Pero,porsupuesto,lacadenaoriginalnoseríarecuperable• Necesitamosunmétodoquemaximicelasrepeticionesperoquepermitarecuperarlasecuenciaoriginal
4
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
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
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
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
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
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
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
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
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
BWT
Búsquedadepatronesbúsqueda
mejorasenrendimientoymemoria
• TransformadadeBurrows-Wheeler
• Búsquedadepatrones• Búsquedasaproximadas
14
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
Memoria
• LaaproximaciónparabúsquedadepatronesnopuedeconfiarenalmacenarunamatrizMdetamaño|Text|x|Text|– DebemosdiseñarunabúsquedaquesóloutilicelaprimerayúltimacolumnadeM
– Paraellousaremosdenuevolapropiedadprincipio-findelamatrizM
16
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
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
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
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
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
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
Ejercicio• CargaelgenomadeVcholerae (~1.1Mbases)– AplicaelbwMatching asusprimeras10Kbases,monitorizandooestimando:• TiempoinvertidoenconstruirM• MemoriarequeridaparaalmacenarM• Tiempoinvertidoenlabúsqueda
– Repitecon50Kbases• ¿Estemétododebúsquedaesescalablehasta1.1Mbases?– ¿Cuáleselprincipalcuellodebotella?– Unosepuededesanimarviendoqueunnavegadoroeditordetextocualquieranoshacelabúsquedasinproblemaspara1.1Maestenivel…¡paciencia!J
23
Mejora1)Recuperandolaposicióndelospatrones
• Antesdemeternosconlareduccióndememoria,nosfaltaundetalle:– ¡Nosabemosdóndeestánlospatronesencontradoseneltexto!• Sóloestamosretornandolasposicionesenlamatriz
• Necesitaremosunarray desufijosdeltexto– RetornarsuffixArray[top:bottom+1] envezdelasposicionesdebottom atop
24
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
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
Mejora3)Primerasocurrencias
• Lamemoriaesclaramenteunproblema– Paraungenomadehumano(~3GB)tansólomantenerlaprimeray/oúltimacolumnadeMenRAMesbastantecostoso
• Realmente,nonecesitamostodalaprimeracolumna,sóloelíndicedelaprimeraocurrenciadecadasímbolo– 3GBà 5caracteres
27
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
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
lambda
• Unaformacompactayelegantedeprogramarenpython eselusodelafunciónlambda
• Esunaformaabreviadadedefinirunafunción– lambda x:x+3 <-> def(x): return x+3
• LambdafacilitalaprogramaciónfuncionalenPython– Esdecir,permiteincluirfuncionescomoargumentosdeotrasfunciones
30
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
filter
• filter seleccionasólolosvaloresdeunalistas quecumplanlacondicióndefinidaenunafunciónf
filter(lambda x:x>10, [2,8,13,33])
à [13,33]
32
reduce
• reduce esunafunciónqueaplicaunafunciónf alosdosprimeroselementosdeunalistas ycontinúaaplicandof alresultadomáselsiguienteelementodes
reduce(lambda x,y:x+y+1, [2,3,4])
à 11
33
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
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
Mejora4)Lapreguntadelmillón
• Cuandoempezamosatrabajarconcadenasde1millóndeelementosomás,empiezaahaberproblemasadistintosniveles:– range estarágenerandounalistatambiénde1M• Utilizarxrange paraiterarenlosbucles
– laslistasdepython nosoneficientes• Utilizarnumpy.array
– EnvoltoriodeestructurasdirectamentedeC
36
numpy.array
• EnPython tenemoslaclaselist– Noesexactamenteunarray,puestieneuntamañodinámicoypuedecontenerelementosedistintostipos• Estolahacemuyflexible,peromenoseficiente
• Labibliotecanumpy ofrecearray– Hayquedeclararsutamañoysutipo– Aúnasí,muyflexibleenladeclaracióndetipos– Permitearrays multidimensionales(matrices)
37
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
Ejercicio
• ConloquehemosvistodeberíamospodertratarconungenomapequeñocomoeldeVcholerae (1.1Mbases) con:– Tiempodebúsqueda<1s– Tiempodeconstruccióndeestructuras<10s– MemoriaRAMutilizadadespreciable
• Revisatusoluciónintentandollegaraestepunto
39
(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
Recapitulando
• Parahacerbúsquedasrápidasengenomas,exploramosestructurasdedatosnuevas
• Lamejoraentiempovaasociadaaunincrementodememoriaparaalmacenardichasestructuras– Mejoramoslasestructuras(treeà trieà array)• 1TBà 60GBà 12GBparaelgenomahumano(3GB)
– Seguimosmejorando(BWT,firstOccurrence)• à Conunpocomásdeingenio,llegaremoshastaunos4.5GBenRAMparaelgenomahumano.
41
BWT
Búsquedasaproximadasarrays parcialesdesufijospuntosdecontrolenBWT
• TransformadadeBurrows-Wheeler
• Búsquedadepatrones• Búsquedasaproximadas
42
Mejora5)Arrays parcialesdesufijos
• Añadiendoarrays desufijosaBWmatchingestamosaumentandolamemoriadenuevo,cuandojustoloquenecesitamosesreducirla
• SuffixArrayk(texto) contienesólolosvaloresdeSuffixArray(texto) queseanmúltiplosdek– Típicamentek=100
TODO:versiónnuevadeBWmatching que losuse
43
Mejora6)PuntosdecontrolenBW
• Lafuncióncount tieneunacomplejidadO(|Text|)yseejecutaconcadarechequeo detop ybottom
• Podríamosprecomputarlo,perodenuevoempeoraríamoselconsumodememoria
• Comoenelcasodelosarrays desufijosparciales,lasoluciónesprecomputar algunoscount einferirelrestocuandoseanecesario
44
• 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
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
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
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
Búsquedadepatronesaproximados
• Engeneral,vamosabuscarpatronesqueaparezcanconcomomuchod discordancias
• Teorema:sidoscadenasdelongitudn coincidenconcomomuchod discordancias,entoncescompartenunk-merodelongitudk=n/(d+1)– Prueba:elmodomásdispersodelasdiscordanciasestenerunacadak=n/(d+1)posicionesà entredosdedichasposicionesnohabrádiscordancia
49
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
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
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
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
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
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
56
BWTaplicada aunatiracómica deGarfieldhttp://www.mezzacotta.net/garfield/?comic=691
57