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

Langage Perl Discussion :

Probleme avec un hash...


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Probleme avec un hash...
    Bonjour,

    Je fais de la recherche de motifs dans des genomes bacterien et mon maitre de stage veut un output qui ressemble a ca (dans le cas ou plusieurs motifs sont reconnus):

    Bacterie [gi_number|protein] : motif1 (position1) <- position2-position1 -> motif2 (position2) etc

    jai un probleme avec la difference de position: elle est negative des fois... ce qui n'est pas tres normal....
    jutilise le code suivant:

    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
    [color=green]
    	#found FASTA header
    	if ($char eq ">") {
    	    #see if this is not the first fasta file
    	    if (length($cur_header) > 0) {
     
                    #get the results
    		@pos_TGIKV = findTGIKV($complete_sequence);
    		@pos_PADVL = findPADVL($complete_sequence);
    		@pos_YY = findYY($complete_sequence);
    		@pos_WalkerA = findWalkerA($complete_sequence);
     
                    #get the header
    		$cur_header = splitHeader($cur_header) ;
     
    		%motifs_found = ( "TGIKV" => $pos_TGIKV[0],
    				     "PADVL" => $pos_PADVL[0],
    				     "YY"    => $pos_YY[0], 
    				   );
    		@motifs_sorted_names = qw();
    		@motifs_sorted_locations = qw();
    		$key = "";	
     
    		foreach $key (sort { $motifs_found{$a} cmp $motifs_found{$b} } keys(%motifs_found)) {
    			if ($motifs_found{$key} > 0) {
       				push(@motifs_sorted_names,$key);
    				push(@motifs_sorted_locations,$motifs_found{$key});
    			}
    		}
    		for (my $i = 0;$i<@motifs_sorted_names;$i++) {
     
    			if (@motifs_sorted_names == 1) { #the sequence analyzed contains only 1 pattern 
                                                             #(ie TGIKV or PADVL or YY) 
    				$header2 = $header2 . $motifs_sorted_names[$i] . " " . $motifs_sorted_locations[$i] . " ";
    			}
     
    			elsif ($i == @motifs_sorted_names - 1) { #the sequence analyzed contains 2 of the 3 patterns 
                                                                     #(ie TGIKV-PADVL, TGIKV-YY, PADVL-YY, etc)
    				$header2 = $header2 . $motifs_sorted_names[$i] . "(pos = ".$motifs_sorted_locations[$i] . ")";
    			}
     
    			else { #the sequence analyzed contains more than 2 patterns 
                                   #(ie: the 3 patterns, or many occurences of the same patterns, etc) 
    				my $diff = int($motifs_sorted_locations[$i+1]) - int($motifs_sorted_locations[$i]);
    				$header2 = $header2 . $motifs_sorted_names[$i] . " (pos = " .$motifs_sorted_locations[$i] . ") <- " . $diff . " -> ";
    			}
    		}
     
    		print " --> ";
    		print $header2;
    		print "\n";
     
     
    	        if (@pos_WalkerA > 0) {
    			$cur_header = $cur_header . " WalkerA";
    			for (my $i = 0;$i<@pos_WalkerA;$i++) {
    			    $cur_header = $cur_header . " $pos_WalkerA[$i]";
    			}
    		}
     	    print "$cur_header\t";	
    	}
    [/color]

    je pense que le probleme vient du fait que jutilise un hash pour stocker les resultats de la recherche de motif et un array pour la position, et le nom. ce qui fait que des fois la position du hash et celle du array sont differentes et aussi il peut y avoir des problemes de concordance...
    enfin je dis ca mais jen suis pas certaine.
    tout ca pour dire que je sais pas comment resoudre ce probleme!

  2. #2
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut
    Tu peux nous filer une ligne de données pas trop longue qui montre les positions négatives ? Enfin, quelque chose qui permet de constater le problème ?

    N

Discussions similaires

  1. Hash of anonymous hashes : probleme avec une key/pair
    Par AltaJup dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2012, 18h11
  2. probleme avec boucles et hash
    Par ellgafsi dans le forum Langage
    Réponses: 9
    Dernier message: 02/04/2009, 12h31
  3. Réponses: 8
    Dernier message: 13/08/2004, 12h32
  4. [langage] probleme avec un hash de hash
    Par planetevoyage dans le forum Langage
    Réponses: 4
    Dernier message: 06/06/2003, 12h55

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