Ce script python utilise msprime et j'ai un message d'erreur dans le log :
Traceback (most recent call last):
File "/shared/ifbstor1/home/mduranton/Simulations/Develop_tspop/Test_tspop/./../mil_sans_comment_read_file_without_BN_1Mb_tspop.py", line 1, in
import msprime
ModuleNotFoundError: No module named 'msprime'
Je ne comprends pas pourquoi, est-ce que je manque une étape pour accéder à msprime?
Le module msprime/1.2.0 vient avec sa propre version de python (Python 3.11.0).
Il est possible que dans votre script vous utilisiez une autre version de python ? Ou que vous chargiez un autre module (avec une autre version de python) ?
J'utilise également msprime (avec en plus tskit et pyslim).
Pour le moment je fais :
module load tskit/0.5.3
module load msprime/1.2.0
pip install pyslim==1.0.4
J'ai mis cet ordre car tskit est associé à python 3.10 et msprime à python 3.11.
Ensuite je voudrais simplement charger pandas (qui est par défaut associé à python de ce que j'ai compris) mais j'ai cette erreur:
J'ouvre python3.11 et je tape:
import msprime
import pandas
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'pandas'
Pandas est installé par défaut dans nos environnements python, il suffit donc de charger un des environnements python disponible sur le cluster.
Vous pouvez également installer vos propres packages python pour la version chargée (comme vous faites pour pyslim, pip install pyslim==1.0.4, ou que l'on pourrait faire pour pandas).
Ce qui donnerais par exemple:
module load python/3.9
pip install pyslim==1.0.4
A noter, qu'un package python est installé pour une version de python spécifiquement (si on change de version, il faut réinstaller).
Les modules tskit/0.5.3 et msprime/1.2.0 sont fait pour être utilisés directement en ligne de commande via les binaires correspondants (tskit, msp).
Mais en effet, il charge leur propre version de python, ce qui ne manque pas de créer des conflits avec les autres modules qui pourraient eux aussi utiliser leur propre version de python.
Nous conseillons donc dans votre pipeline de charger et décharger les modules au fur et à mesure, par exemple:
Merci, le pip install pandas résoud mon problème ! Par contre je suis un peu confuse et j'aimerais beaucoup comprendre comment je suis censée utiliser le cluster.
Mon cadre d'utilisation est le suivant: je fais des simulations de séquences génétiques avec SLiM (module load slim puis j'appelle slim). Il en ressort des treesequences qu'ensuite je traite en python, tel que recommandé par les développeurs de ce logiciel. Pour ce faire j'appelle un fichier qui s'appelle treesumstats.py.
import msprime, pyslim, tskit, numpy as np, pandas as pd, sys, warnings
Je suis un peu perdue sur l'utilisation de pip install: est-ce que ca ne va pas installer des logiciels a chaque fois que je lance un job ? Car là je fais 1000 réplicats de cette simulation et après je vais changer les valeurs de quelques paramètres donc lancer de nouveaux job. Ca me parait faire beaucoup de pip install..
Si votre script bash contient la commande pip install <...>, alors en effet il va tenter d'installer le module à chaque lancement de job...
Il suffit en fait de le faire une seule fois, pour la version de python utilisée.
Je l'installe donc une seule fois:
module load python/3.9
pip install pyslim==1.0.4
Et après, notamment dans le script bash, je n'ai plus qu'à faire appel à python (pas besoin de réinstaller, python va automatiquement trouvé le package installé dans votre /home):
module load python/3.9
Mais attention, comme expliqué précédemment, tskit ou msprime viennent avec leur version de python. pip va donc installé le package pour la version de python qui vient avec tskit ou msprime. De plus dans ces versions de python, panda n'est pas installé.
Ces modules sont prévus pour être utilisé en ligne de commande (et non en tant que librairie python).
Si vous utilisez plusieurs version de python (ce qui est le cas si vous charger msprime et tskit) , c'est sources d'erreurs et de confusions.
Je vous conseille donc d'utiliser la version de python via module qui vous convient et d'installer les packages python souhaités.
Par exemple: