IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bioinformatique Perl Discussion :

tableau 2 dimensions


Sujet :

Bioinformatique Perl

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 212
    Par défaut tableau 2 dimensions
    slt,

    j'ai un petit problème avec les tableau à deux dimensions. En fait je fais un alignement de séquences avec clustalw et j'obtiens un fichier j'ai mis une version simplifié en piece jointe (il n'y a que 4 alignements mais en fait dans mon cas il y en a au moins 30). je dois en déduire une séquence concensus. Pour cela j'ai eu l'idée d'un tableau à deux dimensions avec sur chaque ligne une sequence

    ex :
    AGTCTTGAC --> seq 1
    ATGCTAGCC --> seq 2

    et pour en déduire la séquence concensus je lit ce tableau par colonne en comptant le nombre de chaque base et en déduit la base la plus présente.

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/bin/perl
     
    use strict; 
    use warnings;  
    use Cwd;  
    use Bio::DB::GenBank; 
    use Bio::SeqIO;
    use File::Copy;
    use Time::localtime;
    use Bio::Tools::Run::Alignment::Clustalw;
    use Bio::Perl;
     
     
    open (TEST, ">>test") || die "cannot open file";
    open (FILE, "ClustalW_result.txt") || die "cannot open file";
    my @liste=("NC_003888.3","AL939106.1","NM_016286.2","AB013846.1");
    foreach (@liste)
    {
    	$n=$_;
    while (<FILE>)
    	{
    	if (/^accession_$n/)
    		{
    		$ligne3=$_;
    		chomp $ligne3;
    		@ligne=split(/accession_$n\s+/,$ligne3);
    		$ligne2=join("",@ligne);
    		$ligne.=$ligne2;
    		@tab=split("",$ligne);
    		}
                           $taille=$#tab;
    		for ($i=0;$i<=$#liste;$i++)#remplis le tableau 
    		{
    			for ($j=0;$j<=$taille;$j++)
    			{
    			$test[$i][$j]=$tab[$j];
    			}
    		}
    	}
     
    }
    	#print "$test[28][5]";
    for ($j=0;$j<=$taille;$j++)# lecture par colonne et compte
    {
     
    	$c=0;$g=0;$p=0;$a=0;$t=0;
    	for ($i=0;$i<=$#liste;$i++)
    	{
    		if ($test[$i][$j]=~m/\./i)
    			{
    			$p++;
    			}
    		if ($test[$i][$j]=~m/A/i)
    			{
    			$a++;
    			}
    		if ($test[$i][$j]=~m/T/i)
    			{
    			$t++;
    			}
    		if ($test[$i][$j]=~m/C/i)
    			{
    			$c++;
    			}
    		if ($test[$i][$j]=~m/G/i)
    			{
    			$g++;
    			}
    	}
    	if ($p>$a && $p>$t && $p>$c && $p>$g)#comparaison et impression
    	{
    		print TEST ".";
    	}
    	if ($a>$p && $a>$t && $a>$c && $a>$g)
    	{
    		print TEST "A";
    	}
    	if ($t>$a && $t>$p && $t>$c && $t>$g)
    	{
    		print TEST "T";
    	}
    	if ($c>$a && $c>$t && $c>$p && $c>$g)
    	{
    		print TEST "C";
    	}
    	if ($g>$a && $g>$t && $g>$c && $g>$p)
    	{
    		print TEST "G";
    	}
    }
    	print TEST "\n";
    avec @liste une liste contenant les numéros d'accession correspondant à ceux du fichier.

    je ne sais pas si ma solution est la mieux adaptée dans mon cas pour faire ce que je dois faire. si vous trouvez que ce n'est pas le cas, je suis ouverte à toutes propositions et remarques ^^

    merci
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Collections] lecture tableau 2 dimensions
    Par heloise dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/09/2004, 10h49
  2. [tableau à 2 dimensions] association String et float
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/07/2004, 10h53
  3. Tableau à n dimensions
    Par youb dans le forum MFC
    Réponses: 10
    Dernier message: 13/05/2004, 14h13
  4. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50
  5. Réponses: 23
    Dernier message: 21/08/2003, 07h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo