• Publicidad

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

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

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

Notapor marco_p » 2017-02-27 12:02 @543

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.002 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.
marco_p
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2017-02-27 11:44 @530

Publicidad

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

Notapor explorer » 2017-02-27 12:25 @559

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

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

Notapor marco_p » 2017-02-27 12:32 @563

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!
marco_p
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2017-02-27 11:44 @530

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

Notapor explorer » 2017-02-27 16:18 @720

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados