Install MMSEQ2 and formatting popular DBs

Bonjour

serait il possible que les gentils admins du cluster installent le programme mmseqs2 (https://github.com/soedinglab/MMseqs2/wiki#installation) et mettent en place un formatage automatique des bases de données nr et uniref90 pour cet outil lorsque ces BDs sont mises à jour.

Je peux contribuer à mettre en place cet outil si besoin.

Merci
Guillaume

Bonjour Guillaume,

MMseqs2 est maintenant disponible:

module load mmseqs2/8-fac81

Pour les bases de données nr et uniref90, on revient vers vous dès que possible.
David (un gentil administrateur qui ne sait pas trop comment/quoi pour les bases de données)

Bonne journée

@Guillaume nr et uniref sont ici: /shared/bank/ (même si nous n'avons pas encore mis en place la mise à jour automatique)

Est-ce que les index mmseqs2 sont gros ?
Si oui, ça vaudrait en effet le coup de les mettre à disposition sur /shared/bank/.
Pourrais-tu nous donner la ligne de commande ?

Salut Gildas

Les indexes sont relativement gros, probablement de l'ordre de ce que produit makeblastdb
L'étape d'indexage peut être assez longue (12-24H) et lourde en termes de ressources (demande pas mal de RAM et d'espace disque--bcp d'IOs pendant le processus). Il sera peut être nécessaire de faire tourner le programme sur le noeud 69.

Du coup je pense que ce serait bien de partager ces indexes sur le /shared car les recalculer et les multiplier sur plusieurs comptes ne serait pas optimal

Pour le formatage des DBs, il faut procéder en 2 étapes:

1/ Formatage de la DB:

mkdir /shared/bank/uniref90/current/mmseqs

mmseqs createdb \
/shared/bank/uniref90/current/fasta/uniref90.fsa \
/shared/bank/uniref90/current/mmseqs/uniref90

2/ Indexage de la DB:

mkdir /tmp/tmp_mmseqs #repertoire local temporaire pour les IOs du processus

mmseqs createindex \
/shared/bank/uniref90/current/mmseqs/uniref90 \
/tmp/tmp_mmseqs

rm /tmp/tmp_mmseqs

A+
Guillauem

@Guillaume Désolé pour le temps de réponse, semaine workshop.

Mais j'avance. Et je bloque...

L'étape createindex semble consommé beaucoup de mémoire

srun --mem=60G mmseqs createindex --split 0 /shared/bank/nr/current/mmseqs/nr /tmp/tmp_mmseq_nr
slurmstepd: error: Step 178180.0 exceeded memory limit (64721636 > 62914560), being killed
srun: Exceeded job memory limit
srun: Job step aborted: Waiting up to 32 seconds for job step to finish.
slurmstepd: error: *** STEP 178180.0 ON cpu-node-51 CANCELLED AT 2019-04-25T09:42:33 ***
....................................................srun: error: cpu-node-51: task 0: Killed

Est-ce que je continue à augmenter la mémoire sachant que notre max est plus ou moins 3 To ou est-ce qu'il y a une optimisation à faire ?

Salut Gildas

Effectivement, c'est une étape qui consomme bcp de RAM, c'est pourquoi je suggérerais de la faire tourner sur un noeud qui dispose d'un tas de mémoire. Malheureusement je ne connais pas d'optimisation possible. A vrai dire, je ne connais pas ce programme dans les détails...

Je viens de lancer la commande sur le nœud 69 avec plus de ressources qu'il n'en faut. Ca me permettra de trouver les bons paramètres de temps et mémoire. Une fois que j'ai qqch de carré, je mettrais ça dans un script dispo pour les prochaines updates de BDs.

G.

Bon voila c'est terminé en 1H11, plus rapidement que je le pensais en fait.

Dans son output, mmseqs prédit un besoin de ~700Go pour indexer "nr":

Needed memory (707942590406 byte) of total memory (2921763188736 byte)

La commande sacct indique un MaxRSS de 424831976K

sacct --format=jobid,elapsed,ncpus,ntasks,CPUTime,MaxRSS -j 178229.batch
       JobID    Elapsed      NCPUS   NTasks    CPUTime     MaxRSS 
------------ ---------- ---------- -------- ---------- ---------- 
178229.batch   01:11:39         32        1 1-14:12:48 424831976K 

Pour être secure il faudra lancer un run avec --mem=750G je présume. uniref90 étant un peu plus petite, cela passera aussi.

Les fichiers index pour nr sont dispo à l'adresse /shared/projects/phycovir/nr.idx*, à tranférer dans /shared/bank/nr/current/mmseqs/ (permission non accordée pour moi)

Oki, c'est quand même beaucoup de memoire :tired_face:
Tu m'autorises à prendre dans ces fichiers dans ton espace projet ?

oui oui pas de problème

Les index on été copiés dans /shared/bank/nr/current/mmseqs/ (nr.idx, nr.idx.dbtype, nr.idx.index).
Merci pour l'aide !

Ca devrait aussi être bon pour uniref90. Ca devrait !

Bonjour

j'ai refait le formatage de NR avec la nouvelle version installée le 7 octobre sur le cluster

Serait il possible de remplacer les fichiers qui sont dans /shared/bank/nr/current/mmseqs par ceux dispo dans /shared/projects/phycovir/FORMATED_DB/nr/

Merci

Guillaume

Bonjour Guillaume,

C'est fait.
Les anciens fichiers ont été gardé sous /shared/bank/nr/current/mmseqs.2019-04-24
Les nouveaux fichiers dans /shared/bank/nr/current/mmseqs
On notera que les noms des fichiers ont changés:

$ ls /shared/bank/nr/current/mmseqs.2019-04-24/
nr  nr.dbtype  nr_h  nr_h.dbtype  nr_h.index  nr.idx  nr.idx.0  nr.idx.dbtype  nr.idx.index  nr.idx.index.0  nr.index  nr.lookup

$ ls /shared/bank/nr/current/mmseqs
nr.mmdb  nr.mmdb.dbtype  nr.mmdb_h  nr.mmdb_h.dbtype  nr.mmdb_h.index  nr.mmdb.idx  nr.mmdb.idx.dbtype  nr.mmdb.idx.index  nr.mmdb.index  nr.mmdb.lookup

Bonne journée

Bonjour David

j'ai ajouté un formatage de la base pour pouvoir travailler sur les informations taxonomiques.
Pourrais tu ajouter les fichiers suivants au dossier partagé:

cd /shared/projects/phycovir/FORMATED_DB/nr
cp nr.mmdb_mapping nr.mmdb_names.dmp nr.mmdb_nodes.dmp nr.mmdb_merged.dmp rr.mmdb_delnodes.dmp /shared/bank/nr/current/mmseqs

Je compte aussi générer ces mêmes fichiers pour la base uniref90 dont je me sers souvent.
Sera t-il possible de les déposer aussi sur /shared/bank/ ?
merci
Guillaume

Bonjour Guillaume,

Les fichiers indiqués ont été déposés dans /shared/bank/nr/current/mmseqs

$ ls /shared/bank/nr/current/mmseqs
nr.mmdb         nr.mmdb_delnodes.dmp  nr.mmdb_h.dbtype  nr.mmdb.idx         nr.mmdb.idx.index  nr.mmdb.lookup   nr.mmdb_merged.dmp  nr.mmdb_nodes.dmp
nr.mmdb.dbtype  nr.mmdb_h             nr.mmdb_h.index   nr.mmdb.idx.dbtype  nr.mmdb.index      nr.mmdb_mapping  nr.mmdb_names.dmp

Pour uniref90, Gildas a déjà déposé une version (datant de juillet 2019)

$ ls -l /shared/bank/uniref90/
total 5897
lrwxrwxrwx 1 glecorguille glecorguille      16 Oct  8 10:26 current -> uniref90_2019_07
drwxrwxr-x 6 glecorguille glecorguille 3033297 Apr 24  2019 uniref90_2018-10-10
drwxrwxr-x 5 glecorguille glecorguille 3004249 Oct  8 09:56 uniref90_2019_07

Je pense qu'il y a pas de souçis si vous voulez mettre à jour.
De la même façon, je pourrais les déposer pour vous.

A bientôt

Bonjour

serait il possible d'installer la toute dernière version de MMSEQ2 (V10) qui intègre de nouvelles méthodes qui ne sont pas dispos sur la vieille version installée (V8) sur le cluster?

Meurci
Guillaume

Bonjour Guillaume,

L'installation est en cours: https://gitlab.com/ifb-elixirfr/cluster/conda-env/merge_requests/169
On revient vers vous dès que c'est installé.

Bonne journée

Guillaume,

mmseq2 est maintenant disponible en dernière version (10-6d92c, 23/08/2019). Merci @Francois

module load mmseqs2/10-6d92c

A bientôt

merci !!!!!!!!!!!!!!!

Bonjour

ça m'embête de vous ennuyer encore avec ça, mais il se trouve qu'après discussion avec les développeurs, la nouvelle méthode qui m’intéresse vient juste d'être intégrée au code et ne sera distribuée que dans la prochaine release.

La seule façon de l'avoir dès maintenant est de récupérer le code depuis git et de compiler.
Je viens de le faire sur mon PC et ça c'est passé en 2 min sans problème apparent.
Cependant, je ne peux pas faire tourner le programme sur mon PC car pas assez de RAM.

Bref, vous est-il possible de télécharger le code et de le compiler sur les noeuds du cluster?

Voici la méthode indiquée dans le README, que j'ai suivie:

    Compiling MMseqs2 from source has the advantage that it will be optimized to the specific 
    system, which should improve its performance. To compile MMseqs2 `git`, `g++` (4.8 or later)
    and `cmake` (2.8.12 or later) are needed. Afterwards, the MMseqs2 binary will be located in the 
    `build/bin/` directory.

    git clone https://github.com/soedinglab/MMseqs2.git
    cd MMseqs2
    mkdir build
    cd build
    cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=. ..
    make -j 4
    make install

Bonne journée
Guillaume