mirror of
https://github.com/metabarcoding/obitools4.git
synced 2025-06-29 16:20:46 +00:00
Patch the Min and Max values of the expression language
This commit is contained in:
@ -8,7 +8,7 @@ import (
|
|||||||
// corresponds to the last commit, and not the one when the file will be
|
// corresponds to the last commit, and not the one when the file will be
|
||||||
// commited
|
// commited
|
||||||
|
|
||||||
var _Commit = "8a2bb1f"
|
var _Commit = "9965370"
|
||||||
var _Version = "Release 4.4.0"
|
var _Version = "Release 4.4.0"
|
||||||
|
|
||||||
// Version returns the version of the obitools package.
|
// Version returns the version of the obitools package.
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
|
||||||
"github.com/goccy/go-json"
|
"github.com/goccy/go-json"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
@ -109,6 +110,24 @@ func (sov *StatsOnValues) Map() map[string]int {
|
|||||||
return sov.counts
|
return sov.counts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (sov *StatsOnValues) Max() int {
|
||||||
|
data, err := obiutils.Max(sov.counts)
|
||||||
|
if err != nil {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
return data.(int)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sov *StatsOnValues) Min() int {
|
||||||
|
data, err := obiutils.Min(sov.counts)
|
||||||
|
if err != nil {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
return data.(int)
|
||||||
|
}
|
||||||
|
|
||||||
func (sov *StatsOnValues) Set(key string, value int) {
|
func (sov *StatsOnValues) Set(key string, value int) {
|
||||||
if sov == nil {
|
if sov == nil {
|
||||||
return
|
return
|
||||||
|
@ -78,6 +78,12 @@ func MinMap[K comparable, T constraints.Ordered](values map[K]T) (K, T, error) {
|
|||||||
// Returns an error if the container is empty or the type is unsupported.
|
// Returns an error if the container is empty or the type is unsupported.
|
||||||
func Min(data interface{}) (interface{}, error) {
|
func Min(data interface{}) (interface{}, error) {
|
||||||
v := reflect.ValueOf(data)
|
v := reflect.ValueOf(data)
|
||||||
|
method := v.MethodByName("Min")
|
||||||
|
if method.IsValid() {
|
||||||
|
result := method.Call(nil)[0].Interface()
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
switch v.Kind() {
|
switch v.Kind() {
|
||||||
case reflect.Slice, reflect.Array:
|
case reflect.Slice, reflect.Array:
|
||||||
if v.Len() == 0 {
|
if v.Len() == 0 {
|
||||||
@ -103,6 +109,13 @@ func Min(data interface{}) (interface{}, error) {
|
|||||||
// Returns an error if the container is empty or the type is unsupported.
|
// Returns an error if the container is empty or the type is unsupported.
|
||||||
func Max(data interface{}) (interface{}, error) {
|
func Max(data interface{}) (interface{}, error) {
|
||||||
v := reflect.ValueOf(data)
|
v := reflect.ValueOf(data)
|
||||||
|
|
||||||
|
method := v.MethodByName("Max")
|
||||||
|
if method.IsValid() {
|
||||||
|
result := method.Call(nil)[0].Interface()
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
switch v.Kind() {
|
switch v.Kind() {
|
||||||
case reflect.Slice, reflect.Array:
|
case reflect.Slice, reflect.Array:
|
||||||
if v.Len() == 0 {
|
if v.Len() == 0 {
|
||||||
|
Reference in New Issue
Block a user