Sei sulla pagina 1di 17

RETI NEURALI

Le reti neurali sono uno strumento nel quale


non è immediatamente evidente l’operazione
che si sta compiendo.

Il neurone è una singola cellula che butta fuori


un impulso (inputoutput). Esso è formato da
un assone che collega il corpo cellulare (soma)
da cui si diramano i dendriti, ai bottoni sinaptici
che prendono contatto con i dendriti di altri
neuroni e attraverso cui esce l’output.

L’input prende tanti ingressi diversi l’uno


dall’altro, perché ognuno di essi è un recettore
di un segnale che può essere on/off che può essere più o meno vicino al corpo cellulare e quindi avere
un’influenza diversa. Nel corpo, dunque, si ha l’integrazione di tutti i segnali di input la cui somma porta ad
una decisione unica (risultato/output).

La caratteristica dei neuroni è che non lavorano da soli


ma in reti costituite da elementi uguali l’uno dall’altro
che però mi dà un’enorme variabilità un corpo di un
neurone è in connessione con altri neuroni.

Il neurone somma i potenziali di ingresso e fires se la


somma è al di sopra di una certa soglia. Alcuni segnali
favorisco, altri sfavoriscono il raggiungimento della
soglia. Somma i valori di ingresso per confrontarli con un livello di attivazione e usa una funzione che rende
compatibili i vari risultati con la soglia (porto i risultati in un range nel quale la soglia ha senso).

La parte di ingresso sono gli stimoli che arrivano (altri neuroni o mondo esterno). Questi segnali vengono
portati attraverso un filtro, che è il peso da dare a ciascun segnale ciascun segnale contribuirà a
determinare l’effetto sul neurone moltiplicando ciascun segnale per il proprio peso; la somma delle diverse
moltiplicazioni mi darà il risultato.

All’interno di una rete neurale, il neurone è un numero perché se è acceso è 1, se è spento è 0, oppure ha
un valore intermedio il neurone è il numero che caccia fuori. Il neurone è un filtro attraverso cui un certo
numeri di valori produce un output e quindi un numero, dunque il neurone è una funzione.

I neuroni non lavorano da soli, ma in reti neurali. Un layer di neuroni è un


array in cui ognuno di essi ha un suo output e ciascuno è collegato a tutti
i valori di ingresso. Se ho 3 ingressi: ciascuno si collega con tutti e 3 i
neuroni.

Ovviamente non tutti i segnali hanno lo stesso peso sui 3 neuroni


differenti lo stesso neurone avrà peso diverso su neurone diverso e il
neurone accoglierà tutti gli input ma ciascuno con peso differente. La
rete neurale non è altro che la lista dei pesi. Tutto il lavoro di risolvere la
rete e farla funzionare è trovare i coefficienti di peso, perché essi sono il
nostro modello.
Di layer non ne abbiamo uno solo. I layer successivi sono connessi tra loro
nello stesso modo, cioè qualunque neurone del primo layer rappresenta uno
dei segnali di ingresso per il secondo layer.

Dunque, non ho bisogno di costruire programmi diversi per ciascuna rete


neurale. Le reti neurali sono tutte uguali tra loro e costituite da neuroni: ogni
neurone sta in un layer e vengono utilizzati per calcolare quelli del secondo
layer.

Vantaggio: non devo scrivere programmi diversi perché lo stesso programma è in grado di elaborare layer
diversi tra loro.

Nelle reti neurale non c’è lo stesso numero di neuroni per layer.

 Layer di ingresso lo vediamo perché prende i dati;


 layer intermedio è hidden perché non lo vediamo;
 layer di output lo vediamo perché produce un risultato,
dipende dal tipo di output che ci si aspetta.
Possiamo costruire una rete con più layer hidden. Tanto più è
complessa, tanto più la rete è in grado di incamerare
informazione rappresentandola sotto forma di coefficienti.
Perché serve la complessità? Perché il nostro dato è
complesso.

VIDEO

C’è un layer di ingresso costituito da numerosi neuroni (784), ciascuno dei quali rappresenta un numero o
meglio una funzione che accetta l’output di tutti i neuroni del livello precedente e sputa un numero
compreso tra 0 e 1, mentre il layer di uscita è costituito da 10 neuroni ciascuno dei quali rappresenta una
delle cifre che ci intereassa (da 0 a 9); l’attivazione di ciascun neurone è un numero compreso tra 0 e 1 (1 il
neurone si attiva, è la cifra che ci interessa). Tra il primo layer e l’ultimo, ci sono una serie di layer (due)
intermedi “hidden” con 16 neuroni ciascuno. Il modo in cui la rete gestisce le attivazioni in un livello
determina le attivazioni del livello successivo.

Nel layer di output, ogni neurone è un numero, ciò che ci aspettiamo è che il neurone che ha numero 9 dà
punteggio 1 e quindi si illumini.

In realtà l’intera rete è una funzione che accetta 784 numeri come input e sputa 10 numeri come output,
che coinvolge 13000 parametri sottoforma di pesi e soglie.

Ogni dato di ingresso è un pattern che noi cerchiamo. Stiamo cercando identificare non più di 16 pattern
differenti che sono i più rilevanti.

Tutti questi meccanismi sono basati sul fatto che la rete deve
essere inizializzata. Il training è il percorso che dall’input mi dà
l’output.

Si utilizza un meccanismo di training per esempi. Se ho un sistema


di training quindi in grado di calcolare i parametri in maniera da
far si che la maggior parte delle situazioni di ingresso producono
in uscita quello che mi aspetto, allora si dice che il sistema ha
fatto il training della rete la rete ha imparato a funzionare.
Considerando che gli ingressi e le connessioni sono molte, questo
processo non è immediato ma richiede spesso degli error per cui
vengono progressivamente aggiustati i diversi parametri.

Metodo di error backpropagation


Se parto da un certo set di dati, quando faccio
passare il primo set di dati, la rete quasi sicuramente
sbaglia perché non è stata training e quindi mi da un
risultato. Il confronto di questo risultato con il valore
atteso, mi dà un errore. La propagazione all’indietro
di questo errore, quindi andando a valutare gli errori
a monte, correggo i parametri in modo da ottenere
un risultato corretto. Un po’ alla volta, quindi,
modifico i parametri e quindi i pesi, in modo da
ottenere il risultato atteso. Invece di andare randomicamente, faccio una progettazione,
ovvero aggiorno i coefficienti partendo da alcuni dati e uno dei dati è “di quanto dobbiamo
variare per poter avere questo risultato?”. Questa procedura si chiama error
backpropagation.

VIDEO “how the network lears”

X=784 numeri. Se ho una funzione con 2 variabili, non ho più una


funzione piana ma tridimensionale. Così come può dipendere da 2 valori,
può dipendere da 784 valori, quindi, è una funzione molto complicata;
questi numeri sono combinati tra loro da 13000 pesi per ottenere il
risultato che sono 10 numeri: il risultato è la probabilità che mi da 1 +
quella che mi da 2 + quella che mi da 3; quindi, da questa equazione
possiamo dire che i 10 numeri di uscita sono funzione di 784 e questa
funzione include 13000 parametri. Per ottenere l’errore totale devo
prendere in ingresso tutti i valori iniziali sottrarli rispetto ad una retta e
otterrò i miei scarti sulla base di questo posso arrivare a minimizzare
questo valore e quindi quei valori che mi daranno l’errore saranno quelli
giusti. Quindi andiamo con 3 stadi:

