func AggIdx(ix *etable.IdxView, colIdx int, ag Aggs) []float64 {
	switch ag {
	case AggCount:
		return CountIdx(ix, colIdx)
	case AggSum:
		return SumIdx(ix, colIdx)
	case AggProd:
		return ProdIdx(ix, colIdx)
	case AggMin:
		return MinIdx(ix, colIdx)
	case AggMax:
		return MaxIdx(ix, colIdx)
	case AggMean:
		return MeanIdx(ix, colIdx)
	case AggVar:
		return VarIdx(ix, colIdx)
	case AggStd:
		return StdIdx(ix, colIdx)
	case AggSem:
		return SemIdx(ix, colIdx)
	case AggVarPop:
		return VarPopIdx(ix, colIdx)
	case AggStdPop:
		return StdPopIdx(ix, colIdx)
	case AggSemPop:
		return SemPopIdx(ix, colIdx)
	case AggQ1:
		return Q1Idx(ix, colIdx)
	case AggMedian:
		return MedianIdx(ix, colIdx)
	case AggQ3:
		return Q3Idx(ix, colIdx)
	case AggSumSq:
		return SumSqIdx(ix, colIdx)
	}
	return nil
}
AggIdx returns aggregate according to given agg type applied
to all non-Null, non-NaN elements in given IdxView indexed view of
an etable.Table, for given column index.
valid names are: Count, Sum, Var, Std, Sem, VarPop, StdPop, SemPop,
Min, Max, SumSq, 25%, 1Q, Median, 50%, 2Q, 75%, 3Q (case insensitive)
Return value is size of each column cell -- 1 for scalar 1D columns
and N for higher-dimensional columns.
package agg
import (
	"fmt"
	"strings"
	"github.com/emer/etable/etable"
	"github.com/goki/ki/kit"
)
type Aggs int
const (
	AggCount Aggs = iota
	AggSum
	AggProd
	AggMin
	AggMax
	AggMean
	AggVar
	AggStd
	AggSem
	AggVarPop
	AggStdPop
	AggSemPop
	AggMedian
	AggQ1
	AggQ3
	AggSumSq
	AggsN
)
var KiT_Aggs = kit.Enums.AddEnum(AggsN, kit.NotBitFlag, nil)
func (ev Aggs) MarshalJSON() ([]byte, error)  { return kit.EnumMarshalJSON(ev) }
func (ev *Aggs) UnmarshalJSON(b []byte) error { return kit.EnumUnmarshalJSON(ev, b) }
func AggsName(ag Aggs) string {
	return strings.TrimPrefix(ag.String(), "Agg")
}