Problema con subrutinas
Publicado: 2010-08-15 09:59 @457
Buenas tardes.
Escribo este post porque tengo un problema invocando subrutinas en un programa.
El problema es que intento hacer un bucle con "foreach" para que procese cada una de las líneas de un fichero de entrada. Supuestamente lo que el programa debe hacer es traducir los 6 marcos de lectura de una secuencia de ADN a Proteína.
El problema es que cuando la entrada consta de más de una secuencia de ADN, a partir de la segunda secuencia de entrada en el bucle, el resultado que obtengo es una adición de los resultados previos...
Supongo que el problema está en que una vez ejecutadas las subrutinas para la primera secuencia. ¿Podría ser que la variable $_ no se reinicia y junta los nuevos resultados con los previos?
Estoy bastante perdido, la verdad...por favor ayudadme
Entrada datos tipo:
Aquí os escribo el programa:
Salida datos tipo:
Espero que me haya sabido explicar...
Un saludo
PD. Siento el barullo de escribir la Entrada y Salida tipo en la ventana del post, pero no me dejaba adjuntar los archivos ".txt"
Escribo este post porque tengo un problema invocando subrutinas en un programa.
El problema es que intento hacer un bucle con "foreach" para que procese cada una de las líneas de un fichero de entrada. Supuestamente lo que el programa debe hacer es traducir los 6 marcos de lectura de una secuencia de ADN a Proteína.
El problema es que cuando la entrada consta de más de una secuencia de ADN, a partir de la segunda secuencia de entrada en el bucle, el resultado que obtengo es una adición de los resultados previos...
Supongo que el problema está en que una vez ejecutadas las subrutinas para la primera secuencia. ¿Podría ser que la variable $_ no se reinicia y junta los nuevos resultados con los previos?
Estoy bastante perdido, la verdad...por favor ayudadme
Entrada datos tipo:
Using text Syntax Highlighting
ATGGCAAACGCAAAAGCAAGCAGAGTCGATGATGAGGGTACCTAAAAAATTTATTAA
ATGGCAAACGCAAAAGCAAGGGGTACCTTTTATCAACAGAGTCGATGAGTGAGGGTACCTTAAGTTATTAA
ATGGCAAACGCAAAAGCAAGGGGTACCTTTTATCAACAGAGTCGATGAGTGAGGGTACCTTAAGTTATTAA
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Aquí os escribo el programa:
Using perl Syntax Highlighting
- #!/c:/Perl -w
- %AA3 = (
- 'UUU','Phe',
- 'UUC','Phe',
- 'UUA','Leu',
- 'UUG','Leu',
- 'UCU','Ser',
- 'UCC','Ser',
- 'UCA','Ser',
- 'UCG','Ser',
- 'UAU','Tyr',
- 'UAC','Tyr',
- 'UAA','***',
- 'UAG','***',
- 'UGU','Cys',
- 'UGC','Cys',
- 'UGA','***',
- 'UGG','Trp',
- 'CUU','Leu',
- 'CUC','Leu',
- 'CUA','Leu',
- 'CUG','Leu',
- 'CCU','Pro',
- 'CCC','Pro',
- 'CCA','Pro',
- 'CCG','Pro',
- 'CAU','His',
- 'CAC','His',
- 'CAA','Gln',
- 'CAG','Gln',
- 'CGU','Arg',
- 'CGC','Arg',
- 'CGA','Arg',
- 'CGG','Arg',
- 'AUU','Ile',
- 'AUC','Ile',
- 'AUA','Ile',
- 'AUG','Met',
- 'ACU','Thr',
- 'ACC','Thr',
- 'ACA','Thr',
- 'ACG','Thr',
- 'AAU','Asn',
- 'AAC','Asn',
- 'AAA','Lys',
- 'AAG','Lys',
- 'AGU','Ser',
- 'AGC','Ser',
- 'AGA','Arg',
- 'AGG','Arg',
- 'GUU','Val',
- 'GUC','Val',
- 'GUA','Val',
- 'GUG','Val',
- 'GCU','Ala',
- 'GCC','Ala',
- 'GCA','Ala',
- 'GCG','Ala',
- 'GAU','Asp',
- 'GAC','Asp',
- 'GAA','Glu',
- 'GAG','Glu',
- 'GGU','Gly',
- 'GGC','Gly',
- 'GGA','Gly',
- 'GGG','Gly' );
- %AA1 = (
- 'UUU','F ',
- 'UUC','F ',
- 'UUA','L ',
- 'UUG','L ',
- 'UCU','S ',
- 'UCC','S ',
- 'UCA','S ',
- 'UCG','S ',
- 'UAU','Y ',
- 'UAC','Y ',
- 'UAA','* ',
- 'UAG','* ',
- 'UGU','C ',
- 'UGC','C ',
- 'UGA','* ',
- 'UGG','W ',
- 'CUU','L ',
- 'CUC','L ',
- 'CUA','L ',
- 'CUG','L ',
- 'CCU','P ',
- 'CCC','P ',
- 'CCA','P ',
- 'CCG','P ',
- 'CAU','H ',
- 'CAC','H ',
- 'CAA','Q ',
- 'CAG','Q ',
- 'CGU','R ',
- 'CGC','R ',
- 'CGA','R ',
- 'CGG','R ',
- 'AUU','I ',
- 'AUC','I ',
- 'AUA','I ',
- 'AUG','M ',
- 'ACU','T ',
- 'ACC','T ',
- 'ACA','T ',
- 'ACG','T ',
- 'AAU','N ',
- 'AAC','N ',
- 'AAA','K ',
- 'AAG','K ',
- 'AGU','S ',
- 'AGC','S ',
- 'AGA','R ',
- 'AGG','R ',
- 'GUU','V ',
- 'GUC','V ',
- 'GUA','V ',
- 'GUG','V ',
- 'GCU','A ',
- 'GCC','A ',
- 'GCA','A ',
- 'GCG','A ',
- 'GAU','D ',
- 'GAC','D ',
- 'GAA','E ',
- 'GAG','E ',
- 'GGU','G ',
- 'GGC','G ',
- 'GGA','G ',
- 'GGG','G ' );
- print "Enter your file name:\n";
- chomp($dna = <STDIN>);
- open INFILE, "$dna" || die ($!, "Can't open");
- @sequence = <INFILE>;
- open OUTFILE, ">>proteina7.txt" || die ($!, "Can't open");
- foreach $sequence (@sequence){
- $sequence = uc $sequence; # produces the upper case string
- $sequence =~ s/T/U/g;
- $no_of_bases = length $sequence;
- print OUTFILE ("$sequence\n");
- my $p1 = &Proteina_1;
- my $p2 = &Proteina_2;
- my $p3 = &Proteina_3;
- $sequence_r = reverse $sequence;
- print OUTFILE ("$sequence_r\n\n");
- my $p1_r = &Proteina_1r;
- my $p2_r = &Proteina_2r;
- my $p3_r = &Proteina_3r;
- }
- sub Proteina_1 {
- for ($i = 0; $i<$no_of_bases; $i=$i+3)
- {
- $codon = substr( $sequence, $i, 3 );
- $amino_acid_sequence_1= $amino_acid_sequence_1 . $AA3{ $codon };
- $amino_acid_sequence_single_1 = $amino_acid_sequence_single_1 . $AA1{ $codon };
- }
- print OUTFILE ("$amino_acid_sequence_1\n");
- print OUTFILE ("$amino_acid_sequence_single_1\n");
- }
- sub Proteina_2 {
- for ($i = 1; $i<$no_of_bases; $i=$i+3)
- {
- $codon_2 = substr( $sequence, $i, 3 );
- $amino_acid_sequence_2 = $amino_acid_sequence_2 . $AA3{ $codon_2};
- $amino_acid_sequence_single_2 = $amino_acid_sequence_single_2 . $AA1{ $codon_2};
- }
- print OUTFILE (" $amino_acid_sequence_2\n");
- print OUTFILE (" $amino_acid_sequence_single_2\n");
- }
- sub Proteina_3 {
- for ($i = 2 ; $i<$no_of_bases; $i=$i+3)
- {
- $codon_3 = substr( $sequence, $i, 3 );
- $amino_acid_sequence_3 = $amino_acid_sequence_3 . $AA3{ $codon_3};
- $amino_acid_sequence_single_3 = $amino_acid_sequence_single_3 . $AA1{ $codon_3};
- }
- print OUTFILE (" $amino_acid_sequence_3\n");
- print OUTFILE (" $amino_acid_sequence_single_3\n\n");
- }
- sub Proteina_1r {
- for ($i = 0; $i<$no_of_bases; $i=$i+3)
- {
- $codon_1r = substr( $sequence_r, $i, 3 );
- $amino_acid_sequence_1r= $amino_acid_sequence_1r . $AA3{ $codon_1r};
- $amino_acid_sequence_single_1r = $amino_acid_sequence_single_1r . $AA1{ $codon_1r};
- }
- print OUTFILE ("$amino_acid_sequence_1r\n");
- print OUTFILE ("$amino_acid_sequence_single_1r\n");
- }
- sub Proteina_2r {
- for ($i = 1; $i<$no_of_bases; $i=$i+3)
- {
- $codon_2r = substr( $sequence_r, $i, 3 );
- $amino_acid_sequence_2r = $amino_acid_sequence_2r . $AA3{ $codon_2r};
- $amino_acid_sequence_single_2r = $amino_acid_sequence_single_2r . $AA1{ $codon_2r};
- }
- print OUTFILE (" $amino_acid_sequence_2r\n");
- print OUTFILE (" $amino_acid_sequence_single_2r\n");
- }
- sub Proteina_3r {
- for ($i = 2 ; $i<$no_of_bases; $i=$i+3)
- {
- $codon_3r = substr( $sequence_r, $i, 3 );
- $amino_acid_sequence_3r = $amino_acid_sequence_3r . $AA3{ $codon_3r };
- $amino_acid_sequence_single_3r = $amino_acid_sequence_single_3r . $AA1{ $codon_3r };
- }
- print OUTFILE (" $amino_acid_sequence_3r\n");
- print OUTFILE (" $amino_acid_sequence_single_3r\n\n");
- }
- __END__
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4
Salida datos tipo:
Using text Syntax Highlighting
AUGGCAAACGCAAAAGCAAGCAGAGUCGAUGAUGAGGGUACCUAAAAAAUUUAUUAA
MetAlaAsnAlaLysAlaSerArgValAspAspGluGlyThr***LysIleTyr***
M A N A K A S R V D D E G T * K I Y *
TrpGlnThrGlnLysGlnAlaGluSerMetMetArgValProLysLysPheIle
W Q T Q K Q A E S M M R V P K K F I
GlyLysArgLysSerLysGlnSerArg******GlyTyrLeuLysAsnLeuLeu
G K R K S K Q S R * * G Y L K N L L
AAUUAUUUAAAAAAUCCAUGGGAGUAGUAGCUGAGACGAACGAAAACGCAAACGGUA
LeuPheLysLysSerMetGlyValValAlaGluThrAsnGluAsnAlaAsnGly
L F K K S M G V V A E T N E N A N G
AsnTyrLeuLysAsnProTrpGlu******LeuArgArgThrLysThrGlnThrVal
N Y L K N P W E * * L R R T K T Q T V
IleIle***LysIleHisGlySerSerSer***AspGluArgLysArgLysArg
I I * K I H G S S S * D E R K R K R
AUGGCAAACGCAAAAGCAAGGGGUACCUUUUAUCAACAGAGUCGAUGAGUGAGGGUACCUUAAGUUAUUAA
MetAlaAsnAlaLysAlaSerArgValAspAspGluGlyThr***LysIleTyr***MetAlaAsnAlaLysAlaArgGlyThrPheTyrGlnGlnSerArg***ValArgValPro***ValIle
M A N A K A S R V D D E G T * K I Y * M A N A K A R G T F Y Q Q S R * V R V P * V I
TrpGlnThrGlnLysGlnAlaGluSerMetMetArgValProLysLysPheIleTrpGlnThrGlnLysGlnGlyValProPheIleAsnArgValAspGlu***GlyTyrLeuLysLeuLeu
W Q T Q K Q A E S M M R V P K K F I W Q T Q K Q G V P F I N R V D E * G Y L K L L
GlyLysArgLysSerLysGlnSerArg******GlyTyrLeuLysAsnLeuLeuGlyLysArgLysSerLysGlyTyrLeuLeuSerThrGluSerMetSerGluGlyThrLeuSerTyr***
G K R K S K Q S R * * G Y L K N L L G K R K S K G Y L L S T E S M S E G T L S Y *
AAUUAUUGAAUUCCAUGGGAGUGAGUAGCUGAGACAACUAUUUUCCAUGGGGAACGAAAACGCAAACGGUA
LeuPheLysLysSerMetGlyValValAlaGluThrAsnGluAsnAlaAsnGlyAsnTyr***IleProTrpGlu***ValAlaGluThrThrIlePheHisGlyGluArgLysArgLysArg
L F K K S M G V V A E T N E N A N G N Y * I P W E * V A E T T I F H G E R K R K R
AsnTyrLeuLysAsnProTrpGlu******LeuArgArgThrLysThrGlnThrValIleIleGluPheHisGlySerGlu***LeuArgGlnLeuPheSerMetGlyAsnGluAsnAlaAsnGly
N Y L K N P W E * * L R R T K T Q T V I I E F H G S E * L R Q L F S M G N E N A N G
IleIle***LysIleHisGlySerSerSer***AspGluArgLysArgLysArgLeuLeuAsnSerMetGlyValSerSer***AspAsnTyrPheProTrpGlyThrLysThrGlnThrVal
I I * K I H G S S S * D E R K R K R L L N S M G V S S * D N Y F P W G T K T Q T V
MetAlaAsnAlaLysAlaSerArgValAspAspGluGlyThr***LysIleTyr***
M A N A K A S R V D D E G T * K I Y *
TrpGlnThrGlnLysGlnAlaGluSerMetMetArgValProLysLysPheIle
W Q T Q K Q A E S M M R V P K K F I
GlyLysArgLysSerLysGlnSerArg******GlyTyrLeuLysAsnLeuLeu
G K R K S K Q S R * * G Y L K N L L
AAUUAUUUAAAAAAUCCAUGGGAGUAGUAGCUGAGACGAACGAAAACGCAAACGGUA
LeuPheLysLysSerMetGlyValValAlaGluThrAsnGluAsnAlaAsnGly
L F K K S M G V V A E T N E N A N G
AsnTyrLeuLysAsnProTrpGlu******LeuArgArgThrLysThrGlnThrVal
N Y L K N P W E * * L R R T K T Q T V
IleIle***LysIleHisGlySerSerSer***AspGluArgLysArgLysArg
I I * K I H G S S S * D E R K R K R
AUGGCAAACGCAAAAGCAAGGGGUACCUUUUAUCAACAGAGUCGAUGAGUGAGGGUACCUUAAGUUAUUAA
MetAlaAsnAlaLysAlaSerArgValAspAspGluGlyThr***LysIleTyr***MetAlaAsnAlaLysAlaArgGlyThrPheTyrGlnGlnSerArg***ValArgValPro***ValIle
M A N A K A S R V D D E G T * K I Y * M A N A K A R G T F Y Q Q S R * V R V P * V I
TrpGlnThrGlnLysGlnAlaGluSerMetMetArgValProLysLysPheIleTrpGlnThrGlnLysGlnGlyValProPheIleAsnArgValAspGlu***GlyTyrLeuLysLeuLeu
W Q T Q K Q A E S M M R V P K K F I W Q T Q K Q G V P F I N R V D E * G Y L K L L
GlyLysArgLysSerLysGlnSerArg******GlyTyrLeuLysAsnLeuLeuGlyLysArgLysSerLysGlyTyrLeuLeuSerThrGluSerMetSerGluGlyThrLeuSerTyr***
G K R K S K Q S R * * G Y L K N L L G K R K S K G Y L L S T E S M S E G T L S Y *
AAUUAUUGAAUUCCAUGGGAGUGAGUAGCUGAGACAACUAUUUUCCAUGGGGAACGAAAACGCAAACGGUA
LeuPheLysLysSerMetGlyValValAlaGluThrAsnGluAsnAlaAsnGlyAsnTyr***IleProTrpGlu***ValAlaGluThrThrIlePheHisGlyGluArgLysArgLysArg
L F K K S M G V V A E T N E N A N G N Y * I P W E * V A E T T I F H G E R K R K R
AsnTyrLeuLysAsnProTrpGlu******LeuArgArgThrLysThrGlnThrValIleIleGluPheHisGlySerGlu***LeuArgGlnLeuPheSerMetGlyAsnGluAsnAlaAsnGly
N Y L K N P W E * * L R R T K T Q T V I I E F H G S E * L R Q L F S M G N E N A N G
IleIle***LysIleHisGlySerSerSer***AspGluArgLysArgLysArgLeuLeuAsnSerMetGlyValSerSer***AspAsnTyrPheProTrpGlyThrLysThrGlnThrVal
I I * K I H G S S S * D E R K R K R L L N S M G V S S * D N Y F P W G T K T Q T V
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Espero que me haya sabido explicar...
Un saludo
PD. Siento el barullo de escribir la Entrada y Salida tipo en la ventana del post, pero no me dejaba adjuntar los archivos ".txt"