Stage refonte python¶
- Table of contents
- Stage refonte python
Sujet de Stage M1, printemps 2026¶
Titre : Traduction de perl vers python du code d'identification des CRISPR-arrays
La base de données CRISPR-Cas++[1] recense 2 types d'éléments particuliers des génomes procaryotes leur conférant une immunité adaptative contre des éléments génétiques mobiles exogènes (phages ou plasmides), d'une part les CRISPR-arrays (Clustered Regularly Interspaced Short Palindromic Repeats) et d'autre part les gènes codants pour les protéines qui leurs sont associées, les Cas (CRISPR associated proteins).
Cette base de données présente une audience internationale. Ainsi la maintenance des codes informatiques supportant la mise à jour des données (suivant le séquençage de nouveaux génomes) et leur mise à disposition par un serveur web est donc primordiale.
Le code d’identification des CRIPSR-arrays, "CRISPRCasFinder"[2], a été initialement développé en 2001 en langage Perl puis amélioré successivement, toujours en Perl.
Le sujet de stage proposé est de mener à bien cette traduction perl vers python et pour cela :
- vous disposerez d'un jeu de 400 exemples des CRIPSR-arrays identifiés dans des séquences génomiques (Sup_Dataset5.xls [2]). Vous y sélectionnerez un jeu minimal de séquences reflétant les différentes réponses possibles du logiciel CRISPRCasFinder.
- vous lancerez le logiciel sur ce jeu de données réduit pour observer les fichiers produits.
- à l'aide d'un processus de profilage de code, vous séparerez les parties "mortes" des parties actives du code.
- vous transposerez en langage python ces parties actives. L'utilisation d'une IA générative est fortement conseillée pour cette étape et vous identifierez le (ou les) meilleur(s) outil(s) disponibles pour ce faire.
- vous vous attacherez à décrire la configuration de l'environnement logiciel.
- enfin, vérifierez la concordance des résultats de la refonte et de la version initiale sur le jeu initial des 400 séquences.
- au cas où il resterait du temps, vous inclurez les fonctions python du code dans un gestionnaire de workflow snakemake (ou nextflow)
Des détails supplémentaires concernant les objets biologiques sont proposés en [3] et le code de CRISPRCasFinder est accessible en [4].
Bibliographie-Webographie :
[1] CRISPR-Cas++ : https://crisprcas.i2bc.paris-saclay.fr/
[2] CRISPRCasFinder, an update of CRISRFinder, includes a portable version, enhanced performance and integrates search for Cas proteins 2018 https://doi.org/10.1093/nar/gky425
[3] Eléments génétiques CRISPR et Cas : https://crisprcas.i2bc.paris-saclay.fr/Home/About
[4] code de CRISPRCasFinder : https://crisprcas.i2bc.paris-saclay.fr/Home/Download
Précisions supplémentaires¶
Données disponibles :
- https://pmc.ncbi.nlm.nih.gov/articles/PMC6030898/ : Sup-Dataset1.xlsx (128 CRISPR start,end, length, etc avec expertise : 103 classe 4 ok + 25 classe 2 faux), Sup-Dataset2.xlsx (140 archaea et 260 bacteria refseqID), Sup-Dataset2.xls (120 profils cas), Sup-Dataset4.xlsx (1263 CRISPR start, end, etc, sans expertise), Sup_Dataset5.xls (400 chr avec evidence level), Sup-Dataset6.xlsx (30 genomes refseqID)
Profilage de code :
- python, scalene : https://anaconda.org/channels/conda-forge/packages/scalene/overview
- perl : https://stackoverflow.com/questions/4371714/how-do-i-profile-my-perl-programs
Qq précisions :
- quid de l'install des outils tiers ? est-ce que l'utilisation du docker permet de modifier le code ?
- travail à partir de la version standalone plutôt que celle directement liée au cluster (dans un docker je crois ?) ? => partir du docker plutôt mais il faudra en demander l'accès à SICS ou BioI2
- établir la liste des génomes du test fonctionnel => choisir un cas de chaque réponse différente dans la liste des 400 génomes => à faire faire par le stagiaire
- est-ce que seulement la refonte de CRISPRCasFinder suffit ou il faut aussi penser aux interactions avec la maj de la DB ? ou encore toutes les options proposées dans la page d'accueil : CrisprCasMeta CRISPRCasdb CRISPRCasdb-Taxo CRISPRCasdb-Blast => seulement CRISPRCas-finder pour l'instant
Quid de l'utilité de la maj ?¶
dl du code
mais le README du .zip obtenu n'est pas à jour, une version + à jour est sur le github de David Couvin.
pwd:/DATA/CRIPSR_testInstall/
unzip => CRISPRCasFinder-release-4.2.21
test d'install avec le container => erreur fuse2fs¶
Les liens de dl ne sont pas bons dans le README du dl mais ok dans le github de David.
apptainer par pixi (/DATA/pixi_envs/pix_apptainer)
apptainer="==1.4.5" => ok mais syngularity exec ... ne fonctionne pas, manque fuse2fs (du package e2fsprogs).
ajout du package e2fsprogs dans le toml : ne fonctionne toujours pas
cd /DATA/pixi_envs/pix_apptainer
pixi shell
cd /DATA/CRIPSR_testInstall/CRISPRCasFinder-release-4.2.21
singularity exec -B $PWD CrisprCasFinder.simg perl /usr/local/CRISPRCasFinder/CRISPRCasFinder.pl -so /usr/local/CRISPRCasFinder/sel392v2.so -cf /usr/local/CRISPRCasFinder/CasFinder-2.0.3 -drpt /usr/local/CRISPRCasFinder/supplementary_files/repeatDirection.tsv -rpts /usr/local/CRISPRCasFinder/supplementary_files/Repeat_List.csv -cas -def G -out RES21092020_2 -in install_test/sequence.fasta
INFO: fuse2fs not found, will not be able to mount EXT3 filesystems
ERROR : Could not write info to setgroups: Permission denied
ERROR : Error while waiting event for user namespace mappings: no event received
test d'install sh dans un container ubuntu¶
idée Chloé: ouvrir un docker ubuntu et y lancer le installer_UBUNTU.sh
doc apptainer sympas (en fr)
doc docker hub
cd /DATA/pixi_envs/pix_apptainer/ ; pixi shell
cd /DATA/CRIPSR_testInstall/CRISPRCasFinder-release-4.2.21
apptainer pull docker://ubuntu:noble-20260113
apptainer inspect ubuntu_noble-20260113.sif
# org.label-schema.build-arch: amd64
# org.label-schema.build-date: Thursday_12_February_2026_9:0:1_CET
# org.label-schema.schema-version: 1.0
# org.label-schema.usage.apptainer.version: 1.4.5
# org.label-schema.usage.singularity.deffile.bootstrap: docker
# org.label-schema.usage.singularity.deffile.from: ubuntu:noble-20260113
# org.opencontainers.image.ref.name: ubuntu
# org.opencontainers.image.version: 24.04
apptainer run ubuntu_noble-20260113.sif
# INFO: fuse2fs not found, will not be able to mount EXT3 filesystems
# ERROR : Could not write info to setgroups: Permission denied
# ERROR : Error while waiting event for user namespace mappings: no event received
apptainer buildcfg
# pas grand chose de bon !!! (ex. DATAROOTDIR=/home/conda/feedstock_root/build_artifacts/apptainer_1761826444459/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_p/share )
After v1.4.3: apptainer appears to require SIF files be writable for unprivileged users (FUSE2FS (3): Permission denied) => test avec apptainer 1.4.2 mais ne change pas la réponse du buildcfg.
apptainer exec --cleanenv ubuntu_noble-20260113.sif env => erreur fs2fuse Environment and Metadata doc
Build Environment doc
The cache is created at $HOME/.apptainer/cache by default => ok
$ echo ${CONDA_PREFIX} => ligne vide
(appt_1.4.2)$ echo ${CONDA_PREFIX} => /DATA/pixi_envs/pix_apptainer/.pixi/envs/default
Pixi caches all previously downloaded packages in a cache folder. Linux: $HOME/.cache/rattler => ok https://pixi.prefix.dev/dev/workspace/environment/#caching-packages
transfert installer_UBUNTU en pixi¶
liste des install du installer_UBUNTU.sh (tar et gcc par défaut mais compilation probablement plus utile si install avec conda/pixi):accès pixi au 11 février 2026:
| "wget" | v1.25.0 |
| "curl"? | utile pour MACOS, pas forcemant pour ubuntu si wget |
| "git"? | ssi récup de code github mais je ne vois pas cela dans l'installeur |
| "default-jre"? | quel outil a besoin d'une machine virtuelle java ? |
| "python"? | par défaut avec conda, pas avec pixi ? |
| "parallel" | v20260122 |
| "cpanminus" | v1.7048 "Comprehensive Perl Archive Network" |
| "hmmer" | v3.4 |
| "emboss" | v.6.6.0 |
| "emboss-lib" | ne serait pas inclus avec emboss depuis conda ? |
| "ncbi-blast+" | v2.17.0 |
| "bioperl" | v1.7.8 |
| "bioperl-run"? | 1.007003 (avec perl-bioperl-core v1.007002 ?) |
| "libdatetime-perl" | v1.66 |
| "libxml-simple-perl" | perl-xml-simple v2.25 ou perl-libxml-perl v0.08 |
| "libdigest-md5-perl" | v2.59 |
| cpanm Unix::Sysexits | cpanm ce sont des packages perl ... unix sysexits |
| cpanm Try::Tiny | |
| cpanm Test::Most | |
| cpanm JSON::Parse | |
| cpanm Class::Struct | |
| cpanm Bio::DB::Fasta | |
| cpanm File::Copy | |
| cpanm Bio::Seq Bio::SeqIO | |
| cpanm Bio::Tools::Run::Alignment::Muscle | |
| "vmatch 3.2.0" | v3.2.1 |
| "muscle" | muscle v5.3 |
| "prodigal" | v2.6.3 |
| "macSyFinder 1.0.5" | github pasteur v1.0.5 ou v2.1.6 |
- créer un dépôt conda d'un cpanm pour chacun des packages ? probablement trop coûteux + inclus dans un channel perso et non générique (bioconda ou autre)
- you can also install most Perl packages via conda. Replace the ':' by '-', lower-case everything, and add 'perl-' to the beginning. (cf. bioinformaticsonline blog) perl-bio-db-hts existe mais pas perl-bio-db-fasta ...
- ou faire comme pour les packages R mais avec cpanm : 1) inclure cpanm dans le pixi, 2) pixi shell 3) lancer cpanm 4) installer un par un les modules 5) fermer et relancer le pixi shell.
- using-cpanm-to-install-perl-modules-in-a-conda-environment