Cómo sumar elementos escalares numéricos dentro de un array
Publicado: 2013-01-09 11:51 @535
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:
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í:
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
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
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
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.003 segundos, usando GeSHi 1.0.8.4