Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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.
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.
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
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.
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.
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.
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.
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 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
È 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.
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.
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:
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.
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?
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.
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