• Publicidad

Quitar números del ADN

Perl aplicado a la bioinformática

Quitar números del ADN

Notapor millen » 2011-11-19 06:40 @319

Hola, soy principiante, hace un mes que estoy en Perl.

Tengo estas tres secuencias de ADN y las tengo metidas por líneas en un array.

Quiero quitar el número de delante, pero no lo consigo. Si alguien me puede echar una mano...

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1 agatggcggc gctgaggggt cttgggggct ctaggccggc cacctactgg tttgcagcgg
 61 agacgacgca tggggcctgc gcaataggag tacgctgcct gggaggcgtg actagaagcg
121 gaagtagttg tgggcgcctt tgcaaccgcc tgggacgccg ccgagtggtc tgtgcaggtt
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¡Muchas Gracias!
millen
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-11-19 06:30 @313

Publicidad

Re: Quitar números del ADN

Notapor explorer » 2011-11-19 06:54 @329

Bienvenido a los foros de Perl en español, millen.

¿Seguro que solo quitar los números? ¿No querrás también quitar el espacio en blanco que hay también?

Lo siguiente te puede servir:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for (@array) {
  2.     s/^\s*\d+\s+//;
  3. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Explicación:
  • Hacemos un bucle por todos los elementos del @array
  • Cada elemento se almacena en la variable "por defecto" $_ (aunque no la veamos), además, el elemento queda "enlazado" con $_, por lo que, todo cambio a $_ afectará al elemento del array
  • Lo que hacemos es una operación de sustitución (s///). Como no decimos sobre qué, perl lo hará sobre $_ (aunque no lo veamos, ya que es la variable "por defecto" -para eso sirve-)
  • La operación de sustitución es una expresión regular, con dos partes
  • La primera parte es el patrón que tiene que localizar dentro del elemento. El patrón es ^\s*\d+\s+, que quiere decir: «busca al comienzo de la cadena (^) por cero o más espacios en blanco (\s*), seguidos por uno o más dígitos (\d+), seguidos por uno o más espacios en blanco (\s+
  • Si el elemento contiene un conjunto de caracteres que coincide con el patrón anterior, se activa la sustitución, y lo que haya coincidido es sustituido por la segunda parte. En este caso, no hay nada (//), por lo que lo que ocurre es que estamos realmente eliminando lo que buscábamos
  • El resultado de la sustitución queda en $_, pero es que, además, el elemento del @array es actualizado (una de las propiedades ocultas de los bucles for() de Perl), con lo que estaremos actualizando el propio @array (todo queda en casa).
También lo puedes hacer en una sola línea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
s/^\s*\d+\s+// for @array;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Quitar números del ADN

Notapor millen » 2011-11-19 10:47 @491

¡Joe! menuda explicación y qué rapidez, así da gusto. Pues sí, también era quitar los espacios, sí. A ver si así lo consigo de una vez...

¡Muchas Gracias!
millen
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-11-19 06:30 @313

Re: Quitar números del ADN

Notapor explorer » 2011-11-19 11:44 @530

Aquí hay otra forma, si la secuencia ADN empieza "siempre" en la quinta columna, podemos "recortar" lo que sobra:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for (@array) {
  2.     $_ = substr $_, 4;
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Hasta incluso será más rápida que la anterior solución... pero siempre que las secuencias empiezan en la misma columna.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Quitar números del ADN

Notapor millen » 2011-11-22 08:41 @403

Ya lo conseguí de las dos maneras. ¡Muchas gracias!
millen
Perlero nuevo
Perlero nuevo
 
Mensajes: 23
Registrado: 2011-11-19 06:30 @313


Volver a Bioinformática

¿Quién está conectado?

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