nd2py.core.calc package

Contents

nd2py.core.calc package#

The implementation of calculation functionality of Symbol, including: - NumpyCalc: Calculate the value of a Symbol tree using numpy. - TorchCalc: Calculate the value of a Symbol tree using torch.

Submodules#

nd2py.core.calc.numpy_calc module#

nd2py.core.calc.numpy_calc.unpack_operands()[source]#
class nd2py.core.calc.numpy_calc.NumpyCalc[source]#

Bases: Visitor

generic_visit(node: Symbol, *args, **kwargs)[source]#
visit_Empty(node: Empty, *args, **kwargs)[source]#
visit_Number(node: Number, *args, **kwargs)[source]#
visit_Variable(node: Variable, *args, **kwargs)[source]#
visit_Add(node: Add, x1, x2, *args, **kwargs)[source]#
visit_Sub(node: Sub, x1, x2, *args, **kwargs)[source]#
visit_Mul(node: Mul, x1, x2, *args, **kwargs)[source]#
visit_Div(node: Div, x1, x2, *args, **kwargs)[source]#
visit_Pow(node: Pow, x1, x2, *args, **kwargs)[source]#
visit_Max(node: Max, x1, x2, *args, **kwargs)[source]#
visit_Min(node: Min, x1, x2, *args, **kwargs)[source]#
visit_Identity(node: Identity, x, *args, **kwargs)[source]#
visit_Sin(node: Sin, x, *args, **kwargs)[source]#
visit_Cos(node: Cos, x, *args, **kwargs)[source]#
visit_Tan(node: Tan, x, *args, **kwargs)[source]#
visit_Sec(node: Sec, x, *args, **kwargs)[source]#
visit_Csc(node: Csc, x, *args, **kwargs)[source]#
visit_Cot(node: Cot, x, *args, **kwargs)[source]#
visit_Log(node: Log, x, *args, **kwargs)[source]#
visit_LogAbs(node: LogAbs, x, *args, **kwargs)[source]#
visit_Exp(node: Exp, x, *args, **kwargs)[source]#
visit_Abs(node: Abs, x, *args, **kwargs)[source]#
visit_Neg(node: Neg, x, *args, **kwargs)[source]#
visit_Inv(node: Inv, x, *args, **kwargs)[source]#
visit_Sqrt(node: Sqrt, x, *args, **kwargs)[source]#
visit_SqrtAbs(node: SqrtAbs, x, *args, **kwargs)[source]#
visit_Pow2(node: Pow2, x, *args, **kwargs)[source]#
visit_Pow3(node: Pow3, x, *args, **kwargs)[source]#
visit_Arcsin(node: Arcsin, x, *args, **kwargs)[source]#
visit_Arccos(node: Arccos, x, *args, **kwargs)[source]#
visit_Arctan(node: Arctan, x, *args, **kwargs)[source]#
visit_Sinh(node: Sinh, x, *args, **kwargs)[source]#
visit_Cosh(node: Cosh, x, *args, **kwargs)[source]#
visit_Tanh(node: Tanh, x, *args, **kwargs)[source]#
visit_Sech(node: Sech, x, *args, **kwargs)[source]#
visit_Csch(node: Csch, x, *args, **kwargs)[source]#
visit_Coth(node: Coth, x, *args, **kwargs)[source]#
visit_Sigmoid(node: Sigmoid, x, *args, **kwargs)[source]#
visit_Regular(node: Regular, x1, x2, *args, **kwargs)[source]#
visit_Sour(node: Sour, x, *args, **kwargs)[source]#

(, n_nodes or 1) -> (, n_edges or 1)

visit_Targ(node: Targ, x, *args, **kwargs)[source]#

(, n_nodes or 1) -> (, n_edges or 1)

visit_Aggr(node: Aggr, x, *args, **kwargs)[source]#

(, n_edges or 1) -> (, n_nodes)

visit_Rgga(node: Rgga, x, *args, **kwargs)[source]#

(, n_edges or 1) -> (, n_nodes)

visit_Readout(node: Readout, x, *args, **kwargs)[source]#

(, n_nodes or n_edges or 1) -> (, 1)

nd2py.core.calc.torch_calc module#

