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 :

error panic: pp_iter


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut error panic: pp_iter
    Bonjour à tous,

    Le script ci dessous fonctionne très bien lorsque je l'applique à un exemple :
    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
     
    #!/usr/bin/perl
    #	Input file: a fasta file
    #	Output file: a unique fasta file
    #	Command line: perl test.pl infile.fasta
     
    use strict;
    use warnings;
    #read the file into a hash
    my %seq;
    my $title;
    my $infile=shift or die "give me a infile\n";
    open (IN,"$infile");
    while (<IN>){
    	$_=~s/\n//;
    	$_=~s/\r//;
    	if ($_=~/>/){
    		$title=$_;
    		$title=~s/>//;
    	}
    	else{
    		$seq{$_}=$title;
    	}
    }
    close IN;
    print "bonjour";
    #remove the abundant sequences
    my @seq=keys (%seq);
    my @uniqueseq;
    my $find=0;
    foreach (@seq){
    	$find=0;
    	my $seq=uc($_); #uppercase (retourne la chaine en majuscule)
    	foreach (@uniqueseq){
    		if ($seq=~m/$_/){
    			$_=$seq;#replace with longer seq
    			$find=1;
    		}
    		if ($_=~/$seq/){
    			$find=1;
    		}
    	}
    	if ($find==0){
    		push @uniqueseq,$seq;
    	}
    }
    #outout the final result
    open (OUT,">output.fasta");
    foreach (@uniqueseq){
    	print OUT ">$seq{$_}\n$_\n";
    }
    close OUT;
    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
    >dme_pi_0_22_21
    TACAGGTGAAAAACATAGCCAG
    >dme_pi_1_23_77
    TCCACAACGATGGAAGATGATGA
    >dme_pi_2_24_10
    CCAGGGCTAGCCCAAGATGTTGCT
    >dme_pi_3_25_1
    GACGACAAGGGATTGGCATTGTTGG
    >dme_pi_4_28_1
    TCTGAGAAGTCAGCCCTCTCCACGACCG
    >dme_pi_5_26_1
    CATCTATCACCAGCATAAGCGGTCTT
    >dme_pi_6_24_1
    CACTGTTCTTGCAAGACGCAGCTG
    >dme_pi_7_25_1
    TGGGAACAACGCGTGTTGTTGGCCC
    >dme_pi_8_27_1
    TATGGACGGACTCTAAGACGGTGCTGA
    >dme_pi_9_25_2
    TTGCAGCCACTCTGGTCCGTGCCAC
    En revanche, dès que je l'applique à ce fichier : http://filez.univmed.fr/download.php?ad=7987f4zJuw
    J'obtiens le message d'erreur suivant en arrêtant le programme prématurément :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    perl remove_redondance.pl fasta.fa
    Can't coerce UNKNOWN to string in iter at remove_redondance.pl line 34.
    Use of uninitialized value $seq in pattern match (m//) at remove_redondance.pl l
    ine 34.
    Use of uninitialized value $seq in regexp compilation at remove_redondance.pl li
    ne 38.
    Use of uninitialized value $_ in pattern match (m//) at remove_redondance.pl lin
    e 38.
    panic: pp_iter at remove_redondance.pl line 38.
    bonjour
    Je ne comprends pas le problème, quelqu'un pourrait m'aider ?
    Merci d'avance, et bonne journée

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Par défaut
    Il s'arrête sur quelle ligne de ton fichier exemple ? Quelle est la ligne de code où intervient l'erreur ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut
    Citation Envoyé par Dimitry.e Voir le message
    Il s'arrête sur quelle ligne de ton fichier exemple ? Quelle est la ligne de code où intervient l'erreur ?
    ligne 34 :
    et ligne 38 :

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Je n'ai pas chercher à comprendre ce que fait exactement l'algorithme, mais sache tout de même qu'il existe une fonction uniq de List::MoreUtils qui retourne un tableau avec des valeurs "uniques" depuis un tableau contenant des doublons.

    Il est aussi possible de peupler ce genre de tableau de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my @tableau_avec_doublon = qw(a a b c d d e f);
    my %uniq;
    my @tableau_sans_doublon = grep !$uniq{$_}++, @tableau_avec_doublon;

  5. #5
    Membre averti Avatar de zanker
    Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Par défaut
    Les erreurs sont affichées clairement par Perl lors de sa compilation.

    Pour la première, tu fais une boucle foreach() sur la variable liste @uniqueseq qui est vide, donc le "$_" suivant n'est pas défini.
    La dernière erreur est un problème dans la boucle sur la liste @uniqueseq. Tu lui ajoutes de nouvelles valeurs alors que la boucle iter dessus.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut
    Je ne comprends pas pourquoi ca marche dans mon premier fichier et pas dans le deuxième ....

Discussions similaires

  1. ERROR: pg_atoi: zero-length string
    Par steelspirit92 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/08/2003, 23h29
  2. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 11h46
  3. [Kylix] Kylix c++ error
    Par pacpac dans le forum EDI
    Réponses: 2
    Dernier message: 10/06/2003, 17h27
  4. [CR] Print Engine error text
    Par afaraji dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 03/09/2002, 16h44
  5. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 12h51

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