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 :

clustalW "unknown option /align"


Sujet :

Bioinformatique Perl

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut clustalW "unknown option /align"
    Bonjour,

    J'ai un problème avec ClustalW. Pourriez-vous m'aider?


    CLUSTAL W (1.83) Multiple Sequence Alignments


    Error: unknown option /align

    ------------- EXCEPTION: Bio::Root::Exception -------------
    MSG: Clustalw call (C:\Clustalw\clustalw.exe align -infile=D:\DOCUME~1\LOCALS~1\Temp\sFR2xvUuHp\7DEHP7RQAj -output=gcg -ktuple=4 -type=dna -outfile=P:/Perl/testClustal.fsa) crashed: 256

    STACK: Error::throw
    STACK: Bio::Root::Root::throw C:/Perl/site/lib/Bio/Root/Root.pm:359
    STACK: Bio::Tools::Run::Alignment::Clustalw::_run C:/Perl/site/lib/Bio/Tools/Run/Alignment/Clustalw.pm:556
    STACK: Bio::Tools::Run::Alignment::Clustalw::align C:/Perl/site/lib/Bio/Tools/Run/Alignment/Clustalw.pm:472
    STACK: P:\Perl\scripts\ClustalW\RUNCLU~1.PL:44
    -----------------------------------------------------------

    Merci beaucoup,


    Jasmine,
    -- Jasmine --

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Il y a aussi un second problème.

    Quand j'effectue la commande sleep, c'est comme si elle s'effectuait avant l'écriture dans mon fichier de sortie.
    while (@row1=$sth1->fetchrow_array)
    {
    my $Id = $row1[0];
    my $Acc = $row1[1];
    my $Seq = $row1[2];
    print $OutFileTXT ">$Id\n$Seq\n";
    print $OutFileAcc "$Id\t$Gn\t$Acc\n";
    }

    sleep(100);
    exec();

    my @params = ('ktuple' => 4, 'type' => 'dna', 'outfile' => "P:/Perl/scripts/Files/FungiDB/".$Gn."_align.msf");
    my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);
    my $aln = $factory->align($OutFileTXT);
    Et donc, ClustalW me dit que mon fichier n'est pas valide.


    Merci,

    Jasmine,
    -- Jasmine --

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    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
     
    sub align {
     
        my ($self,$input) = @_;
        my ($temp,$infilename, $seq);
        my ($attr, $value, $switch);
     
        $self->io->_io_cleanup();
    # Create input file pointer
        $infilename = $self->_setinput($input);
        if (!$infilename) {$self->throw("Bad input data (sequences need an id ) or less than 2 sequences in $input !");}
     
    # Create parameter string to pass to clustalw program
        my $param_string = $self->_setparams();
     
    # run clustalw
        my $aln = $self->_run('align', $infilename,$param_string);
    }
    Pourtant la sous routine existe bien dans
    C:\Perl\site\lib\Bio\Tools\Run\Alignment\Clustalw.pm

    Merci,


    Jasmine,
    -- Jasmine --

  4. #4
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    ce n'est pas un problème de routine inexistante, au contraire elle démarre bien, tu le vois dans le stacktrace.

    apparemment l'erreur est dans l'executable lui meme...

    As tu essaye de lancer la commande
    C:\Clustalw\clustalw.exe align -infile=D:\chemin\vers\fichier.test -output=gcg -ktuple=4 -type=dna -outfile=P:/Perl/testClustal.fsa
    a la main ?

    pour ton 2e problème, par défaut les écritures ne sont pas effectuées a chaque appel de la fonction print. Pour activer l'auto_flush, ajoute

    avant de commencer a écrire.

    Enfin par curiosité, a quoi sert le exec() apres le sleep ?
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Merci de m'aider.

    Pour le exec, ici cela ne sert à rien, cela est utiliser afin de lancer un autre programme après la pause.

    Je n'arrive pas à lancer clustalw via la console.
    Je vais via le shell, dans le répertoire où se trouve clustal.exe et j'écris "clustalw.exe align -infile=D:\chemin\vers\fichier.test -output=gcg -ktuple=4 -type=dna -outfile=P:\Perl\testClustal.fsa " mais clustal.exe n'est pas reconnu en tant que programme executable. Pourtant il est bien présent dans ce répertoire .

    Merci,

    Jasmine,
    -- Jasmine --

  6. #6
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    première vérification: est ce clustalw2 ou clustalw que tu as dans ton répertoire ?

    (j'ai voulu tester et je me suis heurté au message "is not recognized", avant de lister mon répertoire... )

    ensuite si tu as clustalw il ne reconnaît pas align comme option (comme dans ton premier message d'erreur) mais en revanche il reconnaît /align
    dans ce cas il faudra modifier un peu le fichier Clustalw.pm (la methode _run plus precisement) et ajouter un "/" devant la commande (ligne 551 normalement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $commandstring = $self->executable." /$command"." $instring".
    	" -output=$output". " $param_string";
    (mais j'avoue ne pas aimer ce genre de bidouille )

    si c'est clustalw2 il reconnaît les 2 formes. Dans ce cas la tout ce que tu as à faire c'est de redéfinir le chemin vers l'exécutable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);
    $factory->executable("C:\Clustalw\clustalw2.exe");
    my $aln = $factory->align($OutFileTXT);
    Mais le package Clustalw.pm n'a été testé avec la version 2 ...

    Bon courage !
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    C'est clustalw mais je peux installer clustalw2 si cela est préférable.
    Ce que je ne comprends pas c'est que ce programme fonctionnait il y a six mois et maintenant ça ne va plus ... la seule chose que j'ai fait c'est réinstaller le package bioperl et je ne vois pas ce qui aurait changé d'autre.
    J'esssaie de comprendre à quoi cela pourrait être dû.
    J'ai toujours bien : (je suis sous windows xp)

    BEGIN { $ENV{CLUSTALDIR} = 'C:/Clustalw/' }
    use Bio::Tools::Run::Alignment::Clustalw;

    et la variable d'environnement est bien là, la preuve le programme retrouve bien ClustalW et c'est après que cela ne fonctionne plus. Le programme a bien le chemin vers clustalw.pm mais il n'arrive pas à utiliser sa sous-routine ... or il y a six mois, il le pouvait.


    Pour ce qui est de l'autre problème, j'ai fait comme tu me l'as conseillé :
    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
     
            $| = 1;
            while (@row=$sth->fetchrow_array)
            {
                    print "$Gn => $row[0]\n";
                    if ($row[0] > 1)
                    {
                            ...
                            my @row1;
                            while (@row1=$sth1->fetchrow_array)
                            {
                                    my $Id = $row1[0];
                                    my $Acc = $row1[1];
                                    my $Seq = $row1[2];
                                    my $Organisme = $row1[3];
                                    print $OutFileTXT ">$Id\n$Seq\n";
                                    print $OutFileAcc "$Id\t$Organisme\n$Acc\n\n";
                            }
     
                            sleep(100);
     
                            my @params = ('ktuple' => 4, 'type' => 'dna', 'outfile' => "P:/Perl/scripts/Files/Test/FungiDB/".$Gn."_align.msf");
                            my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);
                            my $aln = $factory->align($OutFileTXT);
     
                    }
            }
    J'ai utilisé un seul petit alignement de 3 séquences pour être certaine que 100 secondes suffisent à l'écriture du fichier. Mais j'ai toujours l'erreur
    ------------- EXCEPTION: Bio::Root::Exception -------------
    MSG: Bad input data (sequences need an id ) or less than 2 sequences in FileHandle=GLOB(0x1df61bc) !
    STACK: Error::throw
    STACK: Bio::Root::Root::throw C:/Perl/site/lib/Bio/Root/Root.pm:359
    STACK: Bio::Tools::Run::Alignment::Clustalw::align C:/Perl/site/lib/Bio/Tools/Run/Alignment/Clustalw.pm:466
    STACK: P:\Perl\scripts\ClustalW\DB_CLU~1.PL:74
    -----------------------------------------------------------
    Si je fournis directement le fichier $OutFileTXT, je retombe sur l'erreur de "unknown option /align" et si j'ouvre le fichier avec Bioedit et que je lance ClustalW manuellement (via le net), cela fonctionne et prouve donc que mon fichier est correct.

    Merci,

    Jasmine,
    -- Jasmine --

  8. #8
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    je peux me tromper mais la méthode align attend un string avec le nom/path du fichier, et tu as l'air de passer un fileHandle...

    je ne suis pas sur que la méthode puisse gérer un fileHandle. Teste avec un nom de fichier ?
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    J'ai aussi essayé avec le fichier directement, j'ai la même erreur.
    Je peux essayer de récupérer les données dans une array mais à mon avis cela ne changera rien au problème du align. Normalement ClusalW reconnait le align

    http://search.cpan.org/~birney/biope...nt/Clustalw.pm

    J'avais installé Bioperl, puis ClustalW, créé ma variable d'environnement et cela fonctionnait. J'ai réinstallé une nouvelle version de bioperl et cela ne va plus. Peut-être y aurait-il quelque chose d'autre à régler. Mais, le programme trouve bien ClustalW, le code n'a pas changé et malgré tout align n'est pas reconnu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    foreach my $Gn (@Genus)
    {
            if (-e "P:/Perl/scripts/Files/FungiDB/".$Gn."FSA.txt")
            {
                    my @params = ('ktuple' => 4, 'type' => 'dna', 'outfile' => 'P:/Perl/scripts/Files/FungiDB/'.$Gn.'align.msf');
                    my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params);
                    my $aln = $factory->align("P:/Perl/scripts/Files/FungiDB/".$Gn."FSA.txt");
            }
    }
    Maintenant tous mes fichiers fasta à aligner son générés et je ne dois plus interroger ma base de données. J'ai donc simplifier mon code, et je ne passe plus par un FileHandle.


    Un grand merci,

    Jasmine,
    -- Jasmine --

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    La semaine commence bien. J'ai installé ClustalW2 et maintenant cela fonctionne très bien. Merci beaucoup pour ton aide.


    Jasmine,
    -- Jasmine --

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

Discussions similaires

  1. mysql: unknown option '--old-passwords'
    Par samira84 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/06/2007, 16h09
  2. mysqldump unknown option
    Par lamachine_fr dans le forum Administration
    Réponses: 9
    Dernier message: 26/03/2007, 17h12
  3. [Tcl/Tk] Unknown option "-type"
    Par Biosox dans le forum Tcl/Tk
    Réponses: 4
    Dernier message: 25/09/2006, 15h57

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