Compare commits

...

1 Commits

Author SHA1 Message Date
Ozzie Gooen
67c478b4c0 Changed squiggle display heights to be more reasonable 2022-06-16 16:15:48 -07:00
3 changed files with 161 additions and 62 deletions

View File

@ -26,6 +26,7 @@ export interface SquiggleEditorProps {
diagramStart?: number; diagramStart?: number;
/** If the result is a function, where the function ends */ /** If the result is a function, where the function ends */
diagramStop?: number; diagramStop?: number;
height?: number;
/** If the result is a function, how many points along the function it samples */ /** If the result is a function, how many points along the function it samples */
diagramCount?: number; diagramCount?: number;
/** when the environment changes. Used again for notebook magic*/ /** when the environment changes. Used again for notebook magic*/
@ -51,6 +52,7 @@ export let SquiggleEditor: React.FC<SquiggleEditorProps> = ({
diagramStart = 0, diagramStart = 0,
diagramStop = 10, diagramStop = 10,
diagramCount = 20, diagramCount = 20,
height = 200,
onChange, onChange,
bindings = defaultBindings, bindings = defaultBindings,
jsImports = defaultImports, jsImports = defaultImports,
@ -78,6 +80,7 @@ export let SquiggleEditor: React.FC<SquiggleEditorProps> = ({
</div> </div>
<SquiggleChart <SquiggleChart
width={width} width={width}
height={height}
environment={environment} environment={environment}
squiggleString={expression} squiggleString={expression}
chartSettings={chartSettings} chartSettings={chartSettings}

View File

@ -22,22 +22,26 @@ If both values are above zero, a `lognormal` distribution is used. If not, a `no
When <code>5 to 10</code> is entered, both numbers are positive, so it When <code>5 to 10</code> is entered, both numbers are positive, so it
generates a lognormal distribution with 5th and 95th percentiles at 5 and generates a lognormal distribution with 5th and 95th percentiles at 5 and
10. 10.
<SquiggleEditor initialSquiggleString="5 to 10" /> <SquiggleEditor initialSquiggleString="5 to 10" height={60} />
</TabItem> </TabItem>
<TabItem value="ex3" label="to(5,10)"> <TabItem value="ex3" label="to(5,10)">
<code>5 to 10</code> does the same thing as <code>to(5,10)</code>. <code>5 to 10</code> does the same thing as <code>to(5,10)</code>.
<SquiggleEditor initialSquiggleString="to(5,10)" /> <SquiggleEditor initialSquiggleString="to(5,10)" height={60} width={600} />
</TabItem> </TabItem>
<TabItem value="ex2" label="-5 to 5"> <TabItem value="ex2" label="-5 to 5">
When <code>-5 to 5</code> is entered, there's negative values, so it When <code>-5 to 5</code> is entered, there's negative values, so it
generates a normal distribution. This has 5th and 95th percentiles at 5 and generates a normal distribution. This has 5th and 95th percentiles at 5 and
10. 10.
<SquiggleEditor initialSquiggleString="-5 to -3" /> <SquiggleEditor initialSquiggleString="-5 to -3" height={60} width={600} />
</TabItem> </TabItem>
<TabItem value="ex4" label="1 to 10000"> <TabItem value="ex4" label="1 to 10000">
It's very easy to generate distributions with very long tails. If this It's very easy to generate distributions with very long tails. If this
happens, you can click the "log x scale" box to view this using a log scale. happens, you can click the "log x scale" box to view this using a log scale.
<SquiggleEditor initialSquiggleString="1 to 10000" /> <SquiggleEditor
initialSquiggleString="1 to 10000"
height={60}
width={600}
/>
</TabItem> </TabItem>
</Tabs> </Tabs>
@ -76,16 +80,31 @@ The `mixture` mixes combines multiple distributions to create a mixture. You can
<Tabs> <Tabs>
<TabItem value="ex1" label="Simple" default> <TabItem value="ex1" label="Simple" default>
<SquiggleEditor initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10)" /> <SquiggleEditor
initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10)"
height={60}
/>
</TabItem> </TabItem>
<TabItem value="ex2" label="With Weights"> <TabItem value="ex2" label="With Weights">
<SquiggleEditor initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10, [0.1, 0.1, 0.8])" /> <SquiggleEditor
initialSquiggleString="mixture(1 to 2, 5 to 8, 9 to 10, [0.1, 0.1, 0.8])"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex3" label="With Continuous and Discrete Inputs"> <TabItem value="ex3" label="With Continuous and Discrete Inputs">
<SquiggleEditor initialSquiggleString="mixture(1 to 5, 8 to 10, 1, 3, 20)" /> <SquiggleEditor
initialSquiggleString="mixture(1 to 5, 8 to 10, 1, 3, 20)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex4" label="Array of Distributions Input"> <TabItem value="ex4" label="Array of Distributions Input">
<SquiggleEditor initialSquiggleString="mx([1 to 2, exponential(1)], [1,1])" /> <SquiggleEditor
initialSquiggleString="mx([1 to 2, exponential(1)], [1,1])"
height={60}
width={600}
/>
</TabItem> </TabItem>
</Tabs> </Tabs>
@ -113,7 +132,7 @@ The `mixture` mixes combines multiple distributions to create a mixture. You can
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`hours_the_project_will_take = 5 to 20 initialSquiggleString={`hours_the_project_will_take = 5 to 20
chance_of_doing_anything = 0.8 chance_of_doing_anything = 0.8
mx(hours_the_project_will_take, 0, [chance_of_doing_anything, 1 - chance_of_doing_anything])`} mx(hours_the_project_will_take, 0, [chance_of_doing_anything, 1 - chance_of_doing_anything])`} height={60}
/> />
</details> </details>
@ -128,7 +147,7 @@ mx(hours_the_project_will_take, 0, [chance_of_doing_anything, 1 - chance_of_doin
initialSquiggleString={`forecast = 3 to 30 initialSquiggleString={`forecast = 3 to 30
chance_completely_wrong = 0.05 chance_completely_wrong = 0.05
forecast_if_completely_wrong = -100 to 200 forecast_if_completely_wrong = -100 to 200
mx(forecast, forecast_if_completely_wrong, [1-chance_completely_wrong, chance_completely_wrong])`} mx(forecast, forecast_if_completely_wrong, [1-chance_completely_wrong, chance_completely_wrong])`} height={60}
/> />
</details> </details>
@ -141,10 +160,14 @@ Creates a [normal distribution](https://en.wikipedia.org/wiki/Normal_distributio
<Tabs> <Tabs>
<TabItem value="ex1" label="normal(5,1)" default> <TabItem value="ex1" label="normal(5,1)" default>
<SquiggleEditor initialSquiggleString="normal(5, 1)" /> <SquiggleEditor initialSquiggleString="normal(5, 1)" height={60} />
</TabItem> </TabItem>
<TabItem value="ex2" label="normal(100000000000, 100000000000)"> <TabItem value="ex2" label="normal(100000000000, 100000000000)">
<SquiggleEditor initialSquiggleString="normal(100000000000, 100000000000)" /> <SquiggleEditor
initialSquiggleString="normal(100000000000, 100000000000)"
height={60}
width={600}
/>
</TabItem> </TabItem>
</Tabs> </Tabs>
@ -165,7 +188,7 @@ Creates a [log-normal distribution](https://en.wikipedia.org/wiki/Log-normal_dis
you take the log of our lognormal distribution. They can be difficult to directly reason about. you take the log of our lognormal distribution. They can be difficult to directly reason about.
Because of this complexity, we recommend typically using the <a href="#to">to</a> syntax instead of estimating `mu` and `sigma` directly. Because of this complexity, we recommend typically using the <a href="#to">to</a> syntax instead of estimating `mu` and `sigma` directly.
<SquiggleEditor initialSquiggleString="lognormal(0, 0.7)" /> <SquiggleEditor initialSquiggleString="lognormal(0, 0.7)" height={60} />
### Arguments ### Arguments
@ -189,7 +212,8 @@ Because of this complexity, we recommend typically using the <a href="#to">to</a
normalStdDev = 2 normalStdDev = 2
logOfLognormal = log(lognormal(normalMean, normalStdDev)) logOfLognormal = log(lognormal(normalMean, normalStdDev))
[logOfLognormal, normal(normalMean, normalStdDev)]`} [logOfLognormal, normal(normalMean, normalStdDev)]`}
/> />{" "}
height={60}
</details> </details>
## Uniform ## Uniform
@ -198,7 +222,7 @@ logOfLognormal = log(lognormal(normalMean, normalStdDev))
Creates a [uniform distribution](<https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)>) with the given low and high values. Creates a [uniform distribution](<https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)>) with the given low and high values.
<SquiggleEditor initialSquiggleString="uniform(3,7)" /> <SquiggleEditor initialSquiggleString="uniform(3,7)" height={60} />
### Arguments ### Arguments
@ -236,19 +260,35 @@ with values at 1 and 2. Therefore, this is the same as `mixture(pointMass(1),poi
<Tabs> <Tabs>
<TabItem value="ex1" label="pointMass(3)" default> <TabItem value="ex1" label="pointMass(3)" default>
<SquiggleEditor initialSquiggleString="pointMass(3)" /> <SquiggleEditor initialSquiggleString="pointMass(3)" height={60} />
</TabItem> </TabItem>
<TabItem value="ex3" label="mixture(1,3,5)"> <TabItem value="ex3" label="mixture(1,3,5)">
<SquiggleEditor initialSquiggleString="mixture(1,3,5)" /> <SquiggleEditor
initialSquiggleString="mixture(1,3,5)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex2" label="normal(5,2) * 6"> <TabItem value="ex2" label="normal(5,2) * 6">
<SquiggleEditor initialSquiggleString="normal(5,2) * 6" /> <SquiggleEditor
initialSquiggleString="normal(5,2) * 6"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex4" label="dotAdd(normal(5,2), 6)"> <TabItem value="ex4" label="dotAdd(normal(5,2), 6)">
<SquiggleEditor initialSquiggleString="dotAdd(normal(5,2), 6)" /> <SquiggleEditor
initialSquiggleString="dotAdd(normal(5,2), 6)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex5" label="dotMultiply(normal(5,2), 6)"> <TabItem value="ex5" label="dotMultiply(normal(5,2), 6)">
<SquiggleEditor initialSquiggleString="dotMultiply(normal(5,2), 6)" /> <SquiggleEditor
initialSquiggleString="dotMultiply(normal(5,2), 6)"
height={60}
width={600}
/>
</TabItem> </TabItem>
</Tabs> </Tabs>
@ -264,19 +304,35 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
<Tabs> <Tabs>
<TabItem value="ex1" label="beta(10, 20)" default> <TabItem value="ex1" label="beta(10, 20)" default>
<SquiggleEditor initialSquiggleString="beta(10,20)" /> <SquiggleEditor initialSquiggleString="beta(10,20)" height={60} />
</TabItem> </TabItem>
<TabItem value="ex2" label="beta(1000, 1000)"> <TabItem value="ex2" label="beta(1000, 1000)">
<SquiggleEditor initialSquiggleString="beta(1000, 2000)" /> <SquiggleEditor
initialSquiggleString="beta(1000, 2000)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex3" label="beta(1, 10)"> <TabItem value="ex3" label="beta(1, 10)">
<SquiggleEditor initialSquiggleString="beta(1, 10)" /> <SquiggleEditor
initialSquiggleString="beta(1, 10)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex4" label="beta(10, 1)"> <TabItem value="ex4" label="beta(10, 1)">
<SquiggleEditor initialSquiggleString="beta(10, 1)" /> <SquiggleEditor
initialSquiggleString="beta(10, 1)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex5" label="beta(0.8, 0.8)"> <TabItem value="ex5" label="beta(0.8, 0.8)">
<SquiggleEditor initialSquiggleString="beta(0.8, 0.8)" /> <SquiggleEditor
initialSquiggleString="beta(0.8, 0.8)"
height={60}
width={600}
/>
</TabItem> </TabItem>
</Tabs> </Tabs>
@ -295,16 +351,28 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
<summary>Examples</summary> <summary>Examples</summary>
<Tabs> <Tabs>
<TabItem value="ex1" label="beta(0.3, 0.3)" default> <TabItem value="ex1" label="beta(0.3, 0.3)" default>
<SquiggleEditor initialSquiggleString="beta(0.3, 0.3)" /> <SquiggleEditor initialSquiggleString="beta(0.3, 0.3)" height={60} />
</TabItem> </TabItem>
<TabItem value="ex2" label="beta(0.5, 0.5)"> <TabItem value="ex2" label="beta(0.5, 0.5)">
<SquiggleEditor initialSquiggleString="beta(0.5, 0.5)" /> <SquiggleEditor
initialSquiggleString="beta(0.5, 0.5)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex3" label="beta(0.8, 0.8)"> <TabItem value="ex3" label="beta(0.8, 0.8)">
<SquiggleEditor initialSquiggleString="beta(.8,.8)" /> <SquiggleEditor
initialSquiggleString="beta(.8,.8)"
height={60}
width={600}
/>
</TabItem> </TabItem>
<TabItem value="ex4" label="beta(0.9, 0.9)"> <TabItem value="ex4" label="beta(0.9, 0.9)">
<SquiggleEditor initialSquiggleString="beta(.9,.9)" /> <SquiggleEditor
initialSquiggleString="beta(.9,.9)"
height={60}
width={600}
/>
</TabItem> </TabItem>
</Tabs> </Tabs>
</details> </details>
@ -316,7 +384,7 @@ Creates a [beta distribution](https://en.wikipedia.org/wiki/Beta_distribution) w
Creates an [exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution) with the given rate. Creates an [exponential distribution](https://en.wikipedia.org/wiki/Exponential_distribution) with the given rate.
<SquiggleEditor initialSquiggleString="exponential(4)" /> <SquiggleEditor initialSquiggleString="exponential(4)" height={60} />
### Arguments ### Arguments
@ -334,7 +402,7 @@ Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_dis
- `mode`: Number greater than `low` - `mode`: Number greater than `low`
- `high`: Number greater than `mode` - `high`: Number greater than `mode`
<SquiggleEditor initialSquiggleString="triangular(1, 2, 4)" /> <SquiggleEditor initialSquiggleString="triangular(1, 2, 4)" height={60} />
## FromSamples ## FromSamples
@ -342,7 +410,10 @@ Creates a [triangular distribution](https://en.wikipedia.org/wiki/Triangular_dis
Creates a sample set distribution using an array of samples. Creates a sample set distribution using an array of samples.
<SquiggleEditor initialSquiggleString="fromSamples([1,2,3,4,6,5,5,5])" /> <SquiggleEditor
initialSquiggleString="fromSamples([1,2,3,4,6,5,5,5])"
height={60}
/>
### Arguments ### Arguments

View File

@ -19,6 +19,7 @@ chosen from the second distribution.
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 + dist2`} dist1 + dist2`}
height={60}
/> />
### Subtraction ### Subtraction
@ -31,6 +32,7 @@ the value of one random sample chosen from the second distribution.
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 - dist2`} dist1 - dist2`}
height={60}
/> />
### Multiplication ### Multiplication
@ -43,12 +45,9 @@ chosen from the second distribution.
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 * dist2`} dist1 * dist2`}
height={60}
/> />
We also provide concatenation of two distributions as a syntax sugar for `*`
<SquiggleEditor initialSquiggleString="(0.1 to 1) triangular(1,2,3)" />
### Division ### Division
A proportional scaling (normally a shrinking if the second distribution has values higher than 1). A proportional scaling (normally a shrinking if the second distribution has values higher than 1).
@ -61,6 +60,7 @@ tends to be particularly unstable.
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 / dist2`} dist1 / dist2`}
height={60}
/> />
### Exponentiation ### Exponentiation
@ -69,13 +69,14 @@ A projection over a contracted x-axis. The exponentiation operation represents t
the exponentiation of the value of one random sample chosen from the first distribution to the power of the exponentiation of the value of one random sample chosen from the first distribution to the power of
the value one random sample chosen from the second distribution. the value one random sample chosen from the second distribution.
<SquiggleEditor initialSquiggleString={`(0.1 to 1) ^ beta(2, 3)`} /> <SquiggleEditor initialSquiggleString={`(0.1 to 1) ^ beta(2, 3)`} height={60} />
### Taking the base `e` exponential ### Taking the base `e` exponential
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`dist = triangular(1,2,3) initialSquiggleString={`dist = triangular(1,2,3)
exp(dist)`} exp(dist)`}
height={60}
/> />
### Taking logarithms ### Taking logarithms
@ -85,19 +86,22 @@ A projection over a stretched x-axis.
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`dist = triangular(1,2,3) initialSquiggleString={`dist = triangular(1,2,3)
log(dist)`} log(dist)`}
height={60}
/> />
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`dist = beta(1,2) initialSquiggleString={`dist = beta(1,2)+1
log10(dist)`} log10(dist)`}
height={60}
/> />
Base `x` Base `x`
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`x = 2 initialSquiggleString={`x = 2
dist = beta(2,3) dist = beta(2,3)+1
log(dist, x)`} log(dist, x)`}
height={60}
/> />
#### Validity #### Validity
@ -111,22 +115,20 @@ For every point on the x-axis, operate the corresponding points in the y axis of
**Pointwise operations are done with `PointSetDist` internals rather than `SampleSetDist` internals**. **Pointwise operations are done with `PointSetDist` internals rather than `SampleSetDist` internals**.
TODO: this isn't in the new interpreter/parser yet.
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 .+ dist2`} dist1 .+ dist2`}
height={60}
/> />
### Pointwise subtraction ### Pointwise subtraction
TODO: this isn't in the new interpreter/parser yet.
<SquiggleEditor <SquiggleEditor
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 .- dist2`} dist1 .- dist2`}
height={60}
/> />
### Pointwise multiplication ### Pointwise multiplication
@ -135,6 +137,7 @@ dist1 .- dist2`}
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 .* dist2`} dist1 .* dist2`}
height={60}
/> />
### Pointwise division ### Pointwise division
@ -143,6 +146,7 @@ dist1 .* dist2`}
initialSquiggleString={`dist1 = uniform(0,20) initialSquiggleString={`dist1 = uniform(0,20)
dist2 = normal(10,8) dist2 = normal(10,8)
dist1 ./ dist2`} dist1 ./ dist2`}
height={60}
/> />
### Pointwise exponentiation ### Pointwise exponentiation
@ -151,6 +155,7 @@ dist1 ./ dist2`}
initialSquiggleString={`dist1 = 1 to 10 initialSquiggleString={`dist1 = 1 to 10
dist2 = triangular(1,2,3) dist2 = triangular(1,2,3)
dist1 .^ dist2`} dist1 .^ dist2`}
height={60}
/> />
## Standard functions on distributions ## Standard functions on distributions
@ -160,7 +165,7 @@ dist1 .^ dist2`}
The `pdf(dist, x)` function returns the density of a distribution at the The `pdf(dist, x)` function returns the density of a distribution at the
given point x. given point x.
<SquiggleEditor initialSquiggleString="pdf(normal(0,1),0)" /> <SquiggleEditor initialSquiggleString="pdf(normal(0,1),0)" height={60} />
#### Validity #### Validity
@ -172,7 +177,7 @@ given point x.
The `cdf(dist, x)` gives the cumulative probability of the distribution The `cdf(dist, x)` gives the cumulative probability of the distribution
or all values lower than x. It is the inverse of `quantile`. or all values lower than x. It is the inverse of `quantile`.
<SquiggleEditor initialSquiggleString="cdf(normal(0,1),0)" /> <SquiggleEditor initialSquiggleString="cdf(normal(0,1),0)" height={60} />
#### Validity #### Validity
@ -185,7 +190,7 @@ The `quantile(dist, prob)` gives the value x or which the probability for all va
lower than x is equal to prob. It is the inverse of `cdf`. In the literature, it lower than x is equal to prob. It is the inverse of `cdf`. In the literature, it
is also known as the quantiles function. is also known as the quantiles function.
<SquiggleEditor initialSquiggleString="quantile(normal(0,1),0.5)" /> <SquiggleEditor initialSquiggleString="quantile(normal(0,1),0.5)" height={60} />
#### Validity #### Validity
@ -196,29 +201,35 @@ is also known as the quantiles function.
The `mean(distribution)` function gives the mean (expected value) of a distribution. The `mean(distribution)` function gives the mean (expected value) of a distribution.
<SquiggleEditor initialSquiggleString="mean(normal(5, 10))" /> <SquiggleEditor initialSquiggleString="mean(normal(5, 10))" height={60} />
### Sampling a distribution ### Sampling a distribution
The `sample(distribution)` samples a given distribution. The `sample(distribution)` samples a given distribution.
<SquiggleEditor initialSquiggleString="sample(normal(0, 10))" /> <SquiggleEditor initialSquiggleString="sample(normal(0, 10))" height={60} />
## Converting between distribution formats ## Converting between distribution formats
Recall the [three formats of distributions](https://develop--squiggle-documentation.netlify.app/docs/Discussions/Three-Types-Of-Distributions). We can force any distribution into `SampleSet` format Recall the [three formats of distributions](https://develop--squiggle-documentation.netlify.app/docs/Discussions/Three-Types-Of-Distributions). We can force any distribution into `SampleSet` format
<SquiggleEditor initialSquiggleString="toSampleSet(normal(5, 10))" /> <SquiggleEditor
initialSquiggleString="toSampleSet(normal(5, 10))"
height={60}
/>
Or `PointSet` format Or `PointSet` format
<SquiggleEditor initialSquiggleString="toPointSet(normal(5, 10))" /> <SquiggleEditor initialSquiggleString="toPointSet(normal(5, 10))" height={60} />
### `toSampleSet` has two signatures ### `toSampleSet` has two signatures
Above, we saw the unary `toSampleSet`, which uses an internal hardcoded number of samples. If you'd like to provide the number of samples, it has a binary signature as well (floored) Above, we saw the unary `toSampleSet`, which uses an internal hardcoded number of samples. If you'd like to provide the number of samples, it has a binary signature as well (floored)
<SquiggleEditor initialSquiggleString="[toSampleSet(0.1 to 1, 100.1), toSampleSet(0.1 to 1, 5000), toSampleSet(0.1 to 1, 20000)]" /> <SquiggleEditor
initialSquiggleString="[toSampleSet(0.1 to 1, 100.1), toSampleSet(0.1 to 1, 5000), toSampleSet(0.1 to 1, 20000)]"
height={60}
/>
#### Validity #### Validity
@ -230,13 +241,19 @@ Some distribution operations (like horizontal shift) return an unnormalized dist
We provide a `normalize` function We provide a `normalize` function
<SquiggleEditor initialSquiggleString="normalize((0.1 to 1) + triangular(0.1, 1, 10))" /> <SquiggleEditor
initialSquiggleString="normalize((0.1 to 1) + triangular(0.1, 1, 10))"
height={60}
/>
#### Validity - Input to `normalize` must be a dist #### Validity - Input to `normalize` must be a dist
We provide a predicate `isNormalized`, for when we have simple control flow We provide a predicate `isNormalized`, for when we have simple control flow
<SquiggleEditor initialSquiggleString="isNormalized((0.1 to 1) * triangular(0.1, 1, 10))" /> <SquiggleEditor
initialSquiggleString="isNormalized((0.1 to 1) * triangular(0.1, 1, 10))"
height={60}
/>
#### Validity #### Validity
@ -246,20 +263,28 @@ We provide a predicate `isNormalized`, for when we have simple control flow
You may like to debug by right clicking your browser and using the _inspect_ functionality on the webpage, and viewing the _console_ tab. Then, wrap your squiggle output with `inspect` to log an internal representation. You may like to debug by right clicking your browser and using the _inspect_ functionality on the webpage, and viewing the _console_ tab. Then, wrap your squiggle output with `inspect` to log an internal representation.
<SquiggleEditor initialSquiggleString="inspect(toSampleSet(0.1 to 1, 100))" /> <SquiggleEditor
initialSquiggleString="inspect(toSampleSet(0.1 to 1, 100))"
height={60}
/>
Save for a logging side effect, `inspect` does nothing to input and returns it. Save for a logging side effect, `inspect` does nothing to input and returns it.
## Truncate ## Truncate
You can cut off from the left You can truncate the left side, the right side, or both.
<SquiggleEditor initialSquiggleString="truncateLeft(0.1 to 1, 0.5)" /> <SquiggleEditor
initialSquiggleString="truncateLeft(0.1 to 1, 0.5)"
height={40}
/>
You can cut off from the right <SquiggleEditor
initialSquiggleString="truncateRight(0.1 to 1, 0.5)"
height={40}
/>
<SquiggleEditor initialSquiggleString="truncateRight(0.1 to 1, 0.5)" /> <SquiggleEditor
initialSquiggleString="truncate(0.1 to 1, 0.5, 1.5)"
You can cut off from both sides height={40}
/>
<SquiggleEditor initialSquiggleString="truncate(0.1 to 1, 0.5, 1.5)" />