Tengo un problema con la división de un archivo multiFASTA en partes.
Quiero delimitar el número de secuencias que cada una de las partes ha de contener y lo he intentado usando "while", pero resulta que el bucle se sale de madre y no me divide los archivos de la forma que quiero.
Creo que el código se explicará mejor que yo:
Using perl Syntax Highlighting
- #!/usr/local/bin/perl
- use strict;
- use warnings;
- my $count=0;
- my @arr;
- print "Enter your list\n";
- chomp(my $entrada = <STDIN>);
- open (INFILE, "$entrada") || die ("can´t open input file");
- my @data=<INFILE>;
- close(INFILE);
- my $outfile="$entrada-section_$count.txt";
- my $head = 0; #inicializo $head como control del bucle
- while ($head <=10){
- foreach (@data){
- chomp;
- if ($_=~/^>(\w+)/) { #localizo cada linea de encabezado de secuencia
- push (@arr, "$_\n");
- $head++; #cuento cada encabezado de secuencia
- next;
- }
- else {
- push (@arr, "$_\n");
- }
- &create_file($entrada, @arr);
- }
- }
- #############################################################
- sub create_file {
- my ($entrada, @arr) =@_;
- $count++;
- $outfile="$entrada _ $count.txt";
- open(OUTFILE,">$outfile") or die "Error with outfile: $!\\n";
- print OUTFILE "@arr";
- close(OUTFILE);
- }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
El problema es que me da un archivo por cada línea del fichero FASTA en vez de crearme archivos que contengan 10 secuencias. No sé cómo hacer que el contador $head funcione regulando así el bucle del while().
Ojalá se me haya entendido y me podáis ayudar.