1. ho una funzione che ha certi parametri (funzione diretta); la funzione al contrario ci dice che se ho
tanti dati che so che devono darmi quella funzione, il mio obiettivo è calcolare tutti i parametri, ma
per calcolarli passo attraverso uno
2. stadio intermedio nel quale calcolo lo scarto tra parametri presi più o meno a caso ma ragionevoli e
i valori di ingresso, ottenendo l’errore partendo dal training set (dati di ingresso), posso
ipotizzare dei parametri che corrispondono all’errore, che è anch’esso una funzione perché è in
funzione dei parametri di ingresso e del training set e questo mi darà un errore. Questa funzione
errore può essere minimizzata, cioè portata a zero. Quando l’avrò portata a 0, avrò trovato quel set
di parametri che sono quelli ottimali per far funzionare la rete;
3. posso quindi arrivare ad un terzo livello.

ho una funzione che governa il tutto. Assumo che tutto ciò che non è preciso, è dovuto ad un errore,
perché non esiste una retta su cui ci sono tutti. Quindi posso chiedermi, se do dei valori casuali ad a e b,
otterrò una retta; se do una coppia di valori (0 e 1) ovviamente mi daranno un errore perché posso mettere
questi valori in y=ax+b e saprò che prendendo una prima x, mi determina una y? Sperimentalmente sì.
Questa coppia di valori x,y se la metto nella funzione usando come a e b 0 e 1, io so che questo mi porterà
ad un punto che si troverà da qualche parte, ma quanto è diverso dalla x sperimentale? Il mio training set è
costituito da 70 situazioni sperimentali che corrispondono a 70 grafici e ciascuno di questi mi dà un y atteso
e mi dà un y calcolato se metto a caso dei parametri. Se scopro che mi dà un errore, posso modificare le
combinazioni per migliorare l’errore.

Se metto dei parametri casuali, ottengo un errore. Come faccio a misurarlo? Il modo più semplice è tirare
fuori i 13000 parametri e vedere quanto distano da quelli giusti.

Per cercare di ridurre l’errore, non vado a tentativi, ma cerco di orientare questi tentativi dove mi trovo
in questo momento? Se cambio di poco i miei parametri, miglioro o peggioro? Se miglioro, sto andando
nella direzione giusta continuo a scendere lungo quella direzione. È un modo per arrivare lentamente
verso il risultato. Il mio errore va progressivamente diminuendo, ci sarà un minimo e poi risale. Sarebbe
desiderabile fermarsi nel momento in cui il costo cioè l’errore è pari a 0.

Invece di parlare di una funzione che è una linea su un piano, stiamo parlando di una funzione che è una
superficie in uno spazio. Anche in questo caso, scende nella concavità della superficie curva per cercare il
punto più basso, cioè di minimo.

Applicazioni reali

C’è un numero molto grande di casi. Abbiamo


iniziato questa serie di lezioni cercando famiglie
di proteine, quindi rappresentazioni di segnali
non chiari. Come faccio a distinguere un maschio
da una femmina guardando la faccia? Non è
immediatamente chiaro, ma ci riusciamo; oppure
distinguere un’alpha elica da beta shift. Se uso
una matrice di peso per riconoscere una TATA
box oppure una famiglia di proteine, funziona in
molti casi, ma non al 100% e soprattutto ci sono
molti casi dubbi nei quali non è facile distinguere
e prendere una decisione. Se è difficile per noi,
figurati insegnarlo ad una macchina. In questi
casi, questi strumenti che sono proprio in grado di riconoscere segnali deboli, ci tornano molto utili. Quindi,
le reti neurali vengono spesso utilizzate per risolvere questo tipo di problema, quando la soluzione non è
ben chiara, né tantomeno il procedimento per arrivarci. Esempio: coding region recognition and gene
identification; ho una regione con 100kb, come faccio a riconoscere la famiglia di proteine a cui appartiene?
Se voglio trovare un gene per la globina, prendo una sequenza con la quale faccio BLAST. In questo caso ho
identificato un gene, che operazione ho fatto? Ho cercato una sequenza che somiglia o è identica ad una
sequenza che ho già. Ma il fatto che esso sia un gene sta scritto altrove è vero che posso trovare tutti i
geni del mondo, ma tutti i geni che qualcuno mi ha detto essere geni. Ma se ho un genoma nuovo, appena
sequenziato, mica so quali sono i geni mi seve trovare qualcosa che abbiano in comune tutti i geni e
trovare un pattern che ci permette di capire se è un gene oppure no, non è facile. Una delle cose più facili
da trovare è che hanno la possibilità di codificare per una proteina; l’esempio più classico è che una
sequenza che ha un sacco di stop codon distribuiti a caso non potrà codificare per una proteina questo è
un modo molto grossolano per dire che quella cosa non è una proteina esistono molti meccanismi che
cercano di trovare qualche caratteristica che determina il coding potential di una regione.

Un’altra area è quella della predizione di strutture tridimensionali. Esempio: ho una stringa di caratteri che
sono aa, in che modo possono tradursi in una struttura 3D? anche la cosa più semplice che possiamo
immaginare ovvero chiederci se si possono avvolgere ad alpha elica, non ha una risposta banale. Se lo
guardiamo da un punto di vista termodinamico è di una complessità elevatissima e non ci dà delle soluzioni
esatte. Se vogliamo solo riconoscerlo per sequenze di caratteri, ci sono programmi che fanno questo. Ad
esempio, ci sono aa che sono più frequenti nelle alpha eliche, quindi trovare più aa di questo genere
clusterizzati in una certa zona, è indicazione del fatto che potrebbe esserci un’alpha elica. Ma quanto è
affidabile questa predizione? Molto poco. In questa zona, ad esempio, le reti neurali hanno un effetto
molto positivo, hanno un buon margine di successo. Signal peptides è un altro esempio: che cosa rende una
sequenza un signal peptide? Che è idrofobico, ma se trovo 4 aa idrofobici, significa che è sempre un signal
peptide? Le reti neurali sono molto brave a fare questo. Se ho 1 milione di signal peptides, questo è un
ottimo training set per riuscire a training un network verso la capacità di riconoscere un signal.

È stata generata una rete neurale per la predizione della


