mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package obifind
|
|
|
|
import (
|
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obidefault"
|
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
|
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
|
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicsv"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func CLITaxonRestrictions(iterator *obitax.ITaxon) *obitax.ITaxon {
|
|
|
|
if iterator == nil {
|
|
return nil
|
|
}
|
|
|
|
clades, err := CLITaxonomicalRestrictions()
|
|
|
|
if err != nil {
|
|
log.Errorf("Error on taxonomy restriction: %v", err)
|
|
return nil
|
|
}
|
|
|
|
iterator = CLIFilterRankRestriction(iterator.Split().IFilterBelongingSubclades(clades))
|
|
return iterator
|
|
}
|
|
|
|
func CLIFilterRankRestriction(iterator *obitax.ITaxon) *obitax.ITaxon {
|
|
if iterator == nil {
|
|
return nil
|
|
}
|
|
|
|
rr := CLIRankRestriction()
|
|
|
|
if rr != "" {
|
|
iterator = iterator.IFilterOnTaxRank(rr)
|
|
}
|
|
|
|
return iterator
|
|
}
|
|
|
|
func CLICSVTaxaIterator(iterator *obitax.ITaxon) *obiiter.ICSVRecord {
|
|
if iterator == nil {
|
|
return nil
|
|
}
|
|
|
|
options := make([]WithOption, 0)
|
|
|
|
options = append(options,
|
|
OptionsWithPattern(CLIWithQuery()),
|
|
OptionsWithParent(CLIWithParent()),
|
|
OptionsWithRank(CLIWithRank()),
|
|
OptionsWithScientificName(CLIWithScientificName()),
|
|
OptionsWithPath(CLIWithPath()),
|
|
OptionsRawTaxid(CLIRawTaxid()),
|
|
OptionsSource(obidefault.SelectedTaxonomy()),
|
|
)
|
|
|
|
return NewCSVTaxaIterator(iterator, options...)
|
|
}
|
|
|
|
func CLICSVTaxaWriter(iterator *obitax.ITaxon, terminalAction bool) *obiiter.ICSVRecord {
|
|
return obicsv.CLICSVWriter(CLICSVTaxaIterator(iterator), terminalAction)
|
|
}
|