#!/usr/bin/perl -w

use strict;


#### selector_ortologos.pl ####

#### Este programa permite seleccionar las lineas de un archivo que contiene el alineamiento de   ####
#### secuencias de genes ortologos de diversas especies, que contengan los pares de especies      ####
#### seleccionadas por el usuario.                                                                ####


######################################################################################################


#Introducir el archivo de entrada
print "Escribe el nombre del archivo que contiene los pares ortologos:\n";
my $archivo=<STDIN>;
open (ARCHIVO,"< $archivo");

#### Relacion de especies y sus respectivos codigos numericos#########################################

my %especies=("Arabidopsis thaliana"=>"3702",
	      "Bos taurus"=>"9913",
	      "Caenorhabditis elegans"=>"6239",
	      "Danio rerio"=>"7955",
	      "Drosophila melanogaster"=>"7227",
	      "Homo sapiens"=>"9606",
	      "Hordeum vulgare"=>"4513",
	      "Lycopersicon esculentum"=>"4081",
	      "Medicago truncatula"=>"3880",
	      "Mus musculus"=>"10090",
	      "Oryza sativa"=>"4530",
	      "Rattus norvegicus"=>"10116",
	      "Sus scrofa"=>"9823",
	      "Triticum aestivum"=>"4565",
	      "Xenopus laevis"=>"8355",
	      "Zea mays"=>"4577");



####Introduccion de las 2 especies que el usuario elija #############################################

print "Introduce el nombre de la primera especie en latin\n";
my $specie1=<STDIN>;
chomp $specie1;

print "Ahora introduce el nombre de la segunda especie(tambien en latin)\n";
my $specie2=<STDIN>;
chomp $specie2;


#introducir el archivo de salida
print "Escribe el archivo donde quieres guardar la lista de pares ortologos:\n";
my $salida=<STDIN>;
chomp $salida;
open (STDOUT,">$salida");


#######################################################################################################

while (<ARCHIVO>){
    chomp $_;
    my @par= split (/\|/,$_); 
    
    if ($par[2]eq'b'){             ## selecciona las lineas que contengan los genes ortologos seleccionados por 
                                    #el mejor alineamiento obtenido un silico.

	if ((($par[0] eq $especies{$specie1})||($par[0]eq $especies{$specie2}))&&(($par[1] eq $especies{$specie1})||($par[1]eq $especies{$specie2}))){               
                                                                      ## selecciona las lineas segun las especies especificadas previamente

	    if (($par[5]=~ m /NM_\d+/)&&($par[8]=~ m /NM_\d+/)){      ## selecciona las lineas que contengan genes reales.
		print $_, "\n";
	    }
	}
    }
}

close(ARCHIVO);
