1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| #!/usr/bin/perl
use Fcntl;
#fonctions
#utilise le fichier .alignment pour sortir un fichier .txt avec les blocs des différents génomes
sub tableau_texte{
my $fichier1=$_[0];
my $fich= "essai.txt";
open BOB, '>', $fich or die "Couldn't open $fich : $!\n";
open YEAST, "$fichier1";
while (<YEAST>){
if(($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/) and ($lignePrecedente==1)){
if($1!=1){
close YEAST;
close (BOB);
return;
}
}
if($_=~/^>\s(\d)\:(\d+)-(\d+)\s(\W)/){
if($1==1){@ligne=($4.$2,$4.$3);}
if($1<$nbGenome && $1!=1){push(@ligne,$4.$2,$4.$3);}
if($1==$nbGenome){
push(@ligne,$4.$2,$4.$3);
print BOB ("@ligne\n");
}
}
if($_=~/^=/){$lignePrecedente=1;}
else{$lignePrecedente=0;}
}
close YEAST;
close BOB;
}
#permet de créer les permutations signées pour un génome (celui de la colonne $colonne) a partir du fichier essai.txt
sub comparaison{
my $essai="essai.txt";
$block=1;
open ESSAI, "$essai";
while ($ligne=<ESSAI>){
@cols = split(/ /,$ligne);
$genome{$block}=$cols[$colonne];
$block++;
}
print "\n";
@keys = sort{
abs($genome{$a}) <=> abs($genome{$b})
}keys %genome;
for($i=0;$i<$block;$i++){
$ordreblock[$nbfois].="$keys[$i] ";
}
close ESSAI;
}
# stock les adresses des fichiers fasta utilisés et compte le nombre de génomes
sub adressegenome{
my $fichier2="$_[0]";
open FICHIER2, "$fichier2";
while (<FICHIER2>){
if($_=~/^#Sequence(\d+)File\s(.*)/){
$adressegenome[$nbGenome]=$2;
$nbGenome++;
}
}
close FICHIER2;
}
#Récupère les infos ds la première ligne des fichiers fasta comparés
sub infoGenomes{
my $fasta="$adressegenome[$nbfois]";
open FASTA, "$fasta";
while (<FASTA>){
if($_=~/^>gi\|(\d+)\|(\w+)\|(\S+\.\d+)\|\s(.*)/){
$giNumber[$nbfois]=$1;
$dbid[$nbfois]=$2;
$accessnumber[$nbfois]=$3;
$definition[$nbfois]=$4;
}
else{return;}
}
close FASTA;
}
#Déclaration des tableaux et initialisations des valeurs.
@giNumber; # => tableau qui stocke les GI pris dans les fichiers fasta comparés
@dbid; # => tableau qui stocke les database Identifiers pris dans les fichiers fasta comparés
@accessnumber; # => tableau qui stocke les Accession Number pris dans les fichiers fasta comparés
@definition; # => tableau qui stocke les Definitions pris dans les fichiers fasta comparés
@adressegenome; # =>tableau stockant le chemin d'accés aux fichiers fasta comparés
@ordreblock; # =>tableau stockant l'ordre des blocks de chaque génome
$colonne=0; # => initialisation de la 1ere colonne a lire dans le fichier essai.txt
$nbGenome=0; # => initialisation du nombre de génome
#appel des fonctions et traitement
adressegenome($ARGV[0]); # => Ouvre le Alignement et récupere les n chemins d'accés des n genomes comparés
tableau_texte ($ARGV[0]); # => rempli le fichier essai.txt avec sous forme de début et fin de séquence en colonnes
for ($nbfois=0;$nbfois<$nbGenome;$nbfois++){ # => tri et donne les permutations signées pour chaque genome
comparaison ();
$colonne=$colonne+2;
print $ordreblock[$nbfois]; #juste un test
}
for ($nbfois=0;$nbfois<$nbGenome;$nbfois++){ # => récupère les infos d premiers lignes sur chaque fichier fasta
infoGenomes();
}
print $giNumber[0]; # juste un test pour voir dans le shell si ca marché |
Partager