

































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
prof. Mignone. sbobbine di biologia computazionale anno 2019/2020
Tipologia: Sbobinature
1 / 41
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


































Problema del resto: immaginiamo di avere una banconota e cambiarla in monete però in minor numero di monete possibile. Il numero di sostituzioni possibili per cambiare una banconota in monete sono tante, quella che cerchiamo è la migliore. Con migliore intendiamo in questo caso il minor numero di monete. Non è sempre detto che il minor numero sia il migliore, ma va definito in base al contesto il migliore, dipende dal tipo di sequenze che sto allineando. Non basta come input la somma di denaro da cambiare ma serve anche sapere il tipo di monete. Immaginiamo di avere un numero illimitato di monete (perché immaginare di avere il vincolo del numero massimo di monete ci complica il tutto e non ci serve per le sequenze). Noi abbiamo una somma M (=77) che vogliamo dividere in monete ed abbiamo una serie di monete (da 1,3,7 cent), voglio sapere qual è la combinazione migliore dove in questo caso si intende il minimo numero di monete. Risoluzione: algoritmo deve essere generalizzabile, non solo per questo caso. Se si inizia con le monete più alte c’è il rischio poi che quelle rimanenti più piccole non diano alla fine la soluzione migliore, perché, in questo caso può probabilmente funzionare perché 7 è maggiore della somma di 3 e 1, ma se avessi delle monete tipo 2,3 e 4 potrebbe non funzionare, non ho la garanzia che avendo saturato tutte le monete più grandi e rimando con quelle piccole non ho la garanzia che quello che mi rimane da restituire sia restituibile con le monete più piccole, dando un totale minore. Es che partire con il maggiore non da la soluzione migliore: M=40, monete di cambio= 1,5, 10, 20, 25. Soluzione partendo dal più alto= 25, 10, 5. Soluzione migliore= 20, 20. Un approccio per il risultato può essere “io non so qual è il modo migliore per restituire 77, ma so che ci posso arrivare da 76+1, da 74+3, oppure da 70+7.” Quindi non so quale sia il migliore ma so che l’ultima da mettere sul tavolo può essere una da 1, una da 3 o una da 7. Quindi io potrei girare il ragionamento dicendo che il miglior modo per restituire 77 è dato dal minimo del restituirne 76+1, 74+1, 70+1 dove + non è il taglio della moneta ma la moneta stessa. Quindi il migliore è quello se restituisco tutto il 76+1, tutte e 74+1 o tutte e 70+1. Il 76, 74,70 è il valore già restituito. Da qua lo risolvo continuando lo stesso ragionamento per mostrarne che per raggiungere 76 il migliore è 75+1, 73+3, 69+7 e cosi anche per 74 e 70 (sono però 75+1, 73+1, 69+1 con +1 come moneta stessa e non taglio della moneta). Stiamo costruendo il ragionamento ricorsivo di informatica. Tra queste possibilità però non so qual è il modo migliore poi per restituirne 76, 74 e 70 quindi devo calcolare anche essi, quindi il problema è che calcolato non so quale sia poi il migliore tra quelli del 76, del 74 e del 70 quindi continuo andare indietro. I due principali problemi dell’algoritmo ricorsivo al nostro caso: la quantità di memoria utilizzata perché deve tenere molti casi, ed il secondo è che è ridondante perché calcolo più e più volte il best dello stesso valore e tende a diventare impraticabile. Proviamo a ragionare in maniera diametralmente opposta: invece di calcolare qual è il meglio di calcolare 77 calcolo il meglio di tutti i valori fino ad arrivare a 7. Il miglior modo di restituire 0 monete è
questo ragionamento è di tipo: programmazione dinamica, cioè un modo che ragiona nei termini di trovare la soluzione ottima dall’inizio del problema fino alla fine per calcolarlo una ed una sola volta. Confronto tra un numero di valori pari al numero di monete che ho, quindi il calcolo non diventa esplosivo. Cresce linearmente con il valore finale che voglio calcolare. Trasformare ciò in uno pseudo codice: DPChange (programma dinamico change)
Proviamo ora a trasformare ciò in uno pseudocodice: lo chiamiamo MT (manattan turist)
valora del secondo punto della colonna con il valore dell’arco che è 4 e quindi nella tabella S andrà scritto 5. Sulla prima riga non esiste un percorso dall’alto quindi nella W va aggiunta una riga tutti di 0 (poi anche per una colonna iniziale di 0 per la w)
Riassunto biologia per applicarla a lezioni 1-2. Il DNA è una doppia elica, tipo stringa su allineamento di 4 caratteri A T C G. Qui l’uracile (U) è sinonimo di T quindi si può usare allo stesso modo. Dal punto di vista chimico una base è una molecola a 5C (zucchero) chiamato pentoso, sul carbonio 1’ c’è collegata la molecola della A T C oppure G. Sul 5 primo invece c’è un gruppo fosfato. Tra DNA e RNA cambia la posizione 2’, se presenta OH è RNA, se no è DNA. Nella catena molecole con tutti la stessa struttura e si legano tra loro con 5’-3’, l’estremità testa è 5’ mentre l’estremità coda è 3’ dove si possono aggiungere nuove basi. quando si scrive un DNA o RNA di scrive solo il carattere perchè il resto non cambia, basta sapere se va da 5’-3’ o da 3’-5’. Il DNA è una doppia elica quindi il filamento è appaiato ad un secondo, le basi si appaiono con legami non covalenti (deboli) in maniera molto specifica. La A con la T (con 2 legami ad idrogeno), la C con la G (con 3 legami idrogeno più forti). I filamenti sono antiparalleli tra loro, guardando dallo stesso lato una sarà 5’-3’ l’altra 3’-5’. Ora rappresentiamo il DNA come singola molecola. Il DNA viene trasformato in proteine. Serve sapere la lunghezza che cerco, la lunghezza della sequenza nella quale cerco ed il numero delle sequenze nella quale cerco. Il DNA dell’uomo è lungo 3 miliardi ci paia di basi circa, diviso in 23 coppie di cromosomi per ogni cellula. Immaginiamo di codificare una base del DNA con un carattere in formato testo in un file, avremo un file di 3 miliardi bite. La percentuale di DNA che codifica per i geni è 3-5%, vuol dire che nella sequenza del DNA i geni costituiscono piccoli pezzettini che presentano geni intervallati da zone intergeniche. Il DNA va incontro ad un processo che si chiama trascrizione che copia una delle due molecole e ne crea una copia identica, ciò è il gene in termini bioinformatici che si chiama “sito di inizio della trascrizione” (TSS) e finisce in un punto che non ha nome. In informatica la regione a monte del gene (il core promoter) che serve per far partire la trascrizione non viene considerata nel TSS. Il gene viene trascritto in una molecola di RNA che ha solo un filamento che ha comunque il suo 5’-3’. Questo RNA va incontro al processo di maturazione dove va incontro ad alcune modifiche (splicing, cap al 5’, poliadenilazione al 3’). Lo splicing è il più importante cioè la rimozione degli introni (zone non codificanti) e da a molecola di mRNA. Poi avviene la traduzione dove un pezzo di mRNA viene tradotto in una sequenza di amminoacidi per dare luogo ad una proteina che poi assume le strutture tridimensionali dovute. Questo processo funziona a triplette perchè gli acidi nucleici sono 4, gli amminoacidi sono 20 quindi
Allineamento tra sequenze. Allineare vuol dire scrivere una sequenza una sotto l’altra in odo da allineare i caratteri. Quindi in queste stringhe incontrerò una A con A e l’allineo, T con T allineo, poi trovo A con T e posso scegliere se allinearla o meno se inserissi un carattere vuoto (-) ed accettassi che la A non ha un match allora poi allineo una T con T, una G con G una T con T. poi incontro nuovamente un mismatch tra A e C, sta volta però se aggiungo un carattere vuoto sì C e C avranno un match ma gli altri sono poi sfalsati, poteri però aggiungere un carattere vuoto sopra tra C e G avrò poi tutti i match. Se invece accettassi il mismatch (x) tra A e C quindi non shifto con un carattere vuoto si allineano poi tutti gli altri caratteri senza aggiungere caratteri vuoti ATATGTAC-GTA non accettando il mismatch ATATGTACGTA accettando il mismatch ||* | ||* || || || || |x| || | AT-TGT - C CGTA AT-TGT CCGTA Io devo ottenere il miglio allineamento, quindi l’allineamento con punteggio massimo. Questo allineamento può essere ragionato come distanza di edit, cioè il numero di operazioni che mi servono per trasformare una stringa in un’altra stringa. Gli eventi accettabili sono: aggiungere una lettera, cancellarla o cambiarla, quindi sono la sostituzione, l’inserzione e la delezione. Quei due allineamenti (no mismatch e sì mismatch) sono equivalenti? Proviamo a ragionare a distanza di edit. Nel secondo caso (del mismatch) ho una delezione della A (dove ho aggiunto il carattere nullo), poi una sostituzione tra A e C (dove accetto il mismatch) quindi ho 2 fatto due edit. Nel primo caso (dove non accetto il mismatch) invece abbiamo una delezione della A poi un’altra delezione della A nuovamente ed infine un inserzione della C (al posto di eliminare una C alla stringa sotto) quindi la distanza di edit è uguale a 3. Biologicamente di come allineo le sequenze non interessa, ma è importante per me per studiare la sequenza. Quale delle due è migliore come distanza di edit? Dal punto di vista computazionale devo definire prima cosa si intende con migliore, in questo caso la distanza di edit rappresenta il numero di operazioni quindi meno operazioni faccio e meglio è. Allineamento globale: chiamato needleman wunsh Proviamo allineare due sequenze alla manattan turist quindi in una matrice, voglio allinearle nel modo migliore cioè calcoliamo il punteggio in base al singolo carattere quindi diamo un punteggio positivo al carattere allineato (uguali). Diamo un punteggio di similarità e conto il punteggio di similarità. Nei casi sopra avevo entrambi con un punteggio di 9 per similarità però nel caso del mismatch avevo 9 + 1 mistmatch + 1 indel (si intende delezione e inserzione). Mentre nel non mismatch avevo 9 + 3 indel. Quale dei due è meglio? Dipende dal punteggio che assegno al match, mismatch ed indel. Allora adesso faccio alla manattan turist e provo a vedere tutti i possibili allineamenti dando il punteggio come match= 2, mismatch= 0, l’indel= - 1 quindi penalizzo l’indel. Questi valori sono importanti e vanno ben definiti. Quindi si calcolano tutti i possibili tragitti assegnando questi punteggi. Possiamo spostarci in orizzontale, verticale ed in diagonale. Se mi sposto in diagonale ho un match o mistmatch. Se mi sposto in orizzontale o verticale sto facendo degli indel.
Sequenza e stringa in questo corso sono sinonimi Allora qual è il miglior modo per allineare il primo carattere S1 con il primo S2? È mettere un match (A-A) e quindi mettere un 2. Poi mi sposto in orizzontale arrivando da sinistra ma il percorso varrà 2 - 1 e quindi varrà 1. Poi spostandosi sempre a sinistra varrà sempre il risultato della casella - 1 questo perchè gli spostamenti orizzontali e verticali valgono come indel. Scendendo invece dalla prima colonna si avrà di nuovo un mismatch e quindi avrò 2-1=1, posso solo scendere. La colonna 2 riga 2 invece posso spostarmi in tre modi o arrivare da sinistra, o da sopra oppure dalla diagonale, se arrivo dall’altro ho 1-1=0, se arrivo da sinistra ho un indel quindi 1-1=0 (perché non allineo la T con la T, si considera solo il movimento che in questo caso è l’indel), se invece arrivo dalla diagonale avrò un match e quindi 2+2=4 (un match in questo caso perchè saranno allineate T-T), io volendo il massimo mi sposterò quindi in diagonale. Poi per la terza colonna da alto - 1, da sinistra 3 e dalla diagonale 3, in questo caso ho dei percorsi alternativi e per ora lo segno entrambi. Nella 4 colonna invece dall’alto sarà - 2, da sinistra 2 e dalla diagonale avrò 0+0=0 (perché è un mismatch in quanto è tra T e G). e vado avanti così. S1: ATCGTA S2: ATTGCTTA S2 = strada punt migliori mentre calcolo S Ora bisogna vedere come si legge, si legge esattamente come il manattan turist: si parte dal fondo dove il best match è 8 (è anche il punteggio massimo in tutta la tabella) e poi seguo a ritroso le frecce con il Backtrack trovo il percorso che mi ha portato qui con il relativo punteggio. Nel caso di alternativa per ora ne prendo una a caso, poi più avanti vedrò qual è il modo più giusto. Da 8 prendo il 6 in diagonale, poi il 4 in diagonale, il 4 in diagonale, il 2 in diagonale, il 3 in orizzontale, il 4 in orizzontale, il 2 in diagonale. Quindi trascriviamo questo allineamento partendo dal fondo. Spostarsi in diagonale vuol dire che mi sposto in orizzontale e verticale di uno quindi mi sposto su entrambe le sequenze. (x è mismatch, non è un indel perchè lo spostamento è diagonale). Quando invece mi sposto a sinistra userò solo i caratteri di S2 (prendo un carattere di S2 e nulla di S1 perché li non mi sono spostato) NB: lo spostamento da tenere in considerazione non è quello dal basso (anche se si parte dal basso) ma è quella dall’alto perché il vero percorso è quello S1= A T G C - – T A scritta al contrario per capire meglio visto che vado a ritroso | | x | * * | | ma in realtà va scritta giusta. S2= A T T C G T TA Ora invece proviamo ad utilizzare un percorso alternativo: 8, diagonale 6, orizzontale 7, diagonale 5, orizzontale 6, diagonale 4, diagonale 4, diagonale 2.
All’esame potremmo trovare: date due stringhe e una matrice di punteggio (quella scritta a sinistra per capire quanto vale il match), dato un gap penalty (indel) ricostruire la matrice ed il traceback (aka backtrack) e l’allineamento cioè (ATCAGAGTC TTCAG- - TC, ricordo – perché arrivo in oriz e vert però guardando dall’alto non da dove parto in basso per il backtrack, arrivare da sinistra vuol dire che non prendo il carattare di quella in verticale, se arrivo dall’alto allora non prendo quella in orizzontale)
Quando ho più frecce tutte le frecce vanno bene (se parto dal fondo) perché sono percorsi alternativi che portano sicuramente al punto iniziale. Ed anche poi gli allineamenti saranno uguali. Se esplicitiamo tutti i possibili percorsi alternativi di backtrack si ottengono allineamenti equivalenti dal punto di vista del punteggio, in biologia essi sono equivalenti perché non cambia dal punto di vista biologico (si toglie sempre AG), ma solo dal punto di vista della notazione. Ci sono però poi delle convenzioni e regole non universali che decidono qual è l’allineamento di interesse guardando prima quella di mezzo (quelle che hanno lo stesso punteggio): computazionalmente sono equivalenti perché stesso score, ma biologicamente sta volta sono diversi perché ho la delezione di un TCA a dx e una delezione di un T + la delezione di un AC a sx, in questo caso non è lo stesso numero di eventi, nel primo caso ho un solo evento di delezione, nel secondo due eventi di delezione. Quindi non sono uguali in biologia, un’equivalenza computazionale non è uguale ad un’equivalenza in biologia.
Questo non posso saperlo però a priori, è da vedere mentre compongo la tabella. Pseudo codice: è praticamente identico al manattan turist tranne per la matrice di allineamento a verticale, b orizzontale e mi definisce i match e mismatch il a con – è il gap penalty S è il punteggio finale S(i,j) è il miglior punteggio in quella cella Quindi: Prima cella Prima colonna Sommo il punteggio di indel colonna Prima riga Sommo il punteggio indel riga Mi muovo per colonne Sommo diagonale + il match o mismatch Riga + indel Colonna + indel
Quindi la G era sulla sequenza orizz e A in quella vert Vengono messi come ai e bj solo perchè nel codice non so la lettera. Se invece voglio considerare una sequenza consecutiva di indel il codice cambia: Il max di quelli dall’alto Il max di quelli da sx Si può pesare anche tanto il primo e meno quelli successivi Si può allineare invece anche localmente con Smith-Waterman. Un allineamento locale significa: se noi prendiamo un genoma notiamo che ci sono zone più conservate che sono i geni (esoni), e zone meno conservate (introni) che sono le zone intergeniche. Questi geni sono sparsi (se prendo il DNA dell’uomo e del topo il gene B può trovarsi all’inizio nell’uomo e alla fine nel topo) e per questo il DNA è caratterizzato da allineamenti locali. Quindi mi darà un risultato che nella mia tabella non arriverà al punto finale in basso a destra. L’allineamento locale va a cercare il miglior match senza forzare l’allineamento a passare dall’inizio e la fine. Già all’inizio devo sapere come devo comportarmi a livello biologico per scegliere tra locale e globale
Allineamento locale: lo SW introduce anche il punteggio di best cioè il punteggio più alto della matrice. Evidenziate ci sono le parti da tener conto.
La A e G vengono indicate con un altro colore perché non fanno parte dell’allineamento. Con l’allineamento non si parte dall’ultima posizione in basso ma dove c’è il punteggio più alto (il best), si cerca comunque di prendere il best più a valle possibile (a destra ed in basso). Mentre in quello globale ho molti allineamenti alternativi che non possono esistere contemporaneamente. Nel locale ho allineamenti diversi e quindi alternativi, perché dopo aver allineato quello posso prendere altri allineamenti che hanno il best più basso (dopo il 4 c’è il 3) Con l’allineamento locale, quindi è possibile avere più frammenti di allineamento di sue sequenze contemporaneamente. Poi si possono prendere anche i 2 e 1, bisogna solo decidere dove fermarsi. Inoltre le stesse basi di una sequenza possono far parte di differenti sequenze. Schemi per la gap penalty: lo stesso allineamento può avere punteggi diversi a seconda del modello punteggio somma penalità punteggio più penalità= 1penalità un punteggio per il 1 gap più un punteggio per i seguenti
questo è importante perché biologicamente un indel è raro, ma una volta che ho un indel che sia corto o lungo è irrilevante. Una delle cose principali è proprio il punteggio da utilizzare, come calcolo il gap, le matrici di match? Le matrici di sostituzione può presentare anche match di punteggi diversi nella stessa matrice e ciò viene calcolato mediante dei calcoli statistici allineando sequenze omologhe, cioè si prende la stessa proteina in organismi diversi, la si allinea anche a mano e si calcola la frequenza in cui un aminoacido viene allineato con se stesso o con altri amminoacidi in questo modo si trasforma poi in matrice, quindi se uso matrici diverse ottengo diversi punteggi. Blast e Fasta: mettono in mezzo statistica per sfrondare i risultati e velocizzare, servono per allineare due sequenze cercandone una all’interno di una banca data molto vasta. Funzionano partendo da un principio molto importante che è il concetto di ancora cioè trovare un modo rapido per piazzare una sequenza rispetto all’altra e poi estendere gli allineamenti. Trovare modi semplici per andare a piazzare una sequenza rispetto all’altra. Velocizzano la ricerca nelle banche dati. Fasta: cerca di identificare (usa come ancora) una parola comune (una sequenza esatta di basi) in due sequenze poi estende l’allineamento. Immaginiamo di avere queste due sequenze (amminoacidiche): cerca le parole condivise tra le due sequenze, dobbiamo decidere quando deve essere lunga una parola. In questo esempio immaginiamo di avere parole lunghe 1 parola (word size=1), prendo la sequenza 1 e per tutte le possibili parole di lunghezza 1 creo una tabella che mi porta tutte le possibili lunghezze di parole (gli AA sono 20, quindi 20 possibili combinazioni, se avessi scelto 2 come lunghezza avrei avuto 40 combinazioni di coppie di AA). Poi controllo nella sequenza 1 quante A, C etc. poi trovo che c’è una F in posizione 1, L in posizione 2, W in posizione 3, R in posizione 4, T in 5, W anche in posizione 6 ed S in 7. Poi faccio la stessa cosa per la seconda sequenza. (questo può essere fatto a mano all’esame). Come faccio ora ad allinearle? Vado a vedere le diagonali, cioè la differenza che c’è tra le posizioni della stessa lettera. F è presente solo in una sequenza quindi non mi serve perchè non posso allinearle. Le uniche che servono sono la S, T e W perché sono presenti in tutte e due le sequenze. Cosa vuol dire che la S è in posizione 7 sulla prima sequenza e posizione 1 sulla seconda sequenza? Quindi per allineare queste S devo spostare la seconda sequenza di 6 posizioni, cioè 7-1. Se voglio allineare la T in posizione 5 per la prima seq e T nella seconda, devo spostare di 1 (5-4); se invece voglio spostare la T in 5 della prima e la T in 6 della seconda dovrò spostarmi di 5-6=
Per ogni sequenza che supera il valore soglia trova una sequenza di parole che matchano. I migliori match si trovano allineati sulle diagonali, gli altri nel resto della sequenza. Poi vengono cercati i set di diagonali che si trovano su una stessa fascia che viene identificata e su quella viene poi fatto un allineamento come i precedenti, non calcolata tutta la matrice ma viene preso in considerazione l’allineamento solo su quella banda e l’allineamento viene fatto solo lì (d). Praticamente si cerca il gruppo di ancore più significative e su quella fascia si crea il punteggio di allineamento. Se sbaglio la scelta a monte rischio di sbagliare alcune sequenze e di saltare quelle più importanti (questo non lo chiede di fare all’esame, gli interessa solo per sapere come fast gestisce l’indel). Matrici che decidono qual è in punteggio: tutti gli AA hanno un nucleo conservato, hanno una sequenza in comune e quella parte collegata all’atomo di C identifica la specie dell’aa. Alcuni aa hanno proprietà chimico-fisiche simili. Per ogni tipo di specie si assegna un punteggio di sostituzione. Sostituire un acido spartico con un triptofano è peggio che sostituirlo con una glutammina. Questo dipende anche dalla somiglianza delle molecole che identificano la specie, il tiptofano ha una struttura molto particolare che è diversa totalmente da tutti gli altri. Blast: funziona in maniera simile a fasta perché cerca ancore e cerca di costruire delle diagonali, ma nella modalità con cui cerca le ancore è diverso. Non fa una ricerca esatta ma mediante matrice di sostituzione. Es: abbiamo la sequenza PQGEFG e come word PQG, fasta cercherebbe questa parola ancora nella mappa con tutte le occorrenze nella banca dati, blast invece prende la parola e guarda i punteggi con cui questa parola allinea con tutte le altre teoriche possibili parole di lunghezza 3.
PQG allinea con la sequenza PEG? Usiamo la matrice degli aa Ho una sequenza che cerco nella banca dati, tutte le altre sequenze sono state predigerite creando un indice delle posizioni, nella sequenza che ne abbia una o 100000 non cambia nulla, viene creata un indice con tutte le parole. L’indice delle parole l’ho faccio con quelle che effettivamente sono presenti nelle sequenze della banca dati. Il ragionamento di cercare anche le parole usando la matrice di sostituzione lo faccio solo nella sequenza che uso per la ricerca. Per blast indiciziamo tutte le parole, solo che quando la cerchiamo, cerchiamo anche tutte le possibili alternative. Se nella sequenza ho PQG quindi non solo cerco quella ma anche tutte le altre possibili