Procesando texto
Publicado: 2009-11-30 16:08 @714
Hola a todos,
Les escribo para lo siguiente: tengo que procesar una base de datos, para ello dispongo de un par de archivos.
El archivo 1 contiene un listado de palabras que deseo buscar en el archivo 2 (base de datos). El archivo 1 tiene la siguiente estructura (solo es un fragmento):
Ahora el archivo 2, que es mi base de datos, tiene la siguiente estructura:
Contiene un par de columnas separadas por "\t". Lo que deseo hacer es buscar para cada miembro de la lista del archivo 1 su ocurrencia en cualquiera de las dos columnas en el archivo 2, y que en cada ocurrencia que encuentre imprima ambas columnas.
Para ello he escrito el siguiente código, solo que no he logrado hacerlo funcionar, y cuando lo he logrado me duplica la información; supongo que tengo algún error en la forma como estoy utilizando los bucles. Agradecería que pudieran ayudarme,
Saludos.
Código:
Les escribo para lo siguiente: tengo que procesar una base de datos, para ello dispongo de un par de archivos.
El archivo 1 contiene un listado de palabras que deseo buscar en el archivo 2 (base de datos). El archivo 1 tiene la siguiente estructura (solo es un fragmento):
Using text Syntax Highlighting
zf-C2H2
WD40
I-set
Ank
fn3
Cadherin
7tm_1
V-set
Collagen
LRR_1
Pkinase
Sushi
EGF_CA
RRM_1
KRAB
C1-set
WD40
I-set
Ank
fn3
Cadherin
7tm_1
V-set
Collagen
LRR_1
Pkinase
Sushi
EGF_CA
RRM_1
KRAB
C1-set
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Ahora el archivo 2, que es mi base de datos, tiene la siguiente estructura:
Using text Syntax Highlighting
1-cysPrx_C 1-cysPrx_C
1-cysPrx_C AhpC-TSA
14-3-3 14-3-3
14-3-3 Acetyltransf_1
14-3-3 LIG_14-3-3_1
14-3-3 LIG_14-3-3_2
14-3-3 LIG_14-3-3_3
14-3-3 LIG_14-3-3_none
2-Hacid_dh 2-Hacid_dh
2-Hacid_dh 2-Hacid_dh_C
2-Hacid_dh ACT
2-Hacid_dh LIG_CtBP
2-Hacid_dh_C 2-Hacid_dh
2-Hacid_dh_C 2-Hacid_dh_C
2-oxoacid_dh 2-oxoacid_dh
2-ph_phosp 2-ph_phosp
2OG-FeII_Oxy 2OG-FeII_Oxy
2_5_RNA_ligase 2_5_RNA_ligase
3-alpha MOSC
3-dmu-9_3-mt 3-dmu-9_3-mt
1-cysPrx_C AhpC-TSA
14-3-3 14-3-3
14-3-3 Acetyltransf_1
14-3-3 LIG_14-3-3_1
14-3-3 LIG_14-3-3_2
14-3-3 LIG_14-3-3_3
14-3-3 LIG_14-3-3_none
2-Hacid_dh 2-Hacid_dh
2-Hacid_dh 2-Hacid_dh_C
2-Hacid_dh ACT
2-Hacid_dh LIG_CtBP
2-Hacid_dh_C 2-Hacid_dh
2-Hacid_dh_C 2-Hacid_dh_C
2-oxoacid_dh 2-oxoacid_dh
2-ph_phosp 2-ph_phosp
2OG-FeII_Oxy 2OG-FeII_Oxy
2_5_RNA_ligase 2_5_RNA_ligase
3-alpha MOSC
3-dmu-9_3-mt 3-dmu-9_3-mt
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Contiene un par de columnas separadas por "\t". Lo que deseo hacer es buscar para cada miembro de la lista del archivo 1 su ocurrencia en cualquiera de las dos columnas en el archivo 2, y que en cada ocurrencia que encuentre imprima ambas columnas.
Para ello he escrito el siguiente código, solo que no he logrado hacerlo funcionar, y cuando lo he logrado me duplica la información; supongo que tengo algún error en la forma como estoy utilizando los bucles. Agradecería que pudieran ayudarme,
Saludos.
Código:
Using perl Syntax Highlighting
- #! /usr/bin/perl
- open (FILE1, "only_domains_human_proteome.txt");
- open (FILE2, "only_interfaces3did.txt");
- my @firstdb=<FILE1>;
- my @seconddb=<FILE2>;
- foreach $query (@firstdb){
- chomp $query;
- for ($i=0;$i<scalar(@seconddb);$i++){
- my @domaint = split ("\t", $seconddb[$i]);
- chomp $domaint[1];
- if ($domaint[0] =~ $query){
- print "$domaint[0]\t$domaint[1]\n";
- }
- }
- }
- close FILE1;
- close FILE2;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4