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
|
###################################################################################
##fonction qui recupere les position des pics et les aires des pics sur le chromatogramme. Elle recupere et decoupe #
##le fichier .poly obtenu apres lancement de phred sur un des produits de PCR#
sub creer_tableau_hash_poly(){
$nomSeq = $_[0]; #recuperation du nom du fichier a ouvrir
$j = $_[1]; #$j et $g me permettent de récuperer des données de @tabtrie
$g = $_[2];
@tabtrie = @{$_[3]};
open(POLY,$nomSeq) or die "impossible d'ouvrir le fichier : $!";
@tabpoly = <POLY>;
%poly=();
$i=0;
while($j<=$#tabtrie)
{
$position=$tabtrie[$j][16][$g]; #je recupere le numero de la ligne du fichier qui m'interresse
chomp($tabpoly[$position]);
@row = split(" ",$tabpoly[$position]);
%poly=(
base_appelee => [ "$row[0]", "$row[1]"],
);
#je teste la premiere case de mon tableau @row et je recupere les données qui m'interresse en fonction du résultat du test
if ($row[0] =~ /A/i)
{
push @{$poly{base_appelee}}, "$row[8]";
}
else
{
if($row[0] =~ /C/i)
{
push @{$poly{base_appelee}},"$row[9]";
}
else
{
if($row[0] =~ /G/i)
{
push @{$poly{base_appelee}},"$row[10]";
}
else
{
if($row[0] =~ /T/i)
{
push @{$poly{base_appelee}},"$row[11]";
}
else
{
push @{$poly{base_appelee}},"$row[12]";
}
}
}
}
$poly{base_autre}=["$row[4]","$row[5]"];
if ($row[4] =~ /N/i)
{
push @{$poly{base_autre}},"$row[6]";
}
else
{
if ($row[4] =~ /A/i) #on met dans la troisieme case du tableau la#
{ #hauteur du pic appele#
push @{$poly{base_autre}},"$row[8]";
}
else
{
if($row[4] =~ /C/i)
{
push @{$poly{base_autre}},"$row[9]";
}
else
{
if($row[4] =~ /G/i)
{
push @{$poly{base_autre}},"$row[10]";
}
else
{
push @{$poly{base_autre}},"$row[11]";
}
}
}
}
push @tab, \%poly;
#print "ref(@{${$poly[$i]}[0]}\n";
$j+=2;
$i+=1;
}
close POLY;
print "$tab[0]{base_appelee}[1]\n";
print "$tab[1]{base_appelee}[1]\n";
return @tab;
} |
Partager