mirror of
https://github.com/metabarcoding/obitools4.git
synced 2026-02-03 06:40:33 +00:00
Implémentation du filtrage unique basé sur séquence et catégories
Ajout d'une fonctionnalité pour le filtrage unique qui prend en compte à la fois la séquence et les catégories. - Modification de la fonction ISequenceChunk pour accepter un classifieur unique optionnel - Implémentation du traitement unique sur disque en utilisant un classifieur composite - Mise à jour du classifieur utilisé pour le tri sur disque - Correction de la gestion des clés de unicité en utilisant le code et la valeur du classifieur - Mise à jour du numéro de commit
This commit is contained in:
@@ -78,6 +78,7 @@ func ISequenceChunkOnDisk(iterator obiiter.IBioSequence,
|
||||
dereplicate bool,
|
||||
na string,
|
||||
statsOn obiseq.StatsOnDescriptions,
|
||||
uniqueClassifier *obiseq.BioSequenceClassifier,
|
||||
) (obiiter.IBioSequence, error) {
|
||||
obiutils.RegisterAPipe()
|
||||
dir, err := tempDir()
|
||||
@@ -120,18 +121,21 @@ func ISequenceChunkOnDisk(iterator obiiter.IBioSequence,
|
||||
if dereplicate {
|
||||
u := make(map[string]*obiseq.BioSequence)
|
||||
var source string
|
||||
uniqueClassifier.Reset()
|
||||
|
||||
for iseq.Next() {
|
||||
batch := iseq.Get()
|
||||
source = batch.Source()
|
||||
|
||||
for _, seq := range batch.Slice() {
|
||||
sstring := seq.String()
|
||||
prev, ok := u[sstring]
|
||||
// Use composite key: sequence + categories
|
||||
code := uniqueClassifier.Code(seq)
|
||||
key := uniqueClassifier.Value(code)
|
||||
prev, ok := u[key]
|
||||
if ok {
|
||||
prev.Merge(seq, na, true, statsOn)
|
||||
} else {
|
||||
u[sstring] = seq
|
||||
u[key] = seq
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user