Página 1 de 1

Obtener datos específicos de una tabla

NotaPublicado: 2018-02-11 09:42 @446
por CrisPerl
Hola. Tengo un archivo que contiene lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
1e34r prot difraction
2zj3t nunc NMR
9picr prot-nuc difraction
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Es más larga y las tres columnas están separadas con tabuladores.

La pregunta es cómo hago para que restrinja la información a presentar a proteínas o los dúplex de dna-proteína.

Ademas solo estaremos interesados en las estructuras cuyo identificador empiece por "9p".

El programa tendrá que indicar cuál de estos identificadores que empiezan por "9p" fueron resueltos por X-ray cristalografía y cuáles por NMR.

Hasta ahora entiendo cómo hacer que solo me arrojen dos o una columna pero con el total de la información trato de seleccionar como en esta caso solo los 9p... pero no me sale.

Muchas gracias.

Re: Obtener datos específicos de una tabla

NotaPublicado: 2018-02-11 10:49 @492
por explorer
Con una expresión regular como /^9p/ te vale para saber si esa línea empieza... por '9p'.

Re: Obtener datos específicos de una tabla

NotaPublicado: 2018-02-11 11:38 @526
por CrisPerl
Hola, explorer, realmente valoro tu tiempo y agradezco por orientarnos.

Estoy realizando este script para ir probando antes de seguir con el script.

El primer paso sería seleccionar todos los '9p', pero no sale nada.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. open (IN,"pdb_entry_typeT.txt");
  4. while (<IN>) {chomp;
  5. @line=split (/^9p\s/,$_);
  6. print "@line"}
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4

Re: Obtener datos específicos de una tabla

NotaPublicado: 2018-02-11 18:44 @822
por explorer
Estás usando split() pero con un valor incorrecto. ¿No dices que las columnas están separadas por tabuladores? Pues ese debe ser el valor que usarás con el split().

Otra cosa es quedarte solo con las líneas que comienzan por '9p'.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use v5.10.1;
  3. use strict;
  4. use autodie;
  5.  
  6. open my $IN, '<', 'pdb_entry_typeT.txt';
  7. while (my $registro = <$IN>) {
  8.     next if $registro !~ /^9p/;                 # saltar a la siguiente línea si no coincide con el patrón
  9.     chomp $registro;
  10.     my @columnas = split /\t/, $registro;       # sacar las columnas
  11.     say "@columnas";
  12. }
  13. close $IN;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4