Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Geometria Computazionale Determinazione della struttura di una molecola di RNA tramite una sequenza di numeri primi Studenti: Luigi Margheritti Andrea Gardoni Luca Pola Massimo Manara 660216 656751 656439 656814 Docente del corso: Laura Citrini Anno Accademico 2005/2006 2 Indice 1 Introduzione 1.1 Struttura RNA 1.2 Base Azotata . 1.2.1 Adenina 1.2.2 Citosina 1.2.3 Guanina 1.2.4 Uracile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 7 7 8 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Il nostro lavoro 2.1 Scopo . . . . . . . . . . . . . . 2.2 Fasi del progetto . . . . . . . . 2.2.1 Ricerca . . . . . . . . . . 2.2.2 Decisioni implementative 2.2.3 Implementazione . . . . 2.3 Risultati Ottenuti . . . . . . . . 2.4 Come usare l’applet Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 . 9 . 9 . 9 . 9 . 10 . 12 . 13 Bibliografia 15 A Codice 17 4 Indice Capitolo 1 Introduzione 1.1 Struttura RNA L’RNA, o acido ribonucleico vedi Figura 1.1 a Pagina 6, è un polimero organico, derivante dalla polimerazione1 del DNA2 . È il materiale presente anche nel nucleo di ogni cellula del corpo umano e che assicura il passaggio alla cellula delle informazioni genetiche contenute nel DNA. Strutturalmente è molto simile al DNA ma si differenzia da esso perché: 1. l’RNA contiene lo zucchero ribosio anziché il desossiribosio, 2. l’RNA ha come base azotata l’uracile al posto della timina, 3. l’RNA di solito si presenta come singolo filamento anziché doppio come il DNA [3]. Vi sono tre tipi di RNA: 1. mRNA (messaggero): è una molecola lineare di RNA che rappresenta una copia dell’informazione contenuta in un gene, 2. rRNA (ribosomale): è un enzima che catalizza la trascrizione, cioè il trasferimento del messaggio genetico contenuto in un gene dal DNA all’RNA messaggero, 3. tRNA (transfer): piccola molecola di RNA che trasporta un determinato aminoacido. 1 DNA polimerasi L’enzima che duplica le molecole di DNA. DNA Acido desossiribonucleico. Molecola che contiene le informazioni genetiche della maggior parte degli organismi viventi. È formata da quattro basi azotate (adenina, citosina, guanina e timina), collegate tra loro a formare un filamento a doppia elica. 2 6 Capitolo 1. Introduzione Figura 1.1: DNA ed RNA 1.2 Base Azotata 1.2 7 Base Azotata In biochimica, per base azotata si intende una delle cinque basi che compongono i nucleotidi del DNA e dell’RNA, ovvero l’adenina e la guanina - le purine - la citosina, la timina e l’uracile - le pirimidine.[1] • Nel Dna le basi azotate si accoppiano cosı̀: adenina-timina e citosinaguanina. • Nel Rna le basi azotate si accoppiano cosı̀: adenina-uracile e citosinaguanina. 1.2.1 Adenina L’adenina è una delle due basi azotate puriniche che formano i nucleotidi degli acidi nucleici DNA e RNA. Tramite legami a idrogeno, nel DNA si lega alla timina (T) e nell’RNA si lega all’uracile (U). Formula molecolare: C5 H5 N5 . NH2 N "bb " N" b " b " b b N" N "b H 1.2.2 Citosina La citosina è una delle tre basi azotate pirimidiniche che formano i nucleotidi degli acidi nucleici DNA e RNA. tramite legami a idrogeno, nel DNA e nell’RNA si lega alla guanina. Legata al ribosio forma la citidina. La citosina fu scoperta nel 1894, quando venne isolata dai tessuti del timo dei vitelli. La sua struttura fu ipotizzata nel 1903 e confermata per sintesi lo stesso anno. Non è una molecola indefinitamente stabile. Può subire una spontanea perdita del gruppo amminico e trasformarsi in uracile. Formula molecolare: C4 H5 N3 0. 8 Capitolo 1. Introduzione NH2 bN ""b b b b "b b b N" O H 1.2.3 Guanina La guanina è una delle basi azotate puriniche che formano i nucleotidi degli acidi nucleici DNA e RNA. Tramite legami a idrogeno, nel DNA e nell’RNA si lega alla citosina (C). Formula molecolare: C5 H5 N5 0. O "bb " HN" N b "b " "b NH2 " b N" b N" H 1.2.4 Uracile L’uracile è una delle due basi azotate pirimidiniche che formano i nucleotidi dell’acido nucleico RNA. Tramite legami a idrogeno, nell’RNA si lega all’adenina (A). Formula molecolare: C4 H4 N2 02 . O bN" H ""b b b b "b b b N" O H Capitolo 2 Il nostro lavoro 2.1 Scopo Lo scopo del nostro lavoro, è stato quello di creare una sequenza di RNA composta quindi da (A,C,G,U), le basi azotate; e data questa sequenza, implementare una interfaccia grafica vettoriale [2] in JavaScript che la rappresentasse. 2.2 Fasi del progetto Per la costruzione del progetto, abbiamo deciso di lavorare per task paralleli, con una suddivisione dei compiti ed una condivisione e discussione dei risultati trovati o ottenuti. 2.2.1 Ricerca L’attività di ricerca è servita per produrre il Capitolo 1, l’introduzione all’argomento, infatti nei corsi fondamentali che abbiamo seguito, in genere non vengono trattati né discussi problemi e teorie di chimica o biochimica. Tuttavia l’introduzione che abbiamo riportato noi, è soltanto un brevissimo cenno a quello che potrebbe essere l’argomento in questione. 2.2.2 Decisioni implementative Questa è stata una decisione molto importante, infatti usare un linguaggio di programmazione che permetta facilmente di ottenere delle rappresentazioni grafiche vettoriali è fondamentale. Il C si è rilevato un valido strumento dal punto di vista della totale libertà 10 Capitolo 2. Il nostro lavoro da parte del programmatore; ma per l’aspetto grafico risulta poco efficace; quindi abbiamo scelto l’ambiente Java ed in particolare JavaScript, per noi un ottimo compromesso tra programmazione e grafica, inoltre attraverso l’uso di Java, abbiamo ottenuto un Device Indipendent grazie alla Java Virtual Machine (JVM ), che permette la visualizzazione dell’applet ottenuta su un qualsiasi Browser-Like che ha una JVM. 2.2.3 Implementazione Di seguito, riportiamo una breve descrizione degli algoritmi usati nell’applet per generare la struttura di RNA; tutto il codice è reperibile e consultabile nell’Appendice A a Pagina 17. Numeri Primi L’algoritmo consiste nel trovare i numeri primi in un certo intervallo dato. Un numero primo si dice tale quando è divisibile per uno e per se stesso, quindi nell’algoritmo abbiamo testato ogni numero nell’intervallo, dividendolo per tutti i numeri primi trovati in precedenza. Il codice della funzione è riportato in Codice A.1 a Pagina 17. Controllo parità L’algoritmo consiste nel determinare la parità di un numero primo nel formato binario, cioè controllare il numero di uni presenti nella codifica. Se il numero di uni è pari allora la parità sarà 0 altrimenti sarà 1. Il codice della funzione è riportato in Codice A.2 a Pagina 17. Calcolo della sequenza delle basi azotate Prendendo a coppie due parità dell’output del precedente algoritmo, vengono determinate le basi: • (0,0) Uracile • (1,1) Adenina • (1,0) Citosina • (0,1) Guanina Il codice della funzione è riportato in Codice ?? a Pagina ??. 2.2.3 Implementazione 11 Algoritmo di inversione Data la sequenza originale (Es.: a1 , a2 · · · an ) la inverte e la salva in un array. Ottenendo an , an−1 · · · a1 . Il codice della funzione è riportato in Codice ?? a Pagina ??. Algoritmo di combinazione Confrontando la sequenza originale con la sequenza invertita, l’algoritmo trova tutte le basi azotate accoppiate all’interno di un determinato loop. Es.: arraya =GGGCCC arrayb =CCCGGG arrayc =0 0 3 • L’arraya , contiene la sequenza originale. • L’arrayb , contiene la sequenza che ha subito l’inversione • L’arrayc – La prima colonna: (0), indica la posizione nell’arraya . – La seconda colonna: (0), indica la posizione nell’arrayb . – La terza colonna indica che ci sono 3 accoppiamenti consecutivi partendo dai punti descritti in precedenza Gli accoppiamenti possibili sono: 1. AU (Adenina Uracile) - Blu Rosso 2. GC (Guanina Citosina) - Verde Giallo 3. GU (Guanina Uracile) - Verde Rosso Come output l’algoritmo scrive nella array comb[ ], l’array 3. Il codice della funzione è riportato in Codice ?? a Pagina ??. Gestione dell’orientamento Per la gestione dello spazio, siamo partiti da due punti prefissati (origine), formati dalle coordinate: (0, 0) e (10, 0). Ogni volta che dovevamo disegnare un filamento di coppie di basi azotate complementari, generavamo le coordinate del punto successivo incrementando o decrementando di 10 unità una delle due coordinate. 12 Capitolo 2. Il nostro lavoro Se il verso andava in basso incrementavamo di 10 unità l’ordinata, se il verso andava in alto, le decrementavamo di 10 unità. Per lo spostamento laterale l’ascissa, si incrementava di 10 unità a destra e decrementava di 10 se era a sinistra. (0, 0) y x / _ _ _ _ (20, 20) L’immagine sopra, mostra l’orientamento del piano dove verrà disegnata la struttura dell’RNA. 2.3 Risultati Ottenuti Il risultato ottenuto è la generazione a video della struttura dell’RNA; come mostrato in Figura 2.1. Figura 2.1: Struttura RNA 2.4 Come usare l’applet Java 2.4 13 Come usare l’applet Java Di seguito riportiamo tutto il materiale prodotto e la descrizione su come utilizzarlo ed inoltre; verrà descritto il funzionamento dell’applet. 1. Relazione completa: geo.pdf. 2. Presentazione del progetto: pre geo.pdf. 3. Home page del progetto dove è possibile reperire i punti 1 e 2. 4. Pagina di inserimento parametri (a) Inizio sequenza, (b) Fine sequenza, 5. Pagina dell’output finale con l’applet. Bibliografia [1] http://it.wikipedia.org Data accesso 08.02.2006 [2] Laura Citrini (a.a. 2005 -2006), Slides del corso di Geometria Computazionale http://www.dti.unimi.it/~citrini [3] Thomas R. Dickson (1989), Corso introduttivo di chimica Nicola Zanichelli Editore S.p.A. Bologna 16 Bibliografia Appendice A Codice Codice A.1: Numeri Primi 1 for ( i =0; i < j ; i ++) / / n u m [ j ] a r r a y d e i n u m e r i p r i m i trovati r = n % num [ i ]; / / m o d d e l n u m e r o c o n t u t t i n . p . trovati 3 if ( r == 0) var ++; 5 if ( var == 0) num [ j ] = n ; j ++; // se r = 0 , n d i v i s i b i l e per num [ i ] // v a r i a b i l e d e d i c a t e che parte con valore 0 7 / / s e v = 0 , n è u n n u m e r o p r i m o // s a l v a t a g g i o in un array // c o n t a t o r e dell ’ array num Codice A.2: Controllo della parità 1 itoa (n , bin ,2) ; 3 for ( i =0; i < strlen ( bin ) ; i ++) / / c i c l o s u l b i n a r i o d i n if ( bin [ i ] == 49) // se bin [ i ] = 1 (49 in // t r a s f o r m a z i o n e di n in binario ASCII ) , var = var + 1 var ++; // v a r i a b i l e d e d i c a t e che parte con valore 0 5 r = var *2; // mod di 2 di var (1 p r e s e n t i in n b i n a r i o ) 7 9 if ( r == 0) P ( n ) = 0; else P ( n ) = 1; // // // // s e r = 0 , v a r è p a r i p a r i t à = 0 s e r ! = 0 , v a r è d i s p a r i p a r i t à = 1 Indice analitico A R adenina . . . . . . . . . . . . . . . . . . . . . . . . . . 7 RNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Algoritmo di inversione . . . . . . . . . 11 rRNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 S B base azotata . . . . . . . . . . . . . . . . . . . . . 7 scopo del nostro lavoro . . . . . . . . . . . 9 spazio . . . . . . . . . . . . . . . . . . . . . . . . . . 11 C citosina . . . . . . . . . . . . . . . . . . . . . . . . . . 7 T coordinate . . . . . . . . . . . . . . . . . . . . . . 11 tRNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 U D Device Indipendent . . . . . . . . . . . . . 10 uracile . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 DNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 F formato binario . . . . . . . . . . . . . . . . . 10 G grafica vettoriale . . . . . . . . . . . . . . . . . 9 guanina . . . . . . . . . . . . . . . . . . . . . . . . . . 8 J JavaScript . . . . . . . . . . . . . . . . . . . . . . . 9 M mRNA . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 N Numeri Primi . . . . . . . . . . . . . . . . . . . 10 O orientamento . . . . . . . . . . . . . . . . . . . 11 P parità . . . . . . . . . . . . . . . . . . . . . . . . . . . 10