Bio-informatiques

L'informatique c'est ton dada ? Tu es le Omar Sharrif du clavier?
Ici se trouve ton temple des milles et une nuits. Plein d'informations pour toi et de l'aide pour résoudre tes menus soucis!

Modérateur : Ero-modos

k1Rua
Jounin
Messages : 2249
Inscription : dim. 24 juil. 2005, 13:32

Bio-informatiques

Message par k1Rua »

Alors voilà, dans le cadre de mon boulot, il peut être pas mal que je fasse quelques analyses bioinformatiques. Rapidement et sans que ça ait beaucoup d'importances, j'essaie de comparer un nombre important de génomes viraux (291 exactement) pour en tirer certaines informations et notamment trouver quelles parties du génomes sont conservées.
Il existe pas mal de logiciel pour faire ça, notamment des interfaces graphiques disponibles sur internet mais les logiciels les plus performants fonctionnement généralement par lignes de commandes.

Je ne suis vraiment pas un expert en lignes de commandes, mais bon, généralement, je suis capables de suivre les instructions qu'on me dit, tout du moins refaire les exemples pour ensuite adapter ça à mon problème.
Sauf que voilà, un des logiciels que je souhaite utiliser s'appelle PriMux (disponible ici : http://sourceforge.net/projects/primux/). Le logiciel tourne en parti avec des ligne de commandes (des scripts Perl) et une partie sur un logiciel bioinformatique appelé R (qui tourne aussi en ligne de commande), et va lire des fichiers de types ".fasta" (un format habituel en bioinformatique qui contient des séquences et qui commence par un ">").

Sauf que voilà, quand j'essaie de refaire les exemples pour voir si le logiciel tourne, je me retrouve face à plusieurs obstacles. Le premier, pour l'installation, il est nécessaire dans un premier temps d'installer un autre logiciel qui s'appelle Vmatch et mkvtree (existant uniquement pour Linux et Windows, pour le télécharger, il faut envoyer un mail au créateur du logiciel pour le télécharger et obtenir une licence, ce que j'ai obtenu aujourd'hui) en les mettant dans le Path de PriMux, donc si je comprends bien, en mettant les fichiers qu'on obtient directement dans le dossier PriMux.
Il faut ensuite créer les variables d'environnement en exécutant les commandes suivantes :
setenv PRIMUX_DIR $HOME/primux
setenv LD_LIBRARY_PATH $PRIMUX_DIR/bin
setenv UNAFOLDDAT $PRIMUX_DIR/src/unafold_data
-- or --
export PRIMUX_DIR=$HOME/primux
export LD_LIBRARY_PATH=$PRIMUX_DIR/bin
export UNAFOLDDAT=$PRIMUX_DIR/src/unafold_data
Après recherche, la fonction setenv[/i} ne semble pas être disponible sur le terminal de Mac OS X. Tout du moins, un "man setenv, montre qu'il existe mais quand je fais la commande sur mon terminal, il me dit qu'elle n'existe pas. Par contre, avec export, je n'options pas d'erreur, donc il semblerait que ce soit bon. Mais en même temps, je n'ai pas de confirmation que la commande est bien passée, donc je n'ai pas non plus moyen de vérifié que c'est bon.

Donc première question : Est-ce que jusqu'ici je fais quelque chose de mal ou pas ?

Disons que c'est bon et que je peux passer à la suite du programme, qu'on active comme ça :

$PRIMUX_DIR/run_Primux -d Results -f sequences.fasta -P options_primers -p options_probes -g 1 -c 1


-d <path_to_output_directory>
-f <path_to_fasta_input>
-P <path_to_primer_options_file> (capital P for primer options)
-p <path_to_probe_options_file> (lower case p for probe options)
-c <0|1>
-g <0|1>


