#!/usr/bin/perl -w

use strict;

my $entrada;
my $entry;

open(ORDENADO, "< ordenado.txt") or die "ordenado.txt no existe\n";

open(PADRES, "< go_expanded_filtered.txt") or die "go_expanded_filtered.txt no existe\n"; 

while ($entrada = <ORDENADO>){ ##Mientras haya linias del archivo ordenado.txt
    chomp($entrada);

    my($go, $fb)= split(/\t/, $entrada); ##Las dos columnas separadas por tabulador del archivo ordenado.txt las define en dos variables diferentes $go y $fb
    print STDERR "$go\n";   
    while ($entry = <PADRES>){ ##Mientras haya linias del archivo go_expanded_filtered.txt
	chomp($entry);

	my @terminos = split (" ", $entry); ##Los terminos separados por un espacio del archivo go_expanded_filtered.txt los define como componentes del vector@terminos
#	print "$go\t$terminos[0]\n";
#Con estas funciones, el programa encuentra cada GO del archivo ordenado.txt en el archivo go_expanded_filtered.txt, y para cada término extrae el conjunto de ancestros para ese GO, y lo asocia por tanto a cada FBgn correspondiente.
	if ($go eq  $terminos[0]){ 
	    foreach my $goterm(@terminos){ 	
		print "$goterm, $fb\n";
	    }
	    last;
	}
#	print "$go\n";
    }
    seek PADRES, 0, 0;
}

close (ORDENADO);
close (PADRES);
