mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
patch multiple -Z options
This commit is contained in:
@ -1,11 +1,14 @@
|
||||
package obitax
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obidefault"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
var __defaut_taxonomy__ *Taxonomy
|
||||
var __defaut_taxonomy_mutex__ sync.Mutex
|
||||
|
||||
func (taxonomy *Taxonomy) SetAsDefault() {
|
||||
log.Infof("Set as default taxonomy %s", taxonomy.Name())
|
||||
@ -32,14 +35,18 @@ func DefaultTaxonomy() *Taxonomy {
|
||||
var err error
|
||||
if __defaut_taxonomy__ == nil {
|
||||
if obidefault.HasSelectedTaxonomy() {
|
||||
__defaut_taxonomy__, err = LoadTaxonomy(
|
||||
obidefault.SelectedTaxonomy(),
|
||||
!obidefault.AreAlternativeNamesSelected(),
|
||||
)
|
||||
__defaut_taxonomy_mutex__.Lock()
|
||||
defer __defaut_taxonomy_mutex__.Unlock()
|
||||
if __defaut_taxonomy__ == nil {
|
||||
__defaut_taxonomy__, err = LoadTaxonomy(
|
||||
obidefault.SelectedTaxonomy(),
|
||||
!obidefault.AreAlternativeNamesSelected(),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("Cannot load default taxonomy: %v", err)
|
||||
if err != nil {
|
||||
log.Fatalf("Cannot load default taxonomy: %v", err)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -196,3 +196,29 @@ func (set *TaxonSet) Contains(id *string) bool {
|
||||
node := set.Get(id)
|
||||
return node != nil
|
||||
}
|
||||
|
||||
func (set *TaxonSet) Sort() *TaxonSlice {
|
||||
if set == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
taxonomy := set.Taxonomy()
|
||||
taxa := taxonomy.NewTaxonSlice(0, set.Len())
|
||||
parent := make(map[*TaxNode]bool, set.Len())
|
||||
|
||||
pushed := true
|
||||
|
||||
for pushed {
|
||||
pushed = false
|
||||
for _, node := range set.set {
|
||||
if !parent[node] && (parent[set.Get(node.parent).Node] ||
|
||||
!set.Contains(node.parent)) {
|
||||
pushed = true
|
||||
taxa.slice = append(taxa.slice, node)
|
||||
parent[node] = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return taxa
|
||||
}
|
||||
|
Reference in New Issue
Block a user