Página 1 de 1

Eliminar filas repetidas basadas en un patrón [Perl/Python]

NotaPublicado: 2017-02-27 12:02 @543
por marco_p
Hola a todos.

Antes de nada, daros la enhorabuena, tanto al administrador como a la gente que publica, por el servicio que ofrecéis.

Mi duda es la siguiente: Estoy trabajando con una base de datos bastante grande (16 GB en cada archivo. En total, 460 TB), cuya estructura es:
Sintáxis: (file01.txt) [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
desname=clusteringBin3940
similarity_method=FrankEtAlDotProduct
version=spectra-cluster-1.0.6-SNAPSHOT
threshold=0.7
fdr=0
description=clusteringBin3940

=Cluster=
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22491.xml;spectrum=1074 true
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22498.xml;spectrum=2950 true

=Cluster=
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22498.xml;spectrum=1876 true
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22498.xml;spectrum=3479 true
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22498.xml;spectrum=3785 true
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22498.xml;spectrum=3785 true

=Cluster=
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22493.xml;spectrum=473 true
SPEC PRD000681;PRIDE_Exp_Complete_Ac_22493.xml;spectrum=473 true
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

De este tipo de archivos tengo bastante y mediante un cat los he juntado todos en un mismo archivo, por lo que tengo X archivos juntos.

Como podéis ver, hay varios elementos repetidos (último elemento y antepenúltimo elemento). Para comprobar y eliminar los repetidos basados en el patrón de =Cluster= y en el patrón spectrum he realizado el siguiente programa.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use warnings;
  4. use strict;
  5.  
  6. my %seen;
  7. my $count = 0;
  8. my $output;
  9.  
  10. while ( <> ) {
  11.   next if ( m/spectrum=(\d+)/ and $seen{$1}++ );
  12.   if ( m/==Cluster==/ ) {
  13.      open ( $output, ">", "temp".$count++ ) or die $!;
  14.      select $output;
  15.   }
  16.   print;
  17. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4



Este programa funciona perfectamente. El problema está en que lo quiero adjuntar en un proyecto que está escrito todo en Python, lenguaje que no he tocado.

¿Existe algún módulo que permita ejecutar dicho código en Python? En caso de que no, si alguien sabe cómo pasarlo a Python podríamos llegar a algún acuerdo económico, ¡jajaja!

Saludos y muchas gracias.

Re: Eliminar filas repetidas basadas en un patrón [Perl/Pyth

NotaPublicado: 2017-02-27 12:25 @559
por explorer
Bienvenido a los foros de Perl en Españo, marco_p.

Puedes ejecutarlo con la sentencia os.system()

P.D. Esto es más bien una pregunta de Python, no de Perl. Deberías haberlo preguntado en un foro de Python.

Re: Eliminar filas repetidas basadas en un patrón [Perl/Pyth

NotaPublicado: 2017-02-27 12:32 @563
por marco_p
Muchas gracias por responder.
He intentado buscar en foros especializados en Python. El problema es que en esos foros el conocimiento de Perl suele ser nulo. ¡jaja!

Re: Eliminar filas repetidas basadas en un patrón [Perl/Pyth

NotaPublicado: 2017-02-27 16:18 @720
por explorer
Pero si no se trata de Perl. Se trata de llamar a un programa externo, que es lo que pedías.

Podías haber hecho el programa en Go, y el problema sería el mismo.