• Publicidad

Cómo pasar de "Variable" a "Lista"

Perl aplicado a la bioinformática

Cómo pasar de "Variable" a "Lista"

Notapor slopal » 2005-12-05 11:43 @530

Me refiero a que si por ejemplo tengo una variable:

$cadena = "ATCGTCATGC";

necesito acceder "cómodamente" y varias veces sin cambiar el contenido de la cadena a diferentes posiciones: cadena[2], cadena[3], etc...

Esto lo podría hacer si la cadena fuera una lista pero es un parámetro de entrada...¿ hay una forma fácil de transformar una variable en una lista? ¿O alguna forma de acceder que no haya sabido ver en los tutoriales? :S

Muchas gracias... (es mucho más sencillo de como lo he explicado, sorry :s)
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Publicidad

Notapor Perl user » 2005-12-05 12:37 @567

¿Qué tal?

Lo mas sano ( sencillo y rápido ) sería utilizar substr. De esta manera, puedes acceder no solo a una sola posición, sino a una subcadena completa o incluso modificarla utilizándolo como lvalue:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $str = 'foo bar baz';
  2. my $f   = substr( $str, 0, 1 ); # extrae 'f'
  3. my $b   = substr( $str, 4, 1 ); # extrae 1 carácter desde la posición 4: 'b'
  4. my $foo = substr( $str, 0, 3 ); # extrae 'foo'
  5. my $bar = substr( $str, 4, 3 ); # extrae 'bar'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ahora bien... si quisieras representar tu cadena como un objeto similarmente a como lo hace Java y poder tener operaciones propias para manipularlo, puedes utilizar el módulo String:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $str = String->new( "foo bar baz" );
  2. print $str->charAt( 4 ); # imprime 'b'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor explorer39 » 2005-12-05 12:44 @572

Puedes crear una nueva variable, un array, con una representación, en lista, de los caracteres de la variable.

Si además la llamas de la misma manera, mejoras el entendimiento del programa, siempre y cuando tengas luego muy claro cuál quieres modificar y cuál no.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $cadena = "ATCGTCATGC";
  2. my @cadena = split //, $cadena;
  3. print $cadena[1]; # T
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Si vas a manejar secuencias de ADN, supongo que estarás usando el paquete BioPerl...
explorer39
 

Notapor slopal » 2005-12-05 12:56 @581

¡¡¡Muchas gracias a los dos!!!

Utilizaré la segunda opción con split() :)

¡¡Sois unos cielos!!

P.D.: gracias por el BioPerl :P ¡¡Me lo miro ahora mismo!! Aun estoy muuuy verde :oops:
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Notapor explorer39 » 2005-12-05 13:34 @607

Se podría hacer así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Bio::Seq;
  2.  
  3. # crear secuencia
  4. $seqobj = Bio::PrimarySeq->new (
  5.     -seq => 'ATCGTCATGC',
  6.     -id  => 'GeneFragment-12',
  7.     -accession_number => 'X78121',
  8.     -alphabet => 'dna',
  9.     -is_circular => 1
  10. );
  11. print $seqobj->seq();       # ATCGTCATGC
  12. print $seqobj->subseq(4,7); # GTCA
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
explorer39
 


Volver a Bioinformática

¿Quién está conectado?

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

cron