Hola a todos, soy bastante nuevo en programación en Perl y quiero hacer un
script que me haga lo siguiente:
Tengo una lista de genes con números:
Using text Syntax Highlighting
AT1G01073 18,5
AT1G02470 20
AT1G02590 5
AT1G02590 6,5
AT1G02740 5,5
AT1G03600 5,5
AT1G03600 9
AT1G03600 4,5
AT1G03600 8
AT1G03600 6
AT1G03600 11,5
AT1G03600 4
AT1G04410 4,5
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Lo que quiero hacer es sumar los números correspondientes a cada gen, pero como verán, algunas son únicas, y otros tienen más de una fila por gen.
Tengo que hacer un
script para que me sume las que están repetidas y me deje una única, y obviamente las que están únicas las deje igual y que quede algo así:
Using text Syntax Highlighting
AT1G01073 18,5
AT1G02470 20
AT1G02590 11,5
AT1G02740 5,5
AT1G03600 48,5
AT1G04410 15,5
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Empecé a escribir el
script pero no puedo sumar los elementos (números) que puse dentro en un
array, para luego exportarlos junto con su
id.
¿Existe una función para sumar escalares numéricos?
Agradecería su ayuda
Muchas gracias
Using perl Syntax Highlighting
#!/usr/local/bin/perl
use strict;
use warnings;
my $input2
= "/home/diego-ubuntu/0-archivos_deep_seq/DEEP_SEQ1_4dpi/promedios/TAIR/RPM_mapeables/GO/NI_4dpi_genes_sin_sumar";
my $input1 = "/home/diego-ubuntu/0-archivos_deep_seq/DEEP_SEQ1_4dpi/promedios/TAIR/RPM_mapeables/GO/NI_4dpi_ids";
my $output
= "/home/diego-ubuntu/0-archivos_deep_seq/DEEP_SEQ1_4dpi/promedios/TAIR/RPM_mapeables/GO/NI_4dpi_genes_sumados";
open( FILE1, "<$input1.txt" ) or die "could not open $input1 file";
open( OUTPUTFILE, ">>$output.txt" ) or die "could not open $output file";
while (<FILE1>) { # AT1G01073
my @split1 = split( /\s+/, $_ );
chomp $_; # borra las lineas vacias
my $id1 = $_;
my @array; # defino el array que va a contener las cuentas de id repetidos
open( FILE2, "<$input2.txt" ) or die "could not open $input2 file";
while (<FILE2>) { # AT1G01073 6
my @split2 = split( /\s+/, $_ );
my $id2 = $split2[0];
my $counts = $split2[1];
chomp $_;
if ( $id1 eq $id2 ) {
push( @array, $counts ); #como sumo $counts para luego imprimirlos?
print OUTPUTFILE "$id1\t$counts\n"
}
}
}
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4