struttura secondaria di una proteina. Quali sono i dati di
ingresso? La sequenza e non numeri devo trovare un metodo
per codificare questo sottoforma di numeri. Ad esempio,
immaginando di stabilire dei caratteri a partire dalla A e finire
con la Z associo un numero. A questo punto ho una sequenza di
caratteri a cui corrisponde una sequenza di numeri. Su quale
sequenza lo vado a fare? Su una proteina intera? No, sto
cercando alpha eliche. È vero che ci sono proteine come l’alpha
cheratina che sono un’alpha elica lungo tutta la sequenza, però
tipicamente ci sono tante proteine che hanno porzioni di alpha elica; basti pensare alla globina, ha 7 tratti
di alpha elica dispersi nella proteina. Quanto sono lunghi in media? Non molto, circa una decina. In questo
esempio, vado a fare un test su 13 aa uso una finestra di 13 aa e la faccio scorrere lungo una sequenza di
proteine intera. Comincio dall’aa 1 e testo questa sequenza, poi sposto questa di 1 all’aa 2 e rifaccio lo
stesso test, alla fine ci saranno posizioni in cui questa finestra ottiene punteggi più elevati; quindi, dirò che
in quella zona probabilmente c’è un’alpha elica. Come faccio ad ottenere una valutazione che ci dice se è
possibile che sia un’alpha elica? Ovviamente devo dare questo dato in ingresso e quindi eseguirò la mia
rete per ognuna di queste finestre. Questo meccanismo lo chiamiamo di scansione, cioè prendiamo una
certa sequenza e camminando lungo di essa, testiamo tutte le sotto sequenze di una certa lunghezza, in
questo caso sono parole di 13. È chiaro che se sto cercando una TATA box cercherò sequenze di 5,6. Così ho
formato il mio layer di ingresso, avrò una serie di connessioni, il mio layer intermedio, quello di uscita in
questo caso sto chiedendo se è un’alpha elica; prendo 3 neuroni e dico che ognuno di essi corrisponde a
uno dei 3 possibili output. Mi aspetto che ognuno di essi possa essere 0.1, 1.6, 0.9. Se ne escono due alti,
significa che la rete non è in grado di raggiungere una decisione, ma potrebbe anche significare che una
sequenza possa ripiegarsi con due modi alternativi e a seconda del contesto si ripiega nel modo più
opportuno. Abbiamo bisogno di un programma che ci fa il calcolo dei coefficienti e uno che fa l’esecuzione
della rete usando i coefficienti.

Come funziona? Ho una rete neurale costituita da un certo numero di neuroni in ingresso, intermedi e di
uscita e i connettori. Cosa rende questa rete unica che ci permette di discriminare se quei dati di ingresso
sono un’alpha elica o un beta shift? Questa rete non è stata trained, quindi devo trained la rete. L’effetto
del training della rete quale sarà? Un programma come dati di ingresso si aspetta di avere sequenze di varie
alpha eliche di varie proteine prendendole da diversi database tipo UNIPROT; oppure PDB, database in cui
ogni ente è la scrittura tridimensionale di una proteina; quindi, al suo interno ho la proteina con la sua
lunghezza annotata e le annotazioni relative a quali aa costituiscono la sequenza. La rete non capisce le
lettere, bisogna trasformarli in numeri dandogli uno dopo l’altro i punti. Siccome qua si parla di 3 neuroni in
uscita, l’output che forma avrà? Un’esecuzione della rete prende in ingresso 13 aa quindi per eseguire la
rete abbiamo bisogno di 13 valori di ingresso; quindi, ognuno degli esempi di alpha eliche che abbiamo
trovato lo dobbiamo tradurre in blocchi di 13 caratteri che vanno tradotti in numeri; questi vanno
etichettati cioè scrivere l’output. Nel caso di un’alpha elica, quale sarebbe l’output atteso? Ho 3 neuroni:

 1, se è un’alpha elica
 0
 0

 questo è l’output atteso. Quindi abbiamo una riga di 13 aa, ognuno con un suo codice e 3 numeri,
ognuno con un suo valore.

Il programma come lo eseguirà? Il primo programma calcolerà i coefficienti della rete, il secondo a eseguire
la rete. Dopo aver fatto il training, ottengo un risultato. Sotto quale forma lo ottengo? L’effetto del training
cosa produce come risultato? Mi dà qualcosa di concreto, di reale? L’esecuzione del training produce come
risultato una serie di pesi e una serie di bias.

Metodo alternativo all’utilizzo delle reti


neurali è quello di utilizzarle non per
lavorare direttamente sui dati ma di
combinare risultati di cose diverse tra
loro.

In questo caso l’idea è: noi abbiamo più


strumenti che sono in grado di
determinare un coding potential. Ho una
sequenza e voglio sapere che possibilità
ha di codificare per una proteina? Posso
sviluppare più strumenti che sono in
grado di darmi indicazioni sul potenziale
codificante. Ci sono tecniche differenti
basate sull’idea che la sequenza deve
avere una forma di simmetria per essere
una sequenza codificante; quindi, costituita da triplette quindi c’è qualche segnale rilevabile.

Un modo interessante di utilizzare le reti neurali può essere quello di provare a mettere insieme, ad usare
come dato, il risultato di queste corse. Quindi se su di una stessa sequenza avete utilizzato i diversi
strumenti che sono in grado di dare un risultato, ognuno di questi strumenti mi darà un punteggio, che
potrà essere un input alla nostra rete neurale che lavora integrando il lavoro di programmi diversi. Ogni
programma avrà una sua capacità di indovinare: prendendo un training set formato da esoni e non esoni,
applicano ciascuno di questi programmi, ognuno farà la sua predizione e attribuirà un punteggio. Tutti
questi sono dati che messi in ingresso significano che il neurone di ingresso collegato con il primo
programma, impara che 0.94, 0.84 e 0.20, insieme corrispondono a due esoni questo significa che
diventa più tollerante al risultato del terzo
che può sbagliare più spesso. Alla fine, riesco
a costruire una rete neurale che può darci
delle predizioni migliori di ciascun
programma preso singolarmente.

Tutti questi strumenti che fanno modelli,


come le catene di Markov o le reti neurali,
costituiscono un insieme di strumenti che
hanno in comune l’idea di produrre un
modello. L’idea è che questi modelli possano
essere descritti con delle caratteristiche per cui avranno in comune i data set utilizzati, i meccanismi, la
struttura del modello. Un modo è quello di poter rappresentare, in modo uniforme, sistemi di modellazione
completamente diversi. Per questo è stato sviluppato un linguaggio stile HTML, linguaggio che descrive in
maniera precisa come la pagina deve apparire. Molti di questi linguaggi sono basati sul concetto di markup
(marcatura), cioè un linguaggio basato su tags. Uno dei linguaggi più usati è PMML che ci permette di
arrivare a descrivere strutture di questo tipo e una di queste è quella delle reti neurali. Questo può essere
uno dei modi per descrivere in modo accurato una rete. Questo è un sistema di trasmissione e
comunicazione per poter scambiare le informazioni, metterle in banche dati. Avere la possibilità di
scambiare informazioni è fondamentale.
DATABASE

Qual è il motivo per cui sono state create le banche dati?

 Rendere i dati disponibili agli scienziati; i dati sono risultati sperimentali che non sono rintracciabili
attraverso la letteratura scientifica perché l’articolo scientifico racconta una storia (sono partito da
un problema, ho fatto un esperimento ed ottenuto i seguenti risultati); ma molti dati finiscono per
non arrivarci negli articoli; il dato però ha un suo scopo che può essere più utile del risultato
ottenuto; poterli trovare in una banca dati permette agli scienziati di averne accesso;
 Vengono conservati nelle banche dati in modo che siano computer readable: se una sequenza è in
un articolo, quella sequenza è scritta all’interno di una figura che non è facile per un computer
poterla leggere;
 Spesso diventa necessario per raccogliere tutti i dati da noi prodotti, quindi per una questione di
spazio.

Cosa intendiamo per banca dati?

Google di per sé è già una banca dati nel senso che è uno strumento in cui l’interfaccia di richiesta è molto
accurata, a noi sembra una grande collezione di pagine web.

 La banca dati nasce dalla necessità di organizzare in maniera strutturata i dati;


 La banca dati è organizzata in maniera lineare. Il concetto di flat parte dall’idea che non c’è