Sauf que voilà, quand je reprends mot à mot l'exemple qu'ils donnent dans le readme
$PRIMUX_DIR/run_Primux -d Results -f sequences.fasta -P options_primers -p options_probes -g 1 -c 1 | & tee log.stdout
(la dernière partie | & tee log.stdout ne la comprenant pas je l'ai exclu de la commande et en donnant bien les bons chemins pour les -d Results, etc), j'obtiens ça :

Near:Example_run_Primux Near$ /Users/Near/Desktop/primux/run_Primux -d /Users/Near/Desktop/primux/Example_run_Primux/Results -f /Users/Near/Desktop/primux/Example_run_Primux/sequences.fasta -P /Users/Near/Desktop/primux/Example_run_Primux/options_primers -p /Users/Near/Desktop/primux/Example_run_Primux/options_probes -g 1 -c 1
The home directory is /Users/Near/Desktop/primux/Example_run_Primux
/Users/Near/Desktop/primux/Example_run_Primux/sequences.fasta
run_Primux, calling: cd /Users/Near/Desktop/primux/Example_run_Primux/Results
/Users/Near/primux/bin/prep_fasta_file.pl: Command not found.
/Users/Near/primux/bin/runme2.py: Command not found.
result_dir=results
Finished finding primers with runme2.py
pre=
Done running find_amplicons.pl
/Users/Near/Desktop/primux/Example_run_Primux/Results/results
foreach: No match.


Pourtant, toutes les commandes non trouvées sont bien présentes dans le fichier bin.

Bref : Les questions sont les suivantes :

Le problème vient-il du faite que je tente de lancer les logiciels sur mac alors qu'ils sont spécifiques pour Linux et si non, où est-ce que je me plante ?
Un autre programme (celui que je veux vraiment lancer) fonctionne exactement de la même façon sauf que lui quand je tente de le lancer, il me dit qu'il y a une erreur dans le fichier perl (que je n'ai jamais modifié), mais déjà, si vous arrivez à voir où est le problème dans le premier logiciel, ce sera je pense déjà pas mal.

Je sais pas trop si j'ai été clair. J'ai essayé d'être le plus spécifique possible.
Man this is crazy... you're dancing with the entire McPoyle familly. These people are a freak show man! But you're keeping it cool. You're keeping it cool. You know why ? Because you are the Green-Man!“ (Charlie in It's Always Sunny In Philadelphia)
DesLife
Jounin
Messages : 2694
Inscription : lun. 12 févr. 2007, 20:40

Re: Bio-informatiques

Message par DesLife »

Pas de différence entre setenv et export, ça dépend juste de ton shell. Pour vérifier si ça a bien fonctionné, lance echo $PRIMUX_DIR, echo $LD_LIBRARY_PATH, echo $UNAFOLDDAT. Si ça affiche les bons chemins, c'est gagné... par contre, ces export ne sont pas définitifs, ils ne valent que dans le shell où tu les as lancés. Il faut donc nécessairement lancer les commandes suivantes dans le même shell (ou ajouter les export à ton .bashrc).

| & tee log.stdout va juste écrire tous les outputs de ta commande (les logs) dans un fichier nommé log.stdout. Ne retire pas cette partie, ça peut te donner des infos précieuses sur l'exécution, les erreurs rencontrées...

Edit : à mon avis ce qui suit est inutile, mais bon...
Vérifie que les fichiers /Users/Near/primux/bin/prep_fasta_file.pl et /Users/Near/primux/bin/runme2.py sont exécutables.
Si tu ne sais pas comment on fait : ls -l fichier te donneras des infos, notamment les droits du fichier. C'est noté -rwxrwxrwx : droit de read, write et execute le fichier pour l'utilisateur, le groupe de l'utilisateur, et tous les utilisateurs. Si tu n'as, par exemple, pas le droit de l'exécuter, ce sera noté -rw-rwxrwx. Si tu n'as pas le droit d'exécution, utilise chmod u+x fichier.