nd2py.core.calc.torch_calc.unpack_operands(mask_out_nan=False, double_check_nan=False, fill_nan_input=1.0, fill_nan_output=torch.nan)[source]#

Decorator to unpack operands of a node and apply a function to them. :param mask_out_nan: whether to replace NaN values in the input with fill_nan_input :param double_check_nan: whether to calculate the output for invalid inputs. Set to True can lead to performance degradation, but helps with operations like Div and Inv which map Non-nan to nan. :param fill_nan_input: value to replace NaN values in the input This can be any value as long as ‘func’ does not map it to nan. :param fill_nan_output: value to replace NaN values in the output

class nd2py.core.calc.torch_calc.TorchCalc[source]#

Bases: Visitor

generic_visit(node: Symbol, *args, **kwargs)[source]#
visit_Empty(node: Empty, *args, **kwargs)[source]#
visit_Number(node: Number, *args, **kwargs)[source]#
visit_Variable(node: Variable, *args, **kwargs)[source]#
visit_Add(node: Add, x1, x2, *args, **kwargs)[source]#
visit_Sub(node: Sub, x1, x2, *args, **kwargs)[source]#
visit_Mul(node: Mul, x1, x2, *args, **kwargs)[source]#
visit_Div(node: Div, x1, x2, *args, **kwargs)[source]#
visit_Pow(node: Pow, x1, x2, *args, **kwargs)[source]#
visit_Max(node: Max, x1, x2, *args, **kwargs)[source]#
visit_Min(node: Min, x1, x2, *args, **kwargs)[source]#
visit_Sin(node: Sin, x, *args, **kwargs)[source]#
visit_Cos(node: Cos, x, *args, **kwargs)[source]#
visit_Tan(node: Tan, x, *args, **kwargs)[source]#
visit_Sec(node: Sec, x, *args, **kwargs)[source]#
visit_Csc(node: Csc, x, *args, **kwargs)[source]#
visit_Cot(node: Cot, x, *args, **kwargs)[source]#
visit_Log(node: Log, x, *args, **kwargs)[source]#
visit_LogAbs(node: LogAbs, x, *args, **kwargs)[source]#
visit_Exp(node: Exp, x, *args, **kwargs)[source]#
visit_Abs(node: Abs, x, *args, **kwargs)[source]#
visit_Neg(node: Neg, x, *args, **kwargs)[source]#
visit_Inv(node: Inv, x, *args, **kwargs)[source]#
visit_Sqrt(node: Sqrt, x, *args, **kwargs)[source]#
visit_SqrtAbs(node: SqrtAbs, x, *args, **kwargs)[source]#
visit_Pow2(node: Pow2, x, *args, **kwargs)[source]#
visit_Pow3(node: Pow3, x, *args, **kwargs)[source]#
visit_Arcsin(node: Arcsin, x, *args, **kwargs)[source]#
visit_Arccos(node: Arccos, x, *args, **kwargs)[source]#
visit_Arctan(node: Arctan, x, *args, **kwargs)[source]#
visit_Sinh(node: Sinh, x, *args, **kwargs)[source]#
visit_Cosh(node: Cosh, x, *args, **kwargs)[source]#
visit_Tanh(node: Tanh, x, *args, **kwargs)[source]#
visit_Sech(node: Sech, x, *args, **kwargs)[source]#
visit_Csch(node: Csch, x, *args, **kwargs)[source]#
visit_Coth(node: Coth, x, *args, **kwargs)[source]#
visit_Sigmoid(node: Sigmoid, x, *args, **kwargs)[source]#
visit_Regular(node: Regular, x1, x2, *args, **kwargs)[source]#
visit_Sour(node: Sour, x, *args, **kwargs)[source]#

(, n_nodes or 1) -> (, n_edges or 1)

visit_Targ(node: Targ, x, *args, **kwargs)[source]#

(, n_nodes or 1) -> (, n_edges or 1)

visit_Aggr(node: Aggr, x, *args, **kwargs)[source]#

(, n_edges or 1) -> (, n_nodes)

visit_Rgga(node: Rgga, x, *args, **kwargs)[source]#

(, n_edges or 1) -> (, n_nodes)

visit_Readout(node: Readout, x, *args, **kwargs)[source]#

(, n_nodes or n_edges or 1) -> (, 1)