
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
// 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
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
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:
- For temperature, growing degree days.
- For light, the total photoperiod within the month.
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
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
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:
- load all of the ring width data from a CSV file;
- find the specifc shrub for this example (S8N0125A);
- change the date of each ring from a year (e.g. 1980) to a date that - when using a daily-resolution model and environment data - will compare the observation and prediction at the end of the growing season (e.g. 1980-12-31);
- attach the temperature and light environment data for analysis.
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
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<unit>)</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)