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 :

besoin d'aide pour un debugage (sans doute trivial)


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut besoin d'aide pour un debugage (sans doute trivial)
    Bonjour à tous,

    je suis en train de me casser les dents sur un bug dans un de mes scripts. Je suis sure que c'est un "pas grand chose" qui fait que ça marche pas, mais je vois vraiment pas quoi.

    En fait, j'utilise le module file::Find pour parcourir un dossier dans lequel il y a des fichiers html. Pour mes tests, il y a 3 fichiers dans le dossier.

    J'ai écrit une fonction Analyse_results() qui parcourt chaque fichier, et remplit la structure de données %infos_p_value avec les données qu'elle récupère sur certaines des lignes.

    voici le 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
     
    print "\nParcourt du dossier $path et recuperation des infos\n";
    find(\&Analyse_results,"$path");
     
    print "\nGeneration des fichiers de resultats\n";
     
    foreach my $concept(keys(%infos_p_value))
    {
    	print "Concept $concept :\n\tTaille = ".$infos_p_value{$concept}->{"taille"}."\n\tPourcentage de genes auto-regule = ".$infos_p_value{$concept}->{"pourcent"}."\n";
     
    	print "GOBIOL : \n";
    	foreach my $p (@{$infos_p_value{$concept}->{"gobiol"}})
    	{
    		print "\t".$p->{'p-value'}." => ".$p->{'nb_match'}."\n";
    	}
     
    	print "GOMOLE : \n";
    	foreach my $p (@{$infos_p_value{$concept}->{"gomole"}})
    	{
    		print "\t".$p->{'p-value'}." => ".$p->{'nb_match'}."\n";
    	}
     
    	print "L2LMDB : \n";
    	foreach my $p (@{$infos_p_value{$concept}->{"l2lmdb"}})
    	{
    		print "\t".$p->{'p-value'}." => ".$p->{'nb_match'}."\n";
    	}
    }
     
    $T2 = time();
    $T = ($T2 - $T1);
     
     
     
    sub Analyse_results
    {
    	my ($pourcent, $concept_id, $type, $nb_match, $taille);
     
    	#sur chaque fichier trouve
    	if (-f $_ && $_ =~ m/L2L_concept(\d+)_(\d+)_.+_([a-z2]+)\.html/)
    	{
    		$pourcent = $1;
    		$concept_id = $2;
    		$type = $3;
     
    		print "$type\n";
     
    		$taille = $taille_concepts{$concept_id};
     
     
    		$infos_p_value{$concept_id} = {"pourcent" => $pourcent, "taille" => $taille, "gobiol" =>[], "gomole" =>[], "l2lmdb" => []};
     
     
    		open(L2L, "<$_") or die("Impossible d'ouvrir $_");
     
     
    		my ($line, $p_value);
    		my $garder = 0;
    		my $entry = 0;
     
    		while(defined($line=<L2L>))
    		{
    			if($line =~ m/<tr class="entry">/)
    			{
    				$entry = 1;
    			}
    			elsif($line =~ m/>(\d+)<\/a><\/td>/ && $entry == 1)
    			{
    				$nb_match = $1;
    			}
    			elsif($line =~ m/<td>(\d{1}\.\d{2}e-\d{2})<\/td>/ && $entry == 1)
    			{
    				$p_value = $1;
     
    				push(@{$infos_p_value{$concept_id}->{$type}}, {"p-value" => $p_value, "nb_match" => $nb_match});
     
    				$entry = 0;
    			}
    		}
     
    		close(L2L);
    	}
    }
    Normallement, le script devrait afficher les infos pour les trois types (qui correspondent en fait aux trois fichiers) GOBIOL, GOMOLE et L2LMDB.

    Mais quand je le fait tourner, il n'affiche les résultats que pour le dernier type :

    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
    Parcourt du dossier /Users/mathilde/Dossier_partage_VM/LocaFT/Tmp/analyse_L2L/All_results_L2L_C0 et recuperation des infos
    gobiol
    gomole
    l2lmdb
     
    Generation des fichiers de resultats
    Concept 1570 :
    	Taille = 6
    	Pourcentage de genes auto-regule = 50
    GOBIOL : 
    GOMOLE : 
    L2LMDB : 
    	1.99e-03 => 3
    	2.34e-03 => 1
    	3.89e-03 => 1
    	4.51e-03 => 1
    	5.13e-03 => 1
    	6.99e-03 => 1
    	7.45e-03 => 2
    	7.92e-03 => 1
    Si je supprime le fichier l2lmdb, il n'affichera que les résultats du dernier fichier (donc de GOMOLE)...

    Je n'arrive pas à trouver d'où vient ce comportement.
    Si quelqu'un a une idée, ça m'arrangerais bien

    Merci d'avance

  2. #2
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    tellement trivial que j'ai fini par trouver !

    le problème venait du fait que je réinitalisais $infos_p_value{$concept_id} à chaque fichier!

    voici la correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(!exists($infos_p_value{$concept_id}))
    {
    	$infos_p_value{$concept_id} = {"pourcent" => $pourcent, "taille" => $taille, "gobiol" =>[], "gomole" =>[], "l2lmdb" => []};
    }
    désolée pour ce post qui servait pas à grand chose

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

Discussions similaires

  1. [Disque Dur] Besoin d'aide pour un SAN
    Par Lenif dans le forum Périphériques
    Réponses: 0
    Dernier message: 08/01/2015, 12h43
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 20h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 14h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 11h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 18h05

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