A priori ces programmes devraient tourner sans souci sur mac, surtout si c'est que des fichiers python et perl, mais comme je n'y connais strictement rien à OSX...
Image
Shinfei
Ninja de Légende
Messages : 6403
Inscription : mer. 03 août 2005, 13:29
Localisation : Sous la couette avec Zion ^_^

Re: Bio-informatiques

Message par Shinfei »

Je pense aussi qu'il ne devrait pas y avoir de soucis vu la base Unix, mais on sait jamais.
Comme dit Deslife, verifie les attributs de tes fichiers, car apparement par defaut tu peux pas executer les .pl par securité: http://www.macinstruct.com/node/437

T'as pas un Linux qui traîne dans un coin pour tester aussi ?
Image
Avatar de l’utilisateur
Mottires
Maître du Ravin
Messages : 4913
Inscription : dim. 24 juil. 2005, 14:34
Localisation : BDF à droite
Contact :

Re: Bio-informatiques

Message par Mottires »

Alors moi j'ai un probleme de concept avec cette ligne : export LD_LIBRARY_PATH=$PRIMUX_DIR/bin
La dedans tu écrase totalement ta ld_librairy pour une autre. Si mac s'attend a trouvé certaine infos dans sa LD de base, certaisn applicatifs ne marcheront donc pas.

Ensuite, Linux n'est pas unix. Le noyau n'est pas le même, la libc non plus, et a peu pret toute la couche bas niveau n'ont aucun rapport.
Linux comprend les appels UNIX mais l'inverse n'est pas necessairement vrai.

la command foreach qui n'est pas trouvé est un morceaux de script (bash, perl python, j'en sais rien). Si il le trouve pas c'est que ton environnement d'execution ne le connait pas. Docn probablement que tu utilise un mauvais shell (dans le sens interpreteur)

Pour les commande perl qui ne marche pas même punition. il te manque surement des modules perl, ou certains modules sont spécifiques à linux, ou encore tu n'est pas dans la bonne vesrion de perl.

Franchement tu te colle un petit nux des familles dans un vm et deja vois si ca marche comme ca.
:arrow: Nouveau Canal IRC de NMT.

Un grand maître a dit : La modération, c'est comme les femmes, c'est quand on en abuse que ca devient amusant!
DesLife
Jounin
Messages : 2694
Inscription : lun. 12 févr. 2007, 20:40

Re: Bio-informatiques

Message par DesLife »

Oui mais justement, là on parle de langages de script haut niveau qui ont leurs interpréteurs spécifiques sur chaque OS, je vois pas de raison que ça bloque de ce côté là. Mais ça ne peut pas faire de mal de vérifier les versions des interpréteurs.

Et foreach: No match. signifie simplement que la commande foreach n'a rien trouvé qui matchait, pas que la commande elle-même n'a pas été trouvée (sinon l'erreur serait command not found).
Image
Avatar de l’utilisateur
Mottires
Maître du Ravin
Messages : 4913
Inscription : dim. 24 juil. 2005, 14:34
Localisation : BDF à droite
Contact :

Re: Bio-informatiques

Message par Mottires »

DesLife a écrit :Oui mais justement, là on parle de langages de script haut niveau qui ont leurs interpréteurs spécifiques sur chaque OS, je vois pas de raison que ça bloque de ce côté là. Mais ça ne peut pas faire de mal de vérifier les versions des interpréteurs.
Ca dépend, ils sont bien de haut niveau, mais certains appels peuvent être spécifique. Pour python je sais pas, mais en perl, y en a quelques uns.
DesLife a écrit :Et foreach: No match. signifie simplement que la commande foreach n'a rien trouvé qui matchait, pas que la commande elle-même n'a pas été trouvée (sinon l'erreur serait command not found).
Tu as parfaitement raison
:arrow: Nouveau Canal IRC de NMT.

Un grand maître a dit : La modération, c'est comme les femmes, c'est quand on en abuse que ca devient amusant!
Répondre