Encontrar secuencia y contar de tres en tres
Publicado: 2015-06-15 07:16 @344
Buenas tardes. He conseguido que mi programa lea de tres en tres una secuencia y otro programa que me encuentre la secuencia ATG y me diga dónde está.
Ahora estoy tratando de que dada una secuencia, me encuentre la secuencia ATG y cuente de tres en tres a partir de ATG.
#!/usr/bin/perl
$secuencia = 'AAAATGCGGTTATGCCCATGGGTAAGTG';
$indica_orf = 0; #Indicada cuando encuentra un orf
$orf = "";
my @var = (); #La usamos para guardar los orfn
my $count = 0; #Contador de orf
my $posi = 0; #Posición inicial
my $posf = 0; #Posición final
for (my $i = 0; $i < length $secuencia; $i=$i+3) {
my $str ="";
$a = substr ($secuencia, $i, 3); #Para que me vaya leyendo las letras de 3 en 3.
if (($a eq 'ATG') and ($indica_orf == 0)) { #Si $a es igual a ATG y el indicador esta a 0
$indica_orf = 1;
$posi = $i+1;
}
if ($indica_orf == 1) { #Si estamos dentro de un orf
$str = ($a);
$orf = $orf.$str; #Sustituye las 3 letras de a por su valor y va concatenando
}
if ( $a =~ /TA[AG]|TGA/i ) { #Cuando a sea igual a TAA TAG o TGA
if ($indica_orf == 1) {
$indica_orf = 0; #Sal del orf
}
}
$orf = "";
Llegado aquí me he liado un poco y me da error. ¿Me podríais ayudar?
¡¡¡Gracias!!!
Ahora estoy tratando de que dada una secuencia, me encuentre la secuencia ATG y cuente de tres en tres a partir de ATG.
#!/usr/bin/perl
$secuencia = 'AAAATGCGGTTATGCCCATGGGTAAGTG';
$indica_orf = 0; #Indicada cuando encuentra un orf
$orf = "";
my @var = (); #La usamos para guardar los orfn
my $count = 0; #Contador de orf
my $posi = 0; #Posición inicial
my $posf = 0; #Posición final
for (my $i = 0; $i < length $secuencia; $i=$i+3) {
my $str ="";
$a = substr ($secuencia, $i, 3); #Para que me vaya leyendo las letras de 3 en 3.
if (($a eq 'ATG') and ($indica_orf == 0)) { #Si $a es igual a ATG y el indicador esta a 0
$indica_orf = 1;
$posi = $i+1;
}
if ($indica_orf == 1) { #Si estamos dentro de un orf
$str = ($a);
$orf = $orf.$str; #Sustituye las 3 letras de a por su valor y va concatenando
}
if ( $a =~ /TA[AG]|TGA/i ) { #Cuando a sea igual a TAA TAG o TGA
if ($indica_orf == 1) {
$indica_orf = 0; #Sal del orf
}
}
$orf = "";
Llegado aquí me he liado un poco y me da error. ¿Me podríais ayudar?
¡¡¡Gracias!!!