#!/usr/bin/perl -w
# 2003/12/16 - I. Dutour

# utilisation :
# 1) ./tout.pl kinases_map.txt          ==> idem affiche.pl
# 2) ./tout.pl kinases_map.txt chrom 9  ==> idem chrom.pl
# 3) ./tout.pl kinases_map.txt annee 95 ==> idem annee.pl

my ($file,$question,$nombre,@resultat);
my ($traitement,$args);

# Récupération arguments
die "Manque les arguments sur la ligne de commande\n" if (!defined(@ARGV));
($file, $question, $nombre) = @ARGV;

# Ouverture du fichier contenant le rapport
open (REP, $file) || die (print "cannot open \"$file\": $!\n"); 

# Choix du traitement en fonction des arguments
if (!defined($question)) {
    $traitement="afficher";
    $args="";
}
else {
    die "Manque un nombre sur la ligne de commande\n" if (!defined($nombre));
    die "Nombre pas correct\n" if (!($nombre=~/^\d+$/));
    if ($question=~/^chrom$/i) {
	$traitement="chromosome";
	$args=$nombre;
    }
    elsif ($question=~/^annee$/i) {
	die "Nombre pas correct\n" if (!($nombre=~/^\d{2,}$/)); # au moins 2 chiffres
	($nombre)=($nombre=~/(\d\d)$/); # prendre que les 2 derniers chiffres
	$traitement="annee";
	$args=$nombre;
    }
    else {
	die "Mauvaise question (chrom X ou annee X)\n";
    }
    
}

# Début affichage
print "-----------------------------------------------------------------------------------\n";
print "Gene Symbol\tDate\tCytogenic Location\n";

# Traitement de chaque ligne
while (<REP>) {
    last
	if (/^$/);
    chomp; 
    @resultat=split (/\|/,$_);

    eval "$traitement($args)";
}

# Fin d'affichage
print "fin\n"; 
print "-----------------------------------------------------------------------------------\n";

#Fermeture du handle de fichier
close (REP) || die (print "cannot close \"$file\": $!");

###
# Fin du script
###

# Definitions des fonctions

sub afficher {
    print "$resultat[0]\t$resultat[2]\t$resultat[3]\n";
}

sub chromosome {
    my $num_chrom=$_[0];
    # $chromosome non defini si autre que chiffre
    ($chromosome)=($resultat[3] =~ /((Chr\.(\d+))|(\w+)[pqc])/);
    ($chromosome)=($chromosome =~ /(\d+)/);
    if ($chromosome && $chromosome==$num_chrom){
	afficher();
    }
}

sub annee {
    my $num_annee=$_[0];
    ($annee)=($resultat[2] =~ /\d+\-\d+\-(\d+)/);
    if ($annee>=$num_annee || $annee==0) {  # seul cas particulier ici : année 2000
	afficher();
    }
}
