feat: add merge operation specs and partition progress bar

Added implementation specifications for the `merge` operation, detailing parallel partition processing, I/O paths, and kmer matrix aggregation across multiple indexes. Integrated an `indicatif` progress bar into the `rayon` parallel loop to monitor processing position, throughput, ETA, and recent partition duration.
This commit is contained in:
Eric Coissac
2026-05-20 21:18:19 +02:00
parent 7d1b62ddf3
commit bfa436ad15
2 changed files with 27 additions and 1 deletions
+11
View File
@@ -11,6 +11,17 @@
- merge : pour construire un index à partir d'index existants
- deux modes : count et presence/absence. count exige que tous les index mergés soient déjà en mode count. mode presence/absence par defaut. Si passage de mode count à mode presence/absence, par defaut presence = count >= 1. Possibilité de spécifier un seuil personnalisé.
- le merge doit se faire en parallèle sur chaque partition
- en entrée : une liste de chemins vers les index à fusionner
- en sortie : un nouvel index fusionné (option -o <output_index>)
- j'imagine comme algo:
- on copie le premier index dans le nouvel index
- on ajoute a chaque partition une matrice de count ou de presence s'il n'y en avait pas déjà.
- si besoin, on cree la colone 0 de la matrice de count ou de presence pour le genome courant
- on parcourt les partitions et les index à fusionner en parallèle
- pour chaque partition, on ajoute les kmer présents dans les index à fusionner au nouvel index
- si le kmer est déjà présent dans le nouvel index on ajoute le compte ou la presence du kmer dans la matrice de count ou de presence
- sinon, on ajoute le kmer dans une nouvelle layer
- filter : produit un nouvel index filtré à partir d'un index existant en verifiant que les kmer présents dans le nouvel index respectent les critères de filtrage spécifiés
- quorum de presence en fraction-(min/max) du nombre de génomes, en nombre-(min/max) de génomes, si mode count la présence peut être défini par un seuil personnalisé minimum et maximum