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 :

Recuperer positions start et end


Sujet :

Bioinformatique Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut Recuperer positions start et end
    Bonjour

    j'essaye de récupérer les positions start et end. Mon fichier test possède 5 séquences.
    Mon code fonctionne les 3 premières séquences et apres il me donne le message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Can't call method "start" on an undefined value
    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
     
    {my $v = 1;
    print STDERR "waiting..." if( $v > 0 );
     
    	while ( my @rids = $factory->each_rid ) 
    		{
    		foreach my $rid ( @rids )
    			{
    			my $rc = $factory->retrieve_blast($rid);
    			if( !ref($rc) ) 
    				{
    				if( $rc < 0 ) 
    					{
    					$factory->remove_rid($rid);
    					}
    				print STDERR "." if ( $v > 0 );
    				sleep 5;
    				} 
    			else 
    			{
    			my $result = $rc->next_result();
    			print $result,"\n";
    			$factory->remove_rid($rid);
    			for (my $i = 0; $i < 1; ++$i) 
    				{
    				my $hit = $result->next_hit;
    				my $hsp = $hit->next_hsp;
                                    my $start_hit=$hsp->start('hit');
                                    my $end_hit=$hsp->end('hit')
    				next unless ( $v > 0);
     
    	open (FILE2, ">>$Fichier");
       	print FILE2 ($hit->accession,"\t\t ", $start_hit, "\t\t ",$end_hit),"\n";
          	close(FILE2);
    				}
    			}
    			}
    		}
    }
    mon code fonctionne très bien sans la demande d'affichage du start et du end.
    La position de l'erreur est peut être aléatoire.

    Pourquoi ça ne marche pas?
    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Par défaut
    Bonjour,

    Ton erreur signifie que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      my $hsp = $hit->next_hsp;
      my $start_hit=$hsp->start('hit');
    A la deuxième ligne de ce code $hsp est indéfini, ce n'est pas un objet avec ta méthode start.
    Donc ta ligne d'avant a échoué, ton objet $hsp n'est pas ce que tu attendais.

    Si tu envois les "use" qu'il faut je peux tester de manière plus poussée, j'ai un BioPerl installé.

  3. #3
    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 serais presque prêt à parier que next_hsp retourne dans ce cas, "undef"...
    Un conseil : teste $hsp avant de l'utiliser.

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			my $result = $rc->next_result();
    			print $result,"\n";
    			$factory->remove_rid($rid);
    			for (my $i = 0; $i < 1; ++$i) 
    				{
    				my $hit = $result->next_hit;
    				my $hsp = $hit->next_hsp;
                                    my $start_hit=$hsp->start('hit');
                                    my $end_hit=$hsp->end('hit')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    				my $result = $rc->next_result();
    				$factory->remove_rid($rid);
     
    				while ( my $hit = $result->next_hit ) {
    					next unless ( $v > 0);
    						while( my $hsp = $hit->next_hsp ) {
    Essaie avec des boucles while au lieu d'une variable incrémentée

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2009
    Messages : 22
    Par défaut
    @ Jasmine : j'ai toujours le même problème

    @Philou67430 : comment un hsp pourrait être indéfini?

    @ 50Nio : voici me use
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    use strict;
    use warnings;
    use Bio::Tools::Run::RemoteBlast;
    use Bio::DB::GenBank;
    use Bio::SeqIO;
    Merci

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Ce serait plus facile de t'aider si on avait tout le code à tester, ainsi que la séquence posant problème.

  7. #7
    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
    Citation Envoyé par Bioinfoe Voir le message
    @Philou67430 : comment un hsp pourrait être indéfini?
    Parceque la doc de cette méthode précisant le retour de next_hsp évoque clairement cette possibilité :
    Citation Envoyé par Bio::Search::Hit::HitI
    next_hsp

    Title : next_hsp
    Usage : while( $hsp = $obj->next_hsp()) { ... }
    Function : Returns the next available High Scoring Pair
    Example :
    Returns : L<Bio::Search::HSP::HSPI> object or null if finished
    Args : none
    Pour bien gérer ce genre de méthode, la bonne manière est la boucle proposée par jasmine.
    D'ailleurs, le SYNOPSIS de la doc de Bio::Tools::Run::RemoteBlast ne dit pas autre chose.

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

Discussions similaires

  1. Recuperer position du curseur en termcap
    Par Stnaire dans le forum Linux
    Réponses: 4
    Dernier message: 18/05/2010, 11h15
  2. recuperer position texte selectionné par rapport a son parent
    Par calitom dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/10/2007, 17h50
  3. [SAX] "SAXException XML document structures must start and end within the same entity"
    Par tdeco dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/08/2007, 21h53
  4. TextArea Recuperation position curseur
    Par maxf1 dans le forum Struts 1
    Réponses: 5
    Dernier message: 05/01/2007, 16h25
  5. Réponses: 3
    Dernier message: 16/08/2004, 10h57

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