Module

Depuis l'été 2015, le cluster MBB et celui de l'ISE-M sont passés sous module pour gérer python (voir lien). Il faut donc penser à précéder votre ligne de commande par module load python... dans votre script de soumission SGE (points de suspension correspondants à la version désirée). De même, les packages doivent être installés dans votre environnement utilisateur (home).

Utilisation Biopython sur le cluster

Biopython est installé sur la version 2.6.7 de python qui se trouve dans /opt/rocks/bin/python.

Il faut utiliser cette version directement « /opt/rocks/bin/python » ou modifier le chemin de recherche des modules pour utiliser la version par défaut de python : export PYTHONPATH=/opt/rocks/lib/python2.6/site-packages/

$/opt/rocks/bin/python
Python 2.4.2 (#1, Jun 18 2009, 04:05:48)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet.IUPAC import unambiguous_dna
>>> new_seq = Seq('GATCAGAAG', unambiguous_dna)
>>> new_seq[0:2]
Seq('GA', IUPACUnambiguousDNA())
>>> new_seq.translate()
Seq('DQK', HasStopCodon(IUPACProtein(), '*'))
>>>

Bloc vide

En python un bloc ne peut jamais être vide, aussi dispose-t-on du mot-clé "pass":

if a > 0 :
    pass
else :
    print "et voilà"

Version de python

2 versions sont disponibles au travers de module en plus de la version système déjà installée dans /usr/bin/python

/usr/bin/python -V
> Python 2.6.6
module avail

Vous pouvez ensuite charger la version que vous souhaitez ainsi:

module load python2.7
module load python3.3

Et l'enlever ainsi:

module unload python3.3

Pour un script de soumission, n'oubliez pas d'insérer ce type de ligne avant de lancer votre code en python. De plus, regardez les sources. Parfois l'entête du fichier python appelle directement une version de python comme par exemple "#!/usr/bin/python" qui cargera la version 2.6.

Installer un module Python

En python, vous pouvez télécharger les sources d'un package et lancer:

python setup.py install --user

Ou utiliser pip :

# si python2.7
module load python2.7
pip install --user monmodule
# si python3
module load python3.3
pip3 install --user monmodule

Utiliser une autre version de python

Si les versions disponibles dans module ou depuis le système ne suffisent pas, vous pouvez voir comment utiliser pyenv:

http://amaral-lab.org/resources/guides/pyenv-tutorial

Installer conda

Il faut utiliser pyenv ci-dessus. Merci de passer l'étape installing pyenv si c'est déjà fait (idem pour les virtualenvs)...

module add openssl-1.1.0b curldev

# installing pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

. .bashrc

# installing virtualenv
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

. .bashrc

# pour lister toutes les versions de conda disponibles
pyenv install conda

# on en choisit une
pyenv install miniconda3-3.9.1
# si vous avez une erreur 403/Forbidden, merci d'essayer une autre version
pyenv local miniconda3-3.9.1

conda --version
> conda 4.3.30

# pour utiliser un virtualenv avec conda il faut conda >= 4.6
# cf. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
pyenv install miniconda3-4.3.30
pyenv local miniconda3-4.3.30
conda --version
> conda 4.6.14
conda create --name conda_venv4.6
conda activate conda_venv4.6

# on desactive le tout pour revenir à la version système de python
conda deactivate conda_venv4.6
pyenv local system

Note : vous pouvez aussi utiliser virtualenv avec pyenv au lieu de conda (voir ex. ci-dessous avec snakemake)

Installer snakemake

Il faut utiliser pyenv ci-dessus. Merci de passer l'étape installing pyenv si c'est déjà fait (idem pour les virtualenvs)...

module add openssl-1.1.0b curl-7.50.3

# installing pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

. .bashrc

# installing virtualenv
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

. .bashrc

pyenv install 3.6.7
pyenv local 3.6.7

pyenv version
3.6.7 (set by ~/.python-version)
which pip
> ~/.pyenv/shims/pip
pip --version
pip 10.0.1 from ~/.pyenv/versions/3.6.7/lib/python3.6/site-packages/pip (python 3.6)

# creating the virtualenv from our current python version
pyenv virtualenv venv3.6
pyenv activate venv3.6

pip install snakemake
snakemake --help
....

# pour quitter le virtualenv
pyenv deactivate
# pour revenir à un version système de python
pyenv local system