Header menu logo bristlecone

ScriptNotebook

Growth of tree rings in response to temperature

This Bristlecone example demonstrates model-fitting using high-resolution monthly temperature data with annual ring width increments.

First, we must reference Bristlecone and open it:

open Bristlecone // Opens Bristlecone core library and estimation engine
open Bristlecone.Language // Open the language for writing Bristlecone models
open Bristlecone.Time
open FSharp.Data.UnitSystems.SI.UnitSymbols

Step 1. Defining the ecological model (hypothesis)

// 0. Configure Options
// ----------------------------

module Settings =

    /// Bristlecone can use latitude and longitude to compute day length.
    let latitude, longitude = 68.39<Dendro.latitude>, 58.22<Dendro.longitude>
    let timeZone = "Asia/Yekaterinburg"
    let endWhen = Optimisation.EndConditions.atIteration 1000<iteration>
    let logger = Logging.Console.logger 10<iteration>


[<Measure>] type mm

// States and forcings:
let SR      = state<mm> "stem-radius"
let SP      = state<mm> "stem-production"
let Tmean   = environment<K> "temperature"
let L       = environment<1> "day-fraction"

let hypothesis =

    /// The universal gas constant in J mol−1 K−1
    let gasConstant = Constant 8.314<(J/mol)/K>

    let Ea    = parameter "Ea" noConstraints 30.0<J/mol> 80.0<J/mol>
    let γB    = parameter "γB" noConstraints 1e-5</day> 1e-1</day>
    let r     = parameter "r" notNegative 1e-5</day> 1e-1</day>
    let Rstar = parameter "r*" notNegative 2.<mm> 10.<mm>
    let q     = parameter "q"  noConstraints 0.3<1> 0.9<1>
    let σx    = parameter "σ[x]" notNegative 0.05 0.3

    /// An Arrhenius function to represent temperature limitation on growth.
    let temperatureLimitation =
        Constant System.Math.E
        ** ((Constant 1000. * P Ea * (Environment Tmean - Constant 298.<K>))
            / (Constant 298.<K> * gasConstant * Environment Tmean))

    let shadingEffect = P q + (Constant 1.<1> - P q) * (State SR / (State SR + P Rstar))
    let lightLimitation = Environment L * shadingEffect

    /// Plant growth is a function of net photosynthesis minus environmental losses.
    /// Photosynthesis is limited by light and temperature.
    let ``db/dt`` = This<mm> * P r * temperatureLimitation * lightLimitation - P γB * This<mm>

    /// Wood output is laid down and cannot decrease. A cold year will
    /// simply make a missing ring. No allometric relations are used here.
    let ``dW/dt`` = Conditional (``db/dt`` .> Constant 0.<mm/day>) (``db/dt``) (Constant 0.<mm/day>)

    Model.empty
    |> Model.addRateEquation SP ``db/dt``
    |> Model.addRateEquation SR ``dW/dt``
    |> Model.estimateParameter Ea
    |> Model.estimateParameter γB
    |> Model.estimateParameter r
    |> Model.estimateParameter Rstar
    |> Model.estimateParameter q
    |> Model.useLikelihoodFunction (ModelLibrary.Likelihood.gaussian (Require.state SR) )
    |> Model.estimateParameter σx
    |> Model.compile

Setup Bristlecone Engine

A bristlecone engine provides a fixed setup for estimating parameters from data. Use the same engine for all model fits within a single study.

You may start with the Bristlecone.mkContinuous or Bristlecone.mkDiscrete functions depending on the model you want to apply (continuous or discrete time). Here, we are using differential equation models, so we setup a continuous-time engine.

Within this engine below, we configure that the first observation is repeated as a data conditioning step. We also choose to use a custom optimisation method - Filzbach - which is included in the core Bristlecone library, with a burn-in length of 1000 iterations. In Filzbach, the burn-in period is that where tuning of the parameter scales occurs. We then configure the engine to write out to a simple console logger, which is setup in the Settings at the start of this script.

