












































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
Appunti del corso di bioinformatica presi personalmente
Tipologia: Appunti
1 / 52
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!













































Bioinformatica → studio dei problemi biologici attraverso le metodologie dell’informatica. Alcuni sinonimi di
bioinformatica sono biochimica computazionale o biologia molecolare computazionale.
Scopi della bioinformatica → gestione dei dati biologici (mantenimento, organizzazione, distribuzione…) e analisi
dei dati biologici (inferenze e predizioni sul significato biologico).
Gli oggetti studiati dalla bioinformatica sono sequenze di acidi nucleici, sequenze di proteine e strutture di
macromolecole.
La sequenza di acidi nucleici è scritta in formato FASTA, un formato standard utilizzato nelle banche dati. È un
formato di testo che presenta alcune specifiche, in particolare abbiamo un > che indica l’inizio della sequenza,
questo simbolo è seguito da un numero identificativo necessario a recuperare la sequenza in banca dati.
Successivamente può essere indicata la funzione della sequenza e l’origine. Nella riga successiva inizia la
sequenza scritta in codice IUPAC che enuncia il codice sempre in direzione 5’→3’. Da questa sequenza, grazie
alla complementarietà delle basi possiamo individuare la sequenza complementare, sempre in direzione 5’→3’-
Nel caso della sequenza di proteine abbiamo sempre il formato FASTA che inizia con un > seguito dal codice
identificativo della proteina. Anche in questo caso la sequenza è in codice IUPAC. Anche in questo caso abbiamo
una direzionalità, dall’estremità ammino-terminale a quella carbossi-terminale.
Nel caso delle strutture delle macromolecole possiamo avere diverse rappresentazioni strutturali. Nel file
troviamo ogni atomo con le sue coordinate spaziali, oltre che la rappresentazione tridimensionale.
In bioinformatica ci si occupa delle informazioni degli organismi modello (ratti, topi, moscerini, nematodi, ricci di
mare, rane, piante, lieviti e batteri) o anche di organismi poco o per nulla studiati. È importante avere molta
diversità genetica in una banca dati poiché tutti gli organismi sono collegati tra di loro e perciò possono essere
messi in relazione l’un l’altro. In questo contesto sono importanti gli alberi filogenetici, rappresentazioni grafiche
delle relazioni storiche tra i diversi organismi. Un’altra struttura molto utilizzata sono le reti o network che
rappresentano interazioni attuali tra geni o proteine.
Il problema a cui risponde la bioinformatica è quello di trovare la funzione di un gene o di una proteina a partire
dalla sequenza, passando o meno per la struttura.
Questo processo è utile per quelle proteine che non sono state caratterizzate sperimentalmente.
Nell’immagine abbiamo un esempio di proteina ipotetica di cui non si conosce la funzione. Di queste proteine
ne esistono tantissime in banca dati. Nel caso in cui non si conosca nulla della proteina si trova la dicitura
“proteina ipotetica”, è però possibile trovare qualche dettaglio derivante da evidenze sperimentali o
bioinformatiche (es. proteina ipotetica transmembrana). Anche se abbiamo una definizione precisa non è detto
che la definizione corrisponda alla vera funzione della proteina perché potrebbe derivare solo da base
bioinformatica e non sperimentale. Solo una piccola parte delle proteine ha informazioni sperimentali, siamo
intorno allo 0,33% di proteine in una banca dati.
Le proteine vengono annotate automaticamente e solo una piccolissima percentuale di informazioni viene
aggiunta manualmente, in genere è relativa alle evidenze sperimentali sulla proteina in questione.
Per cercare di annotare la funzione di una proteina non caratterizzata sperimentalmente possiamo fare un
confronto tra diverse proteine conosciute e la proteina sconosciuta per individuare eventuali omologie nella
sequenza e quindi definire se possono avere la stessa funzione o meno. Si possono quindi verificare diversi
casi di omologia:
comune la funzione e abbiamo omologia;
ovvero una divergenza funzionale;
Alle volte risulta difficile individuare la funzione della proteina anche in presenza di omologie e altre informazioni.
Ad esempio, è stata individuata questa proteina, chiamata PROSC – DUF0001, presente in quasi tutti gli
organismi, simile all’alanina racemasi, struttura nota e che ha come cofattore il PLP (piridossal fosfato).
Nonostante questo, non è ancora stata individuata la funzione di questa proteina.
Oltre all’omologia possiamo svolgere altre analisi per individuare la funzione della proteina, per esempio
possiamo individuare un’associazione funzionale con altri geni o proteine di cui si hanno informazioni. Per fare
questo abbiamo un software per trovare le connessioni tra diverse proteine. La banca dati più utilizzata per
svolgere questo processo è String che mette in relazione la proteina data con altre proteine. Si genera uno
schema di linee dove lo spessore della linea stessa indica una maggior associazione tra le due proteine
collegate. Possiamo anche avere linee colorate che associano le proteine in base a tre evidenze principali:
Fusione/fissione genica
È possibile anche avere una fusione di geni diversi. Questo indica un’evidenza di associazione funzionale
perché possiamo aspettarci che i prodotti di questi geni si associno sia quando sono fusi (questo è proprio il
motivo del perché si sono fusi, ovvero funzionano insieme) ma anche se, magari in altri organismi, sono distanti.
È possibile anche pensare alla fissione genica, in cui geni che si trovavano fusi tra loro arrivano a dividersi.
Un esempio è la scoperta della degradazione dell’idrossilisina, proteina utile per formare i legami crociati del
collagene. È stata individuata la via degradativa di questo amminoacido osservando due geni sconosciuti per
funzione. AGXT2L2 assomiglia a geni PLP-dipendenti, ovvero geni che agiscono sugli amminoacidi, AGPHD
ha invece un dominio fosfotransferasico. L’ipotesi dei ricercatori si basava sul fatto che normalmente gli
amminoacidi con gruppo - OH vengono degradati grazie all’attacco di un gruppo fosfato e poi la trasformazione
della molecola neoformata in una semialdeide. Hanno inoltre visto che nei batteri sono presenti gli stessi geni
che però sono fusi; perciò, funzionano insieme e molto probabilmente funzionano insieme anche negli eucarioti,
dove si trovano distanti. Per dimostrare l’ipotesi hanno quindi espresso le due proteine in forma ricombinante e
hanno aggiunto come substrato l’idrossilisina. Hanno osservato che si formava la fosfoidrossilisina e che
successivamente, grazie all’eliminazione del fosfato, si aveva la produzione di semialdeide. È stata quindi
dimostrata l’ipotesi della via catalizzata da questi enzimi.
Co-occorrenza (profili filogenetici)
Ultima evidenza di associazione funzionale che prevede un’associazione filogenetica tra vari organismi.
Possiamo per esempio prendere due geni e indagare sulla loro presenza in diversi organismi. Se sono presenti
si indica 1, se no si indica 0. Si possono poi confrontare i due valori nei diversi organismi, se i due geni sono
presenti nello stesso organismo abbiamo una situazione 11, altrimenti se non sono presenti nell’organismo
abbiamo 00, in ultimo possiamo avere situazioni 10 o 01. Se troviamo la stessa situazione in organismi diversi
probabilmente abbiamo la stessa funzione nei diversi organismi. Si può quindi anche dire che i due geni in
questione si coevolvono.
Un esempio sono i geni della degradazione ossidativa delle purine. Nell’uomo viene eliminato acido urico, i
mammiferi producono allantoina (il passo successivo all’acido urico), le piante producono ammoniaca, i funghi
producono ammoniaca, i batteri si distinguono, alcuni si fermano all’acido urico e altri vanno fino all’ammoniaca.
Grazie a queste proprietà è stato possibile scoprire i due geni codificanti gli enzimi successivi all’urato ossidasi
che portano alla produzione dell’allantoina. L’ipotesi fatta prevedeva che, se avesse mancato l’urato ossidasi
probabilmente non sarebbero stati presenti nemmeno gli altri geni, perché la via si fermava prima. Quindi hanno
confrontato il profilo dell’urato ossidasi con i genomi conosciuti per vedere dove si trovava per andare ad
indagare sui due geni successivi. La corrispondenza di presenza di uno e presenza degli altri due non è perfetta,
ci sono ad esempio organismi che hanno solo 2 o addirittura solo 1 enzima.
È importante fare distinzione tra coevoluzione e eredità filogenetica. Perché dei geni possono essere presenti
negli animali ma non negli altri eucarioti, questo non vuol dire che ci sia associazione funzionale tra i geni,
magari sono stati solo ereditati perché gli individui discendono dallo stesso ramo ma non sono associati
funzionalmente, quindi la loro presenza non è dovuta al fatto che devono essere insieme per funzionare.
Prevede di partire da una funzione nota e risalire al gene che codifica per la proteina con funzione nota. Questo
processo è più semplice perché il genoma è finito, a differenza delle funzioni che possono essere molteplici. È
un processo che viene fatto soprattutto per le vie metaboliche per individuare i pathway holes, dei “buchi” nelle
vie metaboliche di cui non si hanno informazioni sul gene ma si sa la funzione o a volte si conosce anche
l’enzima.
Riassumendo
sequenza oppure sulla sequenza associata alla funzione;
o Vicinanza genica;
o Fusione genica;
o Profili filogenetici;
o La formulazione di un’ipotesi basata sulle evidenze bioinformatiche;
o La validazione sperimentale dell’ipotesi.
Queste strutture sono entrambe molto utilizzate in bioinformatica. Prevedono l’impiego di nodi e bracci disposti
in maniera differente. Nei network non abbiamo una gerarchia tra i nodi (relazioni contemporanee), mentre negli
alberi abbiamo una gerarchia tra i nodi e si ha anche un rapporto antenato-discendenti.
Network
Sono composti da nodi, rappresentati dai vertici, e bracci, rappresentati dai lati. I bracci definiscono le interazioni
tra gli oggetti. I bracci possono avere una direzione (indicata da una freccia), ma spesso sono non orientati e
rappresentano solo una relazione.
Un esempio di network è il seguente che rappresenta l’interazione tra alcune proteine. In questo caso il nodo
rappresenta una proteina e il braccio la relazione tra due proteine.
Possiamo anche avere network che rappresentano le interazioni geniche. In questo caso il nodo rappresenta i
geni non essenziali, mentre il braccio rappresenta un’interazione tra i due geni (contemporanea delezione) che
Questo indica che ci sono alcuni nodi con connettività molto bassa e alcuni nodi con connettività molto alta. I
network con gli hub vengono detti “scale-free” network in cui abbiamo nodi con elevata connettività e nodi con
connettività molto bassa. La spiegazione del motivo per cui si creano questi network assume che nel tempo si
aggiungono nodi alla rete per arricchimento evolutivo e si generano spontaneamente degli hub perché un nuovo
nodo tende ad attaccarsi preferibilmente a nodi già altamente connessi perché, se un nodo ha già tante
connessioni è più probabile che ne abbia ulteriori. I network scale-free sono resistenti alla rimozione casuale di
nodi, ma suscettibili alla rimozione dei fulcri. Questo perché, se un gene è un fulcro è molto più facile che la
delezione del fenotipo sia letale.
I network biologici si possono trovare in:
L’evoluzione è un processo sempre in atto anche se richiede tempi molto lunghi. Il principale esponente della
teoria evolutiva è C. Darwin che ipotizza che ci siano forme di vita diverse che originano da antenati comuni per
discendenza con modificazioni e ipotizza anche che la selezione naturale sia il motore dell’evoluzione. Per la
prima ipotesi abbiamo evidenze molto forti a livello molecolare (utilizzando geni che si ritrovano in diversi
organismi e che subiscono modificazioni date dall’evoluzione e permettono di suddividere gli organismi in
gruppi). Gli alberi derivanti da questo studio presentano anche connessioni orizzontali tra i gruppi di organismi
e questo indica che gli organismi non derivano solo dall’evoluzione divergente ma anche da un trasferimento
orizzontale.
Successivamente si ha avuto la sintesi moderna della teoria evolutiva. Questa non è altro che l’unione di idee e
osservazioni di diverse discipline scientifiche: genetica, genetica di popolazioni, paleontologia, biochimica,
matematica e statistica. Questa teoria spiega i fenomeni evolutivi attraverso meccanismi biologici conosciuti:
mutazioni. La deriva genetica e la selezione naturale contribuiscono alla variazione delle frequenze
alleliche;
fondamentale per l’evoluzione dei geni.
Mutazioni
Cambiamenti del DNA che interessano le generazioni successive. Sono errori che si verificano durante la
replicazione cellulare e che non vengono corretti dal meccanismo di correzione di bozza. La frequenza di
mutazione è di 1/1 miliardo di basi. Tra le mutazioni distinguiamo:
o Transizioni: cambiamenti purina/purina o pirimidina/pirimidina;
o Transversioni: cambiamenti purina/pirimidina o viceversa;
Nelle sequenze codificanti possiamo fare un’ulteriore distinzione tra:
o Sinonime: l’aa finale è lo stesso. Quindi non si ha mutazione;
o Missenso: cambia l’aa. La presenza di mutazione dipende dalla posizione dell’aa e dall’aa che
sostituisce il precedente;
o Non-senso: da aa a codone di stop. Normalmente è una mutazione inattivante;
o Con cornice di lettura mantenuta. Alle volte sono compatibili con la funzione originale della
proteina;
o Frame-shift: tipicamente inattivanti.
In caso di mutazioni inattivanti si parla di pseudogene, in quanto la traccia del gene esiste ancora ma non
funziona più.
Le mutazioni sono normalmente eventi casuali, ci sono però delle eccezioni in quanto possiamo avere bias
mutazionali in cui si ha una trasformazione della base che agisce solo in un senso. Ad esempio abbiamo la
deamminazione della citosina in uracile con conseguente riparo e ripristino della situazione originale oppure
possiamo avere la deamminazione di una citosina metilata con produzione di timina con conseguente riparo e
possibile non ripristino della situazione originale (possiamo tornare a G:C oppure avere A:T).
Esistono delle forze che possono determinare l’accettazione della mutazione. Questa può avvenire per deriva
genetica (per caso) o selezione naturale. È stato dimostrato che le mutazioni vengono spesso selezionate per
deriva genetica e queste mutazioni sono spesso neutrali. Le mutazioni neutrali (o debolmente svantaggiose)
possono essere accettate per effetto del caso. Le mutazioni vantaggiose sono favorite ma possono non essere
accettate per effetto del caso. La comparsa delle mutazioni neutrali (o svantaggiose) è molto più probabile della
comparsa delle mutazioni vantaggiose. Possiamo quindi concludere che la deriva genetica, oltre alla selezione
naturale, ha grande importanza nell’accettazione delle mutazioni. Questa teoria, detta teoria neutrale, fa delle
predizioni:
regioni “periferiche” delle proteine);
residui critici per la catalisi).
Deriva genetica: forza in grado di fissare o far scomparire una mutazione attraverso fluttuazioni casuali delle
frequenze alleliche secondo la formula:
Dove p è la probabilità di fissazione e risulta inversamente proporzionale alla dimensione della popolazione ( 2 N
in una popolazione diploide).
Selezione naturale: successo riproduttivo dipendente dal valore del genotipo. Ovvero in base al fatto che la
mutazione sia vantaggiosa o svantaggiosa. Abbiamo selezione positiva o adattamento nel caso in cui venga
mantenuta la mutazione vantaggiosa e selezione negativa nel caso in cui venga eliminata una mutazione
svantaggiosa.
Per identificare la probabilità di fissazione in base al coefficiente di selezione e alle dimensioni della popolazione
possiamo tracciare un grafico (dove N e
sono le dimensioni “effettive” della popolazione e s è il coefficiente di
selezione). Se la mutazione è neutrale p=0, se la mutazione è vantaggiosa p>0, mentre se la mutazione è
svantaggiosa p<0. La zona colorata rappresenta una regione pseudoneutrale dove le mutazioni possono essere
fissate o per deriva genetica o per selezione naturale. L’ampiezza di questa regione dipende dalla dimensione
della popolazione. Se la popolazione è grande la selezione naturale agisce maggiormente nella fissazione della
mutazione, mentre se la popolazione è piccola la deriva genetica agisce maggiormente nella fissazione della
mutazione.
ritenuta un controsenso, soprattutto prima della scoperta e caratterizzazione del DNA non codificante, ed ha
portato alla formulazione del paradosso del C-value. Sebbene non vi sia un vero e proprio paradosso, tale
locuzione rimane ancora oggi molto comune.
Mutation load e mutation rate: il mutation load (U) è il tasso di mutazioni deleterie per genoma per generazione.
Nell’uomo si stima U=2. Il mutation rate (μ) è il numero di mutazioni totali per sito per generazione. Nell’uomo si
calcola μ=1.1*
ciascuno riceve dai propri genitori circa 66 mutazioni, ma solo una piccola percentuale di queste sono deleterie.
Negli anni ’70, per spiegare il paradosso del C-value e le differenze tra mutation rate and mutation load, venne
proposto che vari genomi fossero costituiti in gran parte da DNA privo di funzione. Susumu Ohno chiamò questo
DNA “Junk DNA” dove per junk si intende “materiale accumulato che può essere riutilizzato in altri modi”.
Il junk DNA, si è probabilmente fissato/accumulato per deriva genetica poiché spesso le popolazioni eucariote
sono popolazioni piccole. Viceversa, nei batteri abbiamo grandi popolazioni, perciò, si ha selezione naturale e
non si ha la possibilità di accumulare junk DNA. Questo si verifica perché la complessità genomica si origina
passivamente per azione della deriva genetica. La complessità genomica può essere occasione di innovazioni
adattative. Tutto questo fa parte della teoria neutrale citata in precedenza.
Si parla di sequenze omologhe nel caso di sequenze relative allo stesso gene che presentano regioni simili con
poche mutazioni e che derivano da un antenato comune. Esistono due tipi di sequenze omologhe:
formano nuove specie da quelle preesistenti). Si verifica perché questi organismi derivano da un
antenato comune dal quale, molto tempo fa, si sono separati. L’omologia di due sequenze indica quindi
una parentela, più o meno recente, dei due organismi in esame. Si parte quindi da una sequenza
ancestrale che subisce un evento di separazione, ovvero la differenziazione dell’organismo di partenza
in due gruppi di organismi differenti. Queste nuove sequenze, derivanti dalla sequenza ancestrale,
subiscono mutazioni nel tempo. Le mutazioni possono avvenire su tutte le basi e possono anche
ripresentarsi su basi già mutate. Si ottengono sequenze “finali” che risultano omologhe perché i due
organismi condividono un antenato comune e sono ortologhe perché derivano dalla speciazione. Sono
sequenze simili in specie diverse e mantengono la stessa funzione;
funzioni). A partire da un gene otteniamo quindi due copie, ognuna di queste può accumulare mutazioni.
Quando si verifica questo fenomeno possiamo avere:
o Silenziamento di una copia del gene: all’organismo non servono entrambe le copie quindi una
diventa uno pseudogene;
o Mantenimento della funzione delle due copie: si produce più prodotto genico;
o Divergenza funzionale: una delle due copie diverge al punto da assumere una funzione diversa
rispetto a quella di partenza.
La duplicazione può eventualmente avvenire per retrotrasposizione. Si definiscono retrotrasposoni dei
frammenti di DNA capaci di trascriversi autonomamente in un intermedio a RNA e grazie alla transposasi
inversa diventare DNA per poi inserirsi in diverse posizioni all'interno del genoma.
Nel caso di duplicazione genica possiamo avere:
o Neo-funzionalizzazione: una copia del gene mantiene la funzione originale mentre l’altra copia
del gene assume una nuova funzione;
o Sub-funzionalizzazione: ciascuna delle copie si specializza per attuare una determinata funzione
inerente alla funzione originale. Un esempio è il gene codificante per l’emoglobina. Il gene
ancestrale codificava sia per le catene α che per le catene β mentre gli organismi attuali
presentano un gene per la catena α e uno per la catena β. La funzione è più o meno la stessa
ma si hanno sottili differenze nel funzionamento o nella modalità di espressione.
I geni paraloghi possono essere distinti in:
o Inparalogs: la duplicazione genica è successiva alla speciazione;
o Outparalogs: la duplicazione genica precede la speciazione.
Sono sequenze simili nella stessa specie dove però hanno funzioni diverse.
La duplicazione può anche interessare interi genomi. Questo è avvenuto nel caso dei lieviti dove si distinguono
specie pre e post duplicazione genomica. Nelle specie post duplicazione genomica spesso un cromosoma della
specie pre viene suddiviso in due cromosomi. In questi due cromosomi i geni mantenuti, e derivanti dal
cromosoma ancestrale, non sono gli stessi e solitamente viene mantenuta una copia del gene, o su uno o
sull’altro cromosoma (è possibile anche che venga mantenuta la copia duplicata sui vari cromosomi).
Caratteristiche identificabili nei geni omologhi sono:
Metodi per la distinzione dei tipi diversi di omologia:
(gene tree) comprendendo tutti gli omologhi e poi la si confronta con lo species tree. Nell’esempio
sottostante i geni delle due suddivisioni sono tra loro ortologhi (cerchi neri centrali), mentre i geni degli
organismi che si ripetono nelle due suddivisioni sono tra loro paraloghi (frog-frog, etc). Nell’immagine
sottostante abbiamo un esempio di gene tree dove i cerchi rappresentano speciazioni mentre i rettangoli
rappresentano duplicazioni geniche. Ne consegue che i geni dei due rami sono tra loro ortologhi mentre
i singoli geni degli organismi presenti nei due rami (quelli che presentano colore uguale) sono tra loro
paraloghi, perché sono presenti nella stessa specie ma in forme omologhe. Se due bracci di un albero
filogenetico contengono gli stessi organismi, allora abbiamo duplicazione genica. Se invece i due bracci
di un albero filogenetico non contengono gli stessi organismi allora abbiamo speciazione;
a appartenente a un genoma di una specie x nel genoma di una specie y. In questo caso il risultato è il
gene b della specie y. Questo non basta per dire che è un potenziale ortologo ma ci dice sicuramente
che è omologo. Per verificare che sia ortologo bisogna fare il processo inverso e quindi fare una ricerca
di omologia del gene b della specie y nella specie x. Se si ha corrispondenza di b con a allora i geni sono
ortologhi, se invece non si ha corrispondenza ma si verifica per esempio un’associazione di b con a’
allora probabilmente sono questi due gli ortologhi (si procede ad attuare una ricerca di omologia di a’
nella specie y ). Possiamo avere un risultato errato in caso di delezione dei paraloghi in due organismi
(ognuno dei due organismi per duplicazione produce due geni paraloghi e per delezione si ha la perdita
dei paraloghi non corrispondenti, lasciando gli altri due paraloghi che a loro volta non sono
corrispondenti), quindi il risultato potrebbe non essere un gene ortologo. Oppure la migliore hit proposta
dal programma non è realmente quella migliore.
Xenologia: omologia ottenuta per trasferimento orizzontale. Gli esiti del trasferimento orizzontale sono:
Un gene analogo è un gene che ha stessa funzione ma origine diversa.
una datazione relativa del tipo: “l’evento di separazione tra la sequenza della specie 1 e quella della specie 2 è
occorso x volte più vicino nel tempo rispetto all’evento evolutivo che le ha separate dalla specie 3″. E se dal dato
relativo vogliamo passare a quello assoluto, cioè se vogliamo sapere effettivamente quanto tempo è passato
dalla separazione? A questo punto è necessario calibrare l’orologio molecolare. Si deve, cioè, possedere almeno
un dato assoluto, il quale può essere ottenuto per esempio tramite la datazione dei reperti fossili. Esistono vari
modi di farlo, ma per non complicare troppo le cose possiamo continuare l’esempio precedente: abbiamo detto
che le sequenze di S1 e S2 differiscono per circa il 10% rispetto alla specie di riferimento S3. Se la datazione
dei fossili ci dice che il progenitore comune di 1 e 2 si è separato da S3 circa 20 milioni di anni fa, allora il tasso
di sostituzione (la velocità dell’orologio) per questa sequenza sarà: 10%/20’000’000. Possiamo così concludere
che ogni 2 milioni di anni si accumula l’1% di differenze. Ora si può ricavare il tempo passato dalla divergenza
tra la specie 1 e la specie 2: siccome le loro sequenze differiscono di circa il 5%, il tempo passato dalla loro
divergenza sarà 5 * 2’000’000 = 10 milioni di anni.
Oggi sappiamo che gli orologi molecolari neutrali non “ticchettano” sempre in modo regolare e costante, e le
velocità di evoluzione possono variare in modo significativo in organismi di specie diverse. Come se non
bastasse, anche all’interno della stessa specie, sequenze diverse possono seguire orologi molecolari diversi.
Per ciascuna specie il fattore più importante è certamente il tempo che passa tra la nascita di una generazione
e l’altra. L’idea stessa di orologio molecolare neutrale costante, infatti, va a braccetto con lo studio dei
meccanismi molecolari alla base delle mutazioni delle linee germinali (spermatozoi e cellule uovo). La gran parte
delle mutazioni che compaiono nel genoma di una specie è dovuta agli errori fatti dal meccanismo replicativo
del DNA durante la produzione delle linee germinali. Per questo motivo, le mutazioni tendono ad accumularsi in
proporzione non tanto al tempo assoluto passato a partire da un dato evento evolutivo, ma in proporzione al
numero di generazioni che si sono succedute nel tempo. Così, se compariamo il numero di sostituzioni
accumulatesi nel topo e nell’uomo nel corso dell’ultimo milione di anni scopriamo che la specie che si riproduce
più lentamente, cioè l’uomo, ha accumulato un minor numero di sostituzioni. Di conseguenza, possiamo dire
che l’orologio molecolare ticchetta più lentamente nelle specie con un tempo di generazione più lungo. In questo
caso si parla di effetto del tempo di generazione. Questo effetto è stato osservato nei primati ancor prima che
cominciasse il dibattito sugli orologi molecolari. Già nel 1961, Morris Goodman aveva osservato come nelle
scimmie antropomorfe, e in particolare nell’essere umano, le proteine sono mutate molto più lentamente che
nelle scimmie non antropomorfe del vecchio mondo (che si riproducono più in fretta). Questo effetto si chiama
rallentamento della velocità hominoide, e dipende proprio dal fatto che gli hominoidi hanno un tempo di
generazione molto più lungo. Questa ipotesi fu dimostrata sperimentalmente nel 1985 da Wu e Li. Essi
scoprirono che nei siti neutri le sequenze geniche dei roditori si sono trasformate con una velocità di evoluzione
doppia rispetto a quanto avvenuto nei primati. Invece non era così per le mutazioni non sinonime e che non
compaiono in siti neutri, cioè quelle che comportano una modifica nella funzione delle proteine e che sono visibili
alla selezione naturale. In altre parole, Wu e Li hanno dimostrato che, in accordo con l’ipotesi dell’effetto del
tempo di generazione e con la teoria dell’evoluzione molecolare neutrale, l’orologio molecolare delle mutazioni
neutre scorre più velocemente nei roditori, mentre quello delle mutazioni adattative no.
Un ulteriore problema nasce dal fatto che le differenze nelle velocità di scorrimento degli orologi molecolari
neutrali non sono comparabili tra di loro a livello assoluto. Per esempio: i primati hanno un tempo di generazione
molto più lento rispetto ai roditori, mentre quello degli esseri umani è solo appena più lento rispetto a quello delle
altre scimmie antropomorfe. Così l’orologio molecolare dei primati dovrebbe essere parecchio più lento di quello
dei roditori, mentre l’orologio molecolare degli esseri umani dovrebbe essere solo un poco più lento di quello
delle scimmie antropomorfe. E invece le differenze sono simili. Se si vuole una stima quantitativa, quindi, bisogna
tenere a mente che la velocità di scorrimento dei diversi orologi molecolari varia significativamente in base al
tipo di sequenza scelta e ai metodi statistici utilizzati.
Infine, pare che il tempo di generazione non sia l’unico parametro che determina le velocità di scorrimento degli
orologi molecolari neutrali. Ce ne sono altri che hanno a che fare con altre caratteristiche biologiche degli
organismi come, ad esempio, le dimensioni del corpo, il tempo di generazione, il metabolismo, etc. Potrebbe
anche essere che l’importanza in determinati processi della proteina in esame potrebbe ridurre la sua
percentuale di mutazione in quanto la produzione di altre forme non sarebbe compatibile con l’attività della
stessa.
Abbiamo anche molte proteine che non si comportano come orologi molecolari.
In conclusione, l’assunzione iniziale secondo cui esisterebbe un singolo orologio molecolare per ciascuna specie
non è più sostenibile, poiché si è scoperto che le forze mutazionali in ballo sono diverse a seconda
dell’organismo e della regione del genoma che si prendono in considerazione. L’effetto del tempo di generazione
è ancora valido dal punto di vista qualitativo, ma non riesce a spiegare le differenze quantitative che esistono
tra i tassi di mutazione neutrale di specie diverse. Altre caratteristiche biologiche che non dipendono dalla
replicazione, come la metilazione del DNA, giocano un ruolo importante nel regolare gli orologi molecolari, tanto
che si può dire ormai che diversi orologi molecolari agiscono anche all’interno dello stesso genoma, perché le
spinte mutazionali in ballo variano a seconda della regione di DNA presa in considerazione.
Prendiamo in considerazione solo alcune delle cause che possono portare alle deviazioni dall’orologio
molecolare:
influiscono sulla velocità di mutazione;
delle mutazioni;
Variazioni ambientali possono avere significato differente per i diversi organismi;
variazioni nella velocità di mutazione. Si va a guardare il tipo e la sede delle mutazioni e la velocità di
accumulo delle mutazioni.
Ogni organismo vivente è depositario di un pool genetico, sul quale l'ambiente esercita una pressione selettiva,
tale pressione opera come un setaccio, gli organismi depositari di un pool genetico meglio adatto all'ambiente
si riprodurranno maggiormente, mentre quelli con un pool poco adatto all'ambiente si riprodurranno meno, ciò
darà origine alla riproduzione differenziale degli organismi di una popolazione, sarà quindi l'ambiente a
promuovere la maggior riproduzione e quindi l'espansione demografica di taluni individui o la minor riproduzione
e quindi la contrazione di altri.
La pressione selettiva secondo la quale una proteina tende o meno a mutare è determinata da:
In un genoma si stima che siano possibili 549 mutazioni, 392 sono non sinonime, mentre 134 sono sinonime.
Test K a
s
: test per stimare l’equilibrio tra mutazioni neutre, purificatrici o positive che agiscono su una serie di
geni omologhi. Si calcola come il rapporto tra il numero di sostituzioni non sinonime sul totale dei siti non sinonimi
a
), in un determinato periodo di tempo, e il numero di sostituzioni sinonime sul totale dei siti sinonimi (K s
), nello
stesso periodo. Si presume che le sostituzioni sinonime siano neutre, in modo che il rapporto indichi il saldo
netto tra mutazioni purificatrici e positive. Se Ka/Ks<1 la selezione è purificatrice, se Ka/Ks è circa 1 la mutazione
è neutra, se K a
s
1 si ha selezione positiva.
Quando si confrontano due sequenze o strutture si usano spesso indifferentemente i termini somiglianza e
omologia per indicare che esiste un rapporto di vicinanza tra gli oggetti del confronto. Tuttavia, i due termini si
riferiscono ad aspetti diversi del confronto.
Omologia: proprietà qualitativa del confronto. Ci dice se due oggetti sono imparentati o meno.
Somiglianza: proprietà quantitativa del confronto. Si esprime con una percentuale.
Dot plots: metodo grafico di confronto di sequenze utilizzato prima degli algoritmi di allineamento. Si disegna un
quadrato che presenta nella riga superiore una sequenza e nella colonna di sinistra la sequenza da allineare
alla prima. Successivamente si inserisce un pallino (dot) ogni volta che si incontrano due lettere uguali tra righe
matrice PAM 1, l’unica ottenuta dal confronto tra proteine, rende ragione di proteine di similarità di circa
dell’80-85%, che corrispondono a un numero di mutazioni medio dell’1%. Moltiplicando questa matrice
per sé stessa n volte si possono ottenere PAM 100 o PAM 250 che corrispondono a 100 o 250 eventi di
mutazione accumulati durante l’evoluzione.
È stata creata anche un’altra matrice chiamata Blosum che rimuove il fatto che le matrici PAM sono
derivanti da un calcolo matematico per quanto riguarda proteine molto distanti filogeneticamente. Questo
perché derivano da allineamenti di proteine anche molto distanti. La matrice Blosum sfrutta sequenze
contenute nella banca dati Blocks in cui sono riportati allineamenti locali di sequenze con livelli di
similarità, e quindi distanze evolutive, differenti. Vengono scelti quindi blocchi di sequenze diverse per
definire matrici di sostituzione diverse. Viene considerata una banca dati con allineamenti di sequenze
con diversa distanza evolutiva e che quindi coprono un range di livelli di similarità molto ampio e a partire
da questi si cerca di creare dei sottogruppi di sequenze fissando determinati livelli di similarità, ad
esempio si prendono tutte le sequenze con similarità inferiore al 60%. Con quel gruppo di sequenze
viene costruita una matrice, vengono quantificate le mutabilità relative e vengono costruiti i rapporti in
scala logaritmica. Quindi ad esempio BLOSUM 62 è stata costruita su sequenze che avevano al
massimo il 62% di similarità. In questo caso tutte le sequenze con similarità superiore al 62% presenti
nella banca dati sono state fuse in un’unica sequenza che avrà quindi un peso marginale rispetto a tutte
le sequenze con similarità inferiore a quella fissata. Questa matrice è quindi utile per dare un punteggio
agli allineamenti tra sequenze in cui ci si aspetta una similarità massima del 62%. Nel caso di BLOSUM
la numerazione è opposta rispetto a PAM perché PAM 1 è una matrice costruita su un 85% di similarità
e all’aumentare del numero della PAM ci aspettano livelli di similarità più bassi mentre il numero di
BLOSUM rappresenta il livello massimo di similarità atteso.
Score di allineamento: i valori nelle matrici di sostituzione determinano il punteggio di un allineamento. La
strategia più diretta per ottenere il miglior allineamento è quella di osservare tutti i possibili allineamenti e
assegnare a ciascuno un punteggio. Si trovano poi quelli con punteggio massimo che saranno gli allineamenti
migliori. Per decretare il punteggio distinguiamo:
un’inserzione nella prima.
Quando si confrontano due stringhe è importante ricordare che due spazi non possono mai essere allineati.
Per la semplice sostituzione si va a guardare il valore nella matrice corrispondente allo scambio tra i due aa o
nucleotidi. Il valore dei gaps invece è arbitrario, e viene deciso da chi compie l’allineamento. Deve comunque
essere un numero proporzionato ai numeri in matrice. La scelta della penalità risponde alla domanda: qual è il
guadagno di punteggio necessario per poter inserire un gap? ovvero, quale è il punteggio che mi rende
vantaggioso inserire un gap piuttosto che una sostituzione?
La penalità per i gap è distinta in due termini:
confronto della rimozione di una singola posizione sia più probabile la rimozione di un frammento, per
questo la presenza di più spazi viene penalizzata di meno e perché regioni diverse delle sequenze
biologiche hanno tolleranza diversa alle inserzioni/delezioni.
La formula generale dello score di un allineamento è data da:
𝑠𝑐𝑜𝑟𝑒 = ∑ 𝑠𝑜𝑚𝑖𝑔𝑙𝑖𝑎𝑛𝑧𝑒 − (∑ 𝑝𝑒𝑛𝑎𝑙𝑖𝑡à 𝑔𝑎𝑝 𝑑𝑖 𝑎𝑝𝑒𝑟𝑡𝑢𝑟𝑎 + ∑ 𝑝𝑒𝑛𝑎𝑙𝑖𝑡à 𝑔𝑎𝑝 𝑑𝑖 𝑒𝑠𝑡𝑒𝑛𝑠𝑖𝑜𝑛𝑒)
Alla fine, si sceglie il valore massimo possibile.
Algoritmo: una completa e non ambigua procedura per risolvere un problema in un definito numero di passi. Un
algoritmo non lascia nulla di indefinito e non richiede intuizioni per raggiungere lo scopo. Grazie a questa
procedura è possibile arrivare a calcolare l’allineamento migliore tra due sequenze senza commettere errori dati
dal caso. Le fasi per la soluzione di un problema computazionale sono:
La ricerca combinatoriale dell’allineamento ottimale non è un algoritmo efficiente. I programmi di allineamento
non esplorano tutte le combinazioni possibili per trovare la sovrapposizione ottimale, questo perché il numero
di combinazioni possibili per sequenze di lunghezza n e m è proporzionale a 2
n*m
. Questa soluzione avrebbe
tempi di calcolo elevatissimi anche per sequenze di lunghezza modesta. Per la ricerca dell’allineamento ottimale
si usano algoritmi di programmazione dinamica. L’idea di questo approccio è che un problema complesso si può
risolvere in modo efficace sottopartizionandolo in tanti piccoli sottoproblemi la cui soluzione è plausibilmente più
facile da raggiungere di quanto non sia quella del problema globale. La programmazione dinamica è basata sul
principio di ottimalità secondo cui la soluzione ottimale è composta dalla combinazione di soluzioni parziali
ottimali. Tra gli algoritmi che sfruttano la programmazione dinamica troviamo:
l’allineamento ottimo tra sequenze di acidi nucleici o amminoacidi consentendo l’introduzione dei gap.
L’algoritmo è in grado di identificare subito solo uno o una serie di allineamenti ottimi e scarta, man mano
che procede, tutti gli allineamenti che otterrebbero un punteggio minore rispetto al migliore ottenibile.
Per risolvere quindi l’allineamento si parte dal dot plot e si crea il percorso che rappresenta la distanza
di editing e che corrisponde al costo di tutte le operazioni di editing. Bisogna quindi cercare di percorre
il percorso migliore per arrivare nell’ultima cella in basso a destra, ovvero quel percorso che porta ad
avere un punteggio alto e che rappresenta l’allineamento ottimale. Se tutti i punteggi intermedi sono
ottimi allora il punteggio finale è ottimo (programmazione dinamica). Per ottenere i punteggi intermedi
bisogna considerare un match, un mismatch o un gap tenendo conto di quello fatto in precedenza.
Usiamo, per semplicità di spiegazione, uno schema di punteggio semplice che si basa solo su lettere
uguali e diverse tralasciando il discorso chimico-fisico dove segnamo +1 quando abbiamo un match, - 1
quando abbiamo un mismatch e - 2 quando abbiamo un gap. Il prefisso usato per creare una tabella di
allineamento è dato da due stringhe nulle, in questo modo non ci poniamo il
problema di partire con due lettere oppure con lettera-spazio o spazio-lettera.
La griglia che otteniamo sarà quindi così →
Dove ogni cella contiene il punteggio dell’allineamento ottimale tra i prefissi di
s da 1 a i e i prefissi di t da 1 a j. L’allineamento tra due stringhe vuote
corrisponde a 0 e considerando che tutti i punteggi sono additivi la prima riga
e la prima colonna verranno riempite con i punteggi pari a quelli di allineamento
tra una stringa e gli spazi (stringa nulla) ma in maniera cumulativa in quanto il
punteggio successivo è dato dal punteggio pregresso sommato al punteggio
nuovo. Otteniamo quindi - 2 per la casella D 0,
, - 4 per la casella D 0,
e - 6 per la
casella D 0,
Per riempire la colonna j=0 faccio uguale quindi avrò - 2, - 4, - 6 e - 8. Per tutte
le caselle successive avremo 3 opzioni, o confrontiamo due lettere (+1 o - 1) o
confrontiamo il gap in una e la lettera nell’altra (-2) o la lettera in una e il gap
nell’altra (-2).
Quando ci si muove lungo la diagonale si mette il punteggio di match o di
mismatch, mentre quando ci si muove lungo la verticale o l’orizzontale si mette
il punteggio del gap.
Vediamo l’esempio di D 3,
o Parto quindi da D 2,
a cui aggiungo +1 perché ho un match tra A e A,
quindi - 4+1=-3;
o Vado poi con D 2,
a cui aggiungo - 2 perché è come se avessi un gap, quindi - 1 - 2=-3;
o Infine, vado con D 3,
a cui aggiungo - 2 perché è come se avessi un gap, quindi - 6 - 2=-8.
In questo caso ho due risultati uguali e quindi li prendo entrambi perché sono entrambi ottimali. Ogni
volta che si calcola un punteggio bisogna segnalare con le frecce da quale casella lo si è ottenuto per
poter tenere traccia delle operazioni di editing. Il valore della cella n,m è dato da una serie di passaggi
precedenti in cui si è compiuta l’operazione di editing migliore, seguendo all’indietro le operazioni fatte
Significatività di un allineamento: aspetto molto importante nella ricerca di omologia. Per spiegare una
somiglianza tra sequenze si può ricorrere all’omologia o al caso. Dal momento che non possiamo determinare
direttamente le probabilità di omologia, per determinare la significatività si determina la probabilità casuale e poi
si calcola la probabilità di omologia grazie alla seguente formula:
Se la probabilità casuale è molto bassa possiamo dire che è più probabile che si abbia somiglianza per omologia
e viceversa. Quindi se le probabilità casuali di un punteggio di un allineamento sono molto basse (<
l’allineamento è significativo. Ne consegue che si accetta l’ipotesi contraria, ovvero l’omologia. Per determinare
le probabilità casuali di un allineamento bisogna ricorrere a simulazioni in cui, rispetto all’allineamento reale,
vengono generate sequenze randomizzate e vengono allineate tra di loro. Si segna il punteggio di questo nuovo
allineamento e si ripete per un numero n di volte. Si confronta poi lo score di allineamento tra le due sequenze
reali con la distribuzione ottenuta dagli score casuali. Se lo score di allineamento non si ottiene facilmente
rispetto alla distribuzione casuale si può dire che quel punteggio è significativo e probabilmente si ha omologia.
La distribuzione dei punteggi casuali segue una curva detta dei “valori estremi” (EVD, Extreme Value
Distribution) che è asimmetrica verso i valori più alti. È normale che si verifichi questo “spostamento” verso valori
più alti perché durante l’allineamento vengono scelti gli score maggiori per ogni sovrapposizione casuale. Il
calcolo della significatività secondo la EVD segue questa formula (da sapere per l’esame):
−𝜆𝑆
Dove E è il numero di segmenti attesi con un punteggio maggiore di un dato score S, n e m sono le lunghezze
delle due sequenze e K e λ sono parametri stimati con fitting da allineamenti di sequenze casuali per una
determinata matrice di somiglianza e penalità di gap. Questa statistica è pienamente valida solo per gli
allineamenti locali. Questa formula descrive come il numero di segmenti casuali attesi cala all’aumentare dello
score di allineamento S. Questo perché maggiore è il punteggio e minore è la probabilità che si abbia un
punteggio molto alto per caso. E e la probabilità sono messi in relazione da:
−𝐸
Se E è grande P → 1, se E è piccolo (E<0.01) P → E.
Se l’allineamento è molto corto è possibile non avere come significativi allineamenti con identità (percentuale di
similarità tra due sequenze) elevata, all’aumentare della lunghezza serve sempre meno identità percentuale per
avere significatività. Al di sotto del 20% di identità diventa difficile la distinzione tra somiglianze casuali e
somiglianze per omologia.
È possibile, nel caso in cui si riscontri un’identità al di sotto del 20%, confrontare direttamente le strutture delle
proteine in esame. Questo perché le strutture proteiche sono conservate, a differenza delle sequenze. Per
esempio, l’ubiquitina e SUMO hanno un’identità del 16%, perciò risulterebbero non omologhe, a livello strutturale
sono invece molto simili e, confrontando la struttura, si può stabilire l’omologia. Una struttura molto simile però
non determina sempre la stessa funzione nelle due proteine. Se due sequenze hanno solamente una
somiglianza di struttura è molto più probabile che le sequenze presentano differenze funzionali. Ad esempio,
l’HIU idrolasi e la transtiretina hanno struttura simile ma sono rispettivamente un enzima e un trasportatore.
Esiste anche il caso di proteine che hanno stessa funzione ma strutture diverse, si parla di convergenza
funzionale. Ad esempio, l’allantoinasi e l’allantoinasi DAL1, due enzimi che convertono l’S-allantonina in
allantoato. Questi enzimi presentano struttura diversa e meccanismo di funzionamento diverso, ma possiedono
la stessa funzione. Ciò indica che derivano sicuramente da percorsi evolutivi diversi ma che si sono sviluppate
per svolgere la stessa funzione nonostante non siano correlate.
Implicazioni della somiglianza:
inesistente;
rara ma non impossibile;
funzioni è piuttosto frequente.
Implicazioni dell’omologia:
diverse possono essere considerate non omologhe;
non hanno allineamenti significativi possono essere omologhe;
omologhe possono avere funzioni differenti. Più comune tra i paraloghi che tra gli ortologhi.
La raccolta di dati biologici inizia negli anni ’60 in formato cartaceo con la collezione di proteine (NBRF) di
Margaret Dayhoff. Si prosegue poi nel 1977 con un floppy disk chiamato PDB Strutture di macromolecole, nel
1980 - 82 abbiamo CD-rom EMBL acidi nucleici e GenBank acidi nucleici, nel 1991 abbiamo l’introduzione di
internet con EST, Genomi (1996) e Trascrittomi (1998). Ad oggi il supporto utilizzato è un server centrale sul
web che può essere interrogato o anche scaricato.
È stato possibile ampliare enormemente le banche dati per l’avanzamento tecnologico ma anche perché si ha
avuto una diminuzione esponenziale dei costi di sequenziamento.
Banca dati: archivio computerizzato usato per immagazzinare e organizzare i dati in maniera tale che le
informazioni possano essere ricercate in maniera efficace attraverso un criterio di ricerca. È costituita da
software (insieme dei dati) e hardware (componenti fisiche che contengono i dati). Molte banche dati hanno
iniziato ad usare strumenti alternativi agli hardware come i cloud. L’obiettivo della banca dati è organizzare i dati
in una serie di strutture per permetterne il facile recupero. Ogni oggetto all’interno di una banca dati è chiamato
entry e presenta una serie di fields (campi) che contengono le sue caratteristiche descrittive. A livello biologico
una entry è una sequenza e i fields sono tutte le informazioni o le caratteristiche associate alla sequenza. La
ricerca di informazioni all’interno di un database si chiama retrieval of information e si basa su un value (valore)
che ci aspettiamo essere contenuto nel field di qualche entry del database. Tutto il processo di ricerca di
informazioni va sotto il nome di making a query. Le banche dati devono anche essere mantenute, perciò si
portano dietro strumenti che permettono di inserire nuovi record, nuove entry, rimuovere entry non corrette e
aggiornare i valori contenuti all’interno. Estrarre informazioni dalle banche dati è un meccanismo molto più
difficile come output da parte della banca dati stessa e prende il nome di knowledge discovery.
Data bank: collezione di dati.
Database: collezione di dati + software per accedervi.
Strutture delle banche dati
Il principale metodo di organizzazione è creare lunghi elenchi di dati separati l’uno dall’altro da delimitatori che
definiscono le diverse entry e i singoli campi appartenenti ad ogni entry. Questo metodo di organizzazione
prende il nome di flat file ed è il formato più utilizzato per contenere dati biologici. Le singole entry sono separate
le une dalle altre tramite caratteri speciali (es. | ) mentre i fields sono separati da tabulazione (tasto tab), virgole
o altri segni grafici. Spiegando ad un computer dove inizia e finisce ogni entry e inserendo una finestra di ricerca
in cui poter inserire nomi, stati o acronimi è in grado di interrogare questa banca dati. È chiaro che l’informazione
da ricercare deve essere tra quelle contenute all’interno della banca dati. Il file contiene esclusivamente le
informazioni, non c’è alcuna istruzione su come il computer debba cercare le diverse informazioni; perciò, il
computer scorre tutte le informazioni, passando da entry ad entry, finché non trova uno o più match con la parola
utilizzata per fare la ricerca. È come un'unica tabella contenente i dati.
L’efficienza di questo tipo di ricerca dipende dal numero di informazioni da immagazzinare perché, quando la
dimensione o la complessità aumenta diventa molto difficile sia organizzare le informazioni che consultare la
banca dati o farla analizzare da un computer. Ad oggi questo tipo di file non viene più utilizzato in quanto esistono
sistemi più sofisticati detti database management system in cui la banca dati è quasi tutt’uno con il sistema di
ricerca e in cui i dati contengono anche le istruzioni operative per fare tutte le connessioni con altri dati. A
seconda della struttura di questi database si distinguono:
da più colonne (fields) e da più righe (rappresenta un valore di quel field). Le tabelle presentano una
caratteristica comune detta attributo che permette di cross-relazionare le tabelle tra di loro. Ogni tabella
ha una caratteristica comune ad un'altra tabella. Il sistema di ricerca è in grado quindi di leggere una