strutturazione, è semplicemente una collezione di elementi tutti uguali tra loro. Questa logica è
quella sulla quale si è basato il primo sistema (ENBL), cioè basato sulla collezione di elementi tutti
uguali tra loro.

La capacità dei computer di gestire collezioni di dati con programmi che servivano a fare dati, erano
disegnati per gestire piccole quantità di dati si è pensato di lavorare direttamente con i files, per cui la
banca dati era un grande folder in cui c’erano tanti file di testo, e ciascuno corrispondeva a un record della
banca dati. Il modo di strutturare questi file di testo è basato sui target files, ovvero file nel quale ogni rigo
corrisponde ad una specifica caratteristica che si sta cercando di conservare, ma non c’era
un’organizzazione precostituita del file. Cioè, se devo fare un record che corrisponde ad una persona, posso
dire che nel primo rigo ci metto il nome, nel secondo il cognome, nel terzo la città…qui, il tipo di dati da
conservare è complicato e quindi creava dei problemi; soprattutto, c’era una grande differenza tra un dato
e un altro: alcune sequenze molto piccole, altre lunghissime, alcune con poche annotazioni, altre decine,
alcune un solo riferimento, altre erano state menzionate da dieci lavori diversi.

 per non sprecare spazio, cioè avere un file con un numero infinito di righe, l’idea è stata quella di dire
che ogni rigo conteneva un’informazione differente, ma io conservo solo quelle che mi servono e per
sapere che informazione c’è, rinuncio ai primi due caratteri del rigo, scrivendoci semplicemente qual è il
contenuto di quel rigo. Questo meccanismo è abbastanza flessibile da permettere di mettere insieme cose
anche diverse tra loro.

Tutto questo ci dà una grande possibilità, mantenendo una strutturazione, facile da leggere da un
programma (file), trovando le informazioni giuste, bypassando quelle che non gli interessano,
concentrandosi sulla parte più rilevante. La parte più rilevante è la sequenza, quella parte che comincia
dove sono finiti i tag. Collettivamente tutti i tag corrispondono a quello che noi chiamiamo metadata, cioè i
dati addizionali di una sequenza; invece, il dato di sequenza stesso è contenuto libero senza tag iniziali, ci
sono solo degli spazi per cui un qualsiasi programma che sia in grado di leggere tutti gli elementi che non
cominciano con il tag, cancellare gli spazi intermedi, può essere rapidamente letto e recuperato. Questo file
format non solo viene utilizzato nella conservazione e strutturazione della banca dati, ma anche come
performance di sequenze. Se volete fare un programma che fa la traduzione di una sequenza di DNA,
possiamo disegnarlo che legge direttamente questo file che porta alla sequenza perché sa dove andarlo a
leggere e la usa per tradurre la sequenza. Qualche programma più intelligente può prendere delle
informazioni dal metadata; per esempio, un programma che legge la zona FT (feature) dove ci sono tutte le
features della sequenza, una delle features è ad esempio la coding sequence che parte da 10 e finisce a
1789 apre il file, salta ciò che non è importante, prende la sequenza da tradurre, dopodiché traduce solo
la parte codificante. Un programma che dà in output una sequenza potrebbe costruire un file di questo tipo
con delle features che non ci sono in altri sistemi che potrebbe usare per rileggerlo lui stesso o un altro
programma in grado di leggerle, tutto ciò usando gli stessi files.

La seconda banca dati di sequenze è basata su un nuovo modello di file che ha una prima parte che segna il
nome del campo e non ha un codice di due lettere per indicare cos’è ha la stessa impostazione con
qualche piccola variazione.

La terza banca dati di sequenze (Giappone) ha creato banche dati che contengono la collezione di tutte le
sequenze che sono mai state fatte.

ENA (European Nucleotide Archive) nasce dal fatto che sono state unificate due diverse banche dati: EMBL
(contiene tutte le sequenze fatte), SRA (sequence read archive). I sistemi con sequenziamento parallelo
producono 20 milioni di sequenze questo meccanismo ci consente di trovare contemporaneamente nella
stessa banca dati la sequenza di un gene di alpha globine studiata da 3 anni e poi caricata sulla banca dati e
20 milioni di record di un singolo esperimento in cui sono uscite 20 milioni di sequenze; ovviamente non è
coerente quando sono comparsi gli strumenti giusti, hanno iniziato a separare le sequenze creando la
SRA (singoli sequenziamenti fatti a macchina in cui non c’è alcuna forma di affidabilità) e poi hanno creato
ENA mettendoli insieme ma separate.

Si crea una curva logaritmica in cui la salita è rettilinea crescita è esponenziale, ma nell’arco di un anno
(2008) c’è stata un’improvvisa salita che corrisponde all’introduzione dei sistemi di sequenziamento su
larga scala.
Si può accedere ai contenuti della banca dati con un linguaggio che è quello per accedere direttamente alla
banca dati (1980, non avevano la pagina web) e non alla pagina web (1992-1993).

DATABASE DI PROTEINE

 PIR (Protein Information Resource): prima banca dati di proteine (1984)

È anche l’anno di Swiss-Prot (1986) perché i dati di proteine sono stati in quell’occasione riversate in una
banca dati costruita con la stessa architettura dell’EMBL normale.

TrEMBL: prima forma di banca dati secondaria cioè che contiene non dati sperimentali ma che sono stati
ottenuti da un’altra banca dati attraverso l’operazione di traduzione. TrEMBL nasce proprio con l’obiettivo
di generare una banca dati esattamente con la stessa struttura di Swiss Prot ma che abbia la capacità di
conservare la sequenza nucleotidica tradotta. In questo modo abbiamo una doppia banca dati, Swiss Prot
(sequenze di proteine note in cui si sapeva che la proteina esisteva) e TrEMBL (traduzione di sequenze di
DNA) gemelle, capaci di poter trasferire i dati da una all’altra.

Da cosa nasce questa esigenza? Negli anni ’80 erano molte di più le proteine di cui erano note le sequenze
che il DNA, perché il DNA non si sapeva sequenziare, mentre le proteine si sequenziavano già da dieci anni.
Negli anni ’80 c’è il grosso boom di sequenziamento del DNA con il metodo di Sanger e cominciano ad
accumularsi sequenze di DNA in quantità maggiori rispetto alle proteine. Inizialmente si cominciano a
cercare geni per le proteine note, un po’ alla volta cominciano a comparire i geni nuovi: che codificano per
proteine ignote, per oggetti che non si sa se sono proteine o no.

Uni Prot: combinazione tra Swiss-Prot, TrEMBL e PIR.

DATABASE SECONDARI

Sono banche dati contenenti mutazioni, fattore di trascrizione… quindi i database non per forza devono
contenere solo sequenze genomiche o proteiche. Queste banche dati secondarie sono state create a partire
da dati estratti dalle banche dati primarie, in particolare, le informazioni sulle sequenze nei database
primari potrebbero essere minime per cui per trasformare le informazioni in conoscenze biologiche
sofisticate c’è la necessità di database secondari che contengono informazioni più elaborate sulle sequenze
derivate dai database primari.

Ref Seq (Reference Sequence): è una banca dati in cui le sequenze non ci sono. Lo scopo è quello di evitare
ridondanze.

