diff --git a/src/distPlus/distribution/Mixed.re b/src/distPlus/distribution/Mixed.re index 947c5b22..75fafb45 100644 --- a/src/distPlus/distribution/Mixed.re +++ b/src/distPlus/distribution/Mixed.re @@ -231,7 +231,7 @@ module T = Continuous.T.Integral.sum(~cache=None, continuous); let totalIntegralSum = discreteIntegralSum +. continuousIntegralSum; - let getMeanOfSquares = ({discrete, continuous} as t: t) => { + let getMeanOfSquares = ({discrete, continuous}: t) => { let discreteMean = discrete |> Discrete.shapeMap(XYShape.Analysis.squareXYShape) diff --git a/src/distPlus/expressionTree/MathJsParser.re b/src/distPlus/expressionTree/MathJsParser.re index 4a63ef62..bfc2e42a 100644 --- a/src/distPlus/expressionTree/MathJsParser.re +++ b/src/distPlus/expressionTree/MathJsParser.re @@ -204,32 +204,32 @@ module MathAdtToDistDst = { }; }; - let arrayParser = - (args: array(arg)) - : result(ExpressionTypes.ExpressionTree.node, string) => { - let samples = - args - |> E.A.fmap( - fun - | Value(n) => Some(n) - | _ => None, - ) - |> E.A.O.concatSomes; - let outputs = Samples.T.fromSamples(samples); - let pdf = - outputs.shape |> E.O.bind(_, Shape.T.toContinuous); - let shape = - pdf - |> E.O.fmap(pdf => { - let _pdf = Continuous.T.normalize(pdf); - let cdf = Continuous.T.integral(~cache=None, _pdf); - SymbolicDist.ContinuousShape.make(_pdf, cdf); - }); - switch (shape) { - | Some(s) => Ok(`SymbolicDist(`ContinuousShape(s))) - | None => Error("Rendering did not work") - }; - }; + // let arrayParser = + // (args: array(arg)) + // : result(ExpressionTypes.ExpressionTree.node, string) => { + // let samples = + // args + // |> E.A.fmap( + // fun + // | Value(n) => Some(n) + // | _ => None, + // ) + // |> E.A.O.concatSomes; + // let outputs = Samples.T.fromSamples(samples); + // let pdf = + // outputs.shape |> E.O.bind(_, Shape.T.toContinuous); + // let shape = + // pdf + // |> E.O.fmap(pdf => { + // let _pdf = Continuous.T.normalize(pdf); + // let cdf = Continuous.T.integral(~cache=None, _pdf); + // SymbolicDist.ContinuousShape.make(_pdf, cdf); + // }); + // switch (shape) { + // | Some(s) => Ok(`SymbolicDist(`ContinuousShape(s))) + // | None => Error("Rendering did not work") + // }; + // }; let operationParser = ( @@ -335,9 +335,9 @@ module MathAdtToDistDst = { let topLevel = fun - | Array(r) => arrayParser(r) | Value(_) as r => nodeParser(r) | Fn(_) as r => nodeParser(r) + | Array(_) => Error("Array not valid as top level") | Symbol(_) => Error("Symbol not valid as top level") | Object(_) => Error("Object not valid as top level"); diff --git a/src/distPlus/symbolic/SymbolicDist.re b/src/distPlus/symbolic/SymbolicDist.re index 8126119f..4f01dbd9 100644 --- a/src/distPlus/symbolic/SymbolicDist.re +++ b/src/distPlus/symbolic/SymbolicDist.re @@ -1,20 +1,5 @@ open SymbolicTypes; -module ContinuousShape = { - type t = continuousShape; - let make = (pdf, cdf): t => {pdf, cdf}; - let pdf = (x, t: t) => - Continuous.T.xToY(x, t.pdf).continuous; - // TODO: pdf and inv are currently the same, this seems broken. - let inv = (p, t: t) => - Continuous.T.xToY(p, t.pdf).continuous; - // TODO: Fix the sampling, to have it work correctly. - let sample = (t: t) => 3.0; - // TODO: Fix the mean, to have it work correctly. - let mean = (t: t) => Ok(0.0); - let toString = t => {j|CustomContinuousShape|j}; -}; - module Exponential = { type t = exponential; let pdf = (x, t: t) => Jstat.exponential##pdf(x, t.rate); @@ -170,7 +155,6 @@ module T = { | `Uniform(n) => Uniform.pdf(x, n) | `Beta(n) => Beta.pdf(x, n) | `Float(n) => Float.pdf(x, n) - | `ContinuousShape(n) => ContinuousShape.pdf(x, n) }; let inv = (x, dist) => @@ -183,7 +167,6 @@ module T = { | `Uniform(n) => Uniform.inv(x, n) | `Beta(n) => Beta.inv(x, n) | `Float(n) => Float.inv(x, n) - | `ContinuousShape(n) => ContinuousShape.inv(x, n) }; let sample: symbolicDist => float = @@ -196,7 +179,6 @@ module T = { | `Uniform(n) => Uniform.sample(n) | `Beta(n) => Beta.sample(n) | `Float(n) => Float.sample(n) - | `ContinuousShape(n) => ContinuousShape.sample(n); let toString: symbolicDist => string = fun @@ -208,7 +190,6 @@ module T = { | `Uniform(n) => Uniform.toString(n) | `Beta(n) => Beta.toString(n) | `Float(n) => Float.toString(n) - | `ContinuousShape(n) => ContinuousShape.toString(n); let min: symbolicDist => float = fun @@ -219,7 +200,6 @@ module T = { | `Lognormal(n) => Lognormal.inv(minCdfValue, n) | `Uniform({low}) => low | `Beta(n) => Beta.inv(minCdfValue, n) - | `ContinuousShape(n) => ContinuousShape.inv(minCdfValue, n) | `Float(n) => n; let max: symbolicDist => float = @@ -230,7 +210,6 @@ module T = { | `Normal(n) => Normal.inv(maxCdfValue, n) | `Lognormal(n) => Lognormal.inv(maxCdfValue, n) | `Beta(n) => Beta.inv(maxCdfValue, n) - | `ContinuousShape(n) => ContinuousShape.inv(maxCdfValue, n) | `Uniform({high}) => high | `Float(n) => n; @@ -242,7 +221,6 @@ module T = { | `Normal(n) => Normal.mean(n) | `Lognormal(n) => Lognormal.mean(n) | `Beta(n) => Beta.mean(n) - | `ContinuousShape(n) => ContinuousShape.mean(n) | `Uniform(n) => Uniform.mean(n) | `Float(n) => Float.mean(n); diff --git a/src/distPlus/symbolic/SymbolicTypes.re b/src/distPlus/symbolic/SymbolicTypes.re index 1a5dcf22..4d10899e 100644 --- a/src/distPlus/symbolic/SymbolicTypes.re +++ b/src/distPlus/symbolic/SymbolicTypes.re @@ -31,11 +31,6 @@ type triangular = { high: float, }; -type continuousShape = { - pdf: DistTypes.continuousShape, - cdf: DistTypes.continuousShape, -}; - type symbolicDist = [ | `Normal(normal) | `Beta(beta) @@ -44,7 +39,6 @@ type symbolicDist = [ | `Exponential(exponential) | `Cauchy(cauchy) | `Triangular(triangular) - | `ContinuousShape(continuousShape) | `Float(float) // Dirac delta at x. Practically useful only in the context of multimodals. ];