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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user