time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

relativeValues.js (1964B)


      1 import { sq } from "../index.js";
      2 import { makeDefinition } from "../library/registry/fnDefinition.js";
      3 import { frArray, frLambda, frDict, frString, frOptional, } from "../library/registry/frTypes.js";
      4 import { FnFactory } from "../library/registry/helpers.js";
      5 import { makeSquiggleDefinition } from "../library/registry/squiggleDefinition.js";
      6 import { vPlot } from "../value/index.js";
      7 const maker = new FnFactory({
      8     nameSpace: "RelativeValues",
      9     requiresNamespace: true,
     10 });
     11 const relativeValuesShape = frDict(["ids", frArray(frString)], ["fn", frLambda], ["title", frOptional(frString)]);
     12 export const library = [
     13     maker.make({
     14         name: "gridPlot",
     15         output: "Plot",
     16         examples: [
     17             `RelativeValues.gridPlot({
     18     ids: ["foo", "bar"],
     19     fn: {|id1, id2| [SampleSet.fromDist(2 to 5), SampleSet.fromDist(3 to 6)]},
     20   })`,
     21         ],
     22         definitions: [
     23             makeDefinition([relativeValuesShape], ([{ ids, fn, title }]) => {
     24                 return vPlot({
     25                     type: "relativeValues",
     26                     fn,
     27                     ids,
     28                     title: title ?? undefined,
     29                 });
     30             }),
     31         ],
     32     }),
     33 ];
     34 export function makeSquiggleDefinitions(builtins) {
     35     return [
     36         makeSquiggleDefinition({
     37             builtins,
     38             name: "RelativeValues.wrap",
     39             code: sq `
     40 { |fn|
     41   {
     42     |x,y|
     43     findUncertainty(dist) = {
     44       absDist = dist -> SampleSet.fromDist -> SampleSet.map(abs)
     45       p5 = inv(absDist, 0.05)
     46       p95 = inv(absDist, 0.95)
     47       log10(p95 / p5)
     48     }
     49     dists = fn(x,y)
     50     dist1 = dists[0] -> SampleSet.fromDist
     51     dist2 = dists[1] -> SampleSet.fromDist
     52     dist = dists[0] / dists[1]
     53     {
     54       median: inv(dist, 0.5),
     55       mean: mean(dist),
     56       min: inv(dist, 0.05),
     57       max: inv(dist, 0.95),
     58       uncertainty: findUncertainty(dist)
     59     }
     60   }
     61 }`,
     62         }),
     63     ];
     64 }
     65 //# sourceMappingURL=relativeValues.js.map