Página 1 de 1

Programa para cortar y pegar secuencias

NotaPublicado: 2015-06-03 10:04 @461
por perl biología
Buenas tardes, necesito hacer un programa de Perl en el que me pida unos archivos que contienen una secuencia, las corte, las pegue, las guarde en una variable y la imprima por pantalla.

¿Alguien sería tan amable de ayudarme?

Gracias.
Un saludo.

Re: Programa para cortar y pegar secuencias

NotaPublicado: 2015-06-03 10:13 @467
por explorer
Bienvenida a los foros de Perl en Español, perl biología.

La tarea parece muy sencilla. Pero no nos dices en qué formato están esos archivos.

¿Puedes poner un ejemplo?

Si tienes hecho parte del código, sería interesante que lo publicaras para ver dónde te atascas.

Saludos.

Re: Programa para cortar y pegar secuencias

NotaPublicado: 2015-06-03 10:16 @469
por perl biología
Es en formato FASTA. Al no saber introducir el documento no puedo empezar mi programa.

Soy novata en el programa y tengo dificultad para empezar.

Re: Programa para cortar y pegar secuencias

NotaPublicado: 2015-06-03 10:22 @473
por explorer
Por este hilo (Bioinformática) hay muchos ejemplos de lectura de archivos en formato FASTA.

Por ejemplo: Cómo realizar un intérprete de un FASTA

Míralos, a ver si alguno de los códigos que hay por ahí te sirven.

¿No tienes hecho nada del programa?

Re: Programa para cortar y pegar secuencias

NotaPublicado: 2015-06-03 10:58 @499
por perl biología
Esto me debería cortar la secuencia supuestamente, ¿cómo puedo concatenarlas en un fichero e imprimirlas por pantalla?

#!/usr/bin/perl

use stricts

# Programa para hacer un plásmido

print "En primer lugar, introduzca la zona vir\n";


print "Dime nombre del archivo que contiene la zona vir\n";


my $fichero = <STDIN>;


open my $fichero;
my @fasta = <$fichero>;


close $fichero;


my $secuencia;

foreach (@fasta)

{

next if /^\s*$/;

next if /^\s*#/;

next if /^>\;

$secuencia = $_;


}


$secuencia =~ s/\s//g;

print "Ahora, introduzca la zona el gen\n";


print "Dime nombre del archivo que contiene el gen\n";


my $fichero2 = <STDIN>;


open my $fichero2;

my @fasta2 = <$fichero2>;


close $fichero2;

my $secuencia2;



foreach (@fasta2)
{


next if /^\s*$/;


next if /^\s*#/;


next if /^>\;


$secuencia2 = $_;


}


$secuencia2 =~ s/\s//g;

Plásmido

NotaPublicado: 2015-06-03 13:47 @616
por perl biología
Buenas tardes, tengo una duda que no me permite avanzar.

Quiero abrir varias secuencias FASTA y que me salgan de forma concatenadas (secuencia tras secuencia) para formar un plásmido.

Por favor, espero respuesta.
Gracias de antemano.

Re: Programa para cortar y pegar secuencias

NotaPublicado: 2015-06-03 14:52 @661
por explorer
El programa anterior está completamente a medias.

Por lo que leo, solo te pide el nombre de un archivo, lee todas las líneas, y luego las recorre y se queda con la última línea que no sea un espacio en blanco, ni un comentario ni una cabecera FASTA. Y lo guarda en $secuencia.

Luego le quita los espacios en blanco.

Luego pide el nombre del archivo que contiene el gen (?) y hace lo mismo que con el primer archivo.

Luego le quita los espacios en blanco. Y nada más.

¿Hasta ahora el programa hace lo que quieres?

Para sacar una salida concatenada, te vale con hacer sucesivos print de lo que quieres sacar (a pantalla o disco).

Si son varios los archivos, lo mejor es guardando las secuencias en un array, y luego, en la salida, te vale con hacer un join(), o hacer un for por ese array, haciendo un print por cada secuencia. Y así sale todo junto.

O incluso más sencillo: sacar la secuencia inmediatamente a medida de que el usuario te va dando los archivos.

¿Puedes publicar un ejemplo de las entradas y de la salida deseada?

Re: Programa para cortar y pegar secuencias

NotaPublicado: 2015-06-04 05:21 @264
por perl biología
Muchas gracias, explorer. Voy a probarlo bien con las secuencias FASTA, ya que ahí no señalo esas secuencias.

A ver qué tal me va ahora.