• Publicidad

Obtener datos específicos de una tabla

¿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.

Obtener datos específicos de una tabla

Notapor CrisPerl » 2018-02-11 09:42 @446

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.
CrisPerl
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-02-04 01:31 @105

Publicidad

Re: Obtener datos específicos de una tabla

Notapor explorer » 2018-02-11 10:49 @492

Con una expresión regular como /^9p/ te vale para saber si esa línea empieza... por '9p'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener datos específicos de una tabla

Notapor CrisPerl » 2018-02-11 11:38 @526

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.002 segundos, usando GeSHi 1.0.8.4
CrisPerl
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2018-02-04 01:31 @105

Re: Obtener datos específicos de una tabla

Notapor explorer » 2018-02-11 18:44 @822

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.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
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 1 invitado