COM HO FA?



El programa està estructurat en quatre parts:

  • Entrada de dades
  • Algoritme central
  • Sortida de dades
  • Funcions


Entrada de dades:

  • Obre el fitxer GFF que l'usuari introdueix en la comanda
  • Converteix la informació del fitxer GFF en un matriu. Cada columna del fitxer es correspon a una columna de la matriu que crea el nostre programa (@Exons)
  • Calcula el remainder i l'afegeix a l'última columna de la matriu
  • Ordena per ordre creixent d'acceptor

La matriu @Exons conté:
                        $Exons [$i] [0] - Columna on s'emmagatzema l'entrada de la seqüència
                        $Exons [$i] [1] - Columna amb el nom del programa de predicció d'exons
                        $Exons [$i] [2] - Tipus d'exó
                        $Exons [$i] [3] - Posició de l'acceptor de l'exó
                        $Exons [$i] [4] - Posició del donor
                        $Exons [$i] [5] - Puntuació
                        $Exons [$i] [6] - Strand on està predit l'exó (el nostre programa només té en compte la cadena +)
                        $Exons [$i] [7] - Pauta de lectura de l'exó
                        $Exons [$i] [8] - Remainder ( calculat pel nostre programa )


Algoritme central:

El programa es basa en un algoritme central que té en compte una sèrie de restriccions. Anirà recorrent els diferents exons amb dues variables: $i i $j.

  • La posició definida per $i representa l'últim exó del possible millor gen.
  • $j anirà recorrent totes les posicions entre el primer exó i l'exó que determina $i.
  • A mesura que $j va augmentant, es van comparant les puntuacions dels possibles gens que es poden formar amb els diferents exons que va marcant $j i l'exó que fixa $i.
  • De tots els gens que acabin amb $i, s'escollirà el de màxima puntuació. Aquest gen quedarà emmagatzemat a la memòria.
  • $i incrementarà la seva posició i el procés de comparació amb $j es repetirà.
  • Quan $i arribi a la última posició del conjunt d'exons es compararan tots els millors gens acabats en un exó $i donat.
  • S'escollirà el gen que tingui millor puntuació d'entre tots els millors gens emmagatzemats.

L'algoritme central és:

$i=0;

while ($i < scalar(@Exons)) {                        # $i sigui més petit que el nombre total d'exons emmagatzemats en @Exons #

$j = 0;
$puns[$i] = 0;                        # Vector que emmagatzema les puntuacions dels millors gens #
$gens[$i] = -1;                        # Vector que emmagatzema les posicions dels exons que formen el millor gen #

while ($j < $i) {

if ( $Exons[$j][4] < $Exons[$i][3]                # Que l'acceptor d'un exó sigui més gran que el donor de l'anterior #

&& $Exons[$j][8] == $Exons[$i][7]              # Que el remainder d'un exó sigui igual al frame del següent #

&& restriccio ($Exons[$j][2],$Exons[$i][2],($Exons[$i][3] - $Exons[$j][4]))) {  # Que la separació dels exons que van seguits                                                                                                                           estigui entre la mínima i la màxima #

if ($puns[$j] > $puns[$i]) {                             # Aquí es comparen les puntuacions dels millors gens emmagatzemats #

$puns[$i] = $puns[$j];                            # Es van acumulant les puntuacions dels millors gens #

$gens[$i] = $j;                             # Es van acumulant les posicions dels exons que formen els millors gens #

}

}

$j = $j+1;

}

$puns[$i] = $puns[$i]+ $Exons[$i][5];                             # La puntuació del millor gen serà la suma de la puntuació de l'exó amb el que acaba + la
                                                                                          puntuació del millor gen que acaba abans d'aquest últim exó #

$i = $i+1;

}

Sortida de dades:

  • Recuperació de les posicions dels exons que formen part del millor gen
  • Impressió a la pantalla dels resultats en format GFF en ordre creixent d'acceptor

Funcions:

Les funcions utilitzades en aquest programa són:

  • Funció que obre el fitxer de paràmetres (que haurà introduït l'usuari) i té en compte els tipus d'exons que es concatenen i la distància mínima i màxima entre ells. Aquest funció es cridarà en les restriccions de l'algoritme central.(restriccio)
  • Funció que busca la màxima puntuació d'un vector. La cridem per imprimir la puntuació del millor gen. (max)
  • Funció que busca la posició que conté la puntuació màxima d'un vector. La cridem en l'apartat de sortida de dades per recuperar els exons que formen part del gen amb màxima puntuació. (posmax)

    Torna a la pàgina principal