• Publicidad

Buscar ORF

Perl aplicado a la bioinformática

Buscar ORF

Notapor Kreator69 » 2011-12-08 11:16 @511

¿Cómo podría buscar cada ORF (ATG) hasta un STOP (TAA, TAG, TGA) guardando cada triplete desde ATG hasta STOP en un arreglo? Debido a que es un genoma y necesito sacar los marcos de lecturas.

Llevo esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my $cadena = '';
  5. my $file   = 'archivo.fna';            # archivo .fna que contiene el #genoma de un procariota
  6. if ( -e $file ) {
  7.     open IN, "<$file" or die "No pasa nada $!\n";
  8.     my $cont = 0;
  9.     while ( my $linea = <IN> ) {
  10.         if ( $cont >= 1 ) {
  11.             chomp $linea;
  12.             $cadena = $cadena . $linea;
  13.         }
  14.         $cont++;
  15.     }
  16. }
  17.  
  18. # Diccionario codones -> aminoácido
  19. my %hash = (
  20.     'AAA' => 'K',                      # Lisina
  21.     'AAC' => 'N',                      # Asparagina
  22.     'AAG' => 'K',                      # Lisina
  23.     'AAT' => 'N',                      # Asparagina
  24.     'ACA' => 'T',                      # Treonina
  25.     'ACC' => 'T',                      # Treonina
  26.     'ACG' => 'T',                      # Treonina
  27.     'ACT' => 'T',                      # Treonina
  28.     'AGA' => 'R',                      # Arginina
  29.     'AGC' => 'S',                      # Serina
  30.     'AGG' => 'R',                      # Arginina
  31.     'AGT' => 'S',                      # Serina
  32.     'ATA' => 'I',                      # Isoleucina
  33.     'ATC' => 'I',                      # Isoleucina
  34.     'ATG' => 'M',                      # Metionina
  35.     'ATT' => 'I',                      # Isoleucina
  36.     'CAA' => 'Q',                      # Glutamina
  37.     'CAC' => 'H',                      # Histidina
  38.     'CAG' => 'Q',                      # Glutamina
  39.     'CAT' => 'H',                      # Histidina
  40.     'CCA' => 'P',                      # Prolina
  41.     'CCC' => 'P',                      # Prolina
  42.     'CCG' => 'P',                      # Prolina
  43.     'CCT' => 'P',                      # Prolina
  44.     'CGA' => 'R',                      # Arginina
  45.     'CGC' => 'R',                      # Arginina
  46.     'CGG' => 'R',                      # Arginina
  47.     'CGT' => 'R',                      # Arginina
  48.     'CTA' => 'L',                      # Leucina
  49.     'CTC' => 'L',                      # Leucina
  50.     'CTG' => 'L',                      # Leucina
  51.     'CTT' => 'L',                      # Leucina
  52.     'GAA' => 'E',                      # Ácido glutámico
  53.     'GAC' => 'D',                      # Ácido aspártico
  54.     'GAG' => 'E',                      # Ácido glutámico
  55.     'GAT' => 'D',                      # Ácido aspártico
  56.     'GCA' => 'A',                      # Alanina
  57.     'GCC' => 'A',                      # Alanina
  58.     'GCG' => 'A',                      # Alanina
  59.     'GCT' => 'A',                      # Alanina
  60.     'GGA' => 'G',                      # Glicina
  61.     'GGC' => 'G',                      # Glicina
  62.     'GGG' => 'G',                      # Glicina
  63.     'GGT' => 'G',                      # Glicina
  64.     'GTA' => 'V',                      # Valina
  65.     'GTC' => 'V',                      # Valina
  66.     'GTG' => 'V',                      # Valina
  67.     'GTT' => 'V',                      # Valina
  68.     'TAA' => '*',                      # Stop
  69.     'TAC' => 'Y',                      # Tirosina
  70.     'TAG' => '*',                      # Stop
  71.     'TAT' => 'Y',                      # Tirosina
  72.     'TCA' => 'S',                      # Serina
  73.     'TCC' => 'S',                      # Serina
  74.     'TCG' => 'S',                      # Serina
  75.     'TCT' => 'S',                      # Serina
  76.     'TGA' => '*',                      # Stop
  77.     'TGC' => 'C',                      # Cisteina
  78.     'TGG' => 'W',                      # Triptófano
  79.     'TGT' => 'C',                      # Cisteina
  80.     'TTA' => 'L',                      # Leucina
  81.     'TTC' => 'F',                      # Fenilalanina
  82.     'TTG' => 'L',                      # Leucina
  83.     'TTT' => 'F'
  84. );                                     # Fenilalanina
  85.  
  86. ############################ MÉTODO UNO #########################
  87. my $bandera         = 1;
  88. my $posicion        = 0;
  89. my $posicionarreglo = 0;
  90. my @orf;
  91. my $largo = length $cadena;
  92. for ( my $i = 0; $i < $largo; $i++ ) {
  93.     $bandera = 1;
  94.     my $string = substr $cadena, $i, 3;
  95.     if ( $string eq 'ATG' ) {
  96.         $posicion = $i;
  97.         $orf[$posicionarreglo] = $string;
  98.         print "lo logramos esta en la posicion: $posicion\n";
  99.         for ( my $j = $posicion; $bandera == 1; $j++ ) {
  100.  
  101.             my $string2 = substr $cadena, $posicion, 3;
  102.             $orf[$posicionarreglo] = $orf[$posicionarreglo] . $string2;
  103.             if ( $string2 eq 'TAA' or $string2 eq 'TGA' or $string2 eq 'TAG' ) {
  104.                 print "$orf[$posicionarreglo]";
  105.                 $bandera = 0;
  106.                 $posicionarreglo++;
  107.  
  108.             }
  109.         }
  110.  
  111.     }
  112.  
  113. }
  114.  
  115. #print "\n$orf[0]\n$orf[1]\n$orf[2]\n$orf[3]\n$orf[4]\n";
  116.  
  117. close IN;
  118.  
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
Kreator69
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-11-30 23:42 @029

Publicidad

Re: Buscar ORF

Notapor explorer » 2011-12-08 12:41 @570

Por estos foros hay unos cuántos métodos para extraer los ORF. Usa el sistema de búsqueda o Google referido a estos foros.

Por ejemplo, solo hace un minuto, le he respondido a Diego3D.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Bioinformática

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron