mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
Add a --valid-taxid option to obigrep
This commit is contained in:
@ -6,6 +6,7 @@ import (
|
|||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat"
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiapat"
|
||||||
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obidefault"
|
||||||
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
|
||||||
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax"
|
||||||
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
|
||||||
@ -16,6 +17,7 @@ import (
|
|||||||
var _BelongTaxa = make([]string, 0)
|
var _BelongTaxa = make([]string, 0)
|
||||||
var _NotBelongTaxa = make([]string, 0)
|
var _NotBelongTaxa = make([]string, 0)
|
||||||
var _RequiredRanks = make([]string, 0)
|
var _RequiredRanks = make([]string, 0)
|
||||||
|
var _ValidateTaxonomy = false
|
||||||
|
|
||||||
var _MinimumLength = 1
|
var _MinimumLength = 1
|
||||||
var _MaximumLength = int(2e9)
|
var _MaximumLength = int(2e9)
|
||||||
@ -62,6 +64,9 @@ func TaxonomySelectionOptionSet(options *getoptions.GetOpt) {
|
|||||||
options.ArgName("RANK_NAME"),
|
options.ArgName("RANK_NAME"),
|
||||||
options.Description("Select sequences belonging a taxon with a rank <RANK_NAME>"))
|
options.Description("Select sequences belonging a taxon with a rank <RANK_NAME>"))
|
||||||
|
|
||||||
|
options.BoolVar(&_ValidateTaxonomy, "valid-taxid", _ValidateTaxonomy,
|
||||||
|
options.Description("Validate the taxonomic classification of the sequences."))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func SequenceSelectionOptionSet(options *getoptions.GetOpt) {
|
func SequenceSelectionOptionSet(options *getoptions.GetOpt) {
|
||||||
@ -271,6 +276,27 @@ func CLIRestrictTaxonomyPredicate() obiseq.SequencePredicate {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CLIIsValidTaxonomyPredicate() obiseq.SequencePredicate {
|
||||||
|
if _ValidateTaxonomy {
|
||||||
|
if !obidefault.HasSelectedTaxonomy() {
|
||||||
|
log.Fatal("Taxonomy not found")
|
||||||
|
}
|
||||||
|
taxonomy := obitax.DefaultTaxonomy()
|
||||||
|
if taxonomy == nil {
|
||||||
|
log.Fatal("Taxonomy not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
predicat := func(sequences *obiseq.BioSequence) bool {
|
||||||
|
taxon := sequences.Taxon(taxonomy)
|
||||||
|
return taxon != nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return predicat
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func CLIAvoidTaxonomyPredicate() obiseq.SequencePredicate {
|
func CLIAvoidTaxonomyPredicate() obiseq.SequencePredicate {
|
||||||
var p obiseq.SequencePredicate
|
var p obiseq.SequencePredicate
|
||||||
var p2 obiseq.SequencePredicate
|
var p2 obiseq.SequencePredicate
|
||||||
@ -319,7 +345,7 @@ func CLIHasRankDefinedPredicate() obiseq.SequencePredicate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CLITaxonomyFilterPredicate() obiseq.SequencePredicate {
|
func CLITaxonomyFilterPredicate() obiseq.SequencePredicate {
|
||||||
return CLIHasRankDefinedPredicate().And(CLIRestrictTaxonomyPredicate()).And(CLIAvoidTaxonomyPredicate())
|
return CLIIsValidTaxonomyPredicate().And(CLIAvoidTaxonomyPredicate()).And(CLIHasRankDefinedPredicate()).And(CLIRestrictTaxonomyPredicate())
|
||||||
}
|
}
|
||||||
|
|
||||||
func CLIPredicatesPredicate() obiseq.SequencePredicate {
|
func CLIPredicatesPredicate() obiseq.SequencePredicate {
|
||||||
|
Reference in New Issue
Block a user