Operations

Operation classes

class CachedOpMeta[source]

Bases: type

Metaclass for caching op instance construction.

class Op(fn, *, name=None)[source]

Bases: multipledispatch.dispatcher.Dispatcher

classmethod subclass_register(*pattern)[source]
make_op(fn=None, parent=None, *, name=None, module_name='funsor.ops')[source]
declare_op_types(locals_, all_, name_)[source]
class UnaryOp(fn, *, name=None)[source]

Bases: funsor.ops.op.Op

class TransformOp(fn, *, name=None)[source]

Bases: funsor.ops.op.UnaryOp

set_inv(fn)[source]
Parameters:fn (callable) – A function that inputs an arg y and outputs a value x such that y=self(x).
set_log_abs_det_jacobian(fn)[source]
Parameters:fn (callable) – A function that inputs two args x, y, where y=self(x), and returns log(abs(det(dy/dx))).
static inv(x)[source]
static log_abs_det_jacobian(x, y)[source]

Builtin operations

abs = ops.abs
add = ops.add
and_ = ops.and_
atanh = ops.atanh
eq = ops.eq
exp = ops.exp
ge = ops.ge
getitem = ops.GetitemOp(0)

Op encoding an index into one dimension, e.g. x[:,:,y] for offset of 2.

gt = ops.gt
invert = ops.invert
le = ops.le
lgamma = ops.lgamma
log = ops.log
log1p = ops.log1p
lt = ops.lt
matmul = ops.matmul
max = ops.max
min = ops.min
mul = ops.mul
ne = ops.ne
neg = ops.neg
nullop = ops.nullop

Placeholder associative op that unifies with any other op

or_ = ops.or_
pow = ops.pow
reciprocal = ops.reciprocal
safediv = ops.safediv
safesub = ops.safesub
sigmoid = ops.sigmoid
sqrt = ops.sqrt
sub = ops.sub
tanh = ops.tanh
truediv = ops.truediv
xor = ops.xor
class AssociativeOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class NullOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

Placeholder associative op that unifies with any other op

class GetitemOp(offset)

Bases: funsor.ops.op.Op

Op encoding an index into one dimension, e.g. x[:,:,y] for offset of 2.

class AbsOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class AddOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class AndOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class AtanhOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class EqOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class ExpOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class GeOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class GtOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class InvertOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class LeOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class LgammaOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class Log1pOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class LogOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class LtOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class MatmulOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class MaxOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class MinOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class MulOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class NeOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class NegOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class Op(fn, *, name=None)[source]

Bases: multipledispatch.dispatcher.Dispatcher

classmethod subclass_register(*pattern)[source]
class OrOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class PowOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class ReciprocalOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class SafedivOp(fn, *, name=None)

Bases: funsor.ops.TruedivOp

class SafesubOp(fn, *, name=None)

Bases: funsor.ops.SubOp

class SigmoidOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class SoftplusOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class SqrtOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class SubOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class TanhOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class TransformOp(fn, *, name=None)[source]

Bases: funsor.ops.op.UnaryOp

set_inv(fn)[source]
Parameters:fn (callable) – A function that inputs an arg y and outputs a value x such that y=self(x).
set_log_abs_det_jacobian(fn)[source]
Parameters:fn (callable) – A function that inputs two args x, y, where y=self(x), and returns log(abs(det(dy/dx))).
static inv(x)[source]
static log_abs_det_jacobian(x, y)[source]
class TruedivOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class UnaryOp(fn, *, name=None)[source]

Bases: funsor.ops.op.Op

class XorOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

Array operations

all = ops.all
amax = ops.amax
amin = ops.amin
any = ops.any
astype = ops.astype
cat = ops.cat
cholesky = ops.cholesky
cholesky_inverse = ops.cholesky_inverse
cholesky_solve = ops.cholesky_solve
clamp = ops.clamp
detach = ops.detach
diagonal = ops.diagonal
einsum = ops.einsum
expand = ops.expand
finfo = ops.finfo
full_like = ops.full_like
is_numeric_array = ops.is_numeric_array
isnan = ops.isnan
logaddexp = ops.logaddexp
logsumexp = ops.logsumexp
new_arange = ops.new_arange
new_eye = ops.new_eye
new_zeros = ops.new_zeros
permute = ops.permute
prod = ops.prod
sample = ops.sample
stack = ops.stack
sum = ops.sum
transpose = ops.transpose
triangular_solve = ops.triangular_solve
unsqueeze = ops.unsqueeze
class ReshapeOp(shape)

Bases: funsor.ops.op.Op

class AddOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class AllOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class AmaxOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class AminOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class AnyOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class AssociativeOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class AstypeOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class AtanhOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class CatOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class ClampOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class DiagonalOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class EinsumOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class ExpOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class Full_likeOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class IsnanOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class Log1pOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class LogOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class LogaddexpOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class MaxOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class MinOp(fn, *, name=None)

Bases: funsor.ops.AssociativeOp

class Op(fn, *, name=None)[source]

Bases: multipledispatch.dispatcher.Dispatcher

classmethod subclass_register(*pattern)[source]
class ProdOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class ReciprocalOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class SafedivOp(fn, *, name=None)

Bases: funsor.ops.TruedivOp

class SafesubOp(fn, *, name=None)

Bases: funsor.ops.SubOp

class SampleOp(fn, *, name=None)

Bases: funsor.ops.LogaddexpOp

class SqrtOp(fn, *, name=None)

Bases: funsor.ops.op.UnaryOp

class StackOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class SumOp(fn, *, name=None)

Bases: funsor.ops.op.Op

class TanhOp(fn, *, name=None)

Bases: funsor.ops.op.TransformOp

class TransposeOp(fn, *, name=None)

Bases: funsor.ops.op.Op