Closed jorondo1 closed 1 year ago
ah ça se peut tu que ça soit parce que les fichiers sont sur /fast/ ??
la même commande fonctionne quand je la roule sur une liste de (différents) génomes qui sont dans mon WD. Si c'est ça, est-ce que je suis mieux de copier les 30k génomes localement puis les supprimer après ? ou juste les mv puis les remettre sur /fast/ quand j'ai fini?
Ça semble être ça le problème. Live j'ai mv la db complete dans mon wd, je vais la remettre après. Pour le futur let me know c'est quoi la meilleure pratique, ou si y'a une solution pour lire directement dans /fast/ ?
le bug est celui ci:
singularity exec --writable-tmpfs -e -B $tmp:$tmp
ca devrait etre:
singularity exec --writable-tmpfs -e -B $tmp:$tmp -B /fast:/fast -B /home:/home
Si tu roule en local enleve le binding nfs du path: /nfs3_ib/nfs-ip34
Si tu tourne sur les noeud de calcul la commande singularity avec les bind devrait etre:
singularity exec --writable-tmpfs -e -B $tmp:$tmp -B /nfs3_ib/nfs-ip34/fast:/nfs3_ib/nfs-ip34/fast -B /nfs3_ib/nfs-ip34/home:/nfs3_ib/nfs-ip34/home
redonne moi de snews la dessus... jai pas l'idde de copie des G de data pour rien et tu perd en plus l'efficacite des ssd.
ok j'essaierai ça, je ne suis pas familier avec le principe de binding mais je pense comprendre
vois le binding comme un mount entre le systeme et le containeur singularity.
la synthaxe est -B path_de_systeme:path_dans container.
tu peux donc dire par exemple
-B /bozo:/leclown
le path /bozo du systeme est binder a /leclown dans le container. Donc un ls
de /bozo sur le systeme sera = au ls
de /leclown dans le container.
En terme pratico pratique, je met toujours le meme path des 2 cotes, moin melangeant de meme et plus generique point de vu code.
Lien vers doc officiel https://docs.sylabs.io/guides/3.0/user-guide/bind_paths_and_mounts.html
j'essaie encore de sizer la bonne chose à faire. Je veux run Sourmash localement, voici ce que je fais:
ml apptainer; tmp=/home/def-ilafores/analysis/boreal_moss/genome_sketches
export sourmash="singularity exec --writable-tmpfs -e -B /home:/home -B $tmp:$tmp /home/def-ilafores/programs/ILL_pipelines/containers/sourmash.4.7.0.sif sourmash"
$sourmash sketch dna -p scaled=1000,k=31,abund \
--name-from-first --from-file moss_MAGs.txt \
--output-dir moss_MAGs
INFO: Cleanup error: while unmounting /cvmfs/soft.computecanada.ca/easybuild/software/2020/Core/apptainer/1.1.8/var/apptainer/mnt/session/final directory: no such file or directory, while unmounting /cvmfs/soft.computecanada.ca/easybuild/software/2020/Core/apptainer/1.1.8/var/apptainer/mnt/session/rootfs directory: no such file or directory
FATAL: container creation failed: unable to add /nfs3_ib/nfs-ip34/home/def-ilafores/analysis/boreal_moss/genome_sketches/temp to mount list: destination must be an absolute path
c'est quoi le problème ici?
ok j'ai trouvé c'était le anchor /nfs3_ib qui était encore dans les paths de ma liste de fichiers... sorry about that !!! Je commence à comprendre haha
Vas sy simple au debut:
ml apptainer
singularity exec --writable-tmpfs \
-B /home:/home \
-B /home/def-ilafores/analysis/boreal_moss/genome_sketches:/home/def-ilafores/analysis/boreal_moss/genome_sketches \
-e /home/def-ilafores/programs/ILL_pipelines/containers/sourmash.4.7.0.sif \
sourmash sketch dna \
-p scaled=1000,k=31,abund \
--name-from-first --from-file /path/to/moss_MAGs.txt \
--output-dir /path/to/moss_MAGs
bon plus vite que moi a repondre....
Voici ce que je roule:
Le fichier qu'il essaie d'utiliser existe bel et bien (c'est le premier génome de la liste). J'ai l'impression que ça a un lien avec le container, car j'ai eu exactement la même erreur quand j'essayais de rouler un génome à la fois (sans l'argument --from-file), mais que j'avais oublié de rouler "ml apptainer; tmp=$PWD" avant. Quand je roule la commande en lui donnant directement les fichiers en argument, ça fonctionne, mais quand je lui donne un --file-list j'ai cette erreur (j'ai pas le choix parce que j'ai >31000 génomes à sketcher ici).
J'ai pensé y aller en loop (1 commande par génome), mais ça augmente beaucoup le runtime parce que le container doit être rechargé à chaque génome.