ENTREZ
Mette insieme molte banche dati per poterle consultare facilmente; è stato sviluppato da NCBI.
Le banche dati sono di per sé separate le une dalle altre, esistono però dei sistemi di recupero di database
che mettono insieme un'ampia varietà di dati; tutte le informazioni sono conservate in uno stesso sistema,
per poter permettere cross link o ricerche combinate.

Struttura dei Database


Le banche dati si costruiscono in modo gerarchico, tipicamente una banca dati è costituita da uno o più file,
all’interno di ognuno di questi file vi sono delle tabelle, le quali sono costruite di record
(oggetto/informazione), ogni record poi al suo interno contiene una serie di campi, per ogni campo esiste il
nome ed il contenuto, il quale è un numero.

Flat file
I dati sono detti flat perché sono un lungo file di testo che contiene molte voci non articolate tra loro, a
differenza di modelli più complessi. Questo è un grande vantaggio perché permette di trattare gli elementi
nella banca dati tutti allo stesso modo, cioè i dati vengono memorizzati in un unico file e non ci sono
relazioni strutturali. Il problema della duplicazione dei dati all'interno di una banca dati non è solamente
quello dello spazio, ma la cosa più grave è che quando un dato è scritto due volte, prima o poi i due dati
vanno fuori sincronia.

DATABASE RELAZIONALI
La risoluzione a questo problema avviene mediante l'utilizzo di database relazionali virgola in cui invece di
utilizzare una singola tabella come in un database di file flat, si utilizzano un set di tabelle per organizzare i
dati. Ciò che succede è che le due tabelle sono legate dal fatto che esiste un link, di cui ne esistono due tipi
diversi: una primary, che serve ad identificare in modo univoco una entry, cioè ogni riga in una tabella; e
una seconda che punta, collegandosi attraverso una freccia, alla primary. Ad esempio, se ho 200 sequenze
di uno stesso organismo, non è che il campo organismo ripete la descrizione di quell’organismo per ogni
entry di sequenza, ma semplicemente ne troverò uno che è un puntatore all'elemento “uomo” nella tabella
“specie”. Quindi, questo meccanismo è molto più efficiente.
Il meccanismo precedente è comunque utilizzato per diversi motivi:

 Facilmente leggibile da un essere umano;


 Ci sono moltissimi programmi in grado di leggere quelle sequenze;

Continuano ad essere disponibili

PREDIZIONE DELLA STRUTTURA DELLE PROTEINE

Qual è la differenza tra Swiss Prot e PDB?

 Swiss Prot: banca dati di proteine (struttura primaria: sequenza);


 PDB: banca dati che contiene anche le strutture tridimensionali (ripiegamento nello spazio: α-elica,
β-shit).

Le strutture tridimensionali delle proteine sono state ottenute mediante due tecniche: la cristallografia a
raggi X, spettroscopia di risonanza magnetica nucleare (NMR):

 Cristallografia a raggi X: modo per determinare la struttura tridimensionale; ma che significa che
con i raggi X facciamo una fotografia delle proteine? No. Sperimentalmente che risultato
otteniamo? Come misuro la deviazione? Ho un fascio che attraversa il cristallo, parte come un
singolo fascio e si diparte in direzione diverse  il fascio è stato deviato. la deviazione diventa
macroscopica perché all'interno del cristallo noi abbiamo tante copie della stessa struttura messe in
maniera regolare, quindi sto amplificando quella struttura, ma quella singola deviazione che sto
vedendo, significa che il fascio di raggi X viene modificato. Come viene prodotta la proteina? Viene
ricostruita mediante un calcolo che consiste nel dire: questo singolo punto significa che mi sono
spostato di tanto? Questo spostamento vuol dire che ho incontrato qualcosa, una densità ai raggi X
che mi ha impedito di proseguire  mettendo insieme tante di queste deviazioni, ricostruisco la
densità dell'oggetto che ha fatto deviazione. Alla fine, produco una mappa della densità. Questo di
per sé non è una struttura tridimensionale della proteina, semplicemente mi dice più o meno qual è
lo spazio occupato dalla proteina così come visto dai raggi X. Importante per ricostruire la proteina
e la sequenza della proteina, perché se ce l’abbiamo, sappiamo quali sono i singoli aminoacidi e
come si compongono nello spazio. Anche questo lo possiamo pensare come una predizione.
Siccome riusciamo ad ottenere un’alta risoluzione, la proteina è molto vicina alla realtà e non la
chiamiamo predizione. Chiamiamo predizione una proteina da cui partiamo da zero. La predizione è
molto meno affidabile di una cristallografia a raggi X.
Per la cristallografia, noi partiamo da un esperimento, significa che abbiamo ottenuto i dati e sulla
base di quest’ultimi, abbiamo ricostruito la struttura. È più precisa sicuramente rispetto alla
predizione di una struttura tridimensionale. Ma anche le strutture che noi chiamiamo determinate,
non sono sempre precise proprio perché non sono una fotografia della proteina, non ci dicono con
chiarezza cosa sta succedendo. Per poterlo fare prendiamo una proteina e la cristallizziamo, la
proteina ha un aspetto molto simile a quello che ha in soluzione, è come se fosse una soluzione
molto concentrata  non è una distorsione enorme, però prendere una proteina e bloccarla in un
cristallo significa che quantomeno la proteina debba aver assunto una conformazione tale da esser
compatibile allegarsi con un'altra vicina messa nella stessa posizione che produca una struttura
regolare che possa essere ripetuta tante volte. Il concetto di cristallo significa che ho una simmetria
con cui ogni cellula è uguale a quella successiva e tutte le proteine devono stare nella stessa
posizione. Una cristallizzazione che non ha prodotto cristalli di buona qualità mi dà un risultato
bassa risoluzione. Se l'oggetto attraverso cui ho fatto passare i raggi X non era omogeneo, ho una
mistura di due cose. In entrambi i casi (cristallografia e predizione) c’è un margine di errore che
ovviamente è più grande nella predizione.
un file di PDB è una descrizione della proteina in 3D ed è stato ottenuto per diffrazione a raggi X.
 Risonanza magnetica nucleare: usata per fare indagini per immagine. Rappresenta un altro modo
per determinare la struttura tridimensionale di una proteina. Usando l’MNR possiamo ottenere dei
segnali che mettono in evidenza quando due parti di una proteina sono vicine. il tipo di segnale e
quale aminoacido vicino ad un altro. Quante più interazioni veniamo a conoscere, tanto più
possiamo ricostruire la proteina. Nessuna rappresentazione è esatta ma sono tutte forme di
detection attraverso le quali ottengo dei dati sperimentali che mi permettono di ricostruire la
struttura della proteina. MAPPA DI DENSITA’ nel caso della cristallografia, SERIE DI INTERAZIONI
ATOMO PER ATOMO nel caso della NMR. Nonostante gli errori, le proteine hanno la forma che ci
aspettiamo. Confrontando i dati che derivano dalla cristallografia e quelli che derivano dalla
risonanza i dati sono equivalenti. Quando troviamo coincidenza tra due metodi che utilizzano un
principio differente, questa indicazione del fatto che il risultato è molto vicino alla realtà.

Ovviamente una struttura tridimensionale, che sia fatta con cristallografia ho risonanza, è vera fino a un
certo punto, c'è sempre un grado di imprecisione, che però è molto basso che dipende sia dalla proteina
che dallo strumento utilizzato.

