• Publicidad

Ejecutar un programa externo de forma repetida

Perl aplicado a la bioinformática

Ejecutar un programa externo de forma repetida

Notapor wampaier » 2010-11-08 13:31 @605

¿Qué tal...? Tengo una duda... Tengo un archivo multifasta con más de 10.000 secuencias y quiero ejecutar un programa que se llama "sixpack" pero solo me deja introducir una sola secuencia... con su respectiva salida.

¿Cómo podría hacerle con un código en Perl para poder meter las 10.000 secuencias pero que cada vez que encuentre un ">" vuelva a ejecutar el programa y la salida también tenga otro nombre?

Gracias
wampaier
Perlero nuevo
Perlero nuevo
 
Mensajes: 66
Registrado: 2008-08-12 12:50 @576

Publicidad

Re: Ejecutar un programa externo de forma repetida

Notapor explorer » 2010-11-08 13:59 @624

Te vale con meter, en el bucle de lectura del fichero FASTA, una llamada a system(), en donde llamarás al sixpack, pasándole la secuencia en un fichero externo (no he encontrado la forma de pasarle la secuencia de forma directa en la línea de comandos).

También debes indicar el fichero de salida y, sobre todo, no te olvides de indicar la opción --auto, para que el programa no realice ninguna pregunta y trabaje solo con lo que se le pase por la línea de comandos.
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: Ejecutar un programa externo de forma repetida

Notapor wampaier » 2010-11-08 15:21 @681

Disculpa... ¿¿¿me puedes poner un ejemplo po-favor...??? Si no es mucha molestia :D

¡¡Gracias!!
wampaier
Perlero nuevo
Perlero nuevo
 
Mensajes: 66
Registrado: 2008-08-12 12:50 @576

Re: Ejecutar un programa externo de forma repetida

Notapor pvaldes » 2011-01-27 09:36 @442

Probablemente algo tipo:

system('/path/a/sixpack -auto fichero_externo')

Consulta el manual de sixpack
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Ejecutar un programa externo de forma repetida

Notapor gonzalipto » 2011-04-18 09:26 @434

Hola. Mira, yo justamente hace poco trabajé procesando archivos multifasta.

Te recomiendo mil veces trabajar con el módulo BioPerl, ya que trae módulos que están específicamente diseñados para trabajar con secuencias y estructuras.

A BioPerl lo bajas desde esta página: http://www.bioperl.org/wiki/Main_Page y podes encontrar cómo instalarlo en varias plataformas.

Yo uso un script de esta forma para leer los multifasta.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. use Bio::SeqIO;                        #librería de bioperl para trabajar con secuencias
  3. my $input = "archivo.fas";
  4. my $entrada = Bio::SeqIO->new( -file => $input2, -format => 'fasta' )
  5.     ;                                  #con esto cargo el archivo fasta entero dentro de $entrada
  6.  
  7. #ahora voy a leer con un while cada secuencia dentro del multifasta
  8. while ( my $sequencia = $entrada->next_seq() ) {
  9.     my $id            = $sequencia->display_id; #obtengo el id de mi secuencia
  10.     my $search_string = uc( $sequencia->seq )
  11.         ;                              #obtengo la secuencia en un formato adecuado (buscar más info sobre uc)
  12.  
  13.     # de aquí en más puedo trabajar la secuencia como si fuera un string
  14. }
  15.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Espero que te haya servido

Saludos

Gonza
gonzalipto
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2011-04-18 08:59 @416


Volver a Bioinformática

¿Quién está conectado?

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

cron