Ce projet est un assembleur de génome en C++ qui utilise des graphes de De Bruijn. Le rapport est disponible dans ./report/AssembleurAnnie.pdf.
- Raphaël Ribes
- Mickael Coquerelle
- Loïk Galtier
Le nom de l'exécutable, ramilass, est une combinaison des prénoms des auteurs (Raphaël, Mickael, Loïk) et du mot "Assembleur".
src/: Contient le code source de la librairie et de l'application.graphdbj.cpp/.h: Implémentation du graphe de De Bruijn.bitvector.cpp/.h: Implémentation d'un vecteur de bits.compare.cpp/.h: Fonctions de comparaison.convert.cpp/.h: Fonctions de conversion.main.cpp: Point d'entrée de l'applicationramilass.
tests/: Contient les tests unitaires.build/: Contient les fichiers de compilation et les exécutables.pixi.toml: Fichier de configuration pour l'environnement et les tâchespixi.CMakeLists.txt: Fichier de configuration pourCMake.
- C++17
- CMake
- GoogleTest
- ragtag
- minia
- quast
Ce projet utilise pixi pour gérer les dépendances et les tâches.
-
Installer pixi
curl -fsSL https://pixi.sh/install.sh | sh -
Installer les dépendances du projet
pixi install
-
Compiler le projet
pixi run build
Cela va créer les exécutables dans le dossier
build/.
Notre logiciel prend en entrée des fichiers FASTA et non pas FASTQ.
Nous utilisons donc une commande pixi run tofasta <input.fastq> <output.fasta> pour convertir les fichiers FASTQ en FASTA avant de les utiliser avec ramilass.
Par défaut, pixi run tofasta sans argument va convertir Tests_Et_Ref/reads.fastq.fq en /Tests_Et_Ref/reads.fasta.
██████╗ █████╗ ███╗ ███╗██╗██╗ █████╗ ███████╗███████╗
██╔══██╗██╔══██╗████╗ ████║██║██║ ██╔══██╗██╔════╝██╔════╝
██████╔╝███████║██╔████╔██║██║██║ ███████║███████╗███████╗
██╔══██╗██╔══██║██║╚██╔╝██║██║██║ ██╔══██║╚════██║╚════██║
██║ ██║██║ ██║██║ ╚═╝ ██║██║███████╗██║ ██║███████║███████║
╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝
Usage: ./build/ramilass <input.fasta> [output_dir] [OPTIONS]
Arguments:
<input.fasta> Fichier contenant les lectures (FASTA)
[output_dir] Dossier de sortie (Optionnel, defaut: .)
Options Generales:
-o, --out-name <str> Nom de base pour les fichiers de sortie
-k <int> Taille des k-mers (defaut: 31)
--fuse Activer l'etape de fusion des contigs (defaut: inactif)
--gfa Exporter le graphe au format GFA
--min-len <int> Taille minimale des contigs exportes (defaut: 62)
--debug Afficher les temps d'execution et infos detailles
Options de Fusion (--fuse):
--overlap-err <dbl> % d'erreur autorise pour chevauchement (defaut: 0.05)
--contained-err <dbl> % d'erreur autorise pour inclusion (defaut: 0.02)
--max-scan-depth <int> Profondeur scan extension (defaut: 5000)
--max-seed-depth <int> Profondeur recherche seed (defaut: 1500)
Options de l'Assembleur (GraphDBJ):
--simplification-passes <int> Nb max de passes de simplification (defaut: 50)
--popping-passes <int> Nb max de passes de suppression de tips/bulles (defaut: 1)
--cov-ratio <dbl> Ratio de couverture pour bifurcations (defaut: 1)
--tip-topo-ratio <dbl> Ratio couverture pour Tip Topologique (defaut: 2.5)
--tip-rctc-ratio <dbl> Ratio couverture pour Tip RCTC (defaut: 5)
--search-depth <dbl> Facteur de profondeur de recherche (defaut: 20)
--min-cov <int> Couverture min. pour garder un k-mer (defaut: 1)
--max-contig-len <int> Longueur max d'un contig genere (defaut: 1000000)
Pour lancer l'application principale :
pixi run ramilass <chemin_vers_fichier_fasta> <nom_fichier_sortie>Par exemple :
pixi run ramilass ./Tests_Et_Ref/reads.fasta contigs_outputPour avoir une execution complète, nous recommandons d'utiliser pixi run start qui revient a taper la commande complète :
./build/ramilass ./Tests_Et_Ref/reads.fasta ramilass --fuse --gfaNous fournissons une image apptainer/singularity pour exécuter l'assembleur dans un environnement isolé.
Pour construire cette image il faut en premier installer pixitainer qui permet de conteneuriser un environement pixi en image singularity/apptainer.
pixi global install -c https://prefix.dev/raphaelribes -c https://prefix.dev/conda-forge pixitainer
pixi run build
pixi containerize -o ramilass.sif --add-file "$(pwd)/build/ramilass:/opt/conf/build/ramilass" --seamless --no-installVous pouvez maintenant utiliser l'image ramilass.sif pour faire tourner l'assembleur.
apptainer run --bind $(pwd)/../.:$(pwd)/../. ramilass.sif start