Un file PDB non è altro che una rappresentazione tridimensionale della proteina che può essere stata
ottenuta per cristallografia o risonanza. Tipicamente nei file PDB non vengono conservate strutture
predette però ci sono altre banche dati che le conservano e che possono essere più o meno vicini alla
realtà. Quindi un file di strutture predette mi dà abbastanza informazioni da farmi costruire una proteina?
La macchina non fa quello che non sa, fa solo quello che noi sappiamo fare ma in maniera più rapida
utilizzando algoritmi diversi. Se la macchina non ha l’informazione, non la può fare. Ho informazioni
generali su come è organizzata la struttura, ma alla fine ciò che mi serve sono le coordinate atomiche. Il file
non fa altro che contenere le coordinate XYZ di ogni atomo. Ci sono una serie di righi di tipo ‘atom’ in cui
ciascuno ci dice un atomo dove si trova.

L’unica informazione che abbiamo è sapere ogni atomo dove si trova. Questa lista è leggibile? Il fatto che io
so che questo è un Cα, Cβ, Cγ, significa che posso andare avanti e capire più o meno come è strutturato
l’aminoacido; quindi, posso capire più o meno l'orientamento del legame. È importante perché sapere dove
si trova il Cα e quello appresso significa dire che il backbone sta andando verso una certa direzione. Se io mi
domando quanto dista il primo C dal secondo, lo posso sapere? Come faccio a sapere qual è la distanza
fisica nello spazio? Sappiamo la distanza sull'asse x, sull'asse y, sull'asse Z, attraverso il teorema di Pitagora.
Quindi se i due atomi stessero su un piano, potrei sapere la distanza, di fatto stanno quasi su un piano, la
differenza è quasi zero; però potrebbe non essere zero, ma il teorema di Pitagora funziona anche in tre
dimensioni, per cui possiamo ugualmente calcolarlo perché basta fare la somma delle tre distanze al
quadrato, facciamo la radice quadrata e quella è la distanza.

Tools for 3D visualization:


 iMol
 MolMol
 Swiss-PDB viewer
 NCBI 3D page

Se la struttura dobbiamo provare a predirla, come faccio? Se non ho altra informazione oltre alla struttura
primaria, e quindi la sequenza degli aminoacidi, cosa conosco di ciascuno aminoacido?

 Proprietà chimiche fisiche;


 Le distanze di legame tra ognuno degli atomi di quell’aminoacido;
 Come si conforma nello spazio;
 se dovessi rappresentare un singolo amminoacido, le informazioni ce le ho. Se non è un singolo
aminoacido ma è magari un dipeptide perché ha un altro aminoacido accanto, posso immaginare come si
possano attaccare. Una molecola piccola fatta di pochi amminoacidi, la predizione di struttura è quasi
obbligatoria (probabilmente l’ho indovinata con un grado altissimo di probabilità). Appena la molecola
comincia a diventare più complessa, per quanto io possa avere informazioni, tipo le distanze di legame, gli
angoli di legame, sono sempre legati ad una singola molecola. Se due aminoacidi me li trovo in successione
in un dipeptide, il problema comincia a diventare qual è il modo più efficiente per orientare i due
amminoacidi? Man mano che cresce questo dipeptide e diventa un penta/esapeptide, questo oggetto
comincia ad avere una conformazione globale; quindi, devo cominciare a immaginare tutte le successive
aggiunte, e se ho tutte le informazioni disponibili possono arrivare a calcolare il livello energetico della
proteina che mi dice quanta energia si perde nel momento in cui questa molecola si ripiega e quindi
raggiunge un livello energetico più basso rispetto a quello che aveva. Questo ripiegamento quanto mi ha
fatto migliorare la stabilità di questa proteina? Se me l'ha migliorato posso dire che questa struttura è più
stabile rispetto alla precedente e quindi ha più probabilità di essere presente. se immagino di avere in
soluzione entrambe le strutture possibili, posso immaginare che quella più stabile sia più frequente da
incontrare. Se la differenza di stabilità tra le due è molto elevata, posso immaginare che la prima struttura
sia del 100% e seconda dello 0%. Questo è facile se ho solo due strutture, ma se le strutture sono tante, e
ho 100 soluzioni possibili, ogni soluzione la posso esaminare attribuendole uno Score e quella che ha lo
score migliore è la soluzione migliore. Dove nasce il problema?

