un sistema per la gestione dell’informazione nella attivit...
TRANSCRIPT
UNIVERSITA DEGLI STUDI DI VERONA
Facolta di Scienze MM.FF.NN.
Corso di Laurea in Informatica
Tesi di Laurea
Un Sistema per laGestione dell’Informazione nella
Attivita di Ricerca suFenotipi Complessi in un
Laboratorio di Genetica Umana
Relatore:
Prof. Carlo Combi
Correlatore:
Prof. Pier Franco Pignatti
Laureando:
Luciano Xumerle
ANNO ACCADEMICO 2002/2003
Ringraziamenti
Ringrazio il Dott. Giovanni Malerba, per il Suo prezioso contributo
durante la stesura di questa tesi.
Ai miei genitori va un ringraziamento per tutto quello che hanno fatto
durante i miei studi universitari.
Infine voglio ringraziare tutti i miei amici di Universita e di Laboratorio.
Riassunto
In questa tesi di Laurea viene presentato un sistema informatico per la
memorizzazione e gestione di informazioni utilizzate nelle attivita di ricerca
su malattie complesse del laboratorio di genetica umana della sezione di
Biologia e Genetica presso l’Universita degli Studi di Verona. Le informazioni
sono memorizzate in una base di dati relazionale che viene interrogata ed
aggiornata in modo automatico attraverso strumenti software sviluppati
appositamente. Il software necessario per il funzionamento e lo sviluppo
del sistema che viene proposto e distribuito con licenze Open Source.
E dimostrato l’uso del sistema per la gestione dell’informazione nei
progetti relativi allo studio genetico di asma ed di osteoporosi. Il
sistema proposto e facilmente configurabile e puo essere arricchito di nuove
funzionalita.
Indice
1 Introduzione 1
1.1 Scopo del lavoro . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Fondamenti 3
2.1 Geni e Trasmissione dei Caratteri . . . . . . . . . . . . . . . . 3
2.2 Cromosomi e geni . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Fenotipo e Genotipo . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Malattia e genetica . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5 Il difetto molecolare . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6 Alberi genealogici . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.7 Come si studiano le malattie complesse . . . . . . . . . . . . . 9
2.8 Sistemi di basi di dati per la genetica . . . . . . . . . . . . . . 11
2.8.1 Il laboratorio di genetica . . . . . . . . . . . . . . . . . 13
2.9 Esempi di sistemi per il trattamento di informazioni clinichee genetiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.9.1 Un sistema per la gestione di dati clinici e genetici inrete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
I
INDICE
2.9.2 MFG Tools . . . . . . . . . . . . . . . . . . . . . . . . 19
2.9.3 GenoDB . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3 Progettazione della base di dati per le informazioni clinichee genetiche 23
3.1 Lo schema Entita-Relazione (E-R) . . . . . . . . . . . . . . . 24
3.2 Lo schema relazionale . . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 La parte per l’amministrazione del sistema . . . . . . . 29
3.2.2 La parte per gli individui . . . . . . . . . . . . . . . . . 32
3.2.3 La parte per i genotipi . . . . . . . . . . . . . . . . . . 34
3.3 Lo schema fisico . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4 La generazione automatica delle query . . . . . . . . . . . . . 40
4 Architettura del sistema 47
4.1 Strumenti utilizzati per lo sviluppo . . . . . . . . . . . . . . . 48
4.1.1 Il sistema di basi di dati relazionale ed il linguaggio SQL 48
4.1.2 Il linguaggio Perl . . . . . . . . . . . . . . . . . . . . . 49
4.1.3 CGI e mod perl . . . . . . . . . . . . . . . . . . . . . 51
4.1.4 L’architettura del sistema . . . . . . . . . . . . . . . . 55
4.2 Lo sviluppo dei programmi e delle librerie . . . . . . . . . . . 55
4.2.1 PDB::pgc . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.2.2 PDB::bio . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.2.3 PDB::profilo . . . . . . . . . . . . . . . . . . . . . . . 60
4.2.4 PDB::SQL . . . . . . . . . . . . . . . . . . . . . . . . 63
II
INDICE
4.2.5 Gli altri moduli ed i programmi . . . . . . . . . . . . . 64
5 L’utilizzo del sistema 66
5.1 Descrizione del sistema . . . . . . . . . . . . . . . . . . . . . . 67
5.1.1 L’utilizzo dei programmi . . . . . . . . . . . . . . . . . 69
5.2 Applicazione del sistema: Asma . . . . . . . . . . . . . . . . . 84
5.3 Applicazione del sistema: Osteoporosi . . . . . . . . . . . . . . 87
5.4 Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6 Conclusioni 93
Bibliografia 96
III
Capitolo 1
Introduzione
Negli ultimi anni abbiamo assistito a una esplosione della tecnologia sia in
ambito molecolare che computazionale che ha permesso l’identificazione di
geni coinvolti nelle malattie ereditarie umane [Ris00].
Le malattie complesse (o multifattoriali) sono le malattie dove sia fattori
ambientali che genetici giocano un ruolo nella determinazione del rischio di
sviluppare la patologia (ad esempio, asma e osteoporosi) [GS01]. Il modello di
trasmissione ed i meccanismi molecolari associati nell’insorgenza e sviluppo di
tali patologie sono spesso sconosciuti e la ricerca di fattori genetici coinvolti
richiede la disponibilita di molte informazioni cliniche e genetiche per un
numero elevato di individui. La memorizzazione e gestione dei dati diventa
un elemento chiave per la successiva consultazione delle informazioni. Il
lavoro del laboratorio di genetica e volto alla caratterizzazione genetica degli
individui e, successivamente, all’analisi statistica sui dati raccolti mentre
i dati clinici degli individui ed i campioni di DNA (estratto da sangue
periferico) sono spesso forniti da collaboratori esterni.
1
1 – Introduzione
1.1 Scopo del lavoro
Scopo della tesi e documentare il lavoro svolto al fine di progettare e
implementare un sistema che, per mezzo di un sistema di base di dati ed
una serie di strumenti software, permette di gestire in maniera efficiente
ed affidabile le informazioni cliniche e genetiche necessarie nelle attivita di
ricerca sulle malattie complesse. Gli utenti registrati del sistema hanno
a disposizione una interfaccia Web per l’inserimento e la modifica dei
dati genetici progettata con lo scopo di facilitare alcune operazioni come
l’eliminazione degli errori di battitura e l’immissione dei dati [RBK94]. La
stessa interfaccia Web consente di estrarre le informazioni presenti nella base
di dati in formati utili per i programmi di analisi statistica comunemente
utilizzati.
Nella prima parte del lavoro si presentano alcuni concetti tipici della
genetica medica utili alla comprensione dei termini utilizzati in questa tesi
di laurea. Successivamente si presentano tre sistemi per il trattamento
di informazioni cliniche e genetiche utilizzati da altri laboratori. Un
capitolo e dedicato ad una dettagliata descrizione della base di dati, delle
informazioni memorizzate e delle procedure orientate alla creazione delle
interrogazioni. Dopo aver dato una panoramica degli strumenti utilizzati
per l’implementazione del nostro sistema, vengono presentate le librerie
ed i programmi che abbiamo sviluppato. Per concludere, viene mostrato
il funzionamento programmi e l’applicazione del sistema a due malattie
complesse: asma e osteoporosi.
Il lavoro e stato svolto nel laboratorio di Genetica Matematica, della
sezione di Biologia e Genetica, Dipartimento Materno Infantile e di Biologia
2
Capitolo 2
Fondamenti
Il lavoro descritto in questa tesi di laurea consiste nella progettazione e
sviluppo di una serie di strumenti informatici dedicati a compiti precisi
quali la gestione dei dati genetici ottenuti in laboratorio. Per facilitare
la comprensione di alcuni termini segue una breve introduzione su alcuni
concetti tipici della genetica.
2.1 Geni e Trasmissione dei Caratteri
Il fatto che certe caratteristiche siano trasmesse dai genitori ai figli e noto
fin dai tempi antichi. I primi studi sull’ereditarieta dei caratteri singoli
risalgono alla meta del 1700 quando un botanico tedesco di nome Joseph
Gottlieb Kolreuter (1733-1806) descrisse che incrociando 2 linee distinte
di pomodori ne otteneva una terza ibrida dove i genitori contribuivano
in parti identiche alle caratteristiche della linea ibrida, concludendo che
4
2 – Fondamenti
la trasmissione di un carattere potesse essere associato alla trasmissione
di singoli fattori [SGML92]. Gregorio Mendel (1822-1884) fu il primo a
riconoscere l’esistenza dei fattori ereditari ed a dimostrare i meccanismi
fondamentali dell’ereditarieta, servendosi di esperimenti su piante (Pisum
sativum, Lathyrus odoratus) [SGML92]. Nel 1866 postulo che dei fattori
discreti, o geni, venissero trasmessi da una generazione alla successiva (leggi
della segregazione e dell’assortimento). La genetica Mendeliana, utilizzata
nella agricoltura e zootecnia, riveste anche una grande importanza nello
studio della genetica umana.
Molte malattie nell’uomo sono causate da singoli geni.
2.2 Cromosomi e geni
I cromosomi rappresentano il materiale genetico di base per ogni organismo
vivente conosciuto [SGML92].
L’uomo, come molti altri organismi, e diploide, ossia ogni cellula porta
2 copie di ogni cromosoma. Le due copie sono dette cromosomi omologhi.
L’uomo possiede 22 coppie di cromosomi omologhi (numerati da 1 a 22 in
base alla loro lunghezza) e 2 cromosomi detti sessuali per un totale di 46
cromosomi. Per ogni cromosoma il figlio riceve un omologo dal padre e uno
dalla madre. Per i cromosomi sessuali il figlio ricevera uno dei 2 cromosomi X
dalla madre e il cromosoma X (sara femmina) o Y (sara maschio) dal padre.
Nei cromosomi sono contenuti i geni: ogni individuo porta quindi 2
copie dello stesso gene. Le due copie del gene costituiscono il genotipo
dell’individuo per il dato gene. Per ogni gene possono esistere molte varianti
5
2 – Fondamenti
dette alleli che costituiscono il pool genico della popolazione (l’insieme di
tutti i geni di una specie, ognuno con tutti i suoi alleli) [SGML92]. Ogni
individuo, essendo diploide, puo portare al massimo 2 alleli diversi tra quelli
presenti nella popolazione. L’individuo e detto omozigote se entrambi gli
alleli sono identici, mentre e eterozigote se i 2 alleli sono diversi fra loro.
2.3 Fenotipo e Genotipo
Il fenotipo di un individuo riferito ad un carattere e la forma che viene
mostrata (osservabile) e puo essere espressa sia in termini qualitativi (ad
esempio, affetto/non affetto) che quantitativi (ad esempio, altezza, peso).
La relazione tra genotipo e fenotipo puo essere piu o meno stretta. Nel
caso di una relazione diretta (carattere mendeliano) il genotipo determina
il fenotipo in accordo con un dato modello mentre per altri caratteri la
relazione e piu velata (malattie complesse) oppure inesistente (esiste la sola
componente ambientale). L’esempio del gruppo sanguigno AB0 puo essere di
aiuto per chiarire la relazione tra genotipo e fenotipo nel caso di un carattere
mendeliano. Con questo esempio si puo inoltre introdurre il concetto di
dominanza, codominanza e recessivita di un allele rispetto ad un altro [GS02].
Esistono 6 possibili genotipi (3 alleli: A,B,0). La tabella 2.3 riporta i
genotipi con il corrispondente fenotipo.
6
2 – Fondamenti
GENOTIPO FENOTIPO
AA A
A0 A
BB B
B0 B
AB AB
00 0
L’allele A domina su 0 (il genotipo A0 e associato al fenotipo A). Gli
alleli A e B sono codominanti (fenotipo AB). I genotipi AA e A0 sono
fenotipicamente indistinguibili.
2.4 Malattia e genetica
Le malattie in relazione alla loro origine possono essere classificate in 3
categorie principali [GS02]:
1. patologie ad esclusiva origine genetica o malattie Mendeliane:
seguono una segregazione (trasmissione del fenotipo o del genotipo
attraverso individui imparentati) Mendeliana (ad esempio la Fibrosi
Cistica).
2. patologie ambientali: traumi ed infezioni (ad esempio un incidente
stradale).
3. malattie multifattoriali o poligeniche: gruppo estremamente
variabile ed eterogeneo in relazione al numero di geni e dei fattori
ambientali (per esempio il diabete, il lupus, l’asma).
7
2 – Fondamenti
Questa classificazione e utile da un punto di vista didattico, ma appare
sempre piu inadeguata e semplicistica. Cio che si osserva e che il contributo
delle componenti geniche e ambientali e variabile nelle diverse malattie
[SR99].
Si parte dalle malattie mendeliane o semplici (come la fibrosi cistica o
l’emofilia) - causate dalla mutazione di un gene - per passare alle malattie
complesse o multifattoriali che risultano dalla interazione di piu geni tra loro
e di questi geni con fattori ambientali piu o meno influenti - in questo caso
i fattori genetici conferiscono solo una suscettibilita o predisposizione allo
sviluppo del disturbo.
2.5 Il difetto molecolare
Uno degli obiettivi della genetica umana e di identificare la mutazione
(alterazione) genetica che e associabile ad una patologia. L’alterazione
puo verificarsi a livello cromosomico (duplicazioni, delezioni, inversioni di
frammenti) o molecolare. Il difetto molecolare e spesso rilevato grazie a
tecniche di biologia molecolare che abitualmente si utilizzano nei laboratori
di genetica umana [BLC+01].
Il DNA (acido desossiribonucleico) e la molecola che contiene l’insieme dei
caratteri ereditari da cui dipendono l’organizzazione delle molecole proteiche
e la regolarita delle reazioni che avvengono nelle cellule. Il DNA e una lunga
catena di basi nucleotidiche (A adenina, T timina, C citosina, G guanina).
I cromosomi sono costituiti dal DNA e da una parte proteica con funzione
strutturale e regolativa. Alterazioni nella sequenza dei nucleotidi rispetto
8
2 – Fondamenti
ad una sequenza di riferimento indicano potenziali variazioni associabili ad
alterazione nel fenotipo.
Le variazioni piu comuni si riferiscono a cambiamenti di basi (lettere) in
posizioni fisse (Fig. 2.1),
Figura 2.1. Cambiamento di una base in posizione fissa: C diventa G.
oppure a delezioni/inserzioni di una o piu basi (Fig. 2.2), oppure a
Figura 2.2. Una delezione di basi. Viene perso il frammento GTGTTG.
variazioni nel numero di ripetizioni (Fig. 2.3) di un particolare motivo.
Queste variazioni sono utilizzate come marcatori molecolari per seguire la
trasmissione da genitori a figli della regione cromosomica che le contiene.
Quindi due individui possono presentare un diverso numero di ripetizioni:
questa differenza puo essere usata per distinguere il primo individuo dal
secondo.
Esistono esempi associati a patologie per tutti i tipi di variazione descritti.
9
2 – Fondamenti
Figura 2.3. Variazione nel numero di ripetizioni. Il frammentoTATATATA (1 ripetizione 4x del dinucleotide TA) diventaTATATATATATATATA (2 ripetizioni 4x del dinucleotide TA).
2.6 Alberi genealogici
Un albero genealogico (pedigree) e dato da un gruppo di individui con una
chiara relazione familiare di ognuno con gli altri [BLC+01].
I pedigree vengono rappresentati principalmente in 2 modi. Uno e quello
classico del genetista (Fig. 2.4a) e l’altro e quello del matematico (Fig.
2.4b) che organizza gli individui codificando le informazioni di relazione e
memorizzandole in un file [Lan97]. Gli individui per i quali i genitori non
sono noti sono detti fondatori.
2.7 Come si studiano le malattie complesse
Nelle malattie complesse il fattore genetico contribuisce nella suscettibilita
alla malattia ma non e di per se il fattore determinante.
Il passaggio dallo studio delle malattie monogeniche, dove l’alterazione del
gene e la causa della malattia, alle malattie multifattoriali, dove l’alterazione
e associata ad un rischio, ha visto un cambiamento nelle metodologie
applicate allo studio per la ricerca dei fattori genetici che sono associati ad
10
2 – Fondamenti
(a) Genetico (b) Matematico
Figura 2.4. I due modi di rappresentazione di un pedigree:(a) Il quadrato indica il maschio, il cerchio la femmina;(b) padre, madre: x indica genitore ignoto;(b) sesso: 1 indica il maschio, 2 la femmina.
una aumentata suscettibilita alla malattia.
Tradizionalmente gli studi genetici si possono suddividere in 2 categorie:
studi di associazione e studi familiari (studi di linkage).
Negli studi di associazione si misura la frequenza di un dato marcatore
genetico e lo si compara tra 2 o piu classi di individui (ad esempio i casi
e controlli) non imparentati tra loro. Una differenza significativa della
frequenza del marcatore e indice che uno degli alleli del marcatore e associato
alla patologia.
Con gli studi familiari si studia la segregazione congiunta (cosegregazione)
di un marcatore genetico con la malattia in accordo con il modello genetico
proposto (dominante, recessivo, e cosı via). Per marcatore si puo intendere
11
2 – Fondamenti
qualsiasi variazione osservabile che possa permettere la discriminazione di
un allele da un altro. Se il marcatore cosegrega con la malattia significa che
nella regione cromosomica dove si trova il marcatore si trova anche il gene
associato alla malattia.
C’e un’accesa discussione su quale possa essere il metodo piu appropriato
per ricercare i fattori genetici associati alle malattie comuni. Entrambi
i metodi hanno in comune delle forti richieste in termini di individui da
reclutare nello studio e di marcatori genetici da analizzare. Alcuni studi
distinti intrapresi dal nostro laboratorio hanno l’obiettivo di identificare
fattori genetici coinvolti nell’asma infantile, nelle alterazioni del metabolismo
osseo e nelle malattie cardiovascolari.
Lo studio per l’asma infantile ha richiesto l’analisi di circa 200 famiglie
(∼ 850 individui) dove ogni individuo e stato caratterizzato geneticamente
(genotipizzato) con 400 marcatori disposti lungo i cromosomi. Uno studio
analogo e stato attivato per l’identificazione di fattori genetici coinvolti
nell’osteoporosi (∼ 1700 individui). Lo studio relativo alle malattie
cardiovascolari sta coinvolgendo l’analisi di 1500 individui.
2.8 Sistemi di basi di dati per la genetica
Poiche le malattie complesse colpiscono una elevata percentuale di persone,
tali patologie sono studiate in campo medico con sempre maggior interesse
[GS01]. Le tecniche adottate per le malattie genetiche semplici sono
inadeguate. Per il genetista non e piu sufficiente studiare i pochi numeri
forniti da pedigree piuttosto estesi per un marcatore alla volta [Ott99].
12
2 – Fondamenti
Lo studio delle malattie multifattoriali richiede lo studio di migliaia di
individui con migliaia di marcatori genetici. Dati i grandi numeri in gioco
e la complessita dei sistemi oggetto di studio si rende necessario servirsi di
conoscenze e metodi che provengono da altre discipline quali l’informatica,
la statistica, la matematica.
La strategia usata nello studio delle malattie complesse si basa su due
possibili disegni: studio familiare e studio caso/controllo [Ott99].
Nel primo caso gli individui raccolti formano un set di famiglie. Per ogni
individuo bisogna fornire il maggior numero possibile di informazioni:
• la struttura della famiglia (pedigree)
• i caratteri fenotipici (eta, peso, test clinici, e cosı via)
• i dati genetici
Le prime informazioni raccolte per i singoli individui riguardano le relazioni
parentali con gli altri individui della famiglia, il sesso e l’eta. Di solito
i dati clinici sono raccolti per mezzo di questionari in forma cartacea
o in formati elettronici non standard [MTK+98]. Le famiglie composte
da molti individui distribuiti su piu generazioni sono le piu informative
durante gli studi linkage o di segregazione. Con lo studio di segregazione
si cerca di individuare il miglior modello di trasmissione della malattia (ad
esempio ambientale, poligenico, oligogenico, mendeliano) [Ott99]. Il linkage
rappresenta la tendenza di due geni a essere ereditati insieme in virtu della
loro vicinanza fisica su un cromosoma [GS01]. L’analisi di linkage ha sfruttato
questa caratteristica per identificare, attraverso l’uso di sequenze specifiche
13
2 – Fondamenti
di DNA (i marcatori), i geni malattia che si trasmettono in alcune grandi
famiglie [GS01].
Nel caso di studi caso/controllo, individui affetti (casi) vengono
confrontati con individui non affetti (controlli) per cercare di determinare
dei fattori di rischio che ci attendiamo essere piu presenti nei casi [Ott99].
2.8.1 Il laboratorio di genetica
Per condurre le analisi cliniche e gli studi genetici, e necessario raccogliere dei
campioni di DNA di tutti gli individui. Il laboratorio che raccoglie i campioni
puo essere diverso dal laboratorio che esegue lo studio genetico: in tal caso
il laboratorio di genetica deve assegnare ad ogni campione di DNA raccolto
il codice dell’individuo e provvedere allo stoccaggio ed alla conservazione di
tutti i campioni.
Genotipizzazione degli individui
Quando i campioni di DNA sono disponibili al laboratorio di genetica e
possibile procedere nello studio con la genotipizzazione degli individui per
diversi marcatori [MTK+98].
Lo studio di una malattia complessa richiede la genotipizzazione di
un grande numero di individui per un elevato numero di marcatori sia
per studi di scansione genomica che per studi dettagliati di linkage
disequilibrium (associazione preferenziale di alleli di diversi marcatori) in
regioni cromosomiche ristrette [Ris00]. La mole di dati genetici prodotti
14
2 – Fondamenti
cresce molto rapidamente con l’avanzare dello studio ed occorrono sistemi per
memorizzare, correggere e richiamare le informazioni necessarie [LDL+01].
La genotipizzazione dei marcatori e soggetta ad errori che dipendono da vari
fattori:
• condizioni sperimentali
• errori umani:
– puo essere difficile interpretare i risultati sperimentali
– l’operatore deve inserire i valori dei due alleli che descrivono un
singolo genotipo per tutti gli individui ed i marcatori: questa
operazione e spesso soggetta ad errori di battitura.
Memorizzazione dei dati genetici prodotti
Molti laboratori si affidano a normali “fogli elettronici” per la memorizzazione
dei dati genetici prodotti, ma tale scelta puo essere vantaggiosa solo per
piccole quantita di dati poiche non e possibile strutturare i dati e la
dimensione del foglio elettronico puo essere limitata (ad esempio, un foglio
di MS Excel ha dimensione massima di 65536 righe per 256 colonne [Inc03]).
Un’altra scelta possibile e quella di un piccolo sistema di basi di dati (ad
esempio, MS Access) che pero e spesso sottoutilizzato in quanto gli utenti
hanno una conoscenza limitata delle potenzialita del software. Una base di
dati relazionale ben progettata puo permettere di maneggiare con efficienza
ed affidabilita tutte le informazioni necessarie.
15
2 – Fondamenti
Estrazione ed analisi statistiche dei dati
I dati precedentemente memorizzati devono essere estratti in un formato
compatibile con il programma di statistica che l’operatore desidera utilizzare.
Nel caso di basi di dati relazionali l’operatore deve conoscere la struttura della
base di dati ed il linguaggio SQL per poter effettuare le interrogazioni. La
creazione di strumenti software per l’estrazione dei dati e la creazione dei
file utilizzati dai programmi di statistica permette a tutti gli operatori di
consultare le informazioni necessarie e di poter eseguire delle analisi.
Sui dati estratti vanno condotte alcune semplici analisi statistiche utili
per produrre una statistica descrittiva del campione analizzato come, ad
esempio, il calcolo della frequenza degli alleli. Tra i test abitualmente
utilizzati ricordiamo il test che compara le frequenze dei genotipi osservati
rispetto la distribuzione attesa sotto l’ipotesi del libero assortimento degli
alleli negli individui di una popolazione. Le cause di una differenza
significativa nella distribuzione - verificate attraverso il test di Hardy-
Weinberg - possono essere attribuite ad un qualsiasi fenomeno biologico che
impedisce il libero assortimento degli alleli (fenomeni selettivi dove viene
selezionato un particolare genotipo e fenomeni migratori) oppure a cause
sperimentali (una non accurata lettura dei genotipi) [SGML92] [MXP03].
E possibile inoltre condurre analisi genetiche tramite programmi
statistici sviluppati appositamente, come GeneHunter [KDRDL96] e Merlin
[ACCC02], per trovare dei marcatori associati alle malattie studiate.
16
2 – Fondamenti
2.9 Esempi di sistemi per il trattamento di
informazioni cliniche e genetiche
Consultando la letteratura sono stati individuati tre sistemi orientati alla
gestione e memorizzazione delle informazioni cliniche e genetiche necessarie
durante lo studio su una malattia complessa.
I tre sistemi propongono approcci diversi per affrontare il problema ma
sono accomunati da due fattori:
• tutte le informazioni sono memorizzate in una base di dati relazionale;
• i sistemi utilizzano software proprietario per il funzionamento.
Di seguito proponiamo una breve disamina dei tre sistemi:
• un sistema per la gestione di dati clinici e genetici in rete (sezione 2.9.1)
[MTK+98];
• MFG Tools (sezione 2.9.2) [IDoMotCK00];
• GenoDB (sezione 2.9.3) [LDL+01].
2.9.1 Un sistema per la gestione di dati clinici e
genetici in rete
Il sistema e diviso in 4 moduli ed ogni modulo e gestito da un client
[MTK+98].
17
2 – Fondamenti
L’hardware richiesto e costituito da un computer IBM compatibile (PC)
che opera da server, da alcuni PC che ospitano diversi moduli del sistema
e da un Apple Macintosh per il modulo dei genotipi. I PC utilizzati per
ospitare uno o piu moduli del sistema - a seconda delle necessita del singolo
laboratorio - operano come client, possono essere meno potenti del server ed
essere collocati in laboratori diversi.
Figura 2.5. I 4 moduli connessi al server centrale
I moduli offerti dal sistema sono 4 e permettono di gestire i dati clinici, i
dati genetici, la quantita ed il luogo di stoccaggio per i campioni di DNA di
ogni individuo, e lo sviluppo delle linee cellulari (colture di cellule in vitro)
(Fig. 2.5).
Il sistema operativo e MS Windows NT per il server e MS Windows
3.1 per i client, il sistema di basi di dati relazionale e il Borland Paradox
5.0 ed il programma per la rappresentazione grafica dei pedigree e Cyrillic
2.1. Il computer Macintosh e necessario perche il software che permette di
estrarre i dati dal sequenziatore di DNA e disponibile solo per questo tipo di
macchina. Il sequenziatore di DNA e la macchina utilizzata per estrarre delle
18
2 – Fondamenti
sequenze localizzate di DNA. Gli utenti utilizzano i pacchetti GeneScan 2.1c2
[Bioa] e GenoTyper 1.1 [Biob] - forniti con il sequenziatore - per effettuare
una gestione semi-automatica dei dati prodotti dal sequenziatore. Tutti i
programmi che permettono le operazioni di inserimento dati, di generazione
di report dalla base di dati e di formattazione dei dati estratti sono stati
sviluppati in MS Visual Basic appositamente per il sistema.
Lo schema della base di dati e diviso in 4 parti - corrispondenti ai 4 moduli
- connesse alla relazione Master Pedigree. Questa rappresenta le informazioni
principali sugli individui come gli ID univoci, la struttura della famiglia, il
probando (individuo che arriva alle osservazioni del medico e attraverso il
quale si procede poi alla raccolta delle informazioni relative ai familiari) e gli
ID alternativi che possono essere assegnati dai vari laboratori agli individui
stessi.
Le altre relazioni del sistema rappresentano le informazioni gestite dai 4
moduli disponibili:
• le relazioni che descrivono i caratteri clinici degli individui contengono
informazioni sui caratteri fenotipici, sullo stato delle famiglie (criteri
di selezione, stato della famiglia, e cosı via) e sui dati amministrativi
(pagamenti, consensi allo studio, e cosı via).
• un diverso gruppo di relazioni descrive le informazioni sui campioni di
DNA, come il frigorifero in cui si trova la provetta, la quantita residua
e l’individuo a cui e stato fatto il prelievo.
• il gruppo di relazioni che descrive la linea cellulare contiene le
informazioni sulle culture cellulari.
19
2 – Fondamenti
• Le relazioni che descrivono i dati genetici degli individui contengono
le informazioni sui marcatori (posizione sul cromosoma e, se possibile,
gene di appartenenza) ed i genotipi degli individui.
L’estrazione delle informazioni contenute nella base di dati avviene
attraverso i moduli del sistema. Inoltre e possibile esportare un file
compatibile con il programma Cyrillic 2.1 per generare un pedigree.
Il sistema permette di gestire tutte le informazioni necessarie allo studio di
malattie complesse (individui, struttura delle famiglie, fenotipi e genotipi) ed,
in aggiunta, informazioni relative ai campioni di DNA ed alle linee cellulari.
2.9.2 MFG Tools
MFG Tools [IDoMotCK00] e un sistema integrato che permette la gestione
di individui, fenotipi e genotipi. Funziona con il sistema operativo MS
Windows, utilizza il sistema di basi di dati relazionale MS SQL Server 7.0 per
la memorizzazione dei dati e fornisce alcuni programmi - e possibile scaricare
il codice sorgente - sviluppati con il linguaggio MS Visual Basic.
Il sistema e diviso in due parti distinte: una parte clinica, dove risiedono
tutte le informazioni relative agli individui, alla struttura delle famiglie ed
ai fenotipi, e una parte genetica dove sono memorizzati tutti i dati relativi
alle condizioni sperimentali (nome del marcatore, nome del gene, i reagenti
utilizzati durante l’esperimento, e cosı via) ed i genotipi degli individui.
Ogni operatore e il proprietario dei dati da lui inseriti e, con
20
2 – Fondamenti
l’amministratore di sistema, e il solo che puo permettere accessi in
lettura/scrittura agli altri utenti.
Lo schema della base di dati e diviso in parti distinte che rappresentano
vari gruppi di informazioni. La parte piu importante dello schema e quella
che rappresenta gli individui. Ogni individuo viene contrassegnato con un ID
univoco e per ogni ID sono disponibili le informazioni relative alla struttura
della famiglia (individuo, padre e madre), al sesso, all’eta e all’indirizzo. Sono
inoltre memorizzate informazioni riguardanti gli istituti (nome, indirizzo,
telefono, fax e cosı via) che hanno raccolto i dati. Tutte le relazioni della base
di dati sono collegate a questa parte di schema per mezzo di una relazione
che descrive gli ID univoci degli individui.
Di solito gli istituti che raccolgono gli individui raccolgono anche
le informazioni cliniche che costituiranno il set di caratteri fenotipici:
quest’ultimi vanno a costituire un’altra parte della base di dati.
Un’altra parte dello schema descrive tutte le informazioni necessarie per
conoscere la locazione esatta di ogni campione di DNA raccolto (laboratorio,
frigorifero e tipo di frigorifero), lo stato del campione, le date del prelievo,
l’esecutore del prelievo, la categoria del campione e l’ID dell’individuo a cui
e stato fatto il prelievo.
La parte piu estesa dello schema e riferita alla memorizzazione dei dati
genetici (condizioni sperimentali, genotipi, marcatori).
Quando tutti i dati sono disponibili, il sistema permette di verificare la
correttezza della segregazione dei genotipi all’interno delle famiglie (controllo
della segregazione mendeliana).
21
2 – Fondamenti
Il sistema fornisce metodi per l’esportazione dei dati memorizzati nella
base di dati su file di testo compatibili con i programmi di elaborazione
statistica.
MFG Tools permette di gestire tutte le informazioni necessarie allo studio
di malattie complesse (individui, struttura delle famiglie, fenotipi e genotipi)
ed, in aggiunta, informazioni relative ai campioni di DNA.
2.9.3 GenoDB
Il sistema GenoDB [LDL+01] propone un soluzione per gestire
genotipizzazioni condotte su larga scala. Non e progettato per gestire le
informazioni cliniche degli individui.
GenoDB gira su macchine con sistema operativo MS Windows NT
ed e una applicazione sviluppata per il database MS Access. Il sistema
e finalizzato all’automazione del processo di genotipizzazione. Tutte le
operazioni sono svolte attraverso delle maschere di MS Access fornite da
GenoDB e possono essere svolte in serie o separatamente. I dati prodotti dal
sequenziatore di DNA vengono elaborati da uno o piu tecnici specializzati
di laboratorio in modo semi-automatico con i programmi GENESCAN 3.1
[Bioa] e GENOTYPER 2.1 [Biob].
Lo schema della base di dati rappresenta solo i genotipi e la struttura delle
famiglie ed e costituito da poche relazioni. La relazione pedigree contiene
gli attributi che indicano la struttura della famiglia. Una relazione DNA
connette ogni individuo con i suoi campioni di DNA e ogni campione di DNA
con i genotipi della relazione genotipi. La relazione genotipi rappresenta le
22
2 – Fondamenti
informazioni sui genotipi utilizzando tre coppie di attributi per memorizzare
le informazioni sui genotipi:
1. genotipi prodotti dalla macchina;
2. genotipi proposti dai tecnici di laboratorio;
3. genotipi verificati e corretti dalla lettura di 1 e 2 che possono essere
utilizzati nelle analisi successive.
Il sistema permette di gestire tutte le operazioni coinvolte nelle fasi di
genotipizzazione. La procedura per il riconoscimento degli errori permette di
usare solo genotipi corretti nelle analisi. Il sistema memorizza anche le fasi
intermedie delle genotipizzazioni e permette di ripristinare i vecchi dati nel
caso di aggiornamenti errati.
GenoDB permette di gestire gli individui, la struttura delle famiglie e la
parte genetica ma non prevede la memorizzazione dei fenotipi. L’estrazione
delle informazioni prevede una formattazione dei dati compatibile con quella
utilizzata dal programma PedCheck che esegue il controllo della segregazione
mendeliana [OW98].
23
Capitolo 3
Progettazione della base di dati
per le informazioni cliniche e
genetiche
Il sistema da noi sviluppato si serve del sistema di basi di dati PostgreSQL
per la memorizzazione delle informazioni relative agli individui, alla struttura
delle famiglie, ai fenotipi ed ai genotipi. In aggiunta a queste informazioni
nella base di dati sono memorizzati anche i dati degli utenti che accedono
al servizio: cosı facendo possiamo regolamentare i permessi su ogni singolo
attributo di una tabella ed aumentare la sicurezza del sistema poiche un
utente puo accedere ai dati solo attraverso i programmi da noi sviluppati.
La progettazione della base di dati e iniziata con lo sviluppo di uno schema
Entita Relazione (E-R) che ha aiutato a visualizzare l’organizzazione delle
informazioni contenute nella base di dati senza badare alla memorizzazione
fisica dei dati [ACPT99].
24
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
Successivamente lo schema E-R e stato tradotto verso un modello logico
che aiuta ad individuare graficamente i legami esistenti tra le varie tabelle
della base di dati [ACPT99].
Come ultimo passo della progettazione si e aggiunta una definizione dei
parametri fisici di memorizzazione dei dati al modello logico - nel nostro caso
si tratta di un modello relazionale - per definire lo schema fisico che poi
viene creato attraverso i costrutti del linguaggio SQL per lo specifico DBMS
adottato [ACPT99].
La numerosita dei dati contenuti nella base di dati ed il tipo di
risultato richiesto dai programmi di elaborazione statistica rendono laboriosa
l’estrazione delle informazioni. Per facilitare questa operazione, abbiamo
sviluppato degli strumenti che permettono agli utenti di ottenere le
informazioni in modo automatico e senza conoscere la struttura della base di
dati, continuamente soggetta ad aggiunte e modifiche da parte degli utenti.
3.1 Lo schema Entita-Relazione (E-R)
Lo schema E-R vuole dare una descrizione grafica autoesplicativa della realta
di interesse senza scendere nei dettagli implementativi. I costrutti che
vengono utilizzati durante lo sviluppo dello schema sono le entita, le relazioni
e gli attributi [ACPT99].
Una entita, indicata graficamente con un rettangolo, rappresenta classi
di oggetti (persone, luoghi, etc.) che possiedono proprieta comuni ed una
esistenza autonoma mentre una relazione, indicata graficamente con un
rombo, rappresenta un legame logico, con dei vincoli di cardinalita minima
25
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
e massima, verso le entita alle quali e connessa.
Figura 3.1. Esempio di due entita ed una relazione. La relazionememorizza presenta un vincolo di cardinalita minima uguale a zero perl’entita admin user in quanto non e detto che un utente abbia inseritodei messaggi e un vincolo di cardinalita minima e massima uguale ad unoper l’entita admin usr msg in quanto ogni messaggio esiste solo se vieneinserito da un utente. L’entita admin usr msg ha un identificatore formatodall’attributo id memo piu l’identificatore esterno login che e, a sua volta,identificatore dell’entita admin user.
L’attributo descrive delle proprieta elementari delle entita o delle relazioni
come, ad esempio, il nome, il cognome, la data di nascita e l’eta di una
entita individuo ed e rappresentato graficamente come un ellisse. Gli attributi
che sono utilizzati per identificare univocamente ogni occorrenza dell’entita
hanno il nome sottolineato (Fig. 3.1).
I nomi che abbiano assegnato alle entita hanno dei prefissi - “fml”, “phnt”,
“chr”, “web” o “admin” - che vengono usati per aiutare l’amministratore a
comprenderne la funzione. Le entita che memorizzano le modifiche fatte sui
dati genetici dagli utenti hanno il nome che termina con il suffisso “ log”.
Per non appesantire eccessivamente lo schema E-R (Fig. 3.2),
mostriamo soltanto gli identificatori delle entita in quanto tutti gli attributi
presenti all’interno delle entita saranno indicati successivamente durante la
presentazione dello schema logico (Fig. 3.3).
Le entita aventi nome con prefisso “admin” descrivono le modalita di
26
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
Figura 3.2. Lo schema E-R 27
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
accesso alla base di dati per ogni singolo utente. L’entita admin user contiene
le informazioni sul nome dell’utente, la password, l’indirizzo e-mail, un campo
per decidere se l’utente e o no amministratore e la login (il nome utente)
come identificatore. A questa sono relazionate le entita web locus dove sono
memorizzati i singoli marcatori (la relazione descrive i permessi di lettura
e scrittura sui singoli marcatori), admin user msg dove l’utente puo salvare
delle note e admin log dove vengono memorizzati gli accessi degli utenti al
sistema. Abbiamo preferito gestire direttamente l’autenticazione degli utenti
nella base di dati, sebbene ogni RDBMS ne fornisca una propria, per poter
avere un controllo piu fine sulle operazioni che si possono fare. Vogliamo
regolamentare i permessi di lettura e scrittura di ogni singolo marcatore
mentre i permessi per gli utenti della base di dati sono sempre riferiti ad
una tabella. Inoltre, poiche la login e la password fornite agli utenti del
sistema permettono solo di accedere ai programmi ma non direttamente alla
base di dati, l’utente che viene utilizzato dai programmi per accedere alla
base di dati e noto solo agli amministratori del sistema con un conseguente
incremento della sicurezza.
Le entita che hanno prefisso “fml” descrivono gli individui, la struttura
della famiglia ed alcuni parametri clinici. Le informazioni principali
di un individuo sono contenute nell’entita fml individuo e consistono
dell’identificatore id, del nome e cognome, del numero della famiglia di
appartenenza (se presente e unico per ogni famiglia), del numero univoco
dell’individuo (ogni individuo ha un numero che lo identifica all’interno
di una famiglia), dei numeri univoci nella famiglia del padre e della
madre dell’individuo, del probando (1=si, 0=no), del sesso (1=maschio,
2=femmina), dell’eta, della data di nascita e di una stima della quantita di
DNA disponibile. L’entita fml individuo e in relazione con le altre entita
28
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
di prefisso “fml”: fml num e fml conv all. In fml num sono presenti i
nomi dei laboratori che hanno raccolto gli individui, il numero identificativo
utilizzato per ogni famiglia, il numero univoco generale che intendiamo
assegnare ad ogni famiglia ed un valore che indica quali famiglie utilizzare o
no durante l’estrazione delle informazioni. L’entita fml conv all descrive le
corrispondenze tra gli identificatori che utilizziamo nella base di dati e quelli
adottati dal laboratorio che compie le genotipizzazioni.
Le entita di prefisso “web” contengono tutte le informazioni necessarie
per la gestione dei dati genetici che vengono inseriti dagli utenti attraverso
l’interfaccia Web da noi creata. Per i marcatori, descritti nell’entita web locus
e identificati dal nome del marcatore, rappresentiamo il nome del gene e del
cromosoma, il numero degli alleli, gli alleli presenti, l’operatore che inserisce
i dati, la data di ultima modifica, le condizioni sperimentali (primer forward,
primer reverse, condizioni della PCR, enzima e condizioni di digestione),
un memo e le modifiche operate sui dati. Con la PCR (Polymerase Chain
Reaction) si ottiene una grande quantita (amplificazione) di DNA di un
frammento selezionato tramite la reazione di restrizione enzimatica a partire
dal DNA stesso del campione che si sta analizzando. L’analisi del DNA
attraverso restrizione enzimatica e una tecnica che permette di distinguere un
frammento di DNA in relazione alla presenza di un certo pattern di nucleotidi
in una data posizione (ad esempio, se il pattern e presente, l’enzima taglia
il frammento) [SR99]. Gli alleli di ogni marcatore ed il loro ordine sono
descritti nell’entita web allele e sono identificati dal nome del marcatore e dal
nome dell’allele. La relazione web genotipi presente tra le entita web locus e
fml conv all descrive i due alleli che definiscono il genotipo di un individuo
per un marcatore. Tutte le modifiche apportate ai loci ed ai genotipi sono
memorizzate nelle tabelle di log web genotipi log e web locus log.
29
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
3.2 Lo schema relazionale
Il passaggio da un modello concettuale - lo schema E-R - ad un modello
logico - il modello relazionale - non si realizza con una semplice traduzione
poiche possono essere fatte delle ristrutturazioni per soddisfare due esigenze:
“semplificare” la traduzione e “ottimizzare” il progetto [ACPT99]. L’esigenza
di ottimizzare il progetto deriva dal fatto che, mentre lo schema E-R ha
come obiettivo la rappresentazione naturale dei dati, la progettazione logica
e orientata all’effettiva realizzazione dell’applicazione ed all’ottimizzazione
delle prestazioni. Semplificare lo schema permette di utilizzare query meno
“complesse” e di velocizzare il sistema. Nel passaggio verso lo schema
relazionale vanno tradotte per prime le entita con delle relazioni, poi le entita
con gli identificativi esterni ed infine le associazioni tra le entita.
3.2.1 La parte per l’amministrazione del sistema
La traduzione relativa alla parte per l’amministrazione del sistema non
necessita di particolari ristrutturazioni e da il seguente risultato:
admin user(login, passwd, nome, email, admin)
admin table(login, tab, locus, read, write)
admin log(identif, login, time, ip add)
admin user msg(id memo,:::::::utente, data, memo, priorita, is admin)
dove con nome attributo indichiamo la PRIMARY KEY della relazione e
con:::::::::::::::::nome attributo le FOREIGN KEY. Un vincolo di integrita referenziale o
FOREIGN KEY crea un legame tra i valori di un attributo A1 di una relazione
R1 ed i valori di un attributo A2 di una relazione R2, imponendo che ogni
valore non nullo assunto dall’attributo A1 nelle righe di R1 sia presente
30
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
tra i valori assunti dall’attributo A2 della relazione R2. Per applicare
il vincolo di FOREIGN KEY e necessario che l’attributo A2 della relazione
R2 sia soggetto ad un vincolo di UNIQUE o PRIMARY KEY. Un vincolo di
UNIQUE viene applicato su uno o piu attributi ed impone che i valori degli
attributi coinvolti siano presenti in una ed una sola riga della tabella. La
sola eccezione riguarda il valore nullo, che puo essere ripetuto su piu righe
[ACPT99].
La relazione admin user memorizza la login, la password ed alcune
informazioni necessarie per descrivere gli utenti:
• login: PRIMARY KEY della relazione
• passwd: definito come NOT NULL
• nome: definito come NOT NULL
• email: facoltativo
• admin: indica se login e un amministratore o no. Definito come NOT
NULL con valore di DEFAULT=’f’
admin table rappresenta i permessi concessi agli utenti: ogni record
setta i permessi di lettura e scrittura per l’attributo di una relazione della
base di dati. Ogni utente e abilitato alla lettura di tutti i campi presenti
nelle relazioni mentre i permessi di scrittura devono essere settati dagli
amministratori.
• login, tab, locus: PRIMARY KEY della relazione. L’attributo login
e un identificatore esterno riferito alla PRIMARY KEY della relazione
31
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
admin user. Gli attributi locus e tab permettono di identificare un
marcatore (attributo locus) che si trova all’interno di una relazione
(attributo tab) della base di dati.
• read: definito come NOT NULL con valore di DEFAULT=’t’. Di
default, ogni utente puo accedere a tutti i dati in lettura
• write: definito come NOT NULL con valore di DEFAULT=’f’ (false).
Di default, l’utente non puo compiere modifiche o inserimenti. Solo
l’amministratore puo settare il valore dell’attributo a ’t’ (true).
admin user msg contiene messaggi inseriti dagli utenti o dagli
amministratori. E possibile dare una priorita ad ogni messaggio inserito.
• id memo: PRIMARY KEY della relazione
•:::::::utente: e un identificatore esterno riferito alla PRIMARY KEY della
relazione admin user
• data: la data dell’inserimento definita come NOT NULL
• memo: la nota inserita dall’utente definita come NOT NULL
• priorita: l’importanza del messaggio
• is admin: indica se il messaggio riguarda l’amministrazione del sistema
o no. Definito come NOT NULL con valore di DEFAULT=’f’
admin log mantiene traccia degli accessi al sistema da parte degli utenti.
Per ogni connessione sono memorizzate la data, una stringa random utilizzata
dai programmi CGI per identificare la connessione e l’indirizzo IP dell’utente
connesso.
32
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
• identif, login: PRIMARY KEY della relazione. L’attributo identif e
la stringa random diversa per ogni connessione effettuata dagli utenti.
L’attributo login e un identificatore esterno riferito alla PRIMARY
KEY della relazione admin user.
• time: definito come NOT NULL
• ip add: indirizzo IP dell’utente definito come NOT NULL
3.2.2 La parte per gli individui
La traduzione della parte di schema che descrive gli individui e la struttura
delle famiglie da il seguente risultato:
fml num(fam num, fam, lab, cat)
fml individuo(id,::::fam∗, sbj, fth, mth, nome, sex, age, date, fake)
fml conv all(id est, geno lab,:::id, usa, note)
La relazione fml num memorizza le informazioni che riguardano le
famiglie. In questo modo assegniamo ad ogni famiglia un numero univoco
fam_num utilizzato dai programmi di elaborazione statistica.
• fam num: PRIMARY KEY della relazione. Il numero univoco
assegnato ad ogni famiglia della base di dati
• fam: definito come NOT NULL. E il numero univoco assegnato alla
famiglia dal laboratorio lab che ha raccolto i dati clinici.
• lab: il nome del laboratorio, definito come NOT NULL.
33
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
• cat: definito come NOT NULL. Consente di raggruppare le famiglie
in set diversi con uno valore scelto dall’amministratore. Ad esempio,
possiamo volere solo le famiglie in cui c’e una coppia di fratelli affetti
oppure ignorare una famiglia poiche non si ha disponibilita di DNA.
fml individuo memorizza le informazioni principali degli individui e la
struttura della famiglia di appartenenza.
• id: identificatore degli individui, definito come PRIMARY KEY della
relazione.
•::::fam∗: Il numero univoco della famiglia. E un identificatore esterno
riferito alla PRIMARY KEY della relazione fml num. Il simbolo ∗
indica che il vincolo di cardinalita minima presente nella relazione dello
schema E-R e zero.
• sbj: il numero univoco dell’individuo all’interno di una famiglia
• fth: il numero univoco del padre all’interno della famiglia
• mth: il numero univoco della madre all’interno della famiglia
• nome: il nome e cognome dell’individuo
• sex: definito come NOT NULL. Prende valori 1 o 2 (maschio o femmina
rispettivamente).
• age: l’eta dell’individuo
• date: la data di nascita
34
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
• fake: indica la quantita di DNA disponibile. Se settato a -1000
l’individuo non e considerato. Ad esempio, bisogna scegliere un solo
individuo tra i gemelli omozigoti.
fml conv all mantiene le corrispondenze tra gli ID della base di dati
ed i codici utilizzati dal laboratorio che compie le analisi genetiche. Viene
definito un vincolo di UNIQUE sugli attributi geno_lab ed id per garantire
che ogni laboratorio utilizzi una sola volta l’individuo.
• id est, geno lab: PRIMARY KEY della relazione. L’attributo id_est
e l’identificatore utilizzato dal laboratorio geno_lab
•::id: definito come NOT NULL E un identificatore esterno riferito alla
PRIMARY KEY della relazione fml num.
• usa: definito come NOT NULL con valore di default = ’t’.
L’amministratore puo decidere se rendere visibile o no un individuo
durante la genotipizzazione. Ad esempio puo capitare che il laboratorio
che esegue le genotipizzazioni abbia piu identificatori riferiti allo stesso
individuo.
• note: note dell’amministratore
3.2.3 La parte per i genotipi
Il modello relazionale che ottenuto dalla traduzione della parte di schema
E-R che descrive i genotipi diventa:
web locus(nome, gene, cromosoma,:::::::autore, ultima modifica,
35
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
numero alleli, primer frv, primer rev, condizioni pcr, enzima,
condizioni digestione, memo)
web allele(allele, locus, num)
web genotipi(id, geno lab, locus, all 1, all 2, seleziona, memo)
web locus log(nome, gene, cromosoma,::::::::autore, ultima modifica,
numero alleli, primer frv, primer rev, condizioni pcr, enzima,
condizioni digestione, memo)
web genotipi log(::id,
:::::::::geno lab, locus, utente, data, old 1, old 2,
new 1, new 2)
L’entita web locus rappresenta i marcatori e le condizioni sperimentali
utilizzate nella genotipizzazione.
• nome: PRIMARY KEY della relazione. Il nome del marcatore.
• gene: il gene in cui e localizzato il marcatore
• cromosoma: il cromosoma sul quale e localizzato il marcatore
•:::::::autore: l’utente che inserisce le informazioni sul marcatore. E un
identificatore esterno riferito alla PRIMARY KEY della relazione
admin user.
• ultima modifica: definito come NOT NULL. La data della modifica
• numero alleli: gli alleli che possono formare il genotipo
• primer frv: il primer forward (reagente utilizzato per la PCR)
36
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
• primer rev: il primer reverse (reagente utilizzato per la PCR)
• condizioni pcr: le condizioni usate nella PCR
• enzima: reagente per la reazione di restrizione enzimatica
• condizioni digestione: le condizioni sperimentali (tempo e
temperatura) per la reazione di restrizione enzimatica
• memo: le note dell’utente
web allele descrive gli alleli di ogni marcatore presente nella relazione
web locus.
• allele, locus: PRIMARY KEY della relazione. L’attributo allele
contiene i valori degli alleli. L’attributo locus e un identificatore
esterno riferito alla PRIMARY KEY della relazione web locus.
• num: il numero d’ordine degli alleli
web genotipi memorizza, per ogni individuo presente, il genotipo
corrispondente ad ogni marcatore presente.
• id, geno lab, locus: PRIMARY KEY della relazione. Gli attributi id e
geno_lab sono identificatori esterni riferiti alla PRIMARY KEY della
relazione fml conv all mentre locus e un identificatore esterno riferito
alla PRIMARY KEY della relazione web locus
• all 1: il primo allele del genotipo
• all 2: il secondo allele del genotipo
37
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
• seleziona: definito come NOT NULL con valore di default ’t’.
L’amministratore decide se utilizzare o no un individuo.
• memo: l’utente puo inserire una breve nota. Ad esempio, il genotipo e
da rifare.
Le relazioni web locus log e web genotipi log memorizzano, aggiungendo
la data dell’inserimento, tutti gli attributi presenti nelle relazioni web locus e
web genotipi allo scopo di mantenere traccia delle modifiche apportate dagli
utenti.
3.3 Lo schema fisico
Lo schema fisico descrive come sono organizzate fisicamente le informazioni
che sono memorizzate nella base di dati. Per mezzo di una rappresentazione
grafica (Fig. 3.3) - prodotta utilizzando i programmi autodoc [Tay99] e dia
[Lar99] - mostriamo, per ogni tabella, il tipo di dato degli attributi con i
relativi valori di default (se presenti) e le informazioni previste dal modello
relazionale come le PRIMARY KEY, le FOREIGN KEY ed i vincoli di UNIQUE.
Tutte le relazioni rappresentate nello schema logico hanno una tabella
corrispondente all’interno dello schema fisico. Quest’ultimo viene ampliato
con delle tabelle il cui nome ha prefisso “phnt” o “chr” contenenti
rispettivamente informazioni sui fenotipi o sui genotipi. Queste tabelle
hanno un attributo id definito sia come PRIMARY KEY che come FOREIGN KEY
(riferita alla PRIMARY KEY della relazione fml individuo) piu un numero
variabile di campi aggiuntivi. Ogni campo delle tabelle con prefisso “phnt”
memorizza un fenotipo diverso mentre, nel caso di tabelle con prefisso “chr”,
38
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
Figura 3.3. Lo schema logico 39
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
ogni marcatore e composto da due colonne contenenti la coppia di alleli del
un genotipo (Fig. 3.3). Abbiamo deciso di strutturare le tabelle in questo
modo per una serie di motivi che andiamo ad elencare:
La rappresentazione dei dati clinici e genetici vuole essere il piu possibile
conforme al formato tabellare utilizzato dai programmi di elaborazione
statistica per velocizzare le operazioni di estrazione dei dati.
Possiamo assegnare ad ogni fenotipo o genotipo il tipo di dato che
meglio lo rappresenta, in quanto, i fenotipi possono essere qualitativi
(es. affetto/non affetto, si/no, 0/1/2) o quantitativi (es. indicano il
valore numerico, intero o reale, di un test clinico) mentre i due alleli
che descrivono il singolo genotipo possono assumere valori numerici o
alfanumerici.
La maggior difficolta richiesta per l’aggiornamento dei dati sulle tabelle
e trascurabile poiche si tratta di un operazione poco frequente in
quanto:
• i fenotipi vengono forniti da laboratori esterni e, di solito, non
necessitano di modifiche;
• i genotipi dei marcatori che sono memorizzati in queste tabelle
provengono dai genotipi inseriti via Web: questi vengono spostati
solo quando il laboratorio termina la genotipizzazione di tutti gli
individui per un marcatore e ne verifica la correttezza.
All’interno delle tabelle utilizziamo i valori nulli per descrivere l’assenza di
informazione poiche non e sempre possibile avere i dati per tutti gli individui
(ad esempio, per la terminazione del DNA).
40
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
3.4 La generazione automatica delle query
Le query (o interrogazioni) del sistema, che estraggono i dati contenuti nella
base di dati in formati compatibili con i programmi di elaborazione statistica
adottati dagli utenti, vengono generate automaticamente utilizzando i metodi
e le funzioni contenuti nei moduli perl (Sezione 4.2) che abbiamo creato
appositamente.
Per semplificare la creazione della query abbiamo creato una “vista”
fenotipi che contiene tutte le informazioni relative agli individui, alla
struttura della famiglia ed ai fenotipi presenti. Una “vista” crea una tabella
virtuale che contiene l’output generato da una SELECT. L’interrogazione
fatta per ottenere la vista fenotipi e solitamente complessa per due motivi:
primo, il numero di fenotipi coinvolti puo essere elevato, secondo, e possibile
ricavare dei nuovi fenotipi partendo da quelli gia disponibili. Ad esempio, se si
vuole ottenere un fenotipo qualitativo da uno quantitativo, si puo definire una
clausola CASE che utilizzi un valore soglia per distinguere tra un individuo
affetto o non affetto.
L’elenco di tutte le tabelle in cui sono presenti gli attributi selezionabili
dagli utenti e memorizzato in una tabella web vedi tabella che ha il seguente
schema relazionale:
web vedi tabella(tipo, nome, azione)
Il significato degli attributi nome ed azione dipende da cosa viene indicato
sull’attributo tipo:
• tipo=FENOTIPI: l’attributo nome memorizza il nome della tabella
41
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
o della vista che contiene gli identificatori degli individui, la struttura
delle famiglie ed i fenotipi - nel nostro caso la vista fenotipi - mentre
azione e vuoto.
• tipo=CHR: l’attributo nome contiene il nome di una tabella della base
di dati dove sono memorizzati i genotipi. Per distinguere i due tipi di
tabella disponibili si utilizza il campo azione. Le tabelle di tipo 1 sono
quelle aventi il nome con prefisso “chr” mentre quelle di tipo 2 hanno
la struttura della tabella “web genotipi”.
• tipo=WHERE: l’attributo nome contiene un nome identificativo per
la clausola WHERE mentre azione contiene la clausola WHERE da
utilizzare all’interno della query (Es. age>20). L’utente puo scegliere
una delle clausole WHERE memorizzate per selezionare dei subset di
individui (Es. seleziono solo i maschi, solo le femmine, solo i probandi,
solo le famiglie, ecc.).
• tipo=ORDER BY: l’attributo nome memorizza gli attributi sui quali
eseguire la clausola ORDER BY (es. id, fam) mentre azione e vuoto.
• tipo=PROFILO: gli attributi nome ed azione contengono,
rispettivamente, il nome di un profilo (Sez. 4.2.3) e la stringa che
lo descrive.
La creazione della query
L’elenco di attributi selezionabili dall’utente comprende dati sugli individui,
sulla struttura della famiglia, sui fenotipi e sui genotipi. Se si escludono i
genotipi, tutte le informazioni sono selezionate attraverso la vista fenotipi.
42
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
L’algoritmo di generazione automatica delle query permette di relazionare
alla vista fenotipi le diverse tabelle di genotipi. In particolare, la tabella
web_genotipi puo avere set di identificatori provenienti da laboratori
diversi ed un numero variabile e sconosciuto di marcatori. L’algoritmo
di estrazione e stato modificato nel tempo per poter risolvere queste
problematiche poiche, in un primo momento, non era stato previsto che i
genotipi venissero inseriti direttamente dagli utenti via Web. La presenza
di identificatori diversi ha reso necessaria la presenza di una tabella
fml_conv_all contenente le corrispondenze tra gli identificatori utilizzati
nella base di dati (tabella fml_individuo) e quelli dei laboratori esterni
presenti nella tabella web_genotipi.
La prima soluzione che abbiamo sviluppato per estrarre i dati prevedeva
la creazione di un’unica query SQL formata da una serie di clausole SELECT
nidificate ed unite attraverso delle clausole di OUTER JOIN. Una clausola
di JOIN viene utilizzata quando e necessario correlare dati provenienti da
diverse tabelle della base di dati attraverso i valori assunti dagli attributi. Le
clausole di OUTER JOIN (LEFT, RIGHT e FULL) permettono di selezionare
tutte le righe in cui vi e corrispondenza tra i valori degli attributi comuni
di due diverse tabelle piu tutte le righe che fanno parte di una (LEFT o
RIGHT) o entrambe (FULL) le tabelle coinvolte e che non hanno tuple
corrispondenti nell’altra tabella (gli attributi assenti sono rimpiazzati con
opportuni valori nulli). Una clausola di INNER JOIN permette di correlare
attraverso gli attributi comuni diverse tabelle, selezionando solo le righe in
cui vi e una corrispondenza tra i valori [ACPT99].
Ad esempio, vogliamo estrarre tutti gli attributi della vista fenotipi
ed i due alleli di apoe (il gene APO-E del cromosoma 19) dalla tabella
43
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
web_genotipi:
SELECT fen.*, tab1.all_1 as apoe_1, tab1.all_2 as apoe_2
FROM (
SELECT fml_conv_all.id,
web_genotipi.all_1, web_genotipi.all_2
FROM fml_conv_all, web_genotipi
WHERE web_genotipi.id=fml_conv_all.id_est
AND web_genotipi.geno_lab=fml_conv_all.geno_lab
AND seleziona=’t’ AND locus=’apoe’
) AS tab1
RIGHT OUTER JOIN (
SELECT * FROM fenotipi
) AS fen ON tab1.id=fen.id
La select proposta puo essere nidificata a sua volta fino ad ottenere tutti
gli attributi richiesti dall’utente. Questa soluzione e stata abbandonata
a causa dell’elevato numero di tabelle e marcatori presenti nella base di
dati. Abbiamo osservato che eseguendo delle query con numerose SELECT
nidificate le prestazioni della base di dati degradavano considerevolmente
fino a portare, nel caso peggiore, alla prematura terminazione del processo di
selezione. Ad esempio, nella base di dati asma abbiamo provato ad estrarre
i dati, prodotti da una scansione genomica, dei 23 cromosomi ed il sistema
ha interrotto l’esecuzione della query. Il motivo di tale comportamento e
legato al fatto che il sistema di basi di dati PostgreSQL deve utilizzare grosse
quantita di memoria per eseguire le query piu complesse [Mom03] e, nel
nostro caso, la quantita disponibile non e sufficiente.
44
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
Per evitare il problema abbiamo adottato un approccio diverso che
consiste nel creare automaticamente una tabella temporanea nella quale
inserire tutti i dati relativi ai genotipi. Successivamente otteniamo la
SELECT finale come INNER JOIN tra la tabelle temporanea e la tabella
dei fenotipi. Il nome assegnato dal sistema alla tabella temporanea e della
forma nomeutente_genotipi per evitare che piu utenti utilizzino la stessa
tabella. Supponendo che l’utente collegato sia ciano, il nome della tabella
temporanea ciano_genotipi e la tabella che memorizza gli individui ed i
fenotipi indicata in wev vedi tabella sia fenotipi, l’algoritmo che genera la
tabella e:
Se esiste la tabella ciano_genotipi allora:
DROP TABLE ciano_genotipi
Creazione della tabella temporanea con il comando:
SELECT id INTO ciano_genotipi FROM fenotipi
Creazione di una listaattributi contenente tutti gli attributi presenti
nel profilo ed i nomi di tutti i marcatori presenti in web_genotipi
poiche non sono conosciuti a priori.
Per ogni attributo di listaattributi verifichiamo se tale attributo e stato
selezionato dall’utente e se e un genotipo (non appartiene alla tabella
fenotipi). Se si:
aggiungiamo i campi alla tabella temporanea:
ALTER TABLE ciano_genotipi ADD nome_genotipo_1 text
ALTER TABLE ciano_genotipi ADD nome_genotipo_2 text
Gli attributi aggiunti hanno tipo text poiche ogni dato disponibile
45
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
in PostgreSQL puo essere memorizzato senza modifiche in un
campo testuale.
A seconda del tipo di tabella che memorizza il genotipo settiamo
i valori del genotipo. Per le tabelle di tipo 1 si ha:
UPDATE fenotipi_temp SET
apoe_1=chr19.apoe_1, apoe_2=chr19.apoe_2
FROM chr19 WHERE fenotipi_temp.id = chr19.id
Per le tabelle do tipo 2 si ha:
UPDATE fenotipi_temp SET
apoe_1=tt.all_1, apoe_2=tt.all_2 FROM
(
SELECT fml_conv_all.id,
web_genotipi.all_1, web_genotipi.all_2
FROM web_genotipi, fml_conv_all
WHERE web_genotipi.geno_lab=fml_conv_all.geno_lab
AND web_genotipi.id=fml_conv_all.id_est
AND seleziona = ’t’ AND locus =’apoe’
) AS tt
WHERE tt.id=fenotipi_temp.id
Dopo aver processato tutti gli attributi selezioniamo tutti i campi
richiesti dall’utente attraverso un INNER JOIN tra le tabelle fenotipi
e ciano_genotipi utilizzando le clausole WHERE ed ORDER BY
scelte dall’utente:
46
3 – Progettazione della base di dati per le informazioni cliniche e genetiche
SELECT att1, att2, ..., attn
FROM fenotipi, ciano_genotipi
WHERE fenotipi.id = ciano_genotipi.id
AND <clausola_where> ORDER BY <clausola_order_by>
I valori di <clausola_where> e <clausola_order_by> sono estratti da
web vedi tabella.
Rimuoviamo la tabella temporanea che contiene i genotipi:
DROP TABLE ciano_genotipi
L’algoritmo proposto permette di selezionare gli attributi richiesti
attraverso una sequenza di comandi SQL ma non con un unica query.
Tuttavia la possibilita di selezionare un numero imprecisato di attributi in
tempi ragionevolmente brevi e senza appesantire il sistema rende la soluzione
ottimale per i nostri scopi. Inoltre l’algoritmo proposto viene eseguito
automaticamente utilizzando procedure da noi sviluppate (Sez. 4.2.4) e in
maniera del tutto trasparente all’utente.
47
Capitolo 4
Architettura del sistema
Lo studio genetico delle malattie complesse richiede che vengano raccolte
molte informazioni genetiche e cliniche per un elevato numero di individui.
Un sistema di memorizzazione informatico studiato appositamente per
il personale specializzato di laboratorio puo aiutare a gestire tutte le
informazioni disponibili in modo efficiente.
Abbiamo sviluppato un sistema che cerca di ottimizzare e rendere
automatiche le operazioni di uso frequente. Diversi software curano
l’inserimento, la verifica, l’estrazione dei dati e la generazione di una statistica
descrittiva delle variabili genetiche. L’inserimento e la gestione dei dati
genetici avvengono via Web e sono regolamentati attraverso la verifica di
un nome utente ed una password che l’amministratore assegna a tutti gli
operatori autorizzati. Al contrario, l’inserimento di dati, che non interessano
le operazioni di genotipizzazione come la struttura delle famiglie, i fenotipi
e la gestione degli utenti, avviene per mezzo di programmi utilizzabili solo
dagli amministratori di sistema.
48
4 – Architettura del sistema
4.1 Strumenti utilizzati per lo sviluppo
Il sistema e attualmente installato su computer PC compatibili ed utilizza
esclusivamente software Open Source - il codice sorgente e disponibile e
liberamente distribuito - per il funzionamento e la realizzazione. Il sistema
operativo e Debian GNU Linux con Web server Apache - e installato su piu
del 60% dei siti Web [Fou02] - e sistema di basi di dati relazionale PostgreSQL
[pos]. Il linguaggio scelto per lo sviluppo dei programmi e il Perl [Wal].
4.1.1 Il sistema di basi di dati relazionale ed il
linguaggio SQL
PostgreSQL e un sistema di basi di dati relazionale o RDBMS (abbreviazione
di relational database management system) che supporta praticamente tutti
i costrutti sintattici di SQL (Sructured Query Language) tra cui le subselect,
le transazioni ed i vincoli relazionali [pos]. Un RDBMS e un sistema per
la gestione di dati memorizzati su relazioni. Una relazione e essenzialmente
una tabella composta da un insieme di righe aventi lo stesso set di attributi
(o colonne).
Il linguaggio SQL viene utilizzato per gestire l’interazione con l’RDBMS
attraverso tre gruppi di comandi [ACPT99] [DB00]:
• DDL (Data Definition Language): creazione degli oggetti dello
schema
• DCL (Data Control Language): controllo degli utenti e delle
autorizzazioni
49
4 – Architettura del sistema
• DML (Data Manipulation Language): manipolazione dell’istanza
della base di dati (interrogazioni e aggiornamenti)
4.1.2 Il linguaggio Perl
Il Perl (Practical Extraction and Report Language) e un linguaggio
interpretato nato per il trattamento di file di testo che fornisce una sintassi
molto simile al linguaggio C e che viene spesso associato alla realizzazione
dei programmi CGI [Wal02]. Un programma CGI puo essere scritto in
diversi linguaggi (ad esempio, Perl, C, bash). L’esecuzione di un programma
CGI (Figura 4.1) genera un file HTML (HyperText Markup Language,
il linguaggio utilizzato per la creazione delle pagine Web) che cambia in
funzione dei parametri di ingresso ricevuti. Un parametro di ingresso per un
CGI e una stringa di testo della forma chiave=valore [GGB00].
Figura 4.1. L’interfaccia CGI. L’operatore, per mezzo di un browserWeb, effettua una richiesta al Web server che, attraverso l’interfaccia CGI,esegue il programma CGI corrispondente. Quando il programma CGItermina l’elaborazione, restituisce un documento HTML al Web server che,a sua volta, lo invia al browser.
Il Perl permette di trattare i file di testo facilmente e con poche righe di
codice poiche dispone di costrutti per il “pattern matching” molto sofisticati
50
4 – Architettura del sistema
e di molte funzioni per il trattamento di stringhe e di array [Wal02]. Queste
caratteristiche permettono di trattare efficacemente alcune delle operazioni
che sono state implementate nel nostro sistema:
• generare i file HTML utilizzati nell’interfaccia Web
• creare e modificare file CSV (Es. cambiare l’ordine delle colonne). Un
file di tipo CSV e un file di testo che rappresenta una tabella: i campi
contenuti nelle righe del file sono divisi per mezzo di un separatore
(tabulatore, punto e virgola, spazio, etc.) scelto dall’utente [DB00].
• importare/esportare file CSV nel/dal sistema di basi di dati
• fare statistiche descrittive
Il Perl dispone di un elevato numero di moduli [Per] che permettono di
facilitare la scrittura dei CGI, di effettuare le connessioni al sistema di basi di
dati attraverso una interfaccia standardizzata e di importare/esportare vari
formati di documento (MS Excel, RTF, PDF, etc.).
Tutto il nostro software - CGI, script per l’amministrazione del sistema e
moduli - e scritto in Perl e si basa su alcuni moduli che sono quindi necessari
per il corretto funzionamento:
• CGI [Lin02]: preparazione delle pagine Web. Fornisce metodi per
la creazione di Web FORMs (permettono all’utente di mandare o
richiedere informazioni al Web server attraverso dei campi compilabili),
la lettura (parsing) del loro contenuto e la generazione automatica di
codice HTML
51
4 – Architettura del sistema
• DBI [Bun02]: accesso al sistema di basi di dati. Definisce una serie di
metodi, variabili e convenzioni che forniscono un’interfaccia consistente
tra uno o piu sistemi di basi di dati e l’applicazione.
• XML::Simple [McL02]: gestione dei file in formato XML (eXtensible
Markup Language). fornisce dei metodi per la creazione e la lettura di
documenti XML. XML e un meta linguaggio, cioe un linguaggio per
costruire altri linguaggi, utilizzato per la rappresentazione elettronica
di documenti [W3C02b].
• Spreadsheet::WriteExcel [McN02]: creazione di file in formato MS
Excel. Il modulo puo essere usato per creare automaticamente un file
di MS Excel utile per scambiare le informazioni con gli utenti che
utilizzano MS Office.
4.1.3 CGI e mod perl
Durante lo sviluppo il sistema ha subito diverse modifiche orientate a
migliorarne le prestazioni. Inizialmente abbiamo utilizzato l’interfaccia CGI
per generare in tempo reale delle pagine Web dinamiche in base alle richieste
degli utenti.
L’interfaccia CGI permette al Web server di eseguire un programma CGI
per compiere delle operazioni (ad esempio, accedere ad un sistema di basi di
dati ed impaginare i dati richiesti) e produrre un documento HTML con le
informazioni che sono state richieste. Tuttavia l’interfaccia CGI puo risultare
inadatta sia per le prestazioni che per la sicurezza del sistema in quanto:
• Prestazioni:
52
4 – Architettura del sistema
– ogni richiesta verso un programma CGI provoca la creazione di
un nuovo processo con conseguente carico di lavoro aggiuntivo sul
server.
– il Web server non e in grado di mantenere in memoria le pagine
gia richieste e prodotte da un CGI.
– quando si utilizza un RDBMS per la gestione delle informazioni,
ogni richiesta ad un programma CGI apre una nuova connessione
al RDBMS che viene chiusa al termine dell’esecuzione del processo.
L’apertura e chiusura della connessione provoca un ulteriore carico
di lavoro per il server ed allunga i tempi di attesa dell’utente.
• Sicurezza: puo essere pericoloso servirsi di un programma CGI che
utilizza dei programmi esterni per compiere delle operazioni: se il
programma esterno (eseguito con i permessi del Web server) processa
dati ricevuti da una FORM HTML, allora un utente potrebbe riuscire
ad eseguire dei comandi di sistema non previsti.
Sono disponibili delle tecnologie, alternative all’utilizzo dell’interfaccia
CGI, nate con lo scopo di evitare queste limitazioni:
• Active Server Pages (ASP) [Cor02]: e una tecnologia sviluppata da
Microsoft che viene integrata all’interno del Web server (ad esempio,
l’IIS - Internet Information Services) e permette di scrivere “codice”
all’interno delle pagine HTML invece di scrivere programmi separati.
ASP supporta diversi linguaggi di programmazione tra cui il piu
utilizzato e MS Visual Basic.
• PHP [Fou01]: e un linguaggio simile al Perl. L’interprete PHP
53
4 – Architettura del sistema
e integrato, come modulo, all’interno del Web server e supporta la
scrittura di “codice PHP” all’interno delle pagine HTML.
• Java servlets [SM02a]: sono state create da Sun. Sono realizzate
in Java e, per poter funzionare, devono essere compilate. Le classi
prodotte dalla compilazione sono caricate dinamicamente dal Web
server e hanno una funzionalita simile a quella dei CGI in quanto sono
programmi che generano documenti HTML.
• JavaServer Pages (JSP) [SM02b]: sono create da Sun. Permettono
di utilizzare il linguaggio Java all’interno del codice HTML ed hanno
una tecnologia molto simile a quella adottata dalle ASP.
• mod perl [Mac96]: un modulo che integra l’interprete Perl all’interno
del Web server Apache. Il modulo consente di avere contenuti dinamici
via Web creati attraverso programmi Perl evitando il costo richiesto
dall’esecuzione dell’interprete esterno [Gro97].
Tra le alternative possibili, mod perl permette, oltre a migliorare le
prestazioni offerte dal sistema, di mantenere il Perl come linguaggio di
programmazione. Inoltre permette di riutilizzare i programmi CGI emulando
l’interfaccia CGI per mezzo del modulo Apache::Registry o del modulo
Apache::PerlRun. I due moduli si differenziano in quanto i programmi CGI
eseguiti utilizzando il modulo Apache::Registry mantengono il codice e le
variabili nella memoria del Web server per le richieste successive, mentre nel
caso di Apache::PerlRun il CGI viene reinterpretato ad ogni richiesta e le
variabili non sono memorizzate nel Web server [Mac96].
Nel nostro sistema, abbiamo adottato mod perl ed il modulo
Apache::PerlRun per emulare l’interfaccia CGI. Abbiamo ottenuto
54
4 – Architettura del sistema
prestazioni comparabili a quelle ottenute con il modulo Apache::Registry
senza mantenere nella memoria del Web server le pesanti strutture dati
degli individui (le informazioni cliniche e genetiche) e senza chiudere la
connessione al sistema di basi di dati. Se configurato opportunamente, il
Web server Apache puo caricare in memoria alcuni moduli Perl durante la
fase di avvio per evitare ai programmi CGI di compiere questa operazione
ad ogni esecuzione [Mac96] [Gro97]. I moduli Perl che carichiamo all’avvio
del server Apache sono:
• Apache::PerlRun per l’esecuzione dei CGI
• Apache::DBI per la connessione persistente al sistema di basi di dati.
Apache::DBI si serve del modulo standard DBI per la gestione del
sistema di basi di dati e maschera le operazioni di apertura e chiusura
delle connessioni in modo da riutilizzare connessioni gia aperte (se
presenti). Non e necessario modificare i programmi CGI che utilizzano
il modulo DBI in quanto tutte le operazioni sul sistema di basi di dati
sono intercettate automaticamente dal modulo Apache::DBI [Mer01].
• i moduli Perl necessari al funzionamento dei nostri programmi (ad
esempio CGI.pm e DBI.pm).
In conclusione, la tecnologia offerta da mod perl ha permesso di migliorare
visibilmente le prestazioni del sistema e di riutilizzare gli script CGI gia
sviluppati grazie alla presenza dell’interprete Perl all’interno di Apache,
all’utilizzo dei moduli Apache::PerlRun e Apache::DBI ed alla possibilita
di precaricare in memoria i moduli Perl necessari ai nostri programmi.
55
4 – Architettura del sistema
4.1.4 L’architettura del sistema
L’architettura proposta consente di utilizzare una singola macchina che
funzioni contemporaneamente come Web Server e come Database Server
oppure con due macchine connesse in rete ed adibite a gestire il Web Server
ed il Database Server separatamente. (Figura 4.2). La seconda soluzione
Figura 4.2. L’architettura del sistema con due computer.L’operatore, per mezzo di un browser Web, effettua una richiesta HTTP alWeb server che, a sua volta, esegue il programma Perl corrispondente. Ilprogramma Perl si connette al sistema di basi di dati remoto utilizzandoil modulo Apache::DBI, compie le elaborazioni richieste ed invia il codiceHTML risultante al Web server che lo reindirizza al browser.
aumenta la sicurezza dei dati in quanto il sistema di basi di dati puo essere
installato su una macchina non connessa direttamente alla rete.
4.2 Lo sviluppo dei programmi e delle
librerie
Il sistema che presentiamo si serve di alcuni moduli Perl da noi sviluppati
per avere a disposizione metodi e funzioni che permettano l’esecuzione
56
4 – Architettura del sistema
delle operazioni piu frequenti. I moduli vengono usati all’interno di tutti
i programmi (CGI e script) e permettono di sviluppare velocemente nuove
applicazioni riutilizzando funzioni e metodi gia presenti e testati.
Di seguito saranno esaminati i moduli da noi sviluppati soffermandoci
maggiormente nell’analisi di quei moduli che gestiscono gli individui, i
loro dati (struttura delle famiglie, fenotipi e genotipi) e le metodologie di
inserimento ed estrazione dei dati nella di basi di dati.
4.2.1 PDB::pgc
Il modulo PDB::pgc viene utilizzato per istanziare un oggetto dedicato alla
gestione di un sistema di basi di dati PostgreSQL. PDB::pgc si serve del
modulo DBI per la connessione e la gestione del sistema di basi di dati e
fornisce dei metodi che semplificano le operazioni piu ricorrenti. I metodi
implementati gestiscono l’apertura e la chiusura di connessioni, l’esecuzione
di comandi SQL e la ricerca di tabelle o di attributi all’interno della base di
dati:
• new(nome database, user, password): istanzia l’oggetto della classe e
crea la connessione alla base di dati desiderata.
• close(): chiude la connessione
• getDBH: restituisce il puntatore all’oggetto della classe DBI che
mantiene la connessione alla base di dati.
• doSQL(comando SQL): esegue un comando SQL che non restituisce
dei risultati (ad esempio, INSERT, CREATE, ALTER)
57
4 – Architettura del sistema
• executeSQL(query SQL): esegue una query SQL e restituisce il
puntatore ad un oggetto che contiene i risultati della query
• isPresent(nome tabella): verifica se una relazione e presente nella base
di dati
• isAttPresent(nome tabella, nome attributo): verifica se un attributo
e presente in una relazione della base di dati
• getAttType(nome tabella, nome attributo): restituisce il tipo di dato
associato all’attributo di una relazione
Tutti i metodi possono gestire gli errori dovuti all’assenza della
connessione al sistema di basi di dati, all’errata sintassi delle istruzioni SQL
o alla presenza di valori non compatibili con il tipo di dato previsto dalla
base di dati.
4.2.2 PDB::bio
Il modulo PDB::bio istanzia un oggetto che contiene e gestisce tutti i dati
relativi agli individui (struttura della famiglia, fenotipi e genotipi). Tramite
i metodi contenuti nel modulo e possibile creare i file di testo formattati che
sono utilizzati dai programmi di analisi statistica, modificare il formato dei
dati e prelevare le informazioni sugli individui da un file o da una basi di
dati.
Il metodo new istanzia un oggetto vuoto della classe PDB::bio che
puo essere popolato usando il metodo fromCSV (nomefile, separatore)
se si importano i dati degli individui da un file CSV, o il metodo
58
4 – Architettura del sistema
fromSQL(database, query) se si effettua una interrogazione verso una base
di dati.
I metodi getHead e getHeadIDpos restituiscono rispettivamente la lista dei
nomi degli attributi (presenti sul file CSV o selezionati dalla base di dati) e
la posizione dell’attributo id (l’identificatore degli individui) all’interno della
lista.
I metodi getListaID, getOrderID e getUnrelatedID restituiscono un array
che contiene gli identificatori degli individui e che puo essere non ordinato,
ordinato o contenere solo gli individui non imparentati (o unrelated).
Il metodo setColonneGenotipi(valore nullo, [0,1,2], [0,1]) scorre la lista
di tutti gli attributi disponibili ed individua i marcatori cercando le coppie
di attributi che formano un genotipo. I due attributi che rappresentano
un genotipo hanno un nome del tipo <nome_locus>_1 e <nome_locus>_2.
Ad esempio, i due attributi che rappresentano le mutazioni del gene cftr
sono cftr_1 e cftr_2. Il tipo di formattazione dei genotipi che si utilizza
dipende dal programma di statistica adottato e puo essere quello abituale a
due colonne - coppie di alleli - o quello ad una sola colonna. La codifica dei
genotipi con una singola colonna puo essere fatta in due modi:
• una semplice concatenazione delle coppie di alleli che formano il
genotipo: dati gli alleli A e G, i genotipi possibili sono AA, AG e
GG
• una numerazione predefinita di ogni possibile genotipo: dati gli alleli
A e G, i genotipi possibili sono 1, 2 e 3 (stanno ad indicare AG, AG e
GG rispettivamente)
59
4 – Architettura del sistema
Per distinguere il tipo di genotipo attraverso il nome dell’attributo abbiamo
stabilito una convenzione:
• le due colonne che contengono gli alleli di un marcatore hanno nome
<nome_locus>_1 e <nome_locus>_2
• la colonna che contiene genotipi codificati numericamente ha nome
<nome_locus>_num.
• la colonna che contiene genotipi codificati come concatenazione degli
alleli ha nome <nome_locus>_con
A seconda dei parametri di ingresso passati a setColonneGenotipi e
possibile ottenere diversi risultati. Il valore del parametro [0,1,2] permette
di decidere come visualizzare i genotipi codificati con una sola colonna:
• 0: la colonna dei genotipi indicati con un numero
• 1: la colonna dei genotipi dove i due alleli sono concatenati
• 2: le due colonne mostrate in 0 e 1
Tramite il parametro [0,1] si stabilisce se visualizzare o no le due colonne
contenenti gli alleli: con 0 visualizziamo gli alleli piu i genotipi codificati in
una colonna mentre con 1 soltanto i genotipi codificati in una colonna.
Il metodo getFrequenze esegue delle elaborazioni sui dati al fine di
generare una statistica di base sugli individui presenti. L’output restituito e
una stringa contenente le frequenze alleliche e genotipiche di tutti i marcatori
presenti. Se necessario, e possibile calcolare l’equilibrio di Hardy-Weinberg
60
4 – Architettura del sistema
(hwe) [GT92] sull’insieme di individui unrelated (non imparentati). Il calcolo
di hwe e eseguito dal programma hwe [Ott95] utilizzando le frequenze degli
alleli e dei genotipi osservati sugli individui non imparentati presenti nella
base di dati.
Altri metodi della classe permettono di eseguire il confronto tra un
attributo che compare in due oggetti di tipo PDB::bio per trovare le differenze
(getAttDiff ) e di esportare su un file CSV o MS EXCEL i dati contenuti
nell’oggetto (toCSV e toXLS ).
4.2.3 PDB::profilo
Il modulo PDB::profilo fornisce delle funzioni che permettono la gestione
dei profili degli utenti. Un profilo e una astrazione della base di dati che
permette di mostrare all’utente un gruppo di tabelle fittizie indipendenti
dalla struttura fisica della base di dati.
Ad esempio, in una base di dati dove siano presenti le tabelle:
fml_individuo(id, fam, sbj, fth, mth, sex, age)
chr7(id, cftr_1, cftr_2)
chr19(id, apoe_1, apoe_2)
E possibile creare un profilo che mostri le seguenti tabelle fittizie:
fenotipi(id, sex, age)
genotipi(id, cftr_1, cftr_2, apoe_1, apoe_2)
Abbiamo definito la stringa che descrive un profilo come segue:
61
4 – Architettura del sistema
• una singola tabella fittizia (<TABELLA>) viene rappresentata come una
lista di stringhe separate dai caratteri -#-:
<TABELLA> := <nome_tab>-#-<rel>;<att>-#-...-#-<rel>;<att>
La prima stringa contiene il nome della tabella fittizia <nome_tab>
mentre le successive rappresentano gli attributi. Per identificare il
singolo attributo utilizziamo la sintassi <rel>;<att> dove indichiamo il
nome della tabella (<rel>) della base di dati in cui si trova l’attributo
(<att>) stesso. Le stringhe relative alle tabelle fittizie “fenotipi” e
“genotipi” dell’esempio sono:
fenotipi-#-fml_individuo;id-#-fml_individuo;sex-#-fml_individuo;age
genotipi-#-chr7;cftr_1-#-chr7;cftr_2-#-chr19;apoe_1-#-chr19;apoe_2
• un profilo e formato da una lista di stringhe <TABELLA> separate dai
caratteri -@-:
<PROFILO> := <TABELLA>-@-<TABELLA>[email protected]@-<TABELLA>
Il profilo risultante per le due tabelle dell’esempio e:
fenotipi-#-...-#-fml_individuo;age-@-genotipi-#-...-#-chr19;apoe_2
Sebbene le tabelle fittizie che fanno parte si un profilo, siano paragonabili
a delle viste, l’utilizzo dei profili semplifica il lavoro dell’amministratore del
sistema: la creazione e la gestione di un profilo avviene attraverso un file di
testo dove sono presenti tutti gli attributi che si vogliono estrarre dalle tabelle
della base di dati. Ogni riga del file di testo indica una diversa informazione:
62
4 – Architettura del sistema
• una riga di tipo --<stringa> indica l’inizio di una nuova tabella fittizia
di nome <stringa>.
• una riga di tipo <relazione>;<attributo> indica il campo e la tabella
di appartenenza all’interno della base di dati.
Un tipico file di testo utilizzato per generare un profilo ha questo formato:
--Fenotipi
fenotipi;fml_num
fenotipi;sbj
fenotipi;fth
fenotipi;mth
.....
--Cromosoma 6
chr6;lt
.....
--Cromosoma 7
chr7;tg
chr7;t
.....
.....
Utilizzando un editor di testo e possibile aggiungere, togliere e riordinare in
modo semplice l’elenco di attributi presenti nelle relazioni della base di dati
senza intervenire sulla base di dati (come accadrebbe servendosi delle viste).
Le funzioni profilo2file e file2profilo permettono di convertire in modo
automatico una stringa che definisce un profilo in un file e viceversa. Inoltre
63
4 – Architettura del sistema
e disponibile una funzione importProfilo per estrarre un profilo dalla base di
dati e creare una struttura dati che viene utilizzata dai programmi CGI per
visualizzare le tabelle e creare le interrogazioni.
4.2.4 PDB::SQL
Il modulo PDB::SQL fornisce i metodi usati per creare la query SQL che
seleziona gli attributi richiesti dall’utente.
L’algoritmo prevede la creazione di una tabella temporanea dove vengono
aggiunti in modo automatico tutti gli attributi richiesti tra quelli presenti
nelle tabelle della base di dati. I metodi del modulo PDB::SQL permettono
di generare la sequenza di comandi SQL che gestisce la creazione e
l’aggiornamento della tabella temporanea e l’estrazione delle informazioni
desiderate. Ogni istanza della classe contiene il nome della tabella
temporanea creata all’interno della base di dati e una lista dei comandi SQL
necessari alla sua creazione.
La classe fornisce un metodo new per istanziare l’oggetto e una serie
di metodi che permettono l’accesso ai dati della classe: getSQLcommand
restituisce il puntatore alla lista dei comandi SQL che generano la tabella
temporanea, showTemp mostra il nome della tabella temporanea, dbh
restituisce l’oggetto DBI che mantiene la connessione alla base di dati e
doTable crea la tabella temporanea utilizzando i comandi SQL contenuti
nella lista ottenuta con il metodo getSQLcommand.
Oltre ad i metodi dedicati alla gestione delle strutture dati interne ci sono i
metodi finalizzati alla creazione dei comandi SQL. Il metodo createTempTable
64
4 – Architettura del sistema
crea la tabella temporanea alla quale vengono aggiunti tutti i genotipi
richiesti attraverso il metodo addAttribute.
Nella sezione 3.4 sono presentati lo schema della base di dati ed una
descrizione dettagliata dell’algoritmo di creazione della tabella temporanea.
4.2.5 Gli altri moduli ed i programmi
Durante la realizzazione del sistema da noi sviluppato abbiamo creato altri
moduli in aggiunta a quelli precedentemente descritti.
Il modulo PDB::myCGI.pm fornisce funzioni per la generazione
automatica del codice HTML contenuto in tutte le pagine Web prodotte
dal sistema come, ad esempio, l’intestazione e la coda delle singole pagine
ed la URI del file CSS che si vuole utilizzare. Un file CSS (Cascading Style
Sheets) permette di definire lo stile (font, colori, spazi, etc) di una pagina
HTML [W3C02a].
Le procedure per creare la maschera in cui inserire “nome utente” e
“password” e per decidere se l’utente puo accedere al sistema sono definite
nel modulo PDB::Utente.pm. Ogni utente puo memorizzare brevi note
all’interno di una tabella della base di dati che viene gestita attraverso le
funzioni del modulo PDB::memo.pm.
Il modulo PDB::myUTL.pm contiene delle funzioni per gestire stringhe ed
array di stringhe. In particolare fornisce una funzione getIDorder che e molto
usata all’interno dei nostri programmi e permette di ordinare un array di
identificatori utilizzando un ordinamento basato sulla semantica della stringa
piuttosto che sull’ordine lessico-grafico. Ad esempio, gli identificatori Vr4.02
65
4 – Architettura del sistema
e Vr41.03 hanno un ordine lessico-grafico Vr4.02 > Vr25.03 mentre hanno
un ordinamento semantico Vr4.02 < Vr25.03. Infatti, gli identificatori
assegnati agli individui sono creati in modo da essere informativi sulla
provenienza di un individuo presente nella base di dati. Ad esempio, un
identificatore Vr4.02 indica l’individuo 2 della famiglia 4 del set di individui
di V r.
Per facilitare lo scambio di dati tra la base di dati ed un file CSV e per
aggiornare in modo automatico una relazione della base di dati con i dati
contenuti in un file (ad esempio, l’inserimento ed aggiornamento delle tabelle
dei fenotipi) utilizziamo le funzioni del modulo PDB::csv.pm. La funzione
csv2pg del modulo permette di importare un file CSV nella base di dati
cercando di assegnare il tipo di dato piu corretto a tutte le colonne del file.
I programmi per l’amministrazione del sistema ed i CGI utilizzano
i moduli che abbiamo presentato per implementare le operazioni basilari
dell’elaborazione. Per i programmi CGI, oltre ai moduli che permettono
di gestire la connessione alla base di dati e l’elaborazione dell’informazione,
utilizziamo i moduli che consentono la creazione del codice HTML prodotto
come risultato. Le operazioni che vengono svolte dai programmi e dai CGI
sono presentate nella sezione 5.1.1.
66
Capitolo 5
L’utilizzo del sistema
Il sistema da noi sviluppato fornisce una serie di strumenti atti alla gestione di
una base di dati contenente dati relativi allo studio delle malattie complesse.
Gli strumenti sono rivolti a due categorie di utilizzatori: l’amministratore di
sistema e gli utenti.
L’amministratore ha il compito di creare lo schema iniziale della base
di dati (tramite uno script SQL), di popolare le tabelle con i dati clinici
degli individui e di garantire il corretto funzionamento del sistema mentre gli
utenti registrati possono inserire i marcatori ed i genotipi degli individui ed
estrarre le informazioni dalla base di dati.
Il sistema viene utilizzato per gestire le basi di dati di due malattie
complesse: l’asma e l’osteoporosi. Lo studio sull’asma consta di informazioni
cliniche e genetiche per un totale di circa 850 individui, mentre per
l’osteoporosi abbiamo informazioni per circa 1700 individui.
67
5 – L’utilizzo del sistema
5.1 Descrizione del sistema
Lo studio delle malattie complesse richiede una prima fase in cui vanno
raccolti informazioni sugli individui, i loro dati clinici ed i loro campioni
di DNA che saranno poi utilizzati per la genotipizzazione. Per condurre uno
studio comparativo occorre raccogliere un gruppo di individui affetti ed un
gruppo di individui sani, mentre per le analisi di linkage occorrono gruppi di
famiglie che presentino individui affetti.
Di solito, i dati degli individui ed i loro caratteri clinici vengono forniti da
laboratori esterni sotto forma di fogli elettronici e necessitano di un lavoro
aggiuntivo per poter essere importati nella base di dati. La sequenza delle
operazioni necessarie per inizializzare la base di dati ed importare i dati
forniti consiste in:
• convertire i fogli elettronici in file di testo CSV. Questa fase, per forza
di cose, richiede un lavoro manuale ed una verifica delle informazioni
disponibili e del processo di conversione.
• assegnare gli identificatori univoci agli individui: ogni identificatore e
composto dall’unione di due o tre informazioni distinte che permettono
di stabilire la provenienza dell’individuo, la famiglia di appartenenza
(se esiste) ed il numero univoco dell’individuo all’interno della famiglia
(individui imparentati) o del gruppo di individui (non imparentati):
– una sigla identifica il laboratorio, la citta o il gruppo a cui
l’individuo e associato
– un codice numerico che identifica la famiglia all’interno del set
68
5 – L’utilizzo del sistema
– il numero univoco dell’individuo all’interno della famiglia
La concatenazione delle tre informazioni genera identificatori della
forma: <stringa><numero famiglia>.<numero individuo> nel caso
di individui imparentati e <stringa><numero individuo> altrimenti.
Ad esempio, un codice Vr2.5 indica l’individuo 5 della famiglia 2
del gruppo di individui di Verona (Vr). L’identificatore viene creato
in modo automatico per mezzo di un programma perl che abbiamo
sviluppato appositamente.
• creare la base di dati e lo schema. Abbiamo sviluppato uno script SQL
che crea tutte le tabelle principali della base di dati e tutti i vincoli
relazionali.
• importare i file CSV nella base di dati. L’operazione viene fatta
utilizzando un nostro programma che crea in automatico una tabella
(con il nome corrispondente al file CSV) nella base di dati cercando di
assegnare a tutti i campi il tipo di dato piu appropriato (Es. int2, int4,
float4, varchar, date, etc.).
• aggiornare la tabelle della base di dati che rappresentano gli individui
(tabelle con prefisso fml) utilizzando i dati importati dai file CSV.
• creare ed aggiornare le tabelle con prefisso “phnt” dove vanno
memorizzati i fenotipi che si hanno a disposizione
• aggiornare le tabelle per l’amministrazione del sistema con l’elenco degli
utenti che sono abilitati all’utilizzo della base di dati
• aggiungere alla tabella fml_conv_all gli identificatori del laboratorio
che compie le genotipizzazioni. Questi identificatori sono forniti dal
69
5 – L’utilizzo del sistema
laboratorio attraverso un foglio elettronico e sono importati nella base
di dati seguendo i passaggi visti nel caso dei fogli elettronici degli
individui.
• creare le tabelle con prefisso chr qualora fossero disponibili dei
marcatori genotipizzati
• creare il profilo che viene utilizzato per l’estrazione dei dati
Terminata la fase di inizializzazione della base di dati, gli utenti possono
iniziare ad inserire i marcatori ed i genotipi degli individui. L’amministratore,
a questo punto, deve solo compiere operazioni di backup (automatizzate) e
di riorganizzazione dei genotipi che vengono completati dal laboratorio (Es.
creazione o aggiornamento di una tabella di tipo “chr”). Nel caso in cui
vengano forniti nuovi gruppi di individui e necessario aggiornare le tabelle
che contengono i dati delle famiglie ed i fenotipi.
5.1.1 L’utilizzo dei programmi
I programmi che abbiamo sviluppato permettono di compiere le operazioni
piu ricorrenti che si incontrano durante la creazione e gestione di una base
di dati per la memorizzazione dei dati sulle malattie complesse:
• creazione e gestione degli utenti che accedono alla base di dati
• inserimento di nuovi individui
• inserimento dei dati clinici
• inserimento, verifica e modifica dei dati genetici
70
5 – L’utilizzo del sistema
• estrazione dei dati nei formati richiesti dai programmi di statistica
• calcolo di una statistica descrittiva sui dati genetici (frequenze alleliche,
genotipiche e test HWE)
I dati modificabili dall’utente riguardano solo la parte genetica poiche le
informazioni riguardanti la struttura della famiglia ed i dati clinici sono
fornite da laboratori esterni e rimangono generalmente invariate nel tempo.
Il sistema utilizza un file XML per salvare le informazioni necessarie per
eseguire la connessione verso la base di dati come:
• IP address del database server
• la login e password per accedere alla base di dati, sconosciuta agli utenti
che utilizzano il nostro sistema
• l’elenco delle patologie studiate. Ogni patologia corrisponde ad una
base di dati
• gli IP address che hanno il permesso di accedere al sistema
In questo modo, i programmi possono accedere ad un qualunque sistema
di basi di dati con una semplice modifica dei parametri contenuti nel file
XML.
L’utilizzo dei programmi CGI
I programmi utilizzabili via Web sono presentati attraverso alcune schermate
che andiamo a visualizzare di seguito. Non esiste un aiuto in linea per
71
5 – L’utilizzo del sistema
l’interfaccia Web in quanto gli utenti che accedono al servizio conoscono la
genetica ed il significato dei campi che devono andare a modificare all’interno
delle pagine.
Un utente che vuole accedere al sistema deve essere autenticato (Fig.
5.1): l’autenticazione avviene in in due fasi che verificano 1) se l’indirizzo
IP dell’utente che vuole accedere al servizio e compreso nell’elenco di quelli
abilitati e 2) se la login e la password memorizzati corrispondono a quelle
inserite dall’utente.
Figura 5.1. La schermata di login.DMIBG: Dipartimento Materno Infantile e di Biologia e Genetica.
La prima schermata presentata all’utente mostra un menu con le
operazioni disponibili (Fig. 5.2):
• inserimento e modifica dei genotipi
• visualizzazione ed estrazione dei dati
• inserimento e modifica dei memo
72
5 – L’utilizzo del sistema
• inserimento di nuovi marcatori
• torna alla pagina di login e scelta di una base di dati
Figura 5.2. Menu di scelta
In figura 5.3 e possibile vedere la schermata utilizzata per inserire un
nuovo marcatore nella base di dati. L’utente deve semplicemente inserire il
nome del marcatore, gli alleli ed il set di individui che intende genotipizzare.
Attualmente e possibile inserire solamente marcatori biallelici, ma una nuova
versione permettera di inserire marcatori con piu alleli.
La schermata per l’inserimento e la modifica dei genotipi (Fig. 5.4) mostra
tutti i marcatori disponibili e le operazioni disponibili su di essi:
• editare i genotipi per un marcatore seguendo il link che ne mostra il
nome
• visualizzare e modificare le informazioni del marcatore premendo il
bottone INFO corrispondente al marcatore
73
5 – L’utilizzo del sistema
Figura 5.3. Pagina per l’inserimento marcatori
• visualizzare una statistica descrittiva per i dati di un marcatore tramite
il link “HWE”.
Selezionando il nome del marcatore viene presentata una pagina che
permette l’inserimento e la modifica dei genotipi (Fig. 5.5). L’utente
puo settare il genotipo degli individui selezionando uno dei bottoni
corrispondenti. I genotipi selezionabili sono creati dinamicamente partendo
dalla lista degli alleli che sono presenti nella tabella web_allele della base
di dati. Questo metodo di inserimento dei genotipi preclude all’operatore
qualunque errore di battitura e velocizza notevolmente il processo di
inserimento in quanto tutte le operazioni sono fatte con il mouse in modo
intuitivo. Gli errori si possono verificare solo per false letture del genotipo o
per la selezione del bottone sbagliato. Tramite le frecce o i link presenti in
fondo alla pagina e possibile selezionare tutti gli individui presenti. Esiste
la possibilita di cambiare il numero di individui visualizzati su ogni pagina
(default=8), di selezionare un marcatore diverso per le modifiche (bottone
’Cambia locus’), di visualizzare la statistica descrittiva e di tornare alla
74
5 – L’utilizzo del sistema
Figura 5.4. Menu dei marcatori
pagina con l’elenco dei marcatori disponibili per l’inserimento dei genotipi.
La pagina che mostra le informazioni dei marcatori (Fig 5.6) contiene
il nome del marcatore, il gene, il cromosoma, i dati di laboratorio
sull’esperimento, un memo per la memorizzazione di informazioni aggiuntive
e la login dell’utente che ha inserito i dati del marcatore. Se l’utente che
accede alla pagina ha il permesso per modificare i dati del marcatore allora
puo utilizzare una FORM HTML per eseguire l’operazione di aggiornamento.
La pagina relativa alla statistica descrittiva di un marcatore mostra le
frequenze di tutti gli alleli nel set, le frequenze dei genotipi e l’output
75
5 – L’utilizzo del sistema
Figura 5.5. Modifica dei genotipi di un marcatore
del programma hwe [Ott95] che esegue una comparazione tra le frequenze
genotipiche osservate del set e quelle attese.
La pagina che permette di leggere i memo degli utenti (Fig. 5.8) contiene
delle note inserite dagli utenti o dall’amministratore.
E possibile accedere alla pagina di modifica (Fig. 5.9) o rimozione di
un messaggio se questo e stato creato dall’utente corrente. La rimozione di
un messaggio avviene immediatamente dopo la richiesta e senza avvisi da
parte del sistema. Ogni utente puo decidere di inserire un nuovo messaggio
tramite la stessa FORM che permette la modifica del messaggio (Fig. 5.9).
La login dell’utente e la data di inserimento sono inserite automaticamente
dal sistema.
76
5 – L’utilizzo del sistema
Figura 5.6. Informazioni dei marcatori
La pagina per la selezione dei dati (Fig. 5.10) visualizza una FORM che
contiene tutti gli attributi selezionabili dall’utente con le opzioni consentite.
Per velocizzare la scelta degli attributi e possibile selezionare una intera
tabella marcando il bottone Seleziona tabella.
Nelle Figure 5.10 e 5.11 e possibile osservare la disposizione degli attributi
al variare del profilo scelto dall’utente.
Scorrendo la pagina vengono visualizzate le opzioni applicabili alla
selezione degli attributi precedentemente scelti. Ogni FORM compilata puo
essere salvata con un nome per consentire all’utente di riselezionare gli stessi
attributi in un secondo momento (Fig. 5.12); il salvataggio evita un dispendio
di tempo nel caso di selezioni utilizzate frequentemente che coinvolgono molti
attributi.
77
5 – L’utilizzo del sistema
Figura 5.7. Statistica descrittiva di un marcatore
L’utente puo scegliere quale gruppo di individui utilizzare marcando uno
dei bottoni indicati nella sezione Estrazione dei soggetti (Fig. 5.12): dove
e disponibile un gruppo di clausole WHERE predefinite che permettono di
eseguire le selezioni piu frequenti (Es. selezionare solo le famiglie, selezionare
solo i probandi, etc.).
La scelta della modalita di visualizzazione (Fig. 5.12) che viene utilizzata
per mostrare i risultati permette di decidere il separatore che viene utilizzato
nel file CSV (punto e virgola, spazio, tabulatore o virgola) ed un carattere
particolare che rappresenta il valore nullo (carattere vuoto, x, 0, -9999).
Abbiamo rivolto particolare attenzione alla modalita di estrazione dei
78
5 – L’utilizzo del sistema
Figura 5.8. Lettura dei memo
genotipi in quanto i diversi programmi di elaborazione statistica utilizzano
metodologie diverse per la loro codifica. Selezionando opportunamente
i bottoni della FORM e possibile ottenere le diverse rappresentazioni
disponibili per i genotipi (Sez. 4.2.2 pag. 57).
Quando l’utente ha settato tutti i parametri desiderati puo scegliere uno
dei formati disponibili per la selezione: se visualizzare o scaricare il file CSV
risultante (Fig. 5.13) o se scaricare un foglio di MS Excel zippato (utile per
importare i dati nei programmi statistici di MS Windows).
79
5 – L’utilizzo del sistema
Figura 5.9. Modifica o inserimento dei memo
I programmi per l’amministrazione del sistema
I programmi utilizzati dall’amministratore in genere sono degli script
costruiti utilizzando i metodi e le funzioni disponibili sui moduli da noi
sviluppati. Il nome di tutti i programmi ha un prefisso DB- per meglio
identificarli. Di seguito, presentiamo una panoramica che mostra quali
operazioni sono permesse.
DB-utenti-crea: crea un utente all’interno della base di dati
DB-utenti-permessi: setta il permesso di lettura o scrittura su un
attributo di una tabella.
DB-comando: Si connette al sistema di basi di dati, esegue la query
SQL data in input e restituisce il file CSV corrispondente.
80
5 – L’utilizzo del sistema
Figura 5.10. Selezione dei campi con profilo ”default”
DB-dbest: Consente di estrarre automaticamente dalla base di dati
una tabella contenente tutti i fenotipi (la vista fenotipi) piu tutti i
genotipi che si trovano su una tabella della base di dati.
DB-csv2pg: Permette di creare nella base di dati una tabella
equivalente ad un file CSV. Lo script riesce riconoscere il tipo di dato
piu appropriato per le colonne processando tutti i campi del file (int2,
int4, float4, varchar(), etc.).
DB-csv2xls: Converte un file CSV in un file di MS Excel.
DB-tabella: Estrae una tabella dalla base di dati in formato CSV.
81
5 – L’utilizzo del sistema
Figura 5.11. Selezione dei campi con profilo ”vania”
DB-profilo-getcampi: Produce un file corrispondente ad un profilo
che contiene la lista di tutti i campi presenti nella base di dati.
Le tabelle da processare sono quelle memorizzate sulla tabelle
web_vedi_tabella.
DB-profilo-getfile: prende in input la stringa di un profilo e produce
il file corrispondente.
DB-profilo-getprofilo: produce la stringa di un profilo utilizzando il
file di testo corrispondente.
DB-confronta: confronta gli attributi comuni di due tabelle della base
di dati e mostra le differenze.
82
5 – L’utilizzo del sistema
Figura 5.12. Opzioni utilizzabili durante la selezione
DB-frequenze-hwe: Produce la statistica descrittiva per un
marcatore della base di dati.
DB-settaGeneticaDaGenitori: La presenza di un allele con
frequenza molto maggiore degli altri in un marcatore porta ad avere
molti individui omozigoti. L’individuo omozigote puo trasmettere un
solo allele al figlio (ha due alleli uguali per quel marcatore) per cui,
se entrambi i genitori sono omozigoti, non e necessario genotipizzare i
figli per conoscere il genotipo. Lo script permette di processare un file
CSV contenente la struttura della famiglia ed un marcatore e di definire
automaticamente il genotipo dei figli che hanno i genitori omozigoti.
83
5 – L’utilizzo del sistema
Figura 5.13. Risultato della selezione
DB-backup: crea il backup di una base di dati. Il nome del file
ha sempre la data per poter mantenere una cronologia ed evitare
sovrascritture di vecchi backup.
DB-backup-script: crea un archivio contenente tutti gli script, i
moduli ed i CGI sviluppati. Il nome del file ha sempre la data per poter
mantenere una cronologia ed evitare sovrascritture di vecchi backup.
84
5 – L’utilizzo del sistema
5.2 Applicazione del sistema: Asma
L’asma viene definita come una malattia respiratoria cronica di tipo
infiammatorio dovuto ad ampie variazioni, per brevi periodi di tempo, della
resistenza al flusso nelle vie aeree intrapolmonari. Dal punto di vista clinico
e caratterizzata da crisi ricorrenti di tosse, dispnea, respiro sibilante e senso
di costrizione toracica. Il fenotipo asma viene individuato in vari modi, quali
i sintomi, o misure obiettive, quali l’iperreattivita bronchiale (BHR), i livelli
sierici di IgE o entrambi. Di solito e associata ad allergia (da ’allos’ che
significa diverso e da ’ergon’, effetto), ma puo anche essere causata da fattori
emotivi, fisici, chimici e genetici. Quando si parla di allergia si intende la
reattivita spontanea ed esagerata dell’organismo dell’individuo allergico a
particolari sostanze, che risultano invece innocue nell’80% della popolazione.
Gli allergeni hanno la particolarita di sviluppare il sistema immunitario
mediante la produzione di una classe di anticorpi: le immunoglobuline di tipo
E (IgE). Segue che gli individui allergici presentano un numero maggiore di
IgE. Gli allergeni piu comuni sono quelli stagionali primaverili, i pollini, e
quelli contenuti nelle polveri di casa (gli acari) [HCH+99].
I probandi raccolti per il nostro studio hanno asma allergico e provengono
da due laboratori distinti (Verona e Bolzano). La raccolta dei dati clinici ha
fornito, per tutti gli individui, informazioni su BHR, IgE e sulle allergie piu
comuni (polveri, animali piante, etc.).
La dimensione dei dati memorizzati all’interno della base di dati e:
• individui ∼ 850
• fenotipi ∼ 20
85
5 – L’utilizzo del sistema
• geni e cromosomi candidati ∼ 120 marcatori. Ad esempio:
– gene cd14 su cromosoma 5
– gene cftr su cromosoma 7
– gene il11 su cromosoma 19
– marcatori sui cromosomi 7, 12, 14 e chr19
• scansione genomica ∼ 400 marcatori
Le informazioni raccolte sono memorizzate in una base di dati di nome
asma: le tabelle presenti sono quelle gia viste nella presentazione del modello
relazionale (Sez. 3.2 pag 29), piu le tabelle che memorizzano fenotipi e
genotipi.
Abbiamo creato quattro tabelle di tipo “phnt”:
phnt asma(id, asma)
phnt ige(id, ige)
phnt bhr(id, bhr orig, val, cat)
phnt prick(id, prick, spt, epiteli, dfdp, gram, erbe, alberi)
phnt rinite(id, rinite)
Le tabelle rappresentano i fenotipi “asma”, “BHR”, “IgE” e i valori
qualitativi di alcuni tipi di allergia. Per ottenere il fenotipo qualitativo di
BHR ed IgE abbiamo creato le funzioni getbhr e getige.
La funzione getbhr seleziona il valore qualitativo di BHR utilizzando tre
parametri: il valore fornito di BHR, il tipo di valore e la soglia. Abbiamo
86
5 – L’utilizzo del sistema
bisogno del tipo di valore in quanto i laboratori che hanno fornito la
clinica utilizzano dei valori non numerici per indicare i casi piu gravi (con
tipovalore = 1) o evidentemente sani (con tipovalore = 2). I valori numerici
esatti hanno sempre tipovalore = 10.
CREATE FUNCTION "getbhr" (real,smallint,smallint)
RETURNS integer AS
’select CASE
WHEN ($2 = 1) THEN 1
WHEN ($2 = 2) THEN 2
WHEN ($2 = 10) THEN
CASE WHEN ($1 < $3) THEN 2
ELSE 1 END
ELSE 0 END;’
LANGUAGE ’sql’;
La funzione getige seleziona il valore qualitativo delle IgE utilizzando
l’eta ed il valore clinico di un individuo. Per valori di Ige > 200 l’individuo
e marcato affetto senza ulteriori verifiche.
CREATE FUNCTION "getige" (smallint,real) RETURNS integer AS
’select CASE
WHEN $2 < 0 OR $2 = NULL THEN 0
WHEN $2 >= 200 THEN 2
ELSE CASE
WHEN $1 = 0 AND $2 >= 20 THEN 2
WHEN $1 = 1 AND $2 >= 50 THEN 2
WHEN $1 = 2 AND $2 >= 60 THEN 2
87
5 – L’utilizzo del sistema
WHEN $1 = 3 AND $2 >= 85 THEN 2
WHEN ($1 = 4 OR $1 = 5) AND $2 >= 130 THEN 2
WHEN ($1 = 6 OR $1 = 7) AND $2 >= 160 THEN 2
WHEN ($1 = 8 OR $1 = 9) AND $2 >= 180 THEN 2
ELSE 1 END
END;’
LANGUAGE ’sql’;
Il nostro laboratorio ha genotipizzato gli individui disponibili per dei
marcatori presenti in diversi cromosomi. Ogni tabella di tipo “chr”
che abbiamo creato memorizza i marcatori che appartengono ad singolo
cromosoma. I cromosomi per i quali abbiamo dei marcatori genotipizzati
sono il 5, 6, 7, 11, 12, 14, 16, 19 e sono memorizzati nelle tabelle chr5, chr6,
chr7, chr11, chr12, chr14, chr16 e chr19 rispettivamente.
Inoltre, e stato incaricato un laboratorio specializzato per eseguire una
scansione genomica. I risultati della scansione ci sono pervenuti in formato
MS Excel e di testo CSV. Per ogni cromosoma abbiamo importato il file
CSV corrispondente nella base di dati assegnando il prefisso chrsg (chrsg01,
chrsg02,...,chrsg22, chrsgx ) ad ognuna delle tabelle create. Il prefisso indica
le tabelle di tipo “chr” relative alla scansione genomica (sg).
5.3 Applicazione del sistema: Osteoporosi
L’osteoporosi, letteralmente osso poroso, e una malattia caratterizzata
da una diminuzione della componente proteica e minerale dell’osso, con
conseguente alterazione della microstruttura dello scheletro. Questa
88
5 – L’utilizzo del sistema
condizione comporta una maggiore suscettibilita alle fratture, anche per
microtraumi [sum98][PTEF02].
L’osteoporosi e condizionata da numerosi fattori e da concause non
completamente conosciute. Alcuni fattori di rischio sono genetici: tra questi,
il piu rilevante e il sesso femminile. L’osteoporosi interessa la donna con un
rapporto 8 a 2 nei confronti dell’uomo; la donna ha in effetti un apparato
scheletrico meno robusto di quello maschile, e esposta alla perdita accelerata
di minerale dopo la menopausa, ed inoltre vive piu a lungo (l’eta infatti puo
essere considerata di per se un fattore di rischio). Altri fattori di rischio
riconosciuti per ambedue i sessi sono la taglia corporea ridotta, la razza ed il
rischio legato alla storia familiare. Alcuni fattori di rischio sono dipendenti
da abitudini di vita e nutrizionali, e sono quindi modificabili, oppure sono in
rapporto a patologie concomitanti o ad assunzioni di determinati farmaci.
Tra le abitudini che possono predisporre all’osteoporosi vanno incluse il
fumo (anticipa l’eta della menopausa), l’eccessivo consumo di alcolici (causa
di malnutrizione e di compromissione dell’equilibrio) e la vita sedentaria
(riducendosi le forze muscolari applicate all’osso, lo scheletro riduce la sua
mineralizzazione come risposta di adattamento). Tra i fattori nutrizionali si
possono includere le diete sbilanciate povere di sali minerali, l’assunzione di
calcio non adeguata alle richieste, la dieta prevalentemente carnea (l’eccesso
di proteine induce perdita di calcio con le urine) [sum98][PTEF02].
La diagnosi di osteoporosi si basa inizialmente su esami clinici. Per
la diagnosi definitiva si ricorre alla densitometria (o mineralometria) ossea
computerizzata, un esame strumentale che misura la densita minerale ossea
(BMD o Bone Mineral Density). Per convenzione internazionale, si ha
osteoporosi quando la BMD e inferiore di oltre 2.5 volte rispetto al valore
89
5 – L’utilizzo del sistema
medio di un giovane adulto (Tscore < −2.5DS). L’esame riporta sempre
la BMD e, quasi sempre, lo scostamento rispetto alla media dei soggetti
della stessa eta del paziente (Z score) o dei soggetti giovani (T score)
[sum98][PTEF02].
Gli individui raccolti per il nostro studio hanno La raccolta dei dati clinici
ha fornito, per tutti gli individui, informazioni su BHR, IgE e sulle allergie
piu comuni (polveri, animali piante, etc.).
La dimensione dei dati memorizzati all’interno della base di dati e:
• individui ∼ 1700
• fenotipi ∼ 70
• geni e cromosomi candidati ∼ 15 marcatori. Ad esempio:
– gene APO-E su cromosoma 19
Le informazioni raccolte sono memorizzate in una base di dati di nome
osteo. Oltre alle tabelle standard gia viste nella presentazione del modello
relazionale (Sez. 3.2 pag. 29), abbiamo le tabelle che memorizzano fenotipi
e genotipi.
Il laboratorio che ha raccolto gli individui ci ha fornito i dati degli
individui ed dei fenotipi tramite un unico file di MS Excel contenente
tutti i campi. La tabella phnt fenotipi contiene i fenotipi disponibili che
riguardano i dati clinici degli individui ed i risultati della densitometria sugli
individui.
I tecnici specializzati di laboratorio utilizzano i codici riportati sui
90
5 – L’utilizzo del sistema
campioni di DNA per identificare gli individui. I codici sono diversi da quelli
standard della base di dati e sono memorizzati nella tabella fml_conv_all
per mantenere una corrispondenza tra i codici degli individui.
I marcatori che abbiamo genotipizzato per gli individui sono localizzati
sui cromosomi 6, 7, 11, 17 e 19 e sono memorizzati sulle tabelle chr6, chr7,
chr11, chr17 e chr19 rispettivamente.
Gli individui presenti nella base di dati osteo sono divisi in tre gruppi
per poter condurre diverse tipologie di studio. Abbiamo un gruppo di
famiglie, uno di maschi unrelated (non imparentati) ed un gruppo di femmine
unrelated. Le procedure di estrazione dati consentono di estrarre solo gli
individui del gruppo desiderato per mezzo delle clausole WHERE che abbiamo
definito.
91
5 – L’utilizzo del sistema
5.4 Sviluppi futuri
Gli studi condotti nel laboratorio della sezione di Biologia e Genetica sono
molto diversificati e, per poter garantire un sistema adatto alle esigenze
dei ricercatori, sono necessari continui aggiornamenti atti a migliorare le
prestazioni, offrire nuove funzionalita o rimuovere eventuali errori.
Per esempio, gli studi longitudinali richiedono che i principali caratteri
fenotipici correlati con una patologia vengano rilevati piu volte ad intervalli
di tempo successivi al fine di individuare fattori genetici legati con una
manifestazione piu o meno grave della patologia stessa. Modificare il
sistema per consentire la memorizzazione ed il successivo utilizzo di queste
informazioni richiedera, da una parte, l’aggiunta di nuove tabelle nella base di
dati e, dall’altra, un nuovo sistema di estrazione ed analisi delle informazioni.
Attualmente stiamo lavorando allo sviluppo di un programma per la
categorizzazione automatica degli alleli [MSX+02]: questo deve processare
i file generati dal sequenziatore di DNA e, attraverso metodi probabilistici,
definire dei valori di aggiustamento per gli alleli. Inoltre si vuole verificare
la correttezza dei risultati utilizzando le informazioni sulla struttura delle
famiglie: se la segregazione degli alleli all’interno di una famiglia e errata, e
molto probabile (se si scartano ipotesi di false paternita) che uno o piu valori
di aggiustamento, che sono stati assegnati dal programma agli alleli, siano
errati.
Nello stato attuale del sistema non e possibile eseguire alcune operazioni
via Web. Ad esempio, manca una interfaccia che permetta l’aggiunta e
la rimozione degli utenti e la gestione delle operazioni a loro consentite
92
5 – L’utilizzo del sistema
all’interno del sistema. Inoltre, l’interfaccia che gestisce l’estrazione dei dati
dalla base di dati dovrebbe permettere agli utenti di compiere direttamente
alcune operazioni aggiuntive tipo il check mendeliano della segregazione o
una analisi statistica sui risultati prodotti. Per ottenere questo risultato
stiamo valutando la possibilita di utilizzare un programma per la statistica
computazionale come R [GI97], uno strumento programmabile che dispone
di un suo linguaggio specifico.
Una delle difficolta che si incontrano durante lo sviluppo di programmi
CGI deriva dalla necessita di scrivere codice perl che, oltre a produrre dati
richiesti, produca il codice HTML. Per rendere piu agevole la realizzazione
ed il mantenimento dei programmi CGI esistono dei moduli creati
appositamente con lo scopo di separare la parte algoritmica vera e propria
dal codice HTML tra cui: CGI::Application [Erl00] e HTML::Template
[Tre00] [Erl01]. Il modulo CGI::Application si appoggia al modulo standard
CGI e consente di sviluppare uno script CGI minimale che utilizza un
modulo contenente tutte le funzioni necessarie per la creazione di ogni
pagina generata [Erl00]. Per ogni pagina Web esiste un template che
viene processato con i metodi di HTML::Template per generare la pagina
definitiva che presenta i dati desiderati. Il sistema proposto consentirebbe di
modificare l’aspetto grafico delle pagine senza andare a toccare gli algoritmi
e di modificare l’algoritmo senza preoccuparsi dell’aspetto grafico.
93
Capitolo 6
Conclusioni
Il sistema che abbiamo proposto permette di trattare efficientemente tutte
le informazioni necessarie durante lo studio di una malattia complessa ed
e disegnato per integrare dati clinici e genetici in modo efficiente. Le
informazioni possono essere rappresentate in una varieta di formati (file
di testo CSV o di MS Excel) compatibili con i programmi di elaborazione
statistica.
Il sistema e modulare, espandibile ed adattabile allo studio di piu
patologie. E costituito da una serie di strumenti software creati per gestire
una base di dati relazionale per facilitare le interrogazioni complesse ed
il controllo sui dati memorizzati. Dopo una prima fase di preparazione
della base di dati (fenotipi e struttura delle famiglie), tutte le operazioni
piu frequenti sono svolte per mezzo di una interfaccia Web che permette di
utilizzare una interfaccia grafica sviluppata ad hoc su qualunque piattaforma
hardware e software che disponga di un Web browser e di una connessione
ad Internet.
94
6 – Conclusioni
Il confronto tra il nostro sistema e gli strumenti presentati in precedenza
(2.9.1, 2.9.2 e 2.9.3) mette in risalto alcune differenze. In primo luogo,
possiamo osservare che, mentre noi utilizziamo esclusivamente software Open
Source per lo sviluppo dei nostri programmi, tutti gli altri sistemi si servono
di software proprietario. Nel nostro caso la scelta di utilizzare software Open
Source non ha ristretto le possibilita di sviluppo portando, al contrario, alcuni
benefici:
1. Costi: tutto il software e la documentazione necessaria sono disponibili
liberamente in Internet e non richiedono licenze (spesso costose) con il
vantaggio di poter stanziare la quasi totalita dei fondi sulla ricerca di
laboratorio.
2. Flessibilita: Il sistema consente l’aggiunta di nuove caratteristiche
senza modificare la struttura attuale in quanto - a meno di modifiche
allo schema della base di dati - e sufficiente implementare le funzioni
necessarie in un modulo che puo essere richiamato all’interno dei
programmi (amministrazione del sistema e CGI ).
3. Disponibilita del software: E sufficiente installare una distribuzione
GNU/Linux per poter far funzionare correttamente il nostro
sistema. Attualmente stiamo utilizzando una distribuzione Debian
GNU/Linux 3.0 ma i pacchetti che abbiamo installato sono
disponibili anche su altre distribuzioni come, ad esempio, Mandrake
(http://www.mandrake.com) o Red-Hat (http://www.redhat.com).
4. Mantenimento: e sempre possibile aggiornare gli strumenti necessari
al funzionamento del sistema nel momento in cui sono disponibili nuove
versioni dei pacchetti o della distribuzione completa.
95
6 – Conclusioni
5. Portabilita: il sistema puo essere installato su qualunque Sistema
Operativo (e piattaforma Hardware) per il quale siano disponibili il
Web server Apache, il RDBMS PostgreSQL ed il linguaggio Perl.
Alcune operazioni che si possono compiere utilizzando gli altri sistemi che
abbiamo visto sono mancanti in quanto o sono in fase di realizzazione (ad
esempio, la categorizzazione automatica degli alleli [MSX+02]) o non sono
strettamente necessarie per il nostro laboratorio (ad esempio, una interfaccia
Web per inserire i fenotipi). Al contrario, alcune funzionalita del sistema che
abbiamo proposto non trovano corrispondenze, come:
• la possibilita di definire “profili” personalizzati per tutti gli utenti del
nostro sistema;
• l’estrazione dei dati in diversi formati compatibili con i programmi di
elaborazione statistica;
• la generazione di una statistica descrittiva in cui sono descritte le
frequenze alleliche e genotipiche degli individui ed il risultato del test
di Hardy-Weinberg.
I due punti su cui abbiamo focalizzato maggiormente il nostro lavoro
sono le interfacce per l’inserimento delle informazioni sui genotipi e per
l’estrazione dei dati. Abbiamo cercato di fornire degli strumenti che fossero
allo stesso tempo efficienti e facili da utilizzare nel lavoro quotidiano del
genetista umano.
96
Bibliografia
[ACCC02] G.R. Abecasis, S.S. Cherny, W.O. Cookson e L.R. Cardon.
“Merlin-rapid analysis of dense genetic maps using sparse
gene flow trees”. Nat Genet , vol. 30: pp. 97–101 (2002).
[ACPT99] P. Atzeni, S. Ceri, S. Paraboschi e R. Torlone. Basi di dati:
concetti, linguaggi e architetture. McGraw-Hill Italia (1999).
[Bioa] Applied Biosystems. “Genescan analysis software”.
http://www.appliedbiosystems.com/.
[Biob] Applied Biosystems. “Genotyper software”.
http://www.appliedbiosystems.com/.
[BLC+01] Franca Dagna Bricarelli, Faustina Lalatta, Romeo Carrozzo,
Mario Lituania, Simona Cavani e Umberto Nicolini. Filo
diretto con le malattie genetiche, volume 2 . UTET (2001).
[Bun02] Tim Bunce. “Dbi - database independent interface for perl”
(1994-2002).
[Cor02] Microsoft Corporation. “Active server pages (asp)” (2002).
http://www.asp.net/.
97
BIBLIOGRAFIA
[DB00] Alligator Descartes e Tim Bunce. Programming the Perl
DBI . O’Reilly & Associates, Inc. (Feb 2000).
[Erl00] Jesse Erlbaum. “Cgi::application” (2000).
http://www.cpan.org/authors/id/J/JE/JERLBAUM/.
[Erl01] Jesse Erlbaum. “Using cgi::application” (may 2001).
http://www.perl.com/lpt/a/2001/06/05/cgi.html.
[Fou01] Apache Software Foundation. “Php” (2001-2001).
http://www.php.net/.
[Fou02] The Apache Software Foundation. “Apache” (1999-2002).
http://httpd.apache.org/.
[GGB00] Scott Guelich, Shishir Gundavaram e Gunther Birznieks.
CGI Programming with Perl . O’Reilly & Associates (2000).
[GI97] Robert Gentleman e Ross Ihaka. “The r project for statistical
computing” (1997).
http://www.r-project.org/.
[Gro97] John Groenveld. “Apache and perl, an alternative
architecture to oracle webserver” (Apr 1997).
http://www.cse.psu.edu/∼groenvel/ECO97/.
[GS01] GlaxoSmithKline e SIGU. Incontri 2 - Farmaci e genoma.
GlaxoSmithKline e Societa Italiana di Genetica Umana
(2001).
[GS02] GlaxoSmithKline e SIGU. Incontri 3 - Dalla Ricerca
Genetica alla pratica clinica. GlaxoSmithKline e Societa
Italiana di Genetica Umana (2002).
98
BIBLIOGRAFIA
[GT92] S.W. Guo e E.A. Thompson. “Performing the exact test of
hardy-weinberg proportion for multiple alleles”. Biometrics ,
vol. 48: pp. 361–372 (1992).
[HCH+99] S.T. Holgate, W. Cookson, P.G. Holt, C. Macaubas, P.A.
Stumbles, P.D. Sly, D.B. Corry, F. Kheradmand, Turner H.,
Kinet J.P. e Barnes P.J. Allergy and Asthma. Nature Suppl
(1999).
[IDoMotCK00] platforms Bioinformatics I. Department of Medicine of the
CAU Kiel. “Mfg tools, genotyping lab software” (2000).
http://www.mucosa.de/.
[Inc03] The MathWorks Inc. “Excel link for use with matlab”
(2003).
http://www.mathworks.com/access/helpdesk/
help/pdf doc/exlink/exlink.pdf.
[KDRDL96] L. Kruglyak, M.J. Daly, M.P. Reeve-Daly e E.S. Lander.
“Parametric and nonparametric linkage analysis: A unified
multipoint approach and nonparametric linkage analysis: A
unified multipoint approach”. American Journal of Human
Genetics , vol. 58: pp. 1347–1363 (jun 1996).
[Lan97] Kenneth Lange. Mathematical and Statistical Methods for
Genetic Analysis . Springer Verlag (1997).
[Lar99] Alexander Larsson. “Dia - a diagram drawing program”
(1999).
[LDL+01] Jin-Long Li, Hongyi Deng, Dong-Bing Lai, Fuhua Xu,
Jian Chen, Guimin Gao, Robert R. Recker e Hong-Wen
99
BIBLIOGRAFIA
Deng. “Toward high-throughput genotyping: dynamic and
automatic software for manipulating large-scale genotype
data using fluorescently labeled dinucleotide markers”.
Genome Res., vol. 11(7): pp. 1304–1314 (jul 2001).
[Lin02] D. Stein Lincoln. “Cgi - simple common gateway interface
class” (1995-2002).
[Mac96] Doug MacEachern. “mod perl” (1996).
http://perl.apache.org/.
[McL02] Grant McLean. “Xml::simple - easy api to read/write xml”
(1999-2002).
[McN02] John McNamara. “Spreadsheet::writeexcel - write to a cross-
platform excel binary file” (2000-2002).
[Mer01] Edmund Mergl. “Apache::dbi - initiate a persistent database
connection” (2001).
[Mom03] Bruce Momjian. “Postgresql hardware performance tuning”
(2003).
http://www.ca.postgresql.org/docs/
momjian/hw performance/.
[MSX+02] Giovanni Malerba, Antonella Sangalli, Luciano Xumerle,
Monica Mottes e Pier Franco Pignatti. “Studio di procedure
per l’aggiustamento delle genotipizzazioni condotte su un
elevato numero di famiglie”. Rap. tecn., V Congresso
Nazionale S.I.G.U. (2002).
100
BIBLIOGRAFIA
[MTK+98] F.J. McMahon, C.J. Thomas, R.J. Koskela, T.S. Breschel,
T.C. Hightower, N. Rohrer, C. Savino, M.G. McInnis,
S.G. Simpson e J.R. DePaulo. “Integrating clinical and
laboratory data in genetic studies of complex phenotypes: a
network-based data management system”. Am J Med Genet ,
vol. 81(3): pp. 248–256 (1998).
[MXP03] Giovanni Malerba, Luciano Xumerle e Pier Franco Pignatti.
“Il test dell’equilibrio di hardy-weinberg in situazioni
scomode”. Rap. tecn., VI Congresso Nazionale S.I.G.U.
(2003).
[Ott95] Jurg Ott. “Hwe program” (1995).
http://linkage.rockefeller.edu/soft/linkutil/.
[Ott99] Jurg Ott. Analysis of Human Genetic Linkage. Johns
Hopkins Univ Pr (1999).
[OW98] Jeffrey R. O’Connell e Daniel E. Weeks. “Pedcheck:
A program for identification of genotype incompatibilities
in linkage analysis”. Am J. Hum. Genet., vol. 63(1):
pp. 259–266 (jul 1998).
[Per] “Perl modules”.
http://www.cpan.org/modules/.
[pos] “Postgresql - a sophisticated object-relational dbms”.
http://www.postgresql.org/.
[PTEF02] Munro Peacock, Charles H. Turner, Michael J. Econs e
Tatiana Foroud. “Genetics of osteoporosis”. Endocrine
Reviews , vol. 3(23): pp. 303–326 (jun 2002).
101
BIBLIOGRAFIA
[RBK94] G.A. Rohrer, D.W. Behrens e J.W. Keele. “A simplified
procedure for entry of raw genotypic data”. J Comput Biol ,
vol. 1(2): pp. 111–119 (1994).
[Ris00] N.J. Risch. “Searching for genetic determinants in the new
millennium”. Nature, (405): pp. 847–856 (jun 2000).
[SGML92] David T. Suzuki, Anthony J. F. Griffiths, Jeffrey H. Miller e
Richard C. Lewontin. Genetica, principi di analisi formale.
Zanichelli (1992).
[SM02a] Inc. Sun Microsystems. “Java servlet technology” (1995-
2002).
http://java.sun.com/products/servlet/.
[SM02b] Inc. Sun Microsystems. “Javaserver pages (jsp)” (1995-
2002).
http://java.sun.com/products/jsp/.
[SR99] Tom Strachan e Andrew P. Read. Human Molecular
Genetics, 2nd Edition. BIOS Scientific Publishers (1999).
[sum98] Executive summary. “Osteoporosis: review of the
evidence for prevention, diagnosis and treatment and
cost-effectiveness analysis”. Osteoporosis Int., vol. 8(4):
pp. S3–S6 (jun 1998).
[Tay99] Rod Taylor. “Postgres auto-doc” (1999).
[Tre00] Sam Tregar. “Html::template” (2000).
http://html-template.sourceforge.net.
102
BIBLIOGRAFIA
[W3C02a] W3C. “Cascading style sheets (css)” (1996-2002).
http://www.w3.org/Style/CSS/.
[W3C02b] W3C. “Extensible markup language (xml)” (1996-2002).
http://www.w3.org/XML/.
[Wal] Larry Wall. “perl - practical extraction and report
language”.
http://www.perl.org/.
[Wal02] Larry Wall. “Embperl” (1993-2002).
http://www.perldoc.com/.
103