Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RaMiLASS

Pixi Badge

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.

Auteurs

  • 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".

Structure du projet

workflow

  • 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'application ramilass.
  • 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âches pixi.
  • CMakeLists.txt: Fichier de configuration pour CMake.

Dépendances

  • C++17
  • CMake
  • GoogleTest
  • ragtag
  • minia
  • quast

1. Installation et Compilation

Ce projet utilise pixi pour gérer les dépendances et les tâches.

  1. Installer pixi

    curl -fsSL https://pixi.sh/install.sh | sh
  2. Installer les dépendances du projet

    pixi install
  3. Compiler le projet

    pixi run build

    Cela va créer les exécutables dans le dossier build/.

2. Prétraitement

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.

3. Exécuter l'application

██████╗  █████╗ ███╗   ███╗██╗██╗      █████╗ ███████╗███████╗
██╔══██╗██╔══██╗████╗ ████║██║██║     ██╔══██╗██╔════╝██╔════╝
██████╔╝███████║██╔████╔██║██║██║     ███████║███████╗███████╗
██╔══██╗██╔══██║██║╚██╔╝██║██║██║     ██╔══██║╚════██║╚════██║
██║  ██║██║  ██║██║ ╚═╝ ██║██║███████╗██║  ██║███████║███████║
╚═╝  ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═╝╚══════╝╚═╝  ╚═╝╚══════╝╚══════╝

    
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_output

Pour 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 --gfa

BONUS: Image singularity/apptainer

Nous 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-install

Vous pouvez maintenant utiliser l'image ramilass.sif pour faire tourner l'assembleur.

apptainer run --bind $(pwd)/../.:$(pwd)/../. ramilass.sif start

Releases

Packages

Contributors

Languages