Finally, we must apply a time conversion so that the engine understands how to convert from the timespan representation used for the datasets to the temporal resolution the model is defined in. Here, the data is defined using a contemporary Gregorian calendar (using .NET DateTime / TimeSpan types), and the model is defined on a daily timescale (i.e. the model's parameters that are rates are per day). Some built in time conversions (of the type ResolutionToModelUnits) are included in the DateMode.Conversion module within the Bristlecone.Time module.

let engine =
    Bristlecone.mkContinuous ()
    |> Bristlecone.withConditioning Conditioning.RepeatFirstDataPoint
    |> Bristlecone.withCustomOptimisation ( Optimisation.MonteCarlo.Filzbach.filzbach
           { Optimisation.MonteCarlo.Filzbach.FilzbachSettings.Default with TuneAfterChanges = 10; BurnLength = Optimisation.EndConditions.atIteration 1000<iteration> })
    |> Bristlecone.withOutput Settings.logger
    |> Bristlecone.withTimeConversion DateMode.Conversion.CalendarDates.toDays

Load in datasets

As we have daily temperature data and can compute daily light availability, we have a choice as to whether to run the models at daily or monthly resolution. The obvious drawback for daily resolution is a far greater computational load.

Bristlecone contains functions in the TimeSeries module to lower the resolution of time-series. The TimeSeries.generalise function requires a fixed resolution to lower the data to (i.e. monthly), and a generalisation function; this may simply be the monthly mean, but it would be more appropriate to generalise on more meaningful measures. For example:

Here, we will use daily data to drive the models. In the GHCN weather station data, the variables are defined in this document. Temperatures are in tenths of degrees C, precipitation in tenths of mm, and snow depth in mm.

The temperature data has some gaps, spanning usually one to ten days at a time. Here, we use the built-in TimeSeries.interpolateFloats to fill in the gaps.

open FSharp.Data

type WeatherStationData = CsvProvider<"data/dendro/hoseda-hard-obs.csv">

let weatherObs = new WeatherStationData()

let tMean = 
    weatherObs.Rows
    |> Seq.filter(fun r -> r.Variable = "TAVG")
    |> Seq.map(fun r -> r.ValueCleaned |> Option.map(fun v -> float v / 10. * 1.<Dendro.Units.celsius> |> Dendro.Units.celsiusToKelvin), r.Date)
    |> TimeSeries.fromNeoObservations
    // Fills in gaps with simple linear interpolation between known values:
    |> TimeSeries.interpolateFloats (Resolution.FixedTemporalResolution.Days <| PositiveInt.create(1<day>).Value)

open Plotly.NET

Chart.Line(tMean |> TimeSeries.toObservations |> Seq.map(fun (x,y) -> y,x))
|> Chart.withTemplate ChartTemplates.light
|> GenericChart.toChartHTML

Seasonal light availability

In the above model, we naively applied a light limiting effect within the model that a simple 0 - 1 multiplier to growth.

To obtain daily light availability values as an exogeneous environmental input to the model, the Bristlecone.Dendro package contains sunlight calculations we can use.

A DayLengthCache provides a wrapper for accessing day length values at a particular latitude and longitude; a time-zone is also required, which must be a time-zone within your computer's built in time-zone list, which differs between macos/linux/windows.

let lightFn = Dendro.Sunrise.DayLengthCache(Settings.latitude, Settings.longitude, Settings.timeZone)

let lightFraction =
    tMean 
    |> TimeSeries.toObservations
    |> Seq.map snd // collect the list of daily dates to match the temperature data
    |> Seq.map(fun dt -> dt |> lightFn.GetLight |> Dendro.Sunrise.dayFraction, dt )
    |> TimeSeries.fromNeoObservations

Chart.Line(lightFraction |> TimeSeries.toObservations |> Seq.map(fun (x,y) -> y,x))
|> Chart.withTemplate ChartTemplates.light
|> GenericChart.toChartHTML

Ring width data

Here, we are investigating willow shrub ring widths from Varandei, Nenets Autonomous Okrug, Russia. A chronology was previously built using COFECHA; the published chronology for 1921 - 2005 was standardised using a 32-year moving spline.

We cannot use the existing chronology directly, as it has been subject to detrending. Here, we simply begin by appling the model to some representive individuals. For example, S8N0125A, S8N0113A, and S8N0110A had the greatest correlation with all segments of the chronology, so we will start with those.

To setup the data for Bristlecone, we use functions within Bristlecone.Dendro to:

Bristlecone dendro represents a plant and its environment as a PlantIndividual type as a convenience wrapper.

let exampleShrub =
    Data.PlantIndividual.Csv.loadRingWidths (__SOURCE_DIRECTORY__ + "/data/dendro/varandei-rw.csv")
    |> Seq.find(fun rw -> rw.Identifier.Value = "S8N0125A")
    |> Dendro.PlantIndividual.toSubannual
    |> Dendro.PlantIndividual.zipEnvironment Tmean tMean
    |> Dendro.PlantIndividual.zipEnvironment L lightFraction

Fit the model to the real data

We use Bristlecone.fitDendro as a convenience function to work with PlantIndividual types.

One complexity is that the conditioning requires specifying the value for the internal stem production dynamic equation, which is effectively a hidden state (TODO Replace with the hidden states initialiser functions on the model system itself).

let result =
    let e = engine |> Bristlecone.withConditioning(Conditioning.Custom (Map.ofList [ SP.Code, 0.36; SR.Code, 0.36 ]))
    Bristlecone.fitDendro e Settings.endWhen hypothesis Bristlecone.FittingMethod.CumulativeGrowth SR.Code exampleShrub

let outputDir = __SOURCE_DIRECTORY__ + "/cached/"
Bristlecone.Data.Series.save (fun (d:System.DateTime) -> d.ToShortDateString()) outputDir exampleShrub.Identifier.Value "test-model" result

// Note: Here, we are loading a result calculated earlier.
let cachedResultSeries =
    Bristlecone.Data.Series.load id outputDir exampleShrub.Identifier.Value "test-model"
    |> Seq.toList
    |> Seq.head
    |> snd

The fit versus observed series appear as follows:

cachedResultSeries |> Seq.map(fun v ->
    let fit = v.Value |> Seq.map(fun (x,y) -> System.DateTime.Parse y, x.Fit)
    let obs = v.Value |> Seq.map(fun (x,y) -> System.DateTime.Parse y, x.Obs)
    [ Chart.Line fit; Chart.Line obs ]
    |> Chart.combine
)
|> Chart.Grid(1,2)
|> Chart.withTemplate ChartTemplates.light
|> GenericChart.toChartHTML
No value returned by any evaluator
Multiple items
module Bristlecone from Bristlecone

--------------------
namespace Bristlecone
module Language from Bristlecone
<summary> An F# Domain Specific Language (DSL) for scripting with Bristlecone. </summary>
module Time from Bristlecone
Multiple items
namespace FSharp

--------------------
namespace Microsoft.FSharp
Multiple items
namespace FSharp.Data

--------------------
namespace Microsoft.FSharp.Data
namespace Microsoft.FSharp.Data.UnitSystems
namespace Microsoft.FSharp.Data.UnitSystems.SI
namespace Microsoft.FSharp.Data.UnitSystems.SI.UnitSymbols
val latitude: float<Dendro.latitude>
 Bristlecone can use latitude and longitude to compute day length.
val longitude: float<Dendro.longitude>
 Bristlecone can use latitude and longitude to compute day length.
namespace Bristlecone.Dendro
[<Measure>] type latitude
[<Measure>] type longitude
val timeZone: string
val endWhen: EstimationEngine.EndCondition
namespace Bristlecone.Optimisation
module EndConditions from Bristlecone.Optimisation
val atIteration: iteration: int<iteration> -> EstimationEngine.Solution list -> currentIteration: int<iteration> -> EstimationEngine.OptimStopReason
<summary> End the optimisation procedure when a minimum number of iterations is exceeded. </summary>
[<Measure>] type iteration
val logger: (Logging.LogEvent -> unit)
namespace Bristlecone.Logging
module Console from Bristlecone.Logging
<summary> Simple logger to console that prints line-by-line progress and events. </summary>
val logger: nIteration: int<iteration> -> (Logging.LogEvent -> unit)
<summary> A simple console logger. `nIteration` specifies the number of iterations after which to log the current likelihood and parameter values. </summary>
Multiple items
val Measure: sId: MeasureId<'u> -> ModelExpression<'u>

--------------------
type MeasureAttribute = inherit Attribute new: unit -> MeasureAttribute

--------------------
new: unit -> MeasureAttribute
[<Measure>] type mm
val SR: StateId<mm>
val state: name: string -> StateId<'u>
val SP: StateId<mm>
val Tmean: StateId<K>
val environment: name: string -> StateId<'u>
[<Measure>] type K = Data.UnitSystems.SI.UnitNames.kelvin
val L: StateId<1>
val hypothesis: ModelSystem.ModelSystem<day>
val gasConstant: ModelExpression<J/(K mol)>
 The universal gas constant in J mol−1 K−1
val Constant: x: float<'u> -> ModelExpression<'u>
[<Measure>] type J = Data.UnitSystems.SI.UnitNames.joule
[<Measure>] type mol = Data.UnitSystems.SI.UnitNames.mole
val Ea: IncludedParameter<J/mol>
Multiple items
val parameter: code: string -> con: Parameter.Constraint -> lower: float<'u> -> upper: float<'u> -> IncludedParameter<'u>
<summary> Define an estimatable parameter for a Bristlecone model. </summary>

--------------------
[<Measure>] type parameter
val noConstraints: Parameter.Constraint
val γB: IncludedParameter</day>
[<Measure>] type day
val r: IncludedParameter</day>
val notNegative: Parameter.Constraint
val Rstar: IncludedParameter<mm>
val q: IncludedParameter<1>
val σx: IncludedParameter<1>
val temperatureLimitation: ModelExpression<1>
 An Arrhenius function to represent temperature limitation on growth.
namespace System
type Math = static member Abs: value: decimal -> decimal + 7 overloads static member Acos: d: float -> float static member Acosh: d: float -> float static member Asin: d: float -> float static member Asinh: d: float -> float static member Atan: d: float -> float static member Atan2: y: float * x: float -> float static member Atanh: d: float -> float static member BigMul: a: int * b: int -> int64 + 5 overloads static member BitDecrement: x: float -> float ...
<summary>Provides constants and static methods for trigonometric, logarithmic, and other common mathematical functions.</summary>
field System.Math.E: float = 2.71828182846
<summary>Represents the natural logarithmic base, specified by the constant, <see langword="e" />.</summary>
val P: name: IncludedParameter<'u> -> ModelExpression<'u>
val Environment: sid: StateId<'u> -> ModelExpression<'u>
val shadingEffect: ModelExpression<1>
val State: sId: StateId<'u> -> ModelExpression<'u>
val lightLimitation: ModelExpression<1>
val This<'u> : ModelExpression<'u>
val Conditional: cond: BoolExpression -> ifTrue: ModelExpression<'u> -> ifFalse: ModelExpression<'u> -> ModelExpression<'u>
<summary> For conditional statements, all three branches must have the same unit. </summary>
module Model from Bristlecone.Language
<summary> Terms for scaffolding a model system for use with Bristlecone. </summary>
val empty<'time> : ModelBuilder.ModelBuilder<'time>
val addRateEquation: name: StateId<'state> -> expr: ModelExpression<'state/'time> -> mb: ModelBuilder.ModelBuilder<'time> -> ModelBuilder.ModelBuilder<'time>
val estimateParameter: p: IncludedParameter<'u> -> builder: ModelBuilder.ModelBuilder<'time> -> ModelBuilder.ModelBuilder<'time>
val useLikelihoodFunction: likelihoodFn: ModelSystem.Likelihood<ModelSystem.state> -> builder: ModelBuilder.ModelBuilder<'u> -> ModelBuilder.ModelBuilder<'u>
namespace Bristlecone.ModelLibrary
module Likelihood from Bristlecone.ModelLibrary
<summary>Likelihood functions to represent a variety of distributions and data types.</summary>
<namespacedoc><summary>Pre-built model parts for use in Bristlecone</summary></namespacedoc>
val gaussian: key: ModelSystem.LikelihoodRequirement -> ModelSystem.Likelihood<'u>
<summary> Log likelihood function for single equation system, assuming Gaussian error for x. Requires a parameter 'σ[x]' to be included in any `ModelSystem` that uses it. </summary>
module Require from Bristlecone.Language
val state: s: StateId<'u> -> ModelSystem.LikelihoodRequirement
val compile: (ModelBuilder.ModelBuilder<'u> -> ModelSystem.ModelSystem<'u>)
val engine: EstimationEngine.EstimationEngine<System.DateTime,System.TimeSpan,day,1>
val mkContinuous: unit -> EstimationEngine.EstimationEngine<System.DateTime,System.TimeSpan,year,'u>
<summary>A basic estimation engine for ordinary differential equations, using a Nelder-Mead optimiser.</summary>
val withConditioning: c: Conditioning.Conditioning<'u> -> engine: EstimationEngine.EstimationEngine<'a,'b,'v,'u> -> EstimationEngine.EstimationEngine<'a,'b,'v,'u>
<summary> Choose how the start point is chosen when solving the model system </summary>
module Conditioning from Bristlecone
union case Conditioning.Conditioning.RepeatFirstDataPoint: Conditioning.Conditioning<'u>
val withCustomOptimisation: optim: EstimationEngine.Optimisation.Optimiser -> engine: EstimationEngine.EstimationEngine<'a,'b,'u,'v> -> EstimationEngine.EstimationEngine<'a,'b,'u,'v>
module MonteCarlo from Bristlecone.Optimisation
<summary> A module containing Monte Carlo Markov Chain (MCMC) methods for optimisation. An introduction to MCMC approaches is provided by [Reali, Priami, and Marchetti (2017)](https://doi.org/10.3389/fams.2017.00006) </summary>
module Filzbach from Bristlecone.Optimisation.MonteCarlo
<summary> An adaptation of the Filzbach method (originally by Drew Purves) </summary>
val filzbach: settings: Optimisation.MonteCarlo.Filzbach.FilzbachSettings -> EstimationEngine.Optimisation.Optimiser
<summary> A Monte Carlo Markov Chain sampler based on the 'Filzbach' algorithm from Microsoft Research Cambridge. </summary>
type FilzbachSettings = { TuneAfterChanges: int MaxScaleChange: float MinScaleChange: float BurnLength: EndCondition } static member Default: FilzbachSettings with get
property Optimisation.MonteCarlo.Filzbach.FilzbachSettings.Default: Optimisation.MonteCarlo.Filzbach.FilzbachSettings with get
val withOutput: out: EstimationEngine.WriteOut -> engine: EstimationEngine.EstimationEngine<'a,'b,'u,'v> -> EstimationEngine.EstimationEngine<'a,'b,'u,'v>
<summary>Substitute a specific logger into</summary>
<param name="out"></param>
<param name="engine"></param>
<typeparam name="'a"></typeparam>
<typeparam name="'b"></typeparam>
<returns></returns>
module Settings from Dendroecology
val withTimeConversion<'d,'d2,'timespan,'timespan2,'modelTimeUnit,'o1,'o2,'u> : fn: DateMode.Conversion.ResolutionToModelUnits<'d2,'timespan2,'modelTimeUnit> -> engine: EstimationEngine.EstimationEngine<'d,'o1,'o2,'u> -> EstimationEngine.EstimationEngine<'d2,'timespan2,'modelTimeUnit,'u>
module DateMode from Bristlecone.Time
module Conversion from Bristlecone.Time.DateMode
<summary> Conversion functions that translate from one time unit into another. These functions are intended primarily for use in estimation engines when translating from data time to model time. </summary>
module CalendarDates from Bristlecone.Time.DateMode.Conversion
val toDays: from: DateMode.Conversion.ConvertFrom<System.DateTime,System.TimeSpan> -> float<day>
type WeatherStationData = CsvProvider<...>
type CsvProvider
<summary>Typed representation of a CSV file.</summary> <param name='Sample'>Location of a CSV sample file or a string containing a sample CSV document.</param> <param name='Separators'>Column delimiter(s). Defaults to <c>,</c>.</param> <param name='InferRows'>Number of rows to use for inference. Defaults to <c>1000</c>. If this is zero, all rows are used.</param> <param name='Schema'>Optional column types, in a comma separated list. Valid types are <c>int</c>, <c>int64</c>, <c>bool</c>, <c>float</c>, <c>decimal</c>, <c>date</c>, <c>datetimeoffset</c>, <c>timespan</c>, <c>guid</c>, <c>string</c>, <c>int?</c>, <c>int64?</c>, <c>bool?</c>, <c>float?</c>, <c>decimal?</c>, <c>date?</c>, <c>datetimeoffset?</c>, <c>timespan?</c>, <c>guid?</c>, <c>int option</c>, <c>int64 option</c>, <c>bool option</c>, <c>float option</c>, <c>decimal option</c>, <c>date option</c>, <c>datetimeoffset option</c>, <c>timespan option</c>, <c>guid option</c> and <c>string option</c>. You can also specify a unit and the name of the column like this: <c>Name (type&lt;unit&gt;)</c>, or you can override only the name. If you don't want to specify all the columns, you can reference the columns by name like this: <c>ColumnName=type</c>.</param> <param name='HasHeaders'>Whether the sample contains the names of the columns as its first line.</param> <param name='IgnoreErrors'>Whether to ignore rows that have the wrong number of columns or which can't be parsed using the inferred or specified schema. Otherwise an exception is thrown when these rows are encountered.</param> <param name='SkipRows'>Skips the first n rows of the CSV file.</param> <param name='AssumeMissingValues'>When set to true, the type provider will assume all columns can have missing values, even if in the provided sample all values are present. Defaults to false.</param> <param name='PreferOptionals'>When set to true, inference will prefer to use the option type instead of nullable types, <c>double.NaN</c> or <c>""</c> for missing values. Defaults to false.</param> <param name='Quote'>The quotation mark (for surrounding values containing the delimiter). Defaults to <c>"</c>.</param> <param name='MissingValues'>The set of strings recognized as missing values specified as a comma-separated string (e.g., "NA,N/A"). Defaults to <c>NaN,NA,N/A,#N/A,:,-,TBA,TBD</c>.</param> <param name='CacheRows'>Whether the rows should be caches so they can be iterated multiple times. Defaults to true. Disable for large datasets.</param> <param name='Culture'>The culture used for parsing numbers and dates. Defaults to the invariant culture.</param> <param name='Encoding'>The encoding used to read the sample. You can specify either the character set name or the codepage number. Defaults to UTF8 for files, and to ISO-8859-1 the for HTTP requests, unless <c>charset</c> is specified in the <c>Content-Type</c> response header.</param> <param name='ResolutionFolder'>A directory that is used when resolving relative file references (at design time and in hosted execution).</param> <param name='EmbeddedResource'>When specified, the type provider first attempts to load the sample from the specified resource (e.g. 'MyCompany.MyAssembly, resource_name.csv'). This is useful when exposing types generated by the type provider.</param>
val weatherObs: WeatherStationData
val tMean: TimeSeries.TimeSeries<float<UnitSystems.SI.UnitNames.kelvin>,System.DateTime,int<year>,System.TimeSpan>
property Runtime.CsvFile.Rows: CsvProvider<...>.Row seq with get
<summary> The rows with data </summary>
Multiple items
module Seq from Bristlecone

--------------------
module Seq from Microsoft.FSharp.Collections
val filter: predicate: ('T -> bool) -> source: 'T seq -> 'T seq
val r: CsvProvider<...>.Row
property CsvProvider<...>.Row.Variable: string with get
val map: mapping: ('T -> 'U) -> source: 'T seq -> 'U seq
property CsvProvider<...>.Row.ValueCleaned: Option<int> with get
module Option from Microsoft.FSharp.Core
val map: mapping: ('T -> 'U) -> option: 'T option -> 'U option
val v: int
Multiple items
val float: value: 'T -> float (requires member op_Explicit)

--------------------
type float = System.Double

--------------------
type float<'Measure> = float
module Units from Bristlecone.Dendro
[<Measure>] type celsius
val celsiusToKelvin: c: float<Dendro.Units.celsius> -> float<UnitSystems.SI.UnitNames.kelvin>
property CsvProvider<...>.Row.Date: System.DateTime with get
Multiple items
module TimeSeries from Bristlecone.Time
<summary>Contains functions and types to create and manipulate `TimeSeries` values, which represent observations ordered in time.</summary>

--------------------
type TimeSeries<'T,'date,'timeunit,'timespan> = TimeSeries.TimeSeries<'T,'date,'timeunit,'timespan>
val fromNeoObservations: dataset: TimeSeries.Observation<'a,System.DateTime> seq -> TimeSeries.TimeSeries<'a,System.DateTime,int<year>,System.TimeSpan>
<summary>Create a time-series where time is represented by standard (modern) calendars and dates and times through the built-in .NET DateTime type.</summary>
<param name="dataset">A sequence of observations, which consist of data and dates / times</param>
<typeparam name="'a">The type of the data in the series</typeparam>
<returns>A time-series of DateTime observations ordered oldest to newest.</returns>
val interpolateFloats: resolution: Resolution.FixedTemporalResolution<'timespan> -> series: TimeSeries.TimeSeries<float<'u> option,'date,'timeunit,'timespan> -> TimeSeries.TimeSeries<float<'u>,'date,'timeunit,'timespan> (requires comparison)
<summary>Interpolates missing values in a time series, where missing values are represented as an `Option` type.</summary>
<param name="series">A time-series of option values to interpolate</param>
<typeparam name="'date">A dating method used in the time-series</typeparam>
<typeparam name="'timeunit">A unit of time as used by the dating method</typeparam>
<typeparam name="'timespan">The timespan representation for the dating method</typeparam>
<returns></returns>
module Resolution from Bristlecone.Time
type FixedTemporalResolution<'timespan> = | Years of PositiveInt<year> | Months of PositiveInt<month> | Days of PositiveInt<day> | CustomEpoch of 'timespan
<summary> Represents the width of equally-spaced steps in time. </summary>
union case Resolution.FixedTemporalResolution.Days: PositiveInt.PositiveInt<day> -> Resolution.FixedTemporalResolution<'timespan>
module PositiveInt from Bristlecone
val create: i: int<'u> -> PositiveInt.PositiveInt<'u> option
namespace Plotly
namespace Plotly.NET
type Chart = static member AnnotatedHeatmap: zData: #('a1 seq) seq * annotationText: #(string seq) seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?X: 'a3 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiX: 'a3 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?XGap: int * [<Optional; DefaultParameterValue ((null :> obj))>] ?Y: 'a4 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiY: 'a4 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?YGap: int * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a5 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a5 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?ColorBar: ColorBar * [<Optional; DefaultParameterValue ((null :> obj))>] ?ColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowScale: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?ReverseScale: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?ZSmooth: SmoothAlg * [<Optional; DefaultParameterValue ((null :> obj))>] ?Transpose: bool * [<Optional; DefaultParameterValue ((false :> obj))>] ?UseWebGL: bool * [<Optional; DefaultParameterValue ((false :> obj))>] ?ReverseYAxis: bool * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a3 :> IConvertible and 'a4 :> IConvertible and 'a5 :> IConvertible) + 1 overload static member Area: x: #IConvertible seq * y: #IConvertible seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowMarkers: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiOpacity: float seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a2 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?TextPosition: TextPosition * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiTextPosition: TextPosition seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerOutline: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerSymbol: MarkerSymbol * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiMarkerSymbol: MarkerSymbol seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Marker: Marker * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineWidth: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineDash: DrawingStyle * [<Optional; DefaultParameterValue ((null :> obj))>] ?Line: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?AlignmentGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?OffsetGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?StackGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?Orientation: Orientation * [<Optional; DefaultParameterValue ((null :> obj))>] ?GroupNorm: GroupNorm * [<Optional; DefaultParameterValue ((null :> obj))>] ?FillColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?FillPatternShape: PatternShape * [<Optional; DefaultParameterValue ((null :> obj))>] ?FillPattern: Pattern * [<Optional; DefaultParameterValue ((false :> obj))>] ?UseWebGL: bool * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a2 :> IConvertible) + 1 overload static member Bar: values: #IConvertible seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Keys: 'a1 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiKeys: 'a1 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiOpacity: float seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a2 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerOutline: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerPatternShape: PatternShape * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiMarkerPatternShape: PatternShape seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerPattern: Pattern * [<Optional; DefaultParameterValue ((null :> obj))>] ?Marker: Marker * [<Optional; DefaultParameterValue ((null :> obj))>] ?Base: #IConvertible * [<Optional; DefaultParameterValue ((null :> obj))>] ?Width: 'a4 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiWidth: 'a4 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?TextPosition: TextPosition * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiTextPosition: TextPosition seq * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a4 :> IConvertible) + 1 overload static member BoxPlot: [<Optional; DefaultParameterValue ((null :> obj))>] ?X: 'a0 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiX: 'a0 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Y: 'a1 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiY: 'a1 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a2 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?FillColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?Marker: Marker * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?WhiskerWidth: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?BoxPoints: BoxPoints * [<Optional; DefaultParameterValue ((null :> obj))>] ?BoxMean: BoxMean * [<Optional; DefaultParameterValue ((null :> obj))>] ?Jitter: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?PointPos: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?Orientation: Orientation * [<Optional; DefaultParameterValue ((null :> obj))>] ?OutlineColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?OutlineWidth: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?Outline: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?AlignmentGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?OffsetGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?Notched: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?NotchWidth: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?QuartileMethod: QuartileMethod * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a0 :> IConvertible and 'a1 :> IConvertible and 'a2 :> IConvertible) + 2 overloads static member Bubble: x: #IConvertible seq * y: #IConvertible seq * sizes: int seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiOpacity: float seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a2 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?TextPosition: TextPosition * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiTextPosition: TextPosition seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerOutline: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerSymbol: MarkerSymbol * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiMarkerSymbol: MarkerSymbol seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Marker: Marker * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineWidth: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?LineDash: DrawingStyle * [<Optional; DefaultParameterValue ((null :> obj))>] ?Line: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?AlignmentGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?OffsetGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?StackGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?Orientation: Orientation * [<Optional; DefaultParameterValue ((null :> obj))>] ?GroupNorm: GroupNorm * [<Optional; DefaultParameterValue ((false :> obj))>] ?UseWebGL: bool * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a2 :> IConvertible) + 1 overload static member Candlestick: ``open`` : #IConvertible seq * high: #IConvertible seq * low: #IConvertible seq * close: #IConvertible seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?X: 'a4 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiX: 'a4 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a5 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a5 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Line: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?IncreasingColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?Increasing: FinanceMarker * [<Optional; DefaultParameterValue ((null :> obj))>] ?DecreasingColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?Decreasing: FinanceMarker * [<Optional; DefaultParameterValue ((null :> obj))>] ?WhiskerWidth: float * [<Optional; DefaultParameterValue ((true :> obj))>] ?ShowXAxisRangeSlider: bool * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a4 :> IConvertible and 'a5 :> IConvertible) + 2 overloads static member Column: values: #IConvertible seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Keys: 'a1 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiKeys: 'a1 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiOpacity: float seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a2 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerOutline: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerPatternShape: PatternShape * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiMarkerPatternShape: PatternShape seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerPattern: Pattern * [<Optional; DefaultParameterValue ((null :> obj))>] ?Marker: Marker * [<Optional; DefaultParameterValue ((null :> obj))>] ?Base: #IConvertible * [<Optional; DefaultParameterValue ((null :> obj))>] ?Width: 'a4 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiWidth: 'a4 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?TextPosition: TextPosition * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiTextPosition: TextPosition seq * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a4 :> IConvertible) + 1 overload static member Contour: zData: #('a1 seq) seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?X: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiX: 'a2 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Y: 'a3 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiY: 'a3 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a4 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a4 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?ColorBar: ColorBar * [<Optional; DefaultParameterValue ((null :> obj))>] ?ColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowScale: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?ReverseScale: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Transpose: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContourLineColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContourLineDash: DrawingStyle * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContourLineSmoothing: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContourLine: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContoursColoring: ContourColoring * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContoursOperation: ConstraintOperation * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContoursType: ContourType * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowContourLabels: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?ContourLabelFont: Font * [<Optional; DefaultParameterValue ((null :> obj))>] ?Contours: Contours * [<Optional; DefaultParameterValue ((null :> obj))>] ?FillColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?NContours: int * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a3 :> IConvertible and 'a4 :> IConvertible) static member Funnel: x: #IConvertible seq * y: #IConvertible seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?Width: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?Offset: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a2 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?TextPosition: TextPosition * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiTextPosition: TextPosition seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Orientation: Orientation * [<Optional; DefaultParameterValue ((null :> obj))>] ?AlignmentGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?OffsetGroup: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?MarkerOutline: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?Marker: Marker * [<Optional; DefaultParameterValue ((null :> obj))>] ?TextInfo: TextInfo * [<Optional; DefaultParameterValue ((null :> obj))>] ?ConnectorLineColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?ConnectorLineStyle: DrawingStyle * [<Optional; DefaultParameterValue ((null :> obj))>] ?ConnectorFillColor: Color * [<Optional; DefaultParameterValue ((null :> obj))>] ?ConnectorLine: Line * [<Optional; DefaultParameterValue ((null :> obj))>] ?Connector: FunnelConnector * [<Optional; DefaultParameterValue ((null :> obj))>] ?InsideTextFont: Font * [<Optional; DefaultParameterValue ((null :> obj))>] ?OutsideTextFont: Font * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a2 :> IConvertible) static member Heatmap: zData: #('a1 seq) seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?X: 'a2 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiX: 'a2 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Y: 'a3 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiY: 'a3 seq seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?Name: string * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<Optional; DefaultParameterValue ((null :> obj))>] ?XGap: int * [<Optional; DefaultParameterValue ((null :> obj))>] ?YGap: int * [<Optional; DefaultParameterValue ((null :> obj))>] ?Text: 'a4 * [<Optional; DefaultParameterValue ((null :> obj))>] ?MultiText: 'a4 seq * [<Optional; DefaultParameterValue ((null :> obj))>] ?ColorBar: ColorBar * [<Optional; DefaultParameterValue ((null :> obj))>] ?ColorScale: Colorscale * [<Optional; DefaultParameterValue ((null :> obj))>] ?ShowScale: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?ReverseScale: bool * [<Optional; DefaultParameterValue ((null :> obj))>] ?ZSmooth: SmoothAlg * [<Optional; DefaultParameterValue ((null :> obj))>] ?Transpose: bool * [<Optional; DefaultParameterValue ((false :> obj))>] ?UseWebGL: bool * [<Optional; DefaultParameterValue ((false :> obj))>] ?ReverseYAxis: bool * [<Optional; DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart (requires 'a1 :> IConvertible and 'a2 :> IConvertible and 'a3 :> IConvertible and 'a4 :> IConvertible) + 1 overload ...
static member Chart.Line: xy: (#System.IConvertible * #System.IConvertible) seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?ShowMarkers: bool * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Name: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiOpacity: float seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Text: 'c * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiText: 'c seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?TextPosition: StyleParam.TextPosition * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiTextPosition: StyleParam.TextPosition seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerColorScale: StyleParam.Colorscale * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerOutline: Line * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerSymbol: StyleParam.MarkerSymbol * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiMarkerSymbol: StyleParam.MarkerSymbol seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Marker: TraceObjects.Marker * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineColor: Color * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineColorScale: StyleParam.Colorscale * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineWidth: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineDash: StyleParam.DrawingStyle * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Line: Line * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?AlignmentGroup: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?OffsetGroup: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?StackGroup: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Orientation: StyleParam.Orientation * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?GroupNorm: StyleParam.GroupNorm * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Fill: StyleParam.Fill * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?FillColor: Color * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?FillPattern: TraceObjects.Pattern * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((false :> obj))>] ?UseWebGL: bool * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart.GenericChart (requires 'c :> System.IConvertible)
static member Chart.Line: x: #System.IConvertible seq * y: #System.IConvertible seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?ShowMarkers: bool * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Name: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?ShowLegend: bool * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Opacity: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiOpacity: float seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Text: 'a2 * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiText: 'a2 seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?TextPosition: StyleParam.TextPosition * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiTextPosition: StyleParam.TextPosition seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerColor: Color * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerColorScale: StyleParam.Colorscale * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerOutline: Line * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MarkerSymbol: StyleParam.MarkerSymbol * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?MultiMarkerSymbol: StyleParam.MarkerSymbol seq * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Marker: TraceObjects.Marker * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineColor: Color * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineColorScale: StyleParam.Colorscale * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineWidth: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?LineDash: StyleParam.DrawingStyle * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Line: Line * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?AlignmentGroup: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?OffsetGroup: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?StackGroup: string * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Orientation: StyleParam.Orientation * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?GroupNorm: StyleParam.GroupNorm * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Fill: StyleParam.Fill * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?FillColor: Color * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?FillPattern: TraceObjects.Pattern * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((false :> obj))>] ?UseWebGL: bool * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((true :> obj))>] ?UseDefaults: bool -> GenericChart.GenericChart (requires 'a2 :> System.IConvertible)
val toObservations: series: TimeSeries.TimeSeries<'a,'b,'c,'d> -> ('a * 'b) seq
<summary>Turn a time series into a sequence of observations</summary>
<param name="series">A time-series</param>
<typeparam name="'a">The underlying data type</typeparam>
<typeparam name="'b">The date/time representation</typeparam>
<returns></returns>
val x: float<UnitSystems.SI.UnitNames.kelvin>
val y: System.DateTime
static member Chart.withTemplate: template: Template -> (GenericChart.GenericChart -> GenericChart.GenericChart)
module ChartTemplates from Plotly.NET
val light: Template
module GenericChart from Plotly.NET
<summary> Module to represent a GenericChart </summary>
val toChartHTML: gChart: GenericChart.GenericChart -> string
val lightFn: Dendro.Sunrise.DayLengthCache
module Sunrise from Bristlecone.Dendro
<summary>The sunrise equation can be used to calculate the time of sunrise and sunset for any latitude, longitude, and date.</summary>
<remarks>See: https://en.wikipedia.org/wiki/Sunrise_equation#Complete_calculation_on_Earth Adapted from the SolarCalc by NOAA. Source: https://dotnetfiddle.net/N3j5th</remarks>
Multiple items
type DayLengthCache = new: latitude: float<latitude> * longitude: float<longitude> * timeZone: string -> DayLengthCache member GetLight: date: DateTime -> DayLength
<summary>A cache that may be used in model computation where day lengths are continually accessed for the same dates over and over again. Stashes each calculated day length per latitude/longitude and time.</summary>

--------------------
new: latitude: float<Dendro.latitude> * longitude: float<Dendro.longitude> * timeZone: string -> Dendro.Sunrise.DayLengthCache
val lightFraction: TimeSeries.TimeSeries<float,System.DateTime,int<year>,System.TimeSpan>
val snd: tuple: ('T1 * 'T2) -> 'T2
val dt: System.DateTime
member Dendro.Sunrise.DayLengthCache.GetLight: date: System.DateTime -> Dendro.Sunrise.DayLength
val dayFraction: dayLength: Dendro.Sunrise.DayLength -> float
val x: float
val exampleShrub: Dendro.PlantIndividual.PlantIndividual<Dendro.Units.millimetre,System.DateTime,int<year>,System.TimeSpan>
Multiple items
namespace Bristlecone.Data

--------------------
namespace Microsoft.FSharp.Data
module PlantIndividual from Bristlecone.Data
module Csv from Bristlecone.Data.PlantIndividual
<summary> Load plant-specific time-series from CSV files. </summary>
val find: predicate: ('T -> bool) -> source: 'T seq -> 'T
val rw: Dendro.PlantIndividual.PlantIndividual<Dendro.Units.millimetre,DatingMethods.Annual,int<year>,int<year>>
Dendro.PlantIndividual.PlantIndividual.Identifier: ShortCode.ShortCode
property ShortCode.ShortCode.Value: string with get
module PlantIndividual from Bristlecone.Dendro
val toSubannual: plant: Dendro.PlantIndividual.PlantIndividual<'growthUnit,DatingMethods.Annual,int<year>,int<year>> -> Dendro.PlantIndividual.PlantIndividual<'growthUnit,System.DateTime,int<year>,System.TimeSpan>
<summary> Adapt an annual dendro-series to work with sub-annual resolution environmental data. Assumes that growth rings are discrete and that annual wood production has ended by 31st December (i.e. northern hemisphere). </summary>
val zipEnvironment: envName: StateId<'u> -> envData: TimeSeries<float<'u>,'date,'timeunit,'timespan> -> plant: Dendro.PlantIndividual.PlantIndividual<'growthUnit,'date,'timeunit,'timespan> -> Dendro.PlantIndividual.PlantIndividual<'growthUnit,'date,'timeunit,'timespan>
<summary>Attach an environmental time-series to a plant individual, for example for a local environmental condition or resource.</summary>
val result: ModelSystem.EstimationResult<System.DateTime,int<year>,System.TimeSpan>
val e: EstimationEngine.EstimationEngine<System.DateTime,System.TimeSpan,day,1>
union case Conditioning.Conditioning.Custom: CodedMap<float<'u>> -> Conditioning.Conditioning<'u>
Multiple items
module Map from Bristlecone

--------------------
module Map from Microsoft.FSharp.Collections

--------------------
type Map<'Key,'Value (requires comparison)> = interface IReadOnlyDictionary<'Key,'Value> interface IReadOnlyCollection<KeyValuePair<'Key,'Value>> interface IEnumerable interface IStructuralEquatable interface IComparable interface IEnumerable<KeyValuePair<'Key,'Value>> interface ICollection<KeyValuePair<'Key,'Value>> interface IDictionary<'Key,'Value> new: elements: ('Key * 'Value) seq -> Map<'Key,'Value> member Add: key: 'Key * value: 'Value -> Map<'Key,'Value> ...

--------------------
new: elements: ('Key * 'Value) seq -> Map<'Key,'Value>
val ofList: elements: ('Key * 'T) list -> Map<'Key,'T> (requires comparison)
property StateId.Code: ShortCode.ShortCode with get
val fitDendro: engine: EstimationEngine.EstimationEngine<'a,'b,'u,1> -> endCondition: EstimationEngine.EndCondition -> system: ModelSystem.ModelSystem<'u> -> fitMethod: Bristlecone.FittingMethod -> growthSeriesId: ShortCode.ShortCode -> plant: Dendro.PlantIndividual.PlantIndividual<'v,'a,'c,'b> -> ModelSystem.EstimationResult<'a,'c,'b> (requires comparison and comparison)
<summary>Fit a model to plant growth time-series. The plant individual's growth data is always labelled as `x`.</summary>
<param name="engine">A configured estimation engine</param>
<param name="endCondition">The end condition to apply to optimisation</param>
<param name="system">The compiled model system for analysis</param>
<param name="plant">A plant individual</param>
<returns>An estimation result for the given plant, model and fitting method (engine)</returns>
type FittingMethod = | AbsoluteGrowth | CumulativeGrowth
union case Bristlecone.FittingMethod.CumulativeGrowth: Bristlecone.FittingMethod
val outputDir: string
namespace Bristlecone.Data
module Series from Bristlecone.Data
<summary>Functions for loading and saving predicted vs observed time-series for model fits</summary>
val d: System.DateTime
Multiple items
[<Struct>] type DateTime = new: date: DateOnly * time: TimeOnly -> unit + 16 overloads member Add: value: TimeSpan -> DateTime member AddDays: value: float -> DateTime member AddHours: value: float -> DateTime member AddMicroseconds: value: float -> DateTime member AddMilliseconds: value: float -> DateTime member AddMinutes: value: float -> DateTime member AddMonths: months: int -> DateTime member AddSeconds: value: float -> DateTime member AddTicks: value: int64 -> DateTime ...
<summary>Represents an instant in time, typically expressed as a date and time of day.</summary>

--------------------
System.DateTime ()
   (+0 other overloads)
System.DateTime(ticks: int64) : System.DateTime
   (+0 other overloads)
System.DateTime(date: System.DateOnly, time: System.TimeOnly) : System.DateTime
   (+0 other overloads)
System.DateTime(ticks: int64, kind: System.DateTimeKind) : System.DateTime
   (+0 other overloads)
System.DateTime(date: System.DateOnly, time: System.TimeOnly, kind: System.DateTimeKind) : System.DateTime
   (+0 other overloads)
System.DateTime(year: int, month: int, day: int) : System.DateTime
   (+0 other overloads)
System.DateTime(year: int, month: int, day: int, calendar: System.Globalization.Calendar) : System.DateTime
   (+0 other overloads)
System.DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : System.DateTime
   (+0 other overloads)
System.DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: System.DateTimeKind) : System.DateTime
   (+0 other overloads)
System.DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: System.Globalization.Calendar) : System.DateTime
   (+0 other overloads)
System.DateTime.ToShortDateString() : string
val cachedResultSeries: Map<ShortCode.ShortCode,(ModelSystem.FitValue * string) seq>
val load: toSeries: ((ModelSystem.FitValue * string) seq -> 'a) -> directory: string -> subject: string -> modelId: string -> (System.Guid * Map<ShortCode.ShortCode,'a>) seq
val id: x: 'T -> 'T
val toList: source: 'T seq -> 'T list
val head: source: 'T seq -> 'T
val v: System.Collections.Generic.KeyValuePair<ShortCode.ShortCode,(ModelSystem.FitValue * string) seq>
val fit: (System.DateTime * float<ModelSystem.state>) seq
property System.Collections.Generic.KeyValuePair.Value: (ModelSystem.FitValue * string) seq with get
<summary>Gets the value in the key/value pair.</summary>
<returns>A <typeparamref name="TValue" /> that is the value of the <see cref="T:System.Collections.Generic.KeyValuePair`2" />.</returns>
val x: ModelSystem.FitValue
val y: string
System.DateTime.Parse(s: string) : System.DateTime
System.DateTime.Parse(s: string, provider: System.IFormatProvider) : System.DateTime
System.DateTime.Parse(s: System.ReadOnlySpan<char>, provider: System.IFormatProvider) : System.DateTime
System.DateTime.Parse(s: string, provider: System.IFormatProvider, styles: System.Globalization.DateTimeStyles) : System.DateTime
System.DateTime.Parse(s: System.ReadOnlySpan<char>, ?provider: System.IFormatProvider, ?styles: System.Globalization.DateTimeStyles) : System.DateTime
ModelSystem.FitValue.Fit: float<ModelSystem.state>
val obs: (System.DateTime * float<ModelSystem.state>) seq
ModelSystem.FitValue.Obs: float<ModelSystem.state>
static member Chart.combine: gCharts: GenericChart.GenericChart seq -> GenericChart.GenericChart
static member Chart.Grid: [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?SubPlots: (StyleParam.LinearAxisId * StyleParam.LinearAxisId) array array * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?XAxes: StyleParam.LinearAxisId array * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?YAxes: StyleParam.LinearAxisId array * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?RowOrder: StyleParam.LayoutGridRowOrder * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Pattern: StyleParam.LayoutGridPattern * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?XGap: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?YGap: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Domain: LayoutObjects.Domain * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?XSide: StyleParam.LayoutGridXSide * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?YSide: StyleParam.LayoutGridYSide -> (#('a1 seq) -> GenericChart.GenericChart) (requires 'a1 :> GenericChart.GenericChart seq)
static member Chart.Grid: nRows: int * nCols: int * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?SubPlots: (StyleParam.LinearAxisId * StyleParam.LinearAxisId) array array * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?XAxes: StyleParam.LinearAxisId array * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?YAxes: StyleParam.LinearAxisId array * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?RowOrder: StyleParam.LayoutGridRowOrder * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Pattern: StyleParam.LayoutGridPattern * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?XGap: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?YGap: float * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?Domain: LayoutObjects.Domain * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?XSide: StyleParam.LayoutGridXSide * [<System.Runtime.InteropServices.Optional; System.Runtime.InteropServices.DefaultParameterValue ((null :> obj))>] ?YSide: StyleParam.LayoutGridYSide -> (#(GenericChart.GenericChart seq) -> GenericChart.GenericChart)

Type something to start searching.