Il paragone tra DNA e programma informatico è piuttosto complesso, come sempre avviene quando si cerca un parallelo tra una componente biotica e una abiotica. Un parallelo punto per punto è ovviamente impossibile, tuttavia il confronto di queste due strutture ci porta a considerarle a buon ragione simili.
Assumiamo in primis di definire un programma come un insieme di informazione e/o istruzioni e il DNA come pura sequenza lineare di basi azotate, prescindendo momentaneamente dalle complesse relazioni che esso instaura all’interno di una cellula. In questo caso il parallelo è immediato e possibile. Anche il DNA è un insieme di informazioni, codificate da unità costituite da tre basi azotate in sequenza, così come nel programma le informazioni sono racchiuse in una sequenza I/O.
Negli ultimi decenni si è sviluppata una nuova applicazione che coniuga la biologia molecolare e l’informatica: il DNA computing. Nel 1994 Leonard Adleman pubblicò un lavoro che pose le basi di questa nuovo settore. Nel suo articolo Adleman dimostrava come fosse possibile risolvere un problema classico hamiltoniano (NP-complete Hamiltonian PAth Problem) utilizzando filamenti di DNA e le tecniche di biologia molecolare. In seguito numerosi altri autori hanno teorizzato la possibilità di risolvere tramite questa tecnica altri problemi complessi. L’ispirazione per questa teoria è scaturita dalla somiglianza tra l’attività del DNA e le macchine di Turing, che processano le informazioni e le depositano sotto forma di una sequenza di simboli.
La teoria del DNA computing si basa sull’applicazioni al DNA delle principali operazioni computazionali che qui brevemente riassumiamo:
– Input(T): crea il multiset iniziale
– Remove(T,S): rimuove dal multiset T qualunque stringa che contenga almeno una ripetizione di ogni stringa dell’insieme non vuoto S
– Union({T1, T2,…..,Tn}, T): crea l’insieme T, che è l’unione di distinti insiemi multipli T1, T2,…..,Tn, dove n è un intero arbitrario non negativo
– Copy (T,{T1, T2,…..,Tn}): crea n duplicati dell’insieme multiplo T e li posiziona negli insiemi multipli T1, T2,…..,Tn (n è un intero arbitrario positivo)
– Select (T): seleziona e restituisce un elemento di T a caso.
Il DNA computing è fondamentalmente simile al calcolo parallelo, dove viene eseguita la stessa operazione contemporaneamente su più processori. Il vantaggio del DNA computing è rappresentato dalla possibilità di risolvere, almeno teoricamente, problemi estremamente complessi con una spesa relativamente esigua e con una quantità di informazioni molto elevata contenuta in uno spazio ridotto. Sono stati definiti una serie di modelli teorici per l’applicazione del DNA computing, il più generale è il cosiddetto modello non ristretto.
Modello non-ristretto:
il tubo viene considerato come un insieme di molecole di DNA,cioè un insieme multiplo di stringhe finite contenenti {A,C,G,T}. Dato un tubo si possono eseguire le seguenti operazioni:
1. Separare: dato un tubo T e una stringa di simboli S contenenti {A,C,G,T}, vengono creati due tubi +(T,S) e –(T,S), dove +(T,S) è costituito da tutte le molecole di DNA in T che contengono la sottosequenza consecutiva S e –(T,S) è costituito da tutte le molecole di DNA in T che non contengono tale sequenza.
2. Unire: dati i tubi T1, T2 produrre l’unione (T1,T2)
3. Rilevare: dato un tubo T, avere come risultato “si” se T contiene almeno una molecola di DNA e “no” se non ne contiene.
4. Amplificare: dato un tubo T produrre due tubi T’(T) e T’’(T) tali che T=T’(T)=T’’(T)
Queste operazioni vengono utilizzate per scrivere un programma che riceve un tubo come input e ritorna come output un “si”, un “no” o un insieme di tubi.
Tra queste operazioni, nei modelli modificati per applicazioni pratiche, l’amplificazione viene per lo più evitata o limitata, dal momento che richiede una serie di enzimi specifici ed è un’operazione soggetta a un certo numero di errori non prevedibili. In questo caso vengono utilizzati i modelli detti “ristretti”.
Nella pratica l’operazione Riunire viene effettuata trasferendo il contenuto dei tubi in un solo contenitore.
L’operazione Separare su un tubo viene effettuata utilizzando un separatore, cioè un insieme di molecole oligonucleotidiche complementari alle sequenze s condizionanti la separazione, legate a supporti solidi ( ad esempio una colonna ad affinità).
L’operazione Rivela viene effettuata testando il contenuto del tubo T con una PCR utilizzando primer specifici forward e riverse e quindi controllandone il prodotto tramite elettroforesi su gel di agarosio.
Già nel 2002 i ricercatori del Weizmann Institute of Scienze a Rehovot, una città israeliana, avevano realizzato un computer a DNA e un anno più tardi aggiunsero a questo prototipo la possibilità di autoalimentarsi.
Il computer a DNA creato da Ehud Shapiro codifica il codice O/I in una molecola input di DNA con estremità appiccicose esposte. Quindi, un altro filamento di DNA- il software- cerca la complementarietà con l’input di partenza tramite un’estremità libera (in alto a sinistra). In caso di riscontro positivo, l’enzima ligasi (in alto a destra) lega i due filamenti e l’enzima Fok-1 (in basso a sinistra) si sposta lungo il filamento e ne taglia un pezzo, lasciando esposta la sezione successiva. Il procedimento viene ripetuto un numero di volte sufficiente a rispondere al quesito impostato. In basso a destra, una molecola di DNA, che funge da rilevatore di output, si lega al doppio filamento che costituisce il dato finale in uscita. Immagine tratta da http://www.smalltimes.com
Per approfondimenti:
http://news.nationalgeographic.com/news/2003/02/0224_030224_DNAcomputer.html
http://www.blc.arizona.edu/Molecular_Graphics/DNA_Structure/DNA_Tutorial.HTML
http://news.bbc.co.uk/1/hi/sci/tech/1668415.stm
approfondimento sulle tecniche citate:
http://www.vialattea.net/esperti/php/risposta.php?num=10733