MATERIALS I MÈTODES |
En el nostre projecte hem utilitzat el llenguatge de programació Perl sobre Linux (un sitema operatiu basat en Unix). El cos principal del treball es basa en la creació d'un programa per detectar la proporció de SNPs en el genoma i l'ús de comandes pel tractament previ de les dades. A continuació s'explica el procés amb més detall.
La pàgina web s'ha realitzat amb el sistema de programació HTML.
Els gràfics han estat fets amb l'Excel, del sistema operatiu Windows.
DESCRIPCIÓ DELS FITXERS____________________________________________________________________
Per poder dur a terme aquest projecte hem necessitat dos tipus de fitxers de dades: els que contenien les anotacions d'SNPs i els que contenien les anotacions de gens, ambdós fitxers per humà i ratolí (4 arxius en total).
Les anotacions dels gens amb què hem treballat les hem obtingut de: Les anotacions dels SNPs es troben a: Els fitxers refGene.txt contenen 21.094 gens en humans i 17.351 gens en ratolí. Aquestes dades les hem obtingut sota l'ordre:
Peró també les podem trobar a la web: $wc refGene.txt
Analitzem el seu format amb un exemple:
Els fitxers snpNhi.txt contenen 3.175.658 SNPs humans i 199.441 SNPs en ratolí; enregistrats sota el següent format:
TRACTAMENT DELS FITXERS__________________________________________________________________
$gzip -d refGene.txt
$egrep "chr1[^0-9]" refGene.txt > chr1.txtI així per a cada cromosoma. Comencem amb el refGene.txt d'humà i després amb el de ratolí. L'estructura del nom dels diferents arxius és el mateix per cada cromosoma: chr + nº cromosoma (X i Y en cas dels cromosomes sexuals)+ '.txt'. Aquesta estructura és imprescindible perquè el programa creat els reconegui. Els arxius de ratolí i humà es troben en carpetes diferents, i per tant hauran de ser executats des del directori oportú.
$egrep 'chr1[^0-9] snpNih.txt | wc > snpcrom.txtAixò pels 24 i 21 cromosomes d'ambdues espècies.
$egrep 'chr2[^0-9] snpNih.txt | wc >> snpcrom.txt
...
DESCRIPCIÓ DEL PROGRAMA__________________________________________________________________
El nostre programa és assaig.pl (per H.sapiens, i amb petites modificacions per M.musculus). Analitzem-lo:
Mitjançant l'ús del vector ARGV, en executar el programa cal escriure el nom d'aquest i el del fitxer on es troben els SNPs. Veiem l'exemple en cas de H. sapiens:
./assaig.pl /disc8/home/annver04/genomes/H.sapiens/golden_path_200307/database/snpNih.txtL'estructura bàsica del programa és:
Aquest programa obre l'arxiu d'SNPs i llegeix fila per fila fins que s'acaba l'arxiu. Depenent del cromosoma al que pertany l'SNP que s'està llegint, obrirà l'arxiu del cromosoma corresponent.
$gens[$N][$i][ ]La coordenada $N fa referència al número de cromosoma, la coordenada $i al número de la fila on es troba el gen, i la tercera coordenada a les columnes de l'arxiu refGene.txt.
El primer pas és crear una matriu de dos dimensions per a un determinat cromosoma (chrN.txt), això és possible gràcies al primer bucle, que permet enregistrar tots els elements de la matriu augmentant el valor de $i i $N. Serveixi d'exemple la següent matriu:
NM_007417 chr1 + 54062217 54063570 54062217 54063570 1 54062217, 54063570,
NM_007418 chr1 + 33988458 33989835 33988458 33989835 1 33988458, 33989835,
NM_007419 chr1 + 56756166 56757567 56756166 56757567 1 56756166, 56757567,
...
Donat aquest arxiu chr1.txt, creem una matriu on la primera dimensió fa referència a cadascuna de les columnes (descrites al format refGene.txt) i la segona inclou tots els gens d'aquest cromosoma. La variable $i va augmentant de valor fins a enregistrar la totalitat dels gens de l'arxiu, mentre la primera dimensió també augmenta per enregistrar les diferents columnes (aquest és el procés mitjançant el qual encaixem l'estructura del fitxer refGene.txt).
La matriu de tres dimensions apareix com a resultat de fer matrius de dos dimensions per a cadascun dels fitxers chrN.txt que tenim. Els cromosomes sexuals els hem hagut de passar a números enlloc de lletres perquè el programa pugui enregistrar-los a la matriu.
if ($N=~ /\A\d+\Z/)Així doncs només tindrem en compte aquells amb cromosoma numèric, X i Y.
sub busca_snpPerquè aquesta cerca funcioni, primer cal ordenar la matriu en ordre creixent segons els inici de trànscrit de gen mitjançant la comanda:
@{$gens[$N]}=sort{${$a}[0] <=> ${$b}[0]} (@{$gens[$N]})