Documentation ¶
Overview ¶
Package funcs provides functionality to apply mathematical functions to DataFrames.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrUndefined = errors.New("undefined")
ErrUndefined indicates that the PiecewiseFuncDefn's domain is not defined for a given row.
Functions ¶
func Evaluate ¶
func Evaluate(ctx context.Context, df *dataframe.DataFrame, fn PiecewiseFuncDefn, col interface{}, opts ...EvaluateOptions) error
Evaluate applies a PiecewiseFuncDefn to a particular Series in a DataFrame.
Example:
fn := funcs.RegFunc("sin((2*𝜋*x)/24)") funcs.Evaluate(ctx, df, fn, 1)
Types ¶
type EvaluateOptions ¶
type EvaluateOptions struct { // CustomFns adds custom functions to be used within fn. // // Example: // // CustomFns: map[string]func(args ...float64) float64{ // // Add sinc function: https://en.wikipedia.org/wiki/Sinc_function // "sinc": func(args ...float64) float64 { // if args[0] == 0 { // return 1 // } // return math.Sin(args[0]) / args[0] // } // } // CustomFns map[string]func(args ...float64) float64 // CustomConstants adds custom constants to be used within fn. // NOTE: π, 𝜋, pi, Φ, phi, e, E are already provided unless over-ridden here. // // Example: // // CustomConstants: map[string]float64{"ħ": 6.62607015E-34/(2*math.Pi)} CustomConstants map[string]float64 // DontLock can be set to true if the DataFrame should not be locked. DontLock bool // Range is used to limit which rows the PiecewiseFuncDefn gets applied to. Range *dataframe.Range // NoConcurrency is not yet implemented. NoConcurrency bool }
EvaluateOptions modifies the behavior of the Evaluate function.
type PiecewiseFuncDefn ¶
type PiecewiseFuncDefn []SubFuncDefn
PiecewiseFuncDefn represents a piecewise function. A piecewise function is a function that is defined on a sequence of intervals.
See: https://mathworld.wolfram.com/PiecewiseFunction.html
Example:
fn := []funcs.SubFunc{ { Fn: "sin(x)+2*y", Domain: &[]dataframe.Range{dataframe.RangeFinite(0, 2)}[0], }, { Fn: "0", Domain: nil, }, }
type SubFuncDefn ¶
type SubFuncDefn struct { // Fn is a string representing the function. Most functions from the math package that return a single float64 are supported. // The equivalent function name is all lower-cased. Therefore RoundToEven becomes roundtoeven. See https://golang.org/pkg/math/. // The variables used in Fn must correspond to the Series' names in the DataFrame. Custom functions and constants can be defined // and added using the options. // // Example: "sin(x)+2*y" // Fn string // Domain of Fn based on DataFrame's rows. Domain *dataframe.Range }
SubFuncDefn represents a subset of the piecewise function. PiecewiseFuncDefn consists of potentially numerous SubFuncDefn's over its relevant domain. The domain is defined based on the DataFrame's rows.
func RegFunc ¶
func RegFunc(fn string) []SubFuncDefn
RegFunc represents a regular function not split into different domain segments.