#!/usr/bin/perl -w

use strict;

# Declaració de les variables d'entrada

my $log10ratio;
my $pvalue;
my $numtum;
my $fitxer;
my @v;
my $i;
my $n;
my $fsortida;
my $numgens;
my @gens=();

# Imput de les restriccions

print "Especifica les restriccions de la teva cerca:
- Logaritme en base 10 de la Ratio: ";
$log10ratio=<STDIN>;
chomp ($log10ratio);
 
print "- Pvalue: ";
$pvalue=<STDIN>;
chomp ($pvalue);

print "- Mínim nombre de tumors a considerar: ";
$numtum=<STDIN>;
chomp ($numtum);

print "- Sobre quin fitxer vols treballar: ";
$fitxer=<STDIN>;
chomp ($fitxer);

print "- En quin fitxer vols guardar la seleccio: ";
$fsortida=<STDIN>;
chomp ($fsortida); 



# Per si hi ha problemes..... 


if (!open(FITXER,"< $fitxer")) {
    print "impossible obrir fitxer $fitxer\n";
    exit(1);
}

if (!open(FESCRIURE,"> $fsortida")) {
    print "impossible crear fitxer $fsortida\n";
    exit(1);
}

my $linia=<FITXER>;

print FESCRIURE $linia;

# Introducció del fitxer d'entrada en un vector i fem una composició iterativa pq llegeixi cada línea (gen) i en seleccioni aquelles que compleixin les restriccions.Imprimeix tota la informació referent als gens que han estat seleccionats i conta quants són.

while (<FITXER>) { 
    @v=split(/\t/);
    $i=2;
    $n=0;
    while ($i<= scalar(@v)-2) {

      if (($v[$i] >= $log10ratio || $v[$i] <= -$log10ratio) && $v[$i+1] <= $pvalue){

	$n++; 

      }

      $i=$i+2;
    }

    if ($n >= $numtum) {
	print FESCRIURE "$v[0]\t$v[1]\t";
        $i=2;
        while ($i <= scalar(@v)-2) {
	    print FESCRIURE "$v[$i]\t";
	    $i = $i + 2;
        }
	print FESCRIURE "\n";
    }

}

close(FITXER);
close(FESCRIURE);
