EXON-fishing

Disseny del programa

Introducció:

El nostre programa està dissenyat de manera que porti a terme les següents tasques:

Clica aquí per a veure el programa escrit en llenguatge Perl.

Funcionament del programa:

Per al funcionament del programa cal entrar els següents paràmetres:

Seqüència en format FASTA
Matriu de pesos dels llocs d'splicing donors
Matriu de pesos dels llocs d'splicing acceptors
Valor llindar per les senyals d'splicing
Taula d'ús de codons (coding bias)
Valor llindar de cada exó predit
A continuació detallem les diferents accions i funcions que utilitza el programa:

Enregistrament dels fitxers d'entrada de dades:

Enregistrament de la seqüència FASTA:

Obrim el filehandle que conté el fitxer de la seqüència en format FASTA, el llegim, i enregistrem per una banda l'identificador de la seqüència, i per l'altra la seqüència en string (la guardem tota seguida eliminant tots els salts de línia i els espais entre caràcters) i també en un vector on en cada posició hi enregistrem un nucleòtid.

Funció HASH:

Enresgistra el fitxer de la matriu de pesos en un hash. D'aquesta manera més endavant, mentre analitzem la seqüència, podrem obtenir una puntuació per les senyals donadores o acceptores d'splicing (segons la matriu utilitzada).

Enregistrament de la taula d'uús de codons:

Enresgistra el fitxer de la taula d'ús de codons (coding bias) en un hash que conté cadascun dels codons i la seva puntuació.

Identificar els codons d'stop

Utilitzant les funcions STOP_CODONS identifiquem els diferents Open Reading Frames (ORF). Entenem per ORF el tall de seqüència contingut entre l'inici i el primer codó stop, entre dos codons stop o l'últim codó stop i el final de la seqüència. Enregistrem tant l'ORF com la posició del codó d'stop per cada pauta de lectura.

Funció SPLICING

Amb aquesta funció recorrem la seqüència puntuant els possibles senyals acceptors o donadors d'splicing a partir de la matriu de pesos corresponents. El valor total del senyal d'splicing l'enregistrem en una matriu conjuntament amb la posició del donor o l'acceptor (la posició final o inicial d'un possible exó). Recorrem la seqüència inicial i no cada ORF per separat per tal de no perdre cap possible senyal d'splicing que es trobi proper a un codó stop.

Funció ATG_CODONS

A partir de la seqüència separada per codons per a cada pauta de lectura (frame), busquem els codons ATG, que correspondrien a l'inici d'un exó, i enregistrem la seva posició a la seqüència.

Funció FISHING

La finalitat de la matriu és obtenir una matriu amb les possibles combinacions de formació d'exons. Per tal de fer aquesta combinació considerem que hi ha 4 tipus d'exons possibles:
Exons inicials: comencen amb un codó ATG i acaben amb un donor

Exons interns: comencen amb un acceptor i acaben amb un donor

Exons terminals: comencen amb un acceptor i acaben amb un codó stop

Exons singles: comencen amb un codó ATG i acaben amb un codó stop

En fer les combinacions hem de tenir en compte que les posicions que emparellem s'han de trobar en un mateix ORF, és a dir, que estiguin contingudes entre l'inici o el final i un codó stop o entre dos codons stop.

Amb aquestes combinacions creem una matriu per cada tipus d'exó que conté la posició d'inici i final de l'exó i les puntuacions dels llocs d'splicing en cas que l'exó en contingui.

Funció CODON_BIAS

A partir de la matriu anterior, on hi tenim guardades les posicions d'inici i fi dels exons apliquem aquesta funció per tal d'obtenir la puntuació final de cada exó.

Aplicant la matriu d'ús de codons es calcula la raó de versemblança dels possibles exons predits anteriorment en una pauta de lectura donada i obtenim el valor d'aquesta raó en escala logarítmica. Aquest valor se suma a les puntuacions de l'splicing de manera que obtenim la puntuació total de cada exó. Aquells exons que tinguin una puntuació superior al llindar assignat seran emmagatzemats en la matriu de sortida.

La matriu de sortida també contindrà la pauta (frame) de l'exó. Aquest número l'obtenim a partir del residu de la divisió per 3 de la posició d'inici de l'exó en la seqüència original.

Funció UNIR_MATRIU

Amb dues funcions unim les 12 matrius que teníem per tal d'obtenir una sola matriu amb els resultats finals.

Funció MATRIU_DEF

L'última funció del programa ens converteix la matriu de resultats amb una nova matriu que conté tota la informació organitzada en el format GFF. Finalment ordenem la sortida dels resultats segons la posició d'inici de l'exó.