1. Quanto è complicato?
2. Il vero problema è quante soluzioni possibili devo esplorare? Già per l'allineamento abbiamo visto
che il numero di soluzioni possibili è piccolo quando le sequenze sono brevi, ma diventa molto
grande quando le sequenze cominciano a diventare più lunghe. La stessa cosa succede per le
proteine. Se voglio studiare la struttura di un peptide con un certo livello di risoluzione (perché
l'atomo lo posso spostare di una unità ma anche di mezza unità a differenza dell’allineamento che
posso spostare solo di un'unità). Se voglio ottenere una risoluzione grossolana, il numero di
configurazioni da calcolare è ridotto.

Quindi l'approccio esiste ed è teoricamente fattibile, ma molto complicato, quindi devo cercare soluzioni
più ragionevoli. Sono davvero tante le possibili combinazioni? Quanto ci posso guadagnare guardando la
disposizione delle altre proteine nello spazio? Posso avere zero vantaggi se le proteine hanno una struttura
differente l'una dall'altra, a vantaggi importanti se noi sappiamo che le proteine hanno delle strutture che
possono ritornare (es. ZINC finger).

METODI AB INITIO

Qual è la soluzione ottimale? Immaginando di avere una proteina con una mutazione, questa proteina sarà
identica a quella precedente tranne che per questa mutazione. Questa variazione dell'aminoacido che
effetto può avere? Nessuna, può essere semplicemente una varietà a livello funzionale. Ma anche il singolo
aminoacido ci potrebbe mettere in difficoltà perché potrebbe avere un effetto importante perché quell’aa
essenziale per la formazione di una struttura importante per la proteina. Posso pensare di costruire una
proteina che cambia solo di aminoacido? Sì. Cambia l'aminoacido randomicamente e mi domando se
questa variazione, effettivamente è la soluzione migliore. Tutti quei programmi utilizzati per fare
minimizzazione energetica possono essere applicati a questo caso. Il grado di difficoltà dell'operazione è
diminuito. Questo ci porta a quello che chiamiamo COMPARATIVE MODELLING. Questo è uno schema che
possiamo utilizzare per approcciare al problema. Se abbiamo una proteina, cosa posseggo? La sequenza,
possiamo sapere che alcune zone sono esterne perché possono essere modificate, una serie di informazioni
che ci danno informazioni sulla struttura della proteina. A livello sperimentale più di questo non possiamo
fare. La prima cosa che andiamo a fare è cercare gli allineamenti. Possiamo allineare la proteina con tutte le
proteine note? Sì, attraverso FASTA o BLAST. Una volta ottenuto il risultato ci chiediamo cosa possiamo fare
con quest'ultimo: allineamento multiplo che ci permette di dire all'interno della nostra proteina quali sono
gli amminoacidi conservati. Ad esempio, se noi avevamo ipotizzato che all'interno della nostra proteina,
potesse avvenire un legame tra due cys tramite un legame disolfuro, se scopriamo che la cisteina c'è solo
nella nostra proteina e non in tutte le altre della famiglia, è difficile che possa essere una parte strutturale
della proteina, quindi dobbiamo pensare a qualcos'altro. Per trovare un homology modelling, la mia
domanda è tra tutte queste proteine che ho trovato, ce n’è qualcuna per la quale esiste la struttura
tridimensionale? Sì o no. Questo è il momento in cui prendere una decisione.

 Se la risposta è no, abbiamo un bel po’ di lavoro da fare;


 Se la risposta è sì, abbiamo già la strada verso la soluzione perché ci porta a quello che noi
chiamiamo comparative modelling che ci permette in un solo step di ottenere la struttura
utilizzando dei programmi basati sul concetto di homology modelling.

PUNTO 1. L’allineamento di sequenze è essenziale per fare modelling;


PUNTO 2. Quali sono gli obiettivi e le limitazioni.

L'homology modelling non è un particolare programma, è una categoria di programmi e tecniche di


produzione, che ci danno un risultato. Cosa fa un programma o una soluzione software di questo tipo?
Parte da una ricerca in PDB. Se la struttura nota la trova, ci dobbiamo domandare quale di queste strutture
sia simile. L’allineamento inizia ad assumere un altro motivo. L’allineamento iniziale aveva l’obiettivo di
arrivare a trovare se c’era qualche proteina che era relata con questa. È dunque una ricerca di tipo
evolutivo, cioè chiedersi se esiste una proteina che dall'allineamento possiamo trarre la conclusione che è
relata voi dal punto di vista evolutivo e quindi esiste un antenato in comune ed è presumibile che tutte
queste proteine che derivano dallo stesso antenato possano condividere una struttura. Se tutto ciò risulta
vero, allora è verosimile che la proteina che ho è parte di quello e quindi ha senso che uso quella come
modello per costruire il mio modello. Però è anche vero che questo stesso allineamento è la base della
costruzione del modello e se dico che due proteine sono omologhe devo dire anche che, aminoacido per
aminoacido, c'è un omologo della proteina ignota che corrisponde l'aminoacido omologo della proteina
omologa. Di conseguenza se l'amminoacido è il numero 15 della proteina nuova ignota, corrisponde
nell’allineamento all’amminoacido 13 della proteina precedente, è chiaro che se prendo l’aa 15 e lo piazzo,
nel modello che sto mettendo su, nella posizione in cui si trovava il 13 nell’altra proteina, sto operando
correttamente. Questo secondo tipo di allineamento non è così facile perché non è uguale al primo punto il
primo si pone l'obiettivo di dimostrare che quella proteina è relata dal punto di vista evolutivo a quell’altra;
il secondo si pone il problema di sapere quale aminoacido è l’omologo di quell’altro. Quindi ciò che svolge
la stessa funzione è la struttura della proteina. Quindi il secondo allineamento che stiamo facendo è vero
che è sempre una tecnica di allineamento però ci possono essere situazioni in cui l'allineamento è diverso
rispetto al primo. Parte integrante della costruzione della struttura è la creazione di un allineamento.
Questo allineamento ci porta a predire un modello. Come costruiamo un modello? Basandoci sull'idea che
questo determinato modello, possa essere costruito a immagine e somiglianza del primo, cioè tutto quello
che è rimasto uguale, rimane esattamente nella stessa posizione. Ad esempio, se prendiamo la prima
proteina, tutti gli aminoacidi che sono uguali nell'allineamento li lasciamo esattamente così; tutti quelli che
invece sono cambiati, ce n'è uno che è esattamente sovrapponibile a quell'altro? Basta semplicemente
scrivere il nuovo amminoacido dove prima c'era l'altro, non sarà uguale, però alcuni atomi è molto
probabile che si trovino esattamente nello stesso posto, per esempio tutta la parte backbone e il C α, non
sono cambiati perché tutti gli aminoacidi hanno un Cα se non ci sono state distorsioni alleliche, almeno a
prima impressione, possiamo immaginare che si trovi nello stesso posto. E poi ci sono i casi difficili in cui un
amminoacido è stato sostituito da un altro molto diverso. Quindi devo fare il backbone per interrompere o
togliere o fare inserzione di un amminoacido. Tutte queste operazioni le troviamo nelle homology
modelling. Le fa in prima approssimazione sostituendo, possiamo immaginare che parte dalla stessa
posizione, però alla fine dobbiamo riesaminare quella determinata zona e riuscire a fare il lavoro di
minimizzazione energetica e stabilire che cosa è plausibile.

APPLICAZIONE PRATICA
Ricordiamo che l’homology modelling non è un programma ma una serie di programmi che operano basati
su questo principio.
Vai sul sito, dove c’è un programma che sta correndo, ho anche la sequenza della proteina. Come funziona?
 Search: BLAST-P (primo programma), lavorando su quel database, fa il search; se trova qualcosa,
tira fuori una lista di proteine che somigliano alla mia; questa lista deve essere selezionata
dall’output di BLAST perché BLAST non ci dice quelli adatti a fare perdizioni di strutture, ci dice solo
quali sono quelle che somigliano. Quel programma serve a fare una lettura dell'output ad esplorare
nell'output e tirar fuori quelle proteine che corrispondono a delle determinate caratteristiche. I dati
da cui devo partire sono tutte le proteine simili che abbiamo trovato, mi servono anche le strutture
tridimensionali  quindi far partire un programma non è proprio facile. Tutte queste cose le metto
in un file;
 La parte successiva è quella dove viene generato un modello, cioè sulla base dei dati che sono stati
passati, quel programma fa una predizione di un modello o alcuni modelli perché potrebbe anche
venir fuori più di un modello;
 poi c’è un’ultima fase che fa la revisione del tutto per valutare dal punto di vista energetico se la
cosa è credibile o no.
Alla fine, vedo più di una proteina attraverso un backbone in cui sto vedendo la posizione assunta dai
singoli amminoacidi. Tutte queste proteine hanno ognuna il suo backbone è che tutti questi backbone si
somigliano perché ognuno ha un colore diverso, hanno sicuramente molte differenze ma anche molte cose
in comune. Siccome ho tante proteine simili come faccio a capire qual è quella giusta. Dati 10 backbone
posso fare la media di questi e quindi creare una sorta di consensus dei backbone? Se volessi costruire la
consensus di un backbone cosa dovrei fare? Se prendo la coordinata x,y di 10 atomi e faccio la media, posso
costruire un backbone artificiale che come tutte le consensus potrebbe anche non funzionare. Quindi la
prima operazione è creare questo backbone. Ci sono pattern ricorrenti dove ci sono similarità? Ci sono zone
rettilinee e zone in cui il backbone torna indietro (loop). Dove i backbone vanno in maniera rettilinea sono
zone in cui ci sono α-eliche o β-shit, mentre spesso quello che vediamo di congiunzione è una zona che
serve a connettere il primo tratto con quello successivo. I tratti rettilinei e i loop hanno la stessa tendenza o
cambiano? Ci sono dei loop molto diversi tra loro che non si sovrappongono; quindi, è chiaro che la zona
dov'è la molecola torna su sé stessa è una zona dove è più facile trovare variazioni. Se una certa regione di
una proteina e un’α-elica, quella struttura è abbastanza definita se c'è una mutazione all'interno di
quest'ultima, la mutazione viene assorbita perché la struttura rimane una struttura ad α-elica, a meno che
non siano mutazioni così gravi da interrompere l’α-elica. Quel loop è essenziale per il funzionamento della
proteina, ma se è semplicemente un connettore che permette di collegare le due α-eliche e assumere una
certa conformazione, la proteina potrà funzionare lo stesso se c’è una mutazione.

Un’altra soluzione: possiamo dare per ignota la posizione di tutto il loop, però stiamo parlando di un tetra-
peptide non di un'intera proteina. vengono poi fatte le catene laterali. Fatto questo abbiamo la struttura
della proteina.
proofreading: mi faccio una riguardata della struttura dal punto di vista energetico. In tutti i punti in cui
trovo qualcosa di inusuale, quelle sono regioni misfolded; è probabile che qui bisogna fare delle operazioni
successive si può ritornare su quella regione e cercare di migliorarla.

PREDIZIONE DI PROTEINE
È una predizione, per cui ha un elevato significato ma non può essere una certezza. Ci sono cose che pur
essendo una predizione sono quasi certe e altre che hanno un grosso margine di errore. Quindi sempre
soggetto a margini di errore, però ristretto.
Come dobbiamo valutare un output? Il modello è dettato dalla qualità dell’allineamento di sequenza,
perché sto valutando la struttura di una proteina valutando l’allineamento di sequenza e sto piazzando un
atomo nello spazio valutando dove è piazzato l’atomo dell’altra proteina. Ma se non li ho allineati bene, l’aa
corrispondente potrebbe essere quello affianco se non metto l’aa nel posto giusto, non ci sarà nessuna
rifinitura finale che lo sposterà perché gli spostamenti sono di piccola entità  qualunque aa o atomo che
non sia stato collocato in virtù dell’allineamento giusto, dove per giusto si intende dire che occupa nello
spazio la stessa posizione che occupa l’aa corrispondente. Questo non necessariamente significa
nell’allineamento ottimale. L’allineamento in 3D e in monodimensionale non sono sincroni tra loro.
L’accuratezza del modello è essenzialmente limitata alle direzioni dei template usati. Ricordiamo che una
cosa che abbiamo fatto è stata fare una media dei backbone; una media tra 10 e 5 non è uguale ad una
media tra 7.2 e 7.8. Quanto più è variabile la distribuzione, tanto più è probabile che quella media che sto
utilizzando possa essere anche parecchio lontana dalla soluzione corretta. Quasi ogni protein model che
contiene non conserved loops, dovete aspettarvi che ci sono delle divergenze.

ALLINEAMENTO IN 3D
Noi parliamo di allineamento quando parliamo di due linee messe una vicina all’altra; quindi, in realtà il
corretto concetto di allineamento si riferisce alle proteine poste in maniera lineare. In 3D nasce il concetto
di sovrapposizione e cioè dire se io prendo una struttura e la metto esattamente nella stessa posizione dove
si trova un’altra (la maggior parte degli elementi si trovano, finché è possibile, nella stessa posizione o
comunque il più vicino possibile). Quindi metto le due strutture in maniera tale da minimizzare le distanze
x,y,z per ciascuno degli atomi; ovviamente i punti analoghi sono tutti gli aa e tutti i sostituenti. Questo
concetto di sovrapposizione vi porterà a poter vedere che alcune strutture, alcuni aa e alcuni atomi sono
esattamente nello stesso posto e altri sono molto lontani da dove dovrebbero stare. Poiché per come viene
costruito l’homology modelling, noi stiamo mettendo insieme due cose molto diverse tra loro, cioè sto
prendendo due proteine e le sto sovrapponendo; siccome costruisco il modello sulla base dell’allineamento
della struttura primaria, è chiaro che dove l’allineamento in struttura primaria coincide con l’allineamento
in 3D, la cosa funziona molto bene. Le basi su cui sto costruendo il modello sono solide.
Ci sono due proteine batteriche omologhe perché svolgono la stessa funzione. Se guardo la struttura
tridimensionale, sono simili tra loro la struttura tridimensionale è conservata. Qui stiamo parlando di due
proteine che sono predicibili sulla base di una sull’altra, perché se avessi una, potrei produrre l’altra, perché
è molto simile. Se volessi fare homology modelling su queste due proteine, dovrebbe essere di successo,
perché hanno la stessa struttura. In realtà non funzionerebbe tanto bene, perché? L’allineamento prevede
che se prendo la parte di sopra e quella centrale, quelle sono le due sequenze allineate con un normale
programma di allineamento che pone come obiettivo quello di massimizzare il numero di identità. Quindi in
queste condizioni, ho un sacco di somiglianze. Sto parlando di proteine relativamente lontane dal punto di
vista di sequenza perché gli aa esattamente conservati sono un numero limitato, probabilmente se vado a
marcare anche gli aa simili, troverò un po’ di somiglianza in più però certamente questo allineamento è
molto superiore come grado di allineamento. In realtà ciò che vedo nella linea centrale e nella linea di
sotto, è la sovrapposizione delle due strutture in 3D l’aa che si trova nella stessa posizione nel modello
3D nelle due proteine. Ciò che sta succedendo è che hys e hys sono omologhe perché se vado a fare
l’allineamento, la massima somiglianza la ottengo se assumo che questa sia omologa. Ma in realtà se
guardo nella struttura tridimensionale, questa hys si trova nel posto in cui si trova la glicina. In questo caso
sono vere tutte e due, nel senso che posso provare a cambiare qualche parametro.
C’è un unico punto nel quale le due cose vanno di pari passo, che è anche quella in cui c’è maggiore
somiglianza di struttura, questo ci fa capire che quando c’è una maggiore somiglianza di struttura, è più
facile che può funzionare l’homology modelling. Di fatto quello che trovo nell’allineamento ottimale,
coincide anche con l’allineamento in 3D. Se noi avessimo usato questo allineamento per produrre la nostra
struttura tridimensionale con l’homology modelling, l’avremmo trovato corretto in una zona, ma quasi tutto
il resto della proteina sarebbe stato completamente sballato. Questo non perché le due proteine sono
completamente diverse, anche perché nella struttura in 3D sono molto simili tra loro. Questo ci pone un
problema. In realtà questi non sono nemmeno sbagliati, nel senso che la sovrapposizione in 3D si pone il
problema di sapere quali sono gli aa che nella struttura tridimensionale svolgono lo stesso ruolo. Se un
certo aa ha una funzione OH che gli serve per legare qualcosa, se in quella posizione c’è un aa con quella
funzione OH, questo vuol dire che è lo stesso. Però, ciò che si trova nella stessa posizione in 3D, coincide
con quello che si trova nella stessa posizione nel gene. Noi stiamo allineando due sequenze di DNA che
sono disegnate per essere trascritte e tradotte e poi essere ripiegate per formare una struttura. È chiaro
che il modo più semplice di conservare una struttura, è quello di conservarla mantenendo la maggior parte
della sequenza. Tutte le proteine omologhe che hanno un antenato comune, avranno sempre un aa
omologo che sta a significare la tripletta omologa, nel senso che siccome l’evoluzione procede non
sottoforma di struttura ma sottoforma di sequenze lineari, perché è la sequenza lineare che viene
tramandata ai figli, quindi è quella che viene mantenuta, quindi è chiaro che se abbiamo un allineamento
che privilegia il mantenimento della struttura lineare, questo è probabilmente quello vero cioè ci dice come
si è arrivato alle due sequenze, perché è quello che prevede il minor numero di sostituz

Potrebbero piacerti anche