From d9b83b76c5f6851abd86c8fe04c3235fd942aa4d Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Wed, 27 Nov 2024 10:56:26 +0000 Subject: [PATCH] build based on b55efd65 --- dev/404.html | 4 +- dev/api/dimensions.html | 56 ++++++------ dev/api/lookuparrays.html | 88 +++++++++---------- dev/api/reference.html | 78 ++++++++-------- ...TmDqi.js => api_dimensions.md.DD3cOSSp.js} | 48 +++++----- ....js => api_dimensions.md.DD3cOSSp.lean.js} | 48 +++++----- ...f-q.js => api_lookuparrays.md.C48veaQd.js} | 80 ++++++++--------- ...s => api_lookuparrays.md.C48veaQd.lean.js} | 80 ++++++++--------- ...bldTqp.js => api_reference.md.DP_ai0mp.js} | 68 +++++++------- ...n.js => api_reference.md.DP_ai0mp.lean.js} | 68 +++++++------- dev/assets/app.DPWlp7eu.js | 1 - dev/assets/app.Sk_xtsRB.js | 1 + ...s.md.DvNeQ43N.js => basics.md.DvSSF084.js} | 2 +- ...43N.lean.js => basics.md.DvSSF084.lean.js} | 2 +- ....DUhrmJhF.js => broadcasts.md.D98V6alE.js} | 2 +- ...lean.js => broadcasts.md.D98V6alE.lean.js} | 2 +- .../chunks/@localSearchIndexroot.WeONpZsl.js | 1 + .../chunks/@localSearchIndexroot.zSG8EBw1.js | 1 - ...Vfz4aJ.js => VPLocalSearchBox.Bitc2Dar.js} | 4 +- ...work.Brp_kw4H.js => framework.60YQGL-0.js} | 10 +-- dev/assets/chunks/theme.BgWk1Cn2.js | 2 + dev/assets/chunks/theme.DDyAget_.js | 2 - ...uda.md.BXQXZlS4.js => cuda.md.Dq_6ILaQ.js} | 2 +- ...XZlS4.lean.js => cuda.md.Dq_6ILaQ.lean.js} | 2 +- ...BFfPL.lean.js => dimarrays.md.DsHVo8VO.js} | 28 +++--- ...BFfPL.js => dimarrays.md.DsHVo8VO.lean.js} | 28 +++--- ....ChH0lYl4.js => dimensions.md.BZOXPG9N.js} | 2 +- ...lean.js => dimensions.md.BZOXPG9N.lean.js} | 2 +- ....Cfuf4AI0.js => diskarrays.md.Ccioefu8.js} | 2 +- ...lean.js => diskarrays.md.Ccioefu8.lean.js} | 2 +- ...vLFMnJ_.js => extending_dd.md.1GiVmXy5.js} | 2 +- ...an.js => extending_dd.md.1GiVmXy5.lean.js} | 2 +- ...md.58vnLvH3.js => get_info.md.BbLR9nNK.js} | 4 +- ...3.lean.js => get_info.md.BbLR9nNK.lean.js} | 4 +- ....md.BzT1eUq0.js => groupby.md.BaWubqAT.js} | 4 +- ...q0.lean.js => groupby.md.BaWubqAT.lean.js} | 4 +- ...ex.md.C2X_uMqs.js => index.md.CdZfAwlh.js} | 2 +- ...uMqs.lean.js => index.md.CdZfAwlh.lean.js} | 2 +- dev/assets/integrations.md.DI7gl9eu.js | 1 - dev/assets/integrations.md.DI7gl9eu.lean.js | 1 - dev/assets/integrations.md.Dc7kY-MO.js | 1 + dev/assets/integrations.md.Dc7kY-MO.lean.js | 1 + ....js => object_modification.md.CITpgP_p.js} | 2 +- ...> object_modification.md.CITpgP_p.lean.js} | 2 +- ...ts.md.oQals6G0.js => plots.md.ClRtwxbW.js} | 2 +- ...s6G0.lean.js => plots.md.ClRtwxbW.lean.js} | 2 +- ...d.BjCFWsJn.js => selectors.md.CPyvJTAL.js} | 2 +- ....lean.js => selectors.md.CPyvJTAL.lean.js} | 2 +- ...s.md.CxHR72sg.js => stacks.md.BzNwO13T.js} | 6 +- ...2sg.lean.js => stacks.md.BzNwO13T.lean.js} | 6 +- ...s.md.BlXc5nW9.js => tables.md.DMBpxVNO.js} | 4 +- ...nW9.lean.js => tables.md.DMBpxVNO.lean.js} | 4 +- dev/basics.html | 10 +-- dev/broadcasts.html | 10 +-- dev/cuda.html | 10 +-- dev/dimarrays.html | 34 +++---- dev/dimensions.html | 10 +-- dev/diskarrays.html | 10 +-- dev/extending_dd.html | 10 +-- dev/get_info.html | 14 +-- dev/groupby.html | 20 ++--- dev/hashmap.json | 2 +- dev/index.html | 10 +-- dev/integrations.html | 10 +-- dev/object_modification.html | 18 ++-- dev/plots.html | 10 +-- dev/selectors.html | 14 +-- dev/stacks.html | 14 +-- dev/tables.html | 14 +-- 69 files changed, 498 insertions(+), 498 deletions(-) rename dev/assets/{api_dimensions.md.BdeTmDqi.js => api_dimensions.md.DD3cOSSp.js} (97%) rename dev/assets/{api_dimensions.md.BdeTmDqi.lean.js => api_dimensions.md.DD3cOSSp.lean.js} (97%) rename dev/assets/{api_lookuparrays.md.CXdh9f-q.js => api_lookuparrays.md.C48veaQd.js} (94%) rename dev/assets/{api_lookuparrays.md.CXdh9f-q.lean.js => api_lookuparrays.md.C48veaQd.lean.js} (94%) rename dev/assets/{api_reference.md.BrbldTqp.js => api_reference.md.DP_ai0mp.js} (98%) rename dev/assets/{api_reference.md.BrbldTqp.lean.js => api_reference.md.DP_ai0mp.lean.js} (98%) delete mode 100644 dev/assets/app.DPWlp7eu.js create mode 100644 dev/assets/app.Sk_xtsRB.js rename dev/assets/{basics.md.DvNeQ43N.js => basics.md.DvSSF084.js} (99%) rename dev/assets/{basics.md.DvNeQ43N.lean.js => basics.md.DvSSF084.lean.js} (99%) rename dev/assets/{broadcasts.md.DUhrmJhF.js => broadcasts.md.D98V6alE.js} (99%) rename dev/assets/{broadcasts.md.DUhrmJhF.lean.js => broadcasts.md.D98V6alE.lean.js} (99%) create mode 100644 dev/assets/chunks/@localSearchIndexroot.WeONpZsl.js delete mode 100644 dev/assets/chunks/@localSearchIndexroot.zSG8EBw1.js rename dev/assets/chunks/{VPLocalSearchBox.dNVfz4aJ.js => VPLocalSearchBox.Bitc2Dar.js} (66%) rename dev/assets/chunks/{framework.Brp_kw4H.js => framework.60YQGL-0.js} (66%) create mode 100644 dev/assets/chunks/theme.BgWk1Cn2.js delete mode 100644 dev/assets/chunks/theme.DDyAget_.js rename dev/assets/{cuda.md.BXQXZlS4.js => cuda.md.Dq_6ILaQ.js} (98%) rename dev/assets/{cuda.md.BXQXZlS4.lean.js => cuda.md.Dq_6ILaQ.lean.js} (98%) rename dev/assets/{dimarrays.md.u5JBFfPL.lean.js => dimarrays.md.DsHVo8VO.js} (97%) rename dev/assets/{dimarrays.md.u5JBFfPL.js => dimarrays.md.DsHVo8VO.lean.js} (97%) rename dev/assets/{dimensions.md.ChH0lYl4.js => dimensions.md.BZOXPG9N.js} (97%) rename dev/assets/{dimensions.md.ChH0lYl4.lean.js => dimensions.md.BZOXPG9N.lean.js} (97%) rename dev/assets/{diskarrays.md.Cfuf4AI0.js => diskarrays.md.Ccioefu8.js} (89%) rename dev/assets/{diskarrays.md.Cfuf4AI0.lean.js => diskarrays.md.Ccioefu8.lean.js} (89%) rename dev/assets/{extending_dd.md.CvLFMnJ_.js => extending_dd.md.1GiVmXy5.js} (99%) rename dev/assets/{extending_dd.md.CvLFMnJ_.lean.js => extending_dd.md.1GiVmXy5.lean.js} (99%) rename dev/assets/{get_info.md.58vnLvH3.js => get_info.md.BbLR9nNK.js} (99%) rename dev/assets/{get_info.md.58vnLvH3.lean.js => get_info.md.BbLR9nNK.lean.js} (99%) rename dev/assets/{groupby.md.BzT1eUq0.js => groupby.md.BaWubqAT.js} (99%) rename dev/assets/{groupby.md.BzT1eUq0.lean.js => groupby.md.BaWubqAT.lean.js} (99%) rename dev/assets/{index.md.C2X_uMqs.js => index.md.CdZfAwlh.js} (90%) rename dev/assets/{index.md.C2X_uMqs.lean.js => index.md.CdZfAwlh.lean.js} (90%) delete mode 100644 dev/assets/integrations.md.DI7gl9eu.js delete mode 100644 dev/assets/integrations.md.DI7gl9eu.lean.js create mode 100644 dev/assets/integrations.md.Dc7kY-MO.js create mode 100644 dev/assets/integrations.md.Dc7kY-MO.lean.js rename dev/assets/{object_modification.md.DkAIeZDw.js => object_modification.md.CITpgP_p.js} (99%) rename dev/assets/{object_modification.md.DkAIeZDw.lean.js => object_modification.md.CITpgP_p.lean.js} (99%) rename dev/assets/{plots.md.oQals6G0.js => plots.md.ClRtwxbW.js} (99%) rename dev/assets/{plots.md.oQals6G0.lean.js => plots.md.ClRtwxbW.lean.js} (99%) rename dev/assets/{selectors.md.BjCFWsJn.js => selectors.md.CPyvJTAL.js} (99%) rename dev/assets/{selectors.md.BjCFWsJn.lean.js => selectors.md.CPyvJTAL.lean.js} (99%) rename dev/assets/{stacks.md.CxHR72sg.js => stacks.md.BzNwO13T.js} (99%) rename dev/assets/{stacks.md.CxHR72sg.lean.js => stacks.md.BzNwO13T.lean.js} (99%) rename dev/assets/{tables.md.BlXc5nW9.js => tables.md.DMBpxVNO.js} (99%) rename dev/assets/{tables.md.BlXc5nW9.lean.js => tables.md.DMBpxVNO.lean.js} (99%) diff --git a/dev/404.html b/dev/404.html index 7d0da70f0..9dfd10364 100644 --- a/dev/404.html +++ b/dev/404.html @@ -9,7 +9,7 @@ - + @@ -19,7 +19,7 @@
- + \ No newline at end of file diff --git a/dev/api/dimensions.html b/dev/api/dimensions.html index 7e60562a5..898ad6dc5 100644 --- a/dev/api/dimensions.html +++ b/dev/api/dimensions.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -22,7 +22,7 @@
Skip to content

Dimensions

Dimensions are kept in the sub-module Dimensions.

DimensionalData.Dimensions Module
julia
Dimensions

Sub-module for Dimensions wrappers, and operations on them used in DimensionalData.jl.

To load Dimensions types and methods into scope:

julia
using DimensionalData
-using DimensionalData.Dimensions

source

Dimensions have a type-hierarchy that organises plotting and dimension matching.

DimensionalData.Dimensions.Dimension Type
julia
Dimension

Abstract supertype of all dimension types.

Example concrete implementations are X, Y, Z, Ti (Time), and the custom Dim dimension.

Dimensions label the axes of an AbstractDimArray, or other dimensional objects, and are used to index into an array.

They may also wrap lookup values for each array axis. This may be any AbstractVector matching the array axis length, but will usually be converted to a Lookup when use in a constructed object.

A Lookup gives more details about the dimension, such as that it is Categorical or Sampled as Points or Intervals along some transect. DimensionalData will attempt to guess the lookup from the passed-in index value.

Example:

julia
using DimensionalData, Dates
+using DimensionalData.Dimensions

source

Dimensions have a type-hierarchy that organises plotting and dimension matching.

DimensionalData.Dimensions.Dimension Type
julia
Dimension

Abstract supertype of all dimension types.

Example concrete implementations are X, Y, Z, Ti (Time), and the custom Dim dimension.

Dimensions label the axes of an AbstractDimArray, or other dimensional objects, and are used to index into an array.

They may also wrap lookup values for each array axis. This may be any AbstractVector matching the array axis length, but will usually be converted to a Lookup when use in a constructed object.

A Lookup gives more details about the dimension, such as that it is Categorical or Sampled as Points or Intervals along some transect. DimensionalData will attempt to guess the lookup from the passed-in index value.

Example:

julia
using DimensionalData, Dates
 
 x = X(2:2:10)
 y = Y(['a', 'b', 'c'])
@@ -74,21 +74,21 @@
  Ti Sampled{DateTime} DateTime("2021-01-01T00:00:00"):Month(1):DateTime("2021-12-01T00:00:00") ForwardOrdered Regular Points
 └──────────────────────────────────────────────────────────────────────────────┘
    2021-01-01T00:00:00   2021-02-01T00:00:00   2021-12-01T00:00:00
- 4    0.0                   0.0                      0.0

source

DimensionalData.Dimensions.DependentDim Type
julia
DependentDim <: Dimension

Abstract supertype for dependent dimensions. These will plot on the Y axis.

source

DimensionalData.Dimensions.IndependentDim Type
julia
IndependentDim <: Dimension

Abstract supertype for independent dimensions. These will plot on the X axis.

source

DimensionalData.Dimensions.XDim Type
julia
XDim <: IndependentDim

Abstract supertype for all X dimensions.

source

DimensionalData.Dimensions.YDim Type
julia
YDim <: DependentDim

Abstract supertype for all Y dimensions.

source

DimensionalData.Dimensions.ZDim Type
julia
ZDim <: DependentDim

Abstract supertype for all Z dimensions.

source

DimensionalData.Dimensions.TimeDim Type
julia
TimeDim <: IndependentDim

Abstract supertype for all time dimensions.

In a TimeDime with Interval sampling the locus will automatically be set to Start(). Dates and times generally refer to the start of a month, hour, second etc., not the central point as is more common with spatial data. `

source

DimensionalData.Dimensions.X Type
julia
X <: XDim
+ 4    0.0                   0.0                      0.0

source

DimensionalData.Dimensions.DependentDim Type
julia
DependentDim <: Dimension

Abstract supertype for dependent dimensions. These will plot on the Y axis.

source

DimensionalData.Dimensions.IndependentDim Type
julia
IndependentDim <: Dimension

Abstract supertype for independent dimensions. These will plot on the X axis.

source

DimensionalData.Dimensions.XDim Type
julia
XDim <: IndependentDim

Abstract supertype for all X dimensions.

source

DimensionalData.Dimensions.YDim Type
julia
YDim <: DependentDim

Abstract supertype for all Y dimensions.

source

DimensionalData.Dimensions.ZDim Type
julia
ZDim <: DependentDim

Abstract supertype for all Z dimensions.

source

DimensionalData.Dimensions.TimeDim Type
julia
TimeDim <: IndependentDim

Abstract supertype for all time dimensions.

In a TimeDime with Interval sampling the locus will automatically be set to Start(). Dates and times generally refer to the start of a month, hour, second etc., not the central point as is more common with spatial data. `

source

DimensionalData.Dimensions.X Type
julia
X <: XDim
 
-X(val=:)

X Dimension. X <: XDim <: IndependentDim

Examples

julia
xdim = X(2:2:10)
julia
val = A[X(1)]
julia
mean(A; dims=X)

source

DimensionalData.Dimensions.Y Type
julia
Y <: YDim
+X(val=:)

X Dimension. X <: XDim <: IndependentDim

Examples

julia
xdim = X(2:2:10)
julia
val = A[X(1)]
julia
mean(A; dims=X)

source

DimensionalData.Dimensions.Y Type
julia
Y <: YDim
 
-Y(val=:)

Y Dimension. Y <: YDim <: DependentDim

Examples

julia
ydim = Y(['a', 'b', 'c'])
julia
val = A[Y(1)]
julia
mean(A; dims=Y)

source

DimensionalData.Dimensions.Z Type
julia
Z <: ZDim
+Y(val=:)

Y Dimension. Y <: YDim <: DependentDim

Examples

julia
ydim = Y(['a', 'b', 'c'])
julia
val = A[Y(1)]
julia
mean(A; dims=Y)

source

DimensionalData.Dimensions.Z Type
julia
Z <: ZDim
 
-Z(val=:)

Z Dimension. Z <: ZDim <: Dimension

Example:

julia
zdim = Z(10:10:100)
julia
val = A[Z(1)]
julia
mean(A; dims=Z)

source

DimensionalData.Dimensions.Ti Type

m Ti <: TimeDim

Ti(val=:)

Time Dimension. Ti <: TimeDim <: IndependentDim

Time is already used by Dates, and T is a common type parameter, We use Ti to avoid clashes.

Example:

julia
timedim = Ti(DateTime(2021, 1):Month(1):DateTime(2021, 12))
julia
val = A[Ti(1)]
julia
mean(A; dims=Ti)

source

DimensionalData.Dimensions.Dim Type
julia
Dim{S}(val=:)

A generic dimension. For use when custom dims are required when loading data from a file. Can be used as keyword arguments for indexing.

Dimension types take precedence over same named Dim types when indexing with symbols, or e.g. creating Tables.jl keys.

julia
julia> dim = Dim{:custom}(['a', 'b', 'c'])
-custom ['a', 'b', 'c']

source

DimensionalData.Dimensions.AnonDim Type
julia
AnonDim <: Dimension
+Z(val=:)

Z Dimension. Z <: ZDim <: Dimension

Example:

julia
zdim = Z(10:10:100)
julia
val = A[Z(1)]
julia
mean(A; dims=Z)

source

DimensionalData.Dimensions.Ti Type

m Ti <: TimeDim

Ti(val=:)

Time Dimension. Ti <: TimeDim <: IndependentDim

Time is already used by Dates, and T is a common type parameter, We use Ti to avoid clashes.

Example:

julia
timedim = Ti(DateTime(2021, 1):Month(1):DateTime(2021, 12))
julia
val = A[Ti(1)]
julia
mean(A; dims=Ti)

source

DimensionalData.Dimensions.Dim Type
julia
Dim{S}(val=:)

A generic dimension. For use when custom dims are required when loading data from a file. Can be used as keyword arguments for indexing.

Dimension types take precedence over same named Dim types when indexing with symbols, or e.g. creating Tables.jl keys.

julia
julia> dim = Dim{:custom}(['a', 'b', 'c'])
+custom ['a', 'b', 'c']

source

DimensionalData.Dimensions.AnonDim Type
julia
AnonDim <: Dimension
 
-AnonDim()

Anonymous dimension. Used when extra dimensions are created, such as during transpose of a vector.

source

DimensionalData.Dimensions.@dim Macro
julia
@dim typ [supertype=Dimension] [label::String=string(typ)]

Macro to easily define new dimensions.

The supertype will be inserted into the type of the dim. The default is simply YourDim <: Dimension.

Making a Dimension inherit from XDim, YDim, ZDim or TimeDim will affect automatic plot layout and other methods that dispatch on these types. <: YDim are plotted on the Y axis, <: XDim on the X axis, etc.

label is used in plots and similar, if the dimension is short for a longer word.

Example:

julia
using DimensionalData
+AnonDim()

Anonymous dimension. Used when extra dimensions are created, such as during transpose of a vector.

source

DimensionalData.Dimensions.@dim Macro
julia
@dim typ [supertype=Dimension] [label::String=string(typ)]

Macro to easily define new dimensions.

The supertype will be inserted into the type of the dim. The default is simply YourDim <: Dimension.

Making a Dimension inherit from XDim, YDim, ZDim or TimeDim will affect automatic plot layout and other methods that dispatch on these types. <: YDim are plotted on the Y axis, <: XDim on the X axis, etc.

label is used in plots and similar, if the dimension is short for a longer word.

Example:

julia
using DimensionalData
 using DimensionalData: @dim, YDim, XDim
 @dim Lat YDim "Latitude"
 @dim Lon XDim "Longitude"
-# output

source

Exported methods

These are widely useful methods for working with dimensions.

DimensionalData.Dimensions.dims Function
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
+# output

source

Exported methods

These are widely useful methods for working with dimensions.

DimensionalData.Dimensions.dims Function
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
 dims(x, query...) => Tuple{Vararg{Dimension}}

Get the dimension(s) matching the type(s) of the query dimension.

Lookup can be an Int or an Dimension, or a tuple containing any combination of either.

Arguments

  • x: any object with a dims method, or a Tuple of Dimension.

  • query: Tuple or a single Dimension or Dimension Type.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(2, 3, 2), (X, Y, Z))
@@ -102,7 +102,7 @@
  1.0  1.0  1.0
 
 julia> dims(A, (X, Y))
-( X,  Y)

source

DimensionalData.Dimensions.otherdims Function
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
+( X,  Y)

source

DimensionalData.Dimensions.otherdims Function
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -110,7 +110,7 @@
 ( Y,  Z)
 
 julia> otherdims(A, (Y, Z))
-( X)

source

DimensionalData.Dimensions.dimnum Function
julia
dimnum(x, query::Tuple) => NTuple{Int}
+( X)

source

DimensionalData.Dimensions.dimnum Function
julia
dimnum(x, query::Tuple) => NTuple{Int}
 dimnum(x, query) => Int

Get the number(s) of Dimension(s) as ordered in the dimensions of an object.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple, Array or single Dimension or dimension Type.

The return type will be a Tuple of Int or a single Int, depending on whether query is a Tuple or single Dimension.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
@@ -119,7 +119,7 @@
 (3, 1, 2)
 
 julia> dimnum(A, Y)
-2

source

DimensionalData.Dimensions.hasdim Function
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
+2

source

DimensionalData.Dimensions.hasdim Function
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
 hasdim([f], x, query...) => NTuple{Bool}
 hasdim([f], x, query) => Bool

Check if an object x has dimensions that match or inherit from the query dimensions.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

Check if an object or tuple contains an Dimension, or a tuple of dimensions.

Example

julia
julia> using DimensionalData
 
@@ -132,13 +132,13 @@
 (true, true, true)
 
 julia> hasdim(A, Ti)
-false

source

Non-exported methods

DimensionalData.Dimensions.lookup Function
julia
lookup(x::Dimension) => Lookup
+false

source

Non-exported methods

DimensionalData.Dimensions.lookup Function
julia
lookup(x::Dimension) => Lookup
 lookup(x, [dims::Tuple]) => Tuple{Vararg{Lookup}}
 lookup(x::Tuple) => Tuple{Vararg{Lookup}}
-lookup(x, dim) => Lookup

Returns the Lookup of a dimension. This dictates properties of the dimension such as array axis and lookup order, and sampling properties.

dims can be a Dimension, a dimension type, or a tuple of either.

This is separate from val in that it will only work when dimensions actually contain an AbstractArray lookup, and can be used on a DimArray or DimStack to retrieve all lookups, as there is no ambiguity of meaning as there is with val.

source

DimensionalData.Dimensions.label Function
julia
label(x) => String
+lookup(x, dim) => Lookup

Returns the Lookup of a dimension. This dictates properties of the dimension such as array axis and lookup order, and sampling properties.

dims can be a Dimension, a dimension type, or a tuple of either.

This is separate from val in that it will only work when dimensions actually contain an AbstractArray lookup, and can be used on a DimArray or DimStack to retrieve all lookups, as there is no ambiguity of meaning as there is with val.

source

DimensionalData.Dimensions.label Function
julia
label(x) => String
 label(x, dims::Tuple) => NTuple{N,String}
 label(x, dim) => String
-label(xs::Tuple) => NTuple{N,String}

Get a plot label for data or a dimension. This will include the name and units if they exist, and anything else that should be shown on a plot.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.format Function
julia
format(dims, x) => Tuple{Vararg{Dimension,N}}

Format the passed-in dimension(s) dims to match the object x.

Errors are thrown if dims don't match the array dims or size, and any fields holding Auto- objects are filled with guessed objects.

If a Lookup hasn't been specified, a lookup is chosen based on the type and element type of the values.

source

DimensionalData.Dimensions.dims2indices Function
julia
dims2indices(dim::Dimension, I) => NTuple{Union{Colon,AbstractArray,Int}}

Convert a Dimension or Selector I to indices of Int, AbstractArray or Colon.

source

DimensionalData.Dimensions.Lookups.selectindices Function
julia
selectindices(lookups, selectors)

Converts Selector to regular indices.

source

Primitive methods

These low-level methods are really for internal use, but can be useful for writing dimensional algorithms.

They are not guaranteed to keep their interface, but usually will.

DimensionalData.Dimensions.commondims Function
julia
commondims([f], x, query) => Tuple{Vararg{Dimension}}

This is basically dims(x, query) where the order of the original is kept, unlike dims where the query tuple determines the order

Also unlike dims,commondims always returns a Tuple, no matter the input. No errors are thrown if dims are absent from either x or query.

f is <: by default, but can be >: to sort abstract types by concrete types.

julia
julia> using DimensionalData, .Dimensions
+label(xs::Tuple) => NTuple{N,String}

Get a plot label for data or a dimension. This will include the name and units if they exist, and anything else that should be shown on a plot.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.format Function
julia
format(dims, x) => Tuple{Vararg{Dimension,N}}

Format the passed-in dimension(s) dims to match the object x.

Errors are thrown if dims don't match the array dims or size, and any fields holding Auto- objects are filled with guessed objects.

If a Lookup hasn't been specified, a lookup is chosen based on the type and element type of the values.

source

DimensionalData.Dimensions.dims2indices Function
julia
dims2indices(dim::Dimension, I) => NTuple{Union{Colon,AbstractArray,Int}}

Convert a Dimension or Selector I to indices of Int, AbstractArray or Colon.

source

DimensionalData.Dimensions.Lookups.selectindices Function
julia
selectindices(lookups, selectors)

Converts Selector to regular indices.

source

Primitive methods

These low-level methods are really for internal use, but can be useful for writing dimensional algorithms.

They are not guaranteed to keep their interface, but usually will.

DimensionalData.Dimensions.commondims Function
julia
commondims([f], x, query) => Tuple{Vararg{Dimension}}

This is basically dims(x, query) where the order of the original is kept, unlike dims where the query tuple determines the order

Also unlike dims,commondims always returns a Tuple, no matter the input. No errors are thrown if dims are absent from either x or query.

f is <: by default, but can be >: to sort abstract types by concrete types.

julia
julia> using DimensionalData, .Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -149,9 +149,9 @@
 ( X,  Z)
 
 julia> commondims(A, Ti)
-()

source

DimensionalData.Dimensions.name2dim Function
julia
name2dim(s::Symbol) => Dimension
+()

source

DimensionalData.Dimensions.name2dim Function
julia
name2dim(s::Symbol) => Dimension
 name2dim(dims...) => Tuple{Dimension,Vararg}
-name2dim(dims::Tuple) => Tuple{Dimension,Vararg}

Convert a symbol to a dimension object. :X, :Y, :Ti etc will be converted to X(), Y(), Ti(), as with any other dims generated with the @dim macro.

All other Symbols S will generate Dim{S}() dimensions.

source

DimensionalData.Dimensions.reducedims Function
julia
reducedims(x, dimstoreduce) => Tuple{Vararg{Dimension}}

Replace the specified dimensions with an index of length 1. This is usually to match a new array size where an axis has been reduced with a method like mean or reduce to a length of 1, but the number of dimensions has not changed.

Lookup traits are also updated to correspond to the change in cell step, sampling type and order.

source

DimensionalData.Dimensions.swapdims Function
julia
swapdims(x::T, newdims) => T
+name2dim(dims::Tuple) => Tuple{Dimension,Vararg}

Convert a symbol to a dimension object. :X, :Y, :Ti etc will be converted to X(), Y(), Ti(), as with any other dims generated with the @dim macro.

All other Symbols S will generate Dim{S}() dimensions.

source

DimensionalData.Dimensions.reducedims Function
julia
reducedims(x, dimstoreduce) => Tuple{Vararg{Dimension}}

Replace the specified dimensions with an index of length 1. This is usually to match a new array size where an axis has been reduced with a method like mean or reduce to a length of 1, but the number of dimensions has not changed.

Lookup traits are also updated to correspond to the change in cell step, sampling type and order.

source

DimensionalData.Dimensions.swapdims Function
julia
swapdims(x::T, newdims) => T
 swapdims(dims::Tuple, newdims) => Tuple{Vararg{Dimension}}

Swap dimensions for the passed in dimensions, in the order passed.

Passing in the Dimension types rewraps the dimension index, keeping the index values and metadata, while constructed Dimension objects replace the original dimension. nothing leaves the original dimension as-is.

Arguments

  • x: any object with a dims method or a Tuple of Dimension.

  • newdim: Tuple of Dimension or dimension Type.

Example

julia
using DimensionalData
 A = ones(X(2), Y(4), Z(2))
 Dimensions.swapdims(A, (Dim{:a}, Dim{:b}, Dim{:c}))
@@ -164,21 +164,21 @@
 └────────────────────────────┘
 [:, :, 1]
  1.0  1.0  1.0  1.0
- 1.0  1.0  1.0  1.0

source

DimensionalData.Dimensions.slicedims Function
julia
slicedims(x, I) => Tuple{Tuple,Tuple}
-slicedims(f, x, I) => Tuple{Tuple,Tuple}

Slice the dimensions to match the axis values of the new array.

All methods return a tuple containing two tuples: the new dimensions, and the reference dimensions. The ref dimensions are no longer used in the new struct but are useful to give context to plots.

Called at the array level the returned tuple will also include the previous reference dims attached to the array.

Arguments

  • f: a function getindex, view or dotview. This will be used for slicing getindex is the default if f is not included.

  • x: An AbstractDimArray, Tuple of Dimension, or Dimension

  • I: A tuple of Integer, Colon or AbstractArray

source

DimensionalData.Dimensions.comparedims Function
julia
comparedims(A::AbstractDimArray...; kw...)
+ 1.0  1.0  1.0  1.0

source

DimensionalData.Dimensions.slicedims Function
julia
slicedims(x, I) => Tuple{Tuple,Tuple}
+slicedims(f, x, I) => Tuple{Tuple,Tuple}

Slice the dimensions to match the axis values of the new array.

All methods return a tuple containing two tuples: the new dimensions, and the reference dimensions. The ref dimensions are no longer used in the new struct but are useful to give context to plots.

Called at the array level the returned tuple will also include the previous reference dims attached to the array.

Arguments

  • f: a function getindex, view or dotview. This will be used for slicing getindex is the default if f is not included.

  • x: An AbstractDimArray, Tuple of Dimension, or Dimension

  • I: A tuple of Integer, Colon or AbstractArray

source

DimensionalData.Dimensions.comparedims Function
julia
comparedims(A::AbstractDimArray...; kw...)
 comparedims(A::Tuple...; kw...)
 comparedims(A::Dimension...; kw...)
-comparedims(::Type{Bool}, args...; kw...)

Check that dimensions or tuples of dimensions passed as each argument are the same, and return the first valid dimension. If AbstractDimArrays are passed as arguments their dimensions are compared.

Empty tuples and nothing dimension values are ignored, returning the Dimension value if it exists.

Passing Bool as the first argument means true/false will be returned, rather than throwing an error.

Keywords

These are all Bool flags:

  • type: compare dimension type, true by default.

  • valtype: compare wrapped value type, false by default.

  • val: compare wrapped values, false by default.

  • order: compare order, false by default.

  • length: compare lengths, true by default.

  • ignore_length_one: ignore length 1 in comparisons, and return whichever dimension is not length 1, if any. This is useful in e.g. broadcasting comparisons. false by default.

  • msg: DimensionalData.Warn or DimensionalData.Throw. Both may contain string, which will be added to error or warning mesages.

source

DimensionalData.Dimensions.combinedims Function
julia
combinedims(xs; check=true, kw...)

Combine the dimensions of each object in xs, in the order they are found.

Keywords are passed to comparedims.

source

DimensionalData.Dimensions.sortdims Function
julia
sortdims([f], tosort, order) => Tuple

Sort dimensions tosort by order. Dimensions in order but missing from tosort are replaced with nothing.

tosort and order can be Tuples or Vectors or Dimension or dimension type. Abstract supertypes like TimeDim can be used in order.

f is <: by default, but can be >: to sort abstract types by concrete types.

source

DimensionalData.Dimensions.Lookups.basetypeof Function
julia
basetypeof(x) => Type

Get the "base" type of an object - the minimum required to define the object without it's fields. By default this is the full UnionAll for the type. But custom basetypeof methods can be defined for types with free type parameters.

In DimensionalData this is primarily used for comparing Dimensions, where Dim{:x} is different from Dim{:y}.

source

DimensionalData.Dimensions.basedims Function
julia
basedims(ds::Tuple)
-basedims(d::Union{Dimension,Symbol,Type})

Returns basetypeof(d)() or a Tuple of called on a Tuple.

See basetypeof

source

DimensionalData.Dimensions.setdims Function
julia
setdims(X, newdims) => AbstractArray
+comparedims(::Type{Bool}, args...; kw...)

Check that dimensions or tuples of dimensions passed as each argument are the same, and return the first valid dimension. If AbstractDimArrays are passed as arguments their dimensions are compared.

Empty tuples and nothing dimension values are ignored, returning the Dimension value if it exists.

Passing Bool as the first argument means true/false will be returned, rather than throwing an error.

Keywords

These are all Bool flags:

  • type: compare dimension type, true by default.

  • valtype: compare wrapped value type, false by default.

  • val: compare wrapped values, false by default.

  • order: compare order, false by default.

  • length: compare lengths, true by default.

  • ignore_length_one: ignore length 1 in comparisons, and return whichever dimension is not length 1, if any. This is useful in e.g. broadcasting comparisons. false by default.

  • msg: DimensionalData.Warn or DimensionalData.Throw. Both may contain string, which will be added to error or warning mesages.

source

DimensionalData.Dimensions.combinedims Function
julia
combinedims(xs; check=true, kw...)

Combine the dimensions of each object in xs, in the order they are found.

Keywords are passed to comparedims.

source

DimensionalData.Dimensions.sortdims Function
julia
sortdims([f], tosort, order) => Tuple

Sort dimensions tosort by order. Dimensions in order but missing from tosort are replaced with nothing.

tosort and order can be Tuples or Vectors or Dimension or dimension type. Abstract supertypes like TimeDim can be used in order.

f is <: by default, but can be >: to sort abstract types by concrete types.

source

DimensionalData.Dimensions.Lookups.basetypeof Function
julia
basetypeof(x) => Type

Get the "base" type of an object - the minimum required to define the object without it's fields. By default this is the full UnionAll for the type. But custom basetypeof methods can be defined for types with free type parameters.

In DimensionalData this is primarily used for comparing Dimensions, where Dim{:x} is different from Dim{:y}.

source

DimensionalData.Dimensions.basedims Function
julia
basedims(ds::Tuple)
+basedims(d::Union{Dimension,Symbol,Type})

Returns basetypeof(d)() or a Tuple of called on a Tuple.

See basetypeof

source

DimensionalData.Dimensions.setdims Function
julia
setdims(X, newdims) => AbstractArray
 setdims(::Tuple, newdims) => Tuple{Vararg{Dimension,N}}

Replaces the first dim matching <: basetypeof(newdim) with newdim, and returns a new object or tuple with the dimension updated.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • newdim: Tuple or single Dimension, Type or Symbol.

Example

julia
using DimensionalData, DimensionalData.Dimensions, DimensionalData.Lookups
 A = ones(X(10), Y(10:10:100))
 B = setdims(A, Y(Categorical('a':'j'; order=ForwardOrdered())))
 lookup(B, Y)
 # output
 Categorical{Char} ForwardOrdered
-wrapping: 'a':1:'j'

source

DimensionalData.Dimensions.dimsmatch Function
julia
dimsmatch([f], dim, query) => Bool
-dimsmatch([f], dims::Tuple, query::Tuple) => Bool

Compare 2 dimensions or Tuple of Dimension are of the same base type, or are at least rotations/transformations of the same type.

f is <: by default, but can be >: to match abstract types to concrete types.

source

- +wrapping: 'a':1:'j'

source

DimensionalData.Dimensions.dimsmatch Function
julia
dimsmatch([f], dim, query) => Bool
+dimsmatch([f], dims::Tuple, query::Tuple) => Bool

Compare 2 dimensions or Tuple of Dimension are of the same base type, or are at least rotations/transformations of the same type.

f is <: by default, but can be >: to match abstract types to concrete types.

source

+ \ No newline at end of file diff --git a/dev/api/lookuparrays.html b/dev/api/lookuparrays.html index f5086fab1..30ee5d863 100644 --- a/dev/api/lookuparrays.html +++ b/dev/api/lookuparrays.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -22,7 +22,7 @@
Skip to content

Lookups

DimensionalData.Dimensions.Lookups Module
julia
Lookups

Module for Lookups and Selectors used in DimensionalData.jl

Lookup defines traits and AbstractArray wrappers that give specific behaviours for a lookup index when indexed with Selector.

For example, these allow tracking over array order so fast indexing works even when the array is reversed.

To load Lookup types and methods into scope:

julia
using DimensionalData
-using DimensionalData.Lookups

source

DimensionalData.Dimensions.Lookups.Lookup Type
julia
Lookup

Types defining the behaviour of a lookup index, how it is plotted and how Selectors like Between work.

A Lookup may be NoLookup indicating that there are no lookup values, Categorical for ordered or unordered categories, or a Sampled index for Points or Intervals.

source

DimensionalData.Dimensions.Lookups.Aligned Type
julia
Aligned <: Lookup

Abstract supertype for Lookups where the lookup is aligned with the array axes.

This is by far the most common supertype for Lookup.

source

DimensionalData.Dimensions.Lookups.AbstractSampled Type
julia
AbstractSampled <: Aligned

Abstract supertype for Lookups where the lookup is aligned with the array, and is independent of other dimensions. Sampled is provided by this package.

AbstractSampled must have order, span and sampling fields, or a rebuild method that accepts them as keyword arguments.

source

DimensionalData.Dimensions.Lookups.Sampled Type
julia
Sampled <: AbstractSampled
+using DimensionalData.Lookups

source

DimensionalData.Dimensions.Lookups.Lookup Type
julia
Lookup

Types defining the behaviour of a lookup index, how it is plotted and how Selectors like Between work.

A Lookup may be NoLookup indicating that there are no lookup values, Categorical for ordered or unordered categories, or a Sampled index for Points or Intervals.

source

DimensionalData.Dimensions.Lookups.Aligned Type
julia
Aligned <: Lookup

Abstract supertype for Lookups where the lookup is aligned with the array axes.

This is by far the most common supertype for Lookup.

source

DimensionalData.Dimensions.Lookups.AbstractSampled Type
julia
AbstractSampled <: Aligned

Abstract supertype for Lookups where the lookup is aligned with the array, and is independent of other dimensions. Sampled is provided by this package.

AbstractSampled must have order, span and sampling fields, or a rebuild method that accepts them as keyword arguments.

source

DimensionalData.Dimensions.Lookups.Sampled Type
julia
Sampled <: AbstractSampled
 
 Sampled(data::AbstractVector, order::Order, span::Span, sampling::Sampling, metadata)
 Sampled(data=AutoValues(); order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata())

A concrete implementation of the Lookup AbstractSampled. It can be used to represent Points or Intervals.

Sampled is capable of representing gridded data from a wide range of sources, allowing correct bounds and Selectors for points or intervals of regular, irregular, forward and reverse lookups.

On AbstractDimArray construction, Sampled lookup is assigned for all lookups of AbstractRange not assigned to Categorical.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

Example

Create an array with Interval sampling, and Regular span for a vector with known spacing.

We set the locus of the Intervals to Start specifying that the lookup values are for the locus at the start of each interval.

julia
using DimensionalData, DimensionalData.Lookups
@@ -43,9 +43,9 @@
   80    1.0  1.0  1.0   1.0
   60    1.0  1.0  1.0   1.0
   40    1.0  1.0  1.0   1.0
-  20    1.0  1.0  1.0   1.0

source

DimensionalData.Dimensions.Lookups.AbstractCyclic Type
julia
AbstractCyclic <: AbstractSampled

An abstract supertype for cyclic lookups.

These are AbstractSampled lookups that are cyclic for Selectors.

source

DimensionalData.Dimensions.Lookups.Cyclic Type
julia
Cyclic <: AbstractCyclic
+  20    1.0  1.0  1.0   1.0

source

DimensionalData.Dimensions.Lookups.AbstractCyclic Type
julia
AbstractCyclic <: AbstractSampled

An abstract supertype for cyclic lookups.

These are AbstractSampled lookups that are cyclic for Selectors.

source

DimensionalData.Dimensions.Lookups.Cyclic Type
julia
Cyclic <: AbstractCyclic
 
-Cyclic(data; order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata(), cycle)

A Cyclic lookup is similar to Sampled but out of range Selectors At, Near, Contains will cycle the values to typemin or typemax over the length of cycle. Where and .. work as for Sampled.

This is useful when we are using mean annual datasets over a real time-span, or for wrapping longitudes so that -360 and 360 are the same.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

  • cycle: the length of the cycle. This does not have to exactly match the data, the step size is Week(1) the cycle can be Years(1).

Notes

  1. If you use dates and e.g. cycle over a Year, every year will have the number and spacing of Weeks and Days as the cycle year. Using At may not be reliable in terms of exact dates, as it will be applied to the specified date plus or minus n years.

  2. Indexing into a Cycled with any AbstractArray or AbstractRange will return a Sampled as the full cycle is likely no longer available.

  3. .. or Between selectors do not work in a cycled way: they work as for Sampled. This may change in future to return cycled values, but there are problems with this, such as leap years breaking correct date cycling of a single year. If you actually need this behaviour, please make a GitHub issue.

source

DimensionalData.Dimensions.Lookups.AbstractCategorical Type
julia
AbstractCategorical <: Aligned

Lookups where the values are categories.

Categorical is the provided concrete implementation. But this can easily be extended, all methods are defined for AbstractCategorical.

All AbstractCategorical must provide a rebuild method with data, order and metadata keyword arguments.

source

DimensionalData.Dimensions.Lookups.Categorical Type
julia
Categorical <: AbstractCategorical
+Cyclic(data; order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata(), cycle)

A Cyclic lookup is similar to Sampled but out of range Selectors At, Near, Contains will cycle the values to typemin or typemax over the length of cycle. Where and .. work as for Sampled.

This is useful when we are using mean annual datasets over a real time-span, or for wrapping longitudes so that -360 and 360 are the same.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

  • cycle: the length of the cycle. This does not have to exactly match the data, the step size is Week(1) the cycle can be Years(1).

Notes

  1. If you use dates and e.g. cycle over a Year, every year will have the number and spacing of Weeks and Days as the cycle year. Using At may not be reliable in terms of exact dates, as it will be applied to the specified date plus or minus n years.

  2. Indexing into a Cycled with any AbstractArray or AbstractRange will return a Sampled as the full cycle is likely no longer available.

  3. .. or Between selectors do not work in a cycled way: they work as for Sampled. This may change in future to return cycled values, but there are problems with this, such as leap years breaking correct date cycling of a single year. If you actually need this behaviour, please make a GitHub issue.

source

DimensionalData.Dimensions.Lookups.AbstractCategorical Type
julia
AbstractCategorical <: Aligned

Lookups where the values are categories.

Categorical is the provided concrete implementation. But this can easily be extended, all methods are defined for AbstractCategorical.

All AbstractCategorical must provide a rebuild method with data, order and metadata keyword arguments.

source

DimensionalData.Dimensions.Lookups.Categorical Type
julia
Categorical <: AbstractCategorical
 
 Categorical(o::Order)
 Categorical(; order=Unordered())

A Lookup where the values are categories.

This will be automatically assigned if the lookup contains AbstractString, Symbol or Char. Otherwise it can be assigned manually.

Order will be determined automatically where possible.

Arguments

  • data: An AbstractVector matching the length of the corresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. Can be provided if this is known and performance is important.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

Example

Create an array with [Interval] sampling.

julia
using DimensionalData
@@ -57,7 +57,7 @@
 # output
 
 Categorical{String} ["one", "two", "three"] Unordered,
-Categorical{Symbol} [:a, :b, :c, :d] ForwardOrdered

source

DimensionalData.Dimensions.Lookups.Unaligned Type
julia
Unaligned <: Lookup

Abstract supertype for Lookup where the lookup is not aligned to the grid.

Indexing an Unaligned with Selectors must provide all other Unaligned dimensions.

source

DimensionalData.Dimensions.Lookups.Transformed Type
julia
Transformed <: Unaligned
+Categorical{Symbol} [:a, :b, :c, :d] ForwardOrdered

source

DimensionalData.Dimensions.Lookups.Unaligned Type
julia
Unaligned <: Lookup

Abstract supertype for Lookup where the lookup is not aligned to the grid.

Indexing an Unaligned with Selectors must provide all other Unaligned dimensions.

source

DimensionalData.Dimensions.Lookups.Transformed Type
julia
Transformed <: Unaligned
 
 Transformed(f, dim::Dimension; metadata=NoMetadata())

Lookup that uses an affine transformation to convert dimensions from dims(lookup) to dims(array). This can be useful when the dimensions are e.g. rotated from a more commonly used axis.

Any function can be used to do the transformation, but transformations from CoordinateTransformations.jl may be useful.

Arguments

  • f: transformation function

  • dim: a dimension to transform to.

Keyword Arguments

  • metadata:

Example

julia
using DimensionalData, DimensionalData.Lookups, CoordinateTransformations
 
@@ -70,9 +70,9 @@
 da[X(At(6.0)), Y(At(2.0))]
 
 # output
-9

source

DimensionalData.Dimensions.MergedLookup Type
julia
MergedLookup <: Lookup
+9

source

DimensionalData.Dimensions.MergedLookup Type
julia
MergedLookup <: Lookup
 
-MergedLookup(data, dims; [metadata])

A Lookup that holds multiple combined dimensions.

MergedLookup can be indexed with Selectors like At, Between, and Where although Near has undefined meaning.

Arguments

  • data: A Vector of Tuple.

  • dims: A Tuple of Dimension indicating the dimensions in the tuples in data.

Keywords

  • metadata: a Dict or Metadata object to attach dimension metadata.

source

DimensionalData.Dimensions.Lookups.NoLookup Type
julia
NoLookup <: Lookup
+MergedLookup(data, dims; [metadata])

A Lookup that holds multiple combined dimensions.

MergedLookup can be indexed with Selectors like At, Between, and Where although Near has undefined meaning.

Arguments

  • data: A Vector of Tuple.

  • dims: A Tuple of Dimension indicating the dimensions in the tuples in data.

Keywords

  • metadata: a Dict or Metadata object to attach dimension metadata.

source

DimensionalData.Dimensions.Lookups.NoLookup Type
julia
NoLookup <: Lookup
 
 NoLookup()

A Lookup that is identical to the array axis. Selectors can't be used on this lookup.

Example

Defining a DimArray without passing lookup values to the dimensions, it will be assigned NoLookup:

julia
using DimensionalData
 
@@ -87,26 +87,26 @@
 
 # output
 
-NoLookup, NoLookup

source

DimensionalData.Dimensions.Lookups.AutoLookup Type
julia
AutoLookup <: Lookup
+NoLookup, NoLookup

source

DimensionalData.Dimensions.Lookups.AutoLookup Type
julia
AutoLookup <: Lookup
 
 AutoLookup()
-AutoLookup(values=AutoValues(); kw...)

Automatic Lookup, the default lookup. It will be converted automatically to another Lookup when it is possible to detect it from the lookup values.

Keywords will be used in the detected Lookup constructor.

source

DimensionalData.Dimensions.Lookups.AutoValues Type
julia
AutoValues

Detect Lookup values from the context. This is used in NoLookup to simply use the array axis as the index when the array is constructed, and in set to change the Lookup type without changing the index values.

source

The generic value getter val

DimensionalData.Dimensions.Lookups.val Function
julia
val(x)
-val(dims::Tuple) => Tuple

Return the contained value of a wrapper object.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

Objects that don't define a val method are returned unaltered.

source

Lookup methods:

DimensionalData.Dimensions.Lookups.bounds Function
julia
bounds(xs, [dims::Tuple]) => Tuple{Vararg{Tuple{T,T}}}
+AutoLookup(values=AutoValues(); kw...)

Automatic Lookup, the default lookup. It will be converted automatically to another Lookup when it is possible to detect it from the lookup values.

Keywords will be used in the detected Lookup constructor.

source

DimensionalData.Dimensions.Lookups.AutoValues Type
julia
AutoValues

Detect Lookup values from the context. This is used in NoLookup to simply use the array axis as the index when the array is constructed, and in set to change the Lookup type without changing the index values.

source

The generic value getter val

DimensionalData.Dimensions.Lookups.val Function
julia
val(x)
+val(dims::Tuple) => Tuple

Return the contained value of a wrapper object.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

Objects that don't define a val method are returned unaltered.

source

Lookup methods:

DimensionalData.Dimensions.Lookups.bounds Function
julia
bounds(xs, [dims::Tuple]) => Tuple{Vararg{Tuple{T,T}}}
 bounds(xs::Tuple) => Tuple{Vararg{Tuple{T,T}}}
 bounds(x, dim) => Tuple{T,T}
-bounds(dim::Union{Dimension,Lookup}) => Tuple{T,T}

Return the bounds of all dimensions of an object, of a specific dimension, or of a tuple of dimensions.

If bounds are not known, one or both values may be nothing.

dims can be a Dimension, a dimension type, or a tuple of either.

source

DimensionalData.Dimensions.Lookups.hasselection Function
julia
hasselection(x, selector) => Bool
-hasselection(x, selectors::Tuple) => Bool

Check if indexing into x with selectors can be performed, where x is some object with a dims method, and selectors is a Selector or Dimension or a tuple of either.

source

DimensionalData.Dimensions.Lookups.sampling Function
julia
sampling(x, [dims::Tuple]) => Tuple
+bounds(dim::Union{Dimension,Lookup}) => Tuple{T,T}

Return the bounds of all dimensions of an object, of a specific dimension, or of a tuple of dimensions.

If bounds are not known, one or both values may be nothing.

dims can be a Dimension, a dimension type, or a tuple of either.

source

DimensionalData.Dimensions.Lookups.hasselection Function
julia
hasselection(x, selector) => Bool
+hasselection(x, selectors::Tuple) => Bool

Check if indexing into x with selectors can be performed, where x is some object with a dims method, and selectors is a Selector or Dimension or a tuple of either.

source

DimensionalData.Dimensions.Lookups.sampling Function
julia
sampling(x, [dims::Tuple]) => Tuple
 sampling(x, dim) => Sampling
 sampling(xs::Tuple) => Tuple{Vararg{Sampling}}
-sampling(x:Union{Dimension,Lookup}) => Sampling

Return the Sampling for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.span Function
julia
span(x, [dims::Tuple]) => Tuple
+sampling(x:Union{Dimension,Lookup}) => Sampling

Return the Sampling for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.span Function
julia
span(x, [dims::Tuple]) => Tuple
 span(x, dim) => Span
 span(xs::Tuple) => Tuple{Vararg{Span,N}}
-span(x::Union{Dimension,Lookup}) => Span

Return the Span for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.order Function
julia
order(x, [dims::Tuple]) => Tuple
+span(x::Union{Dimension,Lookup}) => Span

Return the Span for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.order Function
julia
order(x, [dims::Tuple]) => Tuple
 order(xs::Tuple) => Tuple
-order(x::Union{Dimension,Lookup}) => Order

Return the Ordering of the dimension lookup for each dimension: ForwardOrdered, ReverseOrdered, or Unordered

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.locus Function
julia
locus(x, [dims::Tuple]) => Tuple
+order(x::Union{Dimension,Lookup}) => Order

Return the Ordering of the dimension lookup for each dimension: ForwardOrdered, ReverseOrdered, or Unordered

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.locus Function
julia
locus(x, [dims::Tuple]) => Tuple
 locus(x, dim) => Locus
 locus(xs::Tuple) => Tuple{Vararg{Locus,N}}
-locus(x::Union{Dimension,Lookup}) => Locus

Return the Position of lookup values for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.shiftlocus Function
julia
shiftlocus(locus::Locus, x)

Shift the values of x from the current locus to the new locus.

We only shift Sampled, Regular or Explicit, Intervals.

source

Selectors

DimensionalData.Dimensions.Lookups.Selector Type
julia
Selector

Abstract supertype for all selectors.

Selectors are wrappers that indicate that passed values are not the array indices, but values to be selected from the dimension lookup, such as DateTime objects for a Ti dimension.

Selectors provided in DimensionalData are:

Note: Selectors can be modified using:

  • Not: as in Not(At(x))

And IntervalSets.jl Interval can be used instead of Between

  • ..

  • Interval

  • OpenInterval

  • ClosedInterval

source

DimensionalData.Dimensions.Lookups.IntSelector Type
julia
IntSelector <: Selector

Abstract supertype for Selectors that return a single Int index.

IntSelectors provided by DimensionalData are:

source

DimensionalData.Dimensions.Lookups.ArraySelector Type
julia
ArraySelector <: Selector

Abstract supertype for Selectors that return an AbstractArray.

ArraySelectors provided by DimensionalData are:

source

DimensionalData.Dimensions.Lookups.At Type
julia
At <: IntSelector
+locus(x::Union{Dimension,Lookup}) => Locus

Return the Position of lookup values for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.Lookups.shiftlocus Function
julia
shiftlocus(locus::Locus, x)

Shift the values of x from the current locus to the new locus.

We only shift Sampled, Regular or Explicit, Intervals.

source

Selectors

DimensionalData.Dimensions.Lookups.Selector Type
julia
Selector

Abstract supertype for all selectors.

Selectors are wrappers that indicate that passed values are not the array indices, but values to be selected from the dimension lookup, such as DateTime objects for a Ti dimension.

Selectors provided in DimensionalData are:

Note: Selectors can be modified using:

  • Not: as in Not(At(x))

And IntervalSets.jl Interval can be used instead of Between

  • ..

  • Interval

  • OpenInterval

  • ClosedInterval

source

DimensionalData.Dimensions.Lookups.IntSelector Type
julia
IntSelector <: Selector

Abstract supertype for Selectors that return a single Int index.

IntSelectors provided by DimensionalData are:

source

DimensionalData.Dimensions.Lookups.ArraySelector Type
julia
ArraySelector <: Selector

Abstract supertype for Selectors that return an AbstractArray.

ArraySelectors provided by DimensionalData are:

source

DimensionalData.Dimensions.Lookups.At Type
julia
At <: IntSelector
 
 At(x; atol=nothing, rtol=nothing)
 At(a, b; kw...)

Selector that exactly matches the value on the passed-in dimensions, or throws an error. For ranges and arrays, every intermediate value must match an existing value - not just the end points.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between them will be selected.

Keyword atol is passed to isapprox.

Example

julia
using DimensionalData
@@ -116,7 +116,7 @@
 
 # output
 
-5

source

DimensionalData.Dimensions.Lookups.Near Type
julia
Near <: IntSelector
+5

source

DimensionalData.Dimensions.Lookups.Near Type
julia
Near <: IntSelector
 
 Near(x)
 Near(a, b)

Selector that selects the nearest index to x.

With Points this is simply the lookup values nearest to the x, however with Intervals it is the interval center nearest to x. This will be offset from the index value for Start and End locus.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between the nearsest value to each of them will be selected.

Example

julia
using DimensionalData
@@ -125,7 +125,7 @@
 A[X(Near(23)), Y(Near(5.1))]
 
 # output
-4

source

DimensionalData.Dimensions.Lookups.Between Type
julia
Between <: ArraySelector
+4

source

DimensionalData.Dimensions.Lookups.Between Type
julia
Between <: ArraySelector
 
 Between(a, b)

Depreciated: use a..b instead of Between(a, b). Other Interval objects from IntervalSets.jl, like `OpenInterval(a, b) will also work, giving the correct open/closed boundaries.

Between will e removed in future to avoid clashes with DataFrames.Between.

Selector that retrieve all indices located between 2 values, evaluated with >= for the lower value, and < for the upper value. This means the same value will not be counted twice in 2 adjacent Between selections.

For Intervals the whole interval must be lie between the values. For Points the points must fall between the values. Different Sampling types may give different results with the same input - this is the intended behaviour.

Between for Irregular intervals is a little complicated. The interval is the distance between a value and the next (for Start locus) or previous (for End locus) value.

For Center, we take the mid point between two index values as the start and end of each interval. This may or may not make sense for the values in your index, so use Between with Irregular Intervals(Center()) with caution.

Example

julia
using DimensionalData
 
@@ -141,7 +141,7 @@
  Y Sampled{Int64} 5:6 ForwardOrdered Regular Points
 └────────────────────────────────────────────────────────────┘
   5  6
- 20    4  5

source

DimensionalData.Dimensions.Lookups.Touches Type
julia
Touches <: ArraySelector
+ 20    4  5

source

DimensionalData.Dimensions.Lookups.Touches Type
julia
Touches <: ArraySelector
 
 Touches(a, b)

Selector that retrieves all indices touching the closed interval 2 values, for the maximum possible area that could interact with the supplied range.

This can be better than .. when e.g. subsetting an area to rasterize, as you may wish to include pixels that just touch the area, rather than those that fall within it.

Touches is different to using closed intervals when the lookups also contain intervals - if any of the intervals touch, they are included. With .. they are discarded unless the whole cell interval falls inside the selector interval.

Example

julia
using DimensionalData
 
@@ -156,7 +156,7 @@
  Y Sampled{Int64} 5:6 ForwardOrdered Regular Points
 └────────────────────────────────────────────────────────────┘
   5  6
- 20    4  5

source

DimensionalData.Dimensions.Lookups.Contains Type
julia
Contains <: IntSelector
+ 20    4  5

source

DimensionalData.Dimensions.Lookups.Contains Type
julia
Contains <: IntSelector
 
 Contains(x)
 Contains(a, b)

Selector that selects the interval the value is contained by. If the interval is not present in the lookup, an error will be thrown.

Can only be used for Intervals or Categorical. For Categorical it falls back to using At. Contains should not be confused with Base.contains - use Where(contains(x)) to check for if values are contain in categorical values like strings.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between them will be selected.

Example

julia
using DimensionalData; const DD = DimensionalData
@@ -166,7 +166,7 @@
 A[X(Contains(8)), Y(Contains(6.8))]
 
 # output
-3

source

DimensionalData.Dimensions.Lookups.Where Type
julia
Where <: ArraySelector
+3

source

DimensionalData.Dimensions.Lookups.Where Type
julia
Where <: ArraySelector
 
 Where(f::Function)

Selector that filters a dimension lookup by any function that accepts a single value and returns a Bool.

Example

julia
using DimensionalData
 
@@ -182,7 +182,7 @@
  Y Sampled{Int64} [19, 21] ForwardOrdered Irregular Points
 └─────────────────────────────────────────────────────────────┘
   19  21
- 20     4   6

source

DimensionalData.Dimensions.Lookups.All Type
julia
All <: Selector
+ 20     4   6

source

DimensionalData.Dimensions.Lookups.All Type
julia
All <: Selector
 
 All(selectors::Selector...)

Selector that combines the results of other selectors. The indices used will be the union of all result sorted in ascending order.

Example

julia
using DimensionalData, Unitful
 
@@ -200,46 +200,46 @@
 └──────────────────────────────────────────────────────────────────────────────┘
   1 s  6 s  91 s  96 s
  10.0    1    2    19    20
- 50.0    3    6    57    60

source

Lookup traits

DimensionalData.Dimensions.Lookups.LookupTrait Type
julia
LookupTrait

Abstract supertype of all traits of a Lookup.

These modify the behaviour of the lookup index.

The term "Trait" is used loosely - these may be fields of an object of traits hard-coded to specific types.

source

Order

DimensionalData.Dimensions.Lookups.Order Type
julia
Order <: LookupTrait

Traits for the order of a Lookup. These determine how searchsorted finds values in the index, and how objects are plotted.

source

DimensionalData.Dimensions.Lookups.Ordered Type
julia
Ordered <: Order

Supertype for the order of an ordered Lookup, including ForwardOrdered and ReverseOrdered.

source

DimensionalData.Dimensions.Lookups.ForwardOrdered Type
julia
ForwardOrdered <: Ordered
+ 50.0    3    6    57    60

source

Lookup traits

DimensionalData.Dimensions.Lookups.LookupTrait Type
julia
LookupTrait

Abstract supertype of all traits of a Lookup.

These modify the behaviour of the lookup index.

The term "Trait" is used loosely - these may be fields of an object of traits hard-coded to specific types.

source

Order

DimensionalData.Dimensions.Lookups.Order Type
julia
Order <: LookupTrait

Traits for the order of a Lookup. These determine how searchsorted finds values in the index, and how objects are plotted.

source

DimensionalData.Dimensions.Lookups.Ordered Type
julia
Ordered <: Order

Supertype for the order of an ordered Lookup, including ForwardOrdered and ReverseOrdered.

source

DimensionalData.Dimensions.Lookups.ForwardOrdered Type
julia
ForwardOrdered <: Ordered
 
-ForwardOrdered()

Indicates that the Lookup index is in the normal forward order.

source

DimensionalData.Dimensions.Lookups.ReverseOrdered Type
julia
ReverseOrdered <: Ordered
+ForwardOrdered()

Indicates that the Lookup index is in the normal forward order.

source

DimensionalData.Dimensions.Lookups.ReverseOrdered Type
julia
ReverseOrdered <: Ordered
 
-ReverseOrdered()

Indicates that the Lookup index is in the reverse order.

source

DimensionalData.Dimensions.Lookups.Unordered Type
julia
Unordered <: Order
+ReverseOrdered()

Indicates that the Lookup index is in the reverse order.

source

DimensionalData.Dimensions.Lookups.Unordered Type
julia
Unordered <: Order
 
-Unordered()

Indicates that Lookup is unordered.

This means the index cannot be searched with searchsortedfirst or similar optimised methods - instead it will use findfirst.

source

DimensionalData.Dimensions.Lookups.AutoOrder Type
julia
AutoOrder <: Order
+Unordered()

Indicates that Lookup is unordered.

This means the index cannot be searched with searchsortedfirst or similar optimised methods - instead it will use findfirst.

source

DimensionalData.Dimensions.Lookups.AutoOrder Type
julia
AutoOrder <: Order
 
-AutoOrder()

Specifies that the Order of a Lookup will be found automatically where possible.

source

Span

DimensionalData.Dimensions.Lookups.Span Type
julia
Span <: LookupTrait

Defines the type of span used in a Sampling index. These are Regular or Irregular.

source

DimensionalData.Dimensions.Lookups.Regular Type
julia
Regular <: Span
+AutoOrder()

Specifies that the Order of a Lookup will be found automatically where possible.

source

Span

DimensionalData.Dimensions.Lookups.Span Type
julia
Span <: LookupTrait

Defines the type of span used in a Sampling index. These are Regular or Irregular.

source

DimensionalData.Dimensions.Lookups.Regular Type
julia
Regular <: Span
 
-Regular(step=AutoStep())

Points or Intervals that have a fixed, regular step.

source

DimensionalData.Dimensions.Lookups.Irregular Type
julia
Irregular <: Span
+Regular(step=AutoStep())

Points or Intervals that have a fixed, regular step.

source

DimensionalData.Dimensions.Lookups.Irregular Type
julia
Irregular <: Span
 
 Irregular(bounds::Tuple)
-Irregular(lowerbound, upperbound)

Points or Intervals that have an Irregular step size. To enable bounds tracking and accurate selectors, the starting bounds are provided as a 2 tuple, or 2 arguments. (nothing, nothing) is acceptable input, the bounds will be guessed from the index, but may be inaccurate.

source

DimensionalData.Dimensions.Lookups.Explicit Type
julia
Explicit(bounds::AbstractMatrix)

Intervals where the span is explicitly listed for every interval.

This uses a matrix where with length 2 columns for each index value, holding the lower and upper bounds for that specific index.

source

DimensionalData.Dimensions.Lookups.AutoSpan Type
julia
AutoSpan <: Span
+Irregular(lowerbound, upperbound)

Points or Intervals that have an Irregular step size. To enable bounds tracking and accurate selectors, the starting bounds are provided as a 2 tuple, or 2 arguments. (nothing, nothing) is acceptable input, the bounds will be guessed from the index, but may be inaccurate.

source

DimensionalData.Dimensions.Lookups.Explicit Type
julia
Explicit(bounds::AbstractMatrix)

Intervals where the span is explicitly listed for every interval.

This uses a matrix where with length 2 columns for each index value, holding the lower and upper bounds for that specific index.

source

DimensionalData.Dimensions.Lookups.AutoSpan Type
julia
AutoSpan <: Span
 
-AutoSpan()

The span will be guessed and replaced in format or set.

source

Sampling

DimensionalData.Dimensions.Lookups.Sampling Type
julia
Sampling <: LookupTrait

Indicates the sampling method used by the index: Points or Intervals.

source

DimensionalData.Dimensions.Lookups.Points Type
julia
Points <: Sampling
+AutoSpan()

The span will be guessed and replaced in format or set.

source

Sampling

DimensionalData.Dimensions.Lookups.Sampling Type
julia
Sampling <: LookupTrait

Indicates the sampling method used by the index: Points or Intervals.

source

DimensionalData.Dimensions.Lookups.Points Type
julia
Points <: Sampling
 
-Points()

Sampling lookup where single samples at exact points.

These are always plotted at the center of array cells.

source

DimensionalData.Dimensions.Lookups.Intervals Type
julia
Intervals <: Sampling
+Points()

Sampling lookup where single samples at exact points.

These are always plotted at the center of array cells.

source

DimensionalData.Dimensions.Lookups.Intervals Type
julia
Intervals <: Sampling
 
-Intervals(locus::Position)

Sampling specifying that sampled values are the mean (or similar) value over an interval, rather than at one specific point.

Intervals require a locus of Start, Center or End to define the location in the interval that the index values refer to.

source

Positions

DimensionalData.Dimensions.Lookups.Position Type
julia
Position <: LookupTrait

Abstract supertype of types that indicate the locus of index values where they represent Intervals.

These allow for values array cells to align with the Start, Center, or End of values in the lookup index.

This means they can be plotted with correct axis markers, and allows automatic conversions to between formats with different standards (such as NetCDF and GeoTiff).

source

DimensionalData.Dimensions.Lookups.Center Type
julia
Center <: Position
+Intervals(locus::Position)

Sampling specifying that sampled values are the mean (or similar) value over an interval, rather than at one specific point.

Intervals require a locus of Start, Center or End to define the location in the interval that the index values refer to.

source

Positions

DimensionalData.Dimensions.Lookups.Position Type
julia
Position <: LookupTrait

Abstract supertype of types that indicate the locus of index values where they represent Intervals.

These allow for values array cells to align with the Start, Center, or End of values in the lookup index.

This means they can be plotted with correct axis markers, and allows automatic conversions to between formats with different standards (such as NetCDF and GeoTiff).

source

DimensionalData.Dimensions.Lookups.Center Type
julia
Center <: Position
 
-Center()

Used to specify lookup values correspond to the center locus in an interval.

source

DimensionalData.Dimensions.Lookups.Start Type
julia
Start <: Position
+Center()

Used to specify lookup values correspond to the center locus in an interval.

source

DimensionalData.Dimensions.Lookups.Start Type
julia
Start <: Position
 
-Start()

Used to specify lookup values correspond to the start locus of an interval.

source

DimensionalData.Dimensions.Lookups.Begin Type
julia
Begin <: Position
+Start()

Used to specify lookup values correspond to the start locus of an interval.

source

DimensionalData.Dimensions.Lookups.Begin Type
julia
Begin <: Position
 
-Begin()

Used to specify the begin index of a Dimension axis, as regular begin will not work with named dimensions.

Can be used with : to create a BeginEndRange or BeginEndStepRange.

source

DimensionalData.Dimensions.Lookups.End Type
julia
End <: Position
+Begin()

Used to specify the begin index of a Dimension axis, as regular begin will not work with named dimensions.

Can be used with : to create a BeginEndRange or BeginEndStepRange.

source

DimensionalData.Dimensions.Lookups.End Type
julia
End <: Position
 
-End()

Used to specify the end index of a Dimension axis, as regular end will not work with named dimensions. Can be used with : to create a BeginEndRange or BeginEndStepRange.

Also used to specify lookup values correspond to the end locus of an interval.

source

DimensionalData.Dimensions.Lookups.AutoPosition Type
julia
AutoPosition <: Position
+End()

Used to specify the end index of a Dimension axis, as regular end will not work with named dimensions. Can be used with : to create a BeginEndRange or BeginEndStepRange.

Also used to specify lookup values correspond to the end locus of an interval.

source

DimensionalData.Dimensions.Lookups.AutoPosition Type
julia
AutoPosition <: Position
 
-AutoPosition()

Indicates a interval where the index locus is not yet known. This will be filled with a default value on object construction.

source

Metadata

DimensionalData.Dimensions.Lookups.AbstractMetadata Type
julia
AbstractMetadata{X,T}

Abstract supertype for all metadata wrappers.

Metadata wrappers allow tracking the contents and origin of metadata. This can facilitate conversion between metadata types (for saving a file to a different format) or simply saving data back to the same file type with identical metadata.

Using a wrapper instead of Dict or NamedTuple also lets us pass metadata objects to set without ambiguity about where to put them.

source

DimensionalData.Dimensions.Lookups.Metadata Type
julia
Metadata <: AbstractMetadata
+AutoPosition()

Indicates a interval where the index locus is not yet known. This will be filled with a default value on object construction.

source

Metadata

DimensionalData.Dimensions.Lookups.AbstractMetadata Type
julia
AbstractMetadata{X,T}

Abstract supertype for all metadata wrappers.

Metadata wrappers allow tracking the contents and origin of metadata. This can facilitate conversion between metadata types (for saving a file to a different format) or simply saving data back to the same file type with identical metadata.

Using a wrapper instead of Dict or NamedTuple also lets us pass metadata objects to set without ambiguity about where to put them.

source

DimensionalData.Dimensions.Lookups.Metadata Type
julia
Metadata <: AbstractMetadata
 
 Metadata{X}(val::Union{Dict,NamedTuple})
 Metadata{X}(pairs::Pair...) => Metadata{Dict}
-Metadata{X}(; kw...) => Metadata{NamedTuple}

General Metadata object. The X type parameter categorises the metadata for method dispatch, if required.

source

DimensionalData.Dimensions.Lookups.NoMetadata Type
julia
NoMetadata <: AbstractMetadata
+Metadata{X}(; kw...) => Metadata{NamedTuple}

General Metadata object. The X type parameter categorises the metadata for method dispatch, if required.

source

DimensionalData.Dimensions.Lookups.NoMetadata Type
julia
NoMetadata <: AbstractMetadata
 
-NoMetadata()

Indicates an object has no metadata. But unlike using nothing, get, keys and haskey will still work on it, get always returning the fallback argument. keys returns () while haskey always returns false.

source

DimensionalData.Dimensions.Lookups.units Function
julia
units(x) => Union{Nothing,Any}
+NoMetadata()

Indicates an object has no metadata. But unlike using nothing, get, keys and haskey will still work on it, get always returning the fallback argument. keys returns () while haskey always returns false.

source

DimensionalData.Dimensions.Lookups.units Function
julia
units(x) => Union{Nothing,Any}
 units(xs:Tuple) => Tuple
 unit(A::AbstractDimArray, dims::Tuple) => Tuple
-unit(A::AbstractDimArray, dim) => Union{Nothing,Any}

Get the units of an array or Dimension, or a tuple of of either.

Units do not have a set field, and may or may not be included in metadata. This method is to facilitate use in labels and plots when units are available, not a guarantee that they will be. If not available, nothing is returned.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

- +unit(A::AbstractDimArray, dim) => Union{Nothing,Any}

Get the units of an array or Dimension, or a tuple of of either.

Units do not have a set field, and may or may not be included in metadata. This method is to facilitate use in labels and plots when units are available, not a guarantee that they will be. If not available, nothing is returned.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

+ \ No newline at end of file diff --git a/dev/api/reference.html b/dev/api/reference.html index 42c81f86c..98f719e9c 100644 --- a/dev/api/reference.html +++ b/dev/api/reference.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -21,7 +21,7 @@ -
Skip to content

API Reference

Arrays

DimensionalData.AbstractBasicDimArray Type
julia
AbstractBasicDimArray <: AbstractArray

The abstract supertype for all arrays with a dims method that returns a Tuple of Dimension

Only keyword rebuild is guaranteed to work with AbstractBasicDimArray.

source

DimensionalData.AbstractDimArray Type
julia
AbstractDimArray <: AbstractBasicArray

Abstract supertype for all "dim" arrays.

These arrays return a Tuple of Dimension from a dims method, and can be rebuilt using rebuild.

parent must return the source array.

They should have metadata, name and refdims methods, although these are optional.

A rebuild method for AbstractDimArray must accept data, dims, refdims, name, metadata arguments.

Indexing AbstractDimArray with non-range AbstractArray has undefined effects on the Dimension index. Use forward-ordered arrays only"

source

DimensionalData.DimArray Type
julia
DimArray <: AbstractDimArray
+    
Skip to content

API Reference

Arrays

DimensionalData.AbstractBasicDimArray Type
julia
AbstractBasicDimArray <: AbstractArray

The abstract supertype for all arrays with a dims method that returns a Tuple of Dimension

Only keyword rebuild is guaranteed to work with AbstractBasicDimArray.

source

DimensionalData.AbstractDimArray Type
julia
AbstractDimArray <: AbstractBasicArray

Abstract supertype for all "dim" arrays.

These arrays return a Tuple of Dimension from a dims method, and can be rebuilt using rebuild.

parent must return the source array.

They should have metadata, name and refdims methods, although these are optional.

A rebuild method for AbstractDimArray must accept data, dims, refdims, name, metadata arguments.

Indexing AbstractDimArray with non-range AbstractArray has undefined effects on the Dimension index. Use forward-ordered arrays only"

source

DimensionalData.DimArray Type
julia
DimArray <: AbstractDimArray
 
 DimArray(data, dims, refdims, name, metadata)
 DimArray(data, dims::Tuple; refdims=(), name=NoName(), metadata=NoMetadata())
@@ -61,7 +61,7 @@
   1        2
  1     (1, 1)   (1, 2)
  2     (2, 1)   (2, 2)
- 3     (3, 1)   (3, 2)

source

Shorthand AbstractDimArray constructors:

Base.fill Function
julia
Base.fill(x, dims::Dimension...; kw...) => DimArray
+ 3     (3, 1)   (3, 2)

source

Shorthand AbstractDimArray constructors:

Base.fill Function
julia
Base.fill(x, dims::Dimension...; kw...) => DimArray
 Base.fill(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray with a fill value of x.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData, Random; Random.seed!(123);
 
 julia> fill(true, X(2), Y(4))
@@ -71,7 +71,7 @@
  X,  Y
 └───────────────────────┘
  1  1  1  1
- 1  1  1  1

source

Base.rand Function
julia
Base.rand(x, dims::Dimension...; kw...) => DimArray
+ 1  1  1  1

source

Base.rand Function
julia
Base.rand(x, dims::Dimension...; kw...) => DimArray
 Base.rand(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray
 Base.rand(r::AbstractRNG, x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray
 Base.rand(r::AbstractRNG, x, dims::Dimension...; kw...) => DimArray

Create a DimArray of random values.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
@@ -95,7 +95,7 @@
   100.0       150.0       200.0
   :a    0.443494    0.253849    0.867547
   :b    0.745673    0.334152    0.0802658
-  :c    0.512083    0.427328    0.311448

source

Base.zeros Function
julia
Base.zeros(x, dims::Dimension...; kw...) => DimArray
+  :c    0.512083    0.427328    0.311448

source

Base.zeros Function
julia
Base.zeros(x, dims::Dimension...; kw...) => DimArray
 Base.zeros(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray of zeros.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
 
 julia> zeros(Bool, X(2), Y(4))
@@ -117,7 +117,7 @@
   100.0  150.0  200.0
   :a    0.0    0.0    0.0
   :b    0.0    0.0    0.0
-  :c    0.0    0.0    0.0

source

Base.ones Function
julia
Base.ones(x, dims::Dimension...; kw...) => DimArray
+  :c    0.0    0.0    0.0

source

Base.ones Function
julia
Base.ones(x, dims::Dimension...; kw...) => DimArray
 Base.ones(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray of ones.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
 
 julia> ones(Bool, X(2), Y(4))
@@ -139,8 +139,8 @@
   100.0  150.0  200.0
   :a    1.0    1.0    1.0
   :b    1.0    1.0    1.0
-  :c    1.0    1.0    1.0

source

Functions for getting information from objects:

DimensionalData.Dimensions.dims Function
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
+  :c    1.0    1.0    1.0

source

Functions for getting information from objects:

DimensionalData.Dimensions.dims Function
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
 dims(x, query...) => Tuple{Vararg{Dimension}}

Get the dimension(s) matching the type(s) of the query dimension.

Lookup can be an Int or an Dimension, or a tuple containing any combination of either.

Arguments

  • x: any object with a dims method, or a Tuple of Dimension.

  • query: Tuple or a single Dimension or Dimension Type.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(2, 3, 2), (X, Y, Z))
@@ -154,13 +154,13 @@
  1.0  1.0  1.0
 
 julia> dims(A, (X, Y))
-( X,  Y)

source

DimensionalData.Dimensions.refdims Function
julia
refdims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-refdims(x, dim) => Dimension

Reference dimensions for an array that is a slice or view of another array with more dimensions.

slicedims(a, dims) returns a tuple containing the current new dimensions and the new reference dimensions. Refdims can be stored in a field or discarded, as it is mostly to give context to plots. Ignoring refdims will simply leave some captions empty.

The default is to return an empty Tuple ().

source

DimensionalData.Dimensions.Lookups.metadata Function
julia
metadata(x) => (object metadata)
+( X,  Y)

source

DimensionalData.Dimensions.refdims Function
julia
refdims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+refdims(x, dim) => Dimension

Reference dimensions for an array that is a slice or view of another array with more dimensions.

slicedims(a, dims) returns a tuple containing the current new dimensions and the new reference dimensions. Refdims can be stored in a field or discarded, as it is mostly to give context to plots. Ignoring refdims will simply leave some captions empty.

The default is to return an empty Tuple ().

source

DimensionalData.Dimensions.Lookups.metadata Function
julia
metadata(x) => (object metadata)
 metadata(x, dims::Tuple)  => Tuple (Dimension metadata)
-metadata(xs::Tuple) => Tuple

Returns the metadata for an object or for the specified dimension(s)

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.name Function
julia
name(x) => Symbol
+metadata(xs::Tuple) => Tuple

Returns the metadata for an object or for the specified dimension(s)

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.name Function
julia
name(x) => Symbol
 name(xs:Tuple) => NTuple{N,Symbol}
 name(x, dims::Tuple) => NTuple{N,Symbol}
-name(x, dim) => Symbol

Get the name of an array or Dimension, or a tuple of of either as a Symbol.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.otherdims Function
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
+name(x, dim) => Symbol

Get the name of an array or Dimension, or a tuple of of either as a Symbol.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

DimensionalData.Dimensions.otherdims Function
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -168,7 +168,7 @@
 ( Y,  Z)
 
 julia> otherdims(A, (Y, Z))
-( X)

source

DimensionalData.Dimensions.dimnum Function
julia
dimnum(x, query::Tuple) => NTuple{Int}
+( X)

source

DimensionalData.Dimensions.dimnum Function
julia
dimnum(x, query::Tuple) => NTuple{Int}
 dimnum(x, query) => Int

Get the number(s) of Dimension(s) as ordered in the dimensions of an object.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple, Array or single Dimension or dimension Type.

The return type will be a Tuple of Int or a single Int, depending on whether query is a Tuple or single Dimension.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
@@ -177,7 +177,7 @@
 (3, 1, 2)
 
 julia> dimnum(A, Y)
-2

source

DimensionalData.Dimensions.hasdim Function
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
+2

source

DimensionalData.Dimensions.hasdim Function
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
 hasdim([f], x, query...) => NTuple{Bool}
 hasdim([f], x, query) => Bool

Check if an object x has dimensions that match or inherit from the query dimensions.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

Check if an object or tuple contains an Dimension, or a tuple of dimensions.

Example

julia
julia> using DimensionalData
 
@@ -190,7 +190,7 @@
 (true, true, true)
 
 julia> hasdim(A, Ti)
-false

source

Multi-array datasets

DimensionalData.AbstractDimStack Type
julia
AbstractDimStack

Abstract supertype for dimensional stacks.

These have multiple layers of data, but share dimensions.

Notably, their behaviour lies somewhere between a DimArray and a NamedTuple:

  • indexing with a Symbol as in dimstack[:symbol] returns a DimArray layer.

  • iteration and map apply over array layers, as indexed with a Symbol.

  • getindex and many base methods are applied as for DimArray - to avoid the need to always use map.

This design gives very succinct code when working with many-layered, mixed-dimension objects. But it may be jarring initially - the most surprising outcome is that dimstack[1] will return a NamedTuple of values for the first index in all layers, while first(dimstack) will return the first value of the iterator - the DimArray for the first layer.

See DimStack for the concrete implementation. Most methods are defined on the abstract type.

To extend AbstractDimStack, implement argument and keyword version of rebuild and also rebuild_from_arrays.

The constructor of an AbstractDimStack must accept a NamedTuple.

source

DimensionalData.DimStack Type
julia
DimStack <: AbstractDimStack
+false

source

Multi-array datasets

DimensionalData.AbstractDimStack Type
julia
AbstractDimStack

Abstract supertype for dimensional stacks.

These have multiple layers of data, but share dimensions.

Notably, their behaviour lies somewhere between a DimArray and a NamedTuple:

  • indexing with a Symbol as in dimstack[:symbol] returns a DimArray layer.

  • iteration and map apply over array layers, as indexed with a Symbol.

  • getindex and many base methods are applied as for DimArray - to avoid the need to always use map.

This design gives very succinct code when working with many-layered, mixed-dimension objects. But it may be jarring initially - the most surprising outcome is that dimstack[1] will return a NamedTuple of values for the first index in all layers, while first(dimstack) will return the first value of the iterator - the DimArray for the first layer.

See DimStack for the concrete implementation. Most methods are defined on the abstract type.

To extend AbstractDimStack, implement argument and keyword version of rebuild and also rebuild_from_arrays.

The constructor of an AbstractDimStack must accept a NamedTuple.

source

DimensionalData.DimStack Type
julia
DimStack <: AbstractDimStack
 
 DimStack(data::AbstractDimArray...; kw...)
 DimStack(data::Tuple{Vararg{AbstractDimArray}}; kw...)
@@ -217,7 +217,7 @@
 (one = 4.0, two = 8.0, three = 12.0)
 
 julia> s[X(At(:a))] isa DimStack
-true

source

Dimension generators

DimensionalData.DimIndices Type
julia
DimIndices <: AbstractArray
+true

source

Dimension generators

DimensionalData.DimIndices Type
julia
DimIndices <: AbstractArray
 
 DimIndices(x)
 DimIndices(dims::Tuple)
@@ -254,7 +254,7 @@
 └─────────────────────────────────────────────────────────────────┘
    'a'       'c'
  0.0  0.9063    0.0991336
- 0.6  0.745673  0.692209

source

DimensionalData.DimSelectors Type
julia
DimSelectors <: AbstractArray
+ 0.6  0.745673  0.692209

source

DimensionalData.DimSelectors Type
julia
DimSelectors <: AbstractArray
 
 DimSelectors(x; selectors, atol...)
 DimSelectors(dims::Tuple; selectors, atol...)
@@ -272,11 +272,11 @@
   1.0        11.0       21.0
   1.0  0.691162    0.218579   0.539076
  10.0  0.0303789   0.420756   0.485687
- 22.0  0.0967863   0.864856   0.870485

Using At would make sure we only use exact interpolation, while Contains with sampling of Intervals would make sure that each values is taken only from an Interval that is present in the lookups.

source

DimensionalData.DimPoints Type
julia
DimPoints <: AbstractArray
+ 22.0  0.0967863   0.864856   0.870485

Using At would make sure we only use exact interpolation, while Contains with sampling of Intervals would make sure that each values is taken only from an Interval that is present in the lookups.

source

DimensionalData.DimPoints Type
julia
DimPoints <: AbstractArray
 
 DimPoints(x; order)
 DimPoints(dims::Tuple; order)
-DimPoints(dims::Dimension; order)

Like CartesianIndices, but for the point values of the dimension index. Behaves as an Array of Tuple lookup values (whatever they are) for all combinations of the lookup values of dims.

Either a Dimension, a Tuple of Dimension or an object x that defines a dims method can be passed in.

Keywords

  • order: determines the order of the points, the same as the order of dims by default.

source

Tables.jl/TableTraits.jl interface

DimensionalData.AbstractDimTable Type
julia
AbstractDimTable <: Tables.AbstractColumns

Abstract supertype for dim tables

source

DimensionalData.DimTable Type
julia
DimTable <: AbstractDimTable
+DimPoints(dims::Dimension; order)

Like CartesianIndices, but for the point values of the dimension index. Behaves as an Array of Tuple lookup values (whatever they are) for all combinations of the lookup values of dims.

Either a Dimension, a Tuple of Dimension or an object x that defines a dims method can be passed in.

Keywords

  • order: determines the order of the points, the same as the order of dims by default.

source

Tables.jl/TableTraits.jl interface

DimensionalData.AbstractDimTable Type
julia
AbstractDimTable <: Tables.AbstractColumns

Abstract supertype for dim tables

source

DimensionalData.DimTable Type
julia
DimTable <: AbstractDimTable
 
 DimTable(s::AbstractDimStack; mergedims=nothing)
 DimTable(x::AbstractDimArray; layersfrom=nothing, mergedims=nothing)
@@ -306,7 +306,7 @@
  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0
 
-julia>

source

Group by methods

For transforming DimensionalData objects:

DataAPI.groupby Function
julia
groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Pair...)
+julia>

source

Group by methods

For transforming DimensionalData objects:

DataAPI.groupby Function
julia
groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Pair...)
 groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Dimension{<:Callable}...)

Group A by grouping functions or Bins over multiple dimensions.

Arguments

  • A: any AbstractDimArray or AbstractDimStack.

  • dims: Pairs such as groups = groupby(A, :dimname => groupingfunction) or wrapped Dimensions like groups = groupby(A, DimType(groupingfunction)). Instead of a grouping function Bins can be used to specify group bins.

Return value

A DimGroupByArray is returned, which is basically a regular AbstractDimArray but holding the grouped AbstractDimArray or AbstractDimStack. Its dims hold the sorted values returned by the grouping function/s.

Base julia and package methods work on DimGroupByArray as for any other AbstractArray of AbstractArray.

It is common to broadcast or map a reducing function over groups, such as mean or sum, like mean.(groups) or map(mean, groups). This will return a regular DimArray, or DimGroupByArray if dims keyword is used in the reducing function or it otherwise returns an AbstractDimArray or AbstractDimStack.

Example

Group some data along the time dimension:

julia
julia> using DimensionalData, Dates
 
 julia> A = rand(X(1:0.1:20), Y(1:20), Ti(DateTime(2000):Day(3):DateTime(2003)));
@@ -359,8 +359,8 @@
 
  10        0.501105     0.500644
  11        0.498606     0.498801
- 12        0.501643     0.499298

source

DimensionalData.DimGroupByArray Type
julia
DimGroupByArray <: AbstractDimArray

DimGroupByArray is essentially a DimArray but holding the results of a groupby operation.

Its dimensions are the sorted results of the grouping functions used in groupby.

This wrapper allows for specialisations on later broadcast or reducing operations, e.g. for chunk reading with DiskArrays.jl, because we know the data originates from a single array.

source

DimensionalData.Bins Type
julia
Bins(f, bins; labels, pad)
-Bins(bins; labels, pad)

Specify bins to reduce groups after applying function f.

  • f: a grouping function of the lookup values, by default identity.

  • bins:

    • an Integer will divide the group values into equally spaced sections.

    • an AbstractArray of values will be treated as exact matches for the return value of f. For example, 1:3 will create 3 bins - 1, 2, 3.

    • an AbstractArray of IntervalSets.Interval can be used to explicitly define the intervals. Overlapping intervals have undefined behaviour.

Keywords

  • pad: fraction of the total interval to pad at each end when Bins contains an Integer. This avoids losing the edge values. Note this is a messy solution - it will often be prefereble to manually specify a Vector of chosen Intervals rather than relying on passing an Integer and pad.

  • labels: a list of descriptive labels for the bins. The labels need to have the same length as bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

DimensionalData.ranges Function
julia
ranges(A::AbstractRange{<:Integer})

Generate a Vector of UnitRange with length step(A)

source

DimensionalData.intervals Function
julia
intervals(A::AbstractRange)

Generate a Vector of UnitRange with length step(A)

source

DimensionalData.CyclicBins Type
julia
CyclicBins(f; cycle, start, step, labels)

Cyclic bins to reduce groups after applying function f. Groups can wrap around the cycle. This is used for grouping in seasons, months and hours but can also be used for custom cycles.

  • f: a grouping function of the lookup values, by default identity.

Keywords

  • cycle: the length of the cycle, in return values of f.

  • start: the start of the cycle: a return value of f.

  • step the number of sequential values to group.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

DimensionalData.seasons Function
julia
seasons(; [start=Dates.December, labels])

Generates CyclicBins for three month periods.

Keywords

  • start: By default seasons start in December, but any integer 1:12 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected quarters.

source

DimensionalData.months Function
julia
months(step; [start=Dates.January, labels])

Generates CyclicBins for grouping to arbitrary month periods. These can wrap around the end of a year.

  • step the number of months to group.

Keywords

  • start: By default months start in January, but any integer 1:12 can be used.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected months.

source

DimensionalData.hours Function
julia
hours(step; [start=0, labels])

Generates CyclicBins for grouping to arbitrary hour periods. These can wrap around the end of the day.

  • steps the number of hours to group.

Keywords

  • start: By default seasons start at 0, but any integer 1:24 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected hours of the day.

source

Utility methods

For transforming DimensionalData objects:

DimensionalData.Dimensions.Lookups.set Function
julia
set(x, val)
+ 12        0.501643     0.499298

source

DimensionalData.DimGroupByArray Type
julia
DimGroupByArray <: AbstractDimArray

DimGroupByArray is essentially a DimArray but holding the results of a groupby operation.

Its dimensions are the sorted results of the grouping functions used in groupby.

This wrapper allows for specialisations on later broadcast or reducing operations, e.g. for chunk reading with DiskArrays.jl, because we know the data originates from a single array.

source

DimensionalData.Bins Type
julia
Bins(f, bins; labels, pad)
+Bins(bins; labels, pad)

Specify bins to reduce groups after applying function f.

  • f: a grouping function of the lookup values, by default identity.

  • bins:

    • an Integer will divide the group values into equally spaced sections.

    • an AbstractArray of values will be treated as exact matches for the return value of f. For example, 1:3 will create 3 bins - 1, 2, 3.

    • an AbstractArray of IntervalSets.Interval can be used to explicitly define the intervals. Overlapping intervals have undefined behaviour.

Keywords

  • pad: fraction of the total interval to pad at each end when Bins contains an Integer. This avoids losing the edge values. Note this is a messy solution - it will often be prefereble to manually specify a Vector of chosen Intervals rather than relying on passing an Integer and pad.

  • labels: a list of descriptive labels for the bins. The labels need to have the same length as bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

DimensionalData.ranges Function
julia
ranges(A::AbstractRange{<:Integer})

Generate a Vector of UnitRange with length step(A)

source

DimensionalData.intervals Function
julia
intervals(A::AbstractRange)

Generate a Vector of UnitRange with length step(A)

source

DimensionalData.CyclicBins Type
julia
CyclicBins(f; cycle, start, step, labels)

Cyclic bins to reduce groups after applying function f. Groups can wrap around the cycle. This is used for grouping in seasons, months and hours but can also be used for custom cycles.

  • f: a grouping function of the lookup values, by default identity.

Keywords

  • cycle: the length of the cycle, in return values of f.

  • start: the start of the cycle: a return value of f.

  • step the number of sequential values to group.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

DimensionalData.seasons Function
julia
seasons(; [start=Dates.December, labels])

Generates CyclicBins for three month periods.

Keywords

  • start: By default seasons start in December, but any integer 1:12 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected quarters.

source

DimensionalData.months Function
julia
months(step; [start=Dates.January, labels])

Generates CyclicBins for grouping to arbitrary month periods. These can wrap around the end of a year.

  • step the number of months to group.

Keywords

  • start: By default months start in January, but any integer 1:12 can be used.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected months.

source

DimensionalData.hours Function
julia
hours(step; [start=0, labels])

Generates CyclicBins for grouping to arbitrary hour periods. These can wrap around the end of the day.

  • steps the number of hours to group.

Keywords

  • start: By default seasons start at 0, but any integer 1:24 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected hours of the day.

source

Utility methods

For transforming DimensionalData objects:

DimensionalData.Dimensions.Lookups.set Function
julia
set(x, val)
 set(x, args::Pairs...) => x with updated field/s
 set(x, args...; kw...) => x with updated field/s
 set(x, args::Tuple{Vararg{Dimension}}; kw...) => x with updated field/s
@@ -421,11 +421,11 @@
   -20.0  -10.0  0.0  10.0
  10.0    0.0    0.0  0.0   0.0
  20.0    0.0    0.0  0.0   0.0
- 30.0    0.0    0.0  0.0   0.0

source

DimensionalData.Dimensions.Lookups.rebuild Function
julia
rebuild(x; kw...)

Rebuild an object struct with updated field values.

x can be a AbstractDimArray, a Dimension, Lookup or other custom types.

This is an abstraction that allows inbuilt and custom types to be rebuilt to update their fields, as most objects in DimensionalData.jl are immutable.

Rebuild is mostly automated using ConstructionBase.setproperties. It should only be defined if your object has fields with with different names to DimensionalData objects. Try not to do that!

The arguments required are defined for the abstract type that has a rebuild method.

AbstractBasicDimArray:

  • dims: a Tuple of Dimension

AbstractDimArray:

  • data: the parent object - an AbstractArray

  • dims: a Tuple of Dimension

  • refdims: a Tuple of Dimension

  • name: A Symbol, or NoName and Name on GPU.

  • metadata: A Dict-like object

AbstractDimStack:

  • data: the parent object, often a NamedTuple

  • dims, refdims, metadata

Dimension:

  • val: anything.

Lookup:

  • data: the parent object, an AbstractArray

  • Note: argument rebuild is deprecated on AbstractDimArray and

AbstractDimStack in favour of always using the keyword version. In future the argument version will only be used on Dimension, which only have one argument.

source

DimensionalData.modify Function
julia
modify(f, A::AbstractDimArray) => AbstractDimArray
+ 30.0    0.0    0.0  0.0   0.0

source

DimensionalData.Dimensions.Lookups.rebuild Function
julia
rebuild(x; kw...)

Rebuild an object struct with updated field values.

x can be a AbstractDimArray, a Dimension, Lookup or other custom types.

This is an abstraction that allows inbuilt and custom types to be rebuilt to update their fields, as most objects in DimensionalData.jl are immutable.

Rebuild is mostly automated using ConstructionBase.setproperties. It should only be defined if your object has fields with with different names to DimensionalData objects. Try not to do that!

The arguments required are defined for the abstract type that has a rebuild method.

AbstractBasicDimArray:

  • dims: a Tuple of Dimension

AbstractDimArray:

  • data: the parent object - an AbstractArray

  • dims: a Tuple of Dimension

  • refdims: a Tuple of Dimension

  • name: A Symbol, or NoName and Name on GPU.

  • metadata: A Dict-like object

AbstractDimStack:

  • data: the parent object, often a NamedTuple

  • dims, refdims, metadata

Dimension:

  • val: anything.

Lookup:

  • data: the parent object, an AbstractArray

  • Note: argument rebuild is deprecated on AbstractDimArray and

AbstractDimStack in favour of always using the keyword version. In future the argument version will only be used on Dimension, which only have one argument.

source

DimensionalData.modify Function
julia
modify(f, A::AbstractDimArray) => AbstractDimArray
 modify(f, s::AbstractDimStack) => AbstractDimStack
 modify(f, dim::Dimension) => Dimension
 modify(f, x, lookupdim::Dimension) => typeof(x)

Modify the parent data, rebuilding the object wrapper without change. f must return a AbstractArray of the same size as the original.

This method is mostly useful as a way of swapping the parent array type of an object.

Example

If we have a previously-defined DimArray, we can copy it to an Nvidia GPU with:

julia
A = DimArray(rand(100, 100), (X, Y))
-modify(CuArray, A)

This also works for all the data layers in a DimStack.

source

DimensionalData.@d Macro
julia
@d broadcast_expression options

Dimensional broadcast macro extending Base Julia broadcasting to work with missing and permuted dimensions.

Will permute and reshape singleton dimensions so that all AbstractDimArray in a broadcast will broadcast over matching dimensions.

It is possible to pass options as the second argument of the macro to control the behaviour, as a single assignment or as a NamedTuple. Options names must be written explicitly, not passed in namedtuple variable.

Options

  • dims: Pass a Tuple of Dimensions, Dimension types or Symbols to fix the dimension order of the output array. Otherwise dimensions will be in order of appearance. If dims with lookups are passed, these will be applied to the returned array with set.

  • strict: true or false. Check that all lookup values match explicitly.

All other keywords are passed to DimensionalData.rebuild. This means name, metadata, etc for the returned array can be set here, or for example missingval in Rasters.jl.

Example

julia
using DimensionalData
+modify(CuArray, A)

This also works for all the data layers in a DimStack.

source

DimensionalData.@d Macro
julia
@d broadcast_expression options

Dimensional broadcast macro extending Base Julia broadcasting to work with missing and permuted dimensions.

Will permute and reshape singleton dimensions so that all AbstractDimArray in a broadcast will broadcast over matching dimensions.

It is possible to pass options as the second argument of the macro to control the behaviour, as a single assignment or as a NamedTuple. Options names must be written explicitly, not passed in namedtuple variable.

Options

  • dims: Pass a Tuple of Dimensions, Dimension types or Symbols to fix the dimension order of the output array. Otherwise dimensions will be in order of appearance. If dims with lookups are passed, these will be applied to the returned array with set.

  • strict: true or false. Check that all lookup values match explicitly.

All other keywords are passed to DimensionalData.rebuild. This means name, metadata, etc for the returned array can be set here, or for example missingval in Rasters.jl.

Example

julia
using DimensionalData
 da1 = ones(X(3))
 da2 = fill(2, Y(4), X(3))
 
@@ -437,7 +437,7 @@
 
 @d @. da1 * da2
 # Use parentheses around `@.` if you need to pass options
-@d (@. da1 * da2 .+ 5) dims=(Y, X)

source

DimensionalData.broadcast_dims Function
julia
broadcast_dims(f, sources::AbstractDimArray...) => AbstractDimArray

Broadcast function f over the AbstractDimArrays in sources, permuting and reshaping dimensions to match where required. The result will contain all the dimensions in all passed in arrays in the order in which they are found.

Arguments

  • sources: AbstractDimArrays to broadcast over with f.

This is like broadcasting over every slice of A if it is sliced by the dimensions of B.

source

DimensionalData.broadcast_dims! Function
julia
broadcast_dims!(f, dest::AbstractDimArray, sources::AbstractDimArray...) => dest

Broadcast function f over the AbstractDimArrays in sources, writing to dest. sources are permuting and reshaping dimensions to match where required.

The result will contain all the dimensions in all passed in arrays, in the order in which they are found.

Arguments

  • dest: AbstractDimArray to update.

  • sources: AbstractDimArrays to broadcast over with f.

source

DimensionalData.mergedims Function
julia
mergedims(old_dims => new_dim) => Dimension

Return a dimension new_dim whose indices are a MergedLookup of the indices of old_dims.

source

julia
mergedims(dims, old_dims => new_dim, others::Pair...) => dims_new

If dimensions old_dims, new_dim, etc. are found in dims, then return new dims_new where all dims in old_dims have been combined into a single dim new_dim. The returned dimension will keep only the name of new_dim. Its coords will be a MergedLookup of the coords of the dims in old_dims. New dimensions are always placed at the end of dims_new. others contains other dimension pairs to be merged.

Example

julia
julia> using DimensionalData
+@d (@. da1 * da2 .+ 5) dims=(Y, X)

source

DimensionalData.broadcast_dims Function
julia
broadcast_dims(f, sources::AbstractDimArray...) => AbstractDimArray

Broadcast function f over the AbstractDimArrays in sources, permuting and reshaping dimensions to match where required. The result will contain all the dimensions in all passed in arrays in the order in which they are found.

Arguments

  • sources: AbstractDimArrays to broadcast over with f.

This is like broadcasting over every slice of A if it is sliced by the dimensions of B.

source

DimensionalData.broadcast_dims! Function
julia
broadcast_dims!(f, dest::AbstractDimArray, sources::AbstractDimArray...) => dest

Broadcast function f over the AbstractDimArrays in sources, writing to dest. sources are permuting and reshaping dimensions to match where required.

The result will contain all the dimensions in all passed in arrays, in the order in which they are found.

Arguments

  • dest: AbstractDimArray to update.

  • sources: AbstractDimArrays to broadcast over with f.

source

DimensionalData.mergedims Function
julia
mergedims(old_dims => new_dim) => Dimension

Return a dimension new_dim whose indices are a MergedLookup of the indices of old_dims.

source

julia
mergedims(dims, old_dims => new_dim, others::Pair...) => dims_new

If dimensions old_dims, new_dim, etc. are found in dims, then return new dims_new where all dims in old_dims have been combined into a single dim new_dim. The returned dimension will keep only the name of new_dim. Its coords will be a MergedLookup of the coords of the dims in old_dims. New dimensions are always placed at the end of dims_new. others contains other dimension pairs to be merged.

Example

julia
julia> using DimensionalData
 
 julia> ds = (X(0:0.1:0.4), Y(10:10:100), Ti([0, 3, 4]))
 ( X  0.0:0.1:0.4,
@@ -446,9 +446,9 @@
 
 julia> mergedims(ds, (X, Y) => :space)
 ( Ti    [0, 3, 4],
- space MergedLookup{Tuple{Float64, Int64}} [(0.0, 10), (0.1, 10), , (0.3, 100), (0.4, 100)] ( X,  Y))

source

julia
mergedims(A::AbstractDimArray, dim_pairs::Pair...) => AbstractDimArray
-mergedims(A::AbstractDimStack, dim_pairs::Pair...) => AbstractDimStack

Return a new array or stack whose dimensions are the result of mergedims(dims(A), dim_pairs).

source

DimensionalData.unmergedims Function
julia
unmergedims(merged_dims::Tuple{Vararg{Dimension}}) => Tuple{Vararg{Dimension}}

Return the unmerged dimensions from a tuple of merged dimensions. However, the order of the original dimensions are not necessarily preserved.

source

julia
unmergedims(A::AbstractDimArray, original_dims) => AbstractDimArray
-unmergedims(A::AbstractDimStack, original_dims) => AbstractDimStack

Return a new array or stack whose dimensions are restored to their original prior to calling mergedims(A, dim_pairs).

source

DimensionalData.reorder Function
julia
reorder(A::Union{AbstractDimArray,AbstractDimStack}, order::Pair...)
+ space MergedLookup{Tuple{Float64, Int64}} [(0.0, 10), (0.1, 10), , (0.3, 100), (0.4, 100)] ( X,  Y))

source

julia
mergedims(A::AbstractDimArray, dim_pairs::Pair...) => AbstractDimArray
+mergedims(A::AbstractDimStack, dim_pairs::Pair...) => AbstractDimStack

Return a new array or stack whose dimensions are the result of mergedims(dims(A), dim_pairs).

source

DimensionalData.unmergedims Function
julia
unmergedims(merged_dims::Tuple{Vararg{Dimension}}) => Tuple{Vararg{Dimension}}

Return the unmerged dimensions from a tuple of merged dimensions. However, the order of the original dimensions are not necessarily preserved.

source

julia
unmergedims(A::AbstractDimArray, original_dims) => AbstractDimArray
+unmergedims(A::AbstractDimStack, original_dims) => AbstractDimStack

Return a new array or stack whose dimensions are restored to their original prior to calling mergedims(A, dim_pairs).

source

DimensionalData.reorder Function
julia
reorder(A::Union{AbstractDimArray,AbstractDimStack}, order::Pair...)
 reorder(A::Union{AbstractDimArray,AbstractDimStack}, order)
 reorder(A::Dimension, order::Order)

Reorder every dims index/array to order, or reorder index for the given dimension(s) in order.

order can be an Order, Dimension => Order pairs. A Tuple of Dimensions or any object that defines dims can be used in which case the dimensions of this object are used for reordering.

If no axis reversal is required the same objects will be returned, without allocation.

Example

julia
using DimensionalData
 
@@ -462,7 +462,7 @@
 reorder(rev, da) == da
 
 # output
-true

source

Global lookup strictness settings

Control how strict DimensionalData when comparing Lookups before doing broadcasts and matrix multipications.

In some cases (especially DimVector and small DimArray) checking lookup values match may be too costly compared to the operations. You can turn check the current setting and turn them on or off with these methods.

DimensionalData.strict_broadcast Function
julia
strict_broadcast()

Check if strict broadcasting checks are active.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

DimensionalData.strict_broadcast! Function
julia
strict_broadcast!(x::Bool)

Set global broadcasting checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

DimensionalData.strict_matmul Function
julia
strict_matmul()

Check if strickt broadcasting checks are active.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

DimensionalData.strict_matmul! Function
julia
strict_matmul!(x::Bool)

Set global matrix multiplication checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

Base methods

Base.cat Function
julia
Base.cat(stacks::AbstractDimStack...; [keys=keys(stacks[1])], dims)

Concatenate all or a subset of layers for all passed in stacks.

Keywords

  • keys: Tuple of Symbol for the stack keys to concatenate.

  • dims: Dimension of child array to concatenate on.

Example

Concatenate the :sea_surface_temp and :humidity layers in the time dimension:

julia
cat(stacks...; keys=(:sea_surface_temp, :humidity), dims=Ti)

source

Base.copy! Function
julia
Base.copy!(dst::AbstractArray, src::AbstractDimStack, key::Key)

Copy the stack layer key to dst, which can be any AbstractArray.

Example

Copy the :humidity layer from stack to array.

julia
copy!(array, stack, :humidity)

source

julia
Base.copy!(dst::AbstractDimStack, src::AbstractDimStack, [keys=keys(dst)])

Copy all or a subset of layers from one stack to another.

Example

Copy just the :sea_surface_temp and :humidity layers from src to dst.

julia
copy!(dst::AbstractDimStack, src::AbstractDimStack, keys=(:sea_surface_temp, :humidity))

source

Base.eachslice Function
julia
Base.eachslice(A::AbstractDimArray; dims,drop=true)

Create a generator that iterates over dimensions dims of A, returning arrays that select all the data from the other dimensions in A using views.

The generator has size and axes equivalent to those of the provided dims if drop=true. Otherwise it will have the same dimensionality as the underlying array with inner dimensions having size 1.

source

julia
Base.eachslice(stack::AbstractDimStack; dims, drop=true)

Create a generator that iterates over dimensions dims of stack, returning stacks that select all the data from the other dimensions in stack using views.

The generator has size and axes equivalent to those of the provided dims.

Examples

julia
julia> ds = DimStack((
+true

source

Global lookup strictness settings

Control how strict DimensionalData when comparing Lookups before doing broadcasts and matrix multipications.

In some cases (especially DimVector and small DimArray) checking lookup values match may be too costly compared to the operations. You can turn check the current setting and turn them on or off with these methods.

DimensionalData.strict_broadcast Function
julia
strict_broadcast()

Check if strict broadcasting checks are active.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

DimensionalData.strict_broadcast! Function
julia
strict_broadcast!(x::Bool)

Set global broadcasting checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

DimensionalData.strict_matmul Function
julia
strict_matmul()

Check if strickt broadcasting checks are active.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

DimensionalData.strict_matmul! Function
julia
strict_matmul!(x::Bool)

Set global matrix multiplication checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

Base methods

Base.cat Function
julia
Base.cat(stacks::AbstractDimStack...; [keys=keys(stacks[1])], dims)

Concatenate all or a subset of layers for all passed in stacks.

Keywords

  • keys: Tuple of Symbol for the stack keys to concatenate.

  • dims: Dimension of child array to concatenate on.

Example

Concatenate the :sea_surface_temp and :humidity layers in the time dimension:

julia
cat(stacks...; keys=(:sea_surface_temp, :humidity), dims=Ti)

source

Base.copy! Function
julia
Base.copy!(dst::AbstractArray, src::AbstractDimStack, key::Key)

Copy the stack layer key to dst, which can be any AbstractArray.

Example

Copy the :humidity layer from stack to array.

julia
copy!(array, stack, :humidity)

source

julia
Base.copy!(dst::AbstractDimStack, src::AbstractDimStack, [keys=keys(dst)])

Copy all or a subset of layers from one stack to another.

Example

Copy just the :sea_surface_temp and :humidity layers from src to dst.

julia
copy!(dst::AbstractDimStack, src::AbstractDimStack, keys=(:sea_surface_temp, :humidity))

source

Base.eachslice Function
julia
Base.eachslice(A::AbstractDimArray; dims,drop=true)

Create a generator that iterates over dimensions dims of A, returning arrays that select all the data from the other dimensions in A using views.

The generator has size and axes equivalent to those of the provided dims if drop=true. Otherwise it will have the same dimensionality as the underlying array with inner dimensions having size 1.

source

julia
Base.eachslice(stack::AbstractDimStack; dims, drop=true)

Create a generator that iterates over dimensions dims of stack, returning stacks that select all the data from the other dimensions in stack using views.

The generator has size and axes equivalent to those of the provided dims.

Examples

julia
julia> ds = DimStack((
            x=DimArray(randn(2, 3, 4), (X([:x1, :x2]), Y(1:3), Z)),
            y=DimArray(randn(2, 3, 5), (X([:x1, :x2]), Y(1:3), Ti))
        ));
@@ -485,17 +485,17 @@
 ├──────────────────────────────────────────────── layers ┤
   :x eltype: Float64 dims: Y size: 3
   :y eltype: Float64 dims: Y, Ti size: 3×5
-└────────────────────────────────────────────────────────┘

source

Most base methods work as expected, using Dimension wherever a dims keyword is used. They are not all specifically documented here.

Name

DimensionalData.AbstractName Type
julia
AbstractName

Abstract supertype for name wrappers.

source

DimensionalData.Name Type
julia
Name <: AbstractName
+└────────────────────────────────────────────────────────┘

source

Most base methods work as expected, using Dimension wherever a dims keyword is used. They are not all specifically documented here.

Name

DimensionalData.AbstractName Type
julia
AbstractName

Abstract supertype for name wrappers.

source

DimensionalData.Name Type
julia
Name <: AbstractName
 
 Name(name::Union{Symbol,Name) => Name
-Name(name::NoName) => NoName

Name wrapper. This lets arrays keep symbol names when the array wrapper needs to be isbits, like for use on GPUs. It makes the name a property of the type. It's not necessary to use in normal use, a symbol is probably easier.

source

DimensionalData.NoName Type
julia
NoName <: AbstractName
+Name(name::NoName) => NoName

Name wrapper. This lets arrays keep symbol names when the array wrapper needs to be isbits, like for use on GPUs. It makes the name a property of the type. It's not necessary to use in normal use, a symbol is probably easier.

source

DimensionalData.NoName Type
julia
NoName <: AbstractName
 
-NoName()

NoName specifies an array is not named, and is the default name value for all AbstractDimArrays.

source

Internal interface

DimensionalData.DimArrayInterface Type
julia
    DimArrayInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_parent_kw, :rebuild_dims_kw, :rebuild) and optional components (:refdims, :name, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches dimensions of array

  • size: length of dims matches dimensions of array

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • name:

    • rebuild updates name in arg rebuild

    • rebuild updates name in kw rebuild

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

DimensionalData.DimStackInterface Type
julia
    DimStackInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_layerdims, :rebuild_dims_kw, :rebuild_parent_kw, :rebuild_layerdims_kw, :rebuild) and optional components (:refdims, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches ndims of stack

  • size: length of dims matches size of stack

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_layerdims: rebuild paaarnet and dims from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_layerdims_kw: rebuild parent from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

DimensionalData.rebuild_from_arrays Function
julia
rebuild_from_arrays(s::AbstractDimStack, das::NamedTuple{<:Any,<:Tuple{Vararg{AbstractDimArray}}}; kw...)

Rebuild an AbstractDimStack from a Tuple or NamedTuple of AbstractDimArray and an existing stack.

Keywords

Keywords are simply the fields of the stack object:

  • data

  • dims

  • refdims

  • metadata

  • layerdims

  • layermetadata

source

DimensionalData.show_main Function
julia
show_main(io::IO, mime, A::AbstractDimArray)
-show_main(io::IO, mime, A::AbstractDimStack)

Interface methods for adding the main part of show

At the least, you likely want to call:

julia
print_top(io, mime, A)

But read the DimensionalData.jl show.jl code for details.

source

DimensionalData.show_after Function
julia
show_after(io::IO, mime, A::AbstractDimArray)
-show_after(io::IO, mime, A::AbstractDimStack)

Interface methods for adding additional show text for AbstractDimArray/AbstractDimStack subtypes.

Always include kw to avoid future breaking changes

Additional keywords may be added at any time.

blockwidth is passed in context

julia
blockwidth = get(io, :blockwidth, 10000)

Note - a ANSI box is left unclosed. This method needs to close it, or add more. blockwidth is the maximum length of the inner text.

Most likely you always want to at least close the show blocks with:

julia
print_block_close(io, blockwidth)

But read the DimensionalData.jl show.jl code for details.

source

DimensionalData.refdims_title Function
julia
refdims_title(A::AbstractDimArray)
+NoName()

NoName specifies an array is not named, and is the default name value for all AbstractDimArrays.

source

Internal interface

DimensionalData.DimArrayInterface Type
julia
    DimArrayInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_parent_kw, :rebuild_dims_kw, :rebuild) and optional components (:refdims, :name, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches dimensions of array

  • size: length of dims matches dimensions of array

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • name:

    • rebuild updates name in arg rebuild

    • rebuild updates name in kw rebuild

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

DimensionalData.DimStackInterface Type
julia
    DimStackInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_layerdims, :rebuild_dims_kw, :rebuild_parent_kw, :rebuild_layerdims_kw, :rebuild) and optional components (:refdims, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches ndims of stack

  • size: length of dims matches size of stack

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_layerdims: rebuild paaarnet and dims from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_layerdims_kw: rebuild parent from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

DimensionalData.rebuild_from_arrays Function
julia
rebuild_from_arrays(s::AbstractDimStack, das::NamedTuple{<:Any,<:Tuple{Vararg{AbstractDimArray}}}; kw...)

Rebuild an AbstractDimStack from a Tuple or NamedTuple of AbstractDimArray and an existing stack.

Keywords

Keywords are simply the fields of the stack object:

  • data

  • dims

  • refdims

  • metadata

  • layerdims

  • layermetadata

source

DimensionalData.show_main Function
julia
show_main(io::IO, mime, A::AbstractDimArray)
+show_main(io::IO, mime, A::AbstractDimStack)

Interface methods for adding the main part of show

At the least, you likely want to call:

julia
print_top(io, mime, A)

But read the DimensionalData.jl show.jl code for details.

source

DimensionalData.show_after Function
julia
show_after(io::IO, mime, A::AbstractDimArray)
+show_after(io::IO, mime, A::AbstractDimStack)

Interface methods for adding additional show text for AbstractDimArray/AbstractDimStack subtypes.

Always include kw to avoid future breaking changes

Additional keywords may be added at any time.

blockwidth is passed in context

julia
blockwidth = get(io, :blockwidth, 10000)

Note - a ANSI box is left unclosed. This method needs to close it, or add more. blockwidth is the maximum length of the inner text.

Most likely you always want to at least close the show blocks with:

julia
print_block_close(io, blockwidth)

But read the DimensionalData.jl show.jl code for details.

source

DimensionalData.refdims_title Function
julia
refdims_title(A::AbstractDimArray)
 refdims_title(refdims::Tuple)
-refdims_title(refdim::Dimension)

Generate a title string based on reference dimension values.

source

- +refdims_title(refdim::Dimension)

Generate a title string based on reference dimension values.

source

+ \ No newline at end of file diff --git a/dev/assets/api_dimensions.md.BdeTmDqi.js b/dev/assets/api_dimensions.md.DD3cOSSp.js similarity index 97% rename from dev/assets/api_dimensions.md.BdeTmDqi.js rename to dev/assets/api_dimensions.md.DD3cOSSp.js index cb30b0eae..eea1ce543 100644 --- a/dev/assets/api_dimensions.md.BdeTmDqi.js +++ b/dev/assets/api_dimensions.md.DD3cOSSp.js @@ -1,5 +1,5 @@ -import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framework.Brp_kw4H.js";const ss=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"api/dimensions.md","filePath":"api/dimensions.md","lastUpdated":null}'),d={name:"api/dimensions.md"},o={class:"jldocstring custom-block",open:""},r={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""};function $(K,s,W,J,H,Q){const n=p("Badge");return h(),k("div",null,[s[108]||(s[108]=i("h1",{id:"dimensions",tabindex:"-1"},[a("Dimensions "),i("a",{class:"header-anchor",href:"#dimensions","aria-label":'Permalink to "Dimensions"'},"​")],-1)),s[109]||(s[109]=i("p",null,[a("Dimensions are kept in the sub-module "),i("code",null,"Dimensions"),a(".")],-1)),i("details",o,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions",href:"#DimensionalData.Dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Dimensions

Sub-module for Dimensions wrappers, and operations on them used in DimensionalData.jl.

To load Dimensions types and methods into scope:

julia
using DimensionalData
-using DimensionalData.Dimensions

source

`,5))]),s[110]||(s[110]=i("p",null,"Dimensions have a type-hierarchy that organises plotting and dimension matching.",-1)),i("details",r,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Dimension",href:"#DimensionalData.Dimensions.Dimension"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dimension")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t(`
julia
Dimension

Abstract supertype of all dimension types.

Example concrete implementations are X, Y, Z, Ti (Time), and the custom Dim dimension.

Dimensions label the axes of an AbstractDimArray, or other dimensional objects, and are used to index into an array.

They may also wrap lookup values for each array axis. This may be any AbstractVector matching the array axis length, but will usually be converted to a Lookup when use in a constructed object.

A Lookup gives more details about the dimension, such as that it is Categorical or Sampled as Points or Intervals along some transect. DimensionalData will attempt to guess the lookup from the passed-in index value.

Example:

julia
using DimensionalData, Dates
+import{_ as l,c as p,j as i,a,G as e,a4 as t,B as h,o as k}from"./chunks/framework.60YQGL-0.js";const ss=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"api/dimensions.md","filePath":"api/dimensions.md","lastUpdated":null}'),d={name:"api/dimensions.md"},o={class:"jldocstring custom-block",open:""},r={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""};function $(K,s,W,J,H,Q){const n=h("Badge");return k(),p("div",null,[s[108]||(s[108]=i("h1",{id:"dimensions",tabindex:"-1"},[a("Dimensions "),i("a",{class:"header-anchor",href:"#dimensions","aria-label":'Permalink to "Dimensions"'},"​")],-1)),s[109]||(s[109]=i("p",null,[a("Dimensions are kept in the sub-module "),i("code",null,"Dimensions"),a(".")],-1)),i("details",o,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions",href:"#DimensionalData.Dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Dimensions

Sub-module for Dimensions wrappers, and operations on them used in DimensionalData.jl.

To load Dimensions types and methods into scope:

julia
using DimensionalData
+using DimensionalData.Dimensions

source

`,5))]),s[110]||(s[110]=i("p",null,"Dimensions have a type-hierarchy that organises plotting and dimension matching.",-1)),i("details",r,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Dimension",href:"#DimensionalData.Dimensions.Dimension"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dimension")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t(`
julia
Dimension

Abstract supertype of all dimension types.

Example concrete implementations are X, Y, Z, Ti (Time), and the custom Dim dimension.

Dimensions label the axes of an AbstractDimArray, or other dimensional objects, and are used to index into an array.

They may also wrap lookup values for each array axis. This may be any AbstractVector matching the array axis length, but will usually be converted to a Lookup when use in a constructed object.

A Lookup gives more details about the dimension, such as that it is Categorical or Sampled as Points or Intervals along some transect. DimensionalData will attempt to guess the lookup from the passed-in index value.

Example:

julia
using DimensionalData, Dates
 
 x = X(2:2:10)
 y = Y(['a', 'b', 'c'])
@@ -51,21 +51,21 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
  Ti Sampled{DateTime} DateTime("2021-01-01T00:00:00"):Month(1):DateTime("2021-12-01T00:00:00") ForwardOrdered Regular Points
 └──────────────────────────────────────────────────────────────────────────────┘
    2021-01-01T00:00:00   2021-02-01T00:00:00   2021-12-01T00:00:00
- 4    0.0                   0.0                      0.0

source

`,13))]),i("details",g,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.DependentDim",href:"#DimensionalData.Dimensions.DependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.DependentDim")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
DependentDim <: Dimension

Abstract supertype for dependent dimensions. These will plot on the Y axis.

source

',3))]),i("details",E,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.IndependentDim",href:"#DimensionalData.Dimensions.IndependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.IndependentDim")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
IndependentDim <: Dimension

Abstract supertype for independent dimensions. These will plot on the X axis.

source

',3))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.XDim",href:"#DimensionalData.Dimensions.XDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.XDim")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t('
julia
XDim <: IndependentDim

Abstract supertype for all X dimensions.

source

',3))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.YDim",href:"#DimensionalData.Dimensions.YDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.YDim")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
YDim <: DependentDim

Abstract supertype for all Y dimensions.

source

',3))]),i("details",m,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.ZDim",href:"#DimensionalData.Dimensions.ZDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.ZDim")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t('
julia
ZDim <: DependentDim

Abstract supertype for all Z dimensions.

source

',3))]),i("details",F,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.TimeDim",href:"#DimensionalData.Dimensions.TimeDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.TimeDim")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
TimeDim <: IndependentDim

Abstract supertype for all time dimensions.

In a TimeDime with Interval sampling the locus will automatically be set to Start(). Dates and times generally refer to the start of a month, hour, second etc., not the central point as is more common with spatial data. `

source

',4))]),i("details",u,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.X",href:"#DimensionalData.Dimensions.X"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.X")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
X <: XDim
+ 4    0.0                   0.0                      0.0

source

`,13))]),i("details",g,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.DependentDim",href:"#DimensionalData.Dimensions.DependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.DependentDim")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
DependentDim <: Dimension

Abstract supertype for dependent dimensions. These will plot on the Y axis.

source

',3))]),i("details",E,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.IndependentDim",href:"#DimensionalData.Dimensions.IndependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.IndependentDim")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
IndependentDim <: Dimension

Abstract supertype for independent dimensions. These will plot on the X axis.

source

',3))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.XDim",href:"#DimensionalData.Dimensions.XDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.XDim")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t('
julia
XDim <: IndependentDim

Abstract supertype for all X dimensions.

source

',3))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.YDim",href:"#DimensionalData.Dimensions.YDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.YDim")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
YDim <: DependentDim

Abstract supertype for all Y dimensions.

source

',3))]),i("details",m,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.ZDim",href:"#DimensionalData.Dimensions.ZDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.ZDim")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t('
julia
ZDim <: DependentDim

Abstract supertype for all Z dimensions.

source

',3))]),i("details",F,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.TimeDim",href:"#DimensionalData.Dimensions.TimeDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.TimeDim")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
TimeDim <: IndependentDim

Abstract supertype for all time dimensions.

In a TimeDime with Interval sampling the locus will automatically be set to Start(). Dates and times generally refer to the start of a month, hour, second etc., not the central point as is more common with spatial data. `

source

',4))]),i("details",u,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.X",href:"#DimensionalData.Dimensions.X"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.X")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
X <: XDim
 
-X(val=:)

X Dimension. X <: XDim <: IndependentDim

Examples

julia
xdim = X(2:2:10)
julia
val = A[X(1)]
julia
mean(A; dims=X)

source

`,7))]),i("details",D,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Y",href:"#DimensionalData.Dimensions.Y"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Y")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t(`
julia
Y <: YDim
+X(val=:)

X Dimension. X <: XDim <: IndependentDim

Examples

julia
xdim = X(2:2:10)
julia
val = A[X(1)]
julia
mean(A; dims=X)

source

`,7))]),i("details",D,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Y",href:"#DimensionalData.Dimensions.Y"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Y")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t(`
julia
Y <: YDim
 
-Y(val=:)

Y Dimension. Y <: YDim <: DependentDim

Examples

julia
ydim = Y(['a', 'b', 'c'])
julia
val = A[Y(1)]
julia
mean(A; dims=Y)

source

`,7))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Z",href:"#DimensionalData.Dimensions.Z"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Z")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Z <: ZDim
+Y(val=:)

Y Dimension. Y <: YDim <: DependentDim

Examples

julia
ydim = Y(['a', 'b', 'c'])
julia
val = A[Y(1)]
julia
mean(A; dims=Y)

source

`,7))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Z",href:"#DimensionalData.Dimensions.Z"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Z")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Z <: ZDim
 
-Z(val=:)

Z Dimension. Z <: ZDim <: Dimension

Example:

julia
zdim = Z(10:10:100)
julia
val = A[Z(1)]
julia
mean(A; dims=Z)

source

`,7))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.Ti",href:"#DimensionalData.Dimensions.Ti"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Ti")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t('

m Ti <: TimeDim

Ti(val=:)

Time Dimension. Ti <: TimeDim <: IndependentDim

Time is already used by Dates, and T is a common type parameter, We use Ti to avoid clashes.

Example:

julia
timedim = Ti(DateTime(2021, 1):Month(1):DateTime(2021, 12))
julia
val = A[Ti(1)]
julia
mean(A; dims=Ti)

source

',9))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Dim",href:"#DimensionalData.Dimensions.Dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dim")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
Dim{S}(val=:)

A generic dimension. For use when custom dims are required when loading data from a file. Can be used as keyword arguments for indexing.

Dimension types take precedence over same named Dim types when indexing with symbols, or e.g. creating Tables.jl keys.

julia
julia> dim = Dim{:custom}(['a', 'b', 'c'])
-custom ['a', 'b', 'c']

source

`,5))]),i("details",j,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.AnonDim",href:"#DimensionalData.Dimensions.AnonDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.AnonDim")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AnonDim <: Dimension
+Z(val=:)

Z Dimension. Z <: ZDim <: Dimension

Example:

julia
zdim = Z(10:10:100)
julia
val = A[Z(1)]
julia
mean(A; dims=Z)

source

`,7))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.Ti",href:"#DimensionalData.Dimensions.Ti"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Ti")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t('

m Ti <: TimeDim

Ti(val=:)

Time Dimension. Ti <: TimeDim <: IndependentDim

Time is already used by Dates, and T is a common type parameter, We use Ti to avoid clashes.

Example:

julia
timedim = Ti(DateTime(2021, 1):Month(1):DateTime(2021, 12))
julia
val = A[Ti(1)]
julia
mean(A; dims=Ti)

source

',9))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Dim",href:"#DimensionalData.Dimensions.Dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dim")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
Dim{S}(val=:)

A generic dimension. For use when custom dims are required when loading data from a file. Can be used as keyword arguments for indexing.

Dimension types take precedence over same named Dim types when indexing with symbols, or e.g. creating Tables.jl keys.

julia
julia> dim = Dim{:custom}(['a', 'b', 'c'])
+custom ['a', 'b', 'c']

source

`,5))]),i("details",j,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.AnonDim",href:"#DimensionalData.Dimensions.AnonDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.AnonDim")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AnonDim <: Dimension
 
-AnonDim()

Anonymous dimension. Used when extra dimensions are created, such as during transpose of a vector.

source

`,3))]),i("details",B,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.@dim",href:"#DimensionalData.Dimensions.@dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.@dim")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[44]||(s[44]=t(`
julia
@dim typ [supertype=Dimension] [label::String=string(typ)]

Macro to easily define new dimensions.

The supertype will be inserted into the type of the dim. The default is simply YourDim <: Dimension.

Making a Dimension inherit from XDim, YDim, ZDim or TimeDim will affect automatic plot layout and other methods that dispatch on these types. <: YDim are plotted on the Y axis, <: XDim on the X axis, etc.

label is used in plots and similar, if the dimension is short for a longer word.

Example:

julia
using DimensionalData
+AnonDim()

Anonymous dimension. Used when extra dimensions are created, such as during transpose of a vector.

source

`,3))]),i("details",B,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.@dim",href:"#DimensionalData.Dimensions.@dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.@dim")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[44]||(s[44]=t(`
julia
@dim typ [supertype=Dimension] [label::String=string(typ)]

Macro to easily define new dimensions.

The supertype will be inserted into the type of the dim. The default is simply YourDim <: Dimension.

Making a Dimension inherit from XDim, YDim, ZDim or TimeDim will affect automatic plot layout and other methods that dispatch on these types. <: YDim are plotted on the Y axis, <: XDim on the X axis, etc.

label is used in plots and similar, if the dimension is short for a longer word.

Example:

julia
using DimensionalData
 using DimensionalData: @dim, YDim, XDim
 @dim Lat YDim "Latitude"
 @dim Lon XDim "Longitude"
-# output

source

`,8))]),s[111]||(s[111]=i("h3",{id:"Exported-methods",tabindex:"-1"},[a("Exported methods "),i("a",{class:"header-anchor",href:"#Exported-methods","aria-label":'Permalink to "Exported methods {#Exported-methods}"'},"​")],-1)),s[112]||(s[112]=i("p",null,"These are widely useful methods for working with dimensions.",-1)),i("details",v,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.dims-api-dimensions",href:"#DimensionalData.Dimensions.dims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
+# output

source

`,8))]),s[111]||(s[111]=i("h3",{id:"Exported-methods",tabindex:"-1"},[a("Exported methods "),i("a",{class:"header-anchor",href:"#Exported-methods","aria-label":'Permalink to "Exported methods {#Exported-methods}"'},"​")],-1)),s[112]||(s[112]=i("p",null,"These are widely useful methods for working with dimensions.",-1)),i("details",v,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.dims-api-dimensions",href:"#DimensionalData.Dimensions.dims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
 dims(x, query...) => Tuple{Vararg{Dimension}}

Get the dimension(s) matching the type(s) of the query dimension.

Lookup can be an Int or an Dimension, or a tuple containing any combination of either.

Arguments

  • x: any object with a dims method, or a Tuple of Dimension.

  • query: Tuple or a single Dimension or Dimension Type.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(2, 3, 2), (X, Y, Z))
@@ -79,7 +79,7 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
  1.0  1.0  1.0
 
 julia> dims(A, (X, Y))
-( X,  Y)

source

`,13))]),i("details",A,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.otherdims-api-dimensions",href:"#DimensionalData.Dimensions.otherdims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
+( X,  Y)

source

`,13))]),i("details",A,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.otherdims-api-dimensions",href:"#DimensionalData.Dimensions.otherdims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -87,7 +87,7 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 ( Y,  Z)
 
 julia> otherdims(A, (Y, Z))
-( X)

source

`,8))]),i("details",T,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.dimnum-api-dimensions",href:"#DimensionalData.Dimensions.dimnum-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
+( X)

source

`,8))]),i("details",T,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.dimnum-api-dimensions",href:"#DimensionalData.Dimensions.dimnum-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
 dimnum(x, query) => Int

Get the number(s) of Dimension(s) as ordered in the dimensions of an object.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple, Array or single Dimension or dimension Type.

The return type will be a Tuple of Int or a single Int, depending on whether query is a Tuple or single Dimension.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
@@ -96,7 +96,7 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 (3, 1, 2)
 
 julia> dimnum(A, Y)
-2

source

`,8))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.hasdim-api-dimensions",href:"#DimensionalData.Dimensions.hasdim-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
+2

source

`,8))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.hasdim-api-dimensions",href:"#DimensionalData.Dimensions.hasdim-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
 hasdim([f], x, query...) => NTuple{Bool}
 hasdim([f], x, query) => Bool

Check if an object x has dimensions that match or inherit from the query dimensions.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

Check if an object or tuple contains an Dimension, or a tuple of dimensions.

Example

julia
julia> using DimensionalData
 
@@ -109,13 +109,13 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 (true, true, true)
 
 julia> hasdim(A, Ti)
-false

source

`,8))]),s[113]||(s[113]=i("h3",{id:"Non-exported-methods",tabindex:"-1"},[a("Non-exported methods "),i("a",{class:"header-anchor",href:"#Non-exported-methods","aria-label":'Permalink to "Non-exported methods {#Non-exported-methods}"'},"​")],-1)),i("details",w,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.lookup",href:"#DimensionalData.Dimensions.lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.lookup")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
lookup(x::Dimension) => Lookup
+false

source

`,8))]),s[113]||(s[113]=i("h3",{id:"Non-exported-methods",tabindex:"-1"},[a("Non-exported methods "),i("a",{class:"header-anchor",href:"#Non-exported-methods","aria-label":'Permalink to "Non-exported methods {#Non-exported-methods}"'},"​")],-1)),i("details",w,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.lookup",href:"#DimensionalData.Dimensions.lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.lookup")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
lookup(x::Dimension) => Lookup
 lookup(x, [dims::Tuple]) => Tuple{Vararg{Lookup}}
 lookup(x::Tuple) => Tuple{Vararg{Lookup}}
-lookup(x, dim) => Lookup

Returns the Lookup of a dimension. This dictates properties of the dimension such as array axis and lookup order, and sampling properties.

dims can be a Dimension, a dimension type, or a tuple of either.

This is separate from val in that it will only work when dimensions actually contain an AbstractArray lookup, and can be used on a DimArray or DimStack to retrieve all lookups, as there is no ambiguity of meaning as there is with val.

source

`,5))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.label",href:"#DimensionalData.Dimensions.label"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.label")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
label(x) => String
+lookup(x, dim) => Lookup

Returns the Lookup of a dimension. This dictates properties of the dimension such as array axis and lookup order, and sampling properties.

dims can be a Dimension, a dimension type, or a tuple of either.

This is separate from val in that it will only work when dimensions actually contain an AbstractArray lookup, and can be used on a DimArray or DimStack to retrieve all lookups, as there is no ambiguity of meaning as there is with val.

source

`,5))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.label",href:"#DimensionalData.Dimensions.label"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.label")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
label(x) => String
 label(x, dims::Tuple) => NTuple{N,String}
 label(x, dim) => String
-label(xs::Tuple) => NTuple{N,String}

Get a plot label for data or a dimension. This will include the name and units if they exist, and anything else that should be shown on a plot.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",q,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.format",href:"#DimensionalData.Dimensions.format"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.format")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t('
julia
format(dims, x) => Tuple{Vararg{Dimension,N}}

Format the passed-in dimension(s) dims to match the object x.

Errors are thrown if dims don't match the array dims or size, and any fields holding Auto- objects are filled with guessed objects.

If a Lookup hasn't been specified, a lookup is chosen based on the type and element type of the values.

source

',5))]),i("details",X,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.dims2indices",href:"#DimensionalData.Dimensions.dims2indices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims2indices")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
dims2indices(dim::Dimension, I) => NTuple{Union{Colon,AbstractArray,Int}}

Convert a Dimension or Selector I to indices of Int, AbstractArray or Colon.

source

',3))]),i("details",Y,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.selectindices",href:"#DimensionalData.Dimensions.Lookups.selectindices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.selectindices")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[71]||(s[71]=t('
julia
selectindices(lookups, selectors)

Converts Selector to regular indices.

source

',3))]),s[114]||(s[114]=i("h3",{id:"Primitive-methods",tabindex:"-1"},[a("Primitive methods "),i("a",{class:"header-anchor",href:"#Primitive-methods","aria-label":'Permalink to "Primitive methods {#Primitive-methods}"'},"​")],-1)),s[115]||(s[115]=i("p",null,"These low-level methods are really for internal use, but can be useful for writing dimensional algorithms.",-1)),s[116]||(s[116]=i("p",null,"They are not guaranteed to keep their interface, but usually will.",-1)),i("details",O,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.commondims",href:"#DimensionalData.Dimensions.commondims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.commondims")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=t(`
julia
commondims([f], x, query) => Tuple{Vararg{Dimension}}

This is basically dims(x, query) where the order of the original is kept, unlike dims where the query tuple determines the order

Also unlike dims,commondims always returns a Tuple, no matter the input. No errors are thrown if dims are absent from either x or query.

f is <: by default, but can be >: to sort abstract types by concrete types.

julia
julia> using DimensionalData, .Dimensions
+label(xs::Tuple) => NTuple{N,String}

Get a plot label for data or a dimension. This will include the name and units if they exist, and anything else that should be shown on a plot.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",q,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.format",href:"#DimensionalData.Dimensions.format"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.format")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t('
julia
format(dims, x) => Tuple{Vararg{Dimension,N}}

Format the passed-in dimension(s) dims to match the object x.

Errors are thrown if dims don't match the array dims or size, and any fields holding Auto- objects are filled with guessed objects.

If a Lookup hasn't been specified, a lookup is chosen based on the type and element type of the values.

source

',5))]),i("details",X,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.dims2indices",href:"#DimensionalData.Dimensions.dims2indices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims2indices")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
dims2indices(dim::Dimension, I) => NTuple{Union{Colon,AbstractArray,Int}}

Convert a Dimension or Selector I to indices of Int, AbstractArray or Colon.

source

',3))]),i("details",Y,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.selectindices",href:"#DimensionalData.Dimensions.Lookups.selectindices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.selectindices")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[71]||(s[71]=t('
julia
selectindices(lookups, selectors)

Converts Selector to regular indices.

source

',3))]),s[114]||(s[114]=i("h3",{id:"Primitive-methods",tabindex:"-1"},[a("Primitive methods "),i("a",{class:"header-anchor",href:"#Primitive-methods","aria-label":'Permalink to "Primitive methods {#Primitive-methods}"'},"​")],-1)),s[115]||(s[115]=i("p",null,"These low-level methods are really for internal use, but can be useful for writing dimensional algorithms.",-1)),s[116]||(s[116]=i("p",null,"They are not guaranteed to keep their interface, but usually will.",-1)),i("details",O,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.commondims",href:"#DimensionalData.Dimensions.commondims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.commondims")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=t(`
julia
commondims([f], x, query) => Tuple{Vararg{Dimension}}

This is basically dims(x, query) where the order of the original is kept, unlike dims where the query tuple determines the order

Also unlike dims,commondims always returns a Tuple, no matter the input. No errors are thrown if dims are absent from either x or query.

f is <: by default, but can be >: to sort abstract types by concrete types.

julia
julia> using DimensionalData, .Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -126,9 +126,9 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 ( X,  Z)
 
 julia> commondims(A, Ti)
-()

source

`,6))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.name2dim",href:"#DimensionalData.Dimensions.name2dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name2dim")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=t(`
julia
name2dim(s::Symbol) => Dimension
+()

source

`,6))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.name2dim",href:"#DimensionalData.Dimensions.name2dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name2dim")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=t(`
julia
name2dim(s::Symbol) => Dimension
 name2dim(dims...) => Tuple{Dimension,Vararg}
-name2dim(dims::Tuple) => Tuple{Dimension,Vararg}

Convert a symbol to a dimension object. :X, :Y, :Ti etc will be converted to X(), Y(), Ti(), as with any other dims generated with the @dim macro.

All other Symbols S will generate Dim{S}() dimensions.

source

`,4))]),i("details",S,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.reducedims",href:"#DimensionalData.Dimensions.reducedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.reducedims")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[80]||(s[80]=t('
julia
reducedims(x, dimstoreduce) => Tuple{Vararg{Dimension}}

Replace the specified dimensions with an index of length 1. This is usually to match a new array size where an axis has been reduced with a method like mean or reduce to a length of 1, but the number of dimensions has not changed.

Lookup traits are also updated to correspond to the change in cell step, sampling type and order.

source

',4))]),i("details",Z,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.swapdims",href:"#DimensionalData.Dimensions.swapdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.swapdims")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=t(`
julia
swapdims(x::T, newdims) => T
+name2dim(dims::Tuple) => Tuple{Dimension,Vararg}

Convert a symbol to a dimension object. :X, :Y, :Ti etc will be converted to X(), Y(), Ti(), as with any other dims generated with the @dim macro.

All other Symbols S will generate Dim{S}() dimensions.

source

`,4))]),i("details",S,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.reducedims",href:"#DimensionalData.Dimensions.reducedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.reducedims")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[80]||(s[80]=t('
julia
reducedims(x, dimstoreduce) => Tuple{Vararg{Dimension}}

Replace the specified dimensions with an index of length 1. This is usually to match a new array size where an axis has been reduced with a method like mean or reduce to a length of 1, but the number of dimensions has not changed.

Lookup traits are also updated to correspond to the change in cell step, sampling type and order.

source

',4))]),i("details",Z,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.swapdims",href:"#DimensionalData.Dimensions.swapdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.swapdims")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=t(`
julia
swapdims(x::T, newdims) => T
 swapdims(dims::Tuple, newdims) => Tuple{Vararg{Dimension}}

Swap dimensions for the passed in dimensions, in the order passed.

Passing in the Dimension types rewraps the dimension index, keeping the index values and metadata, while constructed Dimension objects replace the original dimension. nothing leaves the original dimension as-is.

Arguments

  • x: any object with a dims method or a Tuple of Dimension.

  • newdim: Tuple of Dimension or dimension Type.

Example

julia
using DimensionalData
 A = ones(X(2), Y(4), Z(2))
 Dimensions.swapdims(A, (Dim{:a}, Dim{:b}, Dim{:c}))
@@ -141,17 +141,17 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 └────────────────────────────┘
 [:, :, 1]
  1.0  1.0  1.0  1.0
- 1.0  1.0  1.0  1.0

source

`,8))]),i("details",I,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.slicedims",href:"#DimensionalData.Dimensions.slicedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.slicedims")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=t(`
julia
slicedims(x, I) => Tuple{Tuple,Tuple}
-slicedims(f, x, I) => Tuple{Tuple,Tuple}

Slice the dimensions to match the axis values of the new array.

All methods return a tuple containing two tuples: the new dimensions, and the reference dimensions. The ref dimensions are no longer used in the new struct but are useful to give context to plots.

Called at the array level the returned tuple will also include the previous reference dims attached to the array.

Arguments

  • f: a function getindex, view or dotview. This will be used for slicing getindex is the default if f is not included.

  • x: An AbstractDimArray, Tuple of Dimension, or Dimension

  • I: A tuple of Integer, Colon or AbstractArray

source

`,7))]),i("details",N,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.comparedims",href:"#DimensionalData.Dimensions.comparedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.comparedims")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=t(`
julia
comparedims(A::AbstractDimArray...; kw...)
+ 1.0  1.0  1.0  1.0

source

`,8))]),i("details",I,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.slicedims",href:"#DimensionalData.Dimensions.slicedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.slicedims")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=t(`
julia
slicedims(x, I) => Tuple{Tuple,Tuple}
+slicedims(f, x, I) => Tuple{Tuple,Tuple}

Slice the dimensions to match the axis values of the new array.

All methods return a tuple containing two tuples: the new dimensions, and the reference dimensions. The ref dimensions are no longer used in the new struct but are useful to give context to plots.

Called at the array level the returned tuple will also include the previous reference dims attached to the array.

Arguments

  • f: a function getindex, view or dotview. This will be used for slicing getindex is the default if f is not included.

  • x: An AbstractDimArray, Tuple of Dimension, or Dimension

  • I: A tuple of Integer, Colon or AbstractArray

source

`,7))]),i("details",N,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.comparedims",href:"#DimensionalData.Dimensions.comparedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.comparedims")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=t(`
julia
comparedims(A::AbstractDimArray...; kw...)
 comparedims(A::Tuple...; kw...)
 comparedims(A::Dimension...; kw...)
-comparedims(::Type{Bool}, args...; kw...)

Check that dimensions or tuples of dimensions passed as each argument are the same, and return the first valid dimension. If AbstractDimArrays are passed as arguments their dimensions are compared.

Empty tuples and nothing dimension values are ignored, returning the Dimension value if it exists.

Passing Bool as the first argument means true/false will be returned, rather than throwing an error.

Keywords

These are all Bool flags:

  • type: compare dimension type, true by default.

  • valtype: compare wrapped value type, false by default.

  • val: compare wrapped values, false by default.

  • order: compare order, false by default.

  • length: compare lengths, true by default.

  • ignore_length_one: ignore length 1 in comparisons, and return whichever dimension is not length 1, if any. This is useful in e.g. broadcasting comparisons. false by default.

  • msg: DimensionalData.Warn or DimensionalData.Throw. Both may contain string, which will be added to error or warning mesages.

source

`,8))]),i("details",P,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.combinedims",href:"#DimensionalData.Dimensions.combinedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.combinedims")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=t('
julia
combinedims(xs; check=true, kw...)

Combine the dimensions of each object in xs, in the order they are found.

Keywords are passed to comparedims.

source

',4))]),i("details",V,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.sortdims",href:"#DimensionalData.Dimensions.sortdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.sortdims")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=t('
julia
sortdims([f], tosort, order) => Tuple

Sort dimensions tosort by order. Dimensions in order but missing from tosort are replaced with nothing.

tosort and order can be Tuples or Vectors or Dimension or dimension type. Abstract supertypes like TimeDim can be used in order.

f is <: by default, but can be >: to sort abstract types by concrete types.

source

',5))]),i("details",M,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.basetypeof",href:"#DimensionalData.Dimensions.Lookups.basetypeof"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.basetypeof")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=t('
julia
basetypeof(x) => Type

Get the "base" type of an object - the minimum required to define the object without it's fields. By default this is the full UnionAll for the type. But custom basetypeof methods can be defined for types with free type parameters.

In DimensionalData this is primarily used for comparing Dimensions, where Dim{:x} is different from Dim{:y}.

source

',4))]),i("details",R,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.basedims",href:"#DimensionalData.Dimensions.basedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.basedims")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[101]||(s[101]=t(`
julia
basedims(ds::Tuple)
-basedims(d::Union{Dimension,Symbol,Type})

Returns basetypeof(d)() or a Tuple of called on a Tuple.

See basetypeof

source

`,4))]),i("details",G,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.setdims",href:"#DimensionalData.Dimensions.setdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.setdims")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=t(`
julia
setdims(X, newdims) => AbstractArray
+comparedims(::Type{Bool}, args...; kw...)

Check that dimensions or tuples of dimensions passed as each argument are the same, and return the first valid dimension. If AbstractDimArrays are passed as arguments their dimensions are compared.

Empty tuples and nothing dimension values are ignored, returning the Dimension value if it exists.

Passing Bool as the first argument means true/false will be returned, rather than throwing an error.

Keywords

These are all Bool flags:

  • type: compare dimension type, true by default.

  • valtype: compare wrapped value type, false by default.

  • val: compare wrapped values, false by default.

  • order: compare order, false by default.

  • length: compare lengths, true by default.

  • ignore_length_one: ignore length 1 in comparisons, and return whichever dimension is not length 1, if any. This is useful in e.g. broadcasting comparisons. false by default.

  • msg: DimensionalData.Warn or DimensionalData.Throw. Both may contain string, which will be added to error or warning mesages.

source

`,8))]),i("details",P,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.combinedims",href:"#DimensionalData.Dimensions.combinedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.combinedims")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=t('
julia
combinedims(xs; check=true, kw...)

Combine the dimensions of each object in xs, in the order they are found.

Keywords are passed to comparedims.

source

',4))]),i("details",V,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.sortdims",href:"#DimensionalData.Dimensions.sortdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.sortdims")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=t('
julia
sortdims([f], tosort, order) => Tuple

Sort dimensions tosort by order. Dimensions in order but missing from tosort are replaced with nothing.

tosort and order can be Tuples or Vectors or Dimension or dimension type. Abstract supertypes like TimeDim can be used in order.

f is <: by default, but can be >: to sort abstract types by concrete types.

source

',5))]),i("details",M,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.basetypeof",href:"#DimensionalData.Dimensions.Lookups.basetypeof"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.basetypeof")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=t('
julia
basetypeof(x) => Type

Get the "base" type of an object - the minimum required to define the object without it's fields. By default this is the full UnionAll for the type. But custom basetypeof methods can be defined for types with free type parameters.

In DimensionalData this is primarily used for comparing Dimensions, where Dim{:x} is different from Dim{:y}.

source

',4))]),i("details",R,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.basedims",href:"#DimensionalData.Dimensions.basedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.basedims")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[101]||(s[101]=t(`
julia
basedims(ds::Tuple)
+basedims(d::Union{Dimension,Symbol,Type})

Returns basetypeof(d)() or a Tuple of called on a Tuple.

See basetypeof

source

`,4))]),i("details",G,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.setdims",href:"#DimensionalData.Dimensions.setdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.setdims")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=t(`
julia
setdims(X, newdims) => AbstractArray
 setdims(::Tuple, newdims) => Tuple{Vararg{Dimension,N}}

Replaces the first dim matching <: basetypeof(newdim) with newdim, and returns a new object or tuple with the dimension updated.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • newdim: Tuple or single Dimension, Type or Symbol.

Example

julia
using DimensionalData, DimensionalData.Dimensions, DimensionalData.Lookups
 A = ones(X(10), Y(10:10:100))
 B = setdims(A, Y(Categorical('a':'j'; order=ForwardOrdered())))
 lookup(B, Y)
 # output
 Categorical{Char} ForwardOrdered
-wrapping: 'a':1:'j'

source

`,7))]),i("details",U,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.dimsmatch",href:"#DimensionalData.Dimensions.dimsmatch"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimsmatch")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=t(`
julia
dimsmatch([f], dim, query) => Bool
-dimsmatch([f], dims::Tuple, query::Tuple) => Bool

Compare 2 dimensions or Tuple of Dimension are of the same base type, or are at least rotations/transformations of the same type.

f is <: by default, but can be >: to match abstract types to concrete types.

source

`,4))])])}const is=l(d,[["render",$]]);export{ss as __pageData,is as default}; +wrapping: 'a':1:'j'

source

`,7))]),i("details",U,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.dimsmatch",href:"#DimensionalData.Dimensions.dimsmatch"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimsmatch")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=t(`
julia
dimsmatch([f], dim, query) => Bool
+dimsmatch([f], dims::Tuple, query::Tuple) => Bool

Compare 2 dimensions or Tuple of Dimension are of the same base type, or are at least rotations/transformations of the same type.

f is <: by default, but can be >: to match abstract types to concrete types.

source

`,4))])])}const is=l(d,[["render",$]]);export{ss as __pageData,is as default}; diff --git a/dev/assets/api_dimensions.md.BdeTmDqi.lean.js b/dev/assets/api_dimensions.md.DD3cOSSp.lean.js similarity index 97% rename from dev/assets/api_dimensions.md.BdeTmDqi.lean.js rename to dev/assets/api_dimensions.md.DD3cOSSp.lean.js index cb30b0eae..eea1ce543 100644 --- a/dev/assets/api_dimensions.md.BdeTmDqi.lean.js +++ b/dev/assets/api_dimensions.md.DD3cOSSp.lean.js @@ -1,5 +1,5 @@ -import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framework.Brp_kw4H.js";const ss=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"api/dimensions.md","filePath":"api/dimensions.md","lastUpdated":null}'),d={name:"api/dimensions.md"},o={class:"jldocstring custom-block",open:""},r={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""};function $(K,s,W,J,H,Q){const n=p("Badge");return h(),k("div",null,[s[108]||(s[108]=i("h1",{id:"dimensions",tabindex:"-1"},[a("Dimensions "),i("a",{class:"header-anchor",href:"#dimensions","aria-label":'Permalink to "Dimensions"'},"​")],-1)),s[109]||(s[109]=i("p",null,[a("Dimensions are kept in the sub-module "),i("code",null,"Dimensions"),a(".")],-1)),i("details",o,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions",href:"#DimensionalData.Dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Dimensions

Sub-module for Dimensions wrappers, and operations on them used in DimensionalData.jl.

To load Dimensions types and methods into scope:

julia
using DimensionalData
-using DimensionalData.Dimensions

source

`,5))]),s[110]||(s[110]=i("p",null,"Dimensions have a type-hierarchy that organises plotting and dimension matching.",-1)),i("details",r,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Dimension",href:"#DimensionalData.Dimensions.Dimension"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dimension")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t(`
julia
Dimension

Abstract supertype of all dimension types.

Example concrete implementations are X, Y, Z, Ti (Time), and the custom Dim dimension.

Dimensions label the axes of an AbstractDimArray, or other dimensional objects, and are used to index into an array.

They may also wrap lookup values for each array axis. This may be any AbstractVector matching the array axis length, but will usually be converted to a Lookup when use in a constructed object.

A Lookup gives more details about the dimension, such as that it is Categorical or Sampled as Points or Intervals along some transect. DimensionalData will attempt to guess the lookup from the passed-in index value.

Example:

julia
using DimensionalData, Dates
+import{_ as l,c as p,j as i,a,G as e,a4 as t,B as h,o as k}from"./chunks/framework.60YQGL-0.js";const ss=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"api/dimensions.md","filePath":"api/dimensions.md","lastUpdated":null}'),d={name:"api/dimensions.md"},o={class:"jldocstring custom-block",open:""},r={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""};function $(K,s,W,J,H,Q){const n=h("Badge");return k(),p("div",null,[s[108]||(s[108]=i("h1",{id:"dimensions",tabindex:"-1"},[a("Dimensions "),i("a",{class:"header-anchor",href:"#dimensions","aria-label":'Permalink to "Dimensions"'},"​")],-1)),s[109]||(s[109]=i("p",null,[a("Dimensions are kept in the sub-module "),i("code",null,"Dimensions"),a(".")],-1)),i("details",o,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions",href:"#DimensionalData.Dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Dimensions

Sub-module for Dimensions wrappers, and operations on them used in DimensionalData.jl.

To load Dimensions types and methods into scope:

julia
using DimensionalData
+using DimensionalData.Dimensions

source

`,5))]),s[110]||(s[110]=i("p",null,"Dimensions have a type-hierarchy that organises plotting and dimension matching.",-1)),i("details",r,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Dimension",href:"#DimensionalData.Dimensions.Dimension"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dimension")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t(`
julia
Dimension

Abstract supertype of all dimension types.

Example concrete implementations are X, Y, Z, Ti (Time), and the custom Dim dimension.

Dimensions label the axes of an AbstractDimArray, or other dimensional objects, and are used to index into an array.

They may also wrap lookup values for each array axis. This may be any AbstractVector matching the array axis length, but will usually be converted to a Lookup when use in a constructed object.

A Lookup gives more details about the dimension, such as that it is Categorical or Sampled as Points or Intervals along some transect. DimensionalData will attempt to guess the lookup from the passed-in index value.

Example:

julia
using DimensionalData, Dates
 
 x = X(2:2:10)
 y = Y(['a', 'b', 'c'])
@@ -51,21 +51,21 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
  Ti Sampled{DateTime} DateTime("2021-01-01T00:00:00"):Month(1):DateTime("2021-12-01T00:00:00") ForwardOrdered Regular Points
 └──────────────────────────────────────────────────────────────────────────────┘
    2021-01-01T00:00:00   2021-02-01T00:00:00   2021-12-01T00:00:00
- 4    0.0                   0.0                      0.0

source

`,13))]),i("details",g,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.DependentDim",href:"#DimensionalData.Dimensions.DependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.DependentDim")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
DependentDim <: Dimension

Abstract supertype for dependent dimensions. These will plot on the Y axis.

source

',3))]),i("details",E,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.IndependentDim",href:"#DimensionalData.Dimensions.IndependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.IndependentDim")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
IndependentDim <: Dimension

Abstract supertype for independent dimensions. These will plot on the X axis.

source

',3))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.XDim",href:"#DimensionalData.Dimensions.XDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.XDim")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t('
julia
XDim <: IndependentDim

Abstract supertype for all X dimensions.

source

',3))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.YDim",href:"#DimensionalData.Dimensions.YDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.YDim")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
YDim <: DependentDim

Abstract supertype for all Y dimensions.

source

',3))]),i("details",m,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.ZDim",href:"#DimensionalData.Dimensions.ZDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.ZDim")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t('
julia
ZDim <: DependentDim

Abstract supertype for all Z dimensions.

source

',3))]),i("details",F,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.TimeDim",href:"#DimensionalData.Dimensions.TimeDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.TimeDim")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
TimeDim <: IndependentDim

Abstract supertype for all time dimensions.

In a TimeDime with Interval sampling the locus will automatically be set to Start(). Dates and times generally refer to the start of a month, hour, second etc., not the central point as is more common with spatial data. `

source

',4))]),i("details",u,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.X",href:"#DimensionalData.Dimensions.X"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.X")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
X <: XDim
+ 4    0.0                   0.0                      0.0

source

`,13))]),i("details",g,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.DependentDim",href:"#DimensionalData.Dimensions.DependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.DependentDim")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
DependentDim <: Dimension

Abstract supertype for dependent dimensions. These will plot on the Y axis.

source

',3))]),i("details",E,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.IndependentDim",href:"#DimensionalData.Dimensions.IndependentDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.IndependentDim")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
IndependentDim <: Dimension

Abstract supertype for independent dimensions. These will plot on the X axis.

source

',3))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.XDim",href:"#DimensionalData.Dimensions.XDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.XDim")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t('
julia
XDim <: IndependentDim

Abstract supertype for all X dimensions.

source

',3))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.YDim",href:"#DimensionalData.Dimensions.YDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.YDim")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
YDim <: DependentDim

Abstract supertype for all Y dimensions.

source

',3))]),i("details",m,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.ZDim",href:"#DimensionalData.Dimensions.ZDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.ZDim")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t('
julia
ZDim <: DependentDim

Abstract supertype for all Z dimensions.

source

',3))]),i("details",F,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.TimeDim",href:"#DimensionalData.Dimensions.TimeDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.TimeDim")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
TimeDim <: IndependentDim

Abstract supertype for all time dimensions.

In a TimeDime with Interval sampling the locus will automatically be set to Start(). Dates and times generally refer to the start of a month, hour, second etc., not the central point as is more common with spatial data. `

source

',4))]),i("details",u,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.X",href:"#DimensionalData.Dimensions.X"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.X")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
X <: XDim
 
-X(val=:)

X Dimension. X <: XDim <: IndependentDim

Examples

julia
xdim = X(2:2:10)
julia
val = A[X(1)]
julia
mean(A; dims=X)

source

`,7))]),i("details",D,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Y",href:"#DimensionalData.Dimensions.Y"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Y")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t(`
julia
Y <: YDim
+X(val=:)

X Dimension. X <: XDim <: IndependentDim

Examples

julia
xdim = X(2:2:10)
julia
val = A[X(1)]
julia
mean(A; dims=X)

source

`,7))]),i("details",D,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Y",href:"#DimensionalData.Dimensions.Y"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Y")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t(`
julia
Y <: YDim
 
-Y(val=:)

Y Dimension. Y <: YDim <: DependentDim

Examples

julia
ydim = Y(['a', 'b', 'c'])
julia
val = A[Y(1)]
julia
mean(A; dims=Y)

source

`,7))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Z",href:"#DimensionalData.Dimensions.Z"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Z")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Z <: ZDim
+Y(val=:)

Y Dimension. Y <: YDim <: DependentDim

Examples

julia
ydim = Y(['a', 'b', 'c'])
julia
val = A[Y(1)]
julia
mean(A; dims=Y)

source

`,7))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Z",href:"#DimensionalData.Dimensions.Z"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Z")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Z <: ZDim
 
-Z(val=:)

Z Dimension. Z <: ZDim <: Dimension

Example:

julia
zdim = Z(10:10:100)
julia
val = A[Z(1)]
julia
mean(A; dims=Z)

source

`,7))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.Ti",href:"#DimensionalData.Dimensions.Ti"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Ti")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t('

m Ti <: TimeDim

Ti(val=:)

Time Dimension. Ti <: TimeDim <: IndependentDim

Time is already used by Dates, and T is a common type parameter, We use Ti to avoid clashes.

Example:

julia
timedim = Ti(DateTime(2021, 1):Month(1):DateTime(2021, 12))
julia
val = A[Ti(1)]
julia
mean(A; dims=Ti)

source

',9))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Dim",href:"#DimensionalData.Dimensions.Dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dim")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
Dim{S}(val=:)

A generic dimension. For use when custom dims are required when loading data from a file. Can be used as keyword arguments for indexing.

Dimension types take precedence over same named Dim types when indexing with symbols, or e.g. creating Tables.jl keys.

julia
julia> dim = Dim{:custom}(['a', 'b', 'c'])
-custom ['a', 'b', 'c']

source

`,5))]),i("details",j,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.AnonDim",href:"#DimensionalData.Dimensions.AnonDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.AnonDim")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AnonDim <: Dimension
+Z(val=:)

Z Dimension. Z <: ZDim <: Dimension

Example:

julia
zdim = Z(10:10:100)
julia
val = A[Z(1)]
julia
mean(A; dims=Z)

source

`,7))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.Ti",href:"#DimensionalData.Dimensions.Ti"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Ti")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t('

m Ti <: TimeDim

Ti(val=:)

Time Dimension. Ti <: TimeDim <: IndependentDim

Time is already used by Dates, and T is a common type parameter, We use Ti to avoid clashes.

Example:

julia
timedim = Ti(DateTime(2021, 1):Month(1):DateTime(2021, 12))
julia
val = A[Ti(1)]
julia
mean(A; dims=Ti)

source

',9))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Dim",href:"#DimensionalData.Dimensions.Dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Dim")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
Dim{S}(val=:)

A generic dimension. For use when custom dims are required when loading data from a file. Can be used as keyword arguments for indexing.

Dimension types take precedence over same named Dim types when indexing with symbols, or e.g. creating Tables.jl keys.

julia
julia> dim = Dim{:custom}(['a', 'b', 'c'])
+custom ['a', 'b', 'c']

source

`,5))]),i("details",j,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.AnonDim",href:"#DimensionalData.Dimensions.AnonDim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.AnonDim")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AnonDim <: Dimension
 
-AnonDim()

Anonymous dimension. Used when extra dimensions are created, such as during transpose of a vector.

source

`,3))]),i("details",B,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.@dim",href:"#DimensionalData.Dimensions.@dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.@dim")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[44]||(s[44]=t(`
julia
@dim typ [supertype=Dimension] [label::String=string(typ)]

Macro to easily define new dimensions.

The supertype will be inserted into the type of the dim. The default is simply YourDim <: Dimension.

Making a Dimension inherit from XDim, YDim, ZDim or TimeDim will affect automatic plot layout and other methods that dispatch on these types. <: YDim are plotted on the Y axis, <: XDim on the X axis, etc.

label is used in plots and similar, if the dimension is short for a longer word.

Example:

julia
using DimensionalData
+AnonDim()

Anonymous dimension. Used when extra dimensions are created, such as during transpose of a vector.

source

`,3))]),i("details",B,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.@dim",href:"#DimensionalData.Dimensions.@dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.@dim")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[44]||(s[44]=t(`
julia
@dim typ [supertype=Dimension] [label::String=string(typ)]

Macro to easily define new dimensions.

The supertype will be inserted into the type of the dim. The default is simply YourDim <: Dimension.

Making a Dimension inherit from XDim, YDim, ZDim or TimeDim will affect automatic plot layout and other methods that dispatch on these types. <: YDim are plotted on the Y axis, <: XDim on the X axis, etc.

label is used in plots and similar, if the dimension is short for a longer word.

Example:

julia
using DimensionalData
 using DimensionalData: @dim, YDim, XDim
 @dim Lat YDim "Latitude"
 @dim Lon XDim "Longitude"
-# output

source

`,8))]),s[111]||(s[111]=i("h3",{id:"Exported-methods",tabindex:"-1"},[a("Exported methods "),i("a",{class:"header-anchor",href:"#Exported-methods","aria-label":'Permalink to "Exported methods {#Exported-methods}"'},"​")],-1)),s[112]||(s[112]=i("p",null,"These are widely useful methods for working with dimensions.",-1)),i("details",v,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.dims-api-dimensions",href:"#DimensionalData.Dimensions.dims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
+# output

source

`,8))]),s[111]||(s[111]=i("h3",{id:"Exported-methods",tabindex:"-1"},[a("Exported methods "),i("a",{class:"header-anchor",href:"#Exported-methods","aria-label":'Permalink to "Exported methods {#Exported-methods}"'},"​")],-1)),s[112]||(s[112]=i("p",null,"These are widely useful methods for working with dimensions.",-1)),i("details",v,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.dims-api-dimensions",href:"#DimensionalData.Dimensions.dims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
 dims(x, query...) => Tuple{Vararg{Dimension}}

Get the dimension(s) matching the type(s) of the query dimension.

Lookup can be an Int or an Dimension, or a tuple containing any combination of either.

Arguments

  • x: any object with a dims method, or a Tuple of Dimension.

  • query: Tuple or a single Dimension or Dimension Type.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(2, 3, 2), (X, Y, Z))
@@ -79,7 +79,7 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
  1.0  1.0  1.0
 
 julia> dims(A, (X, Y))
-( X,  Y)

source

`,13))]),i("details",A,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.otherdims-api-dimensions",href:"#DimensionalData.Dimensions.otherdims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
+( X,  Y)

source

`,13))]),i("details",A,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.otherdims-api-dimensions",href:"#DimensionalData.Dimensions.otherdims-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -87,7 +87,7 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 ( Y,  Z)
 
 julia> otherdims(A, (Y, Z))
-( X)

source

`,8))]),i("details",T,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.dimnum-api-dimensions",href:"#DimensionalData.Dimensions.dimnum-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
+( X)

source

`,8))]),i("details",T,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.dimnum-api-dimensions",href:"#DimensionalData.Dimensions.dimnum-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
 dimnum(x, query) => Int

Get the number(s) of Dimension(s) as ordered in the dimensions of an object.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple, Array or single Dimension or dimension Type.

The return type will be a Tuple of Int or a single Int, depending on whether query is a Tuple or single Dimension.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
@@ -96,7 +96,7 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 (3, 1, 2)
 
 julia> dimnum(A, Y)
-2

source

`,8))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.hasdim-api-dimensions",href:"#DimensionalData.Dimensions.hasdim-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
+2

source

`,8))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.hasdim-api-dimensions",href:"#DimensionalData.Dimensions.hasdim-api-dimensions"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
 hasdim([f], x, query...) => NTuple{Bool}
 hasdim([f], x, query) => Bool

Check if an object x has dimensions that match or inherit from the query dimensions.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

Check if an object or tuple contains an Dimension, or a tuple of dimensions.

Example

julia
julia> using DimensionalData
 
@@ -109,13 +109,13 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 (true, true, true)
 
 julia> hasdim(A, Ti)
-false

source

`,8))]),s[113]||(s[113]=i("h3",{id:"Non-exported-methods",tabindex:"-1"},[a("Non-exported methods "),i("a",{class:"header-anchor",href:"#Non-exported-methods","aria-label":'Permalink to "Non-exported methods {#Non-exported-methods}"'},"​")],-1)),i("details",w,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.lookup",href:"#DimensionalData.Dimensions.lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.lookup")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
lookup(x::Dimension) => Lookup
+false

source

`,8))]),s[113]||(s[113]=i("h3",{id:"Non-exported-methods",tabindex:"-1"},[a("Non-exported methods "),i("a",{class:"header-anchor",href:"#Non-exported-methods","aria-label":'Permalink to "Non-exported methods {#Non-exported-methods}"'},"​")],-1)),i("details",w,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.lookup",href:"#DimensionalData.Dimensions.lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.lookup")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
lookup(x::Dimension) => Lookup
 lookup(x, [dims::Tuple]) => Tuple{Vararg{Lookup}}
 lookup(x::Tuple) => Tuple{Vararg{Lookup}}
-lookup(x, dim) => Lookup

Returns the Lookup of a dimension. This dictates properties of the dimension such as array axis and lookup order, and sampling properties.

dims can be a Dimension, a dimension type, or a tuple of either.

This is separate from val in that it will only work when dimensions actually contain an AbstractArray lookup, and can be used on a DimArray or DimStack to retrieve all lookups, as there is no ambiguity of meaning as there is with val.

source

`,5))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.label",href:"#DimensionalData.Dimensions.label"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.label")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
label(x) => String
+lookup(x, dim) => Lookup

Returns the Lookup of a dimension. This dictates properties of the dimension such as array axis and lookup order, and sampling properties.

dims can be a Dimension, a dimension type, or a tuple of either.

This is separate from val in that it will only work when dimensions actually contain an AbstractArray lookup, and can be used on a DimArray or DimStack to retrieve all lookups, as there is no ambiguity of meaning as there is with val.

source

`,5))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.label",href:"#DimensionalData.Dimensions.label"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.label")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
label(x) => String
 label(x, dims::Tuple) => NTuple{N,String}
 label(x, dim) => String
-label(xs::Tuple) => NTuple{N,String}

Get a plot label for data or a dimension. This will include the name and units if they exist, and anything else that should be shown on a plot.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",q,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.format",href:"#DimensionalData.Dimensions.format"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.format")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t('
julia
format(dims, x) => Tuple{Vararg{Dimension,N}}

Format the passed-in dimension(s) dims to match the object x.

Errors are thrown if dims don't match the array dims or size, and any fields holding Auto- objects are filled with guessed objects.

If a Lookup hasn't been specified, a lookup is chosen based on the type and element type of the values.

source

',5))]),i("details",X,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.dims2indices",href:"#DimensionalData.Dimensions.dims2indices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims2indices")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
dims2indices(dim::Dimension, I) => NTuple{Union{Colon,AbstractArray,Int}}

Convert a Dimension or Selector I to indices of Int, AbstractArray or Colon.

source

',3))]),i("details",Y,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.selectindices",href:"#DimensionalData.Dimensions.Lookups.selectindices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.selectindices")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[71]||(s[71]=t('
julia
selectindices(lookups, selectors)

Converts Selector to regular indices.

source

',3))]),s[114]||(s[114]=i("h3",{id:"Primitive-methods",tabindex:"-1"},[a("Primitive methods "),i("a",{class:"header-anchor",href:"#Primitive-methods","aria-label":'Permalink to "Primitive methods {#Primitive-methods}"'},"​")],-1)),s[115]||(s[115]=i("p",null,"These low-level methods are really for internal use, but can be useful for writing dimensional algorithms.",-1)),s[116]||(s[116]=i("p",null,"They are not guaranteed to keep their interface, but usually will.",-1)),i("details",O,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.commondims",href:"#DimensionalData.Dimensions.commondims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.commondims")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=t(`
julia
commondims([f], x, query) => Tuple{Vararg{Dimension}}

This is basically dims(x, query) where the order of the original is kept, unlike dims where the query tuple determines the order

Also unlike dims,commondims always returns a Tuple, no matter the input. No errors are thrown if dims are absent from either x or query.

f is <: by default, but can be >: to sort abstract types by concrete types.

julia
julia> using DimensionalData, .Dimensions
+label(xs::Tuple) => NTuple{N,String}

Get a plot label for data or a dimension. This will include the name and units if they exist, and anything else that should be shown on a plot.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",q,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.format",href:"#DimensionalData.Dimensions.format"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.format")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t('
julia
format(dims, x) => Tuple{Vararg{Dimension,N}}

Format the passed-in dimension(s) dims to match the object x.

Errors are thrown if dims don't match the array dims or size, and any fields holding Auto- objects are filled with guessed objects.

If a Lookup hasn't been specified, a lookup is chosen based on the type and element type of the values.

source

',5))]),i("details",X,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.dims2indices",href:"#DimensionalData.Dimensions.dims2indices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims2indices")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
dims2indices(dim::Dimension, I) => NTuple{Union{Colon,AbstractArray,Int}}

Convert a Dimension or Selector I to indices of Int, AbstractArray or Colon.

source

',3))]),i("details",Y,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.selectindices",href:"#DimensionalData.Dimensions.Lookups.selectindices"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.selectindices")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[71]||(s[71]=t('
julia
selectindices(lookups, selectors)

Converts Selector to regular indices.

source

',3))]),s[114]||(s[114]=i("h3",{id:"Primitive-methods",tabindex:"-1"},[a("Primitive methods "),i("a",{class:"header-anchor",href:"#Primitive-methods","aria-label":'Permalink to "Primitive methods {#Primitive-methods}"'},"​")],-1)),s[115]||(s[115]=i("p",null,"These low-level methods are really for internal use, but can be useful for writing dimensional algorithms.",-1)),s[116]||(s[116]=i("p",null,"They are not guaranteed to keep their interface, but usually will.",-1)),i("details",O,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.commondims",href:"#DimensionalData.Dimensions.commondims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.commondims")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=t(`
julia
commondims([f], x, query) => Tuple{Vararg{Dimension}}

This is basically dims(x, query) where the order of the original is kept, unlike dims where the query tuple determines the order

Also unlike dims,commondims always returns a Tuple, no matter the input. No errors are thrown if dims are absent from either x or query.

f is <: by default, but can be >: to sort abstract types by concrete types.

julia
julia> using DimensionalData, .Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -126,9 +126,9 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 ( X,  Z)
 
 julia> commondims(A, Ti)
-()

source

`,6))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.name2dim",href:"#DimensionalData.Dimensions.name2dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name2dim")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=t(`
julia
name2dim(s::Symbol) => Dimension
+()

source

`,6))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.name2dim",href:"#DimensionalData.Dimensions.name2dim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name2dim")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=t(`
julia
name2dim(s::Symbol) => Dimension
 name2dim(dims...) => Tuple{Dimension,Vararg}
-name2dim(dims::Tuple) => Tuple{Dimension,Vararg}

Convert a symbol to a dimension object. :X, :Y, :Ti etc will be converted to X(), Y(), Ti(), as with any other dims generated with the @dim macro.

All other Symbols S will generate Dim{S}() dimensions.

source

`,4))]),i("details",S,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.reducedims",href:"#DimensionalData.Dimensions.reducedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.reducedims")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[80]||(s[80]=t('
julia
reducedims(x, dimstoreduce) => Tuple{Vararg{Dimension}}

Replace the specified dimensions with an index of length 1. This is usually to match a new array size where an axis has been reduced with a method like mean or reduce to a length of 1, but the number of dimensions has not changed.

Lookup traits are also updated to correspond to the change in cell step, sampling type and order.

source

',4))]),i("details",Z,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.swapdims",href:"#DimensionalData.Dimensions.swapdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.swapdims")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=t(`
julia
swapdims(x::T, newdims) => T
+name2dim(dims::Tuple) => Tuple{Dimension,Vararg}

Convert a symbol to a dimension object. :X, :Y, :Ti etc will be converted to X(), Y(), Ti(), as with any other dims generated with the @dim macro.

All other Symbols S will generate Dim{S}() dimensions.

source

`,4))]),i("details",S,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.reducedims",href:"#DimensionalData.Dimensions.reducedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.reducedims")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[80]||(s[80]=t('
julia
reducedims(x, dimstoreduce) => Tuple{Vararg{Dimension}}

Replace the specified dimensions with an index of length 1. This is usually to match a new array size where an axis has been reduced with a method like mean or reduce to a length of 1, but the number of dimensions has not changed.

Lookup traits are also updated to correspond to the change in cell step, sampling type and order.

source

',4))]),i("details",Z,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.swapdims",href:"#DimensionalData.Dimensions.swapdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.swapdims")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=t(`
julia
swapdims(x::T, newdims) => T
 swapdims(dims::Tuple, newdims) => Tuple{Vararg{Dimension}}

Swap dimensions for the passed in dimensions, in the order passed.

Passing in the Dimension types rewraps the dimension index, keeping the index values and metadata, while constructed Dimension objects replace the original dimension. nothing leaves the original dimension as-is.

Arguments

  • x: any object with a dims method or a Tuple of Dimension.

  • newdim: Tuple of Dimension or dimension Type.

Example

julia
using DimensionalData
 A = ones(X(2), Y(4), Z(2))
 Dimensions.swapdims(A, (Dim{:a}, Dim{:b}, Dim{:c}))
@@ -141,17 +141,17 @@ import{_ as l,B as p,o as h,c as k,j as i,a,G as e,a4 as t}from"./chunks/framewo
 └────────────────────────────┘
 [:, :, 1]
  1.0  1.0  1.0  1.0
- 1.0  1.0  1.0  1.0

source

`,8))]),i("details",I,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.slicedims",href:"#DimensionalData.Dimensions.slicedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.slicedims")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=t(`
julia
slicedims(x, I) => Tuple{Tuple,Tuple}
-slicedims(f, x, I) => Tuple{Tuple,Tuple}

Slice the dimensions to match the axis values of the new array.

All methods return a tuple containing two tuples: the new dimensions, and the reference dimensions. The ref dimensions are no longer used in the new struct but are useful to give context to plots.

Called at the array level the returned tuple will also include the previous reference dims attached to the array.

Arguments

  • f: a function getindex, view or dotview. This will be used for slicing getindex is the default if f is not included.

  • x: An AbstractDimArray, Tuple of Dimension, or Dimension

  • I: A tuple of Integer, Colon or AbstractArray

source

`,7))]),i("details",N,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.comparedims",href:"#DimensionalData.Dimensions.comparedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.comparedims")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=t(`
julia
comparedims(A::AbstractDimArray...; kw...)
+ 1.0  1.0  1.0  1.0

source

`,8))]),i("details",I,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.slicedims",href:"#DimensionalData.Dimensions.slicedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.slicedims")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=t(`
julia
slicedims(x, I) => Tuple{Tuple,Tuple}
+slicedims(f, x, I) => Tuple{Tuple,Tuple}

Slice the dimensions to match the axis values of the new array.

All methods return a tuple containing two tuples: the new dimensions, and the reference dimensions. The ref dimensions are no longer used in the new struct but are useful to give context to plots.

Called at the array level the returned tuple will also include the previous reference dims attached to the array.

Arguments

  • f: a function getindex, view or dotview. This will be used for slicing getindex is the default if f is not included.

  • x: An AbstractDimArray, Tuple of Dimension, or Dimension

  • I: A tuple of Integer, Colon or AbstractArray

source

`,7))]),i("details",N,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.comparedims",href:"#DimensionalData.Dimensions.comparedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.comparedims")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=t(`
julia
comparedims(A::AbstractDimArray...; kw...)
 comparedims(A::Tuple...; kw...)
 comparedims(A::Dimension...; kw...)
-comparedims(::Type{Bool}, args...; kw...)

Check that dimensions or tuples of dimensions passed as each argument are the same, and return the first valid dimension. If AbstractDimArrays are passed as arguments their dimensions are compared.

Empty tuples and nothing dimension values are ignored, returning the Dimension value if it exists.

Passing Bool as the first argument means true/false will be returned, rather than throwing an error.

Keywords

These are all Bool flags:

  • type: compare dimension type, true by default.

  • valtype: compare wrapped value type, false by default.

  • val: compare wrapped values, false by default.

  • order: compare order, false by default.

  • length: compare lengths, true by default.

  • ignore_length_one: ignore length 1 in comparisons, and return whichever dimension is not length 1, if any. This is useful in e.g. broadcasting comparisons. false by default.

  • msg: DimensionalData.Warn or DimensionalData.Throw. Both may contain string, which will be added to error or warning mesages.

source

`,8))]),i("details",P,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.combinedims",href:"#DimensionalData.Dimensions.combinedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.combinedims")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=t('
julia
combinedims(xs; check=true, kw...)

Combine the dimensions of each object in xs, in the order they are found.

Keywords are passed to comparedims.

source

',4))]),i("details",V,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.sortdims",href:"#DimensionalData.Dimensions.sortdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.sortdims")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=t('
julia
sortdims([f], tosort, order) => Tuple

Sort dimensions tosort by order. Dimensions in order but missing from tosort are replaced with nothing.

tosort and order can be Tuples or Vectors or Dimension or dimension type. Abstract supertypes like TimeDim can be used in order.

f is <: by default, but can be >: to sort abstract types by concrete types.

source

',5))]),i("details",M,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.basetypeof",href:"#DimensionalData.Dimensions.Lookups.basetypeof"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.basetypeof")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=t('
julia
basetypeof(x) => Type

Get the "base" type of an object - the minimum required to define the object without it's fields. By default this is the full UnionAll for the type. But custom basetypeof methods can be defined for types with free type parameters.

In DimensionalData this is primarily used for comparing Dimensions, where Dim{:x} is different from Dim{:y}.

source

',4))]),i("details",R,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.basedims",href:"#DimensionalData.Dimensions.basedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.basedims")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[101]||(s[101]=t(`
julia
basedims(ds::Tuple)
-basedims(d::Union{Dimension,Symbol,Type})

Returns basetypeof(d)() or a Tuple of called on a Tuple.

See basetypeof

source

`,4))]),i("details",G,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.setdims",href:"#DimensionalData.Dimensions.setdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.setdims")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=t(`
julia
setdims(X, newdims) => AbstractArray
+comparedims(::Type{Bool}, args...; kw...)

Check that dimensions or tuples of dimensions passed as each argument are the same, and return the first valid dimension. If AbstractDimArrays are passed as arguments their dimensions are compared.

Empty tuples and nothing dimension values are ignored, returning the Dimension value if it exists.

Passing Bool as the first argument means true/false will be returned, rather than throwing an error.

Keywords

These are all Bool flags:

  • type: compare dimension type, true by default.

  • valtype: compare wrapped value type, false by default.

  • val: compare wrapped values, false by default.

  • order: compare order, false by default.

  • length: compare lengths, true by default.

  • ignore_length_one: ignore length 1 in comparisons, and return whichever dimension is not length 1, if any. This is useful in e.g. broadcasting comparisons. false by default.

  • msg: DimensionalData.Warn or DimensionalData.Throw. Both may contain string, which will be added to error or warning mesages.

source

`,8))]),i("details",P,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.combinedims",href:"#DimensionalData.Dimensions.combinedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.combinedims")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=t('
julia
combinedims(xs; check=true, kw...)

Combine the dimensions of each object in xs, in the order they are found.

Keywords are passed to comparedims.

source

',4))]),i("details",V,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.sortdims",href:"#DimensionalData.Dimensions.sortdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.sortdims")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=t('
julia
sortdims([f], tosort, order) => Tuple

Sort dimensions tosort by order. Dimensions in order but missing from tosort are replaced with nothing.

tosort and order can be Tuples or Vectors or Dimension or dimension type. Abstract supertypes like TimeDim can be used in order.

f is <: by default, but can be >: to sort abstract types by concrete types.

source

',5))]),i("details",M,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.basetypeof",href:"#DimensionalData.Dimensions.Lookups.basetypeof"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.basetypeof")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=t('
julia
basetypeof(x) => Type

Get the "base" type of an object - the minimum required to define the object without it's fields. By default this is the full UnionAll for the type. But custom basetypeof methods can be defined for types with free type parameters.

In DimensionalData this is primarily used for comparing Dimensions, where Dim{:x} is different from Dim{:y}.

source

',4))]),i("details",R,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.basedims",href:"#DimensionalData.Dimensions.basedims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.basedims")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[101]||(s[101]=t(`
julia
basedims(ds::Tuple)
+basedims(d::Union{Dimension,Symbol,Type})

Returns basetypeof(d)() or a Tuple of called on a Tuple.

See basetypeof

source

`,4))]),i("details",G,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.setdims",href:"#DimensionalData.Dimensions.setdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.setdims")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=t(`
julia
setdims(X, newdims) => AbstractArray
 setdims(::Tuple, newdims) => Tuple{Vararg{Dimension,N}}

Replaces the first dim matching <: basetypeof(newdim) with newdim, and returns a new object or tuple with the dimension updated.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • newdim: Tuple or single Dimension, Type or Symbol.

Example

julia
using DimensionalData, DimensionalData.Dimensions, DimensionalData.Lookups
 A = ones(X(10), Y(10:10:100))
 B = setdims(A, Y(Categorical('a':'j'; order=ForwardOrdered())))
 lookup(B, Y)
 # output
 Categorical{Char} ForwardOrdered
-wrapping: 'a':1:'j'

source

`,7))]),i("details",U,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.dimsmatch",href:"#DimensionalData.Dimensions.dimsmatch"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimsmatch")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=t(`
julia
dimsmatch([f], dim, query) => Bool
-dimsmatch([f], dims::Tuple, query::Tuple) => Bool

Compare 2 dimensions or Tuple of Dimension are of the same base type, or are at least rotations/transformations of the same type.

f is <: by default, but can be >: to match abstract types to concrete types.

source

`,4))])])}const is=l(d,[["render",$]]);export{ss as __pageData,is as default}; +wrapping: 'a':1:'j'

source

`,7))]),i("details",U,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.dimsmatch",href:"#DimensionalData.Dimensions.dimsmatch"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimsmatch")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=t(`
julia
dimsmatch([f], dim, query) => Bool
+dimsmatch([f], dims::Tuple, query::Tuple) => Bool

Compare 2 dimensions or Tuple of Dimension are of the same base type, or are at least rotations/transformations of the same type.

f is <: by default, but can be >: to match abstract types to concrete types.

source

`,4))])])}const is=l(d,[["render",$]]);export{ss as __pageData,is as default}; diff --git a/dev/assets/api_lookuparrays.md.CXdh9f-q.js b/dev/assets/api_lookuparrays.md.C48veaQd.js similarity index 94% rename from dev/assets/api_lookuparrays.md.CXdh9f-q.js rename to dev/assets/api_lookuparrays.md.C48veaQd.js index febcc14c3..9973a7885 100644 --- a/dev/assets/api_lookuparrays.md.CXdh9f-q.js +++ b/dev/assets/api_lookuparrays.md.C48veaQd.js @@ -1,5 +1,5 @@ -import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Brp_kw4H.js";const bs=JSON.parse('{"title":"Lookups","description":"","frontmatter":{},"headers":[],"relativePath":"api/lookuparrays.md","filePath":"api/lookuparrays.md","lastUpdated":null}'),k={name:"api/lookuparrays.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},os={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},cs={class:"jldocstring custom-block",open:""},gs={class:"jldocstring custom-block",open:""};function us(ys,s,Es,ms,Ds,Fs){const n=p("Badge");return o(),h("div",null,[s[174]||(s[174]=i("h1",{id:"lookups",tabindex:"-1"},[a("Lookups "),i("a",{class:"header-anchor",href:"#lookups","aria-label":'Permalink to "Lookups"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions.Lookups",href:"#DimensionalData.Dimensions.Lookups"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Lookups

Module for Lookups and Selectors used in DimensionalData.jl

Lookup defines traits and AbstractArray wrappers that give specific behaviours for a lookup index when indexed with Selector.

For example, these allow tracking over array order so fast indexing works even when the array is reversed.

To load Lookup types and methods into scope:

julia
using DimensionalData
-using DimensionalData.Lookups

source

`,7))]),i("details",d,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Lookups.Lookup",href:"#DimensionalData.Dimensions.Lookups.Lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Lookup")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t('
julia
Lookup

Types defining the behaviour of a lookup index, how it is plotted and how Selectors like Between work.

A Lookup may be NoLookup indicating that there are no lookup values, Categorical for ordered or unordered categories, or a Sampled index for Points or Intervals.

source

',4))]),i("details",c,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.Lookups.Aligned",href:"#DimensionalData.Dimensions.Lookups.Aligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Aligned")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
Aligned <: Lookup

Abstract supertype for Lookups where the lookup is aligned with the array axes.

This is by far the most common supertype for Lookup.

source

',4))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractSampled",href:"#DimensionalData.Dimensions.Lookups.AbstractSampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractSampled")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
AbstractSampled <: Aligned

Abstract supertype for Lookups where the lookup is aligned with the array, and is independent of other dimensions. Sampled is provided by this package.

AbstractSampled must have order, span and sampling fields, or a rebuild method that accepts them as keyword arguments.

source

',4))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampled",href:"#DimensionalData.Dimensions.Lookups.Sampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampled")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t(`
julia
Sampled <: AbstractSampled
+import{_ as l,c as p,j as i,a,G as e,a4 as t,B as o,o as h}from"./chunks/framework.60YQGL-0.js";const bs=JSON.parse('{"title":"Lookups","description":"","frontmatter":{},"headers":[],"relativePath":"api/lookuparrays.md","filePath":"api/lookuparrays.md","lastUpdated":null}'),k={name:"api/lookuparrays.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},os={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},cs={class:"jldocstring custom-block",open:""},gs={class:"jldocstring custom-block",open:""};function us(ys,s,Es,ms,Ds,Fs){const n=o("Badge");return h(),p("div",null,[s[174]||(s[174]=i("h1",{id:"lookups",tabindex:"-1"},[a("Lookups "),i("a",{class:"header-anchor",href:"#lookups","aria-label":'Permalink to "Lookups"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions.Lookups",href:"#DimensionalData.Dimensions.Lookups"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Lookups

Module for Lookups and Selectors used in DimensionalData.jl

Lookup defines traits and AbstractArray wrappers that give specific behaviours for a lookup index when indexed with Selector.

For example, these allow tracking over array order so fast indexing works even when the array is reversed.

To load Lookup types and methods into scope:

julia
using DimensionalData
+using DimensionalData.Lookups

source

`,7))]),i("details",d,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Lookups.Lookup",href:"#DimensionalData.Dimensions.Lookups.Lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Lookup")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t('
julia
Lookup

Types defining the behaviour of a lookup index, how it is plotted and how Selectors like Between work.

A Lookup may be NoLookup indicating that there are no lookup values, Categorical for ordered or unordered categories, or a Sampled index for Points or Intervals.

source

',4))]),i("details",c,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.Lookups.Aligned",href:"#DimensionalData.Dimensions.Lookups.Aligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Aligned")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
Aligned <: Lookup

Abstract supertype for Lookups where the lookup is aligned with the array axes.

This is by far the most common supertype for Lookup.

source

',4))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractSampled",href:"#DimensionalData.Dimensions.Lookups.AbstractSampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractSampled")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
AbstractSampled <: Aligned

Abstract supertype for Lookups where the lookup is aligned with the array, and is independent of other dimensions. Sampled is provided by this package.

AbstractSampled must have order, span and sampling fields, or a rebuild method that accepts them as keyword arguments.

source

',4))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampled",href:"#DimensionalData.Dimensions.Lookups.Sampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampled")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t(`
julia
Sampled <: AbstractSampled
 
 Sampled(data::AbstractVector, order::Order, span::Span, sampling::Sampling, metadata)
 Sampled(data=AutoValues(); order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata())

A concrete implementation of the Lookup AbstractSampled. It can be used to represent Points or Intervals.

Sampled is capable of representing gridded data from a wide range of sources, allowing correct bounds and Selectors for points or intervals of regular, irregular, forward and reverse lookups.

On AbstractDimArray construction, Sampled lookup is assigned for all lookups of AbstractRange not assigned to Categorical.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

Example

Create an array with Interval sampling, and Regular span for a vector with known spacing.

We set the locus of the Intervals to Start specifying that the lookup values are for the locus at the start of each interval.

julia
using DimensionalData, DimensionalData.Lookups
@@ -20,9 +20,9 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
   80    1.0  1.0  1.0   1.0
   60    1.0  1.0  1.0   1.0
   40    1.0  1.0  1.0   1.0
-  20    1.0  1.0  1.0   1.0

source

`,11))]),i("details",y,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCyclic",href:"#DimensionalData.Dimensions.Lookups.AbstractCyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCyclic")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
AbstractCyclic <: AbstractSampled

An abstract supertype for cyclic lookups.

These are AbstractSampled lookups that are cyclic for Selectors.

source

',4))]),i("details",E,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.Lookups.Cyclic",href:"#DimensionalData.Dimensions.Lookups.Cyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Cyclic")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t(`
julia
Cyclic <: AbstractCyclic
+  20    1.0  1.0  1.0   1.0

source

`,11))]),i("details",y,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCyclic",href:"#DimensionalData.Dimensions.Lookups.AbstractCyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCyclic")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
AbstractCyclic <: AbstractSampled

An abstract supertype for cyclic lookups.

These are AbstractSampled lookups that are cyclic for Selectors.

source

',4))]),i("details",E,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.Lookups.Cyclic",href:"#DimensionalData.Dimensions.Lookups.Cyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Cyclic")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t(`
julia
Cyclic <: AbstractCyclic
 
-Cyclic(data; order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata(), cycle)

A Cyclic lookup is similar to Sampled but out of range Selectors At, Near, Contains will cycle the values to typemin or typemax over the length of cycle. Where and .. work as for Sampled.

This is useful when we are using mean annual datasets over a real time-span, or for wrapping longitudes so that -360 and 360 are the same.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

  • cycle: the length of the cycle. This does not have to exactly match the data, the step size is Week(1) the cycle can be Years(1).

Notes

  1. If you use dates and e.g. cycle over a Year, every year will have the number and spacing of Weeks and Days as the cycle year. Using At may not be reliable in terms of exact dates, as it will be applied to the specified date plus or minus n years.

  2. Indexing into a Cycled with any AbstractArray or AbstractRange will return a Sampled as the full cycle is likely no longer available.

  3. .. or Between selectors do not work in a cycled way: they work as for Sampled. This may change in future to return cycled values, but there are problems with this, such as leap years breaking correct date cycling of a single year. If you actually need this behaviour, please make a GitHub issue.

source

`,8))]),i("details",m,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCategorical",href:"#DimensionalData.Dimensions.Lookups.AbstractCategorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCategorical")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
AbstractCategorical <: Aligned

Lookups where the values are categories.

Categorical is the provided concrete implementation. But this can easily be extended, all methods are defined for AbstractCategorical.

All AbstractCategorical must provide a rebuild method with data, order and metadata keyword arguments.

source

',5))]),i("details",D,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.Lookups.Categorical",href:"#DimensionalData.Dimensions.Lookups.Categorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Categorical")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
Categorical <: AbstractCategorical
+Cyclic(data; order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata(), cycle)

A Cyclic lookup is similar to Sampled but out of range Selectors At, Near, Contains will cycle the values to typemin or typemax over the length of cycle. Where and .. work as for Sampled.

This is useful when we are using mean annual datasets over a real time-span, or for wrapping longitudes so that -360 and 360 are the same.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

  • cycle: the length of the cycle. This does not have to exactly match the data, the step size is Week(1) the cycle can be Years(1).

Notes

  1. If you use dates and e.g. cycle over a Year, every year will have the number and spacing of Weeks and Days as the cycle year. Using At may not be reliable in terms of exact dates, as it will be applied to the specified date plus or minus n years.

  2. Indexing into a Cycled with any AbstractArray or AbstractRange will return a Sampled as the full cycle is likely no longer available.

  3. .. or Between selectors do not work in a cycled way: they work as for Sampled. This may change in future to return cycled values, but there are problems with this, such as leap years breaking correct date cycling of a single year. If you actually need this behaviour, please make a GitHub issue.

source

`,8))]),i("details",m,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCategorical",href:"#DimensionalData.Dimensions.Lookups.AbstractCategorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCategorical")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
AbstractCategorical <: Aligned

Lookups where the values are categories.

Categorical is the provided concrete implementation. But this can easily be extended, all methods are defined for AbstractCategorical.

All AbstractCategorical must provide a rebuild method with data, order and metadata keyword arguments.

source

',5))]),i("details",D,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.Lookups.Categorical",href:"#DimensionalData.Dimensions.Lookups.Categorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Categorical")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
Categorical <: AbstractCategorical
 
 Categorical(o::Order)
 Categorical(; order=Unordered())

A Lookup where the values are categories.

This will be automatically assigned if the lookup contains AbstractString, Symbol or Char. Otherwise it can be assigned manually.

Order will be determined automatically where possible.

Arguments

  • data: An AbstractVector matching the length of the corresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. Can be provided if this is known and performance is important.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

Example

Create an array with [Interval] sampling.

julia
using DimensionalData
@@ -34,7 +34,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 # output
 
 Categorical{String} ["one", "two", "three"] Unordered,
-Categorical{Symbol} [:a, :b, :c, :d] ForwardOrdered

source

`,10))]),i("details",F,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unaligned",href:"#DimensionalData.Dimensions.Lookups.Unaligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unaligned")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t('
julia
Unaligned <: Lookup

Abstract supertype for Lookup where the lookup is not aligned to the grid.

Indexing an Unaligned with Selectors must provide all other Unaligned dimensions.

source

',4))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Lookups.Transformed",href:"#DimensionalData.Dimensions.Lookups.Transformed"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Transformed")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Transformed <: Unaligned
+Categorical{Symbol} [:a, :b, :c, :d] ForwardOrdered

source

`,10))]),i("details",F,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unaligned",href:"#DimensionalData.Dimensions.Lookups.Unaligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unaligned")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t('
julia
Unaligned <: Lookup

Abstract supertype for Lookup where the lookup is not aligned to the grid.

Indexing an Unaligned with Selectors must provide all other Unaligned dimensions.

source

',4))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Lookups.Transformed",href:"#DimensionalData.Dimensions.Lookups.Transformed"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Transformed")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Transformed <: Unaligned
 
 Transformed(f, dim::Dimension; metadata=NoMetadata())

Lookup that uses an affine transformation to convert dimensions from dims(lookup) to dims(array). This can be useful when the dimensions are e.g. rotated from a more commonly used axis.

Any function can be used to do the transformation, but transformations from CoordinateTransformations.jl may be useful.

Arguments

  • f: transformation function

  • dim: a dimension to transform to.

Keyword Arguments

  • metadata:

Example

julia
using DimensionalData, DimensionalData.Lookups, CoordinateTransformations
 
@@ -47,9 +47,9 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 da[X(At(6.0)), Y(At(2.0))]
 
 # output
-9

source

`,10))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.MergedLookup",href:"#DimensionalData.Dimensions.MergedLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.MergedLookup")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t(`
julia
MergedLookup <: Lookup
+9

source

`,10))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.MergedLookup",href:"#DimensionalData.Dimensions.MergedLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.MergedLookup")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t(`
julia
MergedLookup <: Lookup
 
-MergedLookup(data, dims; [metadata])

A Lookup that holds multiple combined dimensions.

MergedLookup can be indexed with Selectors like At, Between, and Where although Near has undefined meaning.

Arguments

  • data: A Vector of Tuple.

  • dims: A Tuple of Dimension indicating the dimensions in the tuples in data.

Keywords

  • metadata: a Dict or Metadata object to attach dimension metadata.

source

`,8))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoLookup",href:"#DimensionalData.Dimensions.Lookups.NoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoLookup")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
NoLookup <: Lookup
+MergedLookup(data, dims; [metadata])

A Lookup that holds multiple combined dimensions.

MergedLookup can be indexed with Selectors like At, Between, and Where although Near has undefined meaning.

Arguments

  • data: A Vector of Tuple.

  • dims: A Tuple of Dimension indicating the dimensions in the tuples in data.

Keywords

  • metadata: a Dict or Metadata object to attach dimension metadata.

source

`,8))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoLookup",href:"#DimensionalData.Dimensions.Lookups.NoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoLookup")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
NoLookup <: Lookup
 
 NoLookup()

A Lookup that is identical to the array axis. Selectors can't be used on this lookup.

Example

Defining a DimArray without passing lookup values to the dimensions, it will be assigned NoLookup:

julia
using DimensionalData
 
@@ -64,26 +64,26 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 
 # output
 
-NoLookup, NoLookup

source

`,8))]),i("details",v,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoLookup",href:"#DimensionalData.Dimensions.Lookups.AutoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoLookup")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AutoLookup <: Lookup
+NoLookup, NoLookup

source

`,8))]),i("details",v,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoLookup",href:"#DimensionalData.Dimensions.Lookups.AutoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoLookup")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AutoLookup <: Lookup
 
 AutoLookup()
-AutoLookup(values=AutoValues(); kw...)

Automatic Lookup, the default lookup. It will be converted automatically to another Lookup when it is possible to detect it from the lookup values.

Keywords will be used in the detected Lookup constructor.

source

`,4))]),i("details",j,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoValues",href:"#DimensionalData.Dimensions.Lookups.AutoValues"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoValues")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=t('
julia
AutoValues

Detect Lookup values from the context. This is used in NoLookup to simply use the array axis as the index when the array is constructed, and in set to change the Lookup type without changing the index values.

source

',3))]),s[175]||(s[175]=i("p",null,[a("The generic value getter "),i("code",null,"val")],-1)),i("details",B,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.Lookups.val",href:"#DimensionalData.Dimensions.Lookups.val"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.val")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
val(x)
-val(dims::Tuple) => Tuple

Return the contained value of a wrapper object.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

Objects that don't define a val method are returned unaltered.

source

`,5))]),s[176]||(s[176]=i("p",null,"Lookup methods:",-1)),i("details",L,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.Lookups.bounds",href:"#DimensionalData.Dimensions.Lookups.bounds"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.bounds")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
bounds(xs, [dims::Tuple]) => Tuple{Vararg{Tuple{T,T}}}
+AutoLookup(values=AutoValues(); kw...)

Automatic Lookup, the default lookup. It will be converted automatically to another Lookup when it is possible to detect it from the lookup values.

Keywords will be used in the detected Lookup constructor.

source

`,4))]),i("details",j,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoValues",href:"#DimensionalData.Dimensions.Lookups.AutoValues"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoValues")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=t('
julia
AutoValues

Detect Lookup values from the context. This is used in NoLookup to simply use the array axis as the index when the array is constructed, and in set to change the Lookup type without changing the index values.

source

',3))]),s[175]||(s[175]=i("p",null,[a("The generic value getter "),i("code",null,"val")],-1)),i("details",B,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.Lookups.val",href:"#DimensionalData.Dimensions.Lookups.val"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.val")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
val(x)
+val(dims::Tuple) => Tuple

Return the contained value of a wrapper object.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

Objects that don't define a val method are returned unaltered.

source

`,5))]),s[176]||(s[176]=i("p",null,"Lookup methods:",-1)),i("details",L,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.Lookups.bounds",href:"#DimensionalData.Dimensions.Lookups.bounds"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.bounds")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
bounds(xs, [dims::Tuple]) => Tuple{Vararg{Tuple{T,T}}}
 bounds(xs::Tuple) => Tuple{Vararg{Tuple{T,T}}}
 bounds(x, dim) => Tuple{T,T}
-bounds(dim::Union{Dimension,Lookup}) => Tuple{T,T}

Return the bounds of all dimensions of an object, of a specific dimension, or of a tuple of dimensions.

If bounds are not known, one or both values may be nothing.

dims can be a Dimension, a dimension type, or a tuple of either.

source

`,5))]),i("details",A,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.Lookups.hasselection",href:"#DimensionalData.Dimensions.Lookups.hasselection"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.hasselection")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
hasselection(x, selector) => Bool
-hasselection(x, selectors::Tuple) => Bool

Check if indexing into x with selectors can be performed, where x is some object with a dims method, and selectors is a Selector or Dimension or a tuple of either.

source

`,3))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.Lookups.sampling",href:"#DimensionalData.Dimensions.Lookups.sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.sampling")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
sampling(x, [dims::Tuple]) => Tuple
+bounds(dim::Union{Dimension,Lookup}) => Tuple{T,T}

Return the bounds of all dimensions of an object, of a specific dimension, or of a tuple of dimensions.

If bounds are not known, one or both values may be nothing.

dims can be a Dimension, a dimension type, or a tuple of either.

source

`,5))]),i("details",A,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.Lookups.hasselection",href:"#DimensionalData.Dimensions.Lookups.hasselection"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.hasselection")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
hasselection(x, selector) => Bool
+hasselection(x, selectors::Tuple) => Bool

Check if indexing into x with selectors can be performed, where x is some object with a dims method, and selectors is a Selector or Dimension or a tuple of either.

source

`,3))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.Lookups.sampling",href:"#DimensionalData.Dimensions.Lookups.sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.sampling")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
sampling(x, [dims::Tuple]) => Tuple
 sampling(x, dim) => Sampling
 sampling(xs::Tuple) => Tuple{Vararg{Sampling}}
-sampling(x:Union{Dimension,Lookup}) => Sampling

Return the Sampling for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.Lookups.span",href:"#DimensionalData.Dimensions.Lookups.span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.span")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
span(x, [dims::Tuple]) => Tuple
+sampling(x:Union{Dimension,Lookup}) => Sampling

Return the Sampling for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.Lookups.span",href:"#DimensionalData.Dimensions.Lookups.span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.span")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
span(x, [dims::Tuple]) => Tuple
 span(x, dim) => Span
 span(xs::Tuple) => Tuple{Vararg{Span,N}}
-span(x::Union{Dimension,Lookup}) => Span

Return the Span for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",w,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.Lookups.order",href:"#DimensionalData.Dimensions.Lookups.order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.order")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
order(x, [dims::Tuple]) => Tuple
+span(x::Union{Dimension,Lookup}) => Span

Return the Span for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",w,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.Lookups.order",href:"#DimensionalData.Dimensions.Lookups.order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.order")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
order(x, [dims::Tuple]) => Tuple
 order(xs::Tuple) => Tuple
-order(x::Union{Dimension,Lookup}) => Order

Return the Ordering of the dimension lookup for each dimension: ForwardOrdered, ReverseOrdered, or Unordered

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.Lookups.locus",href:"#DimensionalData.Dimensions.Lookups.locus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.locus")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t(`
julia
locus(x, [dims::Tuple]) => Tuple
+order(x::Union{Dimension,Lookup}) => Order

Return the Ordering of the dimension lookup for each dimension: ForwardOrdered, ReverseOrdered, or Unordered

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.Lookups.locus",href:"#DimensionalData.Dimensions.Lookups.locus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.locus")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t(`
julia
locus(x, [dims::Tuple]) => Tuple
 locus(x, dim) => Locus
 locus(xs::Tuple) => Tuple{Vararg{Locus,N}}
-locus(x::Union{Dimension,Lookup}) => Locus

Return the Position of lookup values for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",O,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.Lookups.shiftlocus",href:"#DimensionalData.Dimensions.Lookups.shiftlocus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.shiftlocus")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
shiftlocus(locus::Locus, x)

Shift the values of x from the current locus to the new locus.

We only shift Sampled, Regular or Explicit, Intervals.

source

',4))]),s[177]||(s[177]=i("h2",{id:"selectors",tabindex:"-1"},[a("Selectors "),i("a",{class:"header-anchor",href:"#selectors","aria-label":'Permalink to "Selectors"'},"​")],-1)),i("details",I,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.Selector",href:"#DimensionalData.Dimensions.Lookups.Selector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Selector")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=t('
julia
Selector

Abstract supertype for all selectors.

Selectors are wrappers that indicate that passed values are not the array indices, but values to be selected from the dimension lookup, such as DateTime objects for a Ti dimension.

Selectors provided in DimensionalData are:

Note: Selectors can be modified using:

  • Not: as in Not(At(x))

And IntervalSets.jl Interval can be used instead of Between

  • ..

  • Interval

  • OpenInterval

  • ClosedInterval

source

',10))]),i("details",q,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.Lookups.IntSelector",href:"#DimensionalData.Dimensions.Lookups.IntSelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.IntSelector")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[74]||(s[74]=t('
julia
IntSelector <: Selector

Abstract supertype for Selectors that return a single Int index.

IntSelectors provided by DimensionalData are:

source

',5))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.Lookups.ArraySelector",href:"#DimensionalData.Dimensions.Lookups.ArraySelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ArraySelector")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[77]||(s[77]=t('
julia
ArraySelector <: Selector

Abstract supertype for Selectors that return an AbstractArray.

ArraySelectors provided by DimensionalData are:

source

',5))]),i("details",P,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.Lookups.At",href:"#DimensionalData.Dimensions.Lookups.At"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.At")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=t(`
julia
At <: IntSelector
+locus(x::Union{Dimension,Lookup}) => Locus

Return the Position of lookup values for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",O,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.Lookups.shiftlocus",href:"#DimensionalData.Dimensions.Lookups.shiftlocus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.shiftlocus")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
shiftlocus(locus::Locus, x)

Shift the values of x from the current locus to the new locus.

We only shift Sampled, Regular or Explicit, Intervals.

source

',4))]),s[177]||(s[177]=i("h2",{id:"selectors",tabindex:"-1"},[a("Selectors "),i("a",{class:"header-anchor",href:"#selectors","aria-label":'Permalink to "Selectors"'},"​")],-1)),i("details",I,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.Selector",href:"#DimensionalData.Dimensions.Lookups.Selector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Selector")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=t('
julia
Selector

Abstract supertype for all selectors.

Selectors are wrappers that indicate that passed values are not the array indices, but values to be selected from the dimension lookup, such as DateTime objects for a Ti dimension.

Selectors provided in DimensionalData are:

Note: Selectors can be modified using:

  • Not: as in Not(At(x))

And IntervalSets.jl Interval can be used instead of Between

  • ..

  • Interval

  • OpenInterval

  • ClosedInterval

source

',10))]),i("details",q,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.Lookups.IntSelector",href:"#DimensionalData.Dimensions.Lookups.IntSelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.IntSelector")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[74]||(s[74]=t('
julia
IntSelector <: Selector

Abstract supertype for Selectors that return a single Int index.

IntSelectors provided by DimensionalData are:

source

',5))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.Lookups.ArraySelector",href:"#DimensionalData.Dimensions.Lookups.ArraySelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ArraySelector")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[77]||(s[77]=t('
julia
ArraySelector <: Selector

Abstract supertype for Selectors that return an AbstractArray.

ArraySelectors provided by DimensionalData are:

source

',5))]),i("details",P,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.Lookups.At",href:"#DimensionalData.Dimensions.Lookups.At"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.At")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=t(`
julia
At <: IntSelector
 
 At(x; atol=nothing, rtol=nothing)
 At(a, b; kw...)

Selector that exactly matches the value on the passed-in dimensions, or throws an error. For ranges and arrays, every intermediate value must match an existing value - not just the end points.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between them will be selected.

Keyword atol is passed to isapprox.

Example

julia
using DimensionalData
@@ -93,7 +93,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 
 # output
 
-5

source

`,7))]),i("details",N,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.Lookups.Near",href:"#DimensionalData.Dimensions.Lookups.Near"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Near")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[83]||(s[83]=t(`
julia
Near <: IntSelector
+5

source

`,7))]),i("details",N,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.Lookups.Near",href:"#DimensionalData.Dimensions.Lookups.Near"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Near")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[83]||(s[83]=t(`
julia
Near <: IntSelector
 
 Near(x)
 Near(a, b)

Selector that selects the nearest index to x.

With Points this is simply the lookup values nearest to the x, however with Intervals it is the interval center nearest to x. This will be offset from the index value for Start and End locus.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between the nearsest value to each of them will be selected.

Example

julia
using DimensionalData
@@ -102,7 +102,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 A[X(Near(23)), Y(Near(5.1))]
 
 # output
-4

source

`,7))]),i("details",R,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.Lookups.Between",href:"#DimensionalData.Dimensions.Lookups.Between"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Between")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[86]||(s[86]=t(`
julia
Between <: ArraySelector
+4

source

`,7))]),i("details",R,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.Lookups.Between",href:"#DimensionalData.Dimensions.Lookups.Between"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Between")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[86]||(s[86]=t(`
julia
Between <: ArraySelector
 
 Between(a, b)

Depreciated: use a..b instead of Between(a, b). Other Interval objects from IntervalSets.jl, like \`OpenInterval(a, b) will also work, giving the correct open/closed boundaries.

Between will e removed in future to avoid clashes with DataFrames.Between.

Selector that retrieve all indices located between 2 values, evaluated with >= for the lower value, and < for the upper value. This means the same value will not be counted twice in 2 adjacent Between selections.

For Intervals the whole interval must be lie between the values. For Points the points must fall between the values. Different Sampling types may give different results with the same input - this is the intended behaviour.

Between for Irregular intervals is a little complicated. The interval is the distance between a value and the next (for Start locus) or previous (for End locus) value.

For Center, we take the mid point between two index values as the start and end of each interval. This may or may not make sense for the values in your index, so use Between with Irregular Intervals(Center()) with caution.

Example

julia
using DimensionalData
 
@@ -118,7 +118,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
  Y Sampled{Int64} 5:6 ForwardOrdered Regular Points
 └────────────────────────────────────────────────────────────┘
   5  6
- 20    4  5

source

`,10))]),i("details",M,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.Lookups.Touches",href:"#DimensionalData.Dimensions.Lookups.Touches"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Touches")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[89]||(s[89]=t(`
julia
Touches <: ArraySelector
+ 20    4  5

source

`,10))]),i("details",M,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.Lookups.Touches",href:"#DimensionalData.Dimensions.Lookups.Touches"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Touches")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[89]||(s[89]=t(`
julia
Touches <: ArraySelector
 
 Touches(a, b)

Selector that retrieves all indices touching the closed interval 2 values, for the maximum possible area that could interact with the supplied range.

This can be better than .. when e.g. subsetting an area to rasterize, as you may wish to include pixels that just touch the area, rather than those that fall within it.

Touches is different to using closed intervals when the lookups also contain intervals - if any of the intervals touch, they are included. With .. they are discarded unless the whole cell interval falls inside the selector interval.

Example

julia
using DimensionalData
 
@@ -133,7 +133,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
  Y Sampled{Int64} 5:6 ForwardOrdered Regular Points
 └────────────────────────────────────────────────────────────┘
   5  6
- 20    4  5

source

`,7))]),i("details",U,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.Contains",href:"#DimensionalData.Dimensions.Lookups.Contains"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Contains")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[92]||(s[92]=t(`
julia
Contains <: IntSelector
+ 20    4  5

source

`,7))]),i("details",U,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.Contains",href:"#DimensionalData.Dimensions.Lookups.Contains"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Contains")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[92]||(s[92]=t(`
julia
Contains <: IntSelector
 
 Contains(x)
 Contains(a, b)

Selector that selects the interval the value is contained by. If the interval is not present in the lookup, an error will be thrown.

Can only be used for Intervals or Categorical. For Categorical it falls back to using At. Contains should not be confused with Base.contains - use Where(contains(x)) to check for if values are contain in categorical values like strings.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between them will be selected.

Example

julia
using DimensionalData; const DD = DimensionalData
@@ -143,7 +143,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 A[X(Contains(8)), Y(Contains(6.8))]
 
 # output
-3

source

`,7))]),i("details",X,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.Where",href:"#DimensionalData.Dimensions.Lookups.Where"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Where")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[95]||(s[95]=t(`
julia
Where <: ArraySelector
+3

source

`,7))]),i("details",X,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.Where",href:"#DimensionalData.Dimensions.Lookups.Where"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Where")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[95]||(s[95]=t(`
julia
Where <: ArraySelector
 
 Where(f::Function)

Selector that filters a dimension lookup by any function that accepts a single value and returns a Bool.

Example

julia
using DimensionalData
 
@@ -159,7 +159,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
  Y Sampled{Int64} [19, 21] ForwardOrdered Irregular Points
 └─────────────────────────────────────────────────────────────┘
   19  21
- 20     4   6

source

`,5))]),i("details",Y,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.All",href:"#DimensionalData.Dimensions.Lookups.All"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.All")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[98]||(s[98]=t(`
julia
All <: Selector
+ 20     4   6

source

`,5))]),i("details",Y,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.All",href:"#DimensionalData.Dimensions.Lookups.All"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.All")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[98]||(s[98]=t(`
julia
All <: Selector
 
 All(selectors::Selector...)

Selector that combines the results of other selectors. The indices used will be the union of all result sorted in ascending order.

Example

julia
using DimensionalData, Unitful
 
@@ -177,42 +177,42 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 └──────────────────────────────────────────────────────────────────────────────┘
   1 s  6 s  91 s  96 s
  10.0    1    2    19    20
- 50.0    3    6    57    60

source

`,5))]),s[178]||(s[178]=i("h2",{id:"Lookup-traits",tabindex:"-1"},[a("Lookup traits "),i("a",{class:"header-anchor",href:"#Lookup-traits","aria-label":'Permalink to "Lookup traits {#Lookup-traits}"'},"​")],-1)),i("details",V,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.Lookups.LookupTrait",href:"#DimensionalData.Dimensions.Lookups.LookupTrait"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.LookupTrait")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[101]||(s[101]=t('
julia
LookupTrait

Abstract supertype of all traits of a Lookup.

These modify the behaviour of the lookup index.

The term "Trait" is used loosely - these may be fields of an object of traits hard-coded to specific types.

source

',5))]),s[179]||(s[179]=i("h3",{id:"order",tabindex:"-1"},[a("Order "),i("a",{class:"header-anchor",href:"#order","aria-label":'Permalink to "Order"'},"​")],-1)),i("details",W,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.Lookups.Order",href:"#DimensionalData.Dimensions.Lookups.Order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Order")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[104]||(s[104]=t('
julia
Order <: LookupTrait

Traits for the order of a Lookup. These determine how searchsorted finds values in the index, and how objects are plotted.

source

',3))]),i("details",G,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.Lookups.Ordered",href:"#DimensionalData.Dimensions.Lookups.Ordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Ordered")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[107]||(s[107]=t('
julia
Ordered <: Order

Supertype for the order of an ordered Lookup, including ForwardOrdered and ReverseOrdered.

source

',3))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.Dimensions.Lookups.ForwardOrdered",href:"#DimensionalData.Dimensions.Lookups.ForwardOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ForwardOrdered")],-1)),s[109]||(s[109]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[110]||(s[110]=t(`
julia
ForwardOrdered <: Ordered
+ 50.0    3    6    57    60

source

`,5))]),s[178]||(s[178]=i("h2",{id:"Lookup-traits",tabindex:"-1"},[a("Lookup traits "),i("a",{class:"header-anchor",href:"#Lookup-traits","aria-label":'Permalink to "Lookup traits {#Lookup-traits}"'},"​")],-1)),i("details",V,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.Lookups.LookupTrait",href:"#DimensionalData.Dimensions.Lookups.LookupTrait"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.LookupTrait")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[101]||(s[101]=t('
julia
LookupTrait

Abstract supertype of all traits of a Lookup.

These modify the behaviour of the lookup index.

The term "Trait" is used loosely - these may be fields of an object of traits hard-coded to specific types.

source

',5))]),s[179]||(s[179]=i("h3",{id:"order",tabindex:"-1"},[a("Order "),i("a",{class:"header-anchor",href:"#order","aria-label":'Permalink to "Order"'},"​")],-1)),i("details",W,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.Lookups.Order",href:"#DimensionalData.Dimensions.Lookups.Order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Order")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[104]||(s[104]=t('
julia
Order <: LookupTrait

Traits for the order of a Lookup. These determine how searchsorted finds values in the index, and how objects are plotted.

source

',3))]),i("details",G,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.Lookups.Ordered",href:"#DimensionalData.Dimensions.Lookups.Ordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Ordered")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[107]||(s[107]=t('
julia
Ordered <: Order

Supertype for the order of an ordered Lookup, including ForwardOrdered and ReverseOrdered.

source

',3))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.Dimensions.Lookups.ForwardOrdered",href:"#DimensionalData.Dimensions.Lookups.ForwardOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ForwardOrdered")],-1)),s[109]||(s[109]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[110]||(s[110]=t(`
julia
ForwardOrdered <: Ordered
 
-ForwardOrdered()

Indicates that the Lookup index is in the normal forward order.

source

`,3))]),i("details",$,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.Dimensions.Lookups.ReverseOrdered",href:"#DimensionalData.Dimensions.Lookups.ReverseOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ReverseOrdered")],-1)),s[112]||(s[112]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[113]||(s[113]=t(`
julia
ReverseOrdered <: Ordered
+ForwardOrdered()

Indicates that the Lookup index is in the normal forward order.

source

`,3))]),i("details",$,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.Dimensions.Lookups.ReverseOrdered",href:"#DimensionalData.Dimensions.Lookups.ReverseOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ReverseOrdered")],-1)),s[112]||(s[112]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[113]||(s[113]=t(`
julia
ReverseOrdered <: Ordered
 
-ReverseOrdered()

Indicates that the Lookup index is in the reverse order.

source

`,3))]),i("details",H,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unordered",href:"#DimensionalData.Dimensions.Lookups.Unordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unordered")],-1)),s[115]||(s[115]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[116]||(s[116]=t(`
julia
Unordered <: Order
+ReverseOrdered()

Indicates that the Lookup index is in the reverse order.

source

`,3))]),i("details",H,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unordered",href:"#DimensionalData.Dimensions.Lookups.Unordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unordered")],-1)),s[115]||(s[115]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[116]||(s[116]=t(`
julia
Unordered <: Order
 
-Unordered()

Indicates that Lookup is unordered.

This means the index cannot be searched with searchsortedfirst or similar optimised methods - instead it will use findfirst.

source

`,4))]),i("details",J,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoOrder",href:"#DimensionalData.Dimensions.Lookups.AutoOrder"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoOrder")],-1)),s[118]||(s[118]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[119]||(s[119]=t(`
julia
AutoOrder <: Order
+Unordered()

Indicates that Lookup is unordered.

This means the index cannot be searched with searchsortedfirst or similar optimised methods - instead it will use findfirst.

source

`,4))]),i("details",J,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoOrder",href:"#DimensionalData.Dimensions.Lookups.AutoOrder"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoOrder")],-1)),s[118]||(s[118]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[119]||(s[119]=t(`
julia
AutoOrder <: Order
 
-AutoOrder()

Specifies that the Order of a Lookup will be found automatically where possible.

source

`,3))]),s[180]||(s[180]=i("h3",{id:"span",tabindex:"-1"},[a("Span "),i("a",{class:"header-anchor",href:"#span","aria-label":'Permalink to "Span"'},"​")],-1)),i("details",Q,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.Dimensions.Lookups.Span",href:"#DimensionalData.Dimensions.Lookups.Span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Span")],-1)),s[121]||(s[121]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[122]||(s[122]=t('
julia
Span <: LookupTrait

Defines the type of span used in a Sampling index. These are Regular or Irregular.

source

',3))]),i("details",Z,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.Dimensions.Lookups.Regular",href:"#DimensionalData.Dimensions.Lookups.Regular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Regular")],-1)),s[124]||(s[124]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[125]||(s[125]=t(`
julia
Regular <: Span
+AutoOrder()

Specifies that the Order of a Lookup will be found automatically where possible.

source

`,3))]),s[180]||(s[180]=i("h3",{id:"span",tabindex:"-1"},[a("Span "),i("a",{class:"header-anchor",href:"#span","aria-label":'Permalink to "Span"'},"​")],-1)),i("details",Q,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.Dimensions.Lookups.Span",href:"#DimensionalData.Dimensions.Lookups.Span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Span")],-1)),s[121]||(s[121]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[122]||(s[122]=t('
julia
Span <: LookupTrait

Defines the type of span used in a Sampling index. These are Regular or Irregular.

source

',3))]),i("details",Z,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.Dimensions.Lookups.Regular",href:"#DimensionalData.Dimensions.Lookups.Regular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Regular")],-1)),s[124]||(s[124]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[125]||(s[125]=t(`
julia
Regular <: Span
 
-Regular(step=AutoStep())

Points or Intervals that have a fixed, regular step.

source

`,3))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.Dimensions.Lookups.Irregular",href:"#DimensionalData.Dimensions.Lookups.Irregular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Irregular")],-1)),s[127]||(s[127]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[128]||(s[128]=t(`
julia
Irregular <: Span
+Regular(step=AutoStep())

Points or Intervals that have a fixed, regular step.

source

`,3))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.Dimensions.Lookups.Irregular",href:"#DimensionalData.Dimensions.Lookups.Irregular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Irregular")],-1)),s[127]||(s[127]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[128]||(s[128]=t(`
julia
Irregular <: Span
 
 Irregular(bounds::Tuple)
-Irregular(lowerbound, upperbound)

Points or Intervals that have an Irregular step size. To enable bounds tracking and accurate selectors, the starting bounds are provided as a 2 tuple, or 2 arguments. (nothing, nothing) is acceptable input, the bounds will be guessed from the index, but may be inaccurate.

source

`,3))]),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"DimensionalData.Dimensions.Lookups.Explicit",href:"#DimensionalData.Dimensions.Lookups.Explicit"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Explicit")],-1)),s[130]||(s[130]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[131]||(s[131]=t('
julia
Explicit(bounds::AbstractMatrix)

Intervals where the span is explicitly listed for every interval.

This uses a matrix where with length 2 columns for each index value, holding the lower and upper bounds for that specific index.

source

',4))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoSpan",href:"#DimensionalData.Dimensions.Lookups.AutoSpan"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoSpan")],-1)),s[133]||(s[133]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[134]||(s[134]=t(`
julia
AutoSpan <: Span
+Irregular(lowerbound, upperbound)

Points or Intervals that have an Irregular step size. To enable bounds tracking and accurate selectors, the starting bounds are provided as a 2 tuple, or 2 arguments. (nothing, nothing) is acceptable input, the bounds will be guessed from the index, but may be inaccurate.

source

`,3))]),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"DimensionalData.Dimensions.Lookups.Explicit",href:"#DimensionalData.Dimensions.Lookups.Explicit"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Explicit")],-1)),s[130]||(s[130]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[131]||(s[131]=t('
julia
Explicit(bounds::AbstractMatrix)

Intervals where the span is explicitly listed for every interval.

This uses a matrix where with length 2 columns for each index value, holding the lower and upper bounds for that specific index.

source

',4))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoSpan",href:"#DimensionalData.Dimensions.Lookups.AutoSpan"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoSpan")],-1)),s[133]||(s[133]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[134]||(s[134]=t(`
julia
AutoSpan <: Span
 
-AutoSpan()

The span will be guessed and replaced in format or set.

source

`,3))]),s[181]||(s[181]=i("h3",{id:"sampling",tabindex:"-1"},[a("Sampling "),i("a",{class:"header-anchor",href:"#sampling","aria-label":'Permalink to "Sampling"'},"​")],-1)),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampling",href:"#DimensionalData.Dimensions.Lookups.Sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampling")],-1)),s[136]||(s[136]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[137]||(s[137]=t('
julia
Sampling <: LookupTrait

Indicates the sampling method used by the index: Points or Intervals.

source

',3))]),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.Dimensions.Lookups.Points",href:"#DimensionalData.Dimensions.Lookups.Points"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Points")],-1)),s[139]||(s[139]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=t(`
julia
Points <: Sampling
+AutoSpan()

The span will be guessed and replaced in format or set.

source

`,3))]),s[181]||(s[181]=i("h3",{id:"sampling",tabindex:"-1"},[a("Sampling "),i("a",{class:"header-anchor",href:"#sampling","aria-label":'Permalink to "Sampling"'},"​")],-1)),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampling",href:"#DimensionalData.Dimensions.Lookups.Sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampling")],-1)),s[136]||(s[136]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[137]||(s[137]=t('
julia
Sampling <: LookupTrait

Indicates the sampling method used by the index: Points or Intervals.

source

',3))]),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.Dimensions.Lookups.Points",href:"#DimensionalData.Dimensions.Lookups.Points"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Points")],-1)),s[139]||(s[139]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=t(`
julia
Points <: Sampling
 
-Points()

Sampling lookup where single samples at exact points.

These are always plotted at the center of array cells.

source

`,4))]),i("details",es,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Dimensions.Lookups.Intervals",href:"#DimensionalData.Dimensions.Lookups.Intervals"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Intervals")],-1)),s[142]||(s[142]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=t(`
julia
Intervals <: Sampling
+Points()

Sampling lookup where single samples at exact points.

These are always plotted at the center of array cells.

source

`,4))]),i("details",es,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Dimensions.Lookups.Intervals",href:"#DimensionalData.Dimensions.Lookups.Intervals"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Intervals")],-1)),s[142]||(s[142]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=t(`
julia
Intervals <: Sampling
 
-Intervals(locus::Position)

Sampling specifying that sampled values are the mean (or similar) value over an interval, rather than at one specific point.

Intervals require a locus of Start, Center or End to define the location in the interval that the index values refer to.

source

`,4))]),s[182]||(s[182]=i("h3",{id:"positions",tabindex:"-1"},[a("Positions "),i("a",{class:"header-anchor",href:"#positions","aria-label":'Permalink to "Positions"'},"​")],-1)),i("details",ts,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.Dimensions.Lookups.Position",href:"#DimensionalData.Dimensions.Lookups.Position"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Position")],-1)),s[145]||(s[145]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=t('
julia
Position <: LookupTrait

Abstract supertype of types that indicate the locus of index values where they represent Intervals.

These allow for values array cells to align with the Start, Center, or End of values in the lookup index.

This means they can be plotted with correct axis markers, and allows automatic conversions to between formats with different standards (such as NetCDF and GeoTiff).

source

',5))]),i("details",ls,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.Dimensions.Lookups.Center",href:"#DimensionalData.Dimensions.Lookups.Center"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Center")],-1)),s[148]||(s[148]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=t(`
julia
Center <: Position
+Intervals(locus::Position)

Sampling specifying that sampled values are the mean (or similar) value over an interval, rather than at one specific point.

Intervals require a locus of Start, Center or End to define the location in the interval that the index values refer to.

source

`,4))]),s[182]||(s[182]=i("h3",{id:"positions",tabindex:"-1"},[a("Positions "),i("a",{class:"header-anchor",href:"#positions","aria-label":'Permalink to "Positions"'},"​")],-1)),i("details",ts,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.Dimensions.Lookups.Position",href:"#DimensionalData.Dimensions.Lookups.Position"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Position")],-1)),s[145]||(s[145]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=t('
julia
Position <: LookupTrait

Abstract supertype of types that indicate the locus of index values where they represent Intervals.

These allow for values array cells to align with the Start, Center, or End of values in the lookup index.

This means they can be plotted with correct axis markers, and allows automatic conversions to between formats with different standards (such as NetCDF and GeoTiff).

source

',5))]),i("details",ls,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.Dimensions.Lookups.Center",href:"#DimensionalData.Dimensions.Lookups.Center"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Center")],-1)),s[148]||(s[148]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=t(`
julia
Center <: Position
 
-Center()

Used to specify lookup values correspond to the center locus in an interval.

source

`,3))]),i("details",ps,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.Dimensions.Lookups.Start",href:"#DimensionalData.Dimensions.Lookups.Start"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Start")],-1)),s[151]||(s[151]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=t(`
julia
Start <: Position
+Center()

Used to specify lookup values correspond to the center locus in an interval.

source

`,3))]),i("details",ps,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.Dimensions.Lookups.Start",href:"#DimensionalData.Dimensions.Lookups.Start"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Start")],-1)),s[151]||(s[151]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=t(`
julia
Start <: Position
 
-Start()

Used to specify lookup values correspond to the start locus of an interval.

source

`,3))]),i("details",os,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.Dimensions.Lookups.Begin",href:"#DimensionalData.Dimensions.Lookups.Begin"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Begin")],-1)),s[154]||(s[154]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[155]||(s[155]=t(`
julia
Begin <: Position
+Start()

Used to specify lookup values correspond to the start locus of an interval.

source

`,3))]),i("details",os,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.Dimensions.Lookups.Begin",href:"#DimensionalData.Dimensions.Lookups.Begin"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Begin")],-1)),s[154]||(s[154]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[155]||(s[155]=t(`
julia
Begin <: Position
 
-Begin()

Used to specify the begin index of a Dimension axis, as regular begin will not work with named dimensions.

Can be used with : to create a BeginEndRange or BeginEndStepRange.

source

`,4))]),i("details",hs,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.Dimensions.Lookups.End",href:"#DimensionalData.Dimensions.Lookups.End"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.End")],-1)),s[157]||(s[157]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[158]||(s[158]=t(`
julia
End <: Position
+Begin()

Used to specify the begin index of a Dimension axis, as regular begin will not work with named dimensions.

Can be used with : to create a BeginEndRange or BeginEndStepRange.

source

`,4))]),i("details",hs,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.Dimensions.Lookups.End",href:"#DimensionalData.Dimensions.Lookups.End"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.End")],-1)),s[157]||(s[157]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[158]||(s[158]=t(`
julia
End <: Position
 
-End()

Used to specify the end index of a Dimension axis, as regular end will not work with named dimensions. Can be used with : to create a BeginEndRange or BeginEndStepRange.

Also used to specify lookup values correspond to the end locus of an interval.

source

`,4))]),i("details",ks,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoPosition",href:"#DimensionalData.Dimensions.Lookups.AutoPosition"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoPosition")],-1)),s[160]||(s[160]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[161]||(s[161]=t(`
julia
AutoPosition <: Position
+End()

Used to specify the end index of a Dimension axis, as regular end will not work with named dimensions. Can be used with : to create a BeginEndRange or BeginEndStepRange.

Also used to specify lookup values correspond to the end locus of an interval.

source

`,4))]),i("details",ks,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoPosition",href:"#DimensionalData.Dimensions.Lookups.AutoPosition"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoPosition")],-1)),s[160]||(s[160]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[161]||(s[161]=t(`
julia
AutoPosition <: Position
 
-AutoPosition()

Indicates a interval where the index locus is not yet known. This will be filled with a default value on object construction.

source

`,3))]),s[183]||(s[183]=i("h2",{id:"metadata",tabindex:"-1"},[a("Metadata "),i("a",{class:"header-anchor",href:"#metadata","aria-label":'Permalink to "Metadata"'},"​")],-1)),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractMetadata",href:"#DimensionalData.Dimensions.Lookups.AbstractMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractMetadata")],-1)),s[163]||(s[163]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[164]||(s[164]=t('
julia
AbstractMetadata{X,T}

Abstract supertype for all metadata wrappers.

Metadata wrappers allow tracking the contents and origin of metadata. This can facilitate conversion between metadata types (for saving a file to a different format) or simply saving data back to the same file type with identical metadata.

Using a wrapper instead of Dict or NamedTuple also lets us pass metadata objects to set without ambiguity about where to put them.

source

',5))]),i("details",ds,[i("summary",null,[s[165]||(s[165]=i("a",{id:"DimensionalData.Dimensions.Lookups.Metadata",href:"#DimensionalData.Dimensions.Lookups.Metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Metadata")],-1)),s[166]||(s[166]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[167]||(s[167]=t(`
julia
Metadata <: AbstractMetadata
+AutoPosition()

Indicates a interval where the index locus is not yet known. This will be filled with a default value on object construction.

source

`,3))]),s[183]||(s[183]=i("h2",{id:"metadata",tabindex:"-1"},[a("Metadata "),i("a",{class:"header-anchor",href:"#metadata","aria-label":'Permalink to "Metadata"'},"​")],-1)),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractMetadata",href:"#DimensionalData.Dimensions.Lookups.AbstractMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractMetadata")],-1)),s[163]||(s[163]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[164]||(s[164]=t('
julia
AbstractMetadata{X,T}

Abstract supertype for all metadata wrappers.

Metadata wrappers allow tracking the contents and origin of metadata. This can facilitate conversion between metadata types (for saving a file to a different format) or simply saving data back to the same file type with identical metadata.

Using a wrapper instead of Dict or NamedTuple also lets us pass metadata objects to set without ambiguity about where to put them.

source

',5))]),i("details",ds,[i("summary",null,[s[165]||(s[165]=i("a",{id:"DimensionalData.Dimensions.Lookups.Metadata",href:"#DimensionalData.Dimensions.Lookups.Metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Metadata")],-1)),s[166]||(s[166]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[167]||(s[167]=t(`
julia
Metadata <: AbstractMetadata
 
 Metadata{X}(val::Union{Dict,NamedTuple})
 Metadata{X}(pairs::Pair...) => Metadata{Dict}
-Metadata{X}(; kw...) => Metadata{NamedTuple}

General Metadata object. The X type parameter categorises the metadata for method dispatch, if required.

source

`,3))]),i("details",cs,[i("summary",null,[s[168]||(s[168]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoMetadata",href:"#DimensionalData.Dimensions.Lookups.NoMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoMetadata")],-1)),s[169]||(s[169]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[170]||(s[170]=t(`
julia
NoMetadata <: AbstractMetadata
+Metadata{X}(; kw...) => Metadata{NamedTuple}

General Metadata object. The X type parameter categorises the metadata for method dispatch, if required.

source

`,3))]),i("details",cs,[i("summary",null,[s[168]||(s[168]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoMetadata",href:"#DimensionalData.Dimensions.Lookups.NoMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoMetadata")],-1)),s[169]||(s[169]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[170]||(s[170]=t(`
julia
NoMetadata <: AbstractMetadata
 
-NoMetadata()

Indicates an object has no metadata. But unlike using nothing, get, keys and haskey will still work on it, get always returning the fallback argument. keys returns () while haskey always returns false.

source

`,3))]),i("details",gs,[i("summary",null,[s[171]||(s[171]=i("a",{id:"DimensionalData.Dimensions.Lookups.units",href:"#DimensionalData.Dimensions.Lookups.units"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.units")],-1)),s[172]||(s[172]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[173]||(s[173]=t(`
julia
units(x) => Union{Nothing,Any}
+NoMetadata()

Indicates an object has no metadata. But unlike using nothing, get, keys and haskey will still work on it, get always returning the fallback argument. keys returns () while haskey always returns false.

source

`,3))]),i("details",gs,[i("summary",null,[s[171]||(s[171]=i("a",{id:"DimensionalData.Dimensions.Lookups.units",href:"#DimensionalData.Dimensions.Lookups.units"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.units")],-1)),s[172]||(s[172]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[173]||(s[173]=t(`
julia
units(x) => Union{Nothing,Any}
 units(xs:Tuple) => Tuple
 unit(A::AbstractDimArray, dims::Tuple) => Tuple
-unit(A::AbstractDimArray, dim) => Union{Nothing,Any}

Get the units of an array or Dimension, or a tuple of of either.

Units do not have a set field, and may or may not be included in metadata. This method is to facilitate use in labels and plots when units are available, not a guarantee that they will be. If not available, nothing is returned.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,5))])])}const fs=l(k,[["render",us]]);export{bs as __pageData,fs as default}; +unit(A::AbstractDimArray, dim) => Union{Nothing,Any}

Get the units of an array or Dimension, or a tuple of of either.

Units do not have a set field, and may or may not be included in metadata. This method is to facilitate use in labels and plots when units are available, not a guarantee that they will be. If not available, nothing is returned.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,5))])])}const fs=l(k,[["render",us]]);export{bs as __pageData,fs as default}; diff --git a/dev/assets/api_lookuparrays.md.CXdh9f-q.lean.js b/dev/assets/api_lookuparrays.md.C48veaQd.lean.js similarity index 94% rename from dev/assets/api_lookuparrays.md.CXdh9f-q.lean.js rename to dev/assets/api_lookuparrays.md.C48veaQd.lean.js index febcc14c3..9973a7885 100644 --- a/dev/assets/api_lookuparrays.md.CXdh9f-q.lean.js +++ b/dev/assets/api_lookuparrays.md.C48veaQd.lean.js @@ -1,5 +1,5 @@ -import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Brp_kw4H.js";const bs=JSON.parse('{"title":"Lookups","description":"","frontmatter":{},"headers":[],"relativePath":"api/lookuparrays.md","filePath":"api/lookuparrays.md","lastUpdated":null}'),k={name:"api/lookuparrays.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},os={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},cs={class:"jldocstring custom-block",open:""},gs={class:"jldocstring custom-block",open:""};function us(ys,s,Es,ms,Ds,Fs){const n=p("Badge");return o(),h("div",null,[s[174]||(s[174]=i("h1",{id:"lookups",tabindex:"-1"},[a("Lookups "),i("a",{class:"header-anchor",href:"#lookups","aria-label":'Permalink to "Lookups"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions.Lookups",href:"#DimensionalData.Dimensions.Lookups"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Lookups

Module for Lookups and Selectors used in DimensionalData.jl

Lookup defines traits and AbstractArray wrappers that give specific behaviours for a lookup index when indexed with Selector.

For example, these allow tracking over array order so fast indexing works even when the array is reversed.

To load Lookup types and methods into scope:

julia
using DimensionalData
-using DimensionalData.Lookups

source

`,7))]),i("details",d,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Lookups.Lookup",href:"#DimensionalData.Dimensions.Lookups.Lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Lookup")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t('
julia
Lookup

Types defining the behaviour of a lookup index, how it is plotted and how Selectors like Between work.

A Lookup may be NoLookup indicating that there are no lookup values, Categorical for ordered or unordered categories, or a Sampled index for Points or Intervals.

source

',4))]),i("details",c,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.Lookups.Aligned",href:"#DimensionalData.Dimensions.Lookups.Aligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Aligned")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
Aligned <: Lookup

Abstract supertype for Lookups where the lookup is aligned with the array axes.

This is by far the most common supertype for Lookup.

source

',4))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractSampled",href:"#DimensionalData.Dimensions.Lookups.AbstractSampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractSampled")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
AbstractSampled <: Aligned

Abstract supertype for Lookups where the lookup is aligned with the array, and is independent of other dimensions. Sampled is provided by this package.

AbstractSampled must have order, span and sampling fields, or a rebuild method that accepts them as keyword arguments.

source

',4))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampled",href:"#DimensionalData.Dimensions.Lookups.Sampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampled")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t(`
julia
Sampled <: AbstractSampled
+import{_ as l,c as p,j as i,a,G as e,a4 as t,B as o,o as h}from"./chunks/framework.60YQGL-0.js";const bs=JSON.parse('{"title":"Lookups","description":"","frontmatter":{},"headers":[],"relativePath":"api/lookuparrays.md","filePath":"api/lookuparrays.md","lastUpdated":null}'),k={name:"api/lookuparrays.md"},r={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},os={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},cs={class:"jldocstring custom-block",open:""},gs={class:"jldocstring custom-block",open:""};function us(ys,s,Es,ms,Ds,Fs){const n=o("Badge");return h(),p("div",null,[s[174]||(s[174]=i("h1",{id:"lookups",tabindex:"-1"},[a("Lookups "),i("a",{class:"header-anchor",href:"#lookups","aria-label":'Permalink to "Lookups"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.Dimensions.Lookups",href:"#DimensionalData.Dimensions.Lookups"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups")],-1)),s[1]||(s[1]=a()),e(n,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[2]||(s[2]=t(`
julia
Lookups

Module for Lookups and Selectors used in DimensionalData.jl

Lookup defines traits and AbstractArray wrappers that give specific behaviours for a lookup index when indexed with Selector.

For example, these allow tracking over array order so fast indexing works even when the array is reversed.

To load Lookup types and methods into scope:

julia
using DimensionalData
+using DimensionalData.Lookups

source

`,7))]),i("details",d,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.Dimensions.Lookups.Lookup",href:"#DimensionalData.Dimensions.Lookups.Lookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Lookup")],-1)),s[4]||(s[4]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=t('
julia
Lookup

Types defining the behaviour of a lookup index, how it is plotted and how Selectors like Between work.

A Lookup may be NoLookup indicating that there are no lookup values, Categorical for ordered or unordered categories, or a Sampled index for Points or Intervals.

source

',4))]),i("details",c,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.Dimensions.Lookups.Aligned",href:"#DimensionalData.Dimensions.Lookups.Aligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Aligned")],-1)),s[7]||(s[7]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=t('
julia
Aligned <: Lookup

Abstract supertype for Lookups where the lookup is aligned with the array axes.

This is by far the most common supertype for Lookup.

source

',4))]),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractSampled",href:"#DimensionalData.Dimensions.Lookups.AbstractSampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractSampled")],-1)),s[10]||(s[10]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[11]||(s[11]=t('
julia
AbstractSampled <: Aligned

Abstract supertype for Lookups where the lookup is aligned with the array, and is independent of other dimensions. Sampled is provided by this package.

AbstractSampled must have order, span and sampling fields, or a rebuild method that accepts them as keyword arguments.

source

',4))]),i("details",u,[i("summary",null,[s[12]||(s[12]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampled",href:"#DimensionalData.Dimensions.Lookups.Sampled"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampled")],-1)),s[13]||(s[13]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[14]||(s[14]=t(`
julia
Sampled <: AbstractSampled
 
 Sampled(data::AbstractVector, order::Order, span::Span, sampling::Sampling, metadata)
 Sampled(data=AutoValues(); order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata())

A concrete implementation of the Lookup AbstractSampled. It can be used to represent Points or Intervals.

Sampled is capable of representing gridded data from a wide range of sources, allowing correct bounds and Selectors for points or intervals of regular, irregular, forward and reverse lookups.

On AbstractDimArray construction, Sampled lookup is assigned for all lookups of AbstractRange not assigned to Categorical.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

Example

Create an array with Interval sampling, and Regular span for a vector with known spacing.

We set the locus of the Intervals to Start specifying that the lookup values are for the locus at the start of each interval.

julia
using DimensionalData, DimensionalData.Lookups
@@ -20,9 +20,9 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
   80    1.0  1.0  1.0   1.0
   60    1.0  1.0  1.0   1.0
   40    1.0  1.0  1.0   1.0
-  20    1.0  1.0  1.0   1.0

source

`,11))]),i("details",y,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCyclic",href:"#DimensionalData.Dimensions.Lookups.AbstractCyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCyclic")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
AbstractCyclic <: AbstractSampled

An abstract supertype for cyclic lookups.

These are AbstractSampled lookups that are cyclic for Selectors.

source

',4))]),i("details",E,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.Lookups.Cyclic",href:"#DimensionalData.Dimensions.Lookups.Cyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Cyclic")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t(`
julia
Cyclic <: AbstractCyclic
+  20    1.0  1.0  1.0   1.0

source

`,11))]),i("details",y,[i("summary",null,[s[15]||(s[15]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCyclic",href:"#DimensionalData.Dimensions.Lookups.AbstractCyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCyclic")],-1)),s[16]||(s[16]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[17]||(s[17]=t('
julia
AbstractCyclic <: AbstractSampled

An abstract supertype for cyclic lookups.

These are AbstractSampled lookups that are cyclic for Selectors.

source

',4))]),i("details",E,[i("summary",null,[s[18]||(s[18]=i("a",{id:"DimensionalData.Dimensions.Lookups.Cyclic",href:"#DimensionalData.Dimensions.Lookups.Cyclic"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Cyclic")],-1)),s[19]||(s[19]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[20]||(s[20]=t(`
julia
Cyclic <: AbstractCyclic
 
-Cyclic(data; order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata(), cycle)

A Cyclic lookup is similar to Sampled but out of range Selectors At, Near, Contains will cycle the values to typemin or typemax over the length of cycle. Where and .. work as for Sampled.

This is useful when we are using mean annual datasets over a real time-span, or for wrapping longitudes so that -360 and 360 are the same.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

  • cycle: the length of the cycle. This does not have to exactly match the data, the step size is Week(1) the cycle can be Years(1).

Notes

  1. If you use dates and e.g. cycle over a Year, every year will have the number and spacing of Weeks and Days as the cycle year. Using At may not be reliable in terms of exact dates, as it will be applied to the specified date plus or minus n years.

  2. Indexing into a Cycled with any AbstractArray or AbstractRange will return a Sampled as the full cycle is likely no longer available.

  3. .. or Between selectors do not work in a cycled way: they work as for Sampled. This may change in future to return cycled values, but there are problems with this, such as leap years breaking correct date cycling of a single year. If you actually need this behaviour, please make a GitHub issue.

source

`,8))]),i("details",m,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCategorical",href:"#DimensionalData.Dimensions.Lookups.AbstractCategorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCategorical")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
AbstractCategorical <: Aligned

Lookups where the values are categories.

Categorical is the provided concrete implementation. But this can easily be extended, all methods are defined for AbstractCategorical.

All AbstractCategorical must provide a rebuild method with data, order and metadata keyword arguments.

source

',5))]),i("details",D,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.Lookups.Categorical",href:"#DimensionalData.Dimensions.Lookups.Categorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Categorical")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
Categorical <: AbstractCategorical
+Cyclic(data; order=AutoOrder(), span=AutoSpan(), sampling=Points(), metadata=NoMetadata(), cycle)

A Cyclic lookup is similar to Sampled but out of range Selectors At, Near, Contains will cycle the values to typemin or typemax over the length of cycle. Where and .. work as for Sampled.

This is useful when we are using mean annual datasets over a real time-span, or for wrapping longitudes so that -360 and 360 are the same.

Arguments

  • data: An AbstractVector of lookup values, matching the length of the curresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. These can be provided explicitly if they are known and performance is important.

  • span: indicates the size of intervals or distance between points, and will be set to Regular for AbstractRange and Irregular for AbstractArray, unless assigned manually.

  • sampling: is assigned to Points, unless set to Intervals manually. Using Intervals will change the behaviour of bounds and Selectorss to take account for the full size of the interval, rather than the point alone.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

  • cycle: the length of the cycle. This does not have to exactly match the data, the step size is Week(1) the cycle can be Years(1).

Notes

  1. If you use dates and e.g. cycle over a Year, every year will have the number and spacing of Weeks and Days as the cycle year. Using At may not be reliable in terms of exact dates, as it will be applied to the specified date plus or minus n years.

  2. Indexing into a Cycled with any AbstractArray or AbstractRange will return a Sampled as the full cycle is likely no longer available.

  3. .. or Between selectors do not work in a cycled way: they work as for Sampled. This may change in future to return cycled values, but there are problems with this, such as leap years breaking correct date cycling of a single year. If you actually need this behaviour, please make a GitHub issue.

source

`,8))]),i("details",m,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractCategorical",href:"#DimensionalData.Dimensions.Lookups.AbstractCategorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractCategorical")],-1)),s[22]||(s[22]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[23]||(s[23]=t('
julia
AbstractCategorical <: Aligned

Lookups where the values are categories.

Categorical is the provided concrete implementation. But this can easily be extended, all methods are defined for AbstractCategorical.

All AbstractCategorical must provide a rebuild method with data, order and metadata keyword arguments.

source

',5))]),i("details",D,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.Lookups.Categorical",href:"#DimensionalData.Dimensions.Lookups.Categorical"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Categorical")],-1)),s[25]||(s[25]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[26]||(s[26]=t(`
julia
Categorical <: AbstractCategorical
 
 Categorical(o::Order)
 Categorical(; order=Unordered())

A Lookup where the values are categories.

This will be automatically assigned if the lookup contains AbstractString, Symbol or Char. Otherwise it can be assigned manually.

Order will be determined automatically where possible.

Arguments

  • data: An AbstractVector matching the length of the corresponding array axis.

  • order: Order) indicating the order of the lookup, AutoOrder by default, detected from the order of data to be ForwardOrdered, ReverseOrdered or Unordered. Can be provided if this is known and performance is important.

  • metadata: a Dict or Metadata wrapper that holds any metadata object adding more information about the array axis - useful for extending DimensionalData for specific contexts, like geospatial data in Rasters.jl. By default it is NoMetadata().

Example

Create an array with [Interval] sampling.

julia
using DimensionalData
@@ -34,7 +34,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 # output
 
 Categorical{String} ["one", "two", "three"] Unordered,
-Categorical{Symbol} [:a, :b, :c, :d] ForwardOrdered

source

`,10))]),i("details",F,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unaligned",href:"#DimensionalData.Dimensions.Lookups.Unaligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unaligned")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t('
julia
Unaligned <: Lookup

Abstract supertype for Lookup where the lookup is not aligned to the grid.

Indexing an Unaligned with Selectors must provide all other Unaligned dimensions.

source

',4))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Lookups.Transformed",href:"#DimensionalData.Dimensions.Lookups.Transformed"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Transformed")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Transformed <: Unaligned
+Categorical{Symbol} [:a, :b, :c, :d] ForwardOrdered

source

`,10))]),i("details",F,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unaligned",href:"#DimensionalData.Dimensions.Lookups.Unaligned"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unaligned")],-1)),s[28]||(s[28]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[29]||(s[29]=t('
julia
Unaligned <: Lookup

Abstract supertype for Lookup where the lookup is not aligned to the grid.

Indexing an Unaligned with Selectors must provide all other Unaligned dimensions.

source

',4))]),i("details",C,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.Lookups.Transformed",href:"#DimensionalData.Dimensions.Lookups.Transformed"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Transformed")],-1)),s[31]||(s[31]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=t(`
julia
Transformed <: Unaligned
 
 Transformed(f, dim::Dimension; metadata=NoMetadata())

Lookup that uses an affine transformation to convert dimensions from dims(lookup) to dims(array). This can be useful when the dimensions are e.g. rotated from a more commonly used axis.

Any function can be used to do the transformation, but transformations from CoordinateTransformations.jl may be useful.

Arguments

  • f: transformation function

  • dim: a dimension to transform to.

Keyword Arguments

  • metadata:

Example

julia
using DimensionalData, DimensionalData.Lookups, CoordinateTransformations
 
@@ -47,9 +47,9 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 da[X(At(6.0)), Y(At(2.0))]
 
 # output
-9

source

`,10))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.MergedLookup",href:"#DimensionalData.Dimensions.MergedLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.MergedLookup")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t(`
julia
MergedLookup <: Lookup
+9

source

`,10))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.MergedLookup",href:"#DimensionalData.Dimensions.MergedLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.MergedLookup")],-1)),s[34]||(s[34]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=t(`
julia
MergedLookup <: Lookup
 
-MergedLookup(data, dims; [metadata])

A Lookup that holds multiple combined dimensions.

MergedLookup can be indexed with Selectors like At, Between, and Where although Near has undefined meaning.

Arguments

  • data: A Vector of Tuple.

  • dims: A Tuple of Dimension indicating the dimensions in the tuples in data.

Keywords

  • metadata: a Dict or Metadata object to attach dimension metadata.

source

`,8))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoLookup",href:"#DimensionalData.Dimensions.Lookups.NoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoLookup")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
NoLookup <: Lookup
+MergedLookup(data, dims; [metadata])

A Lookup that holds multiple combined dimensions.

MergedLookup can be indexed with Selectors like At, Between, and Where although Near has undefined meaning.

Arguments

  • data: A Vector of Tuple.

  • dims: A Tuple of Dimension indicating the dimensions in the tuples in data.

Keywords

  • metadata: a Dict or Metadata object to attach dimension metadata.

source

`,8))]),i("details",f,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoLookup",href:"#DimensionalData.Dimensions.Lookups.NoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoLookup")],-1)),s[37]||(s[37]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[38]||(s[38]=t(`
julia
NoLookup <: Lookup
 
 NoLookup()

A Lookup that is identical to the array axis. Selectors can't be used on this lookup.

Example

Defining a DimArray without passing lookup values to the dimensions, it will be assigned NoLookup:

julia
using DimensionalData
 
@@ -64,26 +64,26 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 
 # output
 
-NoLookup, NoLookup

source

`,8))]),i("details",v,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoLookup",href:"#DimensionalData.Dimensions.Lookups.AutoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoLookup")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AutoLookup <: Lookup
+NoLookup, NoLookup

source

`,8))]),i("details",v,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoLookup",href:"#DimensionalData.Dimensions.Lookups.AutoLookup"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoLookup")],-1)),s[40]||(s[40]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[41]||(s[41]=t(`
julia
AutoLookup <: Lookup
 
 AutoLookup()
-AutoLookup(values=AutoValues(); kw...)

Automatic Lookup, the default lookup. It will be converted automatically to another Lookup when it is possible to detect it from the lookup values.

Keywords will be used in the detected Lookup constructor.

source

`,4))]),i("details",j,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoValues",href:"#DimensionalData.Dimensions.Lookups.AutoValues"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoValues")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=t('
julia
AutoValues

Detect Lookup values from the context. This is used in NoLookup to simply use the array axis as the index when the array is constructed, and in set to change the Lookup type without changing the index values.

source

',3))]),s[175]||(s[175]=i("p",null,[a("The generic value getter "),i("code",null,"val")],-1)),i("details",B,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.Lookups.val",href:"#DimensionalData.Dimensions.Lookups.val"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.val")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
val(x)
-val(dims::Tuple) => Tuple

Return the contained value of a wrapper object.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

Objects that don't define a val method are returned unaltered.

source

`,5))]),s[176]||(s[176]=i("p",null,"Lookup methods:",-1)),i("details",L,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.Lookups.bounds",href:"#DimensionalData.Dimensions.Lookups.bounds"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.bounds")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
bounds(xs, [dims::Tuple]) => Tuple{Vararg{Tuple{T,T}}}
+AutoLookup(values=AutoValues(); kw...)

Automatic Lookup, the default lookup. It will be converted automatically to another Lookup when it is possible to detect it from the lookup values.

Keywords will be used in the detected Lookup constructor.

source

`,4))]),i("details",j,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoValues",href:"#DimensionalData.Dimensions.Lookups.AutoValues"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoValues")],-1)),s[43]||(s[43]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=t('
julia
AutoValues

Detect Lookup values from the context. This is used in NoLookup to simply use the array axis as the index when the array is constructed, and in set to change the Lookup type without changing the index values.

source

',3))]),s[175]||(s[175]=i("p",null,[a("The generic value getter "),i("code",null,"val")],-1)),i("details",B,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.Dimensions.Lookups.val",href:"#DimensionalData.Dimensions.Lookups.val"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.val")],-1)),s[46]||(s[46]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[47]||(s[47]=t(`
julia
val(x)
+val(dims::Tuple) => Tuple

Return the contained value of a wrapper object.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

Objects that don't define a val method are returned unaltered.

source

`,5))]),s[176]||(s[176]=i("p",null,"Lookup methods:",-1)),i("details",L,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.Dimensions.Lookups.bounds",href:"#DimensionalData.Dimensions.Lookups.bounds"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.bounds")],-1)),s[49]||(s[49]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[50]||(s[50]=t(`
julia
bounds(xs, [dims::Tuple]) => Tuple{Vararg{Tuple{T,T}}}
 bounds(xs::Tuple) => Tuple{Vararg{Tuple{T,T}}}
 bounds(x, dim) => Tuple{T,T}
-bounds(dim::Union{Dimension,Lookup}) => Tuple{T,T}

Return the bounds of all dimensions of an object, of a specific dimension, or of a tuple of dimensions.

If bounds are not known, one or both values may be nothing.

dims can be a Dimension, a dimension type, or a tuple of either.

source

`,5))]),i("details",A,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.Lookups.hasselection",href:"#DimensionalData.Dimensions.Lookups.hasselection"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.hasselection")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
hasselection(x, selector) => Bool
-hasselection(x, selectors::Tuple) => Bool

Check if indexing into x with selectors can be performed, where x is some object with a dims method, and selectors is a Selector or Dimension or a tuple of either.

source

`,3))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.Lookups.sampling",href:"#DimensionalData.Dimensions.Lookups.sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.sampling")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
sampling(x, [dims::Tuple]) => Tuple
+bounds(dim::Union{Dimension,Lookup}) => Tuple{T,T}

Return the bounds of all dimensions of an object, of a specific dimension, or of a tuple of dimensions.

If bounds are not known, one or both values may be nothing.

dims can be a Dimension, a dimension type, or a tuple of either.

source

`,5))]),i("details",A,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.Dimensions.Lookups.hasselection",href:"#DimensionalData.Dimensions.Lookups.hasselection"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.hasselection")],-1)),s[52]||(s[52]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[53]||(s[53]=t(`
julia
hasselection(x, selector) => Bool
+hasselection(x, selectors::Tuple) => Bool

Check if indexing into x with selectors can be performed, where x is some object with a dims method, and selectors is a Selector or Dimension or a tuple of either.

source

`,3))]),i("details",x,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.Dimensions.Lookups.sampling",href:"#DimensionalData.Dimensions.Lookups.sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.sampling")],-1)),s[55]||(s[55]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[56]||(s[56]=t(`
julia
sampling(x, [dims::Tuple]) => Tuple
 sampling(x, dim) => Sampling
 sampling(xs::Tuple) => Tuple{Vararg{Sampling}}
-sampling(x:Union{Dimension,Lookup}) => Sampling

Return the Sampling for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.Lookups.span",href:"#DimensionalData.Dimensions.Lookups.span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.span")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
span(x, [dims::Tuple]) => Tuple
+sampling(x:Union{Dimension,Lookup}) => Sampling

Return the Sampling for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.Dimensions.Lookups.span",href:"#DimensionalData.Dimensions.Lookups.span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.span")],-1)),s[58]||(s[58]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[59]||(s[59]=t(`
julia
span(x, [dims::Tuple]) => Tuple
 span(x, dim) => Span
 span(xs::Tuple) => Tuple{Vararg{Span,N}}
-span(x::Union{Dimension,Lookup}) => Span

Return the Span for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",w,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.Lookups.order",href:"#DimensionalData.Dimensions.Lookups.order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.order")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
order(x, [dims::Tuple]) => Tuple
+span(x::Union{Dimension,Lookup}) => Span

Return the Span for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",w,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.Dimensions.Lookups.order",href:"#DimensionalData.Dimensions.Lookups.order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.order")],-1)),s[61]||(s[61]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[62]||(s[62]=t(`
julia
order(x, [dims::Tuple]) => Tuple
 order(xs::Tuple) => Tuple
-order(x::Union{Dimension,Lookup}) => Order

Return the Ordering of the dimension lookup for each dimension: ForwardOrdered, ReverseOrdered, or Unordered

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.Lookups.locus",href:"#DimensionalData.Dimensions.Lookups.locus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.locus")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t(`
julia
locus(x, [dims::Tuple]) => Tuple
+order(x::Union{Dimension,Lookup}) => Order

Return the Ordering of the dimension lookup for each dimension: ForwardOrdered, ReverseOrdered, or Unordered

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DimensionalData.Dimensions.Lookups.locus",href:"#DimensionalData.Dimensions.Lookups.locus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.locus")],-1)),s[64]||(s[64]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=t(`
julia
locus(x, [dims::Tuple]) => Tuple
 locus(x, dim) => Locus
 locus(xs::Tuple) => Tuple{Vararg{Locus,N}}
-locus(x::Union{Dimension,Lookup}) => Locus

Return the Position of lookup values for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",O,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.Lookups.shiftlocus",href:"#DimensionalData.Dimensions.Lookups.shiftlocus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.shiftlocus")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
shiftlocus(locus::Locus, x)

Shift the values of x from the current locus to the new locus.

We only shift Sampled, Regular or Explicit, Intervals.

source

',4))]),s[177]||(s[177]=i("h2",{id:"selectors",tabindex:"-1"},[a("Selectors "),i("a",{class:"header-anchor",href:"#selectors","aria-label":'Permalink to "Selectors"'},"​")],-1)),i("details",I,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.Selector",href:"#DimensionalData.Dimensions.Lookups.Selector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Selector")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=t('
julia
Selector

Abstract supertype for all selectors.

Selectors are wrappers that indicate that passed values are not the array indices, but values to be selected from the dimension lookup, such as DateTime objects for a Ti dimension.

Selectors provided in DimensionalData are:

Note: Selectors can be modified using:

  • Not: as in Not(At(x))

And IntervalSets.jl Interval can be used instead of Between

  • ..

  • Interval

  • OpenInterval

  • ClosedInterval

source

',10))]),i("details",q,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.Lookups.IntSelector",href:"#DimensionalData.Dimensions.Lookups.IntSelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.IntSelector")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[74]||(s[74]=t('
julia
IntSelector <: Selector

Abstract supertype for Selectors that return a single Int index.

IntSelectors provided by DimensionalData are:

source

',5))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.Lookups.ArraySelector",href:"#DimensionalData.Dimensions.Lookups.ArraySelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ArraySelector")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[77]||(s[77]=t('
julia
ArraySelector <: Selector

Abstract supertype for Selectors that return an AbstractArray.

ArraySelectors provided by DimensionalData are:

source

',5))]),i("details",P,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.Lookups.At",href:"#DimensionalData.Dimensions.Lookups.At"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.At")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=t(`
julia
At <: IntSelector
+locus(x::Union{Dimension,Lookup}) => Locus

Return the Position of lookup values for each dimension.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",O,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.Dimensions.Lookups.shiftlocus",href:"#DimensionalData.Dimensions.Lookups.shiftlocus"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.shiftlocus")],-1)),s[67]||(s[67]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[68]||(s[68]=t('
julia
shiftlocus(locus::Locus, x)

Shift the values of x from the current locus to the new locus.

We only shift Sampled, Regular or Explicit, Intervals.

source

',4))]),s[177]||(s[177]=i("h2",{id:"selectors",tabindex:"-1"},[a("Selectors "),i("a",{class:"header-anchor",href:"#selectors","aria-label":'Permalink to "Selectors"'},"​")],-1)),i("details",I,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Dimensions.Lookups.Selector",href:"#DimensionalData.Dimensions.Lookups.Selector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Selector")],-1)),s[70]||(s[70]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=t('
julia
Selector

Abstract supertype for all selectors.

Selectors are wrappers that indicate that passed values are not the array indices, but values to be selected from the dimension lookup, such as DateTime objects for a Ti dimension.

Selectors provided in DimensionalData are:

Note: Selectors can be modified using:

  • Not: as in Not(At(x))

And IntervalSets.jl Interval can be used instead of Between

  • ..

  • Interval

  • OpenInterval

  • ClosedInterval

source

',10))]),i("details",q,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.Dimensions.Lookups.IntSelector",href:"#DimensionalData.Dimensions.Lookups.IntSelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.IntSelector")],-1)),s[73]||(s[73]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[74]||(s[74]=t('
julia
IntSelector <: Selector

Abstract supertype for Selectors that return a single Int index.

IntSelectors provided by DimensionalData are:

source

',5))]),i("details",z,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.Dimensions.Lookups.ArraySelector",href:"#DimensionalData.Dimensions.Lookups.ArraySelector"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ArraySelector")],-1)),s[76]||(s[76]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[77]||(s[77]=t('
julia
ArraySelector <: Selector

Abstract supertype for Selectors that return an AbstractArray.

ArraySelectors provided by DimensionalData are:

source

',5))]),i("details",P,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.Dimensions.Lookups.At",href:"#DimensionalData.Dimensions.Lookups.At"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.At")],-1)),s[79]||(s[79]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=t(`
julia
At <: IntSelector
 
 At(x; atol=nothing, rtol=nothing)
 At(a, b; kw...)

Selector that exactly matches the value on the passed-in dimensions, or throws an error. For ranges and arrays, every intermediate value must match an existing value - not just the end points.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between them will be selected.

Keyword atol is passed to isapprox.

Example

julia
using DimensionalData
@@ -93,7 +93,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 
 # output
 
-5

source

`,7))]),i("details",N,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.Lookups.Near",href:"#DimensionalData.Dimensions.Lookups.Near"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Near")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[83]||(s[83]=t(`
julia
Near <: IntSelector
+5

source

`,7))]),i("details",N,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.Dimensions.Lookups.Near",href:"#DimensionalData.Dimensions.Lookups.Near"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Near")],-1)),s[82]||(s[82]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[83]||(s[83]=t(`
julia
Near <: IntSelector
 
 Near(x)
 Near(a, b)

Selector that selects the nearest index to x.

With Points this is simply the lookup values nearest to the x, however with Intervals it is the interval center nearest to x. This will be offset from the index value for Start and End locus.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between the nearsest value to each of them will be selected.

Example

julia
using DimensionalData
@@ -102,7 +102,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 A[X(Near(23)), Y(Near(5.1))]
 
 # output
-4

source

`,7))]),i("details",R,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.Lookups.Between",href:"#DimensionalData.Dimensions.Lookups.Between"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Between")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[86]||(s[86]=t(`
julia
Between <: ArraySelector
+4

source

`,7))]),i("details",R,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.Dimensions.Lookups.Between",href:"#DimensionalData.Dimensions.Lookups.Between"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Between")],-1)),s[85]||(s[85]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[86]||(s[86]=t(`
julia
Between <: ArraySelector
 
 Between(a, b)

Depreciated: use a..b instead of Between(a, b). Other Interval objects from IntervalSets.jl, like \`OpenInterval(a, b) will also work, giving the correct open/closed boundaries.

Between will e removed in future to avoid clashes with DataFrames.Between.

Selector that retrieve all indices located between 2 values, evaluated with >= for the lower value, and < for the upper value. This means the same value will not be counted twice in 2 adjacent Between selections.

For Intervals the whole interval must be lie between the values. For Points the points must fall between the values. Different Sampling types may give different results with the same input - this is the intended behaviour.

Between for Irregular intervals is a little complicated. The interval is the distance between a value and the next (for Start locus) or previous (for End locus) value.

For Center, we take the mid point between two index values as the start and end of each interval. This may or may not make sense for the values in your index, so use Between with Irregular Intervals(Center()) with caution.

Example

julia
using DimensionalData
 
@@ -118,7 +118,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
  Y Sampled{Int64} 5:6 ForwardOrdered Regular Points
 └────────────────────────────────────────────────────────────┘
   5  6
- 20    4  5

source

`,10))]),i("details",M,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.Lookups.Touches",href:"#DimensionalData.Dimensions.Lookups.Touches"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Touches")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[89]||(s[89]=t(`
julia
Touches <: ArraySelector
+ 20    4  5

source

`,10))]),i("details",M,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.Dimensions.Lookups.Touches",href:"#DimensionalData.Dimensions.Lookups.Touches"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Touches")],-1)),s[88]||(s[88]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[89]||(s[89]=t(`
julia
Touches <: ArraySelector
 
 Touches(a, b)

Selector that retrieves all indices touching the closed interval 2 values, for the maximum possible area that could interact with the supplied range.

This can be better than .. when e.g. subsetting an area to rasterize, as you may wish to include pixels that just touch the area, rather than those that fall within it.

Touches is different to using closed intervals when the lookups also contain intervals - if any of the intervals touch, they are included. With .. they are discarded unless the whole cell interval falls inside the selector interval.

Example

julia
using DimensionalData
 
@@ -133,7 +133,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
  Y Sampled{Int64} 5:6 ForwardOrdered Regular Points
 └────────────────────────────────────────────────────────────┘
   5  6
- 20    4  5

source

`,7))]),i("details",U,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.Contains",href:"#DimensionalData.Dimensions.Lookups.Contains"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Contains")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[92]||(s[92]=t(`
julia
Contains <: IntSelector
+ 20    4  5

source

`,7))]),i("details",U,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.Contains",href:"#DimensionalData.Dimensions.Lookups.Contains"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Contains")],-1)),s[91]||(s[91]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[92]||(s[92]=t(`
julia
Contains <: IntSelector
 
 Contains(x)
 Contains(a, b)

Selector that selects the interval the value is contained by. If the interval is not present in the lookup, an error will be thrown.

Can only be used for Intervals or Categorical. For Categorical it falls back to using At. Contains should not be confused with Base.contains - use Where(contains(x)) to check for if values are contain in categorical values like strings.

x can be any value to select a single index, or a Vector of values to select vector of indices. If two values a and b are used, the range between them will be selected.

Example

julia
using DimensionalData; const DD = DimensionalData
@@ -143,7 +143,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 A[X(Contains(8)), Y(Contains(6.8))]
 
 # output
-3

source

`,7))]),i("details",X,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.Where",href:"#DimensionalData.Dimensions.Lookups.Where"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Where")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[95]||(s[95]=t(`
julia
Where <: ArraySelector
+3

source

`,7))]),i("details",X,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.Where",href:"#DimensionalData.Dimensions.Lookups.Where"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Where")],-1)),s[94]||(s[94]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[95]||(s[95]=t(`
julia
Where <: ArraySelector
 
 Where(f::Function)

Selector that filters a dimension lookup by any function that accepts a single value and returns a Bool.

Example

julia
using DimensionalData
 
@@ -159,7 +159,7 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
  Y Sampled{Int64} [19, 21] ForwardOrdered Irregular Points
 └─────────────────────────────────────────────────────────────┘
   19  21
- 20     4   6

source

`,5))]),i("details",Y,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.All",href:"#DimensionalData.Dimensions.Lookups.All"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.All")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[98]||(s[98]=t(`
julia
All <: Selector
+ 20     4   6

source

`,5))]),i("details",Y,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.Dimensions.Lookups.All",href:"#DimensionalData.Dimensions.Lookups.All"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.All")],-1)),s[97]||(s[97]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[98]||(s[98]=t(`
julia
All <: Selector
 
 All(selectors::Selector...)

Selector that combines the results of other selectors. The indices used will be the union of all result sorted in ascending order.

Example

julia
using DimensionalData, Unitful
 
@@ -177,42 +177,42 @@ import{_ as l,B as p,o,c as h,j as i,a,G as e,a4 as t}from"./chunks/framework.Br
 └──────────────────────────────────────────────────────────────────────────────┘
   1 s  6 s  91 s  96 s
  10.0    1    2    19    20
- 50.0    3    6    57    60

source

`,5))]),s[178]||(s[178]=i("h2",{id:"Lookup-traits",tabindex:"-1"},[a("Lookup traits "),i("a",{class:"header-anchor",href:"#Lookup-traits","aria-label":'Permalink to "Lookup traits {#Lookup-traits}"'},"​")],-1)),i("details",V,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.Lookups.LookupTrait",href:"#DimensionalData.Dimensions.Lookups.LookupTrait"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.LookupTrait")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[101]||(s[101]=t('
julia
LookupTrait

Abstract supertype of all traits of a Lookup.

These modify the behaviour of the lookup index.

The term "Trait" is used loosely - these may be fields of an object of traits hard-coded to specific types.

source

',5))]),s[179]||(s[179]=i("h3",{id:"order",tabindex:"-1"},[a("Order "),i("a",{class:"header-anchor",href:"#order","aria-label":'Permalink to "Order"'},"​")],-1)),i("details",W,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.Lookups.Order",href:"#DimensionalData.Dimensions.Lookups.Order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Order")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[104]||(s[104]=t('
julia
Order <: LookupTrait

Traits for the order of a Lookup. These determine how searchsorted finds values in the index, and how objects are plotted.

source

',3))]),i("details",G,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.Lookups.Ordered",href:"#DimensionalData.Dimensions.Lookups.Ordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Ordered")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[107]||(s[107]=t('
julia
Ordered <: Order

Supertype for the order of an ordered Lookup, including ForwardOrdered and ReverseOrdered.

source

',3))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.Dimensions.Lookups.ForwardOrdered",href:"#DimensionalData.Dimensions.Lookups.ForwardOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ForwardOrdered")],-1)),s[109]||(s[109]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[110]||(s[110]=t(`
julia
ForwardOrdered <: Ordered
+ 50.0    3    6    57    60

source

`,5))]),s[178]||(s[178]=i("h2",{id:"Lookup-traits",tabindex:"-1"},[a("Lookup traits "),i("a",{class:"header-anchor",href:"#Lookup-traits","aria-label":'Permalink to "Lookup traits {#Lookup-traits}"'},"​")],-1)),i("details",V,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.Dimensions.Lookups.LookupTrait",href:"#DimensionalData.Dimensions.Lookups.LookupTrait"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.LookupTrait")],-1)),s[100]||(s[100]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[101]||(s[101]=t('
julia
LookupTrait

Abstract supertype of all traits of a Lookup.

These modify the behaviour of the lookup index.

The term "Trait" is used loosely - these may be fields of an object of traits hard-coded to specific types.

source

',5))]),s[179]||(s[179]=i("h3",{id:"order",tabindex:"-1"},[a("Order "),i("a",{class:"header-anchor",href:"#order","aria-label":'Permalink to "Order"'},"​")],-1)),i("details",W,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.Dimensions.Lookups.Order",href:"#DimensionalData.Dimensions.Lookups.Order"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Order")],-1)),s[103]||(s[103]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[104]||(s[104]=t('
julia
Order <: LookupTrait

Traits for the order of a Lookup. These determine how searchsorted finds values in the index, and how objects are plotted.

source

',3))]),i("details",G,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.Dimensions.Lookups.Ordered",href:"#DimensionalData.Dimensions.Lookups.Ordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Ordered")],-1)),s[106]||(s[106]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[107]||(s[107]=t('
julia
Ordered <: Order

Supertype for the order of an ordered Lookup, including ForwardOrdered and ReverseOrdered.

source

',3))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.Dimensions.Lookups.ForwardOrdered",href:"#DimensionalData.Dimensions.Lookups.ForwardOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ForwardOrdered")],-1)),s[109]||(s[109]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[110]||(s[110]=t(`
julia
ForwardOrdered <: Ordered
 
-ForwardOrdered()

Indicates that the Lookup index is in the normal forward order.

source

`,3))]),i("details",$,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.Dimensions.Lookups.ReverseOrdered",href:"#DimensionalData.Dimensions.Lookups.ReverseOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ReverseOrdered")],-1)),s[112]||(s[112]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[113]||(s[113]=t(`
julia
ReverseOrdered <: Ordered
+ForwardOrdered()

Indicates that the Lookup index is in the normal forward order.

source

`,3))]),i("details",$,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.Dimensions.Lookups.ReverseOrdered",href:"#DimensionalData.Dimensions.Lookups.ReverseOrdered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.ReverseOrdered")],-1)),s[112]||(s[112]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[113]||(s[113]=t(`
julia
ReverseOrdered <: Ordered
 
-ReverseOrdered()

Indicates that the Lookup index is in the reverse order.

source

`,3))]),i("details",H,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unordered",href:"#DimensionalData.Dimensions.Lookups.Unordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unordered")],-1)),s[115]||(s[115]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[116]||(s[116]=t(`
julia
Unordered <: Order
+ReverseOrdered()

Indicates that the Lookup index is in the reverse order.

source

`,3))]),i("details",H,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.Dimensions.Lookups.Unordered",href:"#DimensionalData.Dimensions.Lookups.Unordered"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Unordered")],-1)),s[115]||(s[115]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[116]||(s[116]=t(`
julia
Unordered <: Order
 
-Unordered()

Indicates that Lookup is unordered.

This means the index cannot be searched with searchsortedfirst or similar optimised methods - instead it will use findfirst.

source

`,4))]),i("details",J,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoOrder",href:"#DimensionalData.Dimensions.Lookups.AutoOrder"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoOrder")],-1)),s[118]||(s[118]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[119]||(s[119]=t(`
julia
AutoOrder <: Order
+Unordered()

Indicates that Lookup is unordered.

This means the index cannot be searched with searchsortedfirst or similar optimised methods - instead it will use findfirst.

source

`,4))]),i("details",J,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoOrder",href:"#DimensionalData.Dimensions.Lookups.AutoOrder"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoOrder")],-1)),s[118]||(s[118]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[119]||(s[119]=t(`
julia
AutoOrder <: Order
 
-AutoOrder()

Specifies that the Order of a Lookup will be found automatically where possible.

source

`,3))]),s[180]||(s[180]=i("h3",{id:"span",tabindex:"-1"},[a("Span "),i("a",{class:"header-anchor",href:"#span","aria-label":'Permalink to "Span"'},"​")],-1)),i("details",Q,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.Dimensions.Lookups.Span",href:"#DimensionalData.Dimensions.Lookups.Span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Span")],-1)),s[121]||(s[121]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[122]||(s[122]=t('
julia
Span <: LookupTrait

Defines the type of span used in a Sampling index. These are Regular or Irregular.

source

',3))]),i("details",Z,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.Dimensions.Lookups.Regular",href:"#DimensionalData.Dimensions.Lookups.Regular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Regular")],-1)),s[124]||(s[124]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[125]||(s[125]=t(`
julia
Regular <: Span
+AutoOrder()

Specifies that the Order of a Lookup will be found automatically where possible.

source

`,3))]),s[180]||(s[180]=i("h3",{id:"span",tabindex:"-1"},[a("Span "),i("a",{class:"header-anchor",href:"#span","aria-label":'Permalink to "Span"'},"​")],-1)),i("details",Q,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.Dimensions.Lookups.Span",href:"#DimensionalData.Dimensions.Lookups.Span"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Span")],-1)),s[121]||(s[121]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[122]||(s[122]=t('
julia
Span <: LookupTrait

Defines the type of span used in a Sampling index. These are Regular or Irregular.

source

',3))]),i("details",Z,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.Dimensions.Lookups.Regular",href:"#DimensionalData.Dimensions.Lookups.Regular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Regular")],-1)),s[124]||(s[124]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[125]||(s[125]=t(`
julia
Regular <: Span
 
-Regular(step=AutoStep())

Points or Intervals that have a fixed, regular step.

source

`,3))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.Dimensions.Lookups.Irregular",href:"#DimensionalData.Dimensions.Lookups.Irregular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Irregular")],-1)),s[127]||(s[127]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[128]||(s[128]=t(`
julia
Irregular <: Span
+Regular(step=AutoStep())

Points or Intervals that have a fixed, regular step.

source

`,3))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.Dimensions.Lookups.Irregular",href:"#DimensionalData.Dimensions.Lookups.Irregular"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Irregular")],-1)),s[127]||(s[127]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[128]||(s[128]=t(`
julia
Irregular <: Span
 
 Irregular(bounds::Tuple)
-Irregular(lowerbound, upperbound)

Points or Intervals that have an Irregular step size. To enable bounds tracking and accurate selectors, the starting bounds are provided as a 2 tuple, or 2 arguments. (nothing, nothing) is acceptable input, the bounds will be guessed from the index, but may be inaccurate.

source

`,3))]),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"DimensionalData.Dimensions.Lookups.Explicit",href:"#DimensionalData.Dimensions.Lookups.Explicit"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Explicit")],-1)),s[130]||(s[130]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[131]||(s[131]=t('
julia
Explicit(bounds::AbstractMatrix)

Intervals where the span is explicitly listed for every interval.

This uses a matrix where with length 2 columns for each index value, holding the lower and upper bounds for that specific index.

source

',4))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoSpan",href:"#DimensionalData.Dimensions.Lookups.AutoSpan"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoSpan")],-1)),s[133]||(s[133]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[134]||(s[134]=t(`
julia
AutoSpan <: Span
+Irregular(lowerbound, upperbound)

Points or Intervals that have an Irregular step size. To enable bounds tracking and accurate selectors, the starting bounds are provided as a 2 tuple, or 2 arguments. (nothing, nothing) is acceptable input, the bounds will be guessed from the index, but may be inaccurate.

source

`,3))]),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"DimensionalData.Dimensions.Lookups.Explicit",href:"#DimensionalData.Dimensions.Lookups.Explicit"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Explicit")],-1)),s[130]||(s[130]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[131]||(s[131]=t('
julia
Explicit(bounds::AbstractMatrix)

Intervals where the span is explicitly listed for every interval.

This uses a matrix where with length 2 columns for each index value, holding the lower and upper bounds for that specific index.

source

',4))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoSpan",href:"#DimensionalData.Dimensions.Lookups.AutoSpan"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoSpan")],-1)),s[133]||(s[133]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[134]||(s[134]=t(`
julia
AutoSpan <: Span
 
-AutoSpan()

The span will be guessed and replaced in format or set.

source

`,3))]),s[181]||(s[181]=i("h3",{id:"sampling",tabindex:"-1"},[a("Sampling "),i("a",{class:"header-anchor",href:"#sampling","aria-label":'Permalink to "Sampling"'},"​")],-1)),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampling",href:"#DimensionalData.Dimensions.Lookups.Sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampling")],-1)),s[136]||(s[136]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[137]||(s[137]=t('
julia
Sampling <: LookupTrait

Indicates the sampling method used by the index: Points or Intervals.

source

',3))]),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.Dimensions.Lookups.Points",href:"#DimensionalData.Dimensions.Lookups.Points"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Points")],-1)),s[139]||(s[139]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=t(`
julia
Points <: Sampling
+AutoSpan()

The span will be guessed and replaced in format or set.

source

`,3))]),s[181]||(s[181]=i("h3",{id:"sampling",tabindex:"-1"},[a("Sampling "),i("a",{class:"header-anchor",href:"#sampling","aria-label":'Permalink to "Sampling"'},"​")],-1)),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"DimensionalData.Dimensions.Lookups.Sampling",href:"#DimensionalData.Dimensions.Lookups.Sampling"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Sampling")],-1)),s[136]||(s[136]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[137]||(s[137]=t('
julia
Sampling <: LookupTrait

Indicates the sampling method used by the index: Points or Intervals.

source

',3))]),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.Dimensions.Lookups.Points",href:"#DimensionalData.Dimensions.Lookups.Points"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Points")],-1)),s[139]||(s[139]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=t(`
julia
Points <: Sampling
 
-Points()

Sampling lookup where single samples at exact points.

These are always plotted at the center of array cells.

source

`,4))]),i("details",es,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Dimensions.Lookups.Intervals",href:"#DimensionalData.Dimensions.Lookups.Intervals"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Intervals")],-1)),s[142]||(s[142]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=t(`
julia
Intervals <: Sampling
+Points()

Sampling lookup where single samples at exact points.

These are always plotted at the center of array cells.

source

`,4))]),i("details",es,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Dimensions.Lookups.Intervals",href:"#DimensionalData.Dimensions.Lookups.Intervals"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Intervals")],-1)),s[142]||(s[142]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=t(`
julia
Intervals <: Sampling
 
-Intervals(locus::Position)

Sampling specifying that sampled values are the mean (or similar) value over an interval, rather than at one specific point.

Intervals require a locus of Start, Center or End to define the location in the interval that the index values refer to.

source

`,4))]),s[182]||(s[182]=i("h3",{id:"positions",tabindex:"-1"},[a("Positions "),i("a",{class:"header-anchor",href:"#positions","aria-label":'Permalink to "Positions"'},"​")],-1)),i("details",ts,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.Dimensions.Lookups.Position",href:"#DimensionalData.Dimensions.Lookups.Position"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Position")],-1)),s[145]||(s[145]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=t('
julia
Position <: LookupTrait

Abstract supertype of types that indicate the locus of index values where they represent Intervals.

These allow for values array cells to align with the Start, Center, or End of values in the lookup index.

This means they can be plotted with correct axis markers, and allows automatic conversions to between formats with different standards (such as NetCDF and GeoTiff).

source

',5))]),i("details",ls,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.Dimensions.Lookups.Center",href:"#DimensionalData.Dimensions.Lookups.Center"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Center")],-1)),s[148]||(s[148]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=t(`
julia
Center <: Position
+Intervals(locus::Position)

Sampling specifying that sampled values are the mean (or similar) value over an interval, rather than at one specific point.

Intervals require a locus of Start, Center or End to define the location in the interval that the index values refer to.

source

`,4))]),s[182]||(s[182]=i("h3",{id:"positions",tabindex:"-1"},[a("Positions "),i("a",{class:"header-anchor",href:"#positions","aria-label":'Permalink to "Positions"'},"​")],-1)),i("details",ts,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.Dimensions.Lookups.Position",href:"#DimensionalData.Dimensions.Lookups.Position"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Position")],-1)),s[145]||(s[145]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=t('
julia
Position <: LookupTrait

Abstract supertype of types that indicate the locus of index values where they represent Intervals.

These allow for values array cells to align with the Start, Center, or End of values in the lookup index.

This means they can be plotted with correct axis markers, and allows automatic conversions to between formats with different standards (such as NetCDF and GeoTiff).

source

',5))]),i("details",ls,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.Dimensions.Lookups.Center",href:"#DimensionalData.Dimensions.Lookups.Center"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Center")],-1)),s[148]||(s[148]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=t(`
julia
Center <: Position
 
-Center()

Used to specify lookup values correspond to the center locus in an interval.

source

`,3))]),i("details",ps,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.Dimensions.Lookups.Start",href:"#DimensionalData.Dimensions.Lookups.Start"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Start")],-1)),s[151]||(s[151]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=t(`
julia
Start <: Position
+Center()

Used to specify lookup values correspond to the center locus in an interval.

source

`,3))]),i("details",ps,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.Dimensions.Lookups.Start",href:"#DimensionalData.Dimensions.Lookups.Start"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Start")],-1)),s[151]||(s[151]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=t(`
julia
Start <: Position
 
-Start()

Used to specify lookup values correspond to the start locus of an interval.

source

`,3))]),i("details",os,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.Dimensions.Lookups.Begin",href:"#DimensionalData.Dimensions.Lookups.Begin"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Begin")],-1)),s[154]||(s[154]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[155]||(s[155]=t(`
julia
Begin <: Position
+Start()

Used to specify lookup values correspond to the start locus of an interval.

source

`,3))]),i("details",os,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.Dimensions.Lookups.Begin",href:"#DimensionalData.Dimensions.Lookups.Begin"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Begin")],-1)),s[154]||(s[154]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[155]||(s[155]=t(`
julia
Begin <: Position
 
-Begin()

Used to specify the begin index of a Dimension axis, as regular begin will not work with named dimensions.

Can be used with : to create a BeginEndRange or BeginEndStepRange.

source

`,4))]),i("details",hs,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.Dimensions.Lookups.End",href:"#DimensionalData.Dimensions.Lookups.End"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.End")],-1)),s[157]||(s[157]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[158]||(s[158]=t(`
julia
End <: Position
+Begin()

Used to specify the begin index of a Dimension axis, as regular begin will not work with named dimensions.

Can be used with : to create a BeginEndRange or BeginEndStepRange.

source

`,4))]),i("details",hs,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.Dimensions.Lookups.End",href:"#DimensionalData.Dimensions.Lookups.End"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.End")],-1)),s[157]||(s[157]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[158]||(s[158]=t(`
julia
End <: Position
 
-End()

Used to specify the end index of a Dimension axis, as regular end will not work with named dimensions. Can be used with : to create a BeginEndRange or BeginEndStepRange.

Also used to specify lookup values correspond to the end locus of an interval.

source

`,4))]),i("details",ks,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoPosition",href:"#DimensionalData.Dimensions.Lookups.AutoPosition"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoPosition")],-1)),s[160]||(s[160]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[161]||(s[161]=t(`
julia
AutoPosition <: Position
+End()

Used to specify the end index of a Dimension axis, as regular end will not work with named dimensions. Can be used with : to create a BeginEndRange or BeginEndStepRange.

Also used to specify lookup values correspond to the end locus of an interval.

source

`,4))]),i("details",ks,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.Dimensions.Lookups.AutoPosition",href:"#DimensionalData.Dimensions.Lookups.AutoPosition"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AutoPosition")],-1)),s[160]||(s[160]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[161]||(s[161]=t(`
julia
AutoPosition <: Position
 
-AutoPosition()

Indicates a interval where the index locus is not yet known. This will be filled with a default value on object construction.

source

`,3))]),s[183]||(s[183]=i("h2",{id:"metadata",tabindex:"-1"},[a("Metadata "),i("a",{class:"header-anchor",href:"#metadata","aria-label":'Permalink to "Metadata"'},"​")],-1)),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractMetadata",href:"#DimensionalData.Dimensions.Lookups.AbstractMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractMetadata")],-1)),s[163]||(s[163]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[164]||(s[164]=t('
julia
AbstractMetadata{X,T}

Abstract supertype for all metadata wrappers.

Metadata wrappers allow tracking the contents and origin of metadata. This can facilitate conversion between metadata types (for saving a file to a different format) or simply saving data back to the same file type with identical metadata.

Using a wrapper instead of Dict or NamedTuple also lets us pass metadata objects to set without ambiguity about where to put them.

source

',5))]),i("details",ds,[i("summary",null,[s[165]||(s[165]=i("a",{id:"DimensionalData.Dimensions.Lookups.Metadata",href:"#DimensionalData.Dimensions.Lookups.Metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Metadata")],-1)),s[166]||(s[166]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[167]||(s[167]=t(`
julia
Metadata <: AbstractMetadata
+AutoPosition()

Indicates a interval where the index locus is not yet known. This will be filled with a default value on object construction.

source

`,3))]),s[183]||(s[183]=i("h2",{id:"metadata",tabindex:"-1"},[a("Metadata "),i("a",{class:"header-anchor",href:"#metadata","aria-label":'Permalink to "Metadata"'},"​")],-1)),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.Dimensions.Lookups.AbstractMetadata",href:"#DimensionalData.Dimensions.Lookups.AbstractMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.AbstractMetadata")],-1)),s[163]||(s[163]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[164]||(s[164]=t('
julia
AbstractMetadata{X,T}

Abstract supertype for all metadata wrappers.

Metadata wrappers allow tracking the contents and origin of metadata. This can facilitate conversion between metadata types (for saving a file to a different format) or simply saving data back to the same file type with identical metadata.

Using a wrapper instead of Dict or NamedTuple also lets us pass metadata objects to set without ambiguity about where to put them.

source

',5))]),i("details",ds,[i("summary",null,[s[165]||(s[165]=i("a",{id:"DimensionalData.Dimensions.Lookups.Metadata",href:"#DimensionalData.Dimensions.Lookups.Metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.Metadata")],-1)),s[166]||(s[166]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[167]||(s[167]=t(`
julia
Metadata <: AbstractMetadata
 
 Metadata{X}(val::Union{Dict,NamedTuple})
 Metadata{X}(pairs::Pair...) => Metadata{Dict}
-Metadata{X}(; kw...) => Metadata{NamedTuple}

General Metadata object. The X type parameter categorises the metadata for method dispatch, if required.

source

`,3))]),i("details",cs,[i("summary",null,[s[168]||(s[168]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoMetadata",href:"#DimensionalData.Dimensions.Lookups.NoMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoMetadata")],-1)),s[169]||(s[169]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[170]||(s[170]=t(`
julia
NoMetadata <: AbstractMetadata
+Metadata{X}(; kw...) => Metadata{NamedTuple}

General Metadata object. The X type parameter categorises the metadata for method dispatch, if required.

source

`,3))]),i("details",cs,[i("summary",null,[s[168]||(s[168]=i("a",{id:"DimensionalData.Dimensions.Lookups.NoMetadata",href:"#DimensionalData.Dimensions.Lookups.NoMetadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.NoMetadata")],-1)),s[169]||(s[169]=a()),e(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[170]||(s[170]=t(`
julia
NoMetadata <: AbstractMetadata
 
-NoMetadata()

Indicates an object has no metadata. But unlike using nothing, get, keys and haskey will still work on it, get always returning the fallback argument. keys returns () while haskey always returns false.

source

`,3))]),i("details",gs,[i("summary",null,[s[171]||(s[171]=i("a",{id:"DimensionalData.Dimensions.Lookups.units",href:"#DimensionalData.Dimensions.Lookups.units"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.units")],-1)),s[172]||(s[172]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[173]||(s[173]=t(`
julia
units(x) => Union{Nothing,Any}
+NoMetadata()

Indicates an object has no metadata. But unlike using nothing, get, keys and haskey will still work on it, get always returning the fallback argument. keys returns () while haskey always returns false.

source

`,3))]),i("details",gs,[i("summary",null,[s[171]||(s[171]=i("a",{id:"DimensionalData.Dimensions.Lookups.units",href:"#DimensionalData.Dimensions.Lookups.units"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.units")],-1)),s[172]||(s[172]=a()),e(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[173]||(s[173]=t(`
julia
units(x) => Union{Nothing,Any}
 units(xs:Tuple) => Tuple
 unit(A::AbstractDimArray, dims::Tuple) => Tuple
-unit(A::AbstractDimArray, dim) => Union{Nothing,Any}

Get the units of an array or Dimension, or a tuple of of either.

Units do not have a set field, and may or may not be included in metadata. This method is to facilitate use in labels and plots when units are available, not a guarantee that they will be. If not available, nothing is returned.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,5))])])}const fs=l(k,[["render",us]]);export{bs as __pageData,fs as default}; +unit(A::AbstractDimArray, dim) => Union{Nothing,Any}

Get the units of an array or Dimension, or a tuple of of either.

Units do not have a set field, and may or may not be included in metadata. This method is to facilitate use in labels and plots when units are available, not a guarantee that they will be. If not available, nothing is returned.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,5))])])}const fs=l(k,[["render",us]]);export{bs as __pageData,fs as default}; diff --git a/dev/assets/api_reference.md.BrbldTqp.js b/dev/assets/api_reference.md.DP_ai0mp.js similarity index 98% rename from dev/assets/api_reference.md.BrbldTqp.js rename to dev/assets/api_reference.md.DP_ai0mp.js index 732c59f7b..77504d991 100644 --- a/dev/assets/api_reference.md.BrbldTqp.js +++ b/dev/assets/api_reference.md.DP_ai0mp.js @@ -1,4 +1,4 @@ -import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framework.Brp_kw4H.js";const ms=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/reference.md","filePath":"api/reference.md","lastUpdated":null}'),d={name:"api/reference.md"},r={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""};function os(Es,s,gs,ys,cs,Fs){const n=e("Badge");return k(),p("div",null,[s[165]||(s[165]=i("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),i("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[166]||(s[166]=i("h2",{id:"arrays",tabindex:"-1"},[a("Arrays "),i("a",{class:"header-anchor",href:"#arrays","aria-label":'Permalink to "Arrays"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.AbstractBasicDimArray",href:"#DimensionalData.AbstractBasicDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractBasicDimArray")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=l('
julia
AbstractBasicDimArray <: AbstractArray

The abstract supertype for all arrays with a dims method that returns a Tuple of Dimension

Only keyword rebuild is guaranteed to work with AbstractBasicDimArray.

source

',4))]),i("details",o,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.AbstractDimArray",href:"#DimensionalData.AbstractDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimArray")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=l('
julia
AbstractDimArray <: AbstractBasicArray

Abstract supertype for all "dim" arrays.

These arrays return a Tuple of Dimension from a dims method, and can be rebuilt using rebuild.

parent must return the source array.

They should have metadata, name and refdims methods, although these are optional.

A rebuild method for AbstractDimArray must accept data, dims, refdims, name, metadata arguments.

Indexing AbstractDimArray with non-range AbstractArray has undefined effects on the Dimension index. Use forward-ordered arrays only"

source

',8))]),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.DimArray",href:"#DimensionalData.DimArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimArray")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=l(`
julia
DimArray <: AbstractDimArray
+import{_ as h,c as e,j as i,a,G as t,a4 as l,B as k,o as p}from"./chunks/framework.60YQGL-0.js";const ms=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/reference.md","filePath":"api/reference.md","lastUpdated":null}'),d={name:"api/reference.md"},r={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""};function os(Es,s,gs,ys,cs,Fs){const n=k("Badge");return p(),e("div",null,[s[165]||(s[165]=i("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),i("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[166]||(s[166]=i("h2",{id:"arrays",tabindex:"-1"},[a("Arrays "),i("a",{class:"header-anchor",href:"#arrays","aria-label":'Permalink to "Arrays"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.AbstractBasicDimArray",href:"#DimensionalData.AbstractBasicDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractBasicDimArray")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=l('
julia
AbstractBasicDimArray <: AbstractArray

The abstract supertype for all arrays with a dims method that returns a Tuple of Dimension

Only keyword rebuild is guaranteed to work with AbstractBasicDimArray.

source

',4))]),i("details",o,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.AbstractDimArray",href:"#DimensionalData.AbstractDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimArray")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=l('
julia
AbstractDimArray <: AbstractBasicArray

Abstract supertype for all "dim" arrays.

These arrays return a Tuple of Dimension from a dims method, and can be rebuilt using rebuild.

parent must return the source array.

They should have metadata, name and refdims methods, although these are optional.

A rebuild method for AbstractDimArray must accept data, dims, refdims, name, metadata arguments.

Indexing AbstractDimArray with non-range AbstractArray has undefined effects on the Dimension index. Use forward-ordered arrays only"

source

',8))]),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.DimArray",href:"#DimensionalData.DimArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimArray")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=l(`
julia
DimArray <: AbstractDimArray
 
 DimArray(data, dims, refdims, name, metadata)
 DimArray(data, dims::Tuple; refdims=(), name=NoName(), metadata=NoMetadata())
@@ -38,7 +38,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   1        2
  1     (1, 1)   (1, 2)
  2     (2, 1)   (2, 2)
- 3     (3, 1)   (3, 2)

source

`,13))]),s[167]||(s[167]=i("p",null,[a("Shorthand "),i("code",null,"AbstractDimArray"),a(" constructors:")],-1)),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"Base.fill",href:"#Base.fill"},[i("span",{class:"jlbinding"},"Base.fill")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=l(`
julia
Base.fill(x, dims::Dimension...; kw...) => DimArray
+ 3     (3, 1)   (3, 2)

source

`,13))]),s[167]||(s[167]=i("p",null,[a("Shorthand "),i("code",null,"AbstractDimArray"),a(" constructors:")],-1)),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"Base.fill",href:"#Base.fill"},[i("span",{class:"jlbinding"},"Base.fill")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=l(`
julia
Base.fill(x, dims::Dimension...; kw...) => DimArray
 Base.fill(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray with a fill value of x.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData, Random; Random.seed!(123);
 
 julia> fill(true, X(2), Y(4))
@@ -48,7 +48,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
  X,  Y
 └───────────────────────┘
  1  1  1  1
- 1  1  1  1

source

`,8))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"Base.rand",href:"#Base.rand"},[i("span",{class:"jlbinding"},"Base.rand")],-1)),s[13]||(s[13]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=l(`
julia
Base.rand(x, dims::Dimension...; kw...) => DimArray
+ 1  1  1  1

source

`,8))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"Base.rand",href:"#Base.rand"},[i("span",{class:"jlbinding"},"Base.rand")],-1)),s[13]||(s[13]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=l(`
julia
Base.rand(x, dims::Dimension...; kw...) => DimArray
 Base.rand(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray
 Base.rand(r::AbstractRNG, x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray
 Base.rand(r::AbstractRNG, x, dims::Dimension...; kw...) => DimArray

Create a DimArray of random values.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
@@ -72,7 +72,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   100.0       150.0       200.0
   :a    0.443494    0.253849    0.867547
   :b    0.745673    0.334152    0.0802658
-  :c    0.512083    0.427328    0.311448

source

`,8))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"Base.zeros",href:"#Base.zeros"},[i("span",{class:"jlbinding"},"Base.zeros")],-1)),s[16]||(s[16]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[17]||(s[17]=l(`
julia
Base.zeros(x, dims::Dimension...; kw...) => DimArray
+  :c    0.512083    0.427328    0.311448

source

`,8))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"Base.zeros",href:"#Base.zeros"},[i("span",{class:"jlbinding"},"Base.zeros")],-1)),s[16]||(s[16]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[17]||(s[17]=l(`
julia
Base.zeros(x, dims::Dimension...; kw...) => DimArray
 Base.zeros(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray of zeros.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
 
 julia> zeros(Bool, X(2), Y(4))
@@ -94,7 +94,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   100.0  150.0  200.0
   :a    0.0    0.0    0.0
   :b    0.0    0.0    0.0
-  :c    0.0    0.0    0.0

source

`,8))]),i("details",F,[i("summary",null,[s[18]||(s[18]=i("a",{id:"Base.ones",href:"#Base.ones"},[i("span",{class:"jlbinding"},"Base.ones")],-1)),s[19]||(s[19]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[20]||(s[20]=l(`
julia
Base.ones(x, dims::Dimension...; kw...) => DimArray
+  :c    0.0    0.0    0.0

source

`,8))]),i("details",F,[i("summary",null,[s[18]||(s[18]=i("a",{id:"Base.ones",href:"#Base.ones"},[i("span",{class:"jlbinding"},"Base.ones")],-1)),s[19]||(s[19]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[20]||(s[20]=l(`
julia
Base.ones(x, dims::Dimension...; kw...) => DimArray
 Base.ones(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray of ones.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
 
 julia> ones(Bool, X(2), Y(4))
@@ -116,8 +116,8 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   100.0  150.0  200.0
   :a    1.0    1.0    1.0
   :b    1.0    1.0    1.0
-  :c    1.0    1.0    1.0

source

`,8))]),s[168]||(s[168]=i("p",null,"Functions for getting information from objects:",-1)),i("details",C,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.dims",href:"#DimensionalData.Dimensions.dims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[22]||(s[22]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=l(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
+  :c    1.0    1.0    1.0

source

`,8))]),s[168]||(s[168]=i("p",null,"Functions for getting information from objects:",-1)),i("details",C,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.dims",href:"#DimensionalData.Dimensions.dims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[22]||(s[22]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=l(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
 dims(x, query...) => Tuple{Vararg{Dimension}}

Get the dimension(s) matching the type(s) of the query dimension.

Lookup can be an Int or an Dimension, or a tuple containing any combination of either.

Arguments

  • x: any object with a dims method, or a Tuple of Dimension.

  • query: Tuple or a single Dimension or Dimension Type.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(2, 3, 2), (X, Y, Z))
@@ -131,13 +131,13 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
  1.0  1.0  1.0
 
 julia> dims(A, (X, Y))
-( X,  Y)

source

`,13))]),i("details",m,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.refdims",href:"#DimensionalData.Dimensions.refdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.refdims")],-1)),s[25]||(s[25]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=l(`
julia
refdims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-refdims(x, dim) => Dimension

Reference dimensions for an array that is a slice or view of another array with more dimensions.

slicedims(a, dims) returns a tuple containing the current new dimensions and the new reference dimensions. Refdims can be stored in a field or discarded, as it is mostly to give context to plots. Ignoring refdims will simply leave some captions empty.

The default is to return an empty Tuple ().

source

`,5))]),i("details",u,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.metadata",href:"#DimensionalData.Dimensions.Lookups.metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.metadata")],-1)),s[28]||(s[28]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=l(`
julia
metadata(x) => (object metadata)
+( X,  Y)

source

`,13))]),i("details",m,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.refdims",href:"#DimensionalData.Dimensions.refdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.refdims")],-1)),s[25]||(s[25]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=l(`
julia
refdims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+refdims(x, dim) => Dimension

Reference dimensions for an array that is a slice or view of another array with more dimensions.

slicedims(a, dims) returns a tuple containing the current new dimensions and the new reference dimensions. Refdims can be stored in a field or discarded, as it is mostly to give context to plots. Ignoring refdims will simply leave some captions empty.

The default is to return an empty Tuple ().

source

`,5))]),i("details",u,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.metadata",href:"#DimensionalData.Dimensions.Lookups.metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.metadata")],-1)),s[28]||(s[28]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=l(`
julia
metadata(x) => (object metadata)
 metadata(x, dims::Tuple)  => Tuple (Dimension metadata)
-metadata(xs::Tuple) => Tuple

Returns the metadata for an object or for the specified dimension(s)

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",D,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.name",href:"#DimensionalData.Dimensions.name"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name")],-1)),s[31]||(s[31]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[32]||(s[32]=l(`
julia
name(x) => Symbol
+metadata(xs::Tuple) => Tuple

Returns the metadata for an object or for the specified dimension(s)

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",D,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.name",href:"#DimensionalData.Dimensions.name"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name")],-1)),s[31]||(s[31]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[32]||(s[32]=l(`
julia
name(x) => Symbol
 name(xs:Tuple) => NTuple{N,Symbol}
 name(x, dims::Tuple) => NTuple{N,Symbol}
-name(x, dim) => Symbol

Get the name of an array or Dimension, or a tuple of of either as a Symbol.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.otherdims",href:"#DimensionalData.Dimensions.otherdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[34]||(s[34]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[35]||(s[35]=l(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
+name(x, dim) => Symbol

Get the name of an array or Dimension, or a tuple of of either as a Symbol.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.otherdims",href:"#DimensionalData.Dimensions.otherdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[34]||(s[34]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[35]||(s[35]=l(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -145,7 +145,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 ( Y,  Z)
 
 julia> otherdims(A, (Y, Z))
-( X)

source

`,8))]),i("details",B,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.dimnum",href:"#DimensionalData.Dimensions.dimnum"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[37]||(s[37]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=l(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
+( X)

source

`,8))]),i("details",B,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.dimnum",href:"#DimensionalData.Dimensions.dimnum"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[37]||(s[37]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=l(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
 dimnum(x, query) => Int

Get the number(s) of Dimension(s) as ordered in the dimensions of an object.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple, Array or single Dimension or dimension Type.

The return type will be a Tuple of Int or a single Int, depending on whether query is a Tuple or single Dimension.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
@@ -154,7 +154,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 (3, 1, 2)
 
 julia> dimnum(A, Y)
-2

source

`,8))]),i("details",A,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.hasdim",href:"#DimensionalData.Dimensions.hasdim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[40]||(s[40]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=l(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
+2

source

`,8))]),i("details",A,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.hasdim",href:"#DimensionalData.Dimensions.hasdim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[40]||(s[40]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=l(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
 hasdim([f], x, query...) => NTuple{Bool}
 hasdim([f], x, query) => Bool

Check if an object x has dimensions that match or inherit from the query dimensions.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

Check if an object or tuple contains an Dimension, or a tuple of dimensions.

Example

julia
julia> using DimensionalData
 
@@ -167,7 +167,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 (true, true, true)
 
 julia> hasdim(A, Ti)
-false

source

`,8))]),s[169]||(s[169]=i("h2",{id:"Multi-array-datasets",tabindex:"-1"},[a("Multi-array datasets "),i("a",{class:"header-anchor",href:"#Multi-array-datasets","aria-label":'Permalink to "Multi-array datasets {#Multi-array-datasets}"'},"​")],-1)),i("details",f,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.AbstractDimStack",href:"#DimensionalData.AbstractDimStack"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimStack")],-1)),s[43]||(s[43]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=l('
julia
AbstractDimStack

Abstract supertype for dimensional stacks.

These have multiple layers of data, but share dimensions.

Notably, their behaviour lies somewhere between a DimArray and a NamedTuple:

  • indexing with a Symbol as in dimstack[:symbol] returns a DimArray layer.

  • iteration and map apply over array layers, as indexed with a Symbol.

  • getindex and many base methods are applied as for DimArray - to avoid the need to always use map.

This design gives very succinct code when working with many-layered, mixed-dimension objects. But it may be jarring initially - the most surprising outcome is that dimstack[1] will return a NamedTuple of values for the first index in all layers, while first(dimstack) will return the first value of the iterator - the DimArray for the first layer.

See DimStack for the concrete implementation. Most methods are defined on the abstract type.

To extend AbstractDimStack, implement argument and keyword version of rebuild and also rebuild_from_arrays.

The constructor of an AbstractDimStack must accept a NamedTuple.

source

',10))]),i("details",j,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.DimStack",href:"#DimensionalData.DimStack"},[i("span",{class:"jlbinding"},"DimensionalData.DimStack")],-1)),s[46]||(s[46]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=l(`
julia
DimStack <: AbstractDimStack
+false

source

`,8))]),s[169]||(s[169]=i("h2",{id:"Multi-array-datasets",tabindex:"-1"},[a("Multi-array datasets "),i("a",{class:"header-anchor",href:"#Multi-array-datasets","aria-label":'Permalink to "Multi-array datasets {#Multi-array-datasets}"'},"​")],-1)),i("details",f,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.AbstractDimStack",href:"#DimensionalData.AbstractDimStack"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimStack")],-1)),s[43]||(s[43]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=l('
julia
AbstractDimStack

Abstract supertype for dimensional stacks.

These have multiple layers of data, but share dimensions.

Notably, their behaviour lies somewhere between a DimArray and a NamedTuple:

  • indexing with a Symbol as in dimstack[:symbol] returns a DimArray layer.

  • iteration and map apply over array layers, as indexed with a Symbol.

  • getindex and many base methods are applied as for DimArray - to avoid the need to always use map.

This design gives very succinct code when working with many-layered, mixed-dimension objects. But it may be jarring initially - the most surprising outcome is that dimstack[1] will return a NamedTuple of values for the first index in all layers, while first(dimstack) will return the first value of the iterator - the DimArray for the first layer.

See DimStack for the concrete implementation. Most methods are defined on the abstract type.

To extend AbstractDimStack, implement argument and keyword version of rebuild and also rebuild_from_arrays.

The constructor of an AbstractDimStack must accept a NamedTuple.

source

',10))]),i("details",j,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.DimStack",href:"#DimensionalData.DimStack"},[i("span",{class:"jlbinding"},"DimensionalData.DimStack")],-1)),s[46]||(s[46]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=l(`
julia
DimStack <: AbstractDimStack
 
 DimStack(data::AbstractDimArray...; kw...)
 DimStack(data::Tuple{Vararg{AbstractDimArray}}; kw...)
@@ -194,7 +194,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 (one = 4.0, two = 8.0, three = 12.0)
 
 julia> s[X(At(:a))] isa DimStack
-true

source

`,16))]),s[170]||(s[170]=i("h2",{id:"Dimension-generators",tabindex:"-1"},[a("Dimension generators "),i("a",{class:"header-anchor",href:"#Dimension-generators","aria-label":'Permalink to "Dimension generators {#Dimension-generators}"'},"​")],-1)),i("details",v,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.DimIndices",href:"#DimensionalData.DimIndices"},[i("span",{class:"jlbinding"},"DimensionalData.DimIndices")],-1)),s[49]||(s[49]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=l(`
julia
DimIndices <: AbstractArray
+true

source

`,16))]),s[170]||(s[170]=i("h2",{id:"Dimension-generators",tabindex:"-1"},[a("Dimension generators "),i("a",{class:"header-anchor",href:"#Dimension-generators","aria-label":'Permalink to "Dimension generators {#Dimension-generators}"'},"​")],-1)),i("details",v,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.DimIndices",href:"#DimensionalData.DimIndices"},[i("span",{class:"jlbinding"},"DimensionalData.DimIndices")],-1)),s[49]||(s[49]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=l(`
julia
DimIndices <: AbstractArray
 
 DimIndices(x)
 DimIndices(dims::Tuple)
@@ -231,7 +231,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 └─────────────────────────────────────────────────────────────────┘
    'a'       'c'
  0.0  0.9063    0.0991336
- 0.6  0.745673  0.692209

source

`,9))]),i("details",x,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.DimSelectors",href:"#DimensionalData.DimSelectors"},[i("span",{class:"jlbinding"},"DimensionalData.DimSelectors")],-1)),s[52]||(s[52]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=l(`
julia
DimSelectors <: AbstractArray
+ 0.6  0.745673  0.692209

source

`,9))]),i("details",x,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.DimSelectors",href:"#DimensionalData.DimSelectors"},[i("span",{class:"jlbinding"},"DimensionalData.DimSelectors")],-1)),s[52]||(s[52]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=l(`
julia
DimSelectors <: AbstractArray
 
 DimSelectors(x; selectors, atol...)
 DimSelectors(dims::Tuple; selectors, atol...)
@@ -249,11 +249,11 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   1.0        11.0       21.0
   1.0  0.691162    0.218579   0.539076
  10.0  0.0303789   0.420756   0.485687
- 22.0  0.0967863   0.864856   0.870485

Using At would make sure we only use exact interpolation, while Contains with sampling of Intervals would make sure that each values is taken only from an Interval that is present in the lookups.

source

`,10))]),i("details",w,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.DimPoints",href:"#DimensionalData.DimPoints"},[i("span",{class:"jlbinding"},"DimensionalData.DimPoints")],-1)),s[55]||(s[55]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=l(`
julia
DimPoints <: AbstractArray
+ 22.0  0.0967863   0.864856   0.870485

Using At would make sure we only use exact interpolation, while Contains with sampling of Intervals would make sure that each values is taken only from an Interval that is present in the lookups.

source

`,10))]),i("details",w,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.DimPoints",href:"#DimensionalData.DimPoints"},[i("span",{class:"jlbinding"},"DimensionalData.DimPoints")],-1)),s[55]||(s[55]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=l(`
julia
DimPoints <: AbstractArray
 
 DimPoints(x; order)
 DimPoints(dims::Tuple; order)
-DimPoints(dims::Dimension; order)

Like CartesianIndices, but for the point values of the dimension index. Behaves as an Array of Tuple lookup values (whatever they are) for all combinations of the lookup values of dims.

Either a Dimension, a Tuple of Dimension or an object x that defines a dims method can be passed in.

Keywords

  • order: determines the order of the points, the same as the order of dims by default.

source

`,6))]),s[171]||(s[171]=i("h2",{id:"Tables.jl/TableTraits.jl-interface",tabindex:"-1"},[a("Tables.jl/TableTraits.jl interface "),i("a",{class:"header-anchor",href:"#Tables.jl/TableTraits.jl-interface","aria-label":'Permalink to "Tables.jl/TableTraits.jl interface {#Tables.jl/TableTraits.jl-interface}"'},"​")],-1)),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.AbstractDimTable",href:"#DimensionalData.AbstractDimTable"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimTable")],-1)),s[58]||(s[58]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=l('
julia
AbstractDimTable <: Tables.AbstractColumns

Abstract supertype for dim tables

source

',3))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.DimTable",href:"#DimensionalData.DimTable"},[i("span",{class:"jlbinding"},"DimensionalData.DimTable")],-1)),s[61]||(s[61]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[62]||(s[62]=l(`
julia
DimTable <: AbstractDimTable
+DimPoints(dims::Dimension; order)

Like CartesianIndices, but for the point values of the dimension index. Behaves as an Array of Tuple lookup values (whatever they are) for all combinations of the lookup values of dims.

Either a Dimension, a Tuple of Dimension or an object x that defines a dims method can be passed in.

Keywords

  • order: determines the order of the points, the same as the order of dims by default.

source

`,6))]),s[171]||(s[171]=i("h2",{id:"Tables.jl/TableTraits.jl-interface",tabindex:"-1"},[a("Tables.jl/TableTraits.jl interface "),i("a",{class:"header-anchor",href:"#Tables.jl/TableTraits.jl-interface","aria-label":'Permalink to "Tables.jl/TableTraits.jl interface {#Tables.jl/TableTraits.jl-interface}"'},"​")],-1)),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.AbstractDimTable",href:"#DimensionalData.AbstractDimTable"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimTable")],-1)),s[58]||(s[58]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=l('
julia
AbstractDimTable <: Tables.AbstractColumns

Abstract supertype for dim tables

source

',3))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.DimTable",href:"#DimensionalData.DimTable"},[i("span",{class:"jlbinding"},"DimensionalData.DimTable")],-1)),s[61]||(s[61]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[62]||(s[62]=l(`
julia
DimTable <: AbstractDimTable
 
 DimTable(s::AbstractDimStack; mergedims=nothing)
 DimTable(x::AbstractDimArray; layersfrom=nothing, mergedims=nothing)
@@ -283,7 +283,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0
 
-julia>

source

`,10))]),s[172]||(s[172]=i("h1",{id:"Group-by-methods",tabindex:"-1"},[a("Group by methods "),i("a",{class:"header-anchor",href:"#Group-by-methods","aria-label":'Permalink to "Group by methods {#Group-by-methods}"'},"​")],-1)),s[173]||(s[173]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DataAPI.groupby",href:"#DataAPI.groupby"},[i("span",{class:"jlbinding"},"DataAPI.groupby")],-1)),s[64]||(s[64]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=l(`
julia
groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Pair...)
+julia>

source

`,10))]),s[172]||(s[172]=i("h1",{id:"Group-by-methods",tabindex:"-1"},[a("Group by methods "),i("a",{class:"header-anchor",href:"#Group-by-methods","aria-label":'Permalink to "Group by methods {#Group-by-methods}"'},"​")],-1)),s[173]||(s[173]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DataAPI.groupby",href:"#DataAPI.groupby"},[i("span",{class:"jlbinding"},"DataAPI.groupby")],-1)),s[64]||(s[64]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=l(`
julia
groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Pair...)
 groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Dimension{<:Callable}...)

Group A by grouping functions or Bins over multiple dimensions.

Arguments

  • A: any AbstractDimArray or AbstractDimStack.

  • dims: Pairs such as groups = groupby(A, :dimname => groupingfunction) or wrapped Dimensions like groups = groupby(A, DimType(groupingfunction)). Instead of a grouping function Bins can be used to specify group bins.

Return value

A DimGroupByArray is returned, which is basically a regular AbstractDimArray but holding the grouped AbstractDimArray or AbstractDimStack. Its dims hold the sorted values returned by the grouping function/s.

Base julia and package methods work on DimGroupByArray as for any other AbstractArray of AbstractArray.

It is common to broadcast or map a reducing function over groups, such as mean or sum, like mean.(groups) or map(mean, groups). This will return a regular DimArray, or DimGroupByArray if dims keyword is used in the reducing function or it otherwise returns an AbstractDimArray or AbstractDimStack.

Example

Group some data along the time dimension:

julia
julia> using DimensionalData, Dates
 
 julia> A = rand(X(1:0.1:20), Y(1:20), Ti(DateTime(2000):Day(3):DateTime(2003)));
@@ -336,8 +336,8 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 
  10        0.501105     0.500644
  11        0.498606     0.498801
- 12        0.501643     0.499298

source

`,18))]),i("details",I,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.DimGroupByArray",href:"#DimensionalData.DimGroupByArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimGroupByArray")],-1)),s[67]||(s[67]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[68]||(s[68]=l('
julia
DimGroupByArray <: AbstractDimArray

DimGroupByArray is essentially a DimArray but holding the results of a groupby operation.

Its dimensions are the sorted results of the grouping functions used in groupby.

This wrapper allows for specialisations on later broadcast or reducing operations, e.g. for chunk reading with DiskArrays.jl, because we know the data originates from a single array.

source

',5))]),i("details",O,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Bins",href:"#DimensionalData.Bins"},[i("span",{class:"jlbinding"},"DimensionalData.Bins")],-1)),s[70]||(s[70]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=l(`
julia
Bins(f, bins; labels, pad)
-Bins(bins; labels, pad)

Specify bins to reduce groups after applying function f.

  • f: a grouping function of the lookup values, by default identity.

  • bins:

    • an Integer will divide the group values into equally spaced sections.

    • an AbstractArray of values will be treated as exact matches for the return value of f. For example, 1:3 will create 3 bins - 1, 2, 3.

    • an AbstractArray of IntervalSets.Interval can be used to explicitly define the intervals. Overlapping intervals have undefined behaviour.

Keywords

  • pad: fraction of the total interval to pad at each end when Bins contains an Integer. This avoids losing the edge values. Note this is a messy solution - it will often be prefereble to manually specify a Vector of chosen Intervals rather than relying on passing an Integer and pad.

  • labels: a list of descriptive labels for the bins. The labels need to have the same length as bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

`,7))]),i("details",N,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.ranges",href:"#DimensionalData.ranges"},[i("span",{class:"jlbinding"},"DimensionalData.ranges")],-1)),s[73]||(s[73]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=l('
julia
ranges(A::AbstractRange{<:Integer})

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",q,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.intervals",href:"#DimensionalData.intervals"},[i("span",{class:"jlbinding"},"DimensionalData.intervals")],-1)),s[76]||(s[76]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=l('
julia
intervals(A::AbstractRange)

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",z,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.CyclicBins",href:"#DimensionalData.CyclicBins"},[i("span",{class:"jlbinding"},"DimensionalData.CyclicBins")],-1)),s[79]||(s[79]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=l('
julia
CyclicBins(f; cycle, start, step, labels)

Cyclic bins to reduce groups after applying function f. Groups can wrap around the cycle. This is used for grouping in seasons, months and hours but can also be used for custom cycles.

  • f: a grouping function of the lookup values, by default identity.

Keywords

  • cycle: the length of the cycle, in return values of f.

  • start: the start of the cycle: a return value of f.

  • step the number of sequential values to group.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

',7))]),i("details",X,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.seasons",href:"#DimensionalData.seasons"},[i("span",{class:"jlbinding"},"DimensionalData.seasons")],-1)),s[82]||(s[82]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=l('
julia
seasons(; [start=Dates.December, labels])

Generates CyclicBins for three month periods.

Keywords

  • start: By default seasons start in December, but any integer 1:12 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected quarters.

source

',5))]),i("details",Y,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.months",href:"#DimensionalData.months"},[i("span",{class:"jlbinding"},"DimensionalData.months")],-1)),s[85]||(s[85]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=l('
julia
months(step; [start=Dates.January, labels])

Generates CyclicBins for grouping to arbitrary month periods. These can wrap around the end of a year.

  • step the number of months to group.

Keywords

  • start: By default months start in January, but any integer 1:12 can be used.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected months.

source

',6))]),i("details",P,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.hours",href:"#DimensionalData.hours"},[i("span",{class:"jlbinding"},"DimensionalData.hours")],-1)),s[88]||(s[88]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=l('
julia
hours(step; [start=0, labels])

Generates CyclicBins for grouping to arbitrary hour periods. These can wrap around the end of the day.

  • steps the number of hours to group.

Keywords

  • start: By default seasons start at 0, but any integer 1:24 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected hours of the day.

source

',6))]),s[174]||(s[174]=i("h1",{id:"Utility-methods",tabindex:"-1"},[a("Utility methods "),i("a",{class:"header-anchor",href:"#Utility-methods","aria-label":'Permalink to "Utility methods {#Utility-methods}"'},"​")],-1)),s[175]||(s[175]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",R,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.set",href:"#DimensionalData.Dimensions.Lookups.set"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.set")],-1)),s[91]||(s[91]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=l(`
julia
set(x, val)
+ 12        0.501643     0.499298

source

`,18))]),i("details",I,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.DimGroupByArray",href:"#DimensionalData.DimGroupByArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimGroupByArray")],-1)),s[67]||(s[67]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[68]||(s[68]=l('
julia
DimGroupByArray <: AbstractDimArray

DimGroupByArray is essentially a DimArray but holding the results of a groupby operation.

Its dimensions are the sorted results of the grouping functions used in groupby.

This wrapper allows for specialisations on later broadcast or reducing operations, e.g. for chunk reading with DiskArrays.jl, because we know the data originates from a single array.

source

',5))]),i("details",O,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Bins",href:"#DimensionalData.Bins"},[i("span",{class:"jlbinding"},"DimensionalData.Bins")],-1)),s[70]||(s[70]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=l(`
julia
Bins(f, bins; labels, pad)
+Bins(bins; labels, pad)

Specify bins to reduce groups after applying function f.

  • f: a grouping function of the lookup values, by default identity.

  • bins:

    • an Integer will divide the group values into equally spaced sections.

    • an AbstractArray of values will be treated as exact matches for the return value of f. For example, 1:3 will create 3 bins - 1, 2, 3.

    • an AbstractArray of IntervalSets.Interval can be used to explicitly define the intervals. Overlapping intervals have undefined behaviour.

Keywords

  • pad: fraction of the total interval to pad at each end when Bins contains an Integer. This avoids losing the edge values. Note this is a messy solution - it will often be prefereble to manually specify a Vector of chosen Intervals rather than relying on passing an Integer and pad.

  • labels: a list of descriptive labels for the bins. The labels need to have the same length as bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

`,7))]),i("details",N,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.ranges",href:"#DimensionalData.ranges"},[i("span",{class:"jlbinding"},"DimensionalData.ranges")],-1)),s[73]||(s[73]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=l('
julia
ranges(A::AbstractRange{<:Integer})

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",q,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.intervals",href:"#DimensionalData.intervals"},[i("span",{class:"jlbinding"},"DimensionalData.intervals")],-1)),s[76]||(s[76]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=l('
julia
intervals(A::AbstractRange)

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",z,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.CyclicBins",href:"#DimensionalData.CyclicBins"},[i("span",{class:"jlbinding"},"DimensionalData.CyclicBins")],-1)),s[79]||(s[79]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=l('
julia
CyclicBins(f; cycle, start, step, labels)

Cyclic bins to reduce groups after applying function f. Groups can wrap around the cycle. This is used for grouping in seasons, months and hours but can also be used for custom cycles.

  • f: a grouping function of the lookup values, by default identity.

Keywords

  • cycle: the length of the cycle, in return values of f.

  • start: the start of the cycle: a return value of f.

  • step the number of sequential values to group.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

',7))]),i("details",X,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.seasons",href:"#DimensionalData.seasons"},[i("span",{class:"jlbinding"},"DimensionalData.seasons")],-1)),s[82]||(s[82]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=l('
julia
seasons(; [start=Dates.December, labels])

Generates CyclicBins for three month periods.

Keywords

  • start: By default seasons start in December, but any integer 1:12 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected quarters.

source

',5))]),i("details",Y,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.months",href:"#DimensionalData.months"},[i("span",{class:"jlbinding"},"DimensionalData.months")],-1)),s[85]||(s[85]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=l('
julia
months(step; [start=Dates.January, labels])

Generates CyclicBins for grouping to arbitrary month periods. These can wrap around the end of a year.

  • step the number of months to group.

Keywords

  • start: By default months start in January, but any integer 1:12 can be used.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected months.

source

',6))]),i("details",P,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.hours",href:"#DimensionalData.hours"},[i("span",{class:"jlbinding"},"DimensionalData.hours")],-1)),s[88]||(s[88]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=l('
julia
hours(step; [start=0, labels])

Generates CyclicBins for grouping to arbitrary hour periods. These can wrap around the end of the day.

  • steps the number of hours to group.

Keywords

  • start: By default seasons start at 0, but any integer 1:24 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected hours of the day.

source

',6))]),s[174]||(s[174]=i("h1",{id:"Utility-methods",tabindex:"-1"},[a("Utility methods "),i("a",{class:"header-anchor",href:"#Utility-methods","aria-label":'Permalink to "Utility methods {#Utility-methods}"'},"​")],-1)),s[175]||(s[175]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",R,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.set",href:"#DimensionalData.Dimensions.Lookups.set"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.set")],-1)),s[91]||(s[91]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=l(`
julia
set(x, val)
 set(x, args::Pairs...) => x with updated field/s
 set(x, args...; kw...) => x with updated field/s
 set(x, args::Tuple{Vararg{Dimension}}; kw...) => x with updated field/s
@@ -398,11 +398,11 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   -20.0  -10.0  0.0  10.0
  10.0    0.0    0.0  0.0   0.0
  20.0    0.0    0.0  0.0   0.0
- 30.0    0.0    0.0  0.0   0.0

source

`,20))]),i("details",G,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.rebuild",href:"#DimensionalData.Dimensions.Lookups.rebuild"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.rebuild")],-1)),s[94]||(s[94]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=l('
julia
rebuild(x; kw...)

Rebuild an object struct with updated field values.

x can be a AbstractDimArray, a Dimension, Lookup or other custom types.

This is an abstraction that allows inbuilt and custom types to be rebuilt to update their fields, as most objects in DimensionalData.jl are immutable.

Rebuild is mostly automated using ConstructionBase.setproperties. It should only be defined if your object has fields with with different names to DimensionalData objects. Try not to do that!

The arguments required are defined for the abstract type that has a rebuild method.

AbstractBasicDimArray:

  • dims: a Tuple of Dimension

AbstractDimArray:

  • data: the parent object - an AbstractArray

  • dims: a Tuple of Dimension

  • refdims: a Tuple of Dimension

  • name: A Symbol, or NoName and Name on GPU.

  • metadata: A Dict-like object

AbstractDimStack:

  • data: the parent object, often a NamedTuple

  • dims, refdims, metadata

Dimension:

  • val: anything.

Lookup:

  • data: the parent object, an AbstractArray

  • Note: argument rebuild is deprecated on AbstractDimArray and

AbstractDimStack in favour of always using the keyword version. In future the argument version will only be used on Dimension, which only have one argument.

source

',18))]),i("details",V,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.modify",href:"#DimensionalData.modify"},[i("span",{class:"jlbinding"},"DimensionalData.modify")],-1)),s[97]||(s[97]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=l(`
julia
modify(f, A::AbstractDimArray) => AbstractDimArray
+ 30.0    0.0    0.0  0.0   0.0

source

`,20))]),i("details",G,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.rebuild",href:"#DimensionalData.Dimensions.Lookups.rebuild"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.rebuild")],-1)),s[94]||(s[94]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=l('
julia
rebuild(x; kw...)

Rebuild an object struct with updated field values.

x can be a AbstractDimArray, a Dimension, Lookup or other custom types.

This is an abstraction that allows inbuilt and custom types to be rebuilt to update their fields, as most objects in DimensionalData.jl are immutable.

Rebuild is mostly automated using ConstructionBase.setproperties. It should only be defined if your object has fields with with different names to DimensionalData objects. Try not to do that!

The arguments required are defined for the abstract type that has a rebuild method.

AbstractBasicDimArray:

  • dims: a Tuple of Dimension

AbstractDimArray:

  • data: the parent object - an AbstractArray

  • dims: a Tuple of Dimension

  • refdims: a Tuple of Dimension

  • name: A Symbol, or NoName and Name on GPU.

  • metadata: A Dict-like object

AbstractDimStack:

  • data: the parent object, often a NamedTuple

  • dims, refdims, metadata

Dimension:

  • val: anything.

Lookup:

  • data: the parent object, an AbstractArray

  • Note: argument rebuild is deprecated on AbstractDimArray and

AbstractDimStack in favour of always using the keyword version. In future the argument version will only be used on Dimension, which only have one argument.

source

',18))]),i("details",V,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.modify",href:"#DimensionalData.modify"},[i("span",{class:"jlbinding"},"DimensionalData.modify")],-1)),s[97]||(s[97]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=l(`
julia
modify(f, A::AbstractDimArray) => AbstractDimArray
 modify(f, s::AbstractDimStack) => AbstractDimStack
 modify(f, dim::Dimension) => Dimension
 modify(f, x, lookupdim::Dimension) => typeof(x)

Modify the parent data, rebuilding the object wrapper without change. f must return a AbstractArray of the same size as the original.

This method is mostly useful as a way of swapping the parent array type of an object.

Example

If we have a previously-defined DimArray, we can copy it to an Nvidia GPU with:

julia
A = DimArray(rand(100, 100), (X, Y))
-modify(CuArray, A)

This also works for all the data layers in a DimStack.

source

`,8))]),i("details",M,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.@d",href:"#DimensionalData.@d"},[i("span",{class:"jlbinding"},"DimensionalData.@d")],-1)),s[100]||(s[100]=a()),t(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[101]||(s[101]=l(`
julia
@d broadcast_expression options

Dimensional broadcast macro extending Base Julia broadcasting to work with missing and permuted dimensions.

Will permute and reshape singleton dimensions so that all AbstractDimArray in a broadcast will broadcast over matching dimensions.

It is possible to pass options as the second argument of the macro to control the behaviour, as a single assignment or as a NamedTuple. Options names must be written explicitly, not passed in namedtuple variable.

Options

  • dims: Pass a Tuple of Dimensions, Dimension types or Symbols to fix the dimension order of the output array. Otherwise dimensions will be in order of appearance. If dims with lookups are passed, these will be applied to the returned array with set.

  • strict: true or false. Check that all lookup values match explicitly.

All other keywords are passed to DimensionalData.rebuild. This means name, metadata, etc for the returned array can be set here, or for example missingval in Rasters.jl.

Example

julia
using DimensionalData
+modify(CuArray, A)

This also works for all the data layers in a DimStack.

source

`,8))]),i("details",M,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.@d",href:"#DimensionalData.@d"},[i("span",{class:"jlbinding"},"DimensionalData.@d")],-1)),s[100]||(s[100]=a()),t(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[101]||(s[101]=l(`
julia
@d broadcast_expression options

Dimensional broadcast macro extending Base Julia broadcasting to work with missing and permuted dimensions.

Will permute and reshape singleton dimensions so that all AbstractDimArray in a broadcast will broadcast over matching dimensions.

It is possible to pass options as the second argument of the macro to control the behaviour, as a single assignment or as a NamedTuple. Options names must be written explicitly, not passed in namedtuple variable.

Options

  • dims: Pass a Tuple of Dimensions, Dimension types or Symbols to fix the dimension order of the output array. Otherwise dimensions will be in order of appearance. If dims with lookups are passed, these will be applied to the returned array with set.

  • strict: true or false. Check that all lookup values match explicitly.

All other keywords are passed to DimensionalData.rebuild. This means name, metadata, etc for the returned array can be set here, or for example missingval in Rasters.jl.

Example

julia
using DimensionalData
 da1 = ones(X(3))
 da2 = fill(2, Y(4), X(3))
 
@@ -414,7 +414,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 
 @d @. da1 * da2
 # Use parentheses around \`@.\` if you need to pass options
-@d (@. da1 * da2 .+ 5) dims=(Y, X)

source

`,13))]),i("details",U,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.broadcast_dims",href:"#DimensionalData.broadcast_dims"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims")],-1)),s[103]||(s[103]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=l('
julia
broadcast_dims(f, sources::AbstractDimArray...) => AbstractDimArray

Broadcast function f over the AbstractDimArrays in sources, permuting and reshaping dimensions to match where required. The result will contain all the dimensions in all passed in arrays in the order in which they are found.

Arguments

  • sources: AbstractDimArrays to broadcast over with f.

This is like broadcasting over every slice of A if it is sliced by the dimensions of B.

source

',6))]),i("details",Z,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.broadcast_dims!",href:"#DimensionalData.broadcast_dims!"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims!")],-1)),s[106]||(s[106]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=l('
julia
broadcast_dims!(f, dest::AbstractDimArray, sources::AbstractDimArray...) => dest

Broadcast function f over the AbstractDimArrays in sources, writing to dest. sources are permuting and reshaping dimensions to match where required.

The result will contain all the dimensions in all passed in arrays, in the order in which they are found.

Arguments

  • dest: AbstractDimArray to update.

  • sources: AbstractDimArrays to broadcast over with f.

source

',6))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.mergedims",href:"#DimensionalData.mergedims"},[i("span",{class:"jlbinding"},"DimensionalData.mergedims")],-1)),s[109]||(s[109]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[110]||(s[110]=l(`
julia
mergedims(old_dims => new_dim) => Dimension

Return a dimension new_dim whose indices are a MergedLookup of the indices of old_dims.

source

julia
mergedims(dims, old_dims => new_dim, others::Pair...) => dims_new

If dimensions old_dims, new_dim, etc. are found in dims, then return new dims_new where all dims in old_dims have been combined into a single dim new_dim. The returned dimension will keep only the name of new_dim. Its coords will be a MergedLookup of the coords of the dims in old_dims. New dimensions are always placed at the end of dims_new. others contains other dimension pairs to be merged.

Example

julia
julia> using DimensionalData
+@d (@. da1 * da2 .+ 5) dims=(Y, X)

source

`,13))]),i("details",U,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.broadcast_dims",href:"#DimensionalData.broadcast_dims"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims")],-1)),s[103]||(s[103]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=l('
julia
broadcast_dims(f, sources::AbstractDimArray...) => AbstractDimArray

Broadcast function f over the AbstractDimArrays in sources, permuting and reshaping dimensions to match where required. The result will contain all the dimensions in all passed in arrays in the order in which they are found.

Arguments

  • sources: AbstractDimArrays to broadcast over with f.

This is like broadcasting over every slice of A if it is sliced by the dimensions of B.

source

',6))]),i("details",Z,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.broadcast_dims!",href:"#DimensionalData.broadcast_dims!"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims!")],-1)),s[106]||(s[106]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=l('
julia
broadcast_dims!(f, dest::AbstractDimArray, sources::AbstractDimArray...) => dest

Broadcast function f over the AbstractDimArrays in sources, writing to dest. sources are permuting and reshaping dimensions to match where required.

The result will contain all the dimensions in all passed in arrays, in the order in which they are found.

Arguments

  • dest: AbstractDimArray to update.

  • sources: AbstractDimArrays to broadcast over with f.

source

',6))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.mergedims",href:"#DimensionalData.mergedims"},[i("span",{class:"jlbinding"},"DimensionalData.mergedims")],-1)),s[109]||(s[109]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[110]||(s[110]=l(`
julia
mergedims(old_dims => new_dim) => Dimension

Return a dimension new_dim whose indices are a MergedLookup of the indices of old_dims.

source

julia
mergedims(dims, old_dims => new_dim, others::Pair...) => dims_new

If dimensions old_dims, new_dim, etc. are found in dims, then return new dims_new where all dims in old_dims have been combined into a single dim new_dim. The returned dimension will keep only the name of new_dim. Its coords will be a MergedLookup of the coords of the dims in old_dims. New dimensions are always placed at the end of dims_new. others contains other dimension pairs to be merged.

Example

julia
julia> using DimensionalData
 
 julia> ds = (X(0:0.1:0.4), Y(10:10:100), Ti([0, 3, 4]))
 ( X  0.0:0.1:0.4,
@@ -423,9 +423,9 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 
 julia> mergedims(ds, (X, Y) => :space)
 ( Ti    [0, 3, 4],
- space MergedLookup{Tuple{Float64, Int64}} [(0.0, 10), (0.1, 10), , (0.3, 100), (0.4, 100)] ( X,  Y))

source

julia
mergedims(A::AbstractDimArray, dim_pairs::Pair...) => AbstractDimArray
-mergedims(A::AbstractDimStack, dim_pairs::Pair...) => AbstractDimStack

Return a new array or stack whose dimensions are the result of mergedims(dims(A), dim_pairs).

source

`,11))]),i("details",W,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.unmergedims",href:"#DimensionalData.unmergedims"},[i("span",{class:"jlbinding"},"DimensionalData.unmergedims")],-1)),s[112]||(s[112]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[113]||(s[113]=l(`
julia
unmergedims(merged_dims::Tuple{Vararg{Dimension}}) => Tuple{Vararg{Dimension}}

Return the unmerged dimensions from a tuple of merged dimensions. However, the order of the original dimensions are not necessarily preserved.

source

julia
unmergedims(A::AbstractDimArray, original_dims) => AbstractDimArray
-unmergedims(A::AbstractDimStack, original_dims) => AbstractDimStack

Return a new array or stack whose dimensions are restored to their original prior to calling mergedims(A, dim_pairs).

source

`,6))]),i("details",J,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.reorder",href:"#DimensionalData.reorder"},[i("span",{class:"jlbinding"},"DimensionalData.reorder")],-1)),s[115]||(s[115]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[116]||(s[116]=l(`
julia
reorder(A::Union{AbstractDimArray,AbstractDimStack}, order::Pair...)
+ space MergedLookup{Tuple{Float64, Int64}} [(0.0, 10), (0.1, 10), , (0.3, 100), (0.4, 100)] ( X,  Y))

source

julia
mergedims(A::AbstractDimArray, dim_pairs::Pair...) => AbstractDimArray
+mergedims(A::AbstractDimStack, dim_pairs::Pair...) => AbstractDimStack

Return a new array or stack whose dimensions are the result of mergedims(dims(A), dim_pairs).

source

`,11))]),i("details",W,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.unmergedims",href:"#DimensionalData.unmergedims"},[i("span",{class:"jlbinding"},"DimensionalData.unmergedims")],-1)),s[112]||(s[112]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[113]||(s[113]=l(`
julia
unmergedims(merged_dims::Tuple{Vararg{Dimension}}) => Tuple{Vararg{Dimension}}

Return the unmerged dimensions from a tuple of merged dimensions. However, the order of the original dimensions are not necessarily preserved.

source

julia
unmergedims(A::AbstractDimArray, original_dims) => AbstractDimArray
+unmergedims(A::AbstractDimStack, original_dims) => AbstractDimStack

Return a new array or stack whose dimensions are restored to their original prior to calling mergedims(A, dim_pairs).

source

`,6))]),i("details",J,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.reorder",href:"#DimensionalData.reorder"},[i("span",{class:"jlbinding"},"DimensionalData.reorder")],-1)),s[115]||(s[115]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[116]||(s[116]=l(`
julia
reorder(A::Union{AbstractDimArray,AbstractDimStack}, order::Pair...)
 reorder(A::Union{AbstractDimArray,AbstractDimStack}, order)
 reorder(A::Dimension, order::Order)

Reorder every dims index/array to order, or reorder index for the given dimension(s) in order.

order can be an Order, Dimension => Order pairs. A Tuple of Dimensions or any object that defines dims can be used in which case the dimensions of this object are used for reordering.

If no axis reversal is required the same objects will be returned, without allocation.

Example

julia
using DimensionalData
 
@@ -439,7 +439,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 reorder(rev, da) == da
 
 # output
-true

source

`,7))]),s[176]||(s[176]=i("h1",{id:"Global-lookup-strictness-settings",tabindex:"-1"},[a("Global lookup strictness settings "),i("a",{class:"header-anchor",href:"#Global-lookup-strictness-settings","aria-label":'Permalink to "Global lookup strictness settings {#Global-lookup-strictness-settings}"'},"​")],-1)),s[177]||(s[177]=i("p",null,[a("Control how strict DimensionalData when comparing "),i("a",{href:"/DimensionalData.jl/dev/api/lookuparrays#DimensionalData.Dimensions.Lookups.Lookup"},[i("code",null,"Lookup")]),a("s before doing broadcasts and matrix multipications.")],-1)),s[178]||(s[178]=i("p",null,[a("In some cases (especially "),i("code",null,"DimVector"),a(" and small "),i("code",null,"DimArray"),a(") checking lookup values match may be too costly compared to the operations. You can turn check the current setting and turn them on or off with these methods.")],-1)),i("details",$,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.strict_broadcast",href:"#DimensionalData.strict_broadcast"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast")],-1)),s[118]||(s[118]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[119]||(s[119]=l('
julia
strict_broadcast()

Check if strict broadcasting checks are active.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",H,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.strict_broadcast!",href:"#DimensionalData.strict_broadcast!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast!")],-1)),s[121]||(s[121]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[122]||(s[122]=l('
julia
strict_broadcast!(x::Bool)

Set global broadcasting checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",Q,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.strict_matmul",href:"#DimensionalData.strict_matmul"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul")],-1)),s[124]||(s[124]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[125]||(s[125]=l('
julia
strict_matmul()

Check if strickt broadcasting checks are active.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.strict_matmul!",href:"#DimensionalData.strict_matmul!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul!")],-1)),s[127]||(s[127]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[128]||(s[128]=l('
julia
strict_matmul!(x::Bool)

Set global matrix multiplication checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),s[179]||(s[179]=i("p",null,"Base methods",-1)),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"Base.cat",href:"#Base.cat"},[i("span",{class:"jlbinding"},"Base.cat")],-1)),s[130]||(s[130]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[131]||(s[131]=l('
julia
Base.cat(stacks::AbstractDimStack...; [keys=keys(stacks[1])], dims)

Concatenate all or a subset of layers for all passed in stacks.

Keywords

  • keys: Tuple of Symbol for the stack keys to concatenate.

  • dims: Dimension of child array to concatenate on.

Example

Concatenate the :sea_surface_temp and :humidity layers in the time dimension:

julia
cat(stacks...; keys=(:sea_surface_temp, :humidity), dims=Ti)

source

',8))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"Base.copy!",href:"#Base.copy!"},[i("span",{class:"jlbinding"},"Base.copy!")],-1)),s[133]||(s[133]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[134]||(s[134]=l('
julia
Base.copy!(dst::AbstractArray, src::AbstractDimStack, key::Key)

Copy the stack layer key to dst, which can be any AbstractArray.

Example

Copy the :humidity layer from stack to array.

julia
copy!(array, stack, :humidity)

source

julia
Base.copy!(dst::AbstractDimStack, src::AbstractDimStack, [keys=keys(dst)])

Copy all or a subset of layers from one stack to another.

Example

Copy just the :sea_surface_temp and :humidity layers from src to dst.

julia
copy!(dst::AbstractDimStack, src::AbstractDimStack, keys=(:sea_surface_temp, :humidity))

source

',12))]),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"Base.eachslice",href:"#Base.eachslice"},[i("span",{class:"jlbinding"},"Base.eachslice")],-1)),s[136]||(s[136]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[137]||(s[137]=l(`
julia
Base.eachslice(A::AbstractDimArray; dims,drop=true)

Create a generator that iterates over dimensions dims of A, returning arrays that select all the data from the other dimensions in A using views.

The generator has size and axes equivalent to those of the provided dims if drop=true. Otherwise it will have the same dimensionality as the underlying array with inner dimensions having size 1.

source

julia
Base.eachslice(stack::AbstractDimStack; dims, drop=true)

Create a generator that iterates over dimensions dims of stack, returning stacks that select all the data from the other dimensions in stack using views.

The generator has size and axes equivalent to those of the provided dims.

Examples

julia
julia> ds = DimStack((
+true

source

`,7))]),s[176]||(s[176]=i("h1",{id:"Global-lookup-strictness-settings",tabindex:"-1"},[a("Global lookup strictness settings "),i("a",{class:"header-anchor",href:"#Global-lookup-strictness-settings","aria-label":'Permalink to "Global lookup strictness settings {#Global-lookup-strictness-settings}"'},"​")],-1)),s[177]||(s[177]=i("p",null,[a("Control how strict DimensionalData when comparing "),i("a",{href:"/DimensionalData.jl/dev/api/lookuparrays#DimensionalData.Dimensions.Lookups.Lookup"},[i("code",null,"Lookup")]),a("s before doing broadcasts and matrix multipications.")],-1)),s[178]||(s[178]=i("p",null,[a("In some cases (especially "),i("code",null,"DimVector"),a(" and small "),i("code",null,"DimArray"),a(") checking lookup values match may be too costly compared to the operations. You can turn check the current setting and turn them on or off with these methods.")],-1)),i("details",$,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.strict_broadcast",href:"#DimensionalData.strict_broadcast"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast")],-1)),s[118]||(s[118]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[119]||(s[119]=l('
julia
strict_broadcast()

Check if strict broadcasting checks are active.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",H,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.strict_broadcast!",href:"#DimensionalData.strict_broadcast!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast!")],-1)),s[121]||(s[121]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[122]||(s[122]=l('
julia
strict_broadcast!(x::Bool)

Set global broadcasting checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",Q,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.strict_matmul",href:"#DimensionalData.strict_matmul"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul")],-1)),s[124]||(s[124]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[125]||(s[125]=l('
julia
strict_matmul()

Check if strickt broadcasting checks are active.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.strict_matmul!",href:"#DimensionalData.strict_matmul!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul!")],-1)),s[127]||(s[127]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[128]||(s[128]=l('
julia
strict_matmul!(x::Bool)

Set global matrix multiplication checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),s[179]||(s[179]=i("p",null,"Base methods",-1)),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"Base.cat",href:"#Base.cat"},[i("span",{class:"jlbinding"},"Base.cat")],-1)),s[130]||(s[130]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[131]||(s[131]=l('
julia
Base.cat(stacks::AbstractDimStack...; [keys=keys(stacks[1])], dims)

Concatenate all or a subset of layers for all passed in stacks.

Keywords

  • keys: Tuple of Symbol for the stack keys to concatenate.

  • dims: Dimension of child array to concatenate on.

Example

Concatenate the :sea_surface_temp and :humidity layers in the time dimension:

julia
cat(stacks...; keys=(:sea_surface_temp, :humidity), dims=Ti)

source

',8))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"Base.copy!",href:"#Base.copy!"},[i("span",{class:"jlbinding"},"Base.copy!")],-1)),s[133]||(s[133]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[134]||(s[134]=l('
julia
Base.copy!(dst::AbstractArray, src::AbstractDimStack, key::Key)

Copy the stack layer key to dst, which can be any AbstractArray.

Example

Copy the :humidity layer from stack to array.

julia
copy!(array, stack, :humidity)

source

julia
Base.copy!(dst::AbstractDimStack, src::AbstractDimStack, [keys=keys(dst)])

Copy all or a subset of layers from one stack to another.

Example

Copy just the :sea_surface_temp and :humidity layers from src to dst.

julia
copy!(dst::AbstractDimStack, src::AbstractDimStack, keys=(:sea_surface_temp, :humidity))

source

',12))]),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"Base.eachslice",href:"#Base.eachslice"},[i("span",{class:"jlbinding"},"Base.eachslice")],-1)),s[136]||(s[136]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[137]||(s[137]=l(`
julia
Base.eachslice(A::AbstractDimArray; dims,drop=true)

Create a generator that iterates over dimensions dims of A, returning arrays that select all the data from the other dimensions in A using views.

The generator has size and axes equivalent to those of the provided dims if drop=true. Otherwise it will have the same dimensionality as the underlying array with inner dimensions having size 1.

source

julia
Base.eachslice(stack::AbstractDimStack; dims, drop=true)

Create a generator that iterates over dimensions dims of stack, returning stacks that select all the data from the other dimensions in stack using views.

The generator has size and axes equivalent to those of the provided dims.

Examples

julia
julia> ds = DimStack((
            x=DimArray(randn(2, 3, 4), (X([:x1, :x2]), Y(1:3), Z)),
            y=DimArray(randn(2, 3, 5), (X([:x1, :x2]), Y(1:3), Ti))
        ));
@@ -462,13 +462,13 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 ├──────────────────────────────────────────────── layers ┤
   :x eltype: Float64 dims: Y size: 3
   :y eltype: Float64 dims: Y, Ti size: 3×5
-└────────────────────────────────────────────────────────┘

source

`,10))]),s[180]||(s[180]=i("p",null,[a("Most base methods work as expected, using "),i("code",null,"Dimension"),a(" wherever a "),i("code",null,"dims"),a(" keyword is used. They are not all specifically documented here.")],-1)),s[181]||(s[181]=i("h2",{id:"name",tabindex:"-1"},[a("Name "),i("a",{class:"header-anchor",href:"#name","aria-label":'Permalink to "Name"'},"​")],-1)),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.AbstractName",href:"#DimensionalData.AbstractName"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractName")],-1)),s[139]||(s[139]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=l('
julia
AbstractName

Abstract supertype for name wrappers.

source

',3))]),i("details",ts,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Name",href:"#DimensionalData.Name"},[i("span",{class:"jlbinding"},"DimensionalData.Name")],-1)),s[142]||(s[142]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=l(`
julia
Name <: AbstractName
+└────────────────────────────────────────────────────────┘

source

`,10))]),s[180]||(s[180]=i("p",null,[a("Most base methods work as expected, using "),i("code",null,"Dimension"),a(" wherever a "),i("code",null,"dims"),a(" keyword is used. They are not all specifically documented here.")],-1)),s[181]||(s[181]=i("h2",{id:"name",tabindex:"-1"},[a("Name "),i("a",{class:"header-anchor",href:"#name","aria-label":'Permalink to "Name"'},"​")],-1)),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.AbstractName",href:"#DimensionalData.AbstractName"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractName")],-1)),s[139]||(s[139]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=l('
julia
AbstractName

Abstract supertype for name wrappers.

source

',3))]),i("details",ts,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Name",href:"#DimensionalData.Name"},[i("span",{class:"jlbinding"},"DimensionalData.Name")],-1)),s[142]||(s[142]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=l(`
julia
Name <: AbstractName
 
 Name(name::Union{Symbol,Name) => Name
-Name(name::NoName) => NoName

Name wrapper. This lets arrays keep symbol names when the array wrapper needs to be isbits, like for use on GPUs. It makes the name a property of the type. It's not necessary to use in normal use, a symbol is probably easier.

source

`,3))]),i("details",ls,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.NoName",href:"#DimensionalData.NoName"},[i("span",{class:"jlbinding"},"DimensionalData.NoName")],-1)),s[145]||(s[145]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=l(`
julia
NoName <: AbstractName
+Name(name::NoName) => NoName

Name wrapper. This lets arrays keep symbol names when the array wrapper needs to be isbits, like for use on GPUs. It makes the name a property of the type. It's not necessary to use in normal use, a symbol is probably easier.

source

`,3))]),i("details",ls,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.NoName",href:"#DimensionalData.NoName"},[i("span",{class:"jlbinding"},"DimensionalData.NoName")],-1)),s[145]||(s[145]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=l(`
julia
NoName <: AbstractName
 
-NoName()

NoName specifies an array is not named, and is the default name value for all AbstractDimArrays.

source

`,3))]),s[182]||(s[182]=i("h2",{id:"Internal-interface",tabindex:"-1"},[a("Internal interface "),i("a",{class:"header-anchor",href:"#Internal-interface","aria-label":'Permalink to "Internal interface {#Internal-interface}"'},"​")],-1)),i("details",hs,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.DimArrayInterface",href:"#DimensionalData.DimArrayInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimArrayInterface")],-1)),s[148]||(s[148]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=l('
julia
    DimArrayInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_parent_kw, :rebuild_dims_kw, :rebuild) and optional components (:refdims, :name, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches dimensions of array

  • size: length of dims matches dimensions of array

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • name:

    • rebuild updates name in arg rebuild

    • rebuild updates name in kw rebuild

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",es,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.DimStackInterface",href:"#DimensionalData.DimStackInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimStackInterface")],-1)),s[151]||(s[151]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=l('
julia
    DimStackInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_layerdims, :rebuild_dims_kw, :rebuild_parent_kw, :rebuild_layerdims_kw, :rebuild) and optional components (:refdims, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches ndims of stack

  • size: length of dims matches size of stack

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_layerdims: rebuild paaarnet and dims from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_layerdims_kw: rebuild parent from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",ks,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.rebuild_from_arrays",href:"#DimensionalData.rebuild_from_arrays"},[i("span",{class:"jlbinding"},"DimensionalData.rebuild_from_arrays")],-1)),s[154]||(s[154]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[155]||(s[155]=l('
julia
rebuild_from_arrays(s::AbstractDimStack, das::NamedTuple{<:Any,<:Tuple{Vararg{AbstractDimArray}}}; kw...)

Rebuild an AbstractDimStack from a Tuple or NamedTuple of AbstractDimArray and an existing stack.

Keywords

Keywords are simply the fields of the stack object:

  • data

  • dims

  • refdims

  • metadata

  • layerdims

  • layermetadata

source

',6))]),i("details",ps,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.show_main",href:"#DimensionalData.show_main"},[i("span",{class:"jlbinding"},"DimensionalData.show_main")],-1)),s[157]||(s[157]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[158]||(s[158]=l(`
julia
show_main(io::IO, mime, A::AbstractDimArray)
-show_main(io::IO, mime, A::AbstractDimStack)

Interface methods for adding the main part of show

At the least, you likely want to call:

julia
print_top(io, mime, A)

But read the DimensionalData.jl show.jl code for details.

source

`,6))]),i("details",ds,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.show_after",href:"#DimensionalData.show_after"},[i("span",{class:"jlbinding"},"DimensionalData.show_after")],-1)),s[160]||(s[160]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[161]||(s[161]=l(`
julia
show_after(io::IO, mime, A::AbstractDimArray)
-show_after(io::IO, mime, A::AbstractDimStack)

Interface methods for adding additional show text for AbstractDimArray/AbstractDimStack subtypes.

Always include kw to avoid future breaking changes

Additional keywords may be added at any time.

blockwidth is passed in context

julia
blockwidth = get(io, :blockwidth, 10000)

Note - a ANSI box is left unclosed. This method needs to close it, or add more. blockwidth is the maximum length of the inner text.

Most likely you always want to at least close the show blocks with:

julia
print_block_close(io, blockwidth)

But read the DimensionalData.jl show.jl code for details.

source

`,11))]),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.refdims_title",href:"#DimensionalData.refdims_title"},[i("span",{class:"jlbinding"},"DimensionalData.refdims_title")],-1)),s[163]||(s[163]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[164]||(s[164]=l(`
julia
refdims_title(A::AbstractDimArray)
+NoName()

NoName specifies an array is not named, and is the default name value for all AbstractDimArrays.

source

`,3))]),s[182]||(s[182]=i("h2",{id:"Internal-interface",tabindex:"-1"},[a("Internal interface "),i("a",{class:"header-anchor",href:"#Internal-interface","aria-label":'Permalink to "Internal interface {#Internal-interface}"'},"​")],-1)),i("details",hs,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.DimArrayInterface",href:"#DimensionalData.DimArrayInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimArrayInterface")],-1)),s[148]||(s[148]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=l('
julia
    DimArrayInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_parent_kw, :rebuild_dims_kw, :rebuild) and optional components (:refdims, :name, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches dimensions of array

  • size: length of dims matches dimensions of array

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • name:

    • rebuild updates name in arg rebuild

    • rebuild updates name in kw rebuild

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",es,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.DimStackInterface",href:"#DimensionalData.DimStackInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimStackInterface")],-1)),s[151]||(s[151]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=l('
julia
    DimStackInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_layerdims, :rebuild_dims_kw, :rebuild_parent_kw, :rebuild_layerdims_kw, :rebuild) and optional components (:refdims, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches ndims of stack

  • size: length of dims matches size of stack

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_layerdims: rebuild paaarnet and dims from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_layerdims_kw: rebuild parent from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",ks,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.rebuild_from_arrays",href:"#DimensionalData.rebuild_from_arrays"},[i("span",{class:"jlbinding"},"DimensionalData.rebuild_from_arrays")],-1)),s[154]||(s[154]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[155]||(s[155]=l('
julia
rebuild_from_arrays(s::AbstractDimStack, das::NamedTuple{<:Any,<:Tuple{Vararg{AbstractDimArray}}}; kw...)

Rebuild an AbstractDimStack from a Tuple or NamedTuple of AbstractDimArray and an existing stack.

Keywords

Keywords are simply the fields of the stack object:

  • data

  • dims

  • refdims

  • metadata

  • layerdims

  • layermetadata

source

',6))]),i("details",ps,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.show_main",href:"#DimensionalData.show_main"},[i("span",{class:"jlbinding"},"DimensionalData.show_main")],-1)),s[157]||(s[157]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[158]||(s[158]=l(`
julia
show_main(io::IO, mime, A::AbstractDimArray)
+show_main(io::IO, mime, A::AbstractDimStack)

Interface methods for adding the main part of show

At the least, you likely want to call:

julia
print_top(io, mime, A)

But read the DimensionalData.jl show.jl code for details.

source

`,6))]),i("details",ds,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.show_after",href:"#DimensionalData.show_after"},[i("span",{class:"jlbinding"},"DimensionalData.show_after")],-1)),s[160]||(s[160]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[161]||(s[161]=l(`
julia
show_after(io::IO, mime, A::AbstractDimArray)
+show_after(io::IO, mime, A::AbstractDimStack)

Interface methods for adding additional show text for AbstractDimArray/AbstractDimStack subtypes.

Always include kw to avoid future breaking changes

Additional keywords may be added at any time.

blockwidth is passed in context

julia
blockwidth = get(io, :blockwidth, 10000)

Note - a ANSI box is left unclosed. This method needs to close it, or add more. blockwidth is the maximum length of the inner text.

Most likely you always want to at least close the show blocks with:

julia
print_block_close(io, blockwidth)

But read the DimensionalData.jl show.jl code for details.

source

`,11))]),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.refdims_title",href:"#DimensionalData.refdims_title"},[i("span",{class:"jlbinding"},"DimensionalData.refdims_title")],-1)),s[163]||(s[163]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[164]||(s[164]=l(`
julia
refdims_title(A::AbstractDimArray)
 refdims_title(refdims::Tuple)
-refdims_title(refdim::Dimension)

Generate a title string based on reference dimension values.

source

`,3))])])}const us=h(d,[["render",os]]);export{ms as __pageData,us as default}; +refdims_title(refdim::Dimension)

Generate a title string based on reference dimension values.

source

`,3))])])}const us=h(d,[["render",os]]);export{ms as __pageData,us as default}; diff --git a/dev/assets/api_reference.md.BrbldTqp.lean.js b/dev/assets/api_reference.md.DP_ai0mp.lean.js similarity index 98% rename from dev/assets/api_reference.md.BrbldTqp.lean.js rename to dev/assets/api_reference.md.DP_ai0mp.lean.js index 732c59f7b..77504d991 100644 --- a/dev/assets/api_reference.md.BrbldTqp.lean.js +++ b/dev/assets/api_reference.md.DP_ai0mp.lean.js @@ -1,4 +1,4 @@ -import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framework.Brp_kw4H.js";const ms=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/reference.md","filePath":"api/reference.md","lastUpdated":null}'),d={name:"api/reference.md"},r={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""};function os(Es,s,gs,ys,cs,Fs){const n=e("Badge");return k(),p("div",null,[s[165]||(s[165]=i("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),i("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[166]||(s[166]=i("h2",{id:"arrays",tabindex:"-1"},[a("Arrays "),i("a",{class:"header-anchor",href:"#arrays","aria-label":'Permalink to "Arrays"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.AbstractBasicDimArray",href:"#DimensionalData.AbstractBasicDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractBasicDimArray")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=l('
julia
AbstractBasicDimArray <: AbstractArray

The abstract supertype for all arrays with a dims method that returns a Tuple of Dimension

Only keyword rebuild is guaranteed to work with AbstractBasicDimArray.

source

',4))]),i("details",o,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.AbstractDimArray",href:"#DimensionalData.AbstractDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimArray")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=l('
julia
AbstractDimArray <: AbstractBasicArray

Abstract supertype for all "dim" arrays.

These arrays return a Tuple of Dimension from a dims method, and can be rebuilt using rebuild.

parent must return the source array.

They should have metadata, name and refdims methods, although these are optional.

A rebuild method for AbstractDimArray must accept data, dims, refdims, name, metadata arguments.

Indexing AbstractDimArray with non-range AbstractArray has undefined effects on the Dimension index. Use forward-ordered arrays only"

source

',8))]),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.DimArray",href:"#DimensionalData.DimArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimArray")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=l(`
julia
DimArray <: AbstractDimArray
+import{_ as h,c as e,j as i,a,G as t,a4 as l,B as k,o as p}from"./chunks/framework.60YQGL-0.js";const ms=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/reference.md","filePath":"api/reference.md","lastUpdated":null}'),d={name:"api/reference.md"},r={class:"jldocstring custom-block",open:""},o={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ns={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""},hs={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},ks={class:"jldocstring custom-block",open:""},ps={class:"jldocstring custom-block",open:""},ds={class:"jldocstring custom-block",open:""},rs={class:"jldocstring custom-block",open:""};function os(Es,s,gs,ys,cs,Fs){const n=k("Badge");return p(),e("div",null,[s[165]||(s[165]=i("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),i("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[166]||(s[166]=i("h2",{id:"arrays",tabindex:"-1"},[a("Arrays "),i("a",{class:"header-anchor",href:"#arrays","aria-label":'Permalink to "Arrays"'},"​")],-1)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"DimensionalData.AbstractBasicDimArray",href:"#DimensionalData.AbstractBasicDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractBasicDimArray")],-1)),s[1]||(s[1]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=l('
julia
AbstractBasicDimArray <: AbstractArray

The abstract supertype for all arrays with a dims method that returns a Tuple of Dimension

Only keyword rebuild is guaranteed to work with AbstractBasicDimArray.

source

',4))]),i("details",o,[i("summary",null,[s[3]||(s[3]=i("a",{id:"DimensionalData.AbstractDimArray",href:"#DimensionalData.AbstractDimArray"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimArray")],-1)),s[4]||(s[4]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[5]||(s[5]=l('
julia
AbstractDimArray <: AbstractBasicArray

Abstract supertype for all "dim" arrays.

These arrays return a Tuple of Dimension from a dims method, and can be rebuilt using rebuild.

parent must return the source array.

They should have metadata, name and refdims methods, although these are optional.

A rebuild method for AbstractDimArray must accept data, dims, refdims, name, metadata arguments.

Indexing AbstractDimArray with non-range AbstractArray has undefined effects on the Dimension index. Use forward-ordered arrays only"

source

',8))]),i("details",E,[i("summary",null,[s[6]||(s[6]=i("a",{id:"DimensionalData.DimArray",href:"#DimensionalData.DimArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimArray")],-1)),s[7]||(s[7]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[8]||(s[8]=l(`
julia
DimArray <: AbstractDimArray
 
 DimArray(data, dims, refdims, name, metadata)
 DimArray(data, dims::Tuple; refdims=(), name=NoName(), metadata=NoMetadata())
@@ -38,7 +38,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   1        2
  1     (1, 1)   (1, 2)
  2     (2, 1)   (2, 2)
- 3     (3, 1)   (3, 2)

source

`,13))]),s[167]||(s[167]=i("p",null,[a("Shorthand "),i("code",null,"AbstractDimArray"),a(" constructors:")],-1)),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"Base.fill",href:"#Base.fill"},[i("span",{class:"jlbinding"},"Base.fill")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=l(`
julia
Base.fill(x, dims::Dimension...; kw...) => DimArray
+ 3     (3, 1)   (3, 2)

source

`,13))]),s[167]||(s[167]=i("p",null,[a("Shorthand "),i("code",null,"AbstractDimArray"),a(" constructors:")],-1)),i("details",g,[i("summary",null,[s[9]||(s[9]=i("a",{id:"Base.fill",href:"#Base.fill"},[i("span",{class:"jlbinding"},"Base.fill")],-1)),s[10]||(s[10]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[11]||(s[11]=l(`
julia
Base.fill(x, dims::Dimension...; kw...) => DimArray
 Base.fill(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray with a fill value of x.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData, Random; Random.seed!(123);
 
 julia> fill(true, X(2), Y(4))
@@ -48,7 +48,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
  X,  Y
 └───────────────────────┘
  1  1  1  1
- 1  1  1  1

source

`,8))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"Base.rand",href:"#Base.rand"},[i("span",{class:"jlbinding"},"Base.rand")],-1)),s[13]||(s[13]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=l(`
julia
Base.rand(x, dims::Dimension...; kw...) => DimArray
+ 1  1  1  1

source

`,8))]),i("details",y,[i("summary",null,[s[12]||(s[12]=i("a",{id:"Base.rand",href:"#Base.rand"},[i("span",{class:"jlbinding"},"Base.rand")],-1)),s[13]||(s[13]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[14]||(s[14]=l(`
julia
Base.rand(x, dims::Dimension...; kw...) => DimArray
 Base.rand(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray
 Base.rand(r::AbstractRNG, x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray
 Base.rand(r::AbstractRNG, x, dims::Dimension...; kw...) => DimArray

Create a DimArray of random values.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
@@ -72,7 +72,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   100.0       150.0       200.0
   :a    0.443494    0.253849    0.867547
   :b    0.745673    0.334152    0.0802658
-  :c    0.512083    0.427328    0.311448

source

`,8))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"Base.zeros",href:"#Base.zeros"},[i("span",{class:"jlbinding"},"Base.zeros")],-1)),s[16]||(s[16]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[17]||(s[17]=l(`
julia
Base.zeros(x, dims::Dimension...; kw...) => DimArray
+  :c    0.512083    0.427328    0.311448

source

`,8))]),i("details",c,[i("summary",null,[s[15]||(s[15]=i("a",{id:"Base.zeros",href:"#Base.zeros"},[i("span",{class:"jlbinding"},"Base.zeros")],-1)),s[16]||(s[16]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[17]||(s[17]=l(`
julia
Base.zeros(x, dims::Dimension...; kw...) => DimArray
 Base.zeros(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray of zeros.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
 
 julia> zeros(Bool, X(2), Y(4))
@@ -94,7 +94,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   100.0  150.0  200.0
   :a    0.0    0.0    0.0
   :b    0.0    0.0    0.0
-  :c    0.0    0.0    0.0

source

`,8))]),i("details",F,[i("summary",null,[s[18]||(s[18]=i("a",{id:"Base.ones",href:"#Base.ones"},[i("span",{class:"jlbinding"},"Base.ones")],-1)),s[19]||(s[19]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[20]||(s[20]=l(`
julia
Base.ones(x, dims::Dimension...; kw...) => DimArray
+  :c    0.0    0.0    0.0

source

`,8))]),i("details",F,[i("summary",null,[s[18]||(s[18]=i("a",{id:"Base.ones",href:"#Base.ones"},[i("span",{class:"jlbinding"},"Base.ones")],-1)),s[19]||(s[19]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[20]||(s[20]=l(`
julia
Base.ones(x, dims::Dimension...; kw...) => DimArray
 Base.ones(x, dims::Tuple{Vararg{Dimension}}; kw...) => DimArray

Create a DimArray of ones.

There are two kinds of Dimension value acepted:

  • A Dimension holding an AbstractVector will set the dimension index to that AbstractVector, and detect the dimension lookup.

  • A Dimension holding an Integer will set the length of the axis, and set the dimension lookup to NoLookup.

Keywords are the same as for DimArray.

Example

julia
julia> using DimensionalData
 
 julia> ones(Bool, X(2), Y(4))
@@ -116,8 +116,8 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   100.0  150.0  200.0
   :a    1.0    1.0    1.0
   :b    1.0    1.0    1.0
-  :c    1.0    1.0    1.0

source

`,8))]),s[168]||(s[168]=i("p",null,"Functions for getting information from objects:",-1)),i("details",C,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.dims",href:"#DimensionalData.Dimensions.dims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[22]||(s[22]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=l(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
+  :c    1.0    1.0    1.0

source

`,8))]),s[168]||(s[168]=i("p",null,"Functions for getting information from objects:",-1)),i("details",C,[i("summary",null,[s[21]||(s[21]=i("a",{id:"DimensionalData.Dimensions.dims",href:"#DimensionalData.Dimensions.dims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dims")],-1)),s[22]||(s[22]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[23]||(s[23]=l(`
julia
dims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+dims(x, dim) => Dimension

Return a tuple of Dimensions for an object, in the order that matches the axes or columns of the underlying data.

dims can be Dimension, Dimension types, or Symbols for Dim{Symbol}.

The default is to return nothing.

source

julia
dims(x, query) => Tuple{Vararg{Dimension}}
 dims(x, query...) => Tuple{Vararg{Dimension}}

Get the dimension(s) matching the type(s) of the query dimension.

Lookup can be an Int or an Dimension, or a tuple containing any combination of either.

Arguments

  • x: any object with a dims method, or a Tuple of Dimension.

  • query: Tuple or a single Dimension or Dimension Type.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(2, 3, 2), (X, Y, Z))
@@ -131,13 +131,13 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
  1.0  1.0  1.0
 
 julia> dims(A, (X, Y))
-( X,  Y)

source

`,13))]),i("details",m,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.refdims",href:"#DimensionalData.Dimensions.refdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.refdims")],-1)),s[25]||(s[25]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=l(`
julia
refdims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
-refdims(x, dim) => Dimension

Reference dimensions for an array that is a slice or view of another array with more dimensions.

slicedims(a, dims) returns a tuple containing the current new dimensions and the new reference dimensions. Refdims can be stored in a field or discarded, as it is mostly to give context to plots. Ignoring refdims will simply leave some captions empty.

The default is to return an empty Tuple ().

source

`,5))]),i("details",u,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.metadata",href:"#DimensionalData.Dimensions.Lookups.metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.metadata")],-1)),s[28]||(s[28]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=l(`
julia
metadata(x) => (object metadata)
+( X,  Y)

source

`,13))]),i("details",m,[i("summary",null,[s[24]||(s[24]=i("a",{id:"DimensionalData.Dimensions.refdims",href:"#DimensionalData.Dimensions.refdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.refdims")],-1)),s[25]||(s[25]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=l(`
julia
refdims(x, [dims::Tuple]) => Tuple{Vararg{Dimension}}
+refdims(x, dim) => Dimension

Reference dimensions for an array that is a slice or view of another array with more dimensions.

slicedims(a, dims) returns a tuple containing the current new dimensions and the new reference dimensions. Refdims can be stored in a field or discarded, as it is mostly to give context to plots. Ignoring refdims will simply leave some captions empty.

The default is to return an empty Tuple ().

source

`,5))]),i("details",u,[i("summary",null,[s[27]||(s[27]=i("a",{id:"DimensionalData.Dimensions.Lookups.metadata",href:"#DimensionalData.Dimensions.Lookups.metadata"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.metadata")],-1)),s[28]||(s[28]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[29]||(s[29]=l(`
julia
metadata(x) => (object metadata)
 metadata(x, dims::Tuple)  => Tuple (Dimension metadata)
-metadata(xs::Tuple) => Tuple

Returns the metadata for an object or for the specified dimension(s)

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",D,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.name",href:"#DimensionalData.Dimensions.name"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name")],-1)),s[31]||(s[31]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[32]||(s[32]=l(`
julia
name(x) => Symbol
+metadata(xs::Tuple) => Tuple

Returns the metadata for an object or for the specified dimension(s)

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",D,[i("summary",null,[s[30]||(s[30]=i("a",{id:"DimensionalData.Dimensions.name",href:"#DimensionalData.Dimensions.name"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.name")],-1)),s[31]||(s[31]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[32]||(s[32]=l(`
julia
name(x) => Symbol
 name(xs:Tuple) => NTuple{N,Symbol}
 name(x, dims::Tuple) => NTuple{N,Symbol}
-name(x, dim) => Symbol

Get the name of an array or Dimension, or a tuple of of either as a Symbol.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.otherdims",href:"#DimensionalData.Dimensions.otherdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[34]||(s[34]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[35]||(s[35]=l(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
+name(x, dim) => Symbol

Get the name of an array or Dimension, or a tuple of of either as a Symbol.

Second argument dims can be Dimensions, Dimension types, or Symbols for Dim{Symbol}.

source

`,4))]),i("details",b,[i("summary",null,[s[33]||(s[33]=i("a",{id:"DimensionalData.Dimensions.otherdims",href:"#DimensionalData.Dimensions.otherdims"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.otherdims")],-1)),s[34]||(s[34]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[35]||(s[35]=l(`
julia
otherdims(x, query) => Tuple{Vararg{Dimension,N}}

Get the dimensions of an object not in query.

Arguments

  • x: any object with a dims method, a Tuple of Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

A tuple holding the unmatched dimensions is always returned.

Example

julia
julia> using DimensionalData, DimensionalData.Dimensions
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
 
@@ -145,7 +145,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 ( Y,  Z)
 
 julia> otherdims(A, (Y, Z))
-( X)

source

`,8))]),i("details",B,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.dimnum",href:"#DimensionalData.Dimensions.dimnum"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[37]||(s[37]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=l(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
+( X)

source

`,8))]),i("details",B,[i("summary",null,[s[36]||(s[36]=i("a",{id:"DimensionalData.Dimensions.dimnum",href:"#DimensionalData.Dimensions.dimnum"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.dimnum")],-1)),s[37]||(s[37]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[38]||(s[38]=l(`
julia
dimnum(x, query::Tuple) => NTuple{Int}
 dimnum(x, query) => Int

Get the number(s) of Dimension(s) as ordered in the dimensions of an object.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple, Array or single Dimension or dimension Type.

The return type will be a Tuple of Int or a single Int, depending on whether query is a Tuple or single Dimension.

Example

julia
julia> using DimensionalData
 
 julia> A = DimArray(ones(10, 10, 10), (X, Y, Z));
@@ -154,7 +154,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 (3, 1, 2)
 
 julia> dimnum(A, Y)
-2

source

`,8))]),i("details",A,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.hasdim",href:"#DimensionalData.Dimensions.hasdim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[40]||(s[40]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=l(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
+2

source

`,8))]),i("details",A,[i("summary",null,[s[39]||(s[39]=i("a",{id:"DimensionalData.Dimensions.hasdim",href:"#DimensionalData.Dimensions.hasdim"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.hasdim")],-1)),s[40]||(s[40]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[41]||(s[41]=l(`
julia
hasdim([f], x, query::Tuple) => NTuple{Bool}
 hasdim([f], x, query...) => NTuple{Bool}
 hasdim([f], x, query) => Bool

Check if an object x has dimensions that match or inherit from the query dimensions.

Arguments

  • x: any object with a dims method, a Tuple of Dimension or a single Dimension.

  • query: Tuple or single Dimension or dimension Type.

  • f: <: by default, but can be >: to match abstract types to concrete types.

Check if an object or tuple contains an Dimension, or a tuple of dimensions.

Example

julia
julia> using DimensionalData
 
@@ -167,7 +167,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 (true, true, true)
 
 julia> hasdim(A, Ti)
-false

source

`,8))]),s[169]||(s[169]=i("h2",{id:"Multi-array-datasets",tabindex:"-1"},[a("Multi-array datasets "),i("a",{class:"header-anchor",href:"#Multi-array-datasets","aria-label":'Permalink to "Multi-array datasets {#Multi-array-datasets}"'},"​")],-1)),i("details",f,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.AbstractDimStack",href:"#DimensionalData.AbstractDimStack"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimStack")],-1)),s[43]||(s[43]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=l('
julia
AbstractDimStack

Abstract supertype for dimensional stacks.

These have multiple layers of data, but share dimensions.

Notably, their behaviour lies somewhere between a DimArray and a NamedTuple:

  • indexing with a Symbol as in dimstack[:symbol] returns a DimArray layer.

  • iteration and map apply over array layers, as indexed with a Symbol.

  • getindex and many base methods are applied as for DimArray - to avoid the need to always use map.

This design gives very succinct code when working with many-layered, mixed-dimension objects. But it may be jarring initially - the most surprising outcome is that dimstack[1] will return a NamedTuple of values for the first index in all layers, while first(dimstack) will return the first value of the iterator - the DimArray for the first layer.

See DimStack for the concrete implementation. Most methods are defined on the abstract type.

To extend AbstractDimStack, implement argument and keyword version of rebuild and also rebuild_from_arrays.

The constructor of an AbstractDimStack must accept a NamedTuple.

source

',10))]),i("details",j,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.DimStack",href:"#DimensionalData.DimStack"},[i("span",{class:"jlbinding"},"DimensionalData.DimStack")],-1)),s[46]||(s[46]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=l(`
julia
DimStack <: AbstractDimStack
+false

source

`,8))]),s[169]||(s[169]=i("h2",{id:"Multi-array-datasets",tabindex:"-1"},[a("Multi-array datasets "),i("a",{class:"header-anchor",href:"#Multi-array-datasets","aria-label":'Permalink to "Multi-array datasets {#Multi-array-datasets}"'},"​")],-1)),i("details",f,[i("summary",null,[s[42]||(s[42]=i("a",{id:"DimensionalData.AbstractDimStack",href:"#DimensionalData.AbstractDimStack"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimStack")],-1)),s[43]||(s[43]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[44]||(s[44]=l('
julia
AbstractDimStack

Abstract supertype for dimensional stacks.

These have multiple layers of data, but share dimensions.

Notably, their behaviour lies somewhere between a DimArray and a NamedTuple:

  • indexing with a Symbol as in dimstack[:symbol] returns a DimArray layer.

  • iteration and map apply over array layers, as indexed with a Symbol.

  • getindex and many base methods are applied as for DimArray - to avoid the need to always use map.

This design gives very succinct code when working with many-layered, mixed-dimension objects. But it may be jarring initially - the most surprising outcome is that dimstack[1] will return a NamedTuple of values for the first index in all layers, while first(dimstack) will return the first value of the iterator - the DimArray for the first layer.

See DimStack for the concrete implementation. Most methods are defined on the abstract type.

To extend AbstractDimStack, implement argument and keyword version of rebuild and also rebuild_from_arrays.

The constructor of an AbstractDimStack must accept a NamedTuple.

source

',10))]),i("details",j,[i("summary",null,[s[45]||(s[45]=i("a",{id:"DimensionalData.DimStack",href:"#DimensionalData.DimStack"},[i("span",{class:"jlbinding"},"DimensionalData.DimStack")],-1)),s[46]||(s[46]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[47]||(s[47]=l(`
julia
DimStack <: AbstractDimStack
 
 DimStack(data::AbstractDimArray...; kw...)
 DimStack(data::Tuple{Vararg{AbstractDimArray}}; kw...)
@@ -194,7 +194,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 (one = 4.0, two = 8.0, three = 12.0)
 
 julia> s[X(At(:a))] isa DimStack
-true

source

`,16))]),s[170]||(s[170]=i("h2",{id:"Dimension-generators",tabindex:"-1"},[a("Dimension generators "),i("a",{class:"header-anchor",href:"#Dimension-generators","aria-label":'Permalink to "Dimension generators {#Dimension-generators}"'},"​")],-1)),i("details",v,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.DimIndices",href:"#DimensionalData.DimIndices"},[i("span",{class:"jlbinding"},"DimensionalData.DimIndices")],-1)),s[49]||(s[49]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=l(`
julia
DimIndices <: AbstractArray
+true

source

`,16))]),s[170]||(s[170]=i("h2",{id:"Dimension-generators",tabindex:"-1"},[a("Dimension generators "),i("a",{class:"header-anchor",href:"#Dimension-generators","aria-label":'Permalink to "Dimension generators {#Dimension-generators}"'},"​")],-1)),i("details",v,[i("summary",null,[s[48]||(s[48]=i("a",{id:"DimensionalData.DimIndices",href:"#DimensionalData.DimIndices"},[i("span",{class:"jlbinding"},"DimensionalData.DimIndices")],-1)),s[49]||(s[49]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[50]||(s[50]=l(`
julia
DimIndices <: AbstractArray
 
 DimIndices(x)
 DimIndices(dims::Tuple)
@@ -231,7 +231,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 └─────────────────────────────────────────────────────────────────┘
    'a'       'c'
  0.0  0.9063    0.0991336
- 0.6  0.745673  0.692209

source

`,9))]),i("details",x,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.DimSelectors",href:"#DimensionalData.DimSelectors"},[i("span",{class:"jlbinding"},"DimensionalData.DimSelectors")],-1)),s[52]||(s[52]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=l(`
julia
DimSelectors <: AbstractArray
+ 0.6  0.745673  0.692209

source

`,9))]),i("details",x,[i("summary",null,[s[51]||(s[51]=i("a",{id:"DimensionalData.DimSelectors",href:"#DimensionalData.DimSelectors"},[i("span",{class:"jlbinding"},"DimensionalData.DimSelectors")],-1)),s[52]||(s[52]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[53]||(s[53]=l(`
julia
DimSelectors <: AbstractArray
 
 DimSelectors(x; selectors, atol...)
 DimSelectors(dims::Tuple; selectors, atol...)
@@ -249,11 +249,11 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   1.0        11.0       21.0
   1.0  0.691162    0.218579   0.539076
  10.0  0.0303789   0.420756   0.485687
- 22.0  0.0967863   0.864856   0.870485

Using At would make sure we only use exact interpolation, while Contains with sampling of Intervals would make sure that each values is taken only from an Interval that is present in the lookups.

source

`,10))]),i("details",w,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.DimPoints",href:"#DimensionalData.DimPoints"},[i("span",{class:"jlbinding"},"DimensionalData.DimPoints")],-1)),s[55]||(s[55]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=l(`
julia
DimPoints <: AbstractArray
+ 22.0  0.0967863   0.864856   0.870485

Using At would make sure we only use exact interpolation, while Contains with sampling of Intervals would make sure that each values is taken only from an Interval that is present in the lookups.

source

`,10))]),i("details",w,[i("summary",null,[s[54]||(s[54]=i("a",{id:"DimensionalData.DimPoints",href:"#DimensionalData.DimPoints"},[i("span",{class:"jlbinding"},"DimensionalData.DimPoints")],-1)),s[55]||(s[55]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=l(`
julia
DimPoints <: AbstractArray
 
 DimPoints(x; order)
 DimPoints(dims::Tuple; order)
-DimPoints(dims::Dimension; order)

Like CartesianIndices, but for the point values of the dimension index. Behaves as an Array of Tuple lookup values (whatever they are) for all combinations of the lookup values of dims.

Either a Dimension, a Tuple of Dimension or an object x that defines a dims method can be passed in.

Keywords

  • order: determines the order of the points, the same as the order of dims by default.

source

`,6))]),s[171]||(s[171]=i("h2",{id:"Tables.jl/TableTraits.jl-interface",tabindex:"-1"},[a("Tables.jl/TableTraits.jl interface "),i("a",{class:"header-anchor",href:"#Tables.jl/TableTraits.jl-interface","aria-label":'Permalink to "Tables.jl/TableTraits.jl interface {#Tables.jl/TableTraits.jl-interface}"'},"​")],-1)),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.AbstractDimTable",href:"#DimensionalData.AbstractDimTable"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimTable")],-1)),s[58]||(s[58]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=l('
julia
AbstractDimTable <: Tables.AbstractColumns

Abstract supertype for dim tables

source

',3))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.DimTable",href:"#DimensionalData.DimTable"},[i("span",{class:"jlbinding"},"DimensionalData.DimTable")],-1)),s[61]||(s[61]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[62]||(s[62]=l(`
julia
DimTable <: AbstractDimTable
+DimPoints(dims::Dimension; order)

Like CartesianIndices, but for the point values of the dimension index. Behaves as an Array of Tuple lookup values (whatever they are) for all combinations of the lookup values of dims.

Either a Dimension, a Tuple of Dimension or an object x that defines a dims method can be passed in.

Keywords

  • order: determines the order of the points, the same as the order of dims by default.

source

`,6))]),s[171]||(s[171]=i("h2",{id:"Tables.jl/TableTraits.jl-interface",tabindex:"-1"},[a("Tables.jl/TableTraits.jl interface "),i("a",{class:"header-anchor",href:"#Tables.jl/TableTraits.jl-interface","aria-label":'Permalink to "Tables.jl/TableTraits.jl interface {#Tables.jl/TableTraits.jl-interface}"'},"​")],-1)),i("details",T,[i("summary",null,[s[57]||(s[57]=i("a",{id:"DimensionalData.AbstractDimTable",href:"#DimensionalData.AbstractDimTable"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractDimTable")],-1)),s[58]||(s[58]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[59]||(s[59]=l('
julia
AbstractDimTable <: Tables.AbstractColumns

Abstract supertype for dim tables

source

',3))]),i("details",L,[i("summary",null,[s[60]||(s[60]=i("a",{id:"DimensionalData.DimTable",href:"#DimensionalData.DimTable"},[i("span",{class:"jlbinding"},"DimensionalData.DimTable")],-1)),s[61]||(s[61]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[62]||(s[62]=l(`
julia
DimTable <: AbstractDimTable
 
 DimTable(s::AbstractDimStack; mergedims=nothing)
 DimTable(x::AbstractDimArray; layersfrom=nothing, mergedims=nothing)
@@ -283,7 +283,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0     1.0  1.0  1.0  1.0  1.0  1.0  1.0
  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0  1.0
 
-julia>

source

`,10))]),s[172]||(s[172]=i("h1",{id:"Group-by-methods",tabindex:"-1"},[a("Group by methods "),i("a",{class:"header-anchor",href:"#Group-by-methods","aria-label":'Permalink to "Group by methods {#Group-by-methods}"'},"​")],-1)),s[173]||(s[173]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DataAPI.groupby",href:"#DataAPI.groupby"},[i("span",{class:"jlbinding"},"DataAPI.groupby")],-1)),s[64]||(s[64]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=l(`
julia
groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Pair...)
+julia>

source

`,10))]),s[172]||(s[172]=i("h1",{id:"Group-by-methods",tabindex:"-1"},[a("Group by methods "),i("a",{class:"header-anchor",href:"#Group-by-methods","aria-label":'Permalink to "Group by methods {#Group-by-methods}"'},"​")],-1)),s[173]||(s[173]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",S,[i("summary",null,[s[63]||(s[63]=i("a",{id:"DataAPI.groupby",href:"#DataAPI.groupby"},[i("span",{class:"jlbinding"},"DataAPI.groupby")],-1)),s[64]||(s[64]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[65]||(s[65]=l(`
julia
groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Pair...)
 groupby(A::Union{AbstractDimArray,AbstractDimStack}, dims::Dimension{<:Callable}...)

Group A by grouping functions or Bins over multiple dimensions.

Arguments

  • A: any AbstractDimArray or AbstractDimStack.

  • dims: Pairs such as groups = groupby(A, :dimname => groupingfunction) or wrapped Dimensions like groups = groupby(A, DimType(groupingfunction)). Instead of a grouping function Bins can be used to specify group bins.

Return value

A DimGroupByArray is returned, which is basically a regular AbstractDimArray but holding the grouped AbstractDimArray or AbstractDimStack. Its dims hold the sorted values returned by the grouping function/s.

Base julia and package methods work on DimGroupByArray as for any other AbstractArray of AbstractArray.

It is common to broadcast or map a reducing function over groups, such as mean or sum, like mean.(groups) or map(mean, groups). This will return a regular DimArray, or DimGroupByArray if dims keyword is used in the reducing function or it otherwise returns an AbstractDimArray or AbstractDimStack.

Example

Group some data along the time dimension:

julia
julia> using DimensionalData, Dates
 
 julia> A = rand(X(1:0.1:20), Y(1:20), Ti(DateTime(2000):Day(3):DateTime(2003)));
@@ -336,8 +336,8 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 
  10        0.501105     0.500644
  11        0.498606     0.498801
- 12        0.501643     0.499298

source

`,18))]),i("details",I,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.DimGroupByArray",href:"#DimensionalData.DimGroupByArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimGroupByArray")],-1)),s[67]||(s[67]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[68]||(s[68]=l('
julia
DimGroupByArray <: AbstractDimArray

DimGroupByArray is essentially a DimArray but holding the results of a groupby operation.

Its dimensions are the sorted results of the grouping functions used in groupby.

This wrapper allows for specialisations on later broadcast or reducing operations, e.g. for chunk reading with DiskArrays.jl, because we know the data originates from a single array.

source

',5))]),i("details",O,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Bins",href:"#DimensionalData.Bins"},[i("span",{class:"jlbinding"},"DimensionalData.Bins")],-1)),s[70]||(s[70]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=l(`
julia
Bins(f, bins; labels, pad)
-Bins(bins; labels, pad)

Specify bins to reduce groups after applying function f.

  • f: a grouping function of the lookup values, by default identity.

  • bins:

    • an Integer will divide the group values into equally spaced sections.

    • an AbstractArray of values will be treated as exact matches for the return value of f. For example, 1:3 will create 3 bins - 1, 2, 3.

    • an AbstractArray of IntervalSets.Interval can be used to explicitly define the intervals. Overlapping intervals have undefined behaviour.

Keywords

  • pad: fraction of the total interval to pad at each end when Bins contains an Integer. This avoids losing the edge values. Note this is a messy solution - it will often be prefereble to manually specify a Vector of chosen Intervals rather than relying on passing an Integer and pad.

  • labels: a list of descriptive labels for the bins. The labels need to have the same length as bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

`,7))]),i("details",N,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.ranges",href:"#DimensionalData.ranges"},[i("span",{class:"jlbinding"},"DimensionalData.ranges")],-1)),s[73]||(s[73]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=l('
julia
ranges(A::AbstractRange{<:Integer})

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",q,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.intervals",href:"#DimensionalData.intervals"},[i("span",{class:"jlbinding"},"DimensionalData.intervals")],-1)),s[76]||(s[76]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=l('
julia
intervals(A::AbstractRange)

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",z,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.CyclicBins",href:"#DimensionalData.CyclicBins"},[i("span",{class:"jlbinding"},"DimensionalData.CyclicBins")],-1)),s[79]||(s[79]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=l('
julia
CyclicBins(f; cycle, start, step, labels)

Cyclic bins to reduce groups after applying function f. Groups can wrap around the cycle. This is used for grouping in seasons, months and hours but can also be used for custom cycles.

  • f: a grouping function of the lookup values, by default identity.

Keywords

  • cycle: the length of the cycle, in return values of f.

  • start: the start of the cycle: a return value of f.

  • step the number of sequential values to group.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

',7))]),i("details",X,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.seasons",href:"#DimensionalData.seasons"},[i("span",{class:"jlbinding"},"DimensionalData.seasons")],-1)),s[82]||(s[82]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=l('
julia
seasons(; [start=Dates.December, labels])

Generates CyclicBins for three month periods.

Keywords

  • start: By default seasons start in December, but any integer 1:12 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected quarters.

source

',5))]),i("details",Y,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.months",href:"#DimensionalData.months"},[i("span",{class:"jlbinding"},"DimensionalData.months")],-1)),s[85]||(s[85]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=l('
julia
months(step; [start=Dates.January, labels])

Generates CyclicBins for grouping to arbitrary month periods. These can wrap around the end of a year.

  • step the number of months to group.

Keywords

  • start: By default months start in January, but any integer 1:12 can be used.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected months.

source

',6))]),i("details",P,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.hours",href:"#DimensionalData.hours"},[i("span",{class:"jlbinding"},"DimensionalData.hours")],-1)),s[88]||(s[88]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=l('
julia
hours(step; [start=0, labels])

Generates CyclicBins for grouping to arbitrary hour periods. These can wrap around the end of the day.

  • steps the number of hours to group.

Keywords

  • start: By default seasons start at 0, but any integer 1:24 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected hours of the day.

source

',6))]),s[174]||(s[174]=i("h1",{id:"Utility-methods",tabindex:"-1"},[a("Utility methods "),i("a",{class:"header-anchor",href:"#Utility-methods","aria-label":'Permalink to "Utility methods {#Utility-methods}"'},"​")],-1)),s[175]||(s[175]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",R,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.set",href:"#DimensionalData.Dimensions.Lookups.set"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.set")],-1)),s[91]||(s[91]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=l(`
julia
set(x, val)
+ 12        0.501643     0.499298

source

`,18))]),i("details",I,[i("summary",null,[s[66]||(s[66]=i("a",{id:"DimensionalData.DimGroupByArray",href:"#DimensionalData.DimGroupByArray"},[i("span",{class:"jlbinding"},"DimensionalData.DimGroupByArray")],-1)),s[67]||(s[67]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[68]||(s[68]=l('
julia
DimGroupByArray <: AbstractDimArray

DimGroupByArray is essentially a DimArray but holding the results of a groupby operation.

Its dimensions are the sorted results of the grouping functions used in groupby.

This wrapper allows for specialisations on later broadcast or reducing operations, e.g. for chunk reading with DiskArrays.jl, because we know the data originates from a single array.

source

',5))]),i("details",O,[i("summary",null,[s[69]||(s[69]=i("a",{id:"DimensionalData.Bins",href:"#DimensionalData.Bins"},[i("span",{class:"jlbinding"},"DimensionalData.Bins")],-1)),s[70]||(s[70]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[71]||(s[71]=l(`
julia
Bins(f, bins; labels, pad)
+Bins(bins; labels, pad)

Specify bins to reduce groups after applying function f.

  • f: a grouping function of the lookup values, by default identity.

  • bins:

    • an Integer will divide the group values into equally spaced sections.

    • an AbstractArray of values will be treated as exact matches for the return value of f. For example, 1:3 will create 3 bins - 1, 2, 3.

    • an AbstractArray of IntervalSets.Interval can be used to explicitly define the intervals. Overlapping intervals have undefined behaviour.

Keywords

  • pad: fraction of the total interval to pad at each end when Bins contains an Integer. This avoids losing the edge values. Note this is a messy solution - it will often be prefereble to manually specify a Vector of chosen Intervals rather than relying on passing an Integer and pad.

  • labels: a list of descriptive labels for the bins. The labels need to have the same length as bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

`,7))]),i("details",N,[i("summary",null,[s[72]||(s[72]=i("a",{id:"DimensionalData.ranges",href:"#DimensionalData.ranges"},[i("span",{class:"jlbinding"},"DimensionalData.ranges")],-1)),s[73]||(s[73]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[74]||(s[74]=l('
julia
ranges(A::AbstractRange{<:Integer})

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",q,[i("summary",null,[s[75]||(s[75]=i("a",{id:"DimensionalData.intervals",href:"#DimensionalData.intervals"},[i("span",{class:"jlbinding"},"DimensionalData.intervals")],-1)),s[76]||(s[76]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[77]||(s[77]=l('
julia
intervals(A::AbstractRange)

Generate a Vector of UnitRange with length step(A)

source

',3))]),i("details",z,[i("summary",null,[s[78]||(s[78]=i("a",{id:"DimensionalData.CyclicBins",href:"#DimensionalData.CyclicBins"},[i("span",{class:"jlbinding"},"DimensionalData.CyclicBins")],-1)),s[79]||(s[79]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[80]||(s[80]=l('
julia
CyclicBins(f; cycle, start, step, labels)

Cyclic bins to reduce groups after applying function f. Groups can wrap around the cycle. This is used for grouping in seasons, months and hours but can also be used for custom cycles.

  • f: a grouping function of the lookup values, by default identity.

Keywords

  • cycle: the length of the cycle, in return values of f.

  • start: the start of the cycle: a return value of f.

  • step the number of sequential values to group.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected bins.

When the return value of f is a tuple, binning is applied to the last value of the tuples.

source

',7))]),i("details",X,[i("summary",null,[s[81]||(s[81]=i("a",{id:"DimensionalData.seasons",href:"#DimensionalData.seasons"},[i("span",{class:"jlbinding"},"DimensionalData.seasons")],-1)),s[82]||(s[82]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[83]||(s[83]=l('
julia
seasons(; [start=Dates.December, labels])

Generates CyclicBins for three month periods.

Keywords

  • start: By default seasons start in December, but any integer 1:12 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected quarters.

source

',5))]),i("details",Y,[i("summary",null,[s[84]||(s[84]=i("a",{id:"DimensionalData.months",href:"#DimensionalData.months"},[i("span",{class:"jlbinding"},"DimensionalData.months")],-1)),s[85]||(s[85]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[86]||(s[86]=l('
julia
months(step; [start=Dates.January, labels])

Generates CyclicBins for grouping to arbitrary month periods. These can wrap around the end of a year.

  • step the number of months to group.

Keywords

  • start: By default months start in January, but any integer 1:12 can be used.

  • labels: either a vector of labels matching the number of groups, or a function that generates labels from Vector{Int} of the selected months.

source

',6))]),i("details",P,[i("summary",null,[s[87]||(s[87]=i("a",{id:"DimensionalData.hours",href:"#DimensionalData.hours"},[i("span",{class:"jlbinding"},"DimensionalData.hours")],-1)),s[88]||(s[88]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[89]||(s[89]=l('
julia
hours(step; [start=0, labels])

Generates CyclicBins for grouping to arbitrary hour periods. These can wrap around the end of the day.

  • steps the number of hours to group.

Keywords

  • start: By default seasons start at 0, but any integer 1:24 can be used.

  • labels: either a vector of four labels, or a function that generates labels from Vector{Int} of the selected hours of the day.

source

',6))]),s[174]||(s[174]=i("h1",{id:"Utility-methods",tabindex:"-1"},[a("Utility methods "),i("a",{class:"header-anchor",href:"#Utility-methods","aria-label":'Permalink to "Utility methods {#Utility-methods}"'},"​")],-1)),s[175]||(s[175]=i("p",null,"For transforming DimensionalData objects:",-1)),i("details",R,[i("summary",null,[s[90]||(s[90]=i("a",{id:"DimensionalData.Dimensions.Lookups.set",href:"#DimensionalData.Dimensions.Lookups.set"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.set")],-1)),s[91]||(s[91]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[92]||(s[92]=l(`
julia
set(x, val)
 set(x, args::Pairs...) => x with updated field/s
 set(x, args...; kw...) => x with updated field/s
 set(x, args::Tuple{Vararg{Dimension}}; kw...) => x with updated field/s
@@ -398,11 +398,11 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
   -20.0  -10.0  0.0  10.0
  10.0    0.0    0.0  0.0   0.0
  20.0    0.0    0.0  0.0   0.0
- 30.0    0.0    0.0  0.0   0.0

source

`,20))]),i("details",G,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.rebuild",href:"#DimensionalData.Dimensions.Lookups.rebuild"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.rebuild")],-1)),s[94]||(s[94]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=l('
julia
rebuild(x; kw...)

Rebuild an object struct with updated field values.

x can be a AbstractDimArray, a Dimension, Lookup or other custom types.

This is an abstraction that allows inbuilt and custom types to be rebuilt to update their fields, as most objects in DimensionalData.jl are immutable.

Rebuild is mostly automated using ConstructionBase.setproperties. It should only be defined if your object has fields with with different names to DimensionalData objects. Try not to do that!

The arguments required are defined for the abstract type that has a rebuild method.

AbstractBasicDimArray:

  • dims: a Tuple of Dimension

AbstractDimArray:

  • data: the parent object - an AbstractArray

  • dims: a Tuple of Dimension

  • refdims: a Tuple of Dimension

  • name: A Symbol, or NoName and Name on GPU.

  • metadata: A Dict-like object

AbstractDimStack:

  • data: the parent object, often a NamedTuple

  • dims, refdims, metadata

Dimension:

  • val: anything.

Lookup:

  • data: the parent object, an AbstractArray

  • Note: argument rebuild is deprecated on AbstractDimArray and

AbstractDimStack in favour of always using the keyword version. In future the argument version will only be used on Dimension, which only have one argument.

source

',18))]),i("details",V,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.modify",href:"#DimensionalData.modify"},[i("span",{class:"jlbinding"},"DimensionalData.modify")],-1)),s[97]||(s[97]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=l(`
julia
modify(f, A::AbstractDimArray) => AbstractDimArray
+ 30.0    0.0    0.0  0.0   0.0

source

`,20))]),i("details",G,[i("summary",null,[s[93]||(s[93]=i("a",{id:"DimensionalData.Dimensions.Lookups.rebuild",href:"#DimensionalData.Dimensions.Lookups.rebuild"},[i("span",{class:"jlbinding"},"DimensionalData.Dimensions.Lookups.rebuild")],-1)),s[94]||(s[94]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[95]||(s[95]=l('
julia
rebuild(x; kw...)

Rebuild an object struct with updated field values.

x can be a AbstractDimArray, a Dimension, Lookup or other custom types.

This is an abstraction that allows inbuilt and custom types to be rebuilt to update their fields, as most objects in DimensionalData.jl are immutable.

Rebuild is mostly automated using ConstructionBase.setproperties. It should only be defined if your object has fields with with different names to DimensionalData objects. Try not to do that!

The arguments required are defined for the abstract type that has a rebuild method.

AbstractBasicDimArray:

  • dims: a Tuple of Dimension

AbstractDimArray:

  • data: the parent object - an AbstractArray

  • dims: a Tuple of Dimension

  • refdims: a Tuple of Dimension

  • name: A Symbol, or NoName and Name on GPU.

  • metadata: A Dict-like object

AbstractDimStack:

  • data: the parent object, often a NamedTuple

  • dims, refdims, metadata

Dimension:

  • val: anything.

Lookup:

  • data: the parent object, an AbstractArray

  • Note: argument rebuild is deprecated on AbstractDimArray and

AbstractDimStack in favour of always using the keyword version. In future the argument version will only be used on Dimension, which only have one argument.

source

',18))]),i("details",V,[i("summary",null,[s[96]||(s[96]=i("a",{id:"DimensionalData.modify",href:"#DimensionalData.modify"},[i("span",{class:"jlbinding"},"DimensionalData.modify")],-1)),s[97]||(s[97]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[98]||(s[98]=l(`
julia
modify(f, A::AbstractDimArray) => AbstractDimArray
 modify(f, s::AbstractDimStack) => AbstractDimStack
 modify(f, dim::Dimension) => Dimension
 modify(f, x, lookupdim::Dimension) => typeof(x)

Modify the parent data, rebuilding the object wrapper without change. f must return a AbstractArray of the same size as the original.

This method is mostly useful as a way of swapping the parent array type of an object.

Example

If we have a previously-defined DimArray, we can copy it to an Nvidia GPU with:

julia
A = DimArray(rand(100, 100), (X, Y))
-modify(CuArray, A)

This also works for all the data layers in a DimStack.

source

`,8))]),i("details",M,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.@d",href:"#DimensionalData.@d"},[i("span",{class:"jlbinding"},"DimensionalData.@d")],-1)),s[100]||(s[100]=a()),t(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[101]||(s[101]=l(`
julia
@d broadcast_expression options

Dimensional broadcast macro extending Base Julia broadcasting to work with missing and permuted dimensions.

Will permute and reshape singleton dimensions so that all AbstractDimArray in a broadcast will broadcast over matching dimensions.

It is possible to pass options as the second argument of the macro to control the behaviour, as a single assignment or as a NamedTuple. Options names must be written explicitly, not passed in namedtuple variable.

Options

  • dims: Pass a Tuple of Dimensions, Dimension types or Symbols to fix the dimension order of the output array. Otherwise dimensions will be in order of appearance. If dims with lookups are passed, these will be applied to the returned array with set.

  • strict: true or false. Check that all lookup values match explicitly.

All other keywords are passed to DimensionalData.rebuild. This means name, metadata, etc for the returned array can be set here, or for example missingval in Rasters.jl.

Example

julia
using DimensionalData
+modify(CuArray, A)

This also works for all the data layers in a DimStack.

source

`,8))]),i("details",M,[i("summary",null,[s[99]||(s[99]=i("a",{id:"DimensionalData.@d",href:"#DimensionalData.@d"},[i("span",{class:"jlbinding"},"DimensionalData.@d")],-1)),s[100]||(s[100]=a()),t(n,{type:"info",class:"jlObjectType jlMacro",text:"Macro"})]),s[101]||(s[101]=l(`
julia
@d broadcast_expression options

Dimensional broadcast macro extending Base Julia broadcasting to work with missing and permuted dimensions.

Will permute and reshape singleton dimensions so that all AbstractDimArray in a broadcast will broadcast over matching dimensions.

It is possible to pass options as the second argument of the macro to control the behaviour, as a single assignment or as a NamedTuple. Options names must be written explicitly, not passed in namedtuple variable.

Options

  • dims: Pass a Tuple of Dimensions, Dimension types or Symbols to fix the dimension order of the output array. Otherwise dimensions will be in order of appearance. If dims with lookups are passed, these will be applied to the returned array with set.

  • strict: true or false. Check that all lookup values match explicitly.

All other keywords are passed to DimensionalData.rebuild. This means name, metadata, etc for the returned array can be set here, or for example missingval in Rasters.jl.

Example

julia
using DimensionalData
 da1 = ones(X(3))
 da2 = fill(2, Y(4), X(3))
 
@@ -414,7 +414,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 
 @d @. da1 * da2
 # Use parentheses around \`@.\` if you need to pass options
-@d (@. da1 * da2 .+ 5) dims=(Y, X)

source

`,13))]),i("details",U,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.broadcast_dims",href:"#DimensionalData.broadcast_dims"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims")],-1)),s[103]||(s[103]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=l('
julia
broadcast_dims(f, sources::AbstractDimArray...) => AbstractDimArray

Broadcast function f over the AbstractDimArrays in sources, permuting and reshaping dimensions to match where required. The result will contain all the dimensions in all passed in arrays in the order in which they are found.

Arguments

  • sources: AbstractDimArrays to broadcast over with f.

This is like broadcasting over every slice of A if it is sliced by the dimensions of B.

source

',6))]),i("details",Z,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.broadcast_dims!",href:"#DimensionalData.broadcast_dims!"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims!")],-1)),s[106]||(s[106]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=l('
julia
broadcast_dims!(f, dest::AbstractDimArray, sources::AbstractDimArray...) => dest

Broadcast function f over the AbstractDimArrays in sources, writing to dest. sources are permuting and reshaping dimensions to match where required.

The result will contain all the dimensions in all passed in arrays, in the order in which they are found.

Arguments

  • dest: AbstractDimArray to update.

  • sources: AbstractDimArrays to broadcast over with f.

source

',6))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.mergedims",href:"#DimensionalData.mergedims"},[i("span",{class:"jlbinding"},"DimensionalData.mergedims")],-1)),s[109]||(s[109]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[110]||(s[110]=l(`
julia
mergedims(old_dims => new_dim) => Dimension

Return a dimension new_dim whose indices are a MergedLookup of the indices of old_dims.

source

julia
mergedims(dims, old_dims => new_dim, others::Pair...) => dims_new

If dimensions old_dims, new_dim, etc. are found in dims, then return new dims_new where all dims in old_dims have been combined into a single dim new_dim. The returned dimension will keep only the name of new_dim. Its coords will be a MergedLookup of the coords of the dims in old_dims. New dimensions are always placed at the end of dims_new. others contains other dimension pairs to be merged.

Example

julia
julia> using DimensionalData
+@d (@. da1 * da2 .+ 5) dims=(Y, X)

source

`,13))]),i("details",U,[i("summary",null,[s[102]||(s[102]=i("a",{id:"DimensionalData.broadcast_dims",href:"#DimensionalData.broadcast_dims"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims")],-1)),s[103]||(s[103]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[104]||(s[104]=l('
julia
broadcast_dims(f, sources::AbstractDimArray...) => AbstractDimArray

Broadcast function f over the AbstractDimArrays in sources, permuting and reshaping dimensions to match where required. The result will contain all the dimensions in all passed in arrays in the order in which they are found.

Arguments

  • sources: AbstractDimArrays to broadcast over with f.

This is like broadcasting over every slice of A if it is sliced by the dimensions of B.

source

',6))]),i("details",Z,[i("summary",null,[s[105]||(s[105]=i("a",{id:"DimensionalData.broadcast_dims!",href:"#DimensionalData.broadcast_dims!"},[i("span",{class:"jlbinding"},"DimensionalData.broadcast_dims!")],-1)),s[106]||(s[106]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[107]||(s[107]=l('
julia
broadcast_dims!(f, dest::AbstractDimArray, sources::AbstractDimArray...) => dest

Broadcast function f over the AbstractDimArrays in sources, writing to dest. sources are permuting and reshaping dimensions to match where required.

The result will contain all the dimensions in all passed in arrays, in the order in which they are found.

Arguments

  • dest: AbstractDimArray to update.

  • sources: AbstractDimArrays to broadcast over with f.

source

',6))]),i("details",K,[i("summary",null,[s[108]||(s[108]=i("a",{id:"DimensionalData.mergedims",href:"#DimensionalData.mergedims"},[i("span",{class:"jlbinding"},"DimensionalData.mergedims")],-1)),s[109]||(s[109]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[110]||(s[110]=l(`
julia
mergedims(old_dims => new_dim) => Dimension

Return a dimension new_dim whose indices are a MergedLookup of the indices of old_dims.

source

julia
mergedims(dims, old_dims => new_dim, others::Pair...) => dims_new

If dimensions old_dims, new_dim, etc. are found in dims, then return new dims_new where all dims in old_dims have been combined into a single dim new_dim. The returned dimension will keep only the name of new_dim. Its coords will be a MergedLookup of the coords of the dims in old_dims. New dimensions are always placed at the end of dims_new. others contains other dimension pairs to be merged.

Example

julia
julia> using DimensionalData
 
 julia> ds = (X(0:0.1:0.4), Y(10:10:100), Ti([0, 3, 4]))
 ( X  0.0:0.1:0.4,
@@ -423,9 +423,9 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 
 julia> mergedims(ds, (X, Y) => :space)
 ( Ti    [0, 3, 4],
- space MergedLookup{Tuple{Float64, Int64}} [(0.0, 10), (0.1, 10), , (0.3, 100), (0.4, 100)] ( X,  Y))

source

julia
mergedims(A::AbstractDimArray, dim_pairs::Pair...) => AbstractDimArray
-mergedims(A::AbstractDimStack, dim_pairs::Pair...) => AbstractDimStack

Return a new array or stack whose dimensions are the result of mergedims(dims(A), dim_pairs).

source

`,11))]),i("details",W,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.unmergedims",href:"#DimensionalData.unmergedims"},[i("span",{class:"jlbinding"},"DimensionalData.unmergedims")],-1)),s[112]||(s[112]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[113]||(s[113]=l(`
julia
unmergedims(merged_dims::Tuple{Vararg{Dimension}}) => Tuple{Vararg{Dimension}}

Return the unmerged dimensions from a tuple of merged dimensions. However, the order of the original dimensions are not necessarily preserved.

source

julia
unmergedims(A::AbstractDimArray, original_dims) => AbstractDimArray
-unmergedims(A::AbstractDimStack, original_dims) => AbstractDimStack

Return a new array or stack whose dimensions are restored to their original prior to calling mergedims(A, dim_pairs).

source

`,6))]),i("details",J,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.reorder",href:"#DimensionalData.reorder"},[i("span",{class:"jlbinding"},"DimensionalData.reorder")],-1)),s[115]||(s[115]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[116]||(s[116]=l(`
julia
reorder(A::Union{AbstractDimArray,AbstractDimStack}, order::Pair...)
+ space MergedLookup{Tuple{Float64, Int64}} [(0.0, 10), (0.1, 10), , (0.3, 100), (0.4, 100)] ( X,  Y))

source

julia
mergedims(A::AbstractDimArray, dim_pairs::Pair...) => AbstractDimArray
+mergedims(A::AbstractDimStack, dim_pairs::Pair...) => AbstractDimStack

Return a new array or stack whose dimensions are the result of mergedims(dims(A), dim_pairs).

source

`,11))]),i("details",W,[i("summary",null,[s[111]||(s[111]=i("a",{id:"DimensionalData.unmergedims",href:"#DimensionalData.unmergedims"},[i("span",{class:"jlbinding"},"DimensionalData.unmergedims")],-1)),s[112]||(s[112]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[113]||(s[113]=l(`
julia
unmergedims(merged_dims::Tuple{Vararg{Dimension}}) => Tuple{Vararg{Dimension}}

Return the unmerged dimensions from a tuple of merged dimensions. However, the order of the original dimensions are not necessarily preserved.

source

julia
unmergedims(A::AbstractDimArray, original_dims) => AbstractDimArray
+unmergedims(A::AbstractDimStack, original_dims) => AbstractDimStack

Return a new array or stack whose dimensions are restored to their original prior to calling mergedims(A, dim_pairs).

source

`,6))]),i("details",J,[i("summary",null,[s[114]||(s[114]=i("a",{id:"DimensionalData.reorder",href:"#DimensionalData.reorder"},[i("span",{class:"jlbinding"},"DimensionalData.reorder")],-1)),s[115]||(s[115]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[116]||(s[116]=l(`
julia
reorder(A::Union{AbstractDimArray,AbstractDimStack}, order::Pair...)
 reorder(A::Union{AbstractDimArray,AbstractDimStack}, order)
 reorder(A::Dimension, order::Order)

Reorder every dims index/array to order, or reorder index for the given dimension(s) in order.

order can be an Order, Dimension => Order pairs. A Tuple of Dimensions or any object that defines dims can be used in which case the dimensions of this object are used for reordering.

If no axis reversal is required the same objects will be returned, without allocation.

Example

julia
using DimensionalData
 
@@ -439,7 +439,7 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 reorder(rev, da) == da
 
 # output
-true

source

`,7))]),s[176]||(s[176]=i("h1",{id:"Global-lookup-strictness-settings",tabindex:"-1"},[a("Global lookup strictness settings "),i("a",{class:"header-anchor",href:"#Global-lookup-strictness-settings","aria-label":'Permalink to "Global lookup strictness settings {#Global-lookup-strictness-settings}"'},"​")],-1)),s[177]||(s[177]=i("p",null,[a("Control how strict DimensionalData when comparing "),i("a",{href:"/DimensionalData.jl/dev/api/lookuparrays#DimensionalData.Dimensions.Lookups.Lookup"},[i("code",null,"Lookup")]),a("s before doing broadcasts and matrix multipications.")],-1)),s[178]||(s[178]=i("p",null,[a("In some cases (especially "),i("code",null,"DimVector"),a(" and small "),i("code",null,"DimArray"),a(") checking lookup values match may be too costly compared to the operations. You can turn check the current setting and turn them on or off with these methods.")],-1)),i("details",$,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.strict_broadcast",href:"#DimensionalData.strict_broadcast"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast")],-1)),s[118]||(s[118]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[119]||(s[119]=l('
julia
strict_broadcast()

Check if strict broadcasting checks are active.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",H,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.strict_broadcast!",href:"#DimensionalData.strict_broadcast!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast!")],-1)),s[121]||(s[121]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[122]||(s[122]=l('
julia
strict_broadcast!(x::Bool)

Set global broadcasting checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",Q,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.strict_matmul",href:"#DimensionalData.strict_matmul"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul")],-1)),s[124]||(s[124]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[125]||(s[125]=l('
julia
strict_matmul()

Check if strickt broadcasting checks are active.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.strict_matmul!",href:"#DimensionalData.strict_matmul!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul!")],-1)),s[127]||(s[127]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[128]||(s[128]=l('
julia
strict_matmul!(x::Bool)

Set global matrix multiplication checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),s[179]||(s[179]=i("p",null,"Base methods",-1)),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"Base.cat",href:"#Base.cat"},[i("span",{class:"jlbinding"},"Base.cat")],-1)),s[130]||(s[130]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[131]||(s[131]=l('
julia
Base.cat(stacks::AbstractDimStack...; [keys=keys(stacks[1])], dims)

Concatenate all or a subset of layers for all passed in stacks.

Keywords

  • keys: Tuple of Symbol for the stack keys to concatenate.

  • dims: Dimension of child array to concatenate on.

Example

Concatenate the :sea_surface_temp and :humidity layers in the time dimension:

julia
cat(stacks...; keys=(:sea_surface_temp, :humidity), dims=Ti)

source

',8))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"Base.copy!",href:"#Base.copy!"},[i("span",{class:"jlbinding"},"Base.copy!")],-1)),s[133]||(s[133]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[134]||(s[134]=l('
julia
Base.copy!(dst::AbstractArray, src::AbstractDimStack, key::Key)

Copy the stack layer key to dst, which can be any AbstractArray.

Example

Copy the :humidity layer from stack to array.

julia
copy!(array, stack, :humidity)

source

julia
Base.copy!(dst::AbstractDimStack, src::AbstractDimStack, [keys=keys(dst)])

Copy all or a subset of layers from one stack to another.

Example

Copy just the :sea_surface_temp and :humidity layers from src to dst.

julia
copy!(dst::AbstractDimStack, src::AbstractDimStack, keys=(:sea_surface_temp, :humidity))

source

',12))]),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"Base.eachslice",href:"#Base.eachslice"},[i("span",{class:"jlbinding"},"Base.eachslice")],-1)),s[136]||(s[136]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[137]||(s[137]=l(`
julia
Base.eachslice(A::AbstractDimArray; dims,drop=true)

Create a generator that iterates over dimensions dims of A, returning arrays that select all the data from the other dimensions in A using views.

The generator has size and axes equivalent to those of the provided dims if drop=true. Otherwise it will have the same dimensionality as the underlying array with inner dimensions having size 1.

source

julia
Base.eachslice(stack::AbstractDimStack; dims, drop=true)

Create a generator that iterates over dimensions dims of stack, returning stacks that select all the data from the other dimensions in stack using views.

The generator has size and axes equivalent to those of the provided dims.

Examples

julia
julia> ds = DimStack((
+true

source

`,7))]),s[176]||(s[176]=i("h1",{id:"Global-lookup-strictness-settings",tabindex:"-1"},[a("Global lookup strictness settings "),i("a",{class:"header-anchor",href:"#Global-lookup-strictness-settings","aria-label":'Permalink to "Global lookup strictness settings {#Global-lookup-strictness-settings}"'},"​")],-1)),s[177]||(s[177]=i("p",null,[a("Control how strict DimensionalData when comparing "),i("a",{href:"/DimensionalData.jl/dev/api/lookuparrays#DimensionalData.Dimensions.Lookups.Lookup"},[i("code",null,"Lookup")]),a("s before doing broadcasts and matrix multipications.")],-1)),s[178]||(s[178]=i("p",null,[a("In some cases (especially "),i("code",null,"DimVector"),a(" and small "),i("code",null,"DimArray"),a(") checking lookup values match may be too costly compared to the operations. You can turn check the current setting and turn them on or off with these methods.")],-1)),i("details",$,[i("summary",null,[s[117]||(s[117]=i("a",{id:"DimensionalData.strict_broadcast",href:"#DimensionalData.strict_broadcast"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast")],-1)),s[118]||(s[118]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[119]||(s[119]=l('
julia
strict_broadcast()

Check if strict broadcasting checks are active.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",H,[i("summary",null,[s[120]||(s[120]=i("a",{id:"DimensionalData.strict_broadcast!",href:"#DimensionalData.strict_broadcast!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_broadcast!")],-1)),s[121]||(s[121]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[122]||(s[122]=l('
julia
strict_broadcast!(x::Bool)

Set global broadcasting checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before brodcasting, to ensure that dimensions match closely.

An exception to this rule is when dimension are of length one, as these is ignored in broadcasts.

We always check that dimension names match in broadcasts. If you don't want this either, explicitly use parent(A) before broadcasting to remove the AbstractDimArray wrapper completely.

source

',6))]),i("details",Q,[i("summary",null,[s[123]||(s[123]=i("a",{id:"DimensionalData.strict_matmul",href:"#DimensionalData.strict_matmul"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul")],-1)),s[124]||(s[124]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[125]||(s[125]=l('
julia
strict_matmul()

Check if strickt broadcasting checks are active.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),i("details",_,[i("summary",null,[s[126]||(s[126]=i("a",{id:"DimensionalData.strict_matmul!",href:"#DimensionalData.strict_matmul!"},[i("span",{class:"jlbinding"},"DimensionalData.strict_matmul!")],-1)),s[127]||(s[127]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[128]||(s[128]=l('
julia
strict_matmul!(x::Bool)

Set global matrix multiplication checks to strict, or not for all AbstractDimArray.

With strict=true we check Lookup Order and values before attempting matrix multiplication, to ensure that dimensions match closely.

We always check that dimension names match in matrix multiplication. If you don't want this either, explicitly use parent(A) before multiplying to remove the AbstractDimArray wrapper completely.

source

',5))]),s[179]||(s[179]=i("p",null,"Base methods",-1)),i("details",ss,[i("summary",null,[s[129]||(s[129]=i("a",{id:"Base.cat",href:"#Base.cat"},[i("span",{class:"jlbinding"},"Base.cat")],-1)),s[130]||(s[130]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[131]||(s[131]=l('
julia
Base.cat(stacks::AbstractDimStack...; [keys=keys(stacks[1])], dims)

Concatenate all or a subset of layers for all passed in stacks.

Keywords

  • keys: Tuple of Symbol for the stack keys to concatenate.

  • dims: Dimension of child array to concatenate on.

Example

Concatenate the :sea_surface_temp and :humidity layers in the time dimension:

julia
cat(stacks...; keys=(:sea_surface_temp, :humidity), dims=Ti)

source

',8))]),i("details",is,[i("summary",null,[s[132]||(s[132]=i("a",{id:"Base.copy!",href:"#Base.copy!"},[i("span",{class:"jlbinding"},"Base.copy!")],-1)),s[133]||(s[133]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[134]||(s[134]=l('
julia
Base.copy!(dst::AbstractArray, src::AbstractDimStack, key::Key)

Copy the stack layer key to dst, which can be any AbstractArray.

Example

Copy the :humidity layer from stack to array.

julia
copy!(array, stack, :humidity)

source

julia
Base.copy!(dst::AbstractDimStack, src::AbstractDimStack, [keys=keys(dst)])

Copy all or a subset of layers from one stack to another.

Example

Copy just the :sea_surface_temp and :humidity layers from src to dst.

julia
copy!(dst::AbstractDimStack, src::AbstractDimStack, keys=(:sea_surface_temp, :humidity))

source

',12))]),i("details",as,[i("summary",null,[s[135]||(s[135]=i("a",{id:"Base.eachslice",href:"#Base.eachslice"},[i("span",{class:"jlbinding"},"Base.eachslice")],-1)),s[136]||(s[136]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[137]||(s[137]=l(`
julia
Base.eachslice(A::AbstractDimArray; dims,drop=true)

Create a generator that iterates over dimensions dims of A, returning arrays that select all the data from the other dimensions in A using views.

The generator has size and axes equivalent to those of the provided dims if drop=true. Otherwise it will have the same dimensionality as the underlying array with inner dimensions having size 1.

source

julia
Base.eachslice(stack::AbstractDimStack; dims, drop=true)

Create a generator that iterates over dimensions dims of stack, returning stacks that select all the data from the other dimensions in stack using views.

The generator has size and axes equivalent to those of the provided dims.

Examples

julia
julia> ds = DimStack((
            x=DimArray(randn(2, 3, 4), (X([:x1, :x2]), Y(1:3), Z)),
            y=DimArray(randn(2, 3, 5), (X([:x1, :x2]), Y(1:3), Ti))
        ));
@@ -462,13 +462,13 @@ import{_ as h,B as e,o as k,c as p,j as i,a,G as t,a4 as l}from"./chunks/framewo
 ├──────────────────────────────────────────────── layers ┤
   :x eltype: Float64 dims: Y size: 3
   :y eltype: Float64 dims: Y, Ti size: 3×5
-└────────────────────────────────────────────────────────┘

source

`,10))]),s[180]||(s[180]=i("p",null,[a("Most base methods work as expected, using "),i("code",null,"Dimension"),a(" wherever a "),i("code",null,"dims"),a(" keyword is used. They are not all specifically documented here.")],-1)),s[181]||(s[181]=i("h2",{id:"name",tabindex:"-1"},[a("Name "),i("a",{class:"header-anchor",href:"#name","aria-label":'Permalink to "Name"'},"​")],-1)),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.AbstractName",href:"#DimensionalData.AbstractName"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractName")],-1)),s[139]||(s[139]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=l('
julia
AbstractName

Abstract supertype for name wrappers.

source

',3))]),i("details",ts,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Name",href:"#DimensionalData.Name"},[i("span",{class:"jlbinding"},"DimensionalData.Name")],-1)),s[142]||(s[142]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=l(`
julia
Name <: AbstractName
+└────────────────────────────────────────────────────────┘

source

`,10))]),s[180]||(s[180]=i("p",null,[a("Most base methods work as expected, using "),i("code",null,"Dimension"),a(" wherever a "),i("code",null,"dims"),a(" keyword is used. They are not all specifically documented here.")],-1)),s[181]||(s[181]=i("h2",{id:"name",tabindex:"-1"},[a("Name "),i("a",{class:"header-anchor",href:"#name","aria-label":'Permalink to "Name"'},"​")],-1)),i("details",ns,[i("summary",null,[s[138]||(s[138]=i("a",{id:"DimensionalData.AbstractName",href:"#DimensionalData.AbstractName"},[i("span",{class:"jlbinding"},"DimensionalData.AbstractName")],-1)),s[139]||(s[139]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[140]||(s[140]=l('
julia
AbstractName

Abstract supertype for name wrappers.

source

',3))]),i("details",ts,[i("summary",null,[s[141]||(s[141]=i("a",{id:"DimensionalData.Name",href:"#DimensionalData.Name"},[i("span",{class:"jlbinding"},"DimensionalData.Name")],-1)),s[142]||(s[142]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[143]||(s[143]=l(`
julia
Name <: AbstractName
 
 Name(name::Union{Symbol,Name) => Name
-Name(name::NoName) => NoName

Name wrapper. This lets arrays keep symbol names when the array wrapper needs to be isbits, like for use on GPUs. It makes the name a property of the type. It's not necessary to use in normal use, a symbol is probably easier.

source

`,3))]),i("details",ls,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.NoName",href:"#DimensionalData.NoName"},[i("span",{class:"jlbinding"},"DimensionalData.NoName")],-1)),s[145]||(s[145]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=l(`
julia
NoName <: AbstractName
+Name(name::NoName) => NoName

Name wrapper. This lets arrays keep symbol names when the array wrapper needs to be isbits, like for use on GPUs. It makes the name a property of the type. It's not necessary to use in normal use, a symbol is probably easier.

source

`,3))]),i("details",ls,[i("summary",null,[s[144]||(s[144]=i("a",{id:"DimensionalData.NoName",href:"#DimensionalData.NoName"},[i("span",{class:"jlbinding"},"DimensionalData.NoName")],-1)),s[145]||(s[145]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[146]||(s[146]=l(`
julia
NoName <: AbstractName
 
-NoName()

NoName specifies an array is not named, and is the default name value for all AbstractDimArrays.

source

`,3))]),s[182]||(s[182]=i("h2",{id:"Internal-interface",tabindex:"-1"},[a("Internal interface "),i("a",{class:"header-anchor",href:"#Internal-interface","aria-label":'Permalink to "Internal interface {#Internal-interface}"'},"​")],-1)),i("details",hs,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.DimArrayInterface",href:"#DimensionalData.DimArrayInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimArrayInterface")],-1)),s[148]||(s[148]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=l('
julia
    DimArrayInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_parent_kw, :rebuild_dims_kw, :rebuild) and optional components (:refdims, :name, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches dimensions of array

  • size: length of dims matches dimensions of array

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • name:

    • rebuild updates name in arg rebuild

    • rebuild updates name in kw rebuild

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",es,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.DimStackInterface",href:"#DimensionalData.DimStackInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimStackInterface")],-1)),s[151]||(s[151]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=l('
julia
    DimStackInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_layerdims, :rebuild_dims_kw, :rebuild_parent_kw, :rebuild_layerdims_kw, :rebuild) and optional components (:refdims, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches ndims of stack

  • size: length of dims matches size of stack

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_layerdims: rebuild paaarnet and dims from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_layerdims_kw: rebuild parent from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",ks,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.rebuild_from_arrays",href:"#DimensionalData.rebuild_from_arrays"},[i("span",{class:"jlbinding"},"DimensionalData.rebuild_from_arrays")],-1)),s[154]||(s[154]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[155]||(s[155]=l('
julia
rebuild_from_arrays(s::AbstractDimStack, das::NamedTuple{<:Any,<:Tuple{Vararg{AbstractDimArray}}}; kw...)

Rebuild an AbstractDimStack from a Tuple or NamedTuple of AbstractDimArray and an existing stack.

Keywords

Keywords are simply the fields of the stack object:

  • data

  • dims

  • refdims

  • metadata

  • layerdims

  • layermetadata

source

',6))]),i("details",ps,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.show_main",href:"#DimensionalData.show_main"},[i("span",{class:"jlbinding"},"DimensionalData.show_main")],-1)),s[157]||(s[157]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[158]||(s[158]=l(`
julia
show_main(io::IO, mime, A::AbstractDimArray)
-show_main(io::IO, mime, A::AbstractDimStack)

Interface methods for adding the main part of show

At the least, you likely want to call:

julia
print_top(io, mime, A)

But read the DimensionalData.jl show.jl code for details.

source

`,6))]),i("details",ds,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.show_after",href:"#DimensionalData.show_after"},[i("span",{class:"jlbinding"},"DimensionalData.show_after")],-1)),s[160]||(s[160]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[161]||(s[161]=l(`
julia
show_after(io::IO, mime, A::AbstractDimArray)
-show_after(io::IO, mime, A::AbstractDimStack)

Interface methods for adding additional show text for AbstractDimArray/AbstractDimStack subtypes.

Always include kw to avoid future breaking changes

Additional keywords may be added at any time.

blockwidth is passed in context

julia
blockwidth = get(io, :blockwidth, 10000)

Note - a ANSI box is left unclosed. This method needs to close it, or add more. blockwidth is the maximum length of the inner text.

Most likely you always want to at least close the show blocks with:

julia
print_block_close(io, blockwidth)

But read the DimensionalData.jl show.jl code for details.

source

`,11))]),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.refdims_title",href:"#DimensionalData.refdims_title"},[i("span",{class:"jlbinding"},"DimensionalData.refdims_title")],-1)),s[163]||(s[163]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[164]||(s[164]=l(`
julia
refdims_title(A::AbstractDimArray)
+NoName()

NoName specifies an array is not named, and is the default name value for all AbstractDimArrays.

source

`,3))]),s[182]||(s[182]=i("h2",{id:"Internal-interface",tabindex:"-1"},[a("Internal interface "),i("a",{class:"header-anchor",href:"#Internal-interface","aria-label":'Permalink to "Internal interface {#Internal-interface}"'},"​")],-1)),i("details",hs,[i("summary",null,[s[147]||(s[147]=i("a",{id:"DimensionalData.DimArrayInterface",href:"#DimensionalData.DimArrayInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimArrayInterface")],-1)),s[148]||(s[148]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[149]||(s[149]=l('
julia
    DimArrayInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_parent_kw, :rebuild_dims_kw, :rebuild) and optional components (:refdims, :name, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches dimensions of array

  • size: length of dims matches dimensions of array

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • name:

    • rebuild updates name in arg rebuild

    • rebuild updates name in kw rebuild

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",es,[i("summary",null,[s[150]||(s[150]=i("a",{id:"DimensionalData.DimStackInterface",href:"#DimensionalData.DimStackInterface"},[i("span",{class:"jlbinding"},"DimensionalData.DimStackInterface")],-1)),s[151]||(s[151]=a()),t(n,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[152]||(s[152]=l('
julia
    DimStackInterface

An Interfaces.jl Interface with mandatory components (:dims, :refdims_base, :ndims, :size, :rebuild_parent, :rebuild_dims, :rebuild_layerdims, :rebuild_dims_kw, :rebuild_parent_kw, :rebuild_layerdims_kw, :rebuild) and optional components (:refdims, :metadata).

This is an early stage of inteface definition, many things are not yet tested.

Pass constructed AbstractDimArrays as test data.

They must not be zero dimensional, and should test at least 1, 2, and 3 dimensions.

Extended help

Mandatory keys:

  • dims:

    • defines a dims method

    • dims are updated on getindex

  • refdims_base: refdims returns a tuple of Dimension or empty

  • ndims: number of dims matches ndims of stack

  • size: length of dims matches size of stack

  • rebuild_parent: rebuild parent from args

  • rebuild_dims: rebuild paaarnet and dims from args

  • rebuild_layerdims: rebuild paaarnet and dims from args

  • rebuild_dims_kw: rebuild dims from args

  • rebuild_parent_kw: rebuild parent from args

  • rebuild_layerdims_kw: rebuild parent from args

  • rebuild: all rebuild arguments and keywords are accepted

Optional keys:

  • refdims:

    • refdims are updated in args rebuild

    • refdims are updated in kw rebuild

    • dropped dimensions are added to refdims

  • metadata:

    • rebuild updates metadata in arg rebuild

    • rebuild updates metadata in kw rebuild

source

',11))]),i("details",ks,[i("summary",null,[s[153]||(s[153]=i("a",{id:"DimensionalData.rebuild_from_arrays",href:"#DimensionalData.rebuild_from_arrays"},[i("span",{class:"jlbinding"},"DimensionalData.rebuild_from_arrays")],-1)),s[154]||(s[154]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[155]||(s[155]=l('
julia
rebuild_from_arrays(s::AbstractDimStack, das::NamedTuple{<:Any,<:Tuple{Vararg{AbstractDimArray}}}; kw...)

Rebuild an AbstractDimStack from a Tuple or NamedTuple of AbstractDimArray and an existing stack.

Keywords

Keywords are simply the fields of the stack object:

  • data

  • dims

  • refdims

  • metadata

  • layerdims

  • layermetadata

source

',6))]),i("details",ps,[i("summary",null,[s[156]||(s[156]=i("a",{id:"DimensionalData.show_main",href:"#DimensionalData.show_main"},[i("span",{class:"jlbinding"},"DimensionalData.show_main")],-1)),s[157]||(s[157]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[158]||(s[158]=l(`
julia
show_main(io::IO, mime, A::AbstractDimArray)
+show_main(io::IO, mime, A::AbstractDimStack)

Interface methods for adding the main part of show

At the least, you likely want to call:

julia
print_top(io, mime, A)

But read the DimensionalData.jl show.jl code for details.

source

`,6))]),i("details",ds,[i("summary",null,[s[159]||(s[159]=i("a",{id:"DimensionalData.show_after",href:"#DimensionalData.show_after"},[i("span",{class:"jlbinding"},"DimensionalData.show_after")],-1)),s[160]||(s[160]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[161]||(s[161]=l(`
julia
show_after(io::IO, mime, A::AbstractDimArray)
+show_after(io::IO, mime, A::AbstractDimStack)

Interface methods for adding additional show text for AbstractDimArray/AbstractDimStack subtypes.

Always include kw to avoid future breaking changes

Additional keywords may be added at any time.

blockwidth is passed in context

julia
blockwidth = get(io, :blockwidth, 10000)

Note - a ANSI box is left unclosed. This method needs to close it, or add more. blockwidth is the maximum length of the inner text.

Most likely you always want to at least close the show blocks with:

julia
print_block_close(io, blockwidth)

But read the DimensionalData.jl show.jl code for details.

source

`,11))]),i("details",rs,[i("summary",null,[s[162]||(s[162]=i("a",{id:"DimensionalData.refdims_title",href:"#DimensionalData.refdims_title"},[i("span",{class:"jlbinding"},"DimensionalData.refdims_title")],-1)),s[163]||(s[163]=a()),t(n,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[164]||(s[164]=l(`
julia
refdims_title(A::AbstractDimArray)
 refdims_title(refdims::Tuple)
-refdims_title(refdim::Dimension)

Generate a title string based on reference dimension values.

source

`,3))])])}const us=h(d,[["render",os]]);export{ms as __pageData,us as default}; +refdims_title(refdim::Dimension)

Generate a title string based on reference dimension values.

source

`,3))])])}const us=h(d,[["render",os]]);export{ms as __pageData,us as default}; diff --git a/dev/assets/app.DPWlp7eu.js b/dev/assets/app.DPWlp7eu.js deleted file mode 100644 index 3ecbb6968..000000000 --- a/dev/assets/app.DPWlp7eu.js +++ /dev/null @@ -1 +0,0 @@ -import{R as p}from"./chunks/theme.DDyAget_.js";import{R as o,a5 as u,a6 as c,a7 as l,d as f,u as d,v as m,s as h,a8 as g,a9 as A,aa as v,ab as P,ac as R,ad as w,ae as y,af as C,ag as b,ah as E,ai as S}from"./chunks/framework.Brp_kw4H.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=f({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=d();return m(()=>{h(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&g(),A(),v(),s.setup&&s.setup(),()=>P(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(R,e);const t=w(e.route);return a.provide(y,t),a.component("Content",C),a.component("ClientOnly",b),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:E}),{app:a,router:e,data:t}}function _(){return l(T)}function j(){let e=o,a;return u(t=>{let n=c(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{S(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/dev/assets/app.Sk_xtsRB.js b/dev/assets/app.Sk_xtsRB.js new file mode 100644 index 000000000..6d0e814fd --- /dev/null +++ b/dev/assets/app.Sk_xtsRB.js @@ -0,0 +1 @@ +import{R as p}from"./chunks/theme.BgWk1Cn2.js";import{R as o,a5 as u,a6 as c,a7 as l,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,ae as v,d as P,u as R,v as w,s as y,af as C,ag as b,ah as E,ai as S}from"./chunks/framework.60YQGL-0.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/dev/assets/basics.md.DvNeQ43N.js b/dev/assets/basics.md.DvSSF084.js similarity index 99% rename from dev/assets/basics.md.DvNeQ43N.js rename to dev/assets/basics.md.DvSSF084.js index ae051b395..b0b74877f 100644 --- a/dev/assets/basics.md.DvNeQ43N.js +++ b/dev/assets/basics.md.DvSSF084.js @@ -1,4 +1,4 @@ -import{_ as i,o as a,c as n,a4 as h}from"./chunks/framework.Brp_kw4H.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"basics.md","filePath":"basics.md","lastUpdated":null}'),l={name:"basics.md"};function k(t,s,e,p,d,r){return a(),n("div",null,s[0]||(s[0]=[h(`

Installation

If you want to use this package you need to install it first. You can do it using the following commands:

julia
julia> ] # ']' should be pressed
+import{_ as i,c as a,a4 as n,o as h}from"./chunks/framework.60YQGL-0.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"basics.md","filePath":"basics.md","lastUpdated":null}'),l={name:"basics.md"};function k(t,s,e,p,d,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Installation

If you want to use this package you need to install it first. You can do it using the following commands:

julia
julia> ] # ']' should be pressed
 pkg> add DimensionalData

or

julia
julia> using Pkg
 julia> Pkg.add("DimensionalData")

Additionally, it is recommended to check the version that you have installed with the status command.

julia
julia> ]
 pkg> status DimensionalData

Basics

Start using the package:

julia
using DimensionalData

and create your first DimArray

julia
julia> A = DimArray(rand(4,5), (a=1:4, b=1:5))
╭──────────────────────────╮
diff --git a/dev/assets/basics.md.DvNeQ43N.lean.js b/dev/assets/basics.md.DvSSF084.lean.js
similarity index 99%
rename from dev/assets/basics.md.DvNeQ43N.lean.js
rename to dev/assets/basics.md.DvSSF084.lean.js
index ae051b395..b0b74877f 100644
--- a/dev/assets/basics.md.DvNeQ43N.lean.js
+++ b/dev/assets/basics.md.DvSSF084.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,o as a,c as n,a4 as h}from"./chunks/framework.Brp_kw4H.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"basics.md","filePath":"basics.md","lastUpdated":null}'),l={name:"basics.md"};function k(t,s,e,p,d,r){return a(),n("div",null,s[0]||(s[0]=[h(`

Installation

If you want to use this package you need to install it first. You can do it using the following commands:

julia
julia> ] # ']' should be pressed
+import{_ as i,c as a,a4 as n,o as h}from"./chunks/framework.60YQGL-0.js";const y=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"basics.md","filePath":"basics.md","lastUpdated":null}'),l={name:"basics.md"};function k(t,s,e,p,d,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Installation

If you want to use this package you need to install it first. You can do it using the following commands:

julia
julia> ] # ']' should be pressed
 pkg> add DimensionalData

or

julia
julia> using Pkg
 julia> Pkg.add("DimensionalData")

Additionally, it is recommended to check the version that you have installed with the status command.

julia
julia> ]
 pkg> status DimensionalData

Basics

Start using the package:

julia
using DimensionalData

and create your first DimArray

julia
julia> A = DimArray(rand(4,5), (a=1:4, b=1:5))
╭──────────────────────────╮
diff --git a/dev/assets/broadcasts.md.DUhrmJhF.js b/dev/assets/broadcasts.md.D98V6alE.js
similarity index 99%
rename from dev/assets/broadcasts.md.DUhrmJhF.js
rename to dev/assets/broadcasts.md.D98V6alE.js
index 45d173b23..cfde6feaf 100644
--- a/dev/assets/broadcasts.md.DUhrmJhF.js
+++ b/dev/assets/broadcasts.md.D98V6alE.js
@@ -1,4 +1,4 @@
-import{_ as i,o as a,c as n,a4 as e}from"./chunks/framework.Brp_kw4H.js";const g=JSON.parse('{"title":"Dimensional broadcasts with @d and broadcast_dims","description":"","frontmatter":{},"headers":[],"relativePath":"broadcasts.md","filePath":"broadcasts.md","lastUpdated":null}'),h={name:"broadcasts.md"};function l(k,s,t,p,d,f){return a(),n("div",null,s[0]||(s[0]=[e(`

Dimensional broadcasts with @d and broadcast_dims

Broadcasting over AbstractDimArray works as usual with Base Julia broadcasts, except that dimensions are checked for compatibility with each other, and that values match. Strict checks can be turned off globally with strict_broadcast!(false). To avoid even dimension name checks, broadcast over parent(dimarray).

The @d macro is a dimension-aware extension to regular dot broadcasting. broadcast_dims is analogous to Base Julia's broadcast.

Because we know the names of the dimensions, there is no ambiguity in which ones we mean to broadcast together. This means we can permute and reshape dims so that broadcasts that would fail with a regular Array just work with a DimArray.

As an added bonus, broadcast_dims even works on DimStacks. Currently, @d does not work on DimStack.

Example: scaling along the time dimension

Define some dimensions:

julia
using DimensionalData
+import{_ as i,c as a,a4 as n,o as e}from"./chunks/framework.60YQGL-0.js";const g=JSON.parse('{"title":"Dimensional broadcasts with @d and broadcast_dims","description":"","frontmatter":{},"headers":[],"relativePath":"broadcasts.md","filePath":"broadcasts.md","lastUpdated":null}'),h={name:"broadcasts.md"};function l(k,s,t,p,d,f){return e(),a("div",null,s[0]||(s[0]=[n(`

Dimensional broadcasts with @d and broadcast_dims

Broadcasting over AbstractDimArray works as usual with Base Julia broadcasts, except that dimensions are checked for compatibility with each other, and that values match. Strict checks can be turned off globally with strict_broadcast!(false). To avoid even dimension name checks, broadcast over parent(dimarray).

The @d macro is a dimension-aware extension to regular dot broadcasting. broadcast_dims is analogous to Base Julia's broadcast.

Because we know the names of the dimensions, there is no ambiguity in which ones we mean to broadcast together. This means we can permute and reshape dims so that broadcasts that would fail with a regular Array just work with a DimArray.

As an added bonus, broadcast_dims even works on DimStacks. Currently, @d does not work on DimStack.

Example: scaling along the time dimension

Define some dimensions:

julia
using DimensionalData
 using Dates
 using Statistics
julia
julia> x, y, t = X(1:100), Y(1:25), Ti(DateTime(2000):Month(1):DateTime(2000, 12))
(X  1:100,
 Y  1:25,
diff --git a/dev/assets/broadcasts.md.DUhrmJhF.lean.js b/dev/assets/broadcasts.md.D98V6alE.lean.js
similarity index 99%
rename from dev/assets/broadcasts.md.DUhrmJhF.lean.js
rename to dev/assets/broadcasts.md.D98V6alE.lean.js
index 45d173b23..cfde6feaf 100644
--- a/dev/assets/broadcasts.md.DUhrmJhF.lean.js
+++ b/dev/assets/broadcasts.md.D98V6alE.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,o as a,c as n,a4 as e}from"./chunks/framework.Brp_kw4H.js";const g=JSON.parse('{"title":"Dimensional broadcasts with @d and broadcast_dims","description":"","frontmatter":{},"headers":[],"relativePath":"broadcasts.md","filePath":"broadcasts.md","lastUpdated":null}'),h={name:"broadcasts.md"};function l(k,s,t,p,d,f){return a(),n("div",null,s[0]||(s[0]=[e(`

Dimensional broadcasts with @d and broadcast_dims

Broadcasting over AbstractDimArray works as usual with Base Julia broadcasts, except that dimensions are checked for compatibility with each other, and that values match. Strict checks can be turned off globally with strict_broadcast!(false). To avoid even dimension name checks, broadcast over parent(dimarray).

The @d macro is a dimension-aware extension to regular dot broadcasting. broadcast_dims is analogous to Base Julia's broadcast.

Because we know the names of the dimensions, there is no ambiguity in which ones we mean to broadcast together. This means we can permute and reshape dims so that broadcasts that would fail with a regular Array just work with a DimArray.

As an added bonus, broadcast_dims even works on DimStacks. Currently, @d does not work on DimStack.

Example: scaling along the time dimension

Define some dimensions:

julia
using DimensionalData
+import{_ as i,c as a,a4 as n,o as e}from"./chunks/framework.60YQGL-0.js";const g=JSON.parse('{"title":"Dimensional broadcasts with @d and broadcast_dims","description":"","frontmatter":{},"headers":[],"relativePath":"broadcasts.md","filePath":"broadcasts.md","lastUpdated":null}'),h={name:"broadcasts.md"};function l(k,s,t,p,d,f){return e(),a("div",null,s[0]||(s[0]=[n(`

Dimensional broadcasts with @d and broadcast_dims

Broadcasting over AbstractDimArray works as usual with Base Julia broadcasts, except that dimensions are checked for compatibility with each other, and that values match. Strict checks can be turned off globally with strict_broadcast!(false). To avoid even dimension name checks, broadcast over parent(dimarray).

The @d macro is a dimension-aware extension to regular dot broadcasting. broadcast_dims is analogous to Base Julia's broadcast.

Because we know the names of the dimensions, there is no ambiguity in which ones we mean to broadcast together. This means we can permute and reshape dims so that broadcasts that would fail with a regular Array just work with a DimArray.

As an added bonus, broadcast_dims even works on DimStacks. Currently, @d does not work on DimStack.

Example: scaling along the time dimension

Define some dimensions:

julia
using DimensionalData
 using Dates
 using Statistics
julia
julia> x, y, t = X(1:100), Y(1:25), Ti(DateTime(2000):Month(1):DateTime(2000, 12))
(X  1:100,
 Y  1:25,
diff --git a/dev/assets/chunks/@localSearchIndexroot.WeONpZsl.js b/dev/assets/chunks/@localSearchIndexroot.WeONpZsl.js
new file mode 100644
index 000000000..90612e621
--- /dev/null
+++ b/dev/assets/chunks/@localSearchIndexroot.WeONpZsl.js
@@ -0,0 +1 @@
+const e='{"documentCount":87,"nextId":87,"documentIds":{"0":"/DimensionalData.jl/dev/api/dimensions#dimensions","1":"/DimensionalData.jl/dev/api/dimensions#Exported-methods","2":"/DimensionalData.jl/dev/api/dimensions#Non-exported-methods","3":"/DimensionalData.jl/dev/api/dimensions#Primitive-methods","4":"/DimensionalData.jl/dev/api/lookuparrays#lookups","5":"/DimensionalData.jl/dev/api/lookuparrays#selectors","6":"/DimensionalData.jl/dev/api/lookuparrays#Lookup-traits","7":"/DimensionalData.jl/dev/api/lookuparrays#order","8":"/DimensionalData.jl/dev/api/lookuparrays#span","9":"/DimensionalData.jl/dev/api/lookuparrays#sampling","10":"/DimensionalData.jl/dev/api/lookuparrays#positions","11":"/DimensionalData.jl/dev/api/lookuparrays#metadata","12":"/DimensionalData.jl/dev/basics#installation","13":"/DimensionalData.jl/dev/basics#basics","14":"/DimensionalData.jl/dev/broadcasts#Dimensional-broadcasts-with-@d-and-broadcast_dims","15":"/DimensionalData.jl/dev/broadcasts#Example:-scaling-along-the-time-dimension","16":"/DimensionalData.jl/dev/api/reference#API-Reference","17":"/DimensionalData.jl/dev/api/reference#arrays","18":"/DimensionalData.jl/dev/api/reference#Multi-array-datasets","19":"/DimensionalData.jl/dev/api/reference#Dimension-generators","20":"/DimensionalData.jl/dev/api/reference#Tables.jl/TableTraits.jl-interface","21":"/DimensionalData.jl/dev/api/reference#Group-by-methods","22":"/DimensionalData.jl/dev/api/reference#Utility-methods","23":"/DimensionalData.jl/dev/api/reference#Global-lookup-strictness-settings","24":"/DimensionalData.jl/dev/api/reference#name","25":"/DimensionalData.jl/dev/api/reference#Internal-interface","26":"/DimensionalData.jl/dev/cuda#CUDA-and-GPUs","27":"/DimensionalData.jl/dev/cuda#GPU-Integration-goals","28":"/DimensionalData.jl/dev/dimarrays#dimarrays","29":"/DimensionalData.jl/dev/dimarrays#Constructing-DimArray-with-arbitrary-dimension-names","30":"/DimensionalData.jl/dev/dimarrays#Dimensional-Indexing","31":"/DimensionalData.jl/dev/dimarrays#Begin-End-indexing","32":"/DimensionalData.jl/dev/dimarrays#dims-keywords","33":"/DimensionalData.jl/dev/dimarrays#performance","34":"/DimensionalData.jl/dev/dimensions#dimensions","35":"/DimensionalData.jl/dev/diskarrays#DiskArrays.jl-compatibility","36":"/DimensionalData.jl/dev/extending_dd#Extending-DimensionalData","37":"/DimensionalData.jl/dev/extending_dd#dims","38":"/DimensionalData.jl/dev/extending_dd#Dimension-axes","39":"/DimensionalData.jl/dev/extending_dd#dims-keywords","40":"/DimensionalData.jl/dev/extending_dd#rebuild","41":"/DimensionalData.jl/dev/extending_dd#format","42":"/DimensionalData.jl/dev/extending_dd#Interfaces.jl-interface-testing","43":"/DimensionalData.jl/dev/get_info#getters","44":"/DimensionalData.jl/dev/get_info#predicates","45":"/DimensionalData.jl/dev/groupby#Group-By","46":"/DimensionalData.jl/dev/groupby#Grouping-functions","47":"/DimensionalData.jl/dev/groupby#Grouping-and-reducing","48":"/DimensionalData.jl/dev/groupby#binning","49":"/DimensionalData.jl/dev/groupby#Select-by-Dimension","50":"/DimensionalData.jl/dev/integrations#integrations","51":"/DimensionalData.jl/dev/integrations#rasters-jl","52":"/DimensionalData.jl/dev/integrations#yaxarrays-jl","53":"/DimensionalData.jl/dev/integrations#climatebase-jl","54":"/DimensionalData.jl/dev/integrations#arviz-jl","55":"/DimensionalData.jl/dev/integrations#jump-jl","56":"/DimensionalData.jl/dev/integrations#cryogrid-jl","57":"/DimensionalData.jl/dev/integrations#dynamicgrids-jl","58":"/DimensionalData.jl/dev/integrations#astroimages-jl","59":"/DimensionalData.jl/dev/integrations#timeseriestools-jl","60":"/DimensionalData.jl/dev/object_modification#Modifying-Objects","61":"/DimensionalData.jl/dev/object_modification#modify","62":"/DimensionalData.jl/dev/object_modification#reorder","63":"/DimensionalData.jl/dev/object_modification#mergedims","64":"/DimensionalData.jl/dev/object_modification#rebuild","65":"/DimensionalData.jl/dev/object_modification#rebuild-magic","66":"/DimensionalData.jl/dev/object_modification#set","67":"/DimensionalData.jl/dev/plots#plots-jl","68":"/DimensionalData.jl/dev/plots#makie-jl","69":"/DimensionalData.jl/dev/plots#algebraofgraphics-jl","70":"/DimensionalData.jl/dev/plots#Test-series-plots","71":"/DimensionalData.jl/dev/plots#default-colormap","72":"/DimensionalData.jl/dev/plots#A-different-colormap","73":"/DimensionalData.jl/dev/plots#with-markers","74":"/DimensionalData.jl/dev/selectors#selectors","75":"/DimensionalData.jl/dev/selectors#lookups","76":"/DimensionalData.jl/dev/selectors#Lookup-autodetection","77":"/DimensionalData.jl/dev/selectors#DimSelector","78":"/DimensionalData.jl/dev/stacks#dimstacks","79":"/DimensionalData.jl/dev/stacks#NamedTuple-like-indexing","80":"/DimensionalData.jl/dev/stacks#Array-like-indexing","81":"/DimensionalData.jl/dev/stacks#Reducing-functions","82":"/DimensionalData.jl/dev/stacks#performance","83":"/DimensionalData.jl/dev/tables#Tables-and-DataFrames","84":"/DimensionalData.jl/dev/tables#example","85":"/DimensionalData.jl/dev/tables#Converting-to-DataFrame","86":"/DimensionalData.jl/dev/tables#Converting-to-CSV"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,303],"1":[2,1,130],"2":[3,1,134],"3":[2,1,346],"4":[1,1,486],"5":[1,1,329],"6":[2,1,38],"7":[1,3,70],"8":[1,3,90],"9":[1,3,63],"10":[1,3,97],"11":[1,1,144],"12":[1,1,40],"13":[1,1,152],"14":[7,1,90],"15":[6,7,334],"16":[2,1,1],"17":[1,2,357],"18":[3,2,223],"19":[2,2,230],"20":[4,2,112],"21":[3,1,346],"22":[2,1,407],"23":[4,1,234],"24":[1,4,59],"25":[2,4,179],"26":[3,1,176],"27":[3,3,110],"28":[1,1,246],"29":[6,1,75],"30":[2,1,256],"31":[3,1,129],"32":[2,1,118],"33":[1,1,88],"34":[1,1,104],"35":[3,1,82],"36":[2,1,68],"37":[1,2,18],"38":[2,3,56],"39":[2,3,47],"40":[1,2,106],"41":[1,2,54],"42":[4,2,91],"43":[1,1,217],"44":[1,1,58],"45":[2,1,21],"46":[2,2,116],"47":[3,2,207],"48":[1,2,287],"49":[3,2,143],"50":[1,1,1],"51":[2,1,69],"52":[2,1,36],"53":[2,1,12],"54":[2,1,18],"55":[2,1,24],"56":[2,1,18],"57":[2,1,34],"58":[2,1,15],"59":[2,1,9],"60":[2,1,39],"61":[1,2,83],"62":[1,2,82],"63":[1,2,23],"64":[1,2,188],"65":[2,3,51],"66":[1,2,135],"67":[2,1,51],"68":[2,1,66],"69":[2,2,165],"70":[3,2,1],"71":[2,5,21],"72":[3,5,32],"73":[2,5,19],"74":[1,1,198],"75":[1,1,217],"76":[2,1,157],"77":[1,1,313],"78":[1,1,89],"79":[3,1,171],"80":[3,1,127],"81":[2,1,137],"82":[1,1,69],"83":[3,1,67],"84":[1,3,115],"85":[3,3,251],"86":[3,3,85]},"averageFieldLength":[2.0229885057471266,1.7471264367816093,127.06896551724138],"storedFields":{"0":{"title":"Dimensions","titles":[]},"1":{"title":"Exported methods","titles":["Dimensions"]},"2":{"title":"Non-exported methods","titles":["Dimensions"]},"3":{"title":"Primitive methods","titles":["Dimensions"]},"4":{"title":"Lookups","titles":[]},"5":{"title":"Selectors","titles":["Lookups"]},"6":{"title":"Lookup traits","titles":["Lookups"]},"7":{"title":"Order","titles":["Lookups","Lookup traits"]},"8":{"title":"Span","titles":["Lookups","Lookup traits"]},"9":{"title":"Sampling","titles":["Lookups","Lookup traits"]},"10":{"title":"Positions","titles":["Lookups","Lookup traits"]},"11":{"title":"Metadata","titles":["Lookups"]},"12":{"title":"Installation","titles":[]},"13":{"title":"Basics","titles":[]},"14":{"title":"Dimensional broadcasts with @d and broadcast_dims","titles":[]},"15":{"title":"Example: scaling along the time dimension","titles":["Dimensional broadcasts with @d and broadcast_dims"]},"16":{"title":"API Reference","titles":[]},"17":{"title":"Arrays","titles":["API Reference"]},"18":{"title":"Multi-array datasets","titles":["API Reference"]},"19":{"title":"Dimension generators","titles":["API Reference"]},"20":{"title":"Tables.jl/TableTraits.jl interface","titles":["API Reference"]},"21":{"title":"Group by methods","titles":[]},"22":{"title":"Utility methods","titles":[]},"23":{"title":"Global lookup strictness settings","titles":[]},"24":{"title":"Name","titles":["Global lookup strictness settings"]},"25":{"title":"Internal interface","titles":["Global lookup strictness settings"]},"26":{"title":"CUDA & GPUs","titles":[]},"27":{"title":"GPU Integration goals","titles":["CUDA & GPUs"]},"28":{"title":"DimArrays","titles":[]},"29":{"title":"Constructing DimArray with arbitrary dimension names","titles":["DimArrays"]},"30":{"title":"Dimensional Indexing","titles":["DimArrays"]},"31":{"title":"Begin End indexing","titles":["DimArrays"]},"32":{"title":"dims keywords","titles":["DimArrays"]},"33":{"title":"Performance","titles":["DimArrays"]},"34":{"title":"Dimensions","titles":[]},"35":{"title":"DiskArrays.jl compatibility","titles":[]},"36":{"title":"Extending DimensionalData","titles":[]},"37":{"title":"dims","titles":["Extending DimensionalData"]},"38":{"title":"Dimension axes","titles":["Extending DimensionalData","dims"]},"39":{"title":"dims keywords","titles":["Extending DimensionalData","dims"]},"40":{"title":"rebuild","titles":["Extending DimensionalData"]},"41":{"title":"format","titles":["Extending DimensionalData"]},"42":{"title":"Interfaces.jl interface testing","titles":["Extending DimensionalData"]},"43":{"title":"Getters","titles":[]},"44":{"title":"Predicates","titles":["Getters"]},"45":{"title":"Group By","titles":[]},"46":{"title":"Grouping functions","titles":["Group By"]},"47":{"title":"Grouping and reducing","titles":["Group By"]},"48":{"title":"Binning","titles":["Group By"]},"49":{"title":"Select by Dimension","titles":["Group By"]},"50":{"title":"Integrations","titles":[]},"51":{"title":"Rasters.jl","titles":["Integrations"]},"52":{"title":"YAXArrays.jl","titles":["Integrations"]},"53":{"title":"ClimateBase.jl","titles":["Integrations"]},"54":{"title":"ArviZ.jl","titles":["Integrations"]},"55":{"title":"JuMP.jl","titles":["Integrations"]},"56":{"title":"CryoGrid.jl","titles":["Integrations"]},"57":{"title":"DynamicGrids.jl","titles":["Integrations"]},"58":{"title":"AstroImages.jl","titles":["Integrations"]},"59":{"title":"TimeseriesTools.jl","titles":["Integrations"]},"60":{"title":"Modifying Objects","titles":[]},"61":{"title":"modify","titles":["Modifying Objects"]},"62":{"title":"reorder","titles":["Modifying Objects"]},"63":{"title":"mergedims","titles":["Modifying Objects"]},"64":{"title":"rebuild","titles":["Modifying Objects"]},"65":{"title":"rebuild magic","titles":["Modifying Objects","rebuild"]},"66":{"title":"set","titles":["Modifying Objects"]},"67":{"title":"Plots.jl","titles":[]},"68":{"title":"Makie.jl","titles":[]},"69":{"title":"AlgebraOfGraphics.jl","titles":["Makie.jl"]},"70":{"title":"Test series plots","titles":["Makie.jl"]},"71":{"title":"default colormap","titles":["Makie.jl","Test series plots"]},"72":{"title":"A different colormap","titles":["Makie.jl","Test series plots"]},"73":{"title":"with markers","titles":["Makie.jl","Test series plots"]},"74":{"title":"Selectors","titles":[]},"75":{"title":"Lookups","titles":["Selectors"]},"76":{"title":"Lookup autodetection","titles":["Selectors"]},"77":{"title":"DimSelector","titles":["Selectors"]},"78":{"title":"DimStacks","titles":[]},"79":{"title":"NamedTuple-like indexing","titles":["DimStacks"]},"80":{"title":"Array-like indexing","titles":["DimStacks"]},"81":{"title":"Reducing functions","titles":["DimStacks"]},"82":{"title":"Performance","titles":["DimStacks"]},"83":{"title":"Tables and DataFrames","titles":[]},"84":{"title":"Example","titles":["Tables and DataFrames"]},"85":{"title":"Converting to DataFrame","titles":["Tables and DataFrames"]},"86":{"title":"Converting to CSV","titles":["Tables and DataFrames"]}},"dirtCount":0,"index":[["q",{"2":{"85":1}}],["quite",{"2":{"64":1}}],["quick",{"2":{"48":1}}],["quarters",{"2":{"21":1}}],["quantity",{"2":{"5":1}}],["quot",{"2":{"3":2,"6":2,"17":4,"34":2,"69":2}}],["query",{"2":{"1":16,"3":6,"17":16,"43":1}}],["─────┼──────────────────────────────────────────────────────────────────────────",{"2":{"85":1}}],["──────┼───────────────────────────────────────────",{"2":{"85":1}}],["──────┼───────────────────────────────────────────────",{"2":{"85":1}}],["──────┼───────────────────────────────────",{"2":{"85":1}}],["⋯",{"2":{"85":6}}],["$st",{"2":{"82":2}}],["$da4",{"2":{"33":2}}],["▂",{"2":{"33":2}}],["▄▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▆▁▁▁▁█",{"2":{"33":1}}],["█▁▅█▁▃▂▁▁▁▁▂▁▁▂▁▂▁▁▂▁▁▁▁▁▁▁▁▁▁▂▁▁▁▁▁▁▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▂▁▁▂▁▂",{"2":{"33":1}}],["█",{"2":{"33":2}}],["▁",{"2":{"33":1}}],["σ",{"2":{"33":4}}],["±",{"2":{"33":8}}],["┊",{"2":{"33":6}}],["~",{"2":{"31":2}}],["└",{"2":{"31":2}}],["└───────────────────────┘",{"2":{"17":4}}],["└─────────────────────────────────┘",{"2":{"29":1,"30":1}}],["└──────────────────────────────────────────────┘",{"2":{"19":1}}],["└────────────────────────────────────────────────────────┘",{"2":{"23":1}}],["└───────────────────────────────────────────────────────────┘",{"2":{"17":1}}],["└────────────────────────────────────────────────────────────────┘",{"2":{"28":11,"29":1,"30":1,"31":2,"33":1,"61":3,"66":1}}],["└────────────────────────────────────────────────────────────────────┘",{"2":{"26":1}}],["└────────────────────────────────────────────────────────────────────────┘",{"2":{"21":1}}],["└─────────────────────────────────────────────────────────────────────────┘",{"2":{"19":1,"22":3}}],["└───────────────────────────────────────────────────────────────────────────┘",{"2":{"22":1}}],["└──────────────────────────────────────────────────────────────────────────────┘",{"2":{"0":3,"5":1,"13":3,"15":8,"28":3,"30":2,"32":2,"43":1,"47":8,"48":11,"49":3,"62":2,"64":2,"66":5,"74":15,"75":1,"76":1,"77":5,"78":1,"79":8,"80":1,"81":25,"84":2,"85":1}}],["└──────────────────────────────────────────────────────────────────────────┘",{"2":{"4":1}}],["└───────────────────────────────────────────────────────────────────────┘",{"2":{"21":2}}],["└─────────────────────────────────────────────────────────────────────┘",{"2":{"17":3,"22":1}}],["└─────────────────────────────────────────────────────────────────┘",{"2":{"19":2}}],["└─────────────────────────────────────────────────────────────┘",{"2":{"5":1,"17":1}}],["└────────────────────────────────────────────────────────────┘",{"2":{"5":2}}],["└───────────────────────────────────────────────────────┘",{"2":{"17":1}}],["└──────────────────────────────┘",{"2":{"20":1}}],["└────────────────────────────┘",{"2":{"1":1,"3":1,"17":1}}],["┌",{"2":{"31":2}}],["├────────────────┴───────────────────────────────────────────────────────",{"2":{"85":1}}],["├───────────────────┴────────────────────────────────────────────────────",{"2":{"84":1}}],["├─────────────────────┴──────────────────────────────────────────────────",{"2":{"81":1}}],["├───────────────────────┴──────────────────────────────────",{"2":{"61":2}}],["├─────────────────────────┴──────────────────────────────────────────────",{"2":{"28":2}}],["├─────────────────────────┴────────────────────────────────",{"2":{"28":1}}],["├──────────────────────────┴───────────────────────────────",{"2":{"29":1,"31":2,"33":1}}],["├──────────────────────────┴────────────────────────────────",{"2":{"19":2}}],["├──────────────────────────┴────────────────────────────────────────",{"2":{"19":1,"22":3}}],["├──────────────────────────┴──────────────────────────────────────────",{"2":{"22":1}}],["├──────────────────────────┴─────────────────────────────────────────────",{"2":{"13":2,"30":1,"74":13,"76":1,"77":3}}],["├──────────────────────────┴─────────────────────────────────────────",{"2":{"4":1}}],["├──────────────────────────┴────────────────────────────────────",{"2":{"17":3,"22":1}}],["├────────────────────────────┴───────────────────────────────────────────",{"2":{"32":2,"43":1,"77":1}}],["├──────────────────────────────┴───────────────────────────",{"2":{"28":1}}],["├──────────────────────────────┴─────────────────────────────────────────",{"2":{"13":1}}],["├───────────────────────────────┴──────────────────────────────",{"2":{"26":1}}],["├────────────────────────────────┴",{"2":{"29":1,"30":1}}],["├────────────────────────────────┴─────────────────────────",{"2":{"28":2}}],["├────────────────────────────────┴───────────────────────────────────────",{"2":{"15":4,"47":1,"48":3,"74":2}}],["├──────────────────────────────────┴─────────────────────────────────────",{"2":{"47":3,"79":1}}],["├────────────────────────────────────┴───────────────────────────────────",{"2":{"64":1,"84":1}}],["├────────────────────────────────────┴─────────────────────",{"2":{"28":1}}],["├────────────────────────────────────────",{"2":{"19":1}}],["├─────────────────────────────────────────────┴──────────────────────────",{"2":{"75":1}}],["├──────────────────────────────────────────────────┴─────────────────────",{"2":{"48":7}}],["├────────────────────────────────────────────────────────",{"2":{"61":1}}],["├───────────────────────────────────────────────────────────",{"2":{"21":1}}],["├──────────────────────────────────────────────────────────────────",{"2":{"47":1,"48":8,"49":1}}],["├──────────────────────────────────────────────────────────────────────",{"2":{"78":1,"79":6,"80":1,"81":25,"84":1,"85":1}}],["├────────────────────────────────────────────────────────────────────",{"2":{"28":1,"47":7,"48":11,"49":2,"64":1}}],["├──────────────────────────────────────────────────────────────",{"2":{"21":1}}],["├─────────────────────────────────────────────────────────────",{"2":{"21":2}}],["├──────────────────────────────────────────────────────┴─────────────────",{"2":{"49":1}}],["├──────────────────────────────────────────────────────",{"2":{"28":5}}],["├───────────────────────────────────────────────────┴────────────────────",{"2":{"47":1,"48":1}}],["├───────────────────────────────────────────────────┴─────────────",{"2":{"21":1}}],["├────────────────────────────────────────────────",{"2":{"23":1}}],["├────────────────────────────────────────────┴────",{"2":{"17":1}}],["├─────────────────────────────────────────┴──────────────────────────────",{"2":{"15":1}}],["├────────────────────────────────────────┴────────────",{"2":{"17":1}}],["├────────────────────────────────────────┴──────────────",{"2":{"17":1}}],["├───────────────────────────────────────┴────────────────────────────────",{"2":{"15":1}}],["├─────────────────────────────────┴────────────────────────",{"2":{"28":1}}],["├─────────────────────────────────┴───────────────────────────────",{"2":{"21":1}}],["├─────────────────────────────────┴──────────────────────────────────────",{"2":{"0":1,"15":2,"47":3}}],["├─────────────────────────────┴──────────────────────────────────────────",{"2":{"0":1,"28":1,"30":1,"49":2,"77":1,"79":1}}],["├───────────────────────────┴──────────────────────────────",{"2":{"28":5,"30":1,"66":1}}],["├───────────────────────────┴──────────────────────────────────────",{"2":{"21":1}}],["├───────────────────────────┴────────────────────────────────────────────",{"2":{"0":1,"62":2,"64":1,"66":5}}],["├────────────────────────",{"2":{"20":1}}],["├────────────────────────┴───────────────────────────────────────────────",{"2":{"5":1}}],["├────────────────────────┴──────────────────────────────",{"2":{"5":1}}],["├────────────────────────┴─────────────────────────────",{"2":{"5":2}}],["├──────────────────────",{"2":{"1":1,"3":1,"17":1}}],["├────────────────────┴───────────────────────────────────────────────────",{"2":{"80":1}}],["├─────────────────",{"2":{"17":4}}],["├───────────────┴────────────────────────────────────────────────────────",{"2":{"78":1,"79":6,"81":24}}],["├──────────────┴───────────────────────────────────────────",{"2":{"61":1}}],["├──────────────┴───────────────────────────────────",{"2":{"23":1}}],["╭────────────────╮",{"2":{"85":1}}],["╭───────────────────╮",{"2":{"84":1}}],["╭─────────────────────╮",{"2":{"81":1}}],["╭───────────────────────╮",{"2":{"17":4,"61":2}}],["╭─────────────────────────╮",{"2":{"28":3}}],["╭──────────────────────────╮",{"2":{"4":1,"13":2,"17":3,"19":3,"22":5,"29":1,"30":1,"31":2,"33":1,"74":13,"76":1,"77":3}}],["╭────────────────────────────╮",{"2":{"1":1,"3":1,"17":1,"32":2,"43":1,"77":1}}],["╭───────────────────────────────╮",{"2":{"26":1}}],["╭────────────────────────────────╮",{"2":{"15":4,"28":2,"29":1,"30":1,"47":1,"48":3,"74":2}}],["╭──────────────────────────────────╮",{"2":{"47":3,"79":1}}],["╭────────────────────────────────────╮",{"2":{"28":1,"64":1,"84":1}}],["╭─────────────────────────────────────────────╮",{"2":{"75":1}}],["╭──────────────────────────────────────────────────────╮",{"2":{"49":1}}],["╭───────────────────────────────────────────────────╮",{"2":{"21":1,"47":1,"48":1}}],["╭──────────────────────────────────────────────────╮",{"2":{"48":7}}],["╭──────────────────────────────────────────────╮",{"2":{"19":1}}],["╭────────────────────────────────────────────╮",{"2":{"17":1}}],["╭─────────────────────────────────────────╮",{"2":{"15":1}}],["╭────────────────────────────────────────╮",{"2":{"17":2}}],["╭───────────────────────────────────────╮",{"2":{"15":1}}],["╭─────────────────────────────────╮",{"2":{"0":1,"15":2,"21":1,"28":1,"47":3}}],["╭──────────────────────────────╮",{"2":{"13":1,"20":1,"28":1}}],["╭─────────────────────────────╮",{"2":{"0":1,"28":1,"30":1,"49":2,"77":1,"79":1}}],["╭───────────────────────────╮",{"2":{"0":1,"21":1,"28":5,"30":1,"62":2,"64":1,"66":6}}],["╭────────────────────────╮",{"2":{"5":4}}],["╭────────────────────╮",{"2":{"80":1}}],["╭───────────────╮",{"2":{"78":1,"79":6,"81":24}}],["╭──────────────╮",{"2":{"23":1,"61":1}}],["+",{"2":{"22":3,"28":3,"69":1,"81":2}}],["⋱",{"2":{"15":5,"26":1,"47":1,"49":2,"77":2,"84":1,"85":1}}],["⋮",{"2":{"15":10,"21":3,"26":1,"46":8,"47":9,"48":3,"49":3,"77":3,"80":1,"84":2,"85":24,"86":1}}],["|>",{"2":{"13":1,"69":3}}],["𝐓",{"2":{"5":2}}],[">=",{"2":{"74":1}}],[">",{"2":{"5":3,"18":1,"48":2,"74":1}}],["9409",{"2":{"85":1}}],["9452913850518949",{"2":{"86":1}}],["945291",{"2":{"85":2}}],["945147",{"2":{"30":1}}],["9447511416331498",{"2":{"86":1}}],["944751",{"2":{"85":2}}],["94412",{"2":{"32":1}}],["9436941638102098",{"2":{"81":2}}],["943694",{"2":{"79":1}}],["943783",{"2":{"77":1}}],["947461",{"2":{"79":1}}],["946655",{"2":{"77":1}}],["948798",{"2":{"47":1}}],["949769",{"2":{"30":1}}],["941133",{"2":{"19":1}}],["94",{"2":{"15":1,"85":1}}],["936495",{"2":{"85":1}}],["934189",{"2":{"84":1}}],["934419",{"2":{"28":1}}],["93358",{"2":{"79":1}}],["933212",{"2":{"62":2,"64":2,"66":6}}],["930699",{"2":{"77":1}}],["930332",{"2":{"19":1}}],["93972",{"2":{"15":2}}],["93",{"2":{"15":1}}],["92977",{"2":{"77":1}}],["929034",{"2":{"76":1}}],["929995",{"2":{"26":1}}],["921567",{"2":{"85":1}}],["921958",{"2":{"84":1,"85":2}}],["921936",{"2":{"15":2}}],["921012",{"2":{"47":1,"49":2}}],["925844",{"2":{"30":1}}],["925624",{"2":{"30":1}}],["92721",{"2":{"26":1}}],["92",{"2":{"15":1,"77":1}}],["920182",{"2":{"13":1}}],["994395",{"2":{"77":1}}],["994",{"2":{"77":4}}],["990114",{"2":{"77":1}}],["993001",{"2":{"77":1}}],["991676",{"2":{"30":2}}],["99118",{"2":{"30":1}}],["999338",{"2":{"49":2}}],["999348",{"2":{"15":1}}],["999534",{"2":{"47":1}}],["999149",{"2":{"47":1}}],["999957",{"2":{"47":1}}],["999774",{"2":{"47":1}}],["999781",{"2":{"47":1}}],["999742",{"2":{"47":1}}],["999253",{"2":{"47":1}}],["999",{"2":{"26":1}}],["9982064541308482",{"2":{"80":2,"81":2}}],["998661",{"2":{"77":1}}],["998484",{"2":{"77":1}}],["998",{"2":{"26":1}}],["997572",{"2":{"28":2}}],["997",{"2":{"26":1}}],["996358",{"2":{"30":1}}],["996398",{"2":{"29":1,"31":2}}],["996807",{"2":{"28":2}}],["996",{"2":{"26":1}}],["995",{"2":{"26":1}}],["995683",{"2":{"26":1}}],["99282",{"2":{"15":1}}],["99",{"2":{"15":6,"47":1,"49":2,"65":2,"74":1,"85":1}}],["97954",{"2":{"85":1}}],["9770663775826343",{"2":{"86":1}}],["977066",{"2":{"85":2}}],["975511",{"2":{"84":1}}],["973",{"2":{"77":1}}],["973154",{"2":{"13":1}}],["97293",{"2":{"76":1}}],["97437",{"2":{"49":2}}],["97406",{"2":{"49":2}}],["97164033242648",{"2":{"81":2}}],["97164",{"2":{"79":1}}],["97132e",{"2":{"47":1}}],["971794",{"2":{"30":1}}],["971252",{"2":{"30":1}}],["97129",{"2":{"15":1}}],["97",{"2":{"15":4,"47":1,"49":1,"85":1}}],["902689",{"2":{"77":1}}],["90203",{"2":{"43":1}}],["904115",{"2":{"77":1}}],["909826",{"2":{"77":1}}],["909533",{"2":{"15":3}}],["905616",{"2":{"76":1}}],["905021",{"2":{"28":3}}],["903705",{"2":{"62":2,"64":2,"66":6}}],["90309",{"2":{"26":1}}],["906601",{"2":{"30":1}}],["906883",{"2":{"28":1}}],["906838",{"2":{"26":1}}],["90645",{"2":{"26":1}}],["9063",{"2":{"19":2}}],["900394",{"2":{"26":1}}],["90",{"2":{"13":1,"15":1}}],["90u",{"2":{"5":1}}],["956417",{"2":{"85":1}}],["953651",{"2":{"77":1}}],["950007",{"2":{"77":1}}],["950338",{"2":{"28":3}}],["954153",{"2":{"77":1}}],["951789",{"2":{"77":1}}],["952489",{"2":{"77":1}}],["95217",{"2":{"26":1}}],["958811",{"2":{"28":2}}],["959434",{"2":{"19":1}}],["95",{"2":{"13":2,"15":1,"85":1}}],["987",{"2":{"77":1}}],["98981",{"2":{"77":1}}],["989952",{"2":{"26":1}}],["98893",{"2":{"85":1}}],["988957",{"2":{"15":3}}],["988013",{"2":{"77":1}}],["980637",{"2":{"49":2}}],["986207",{"2":{"28":1}}],["982762",{"2":{"26":1}}],["98193",{"2":{"26":1}}],["98",{"2":{"13":3,"15":6,"47":1,"49":2,"77":1,"85":1}}],["9675326879984427",{"2":{"86":1}}],["960726",{"2":{"85":1}}],["960677",{"2":{"15":3}}],["963657",{"2":{"84":1}}],["966517",{"2":{"84":1,"85":1}}],["966475656859458e",{"2":{"81":1}}],["966",{"2":{"77":1}}],["966133",{"2":{"77":2}}],["969026",{"2":{"43":1}}],["962808",{"2":{"30":1}}],["968484",{"2":{"30":1}}],["965008",{"2":{"13":1}}],["96",{"2":{"5":2,"15":1,"47":1,"49":1,"77":1,"85":1}}],["917457",{"2":{"32":1}}],["917543",{"2":{"28":1}}],["916702",{"2":{"32":1}}],["9104238640380062",{"2":{"86":1}}],["910424",{"2":{"85":2}}],["910412",{"2":{"15":3}}],["910981",{"2":{"29":2,"31":2}}],["912676",{"2":{"28":1}}],["9155",{"2":{"26":1}}],["91495",{"2":{"26":1}}],["919534",{"2":{"15":3}}],["91",{"2":{"5":2,"15":1}}],["9",{"2":{"4":2,"13":3,"15":2,"19":2,"22":2,"28":18,"43":7,"46":1,"48":18,"75":1,"77":6,"79":3,"84":2,"85":4,"86":2}}],["7×5",{"2":{"76":1}}],["7×3",{"2":{"30":1}}],["7938317326707394",{"2":{"86":1}}],["793832",{"2":{"85":2}}],["79388",{"2":{"15":2}}],["793532",{"2":{"79":1}}],["798655984630017",{"2":{"86":1}}],["798656",{"2":{"85":2}}],["798621",{"2":{"30":1}}],["798",{"2":{"77":2}}],["791844",{"2":{"76":1}}],["799964",{"2":{"43":1}}],["799977",{"2":{"13":1}}],["796812",{"2":{"28":1}}],["797168",{"2":{"28":3}}],["79785",{"2":{"15":2}}],["792885",{"2":{"28":2}}],["79",{"2":{"15":1}}],["778122",{"2":{"79":1}}],["778222",{"2":{"26":1}}],["775634",{"2":{"79":1}}],["775495",{"2":{"77":1}}],["775377",{"2":{"28":3}}],["777408",{"2":{"77":1}}],["771237",{"2":{"76":1}}],["772277",{"2":{"74":4}}],["776593",{"2":{"30":1}}],["770316",{"2":{"29":1,"31":2}}],["774092",{"2":{"17":1,"19":1}}],["774131",{"2":{"15":3}}],["77",{"2":{"15":1}}],["7177678881661339",{"2":{"80":1}}],["717768",{"2":{"79":1}}],["7140841681506571",{"2":{"80":1}}],["714084",{"2":{"79":1}}],["713941",{"2":{"85":1}}],["713814",{"2":{"85":1}}],["7130893612876014",{"2":{"80":2}}],["713457",{"2":{"77":1}}],["71372",{"2":{"76":1}}],["712342",{"2":{"77":1}}],["711133",{"2":{"74":3}}],["716257",{"2":{"29":1,"31":2}}],["719974",{"2":{"26":1}}],["71",{"2":{"15":1}}],["752331",{"2":{"77":1}}],["75275",{"2":{"48":4}}],["751498",{"2":{"77":2}}],["75622",{"2":{"49":1}}],["757228",{"2":{"47":1}}],["754468",{"2":{"30":2}}],["750146",{"2":{"28":1}}],["755939",{"2":{"84":1}}],["755958",{"2":{"28":3}}],["755722",{"2":{"43":1}}],["75568",{"2":{"26":1}}],["758149",{"2":{"76":1}}],["758865",{"2":{"32":1}}],["75847",{"2":{"26":1}}],["758203",{"2":{"13":1}}],["75",{"2":{"15":1}}],["759047",{"2":{"15":3}}],["726244382496386",{"2":{"81":2}}],["72454",{"2":{"77":1}}],["724709",{"2":{"29":1,"31":2}}],["727464",{"2":{"77":1}}],["728852",{"2":{"77":1}}],["72217",{"2":{"76":1}}],["721101",{"2":{"15":3}}],["72",{"2":{"13":1,"15":1,"48":1}}],["743407",{"2":{"84":1}}],["74172",{"2":{"84":1,"85":1}}],["7410056618197303",{"2":{"80":1,"82":2}}],["741593",{"2":{"28":3}}],["747615",{"2":{"77":1}}],["747695",{"2":{"77":1}}],["740107",{"2":{"77":1}}],["748041",{"2":{"74":3}}],["748725",{"2":{"43":1}}],["744107",{"2":{"77":1}}],["744517",{"2":{"62":2,"64":2,"66":6}}],["74428",{"2":{"30":1}}],["742732",{"2":{"43":1}}],["749553",{"2":{"79":1}}],["749573",{"2":{"30":1}}],["749829",{"2":{"15":3}}],["745673",{"2":{"17":1,"19":2}}],["746465",{"2":{"15":3}}],["74",{"2":{"13":1,"15":1}}],["7057009741792366",{"2":{"80":1}}],["705701",{"2":{"79":1}}],["705582",{"2":{"30":2}}],["707314",{"2":{"77":1}}],["707692",{"2":{"28":3}}],["7044663405368152",{"2":{"86":1}}],["704466",{"2":{"85":2}}],["70488",{"2":{"32":1}}],["704613",{"2":{"15":3}}],["708081",{"2":{"30":2}}],["700218",{"2":{"28":1}}],["700389",{"2":{"28":2}}],["702845",{"2":{"43":1}}],["702956",{"2":{"30":1}}],["702944",{"2":{"26":1}}],["702787",{"2":{"15":3}}],["706165",{"2":{"15":3}}],["70",{"2":{"13":1,"15":1,"76":3}}],["70366",{"2":{"13":1}}],["780424",{"2":{"79":1}}],["78028",{"2":{"26":1}}],["7814968833366662",{"2":{"80":1}}],["781497",{"2":{"79":1}}],["78136e",{"2":{"47":1}}],["789667",{"2":{"85":1}}],["789816",{"2":{"77":1}}],["789198",{"2":{"29":1,"31":2}}],["784693",{"2":{"30":1}}],["783195",{"2":{"30":1}}],["7826",{"2":{"28":1}}],["788358",{"2":{"15":3}}],["78",{"2":{"13":2,"15":1}}],["76448",{"2":{"79":1}}],["764895",{"2":{"74":4}}],["764613",{"2":{"28":1}}],["76668",{"2":{"32":1}}],["769884",{"2":{"30":2}}],["762199",{"2":{"30":1}}],["762722",{"2":{"30":1}}],["76511",{"2":{"85":1}}],["765808",{"2":{"30":1}}],["765773",{"2":{"28":2}}],["768719",{"2":{"77":1}}],["7684883626668314",{"2":{"74":1}}],["768488",{"2":{"74":12}}],["768639",{"2":{"30":1}}],["768325",{"2":{"28":1}}],["760205",{"2":{"28":1}}],["761347",{"2":{"28":2}}],["76",{"2":{"13":4,"15":1}}],["739936",{"2":{"85":1}}],["738445",{"2":{"85":1}}],["735973",{"2":{"79":1}}],["73591",{"2":{"26":1}}],["730",{"2":{"47":2}}],["734452",{"2":{"43":1}}],["737979",{"2":{"28":2}}],["73623",{"2":{"26":1}}],["73",{"2":{"13":1,"15":1,"48":1}}],["7",{"2":{"4":4,"5":5,"13":1,"15":4,"28":120,"30":6,"43":9,"46":10,"48":5,"75":1,"76":1,"79":3,"81":20,"84":1,"85":12,"86":2}}],["rows",{"2":{"85":4}}],["row",{"2":{"85":4}}],["rot180",{"2":{"81":2}}],["rotr90",{"2":{"81":2}}],["rotl90",{"2":{"81":2}}],["rotated",{"2":{"4":1,"81":1}}],["rotations",{"2":{"3":1}}],["runtime",{"2":{"33":1}}],["running",{"2":{"26":1,"48":1}}],["rule",{"2":{"23":2}}],["r",{"2":{"17":2,"69":1,"85":1}}],["right",{"2":{"13":3,"66":2,"68":2}}],["rtol=nothing",{"2":{"5":1}}],["rainclouds",{"2":{"68":1}}],["raw",{"2":{"48":1}}],["rarely",{"2":{"35":1}}],["ram",{"2":{"35":1}}],["rasterization",{"2":{"51":1}}],["rasterize",{"2":{"5":1}}],["raster",{"2":{"36":1,"51":3}}],["rasterstack",{"2":{"36":1,"51":1}}],["rasters",{"0":{"51":1},"2":{"4":3,"22":1,"35":1,"36":1,"51":2,"52":1}}],["randn",{"2":{"23":2}}],["random",{"2":{"17":3}}],["rand",{"2":{"4":3,"13":3,"15":1,"17":8,"19":3,"21":1,"22":1,"26":1,"28":6,"29":1,"30":1,"32":1,"42":4,"43":1,"47":1,"62":1,"68":1,"69":1,"71":1,"74":1,"76":1,"77":3,"79":3,"84":2}}],["ranges",{"2":{"5":1,"21":1,"31":1,"48":6,"74":3,"76":4}}],["range",{"2":{"4":2,"5":4,"17":2,"22":1,"33":2,"41":1,"46":2,"48":1,"51":1,"74":1,"76":1}}],["rather",{"2":{"3":1,"4":2,"5":1,"9":1,"21":2,"27":1,"60":1,"62":1}}],["red",{"2":{"72":1,"73":1}}],["reductions",{"2":{"17":1,"35":1}}],["reducing",{"0":{"47":1,"81":1},"2":{"17":1,"21":3}}],["reduce",{"2":{"3":1,"21":2,"32":1,"81":2}}],["reduced",{"2":{"3":1}}],["reducedims",{"2":{"3":1}}],["receive",{"2":{"40":1}}],["reconstruction",{"2":{"17":1,"40":1}}],["recommended",{"2":{"12":1}}],["rev",{"2":{"22":2}}],["reversal",{"2":{"22":1}}],["reverseordered",{"2":{"4":5,"7":3,"43":15,"44":14,"48":1,"62":5,"76":2,"77":2,"81":8}}],["reverse",{"2":{"4":1,"7":1,"22":4,"32":1,"43":1,"62":1,"81":1}}],["reversed",{"2":{"4":1}}],["reordering",{"2":{"22":1}}],["reorder",{"0":{"62":1},"2":{"22":8,"62":4,"68":1}}],["relationships",{"2":{"35":1}}],["related",{"2":{"27":1}}],["relying",{"2":{"21":1}}],["reliable",{"2":{"4":1}}],["reasons",{"2":{"51":1}}],["reason",{"2":{"27":1,"51":1}}],["readlines",{"2":{"86":1}}],["read",{"2":{"25":2}}],["reading",{"2":{"21":1}}],["real",{"2":{"4":1}}],["really",{"2":{"3":1,"65":1}}],["remove",{"2":{"23":4}}],["removed",{"2":{"5":1}}],["removing",{"2":{"18":1}}],["rebuilt",{"2":{"17":1,"22":1,"60":1}}],["rebuilding",{"2":{"22":1}}],["rebuild",{"0":{"40":1,"64":1,"65":1},"1":{"65":1},"2":{"4":2,"17":3,"18":2,"22":6,"25":54,"27":1,"36":1,"40":7,"42":40,"64":6,"65":2,"66":1}}],["restrict",{"2":{"69":1}}],["restored",{"2":{"22":1}}],["reshaping",{"2":{"22":2}}],["reshape",{"2":{"14":1,"22":1,"63":1}}],["resolve",{"2":{"18":1,"31":1}}],["result",{"2":{"5":1,"18":1,"22":3,"26":1,"31":1,"83":1}}],["results",{"2":{"5":2,"21":2,"67":1}}],["requires",{"2":{"17":1,"39":1,"48":1}}],["require",{"2":{"9":1}}],["required",{"2":{"0":1,"3":1,"11":1,"20":1,"22":4,"27":1}}],["repl",{"2":{"75":1}}],["replaces",{"2":{"3":1,"27":1}}],["replaced",{"2":{"3":1,"8":1}}],["replace",{"2":{"3":2,"22":1,"61":1}}],["represents",{"2":{"38":1,"78":1}}],["representing",{"2":{"4":1}}],["represent",{"2":{"4":1,"10":1}}],["refdim",{"2":{"25":1}}],["refdims=refdims",{"2":{"18":1}}],["refdims=",{"2":{"17":1}}],["refdims",{"2":{"17":9,"22":2,"25":21,"40":1,"42":12,"64":2}}],["refence",{"2":{"17":1}}],["reference",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1},"2":{"3":2,"17":3,"25":1,"36":1}}],["refer",{"2":{"0":1,"9":1}}],["ref",{"2":{"3":1}}],["rewraps",{"2":{"3":1}}],["retrieved",{"2":{"34":1}}],["retrieves",{"2":{"5":1,"43":1}}],["retrieve",{"2":{"2":1,"5":1,"43":1}}],["returning",{"2":{"3":1,"11":1,"23":2,"81":1,"82":1}}],["returns",{"2":{"2":1,"3":3,"5":1,"11":2,"17":3,"18":2,"19":1,"21":1,"25":2,"42":2,"43":1,"46":1,"48":3,"80":1}}],["returned",{"2":{"1":1,"3":2,"4":1,"11":1,"17":1,"21":2,"22":4,"34":1,"38":1,"44":1}}],["return",{"2":{"1":3,"3":3,"4":8,"5":2,"17":6,"18":7,"21":7,"22":7,"37":1,"38":1,"39":2,"43":1,"44":1,"80":2}}],["regular",{"2":{"0":5,"2":1,"4":7,"5":4,"8":4,"10":2,"13":4,"14":2,"15":21,"17":7,"19":2,"20":1,"21":2,"22":9,"23":1,"26":3,"28":6,"30":2,"36":1,"39":1,"43":30,"44":28,"47":2,"48":1,"49":5,"62":2,"64":2,"66":5,"74":7,"75":3,"76":3,"77":6,"78":2,"79":15,"80":1,"81":49,"84":4,"85":2}}],["k",{"2":{"85":1}}],["kind",{"2":{"46":1}}],["kinds",{"2":{"17":4,"28":1}}],["knowing",{"2":{"30":1}}],["knows",{"2":{"15":1,"36":1}}],["know",{"2":{"14":1,"21":1,"64":1,"65":1}}],["known",{"2":{"4":5,"10":1,"30":1}}],["kw",{"2":{"3":5,"4":1,"5":1,"11":1,"17":12,"18":5,"22":3,"25":17,"40":2,"42":10,"64":2}}],["kernels",{"2":{"27":1}}],["kernelabstractions",{"2":{"27":1}}],["kernel",{"2":{"27":1}}],["keeping",{"2":{"3":1}}],["keep",{"2":{"3":1,"22":2,"24":1,"48":1}}],["key",{"2":{"23":3,"36":1}}],["keys=",{"2":{"23":2}}],["keys=keys",{"2":{"23":2}}],["keys",{"2":{"0":1,"11":2,"18":1,"23":2,"25":4,"48":1,"79":2}}],["keywords",{"0":{"32":1,"39":1},"2":{"3":2,"4":2,"17":5,"19":2,"20":1,"21":5,"22":1,"23":1,"25":5,"29":1,"31":1,"32":1,"40":1,"41":1,"42":2,"64":4,"65":1}}],["keyword",{"2":{"0":1,"4":3,"5":1,"17":1,"18":1,"21":1,"22":2,"23":1,"39":1,"40":2,"65":1}}],["kept",{"2":{"0":1,"3":1}}],["┤",{"2":{"1":1,"3":1,"17":5,"19":1,"20":1,"21":4,"23":1,"28":6,"47":8,"48":19,"49":3,"61":1,"64":1,"78":1,"79":6,"80":1,"81":25,"84":1,"85":1}}],["u",{"2":{"85":1}}],["utility",{"0":{"22":1}}],["updating",{"2":{"40":1}}],["update",{"2":{"22":3}}],["updates",{"2":{"17":1,"25":6,"42":6}}],["updated",{"2":{"3":2,"22":4,"25":6,"42":6}}],["upperbound",{"2":{"8":1}}],["upper",{"2":{"5":1,"8":1}}],["unrolled",{"2":{"83":1}}],["unnamed",{"2":{"69":1}}],["unambiguous",{"2":{"43":1}}],["unaltered",{"2":{"4":1}}],["unaligned",{"2":{"4":4}}],["unclosed",{"2":{"25":1}}],["unmerged",{"2":{"22":1}}],["unmergedims",{"2":{"22":2}}],["unmatched",{"2":{"1":1,"17":1}}],["unknown",{"2":{"19":1,"76":1}}],["underneath",{"2":{"65":1}}],["underlying",{"2":{"1":1,"17":1,"23":1}}],["undefined",{"2":{"4":1,"17":2,"21":1,"41":1}}],["unless",{"2":{"4":4,"5":1,"31":1,"76":1,"83":1}}],["unlike",{"2":{"3":2,"11":1,"19":1,"66":1}}],["unordered",{"2":{"4":6,"7":3,"48":3,"66":2,"75":2,"76":2}}],["unitrange",{"2":{"15":1,"21":2,"48":3,"74":2}}],["unit",{"2":{"11":2}}],["unitful",{"2":{"5":3}}],["units",{"2":{"2":1,"11":5}}],["unionall",{"2":{"3":1}}],["union",{"2":{"2":1,"3":1,"4":5,"5":1,"11":3,"21":2,"22":2,"24":1}}],["usage",{"2":{"17":1}}],["usual",{"2":{"14":1}}],["usually",{"2":{"0":1,"3":2,"17":1,"39":1,"46":1,"66":1,"74":1,"75":2,"82":1}}],["us",{"2":{"11":1,"30":1,"34":1,"66":1}}],["user",{"2":{"35":1}}],["uses",{"2":{"4":1,"8":1,"27":2,"34":1,"56":1,"59":1,"64":1}}],["useful",{"2":{"1":1,"3":3,"4":6,"19":1,"22":1,"43":1,"61":1,"64":1}}],["use",{"2":{"0":3,"3":1,"4":2,"5":3,"7":1,"11":1,"12":1,"15":1,"17":2,"18":3,"19":1,"22":3,"23":4,"24":3,"26":1,"29":1,"30":1,"31":1,"40":1,"44":1,"47":1,"48":5,"64":1,"69":3,"74":1,"77":1}}],["used",{"2":{"0":7,"2":1,"3":4,"4":7,"5":6,"6":1,"8":1,"9":1,"10":7,"18":2,"19":4,"21":9,"22":4,"23":1,"30":2,"31":2,"32":1,"34":1,"35":1,"40":3,"43":1,"46":1,"47":1,"57":1,"64":1,"68":1,"69":1,"75":1,"76":3}}],["using",{"2":{"0":2,"1":4,"3":1,"4":5,"5":3,"11":2,"12":2,"13":1,"15":2,"17":10,"18":1,"19":2,"20":2,"21":1,"22":6,"23":3,"27":1,"28":1,"29":1,"31":1,"32":1,"33":1,"34":1,"40":2,"42":1,"43":3,"46":2,"47":1,"61":1,"62":1,"69":1,"74":2,"75":1,"78":1,"82":1,"84":2,"85":2}}],["v",{"2":{"85":1}}],["visual",{"2":{"69":3}}],["visualizations",{"2":{"69":2}}],["visualise",{"2":{"58":1}}],["via",{"2":{"35":2}}],["views",{"2":{"23":2,"56":1}}],["view",{"2":{"3":1,"17":1,"18":2,"19":1,"31":1}}],["vec",{"2":{"69":2}}],["vectors",{"2":{"3":1,"30":1,"74":3}}],["vector",{"2":{"0":1,"4":2,"5":6,"18":1,"21":11,"22":2,"30":2,"43":2,"46":8,"48":4,"74":5,"75":3,"80":2,"86":1}}],["very",{"2":{"18":2,"52":1,"64":1,"69":1,"82":1}}],["versions",{"2":{"40":2}}],["version",{"2":{"12":1,"18":1,"22":2,"40":1,"64":1,"65":1}}],["var",{"2":{"32":1,"81":2}}],["variable",{"2":{"22":1,"60":1,"68":1,"69":1}}],["vararg",{"2":{"1":4,"2":3,"3":6,"4":5,"17":10,"18":2,"20":1,"22":3,"25":1,"30":1}}],["valtype",{"2":{"3":1}}],["valid",{"2":{"3":1}}],["val",{"2":{"2":2,"3":1,"4":4,"11":1,"22":5,"34":2,"39":2,"43":3,"64":4}}],["val=",{"2":{"0":5}}],["value",{"2":{"0":1,"3":2,"4":2,"5":15,"8":1,"9":1,"10":1,"17":7,"18":3,"19":1,"21":7,"24":1,"28":1,"29":1,"34":1,"43":2,"69":1,"74":4,"82":1}}],["values=autovalues",{"2":{"4":1}}],["values",{"2":{"0":1,"2":1,"3":4,"4":15,"5":17,"7":1,"9":2,"10":6,"14":1,"17":1,"18":3,"19":5,"21":8,"22":3,"23":5,"25":1,"38":1,"40":1,"46":1,"48":5,"60":1,"63":1,"64":1,"66":2,"67":1,"74":5,"75":5,"76":3,"77":1,"80":2}}],["nanoseconds",{"2":{"82":1}}],["name=nothing",{"2":{"18":1}}],["name=noname",{"2":{"17":1}}],["name=",{"2":{"15":1,"17":1,"18":3,"22":1,"28":6,"64":1,"84":1}}],["names",{"0":{"29":1},"2":{"14":1,"20":1,"22":2,"23":4,"24":1,"29":1,"34":2,"43":1,"74":1,"75":1}}],["name2dim",{"2":{"3":3}}],["name",{"0":{"24":1},"2":{"2":1,"14":1,"17":11,"20":2,"22":4,"24":11,"25":4,"27":3,"29":1,"34":2,"40":1,"42":4,"64":2,"69":2,"74":1,"78":1,"79":2,"83":2}}],["namedtuple",{"0":{"79":1},"2":{"11":3,"15":1,"18":12,"22":3,"25":2,"78":2,"79":1,"80":4,"82":1}}],["named",{"2":{"0":1,"10":2,"24":1,"28":1,"31":1,"34":1,"55":1,"69":1,"72":1}}],["n=rand",{"2":{"79":1}}],["nt",{"2":{"65":2}}],["ntuple",{"2":{"1":3,"2":3,"17":5}}],["night",{"2":{"48":4}}],["nice",{"2":{"48":1}}],["ncdatasets",{"2":{"35":1}}],["ns",{"2":{"33":14,"82":2}}],["ndims",{"2":{"25":5,"42":3}}],["nvidia",{"2":{"22":1}}],["neighbor",{"2":{"77":1}}],["neighbour",{"2":{"19":1}}],["necessary",{"2":{"24":1}}],["necessarily",{"2":{"22":1}}],["netcdf",{"2":{"10":1,"35":1}}],["next",{"2":{"5":1}}],["needs",{"2":{"24":1,"25":1}}],["needed",{"2":{"17":1,"27":1,"64":1,"76":1}}],["need",{"2":{"4":1,"12":1,"18":3,"21":1,"22":4,"27":3}}],["nearly",{"2":{"36":1}}],["nearsest",{"2":{"5":1}}],["nearest",{"2":{"5":3,"19":1,"77":1}}],["near",{"2":{"4":2,"5":7,"17":2,"19":2,"74":3,"77":2}}],["newdim",{"2":{"3":4}}],["newdims",{"2":{"3":4}}],["new",{"2":{"0":1,"3":5,"4":1,"17":2,"20":1,"22":13,"36":1,"40":1,"81":1}}],["nosampling",{"2":{"66":1}}],["nospan",{"2":{"66":1}}],["nov",{"2":{"48":4,"75":1}}],["now",{"2":{"46":1,"48":1,"55":1,"75":1,"80":1}}],["normalization",{"2":{"49":1}}],["normal",{"2":{"7":1,"24":1}}],["nometadata",{"2":{"4":3,"11":2,"15":2,"17":1}}],["nolookup",{"2":{"4":11,"17":4,"22":1,"66":2,"75":9,"76":1}}],["no",{"2":{"2":1,"3":3,"4":2,"11":1,"14":1,"22":2,"33":1,"35":1,"66":1,"75":1,"76":1,"82":1}}],["nonnumeric",{"2":{"69":2}}],["noname",{"2":{"22":1,"24":5}}],["non",{"0":{"2":1},"2":{"17":2,"18":1}}],["notice",{"2":{"19":1,"21":1}}],["notably",{"2":{"18":2,"57":1}}],["note",{"2":{"5":1,"17":1,"21":1,"22":1,"25":1,"48":2,"69":2}}],["notes",{"2":{"4":1,"22":1}}],["nothing",{"2":{"1":1,"3":3,"4":1,"5":1,"8":2,"11":4,"17":1,"76":4}}],["not",{"2":{"0":1,"1":1,"3":4,"4":6,"5":8,"10":3,"11":4,"14":1,"15":1,"17":2,"19":2,"21":1,"22":7,"23":3,"24":2,"25":4,"27":1,"30":1,"31":2,"40":1,"41":1,"43":1,"48":3,"51":1,"62":1,"64":3,"66":1,"67":1,"69":1,"74":4,"75":2,"76":1,"79":3,"80":1,"81":1,"83":1}}],["number",{"2":{"1":1,"3":1,"4":1,"17":1,"21":5,"25":2,"42":2,"64":1,"76":1}}],["n",{"2":{"1":1,"2":3,"3":1,"4":3,"17":3,"48":1,"62":5,"64":4,"66":6,"79":3,"85":1}}],["`refdims`",{"2":{"42":2}}],["`dims`",{"2":{"42":2}}],["`da`",{"2":{"22":1}}],["`cuarray`",{"2":{"26":1}}],["`modify`",{"2":{"26":1}}],["`openinterval",{"2":{"5":1}}],["`",{"2":{"0":1,"22":2}}],["875994",{"2":{"47":1}}],["873096",{"2":{"30":1}}],["87656",{"2":{"79":1}}],["876115",{"2":{"30":1}}],["876395",{"2":{"28":3}}],["870583",{"2":{"30":1}}],["870485",{"2":{"19":1}}],["874037",{"2":{"28":1}}],["87436",{"2":{"26":1}}],["879899",{"2":{"28":3}}],["87",{"2":{"15":1}}],["8560905731682101",{"2":{"86":1}}],["856091",{"2":{"85":2}}],["856524",{"2":{"43":1}}],["852872",{"2":{"85":1}}],["855976",{"2":{"76":1}}],["853835",{"2":{"30":1}}],["853879",{"2":{"15":3}}],["854239",{"2":{"79":1}}],["854076",{"2":{"28":3}}],["854739",{"2":{"26":1}}],["85",{"2":{"15":1,"85":1}}],["845200516911609",{"2":{"86":1}}],["845201",{"2":{"85":2}}],["843637",{"2":{"85":1}}],["849707",{"2":{"85":1}}],["840593",{"2":{"84":1}}],["8428656510212863",{"2":{"86":1}}],["842866",{"2":{"85":2}}],["842029",{"2":{"79":1}}],["84219",{"2":{"15":2}}],["846736",{"2":{"77":2}}],["846581",{"2":{"47":1}}],["846",{"2":{"31":2}}],["846175",{"2":{"28":2}}],["847981",{"2":{"28":1}}],["84",{"2":{"15":1,"77":1}}],["844262",{"2":{"15":5}}],["832345",{"2":{"77":1}}],["838572",{"2":{"77":1}}],["839223",{"2":{"43":1}}],["83904",{"2":{"15":2}}],["830655",{"2":{"43":1}}],["830187",{"2":{"29":1,"31":2}}],["83056",{"2":{"26":1}}],["835288",{"2":{"26":1}}],["83",{"2":{"15":1}}],["819605",{"2":{"85":1}}],["819291",{"2":{"77":1}}],["8146121812750928",{"2":{"86":1}}],["814612",{"2":{"85":2}}],["817821",{"2":{"85":1}}],["817575",{"2":{"79":1}}],["817199",{"2":{"77":1}}],["81708",{"2":{"26":1}}],["810377",{"2":{"77":1}}],["811947",{"2":{"32":1}}],["813229",{"2":{"28":1}}],["813705",{"2":{"28":3}}],["81",{"2":{"15":1}}],["894053",{"2":{"85":1}}],["890574",{"2":{"84":1}}],["890377",{"2":{"77":1}}],["899783",{"2":{"77":1}}],["895115",{"2":{"77":1}}],["89559",{"2":{"77":1}}],["896257",{"2":{"76":1}}],["89609",{"2":{"30":1}}],["89757",{"2":{"43":1}}],["89248",{"2":{"32":1}}],["891663",{"2":{"30":1}}],["891743",{"2":{"28":2}}],["893267",{"2":{"28":2}}],["893537",{"2":{"19":1}}],["89",{"2":{"13":1,"15":1}}],["8268020755919178",{"2":{"86":1}}],["826802",{"2":{"85":2}}],["826098",{"2":{"28":3}}],["827349",{"2":{"77":1}}],["827655",{"2":{"28":2}}],["828161",{"2":{"84":1}}],["828604",{"2":{"84":1}}],["82862",{"2":{"15":1}}],["828315",{"2":{"77":1}}],["824556",{"2":{"62":2,"64":2,"66":6}}],["8234",{"2":{"28":1}}],["823656",{"2":{"17":1}}],["82356",{"2":{"15":2}}],["82",{"2":{"13":1,"15":1,"47":2}}],["8632634208267141",{"2":{"80":2,"81":2}}],["86273",{"2":{"74":3}}],["869012",{"2":{"74":9}}],["86986",{"2":{"32":1}}],["86789",{"2":{"62":2,"64":2,"66":6}}],["867547",{"2":{"17":1,"19":1}}],["86858",{"2":{"43":1}}],["868064",{"2":{"13":1}}],["866772",{"2":{"30":1}}],["866334",{"2":{"28":3}}],["865298",{"2":{"28":3}}],["86112",{"2":{"85":1}}],["861535",{"2":{"43":1}}],["86194",{"2":{"32":1}}],["86174",{"2":{"26":1}}],["861652",{"2":{"15":3}}],["864856",{"2":{"19":1}}],["86",{"2":{"13":2,"15":1}}],["884385",{"2":{"85":1}}],["884218",{"2":{"62":2,"64":2,"66":6}}],["887294",{"2":{"84":1}}],["882656",{"2":{"76":1}}],["883323",{"2":{"76":1}}],["883222",{"2":{"74":3}}],["883048",{"2":{"30":1}}],["889153",{"2":{"47":1}}],["881528",{"2":{"85":1}}],["881533",{"2":{"30":1}}],["881149",{"2":{"26":1}}],["888721",{"2":{"84":1}}],["88841",{"2":{"30":1}}],["88869",{"2":{"26":1}}],["886959",{"2":{"28":2}}],["88092",{"2":{"26":1}}],["88058",{"2":{"26":1}}],["88",{"2":{"13":1,"15":1,"77":1}}],["8030281996030815",{"2":{"80":1}}],["800929",{"2":{"85":1}}],["8002301328044032",{"2":{"80":2}}],["80023",{"2":{"79":1}}],["800084",{"2":{"15":3}}],["806495",{"2":{"77":1}}],["802776",{"2":{"74":6}}],["805743",{"2":{"43":1}}],["80455",{"2":{"26":1}}],["80",{"2":{"4":1,"15":1,"48":1}}],["8",{"2":{"0":1,"4":1,"5":2,"13":1,"15":4,"18":1,"28":18,"30":4,"43":7,"46":1,"48":11,"74":8,"75":2,"77":7,"79":3,"84":2,"85":12,"86":2}}],["6×10",{"2":{"79":1,"81":30}}],["6×6",{"2":{"77":3}}],["6×3",{"2":{"74":2}}],["6am",{"2":{"48":1}}],["682734",{"2":{"77":1}}],["687569",{"2":{"84":1}}],["687921",{"2":{"76":1}}],["687236",{"2":{"30":1}}],["680987",{"2":{"76":1}}],["686915",{"2":{"62":2,"64":2,"66":6}}],["688928",{"2":{"28":2}}],["688175",{"2":{"28":2}}],["689712",{"2":{"28":2}}],["68136",{"2":{"28":2}}],["68",{"2":{"15":1}}],["683795",{"2":{"76":1}}],["68326",{"2":{"15":3}}],["68316",{"2":{"13":1}}],["679632",{"2":{"85":1}}],["6793280401673898",{"2":{"80":1}}],["67989",{"2":{"77":1}}],["679453",{"2":{"76":1}}],["670607",{"2":{"85":1}}],["670627",{"2":{"77":1}}],["670688",{"2":{"28":3}}],["672556",{"2":{"77":1}}],["674881",{"2":{"47":1}}],["676945",{"2":{"30":1}}],["677549",{"2":{"47":1}}],["6778",{"2":{"30":1}}],["677848",{"2":{"30":1}}],["677974",{"2":{"28":1}}],["677207",{"2":{"28":1}}],["675459",{"2":{"77":1}}],["675467",{"2":{"28":1}}],["675126",{"2":{"30":1}}],["67539",{"2":{"15":3}}],["67178",{"2":{"28":1}}],["67",{"2":{"15":1}}],["669153",{"2":{"85":1}}],["6691920691407321",{"2":{"80":1}}],["669192",{"2":{"79":1}}],["6652884461390509",{"2":{"80":1}}],["665742",{"2":{"26":1}}],["668226",{"2":{"79":1}}],["668594",{"2":{"15":3}}],["662479108116419e",{"2":{"81":1}}],["662632",{"2":{"79":1}}],["662227",{"2":{"77":1}}],["660657",{"2":{"77":1}}],["660024",{"2":{"43":1}}],["664038",{"2":{"47":1,"49":2}}],["667691",{"2":{"30":1}}],["667976",{"2":{"28":1}}],["661715",{"2":{"28":1}}],["66622",{"2":{"26":1}}],["66",{"2":{"15":1}}],["6518774627227301",{"2":{"80":1}}],["651877",{"2":{"79":1}}],["651538",{"2":{"76":1}}],["659836",{"2":{"77":1}}],["65906",{"2":{"43":1}}],["650675",{"2":{"76":1}}],["654129",{"2":{"49":1}}],["654537",{"2":{"47":1,"49":2}}],["654591",{"2":{"43":1}}],["655936",{"2":{"30":2}}],["65",{"2":{"15":1,"48":1}}],["645529",{"2":{"85":1}}],["64534",{"2":{"85":1}}],["6445457662038467",{"2":{"80":1}}],["644748",{"2":{"30":2}}],["641266",{"2":{"77":1}}],["641023",{"2":{"30":1}}],["647225",{"2":{"76":1}}],["647328",{"2":{"15":3}}],["64923",{"2":{"32":1}}],["640693",{"2":{"30":1}}],["642908",{"2":{"26":1}}],["64",{"2":{"15":1,"48":1}}],["636476",{"2":{"84":1}}],["634257",{"2":{"77":1}}],["635373",{"2":{"77":2}}],["635425",{"2":{"30":1}}],["631878",{"2":{"77":1}}],["639039",{"2":{"77":1}}],["639212",{"2":{"47":1,"49":1}}],["63959",{"2":{"43":1}}],["638072",{"2":{"30":1}}],["638336",{"2":{"30":1}}],["637077",{"2":{"17":2}}],["637399",{"2":{"15":3}}],["63",{"2":{"15":1}}],["622735",{"2":{"85":1}}],["620473",{"2":{"85":1}}],["621422",{"2":{"77":1}}],["621662",{"2":{"76":1}}],["621603",{"2":{"74":5}}],["621601",{"2":{"15":3}}],["626382",{"2":{"77":1}}],["627002",{"2":{"30":1}}],["627107",{"2":{"28":3}}],["629352",{"2":{"30":2}}],["629882",{"2":{"28":1}}],["625257",{"2":{"28":1}}],["628507",{"2":{"28":2}}],["628275",{"2":{"28":2}}],["62",{"2":{"15":1}}],["624685",{"2":{"15":5}}],["619787",{"2":{"85":1}}],["610193",{"2":{"85":1}}],["61025",{"2":{"26":1}}],["6146564273146751",{"2":{"86":1}}],["614656",{"2":{"85":2}}],["614012",{"2":{"30":1}}],["612828",{"2":{"84":1}}],["615705",{"2":{"66":1}}],["616635",{"2":{"47":1}}],["616666",{"2":{"43":1}}],["61858",{"2":{"15":2}}],["61341",{"2":{"15":2}}],["61",{"2":{"13":1,"15":1}}],["694278906020718",{"2":{"86":1}}],["694279",{"2":{"85":2}}],["694096",{"2":{"77":1}}],["691687",{"2":{"79":1}}],["691162",{"2":{"19":1}}],["693866",{"2":{"77":1}}],["690159",{"2":{"77":1}}],["699118",{"2":{"77":1}}],["69689e",{"2":{"47":1}}],["697976",{"2":{"30":1}}],["69506",{"2":{"26":1}}],["692209",{"2":{"19":2}}],["692235",{"2":{"17":1}}],["69",{"2":{"13":1,"15":1}}],["607291",{"2":{"84":1,"85":2}}],["603823",{"2":{"79":1}}],["603258",{"2":{"77":1}}],["602631",{"2":{"79":1}}],["602",{"2":{"77":1}}],["6063",{"2":{"77":1}}],["606279",{"2":{"30":1}}],["601787",{"2":{"77":1}}],["601474",{"2":{"29":1,"31":2}}],["601833",{"2":{"28":3}}],["600306",{"2":{"15":3}}],["60",{"2":{"4":1,"5":1,"15":1,"76":1,"80":1}}],["6",{"2":{"0":1,"4":2,"5":18,"13":3,"15":10,"18":1,"19":4,"22":4,"26":1,"28":18,"43":7,"46":11,"47":4,"48":20,"74":14,"75":1,"77":3,"78":1,"79":12,"80":4,"81":19,"85":12,"86":2}}],["4×6",{"2":{"19":1}}],["4×5",{"2":{"13":1}}],["495624",{"2":{"77":1}}],["495215",{"2":{"15":1}}],["496092",{"2":{"47":1}}],["496532",{"2":{"47":1}}],["496329",{"2":{"47":1}}],["496943",{"2":{"47":1}}],["497705",{"2":{"47":1}}],["497559",{"2":{"47":1}}],["497181",{"2":{"28":1}}],["494267",{"2":{"30":2}}],["493065",{"2":{"85":1}}],["493072",{"2":{"30":2}}],["493784",{"2":{"77":1}}],["493258",{"2":{"30":1}}],["493417",{"2":{"28":3}}],["49097",{"2":{"26":1}}],["498801",{"2":{"21":1}}],["498606",{"2":{"21":1}}],["498145",{"2":{"21":1}}],["498704",{"2":{"21":1}}],["49232",{"2":{"15":2}}],["49169278767038266",{"2":{"81":1}}],["49118673636340926",{"2":{"80":2}}],["491911",{"2":{"77":1}}],["491202",{"2":{"15":1}}],["491479",{"2":{"15":1}}],["499307",{"2":{"77":1}}],["499353",{"2":{"47":1}}],["499837",{"2":{"48":1}}],["499959",{"2":{"48":1}}],["499901",{"2":{"48":1}}],["499985",{"2":{"21":1}}],["499069",{"2":{"47":1}}],["499693",{"2":{"47":1,"48":1}}],["499674",{"2":{"15":1}}],["499237",{"2":{"47":1}}],["499298",{"2":{"21":1}}],["499282",{"2":{"15":1}}],["499594",{"2":{"21":1}}],["499762",{"2":{"21":1}}],["49",{"2":{"15":1,"48":1}}],["456688",{"2":{"85":1}}],["457841",{"2":{"85":1}}],["450775",{"2":{"77":1}}],["450629",{"2":{"77":1}}],["454047",{"2":{"77":1}}],["454033",{"2":{"30":1}}],["454134",{"2":{"77":1}}],["454715",{"2":{"47":1}}],["45152471334016764",{"2":{"80":1}}],["451525",{"2":{"79":1}}],["451",{"2":{"33":1}}],["451879",{"2":{"28":2}}],["45804",{"2":{"26":1}}],["45",{"2":{"15":1}}],["44833963865079907",{"2":{"86":1}}],["44818",{"2":{"77":1}}],["445218",{"2":{"85":1}}],["445628",{"2":{"43":1}}],["4496996354823414",{"2":{"86":1}}],["4497",{"2":{"85":2}}],["449491",{"2":{"85":2}}],["4492",{"2":{"26":1}}],["44764230965596247",{"2":{"81":1}}],["44724",{"2":{"15":3}}],["4408839264303761",{"2":{"80":1}}],["440884",{"2":{"79":1}}],["44097",{"2":{"43":1}}],["442111",{"2":{"76":1}}],["444305",{"2":{"74":12}}],["441181",{"2":{"76":1}}],["44104",{"2":{"28":1}}],["441762",{"2":{"15":2}}],["443494",{"2":{"17":1,"19":1}}],["44",{"2":{"15":1}}],["42964",{"2":{"77":1}}],["428951",{"2":{"47":1,"49":2}}],["423538",{"2":{"43":1}}],["42331",{"2":{"15":1}}],["426134",{"2":{"77":1}}],["426312",{"2":{"77":1}}],["426888",{"2":{"29":1,"31":2}}],["42648",{"2":{"15":1}}],["42151",{"2":{"26":1}}],["420756",{"2":{"19":1}}],["427328",{"2":{"17":1,"19":1}}],["42",{"2":{"15":1}}],["436622",{"2":{"84":1,"85":1}}],["436293",{"2":{"29":1,"31":2}}],["434286",{"2":{"84":1}}],["434374",{"2":{"15":3}}],["439371",{"2":{"85":1}}],["439711995898844",{"2":{"80":1}}],["439142",{"2":{"15":2}}],["4338946695122107",{"2":{"80":1}}],["43314",{"2":{"15":3}}],["43235163202114113",{"2":{"80":2,"82":2}}],["432028",{"2":{"77":1}}],["435719",{"2":{"30":1}}],["43",{"2":{"15":1}}],["431398",{"2":{"15":3}}],["438592",{"2":{"15":3}}],["4787707397082731",{"2":{"81":1}}],["476423096559625",{"2":{"81":2}}],["4727022060041937",{"2":{"81":2}}],["473944",{"2":{"77":1}}],["474535",{"2":{"79":1}}],["474052",{"2":{"62":2,"64":2,"66":6}}],["474087",{"2":{"15":3}}],["474755",{"2":{"62":2,"64":2,"66":6}}],["471877",{"2":{"47":1,"49":2}}],["475569",{"2":{"47":1}}],["475747",{"2":{"28":1}}],["475786",{"2":{"15":3}}],["479126",{"2":{"26":1}}],["47",{"2":{"13":1,"15":1,"48":2}}],["41940525122635797",{"2":{"86":1}}],["417756",{"2":{"85":1}}],["412631",{"2":{"77":1}}],["418968",{"2":{"47":1}}],["411529",{"2":{"30":1}}],["41173",{"2":{"30":1}}],["413756",{"2":{"28":1}}],["41334",{"2":{"26":1}}],["416444",{"2":{"15":3}}],["41",{"2":{"13":2,"15":1,"48":1}}],["486559",{"2":{"84":1}}],["48240020633837055",{"2":{"80":1}}],["48275",{"2":{"26":1}}],["487197",{"2":{"62":2,"64":2,"66":6}}],["487601",{"2":{"26":1}}],["48952511607945026",{"2":{"86":1}}],["489525",{"2":{"85":2}}],["48912e",{"2":{"47":1}}],["489497",{"2":{"15":1}}],["488473",{"2":{"85":1}}],["48889263023704055",{"2":{"80":1}}],["488136",{"2":{"79":1}}],["48817",{"2":{"32":1}}],["488029",{"2":{"29":2,"31":2}}],["481184",{"2":{"32":1}}],["4854948068259556",{"2":{"80":1}}],["485952",{"2":{"77":1}}],["485119",{"2":{"47":1}}],["485321",{"2":{"30":2}}],["485687",{"2":{"19":1}}],["485718",{"2":{"15":1}}],["48",{"2":{"13":1,"15":1,"48":1}}],["462859",{"2":{"77":1}}],["462981",{"2":{"26":1}}],["465112",{"2":{"77":1}}],["460775",{"2":{"77":1}}],["46788",{"2":{"29":1,"31":2}}],["468184",{"2":{"28":1}}],["468066",{"2":{"28":1}}],["464554",{"2":{"26":1}}],["46",{"2":{"13":3,"15":1}}],["40268027828179853",{"2":{"86":1}}],["402083",{"2":{"85":1}}],["40169",{"2":{"77":1}}],["406221",{"2":{"30":1}}],["40584",{"2":{"26":1}}],["404773",{"2":{"30":1}}],["40409",{"2":{"26":1}}],["404635",{"2":{"13":1}}],["403111",{"2":{"28":3}}],["40322",{"2":{"15":1}}],["403955",{"2":{"15":3}}],["407207",{"2":{"15":3}}],["40",{"2":{"4":1,"15":1,"17":3,"48":1,"76":1}}],["4",{"2":{"0":5,"3":1,"4":5,"5":12,"13":6,"15":8,"17":6,"18":2,"19":2,"21":1,"22":14,"23":3,"26":2,"28":15,"30":5,"32":1,"43":7,"46":1,"47":5,"48":8,"74":18,"75":1,"77":2,"79":1,"81":2,"82":3,"84":1,"85":12,"86":2}}],["0970658",{"2":{"85":1}}],["09300753748828394",{"2":{"86":1}}],["0930075",{"2":{"85":2}}],["0963009",{"2":{"79":1}}],["0967863",{"2":{"19":1}}],["0905873",{"2":{"77":1}}],["0923954",{"2":{"77":1}}],["0928922",{"2":{"76":1}}],["0927459",{"2":{"28":2}}],["0915867",{"2":{"62":2,"64":2,"66":6}}],["0958843",{"2":{"85":1}}],["095824",{"2":{"43":1}}],["095",{"2":{"33":2}}],["0959042",{"2":{"28":2}}],["0992684",{"2":{"32":1}}],["0990347",{"2":{"30":1}}],["0999314",{"2":{"28":3}}],["0991336",{"2":{"19":2}}],["09",{"2":{"0":1,"15":6,"49":1,"75":1}}],["084109",{"2":{"85":1}}],["0852624",{"2":{"79":1}}],["0821229",{"2":{"77":1}}],["0811277",{"2":{"77":1}}],["0831822",{"2":{"77":1}}],["0837074",{"2":{"15":3}}],["0897302",{"2":{"47":1}}],["08094675775408827",{"2":{"81":1}}],["08035217265254364",{"2":{"81":1}}],["0804518",{"2":{"26":1}}],["0802658",{"2":{"17":1}}],["08",{"2":{"0":1,"15":4,"49":1,"75":1,"77":1}}],["07986058669268159",{"2":{"86":1}}],["0760101",{"2":{"77":1}}],["0760848",{"2":{"32":1}}],["0737984",{"2":{"77":1}}],["0738813",{"2":{"30":1}}],["0773793",{"2":{"77":1}}],["0775482",{"2":{"77":1}}],["0789906",{"2":{"30":1}}],["0781957",{"2":{"13":1}}],["0707995",{"2":{"28":1}}],["072176",{"2":{"79":1}}],["0724261",{"2":{"77":1}}],["07277",{"2":{"26":1}}],["0725917",{"2":{"15":3}}],["0710221",{"2":{"13":1}}],["07",{"2":{"0":1,"15":4,"49":1,"75":1}}],["067300",{"2":{"85":1}}],["0670244",{"2":{"77":1}}],["0670111",{"2":{"13":1}}],["061892",{"2":{"85":1}}],["0699673",{"2":{"77":1}}],["0697249",{"2":{"28":1}}],["0661958",{"2":{"77":1}}],["0689895",{"2":{"77":1}}],["0641884",{"2":{"32":1}}],["0649391",{"2":{"26":1}}],["0623616",{"2":{"30":1}}],["0621546",{"2":{"28":1}}],["0622255",{"2":{"28":3}}],["06",{"2":{"0":1,"15":4,"49":1,"75":1}}],["05906689600077611",{"2":{"81":1}}],["0599255",{"2":{"28":1}}],["0599431",{"2":{"26":1}}],["0506805",{"2":{"77":1}}],["0575993",{"2":{"76":1}}],["0578313",{"2":{"30":1}}],["05t03",{"2":{"49":4}}],["0536623",{"2":{"43":1}}],["0531003",{"2":{"30":2}}],["0542529",{"2":{"77":1}}],["0545071",{"2":{"43":1}}],["054613",{"2":{"28":1}}],["0541549",{"2":{"15":3}}],["0557598",{"2":{"26":1}}],["05",{"2":{"0":1,"15":4,"49":1,"74":1,"75":1}}],["0445446",{"2":{"85":1}}],["0442448",{"2":{"15":5}}],["049689",{"2":{"84":1}}],["04060837507113502",{"2":{"80":1,"82":2}}],["0406084",{"2":{"79":1}}],["0400057",{"2":{"43":1}}],["0410007",{"2":{"77":1}}],["0417586",{"2":{"77":1}}],["04169",{"2":{"15":2}}],["0450386",{"2":{"30":1}}],["0471885",{"2":{"15":5}}],["04",{"2":{"0":1,"15":6,"49":1,"75":1,"77":3}}],["038",{"2":{"82":1}}],["037",{"2":{"82":1}}],["0379776",{"2":{"30":1}}],["0328886",{"2":{"79":1}}],["0320967",{"2":{"19":1}}],["0309852",{"2":{"85":1}}],["0300922",{"2":{"77":1}}],["0303789",{"2":{"19":1}}],["0363983",{"2":{"30":1}}],["0314382",{"2":{"30":1}}],["0315486",{"2":{"28":2}}],["0392779",{"2":{"28":2}}],["0333106",{"2":{"13":1}}],["03",{"2":{"0":1,"15":6,"47":1,"49":2,"75":1}}],["029602",{"2":{"85":1}}],["0216477",{"2":{"85":1}}],["021",{"2":{"77":1}}],["0255364",{"2":{"77":1}}],["02098",{"2":{"32":1}}],["0287126",{"2":{"28":1}}],["0238569",{"2":{"28":3}}],["0239356",{"2":{"28":3}}],["02",{"2":{"0":2,"15":6,"47":1,"49":2,"75":1}}],["0",{"2":{"0":60,"1":6,"3":8,"4":28,"5":8,"13":20,"15":178,"17":86,"18":16,"19":81,"20":240,"21":19,"22":176,"26":69,"28":546,"29":28,"30":148,"31":50,"32":12,"33":25,"43":175,"44":42,"46":2,"47":63,"48":20,"49":53,"61":105,"62":50,"64":48,"66":141,"74":147,"75":7,"76":35,"77":234,"78":16,"79":133,"80":89,"81":155,"82":12,"84":48,"85":150,"86":36}}],["0019198597596568057",{"2":{"86":1}}],["00191986",{"2":{"85":2}}],["00125e",{"2":{"47":1}}],["00258281",{"2":{"77":1}}],["007",{"2":{"77":3}}],["00428189",{"2":{"77":1}}],["0042232",{"2":{"43":1}}],["00869054",{"2":{"77":1}}],["00832284",{"2":{"47":1,"49":1}}],["00633515",{"2":{"43":1}}],["0038728108200783984",{"2":{"81":2}}],["00387281",{"2":{"79":1}}],["00337686",{"2":{"30":2}}],["00396",{"2":{"15":1}}],["00327",{"2":{"15":1}}],["00",{"2":{"0":42,"15":164,"33":10,"46":4,"47":10,"49":37,"75":32}}],["0120967",{"2":{"84":1,"85":1}}],["0171909",{"2":{"79":1}}],["0170682",{"2":{"79":1}}],["0135194",{"2":{"77":1}}],["0130048",{"2":{"29":1,"31":2}}],["015759978623873905",{"2":{"81":2}}],["01576",{"2":{"79":1}}],["0157247",{"2":{"43":1}}],["0154473",{"2":{"77":1}}],["011",{"2":{"48":2}}],["01t03",{"2":{"49":2}}],["01t02",{"2":{"49":1}}],["01t01",{"2":{"47":1,"49":2}}],["01t00",{"2":{"0":21,"15":82,"46":1,"47":2,"49":7,"75":16}}],["0160205",{"2":{"30":1}}],["014402783553701615",{"2":{"81":2}}],["014",{"2":{"77":1}}],["0143204",{"2":{"77":1}}],["0140644",{"2":{"28":1}}],["0145691",{"2":{"15":3}}],["0197492",{"2":{"26":1}}],["0106725",{"2":{"47":1,"49":1}}],["0109523",{"2":{"43":1}}],["0104608",{"2":{"30":1}}],["0102884",{"2":{"28":2}}],["010",{"2":{"22":2}}],["01",{"2":{"0":5,"15":15,"46":1,"47":6,"49":21,"75":3}}],["↗",{"2":{"0":1,"1":1,"3":1,"13":1,"15":6,"17":1,"20":1,"21":1,"22":1,"30":1,"32":2,"34":1,"84":3}}],["→",{"2":{"0":4,"1":3,"3":2,"4":2,"5":8,"13":4,"15":11,"17":15,"18":1,"19":12,"20":1,"21":3,"22":12,"23":2,"26":2,"28":17,"29":1,"30":7,"31":2,"32":2,"33":1,"34":2,"43":7,"44":11,"47":3,"48":8,"49":5,"61":3,"62":4,"64":4,"66":11,"74":26,"76":2,"77":10,"78":2,"79":8,"81":24,"84":4,"85":1}}],["↓",{"2":{"0":5,"1":4,"3":3,"4":2,"5":8,"13":5,"15":14,"17":18,"18":1,"19":12,"20":1,"21":5,"22":12,"23":2,"26":2,"28":17,"29":2,"30":8,"31":2,"32":2,"33":1,"34":2,"43":12,"44":15,"47":10,"48":19,"49":6,"61":3,"62":4,"64":4,"66":11,"74":28,"75":1,"76":2,"77":10,"78":2,"79":9,"80":1,"81":25,"84":4,"85":1}}],["┐",{"2":{"0":3,"4":1,"5":4,"13":3,"15":8,"17":6,"19":3,"21":3,"22":5,"23":1,"26":1,"28":14,"29":2,"30":4,"31":2,"32":2,"33":1,"43":1,"47":8,"48":11,"49":3,"61":3,"62":2,"64":2,"66":6,"74":15,"75":1,"76":1,"77":5,"78":1,"79":8,"80":1,"81":25,"84":2,"85":1}}],["│",{"2":{"0":6,"1":2,"3":2,"4":2,"5":8,"13":6,"15":16,"17":22,"19":8,"20":2,"21":6,"22":10,"23":2,"26":2,"28":28,"29":4,"30":8,"31":4,"32":4,"33":2,"43":2,"47":16,"48":22,"49":6,"61":6,"62":4,"64":4,"66":12,"74":30,"75":2,"76":2,"77":10,"78":2,"79":16,"80":2,"81":50,"84":4,"85":74}}],["5×1",{"2":{"74":1}}],["5×10",{"2":{"28":16}}],["5×5",{"2":{"29":1,"31":2}}],["5×4",{"2":{"4":1}}],["581131",{"2":{"85":2}}],["585756",{"2":{"47":1,"49":1}}],["585658",{"2":{"15":3}}],["589536",{"2":{"43":1}}],["5891",{"2":{"15":2}}],["58",{"2":{"15":1}}],["5697400488168892",{"2":{"86":1}}],["56974",{"2":{"85":2}}],["569347",{"2":{"77":1}}],["562491",{"2":{"77":1}}],["56273",{"2":{"30":1}}],["564657",{"2":{"77":1}}],["564152",{"2":{"49":1}}],["565229",{"2":{"66":1}}],["561953",{"2":{"43":1}}],["561365",{"2":{"28":1}}],["56",{"2":{"15":1,"48":1}}],["5501481631111826",{"2":{"86":1}}],["550148",{"2":{"85":2}}],["55560637324799",{"2":{"86":1}}],["555606",{"2":{"85":2}}],["556096",{"2":{"43":1}}],["552838",{"2":{"43":1}}],["557418",{"2":{"77":1}}],["557369",{"2":{"28":1}}],["557524",{"2":{"28":1}}],["55713",{"2":{"15":2}}],["553558",{"2":{"28":1}}],["55",{"2":{"15":1}}],["5370455292538254",{"2":{"80":1}}],["537046",{"2":{"79":1}}],["53407",{"2":{"77":1}}],["534915",{"2":{"28":3}}],["531012",{"2":{"77":1}}],["533041",{"2":{"77":1}}],["539197",{"2":{"77":1}}],["539076",{"2":{"19":1}}],["539028",{"2":{"13":1}}],["532757",{"2":{"49":1}}],["53259",{"2":{"15":1}}],["530908",{"2":{"49":2}}],["535933",{"2":{"30":1}}],["53632",{"2":{"15":2}}],["53",{"2":{"15":1}}],["5201836703588896",{"2":{"80":1}}],["520184",{"2":{"79":1}}],["5203602669427675",{"2":{"80":1}}],["52036",{"2":{"79":1}}],["527254",{"2":{"77":1}}],["527261",{"2":{"30":1}}],["528009",{"2":{"77":1}}],["528138",{"2":{"30":1}}],["52849",{"2":{"13":1}}],["52496",{"2":{"28":1}}],["52389",{"2":{"15":2}}],["52",{"2":{"15":1}}],["599241",{"2":{"84":1,"85":2}}],["5943408850726459",{"2":{"80":3}}],["595409",{"2":{"77":1}}],["59542",{"2":{"15":2}}],["593346",{"2":{"66":1}}],["597808",{"2":{"30":1}}],["59705",{"2":{"26":1}}],["591606",{"2":{"30":1}}],["596077",{"2":{"28":2}}],["59",{"2":{"13":1,"15":1}}],["54624",{"2":{"84":1}}],["546357",{"2":{"15":3}}],["5434869639181522",{"2":{"80":2}}],["545522",{"2":{"77":1}}],["545156",{"2":{"13":1}}],["548479",{"2":{"43":1}}],["54822",{"2":{"26":1}}],["541438",{"2":{"28":1}}],["542251",{"2":{"28":3}}],["547848",{"2":{"15":2}}],["54",{"2":{"13":1,"15":1}}],["516396",{"2":{"85":1}}],["51621",{"2":{"84":1}}],["518938",{"2":{"84":1}}],["518483",{"2":{"79":1}}],["5154448003579335",{"2":{"80":1,"82":2}}],["515445",{"2":{"79":1}}],["513088",{"2":{"77":1}}],["513909",{"2":{"77":1}}],["519705",{"2":{"77":1}}],["519235",{"2":{"28":2}}],["510587",{"2":{"85":1}}],["510196",{"2":{"30":1}}],["510863",{"2":{"15":1}}],["511313",{"2":{"74":3}}],["511078",{"2":{"29":1,"31":2}}],["511978",{"2":{"28":3}}],["514177",{"2":{"28":1}}],["517175",{"2":{"84":1}}],["517329",{"2":{"28":2}}],["517971",{"2":{"15":3}}],["512083",{"2":{"17":1,"19":1}}],["51",{"2":{"13":1,"15":1,"47":1}}],["573469",{"2":{"77":1}}],["573391",{"2":{"77":1}}],["573147",{"2":{"32":1}}],["574526",{"2":{"77":2}}],["574678",{"2":{"77":1}}],["575878",{"2":{"49":2}}],["578183",{"2":{"47":1}}],["571658",{"2":{"30":1}}],["571821",{"2":{"13":1}}],["576903",{"2":{"28":3}}],["570725",{"2":{"84":1,"85":1}}],["570396",{"2":{"77":1}}],["570603",{"2":{"76":1}}],["570254",{"2":{"28":1}}],["57019",{"2":{"26":1}}],["570914",{"2":{"13":1}}],["57",{"2":{"5":1,"13":2,"15":1,"48":1}}],["5099922507050859",{"2":{"86":1}}],["509231",{"2":{"28":1}}],["508938",{"2":{"77":1}}],["508614",{"2":{"77":1}}],["50854",{"2":{"15":2}}],["5055",{"2":{"48":4}}],["505694",{"2":{"47":1}}],["50562",{"2":{"15":1}}],["503183",{"2":{"77":2}}],["503785",{"2":{"47":1}}],["503823",{"2":{"29":2,"31":2}}],["506181",{"2":{"79":1}}],["506221",{"2":{"76":1}}],["506084",{"2":{"47":1}}],["506965",{"2":{"43":1}}],["507581",{"2":{"43":1}}],["502499",{"2":{"30":2}}],["50156726022296",{"2":{"81":2}}],["50102",{"2":{"47":1}}],["501998",{"2":{"47":1}}],["501282",{"2":{"47":1}}],["501643",{"2":{"21":1}}],["501105",{"2":{"21":1}}],["501124",{"2":{"15":1}}],["501379",{"2":{"21":1}}],["500355",{"2":{"48":1}}],["500331",{"2":{"47":1,"48":2}}],["500136",{"2":{"47":1}}],["500155",{"2":{"47":1}}],["500665",{"2":{"47":1,"48":2}}],["500644",{"2":{"21":1}}],["500533",{"2":{"21":1}}],["50047",{"2":{"21":1}}],["500495",{"2":{"15":1}}],["500874",{"2":{"21":1}}],["500818",{"2":{"15":1}}],["500058",{"2":{"47":1}}],["500083",{"2":{"21":1}}],["500064",{"2":{"21":1}}],["50",{"2":{"5":3,"13":4,"15":1,"17":9,"76":1}}],["5u",{"2":{"5":1}}],["5",{"2":{"0":1,"4":3,"5":21,"13":6,"15":10,"17":2,"18":1,"19":1,"22":7,"23":1,"26":1,"28":34,"29":2,"30":6,"32":1,"43":9,"46":1,"47":4,"48":5,"61":3,"74":7,"75":2,"76":1,"78":3,"79":11,"80":1,"81":36,"85":12,"86":2}}],["3a",{"2":{"18":1}}],["3×14",{"2":{"62":2,"64":2,"66":6}}],["3×5",{"2":{"23":2,"61":10}}],["3×5×12",{"2":{"0":1}}],["3×4×1",{"2":{"32":1}}],["3×4×5",{"2":{"32":1}}],["3×4",{"2":{"22":5}}],["3×3",{"2":{"17":3,"19":1,"33":1,"74":3}}],["3×2",{"2":{"17":1,"74":1}}],["371583",{"2":{"77":1}}],["376",{"2":{"48":3}}],["370",{"2":{"48":2}}],["37821",{"2":{"30":1}}],["378395",{"2":{"30":1}}],["372311",{"2":{"30":2}}],["374451",{"2":{"28":1}}],["374026",{"2":{"26":1}}],["373575",{"2":{"28":2}}],["37963",{"2":{"26":1}}],["37",{"2":{"15":1}}],["367212",{"2":{"85":1}}],["369225",{"2":{"79":1}}],["369",{"2":{"48":3}}],["368",{"2":{"48":3}}],["361536",{"2":{"77":1}}],["361",{"2":{"48":3}}],["361921",{"2":{"29":1,"31":2}}],["362",{"2":{"47":1}}],["363",{"2":{"47":2}}],["365",{"2":{"47":2}}],["366",{"2":{"47":3}}],["364097",{"2":{"84":1,"85":2}}],["364079",{"2":{"49":1}}],["364844",{"2":{"62":2,"64":2,"66":6}}],["364",{"2":{"46":18,"47":3}}],["36",{"2":{"15":1}}],["360032",{"2":{"77":1}}],["360",{"2":{"4":2,"48":1}}],["341133",{"2":{"84":1}}],["341785",{"2":{"77":2}}],["34922817761541347",{"2":{"81":1}}],["3463451596221927",{"2":{"80":1}}],["3475368849412708",{"2":{"80":1}}],["347379",{"2":{"28":1}}],["34882573131206984",{"2":{"80":1}}],["348826",{"2":{"79":1}}],["344",{"2":{"48":1}}],["342499",{"2":{"77":1}}],["342437",{"2":{"28":1}}],["342887",{"2":{"30":1}}],["342919",{"2":{"30":1}}],["345667",{"2":{"79":1}}],["34589",{"2":{"77":1}}],["345",{"2":{"48":1}}],["345046",{"2":{"30":2}}],["345501",{"2":{"26":1}}],["34",{"2":{"15":1}}],["333095",{"2":{"77":1}}],["331422",{"2":{"77":1}}],["336376",{"2":{"84":1}}],["336",{"2":{"48":1}}],["336768",{"2":{"47":1}}],["337",{"2":{"33":1,"48":1}}],["337576",{"2":{"29":1,"31":2}}],["338669",{"2":{"30":1}}],["334152",{"2":{"17":1,"19":1}}],["33",{"2":{"15":1,"47":1,"48":2}}],["315302",{"2":{"85":1}}],["314906",{"2":{"76":1}}],["317813",{"2":{"62":2,"64":2,"66":6}}],["313",{"2":{"48":1}}],["313185",{"2":{"30":2}}],["312",{"2":{"48":1}}],["312976",{"2":{"47":1}}],["310753",{"2":{"30":1}}],["316833",{"2":{"30":3}}],["311448",{"2":{"17":1}}],["31",{"2":{"15":1,"33":1,"47":1}}],["302073",{"2":{"85":1}}],["307762",{"2":{"76":1}}],["301659",{"2":{"76":1}}],["30t22",{"2":{"49":1}}],["30t23",{"2":{"46":1,"47":2,"49":2}}],["30×17520",{"2":{"48":3}}],["3053673139967894",{"2":{"86":1}}],["305367",{"2":{"85":2}}],["305",{"2":{"48":1}}],["306932",{"2":{"28":3}}],["30923",{"2":{"26":1}}],["3047",{"2":{"75":1}}],["304688",{"2":{"26":1}}],["30427",{"2":{"26":1}}],["300304",{"2":{"77":1}}],["300",{"2":{"22":1}}],["30",{"2":{"15":1,"17":1,"18":2,"19":4,"22":9,"33":1,"46":18,"47":2,"66":2,"76":1,"77":1}}],["3258728635315493",{"2":{"80":2}}],["325413",{"2":{"49":2}}],["329",{"2":{"48":1}}],["321",{"2":{"48":1}}],["321923",{"2":{"28":1}}],["320",{"2":{"48":1}}],["328",{"2":{"33":1,"48":1}}],["32806",{"2":{"29":1,"31":2}}],["322612",{"2":{"30":1}}],["32669",{"2":{"26":1}}],["32",{"2":{"13":2,"15":1,"48":2}}],["38167574879167476",{"2":{"86":1}}],["381676",{"2":{"85":2}}],["38290995355378155",{"2":{"80":1}}],["38291",{"2":{"79":1}}],["389215",{"2":{"79":1}}],["3863063388395396",{"2":{"80":1}}],["386306",{"2":{"79":1}}],["388768",{"2":{"77":1}}],["384116",{"2":{"43":1}}],["385452",{"2":{"30":1}}],["385262",{"2":{"28":1}}],["38",{"2":{"13":3,"15":1}}],["350024",{"2":{"85":1}}],["350546",{"2":{"19":1}}],["359421",{"2":{"84":1}}],["358535",{"2":{"77":1}}],["353968",{"2":{"84":1}}],["353",{"2":{"48":1}}],["352",{"2":{"48":1}}],["352614",{"2":{"26":1}}],["3517350991207968",{"2":{"80":1}}],["351735",{"2":{"79":1}}],["35189",{"2":{"32":1}}],["351096",{"2":{"30":1}}],["354868",{"2":{"19":1}}],["35",{"2":{"13":1,"15":1,"17":1}}],["394448",{"2":{"84":1}}],["399",{"2":{"77":1}}],["399781",{"2":{"77":1}}],["396585",{"2":{"76":1}}],["397575",{"2":{"47":1}}],["390342",{"2":{"43":1}}],["390081",{"2":{"26":1}}],["395523",{"2":{"43":1}}],["391395",{"2":{"28":1}}],["392848",{"2":{"28":1}}],["398776",{"2":{"15":3}}],["39",{"2":{"2":2,"3":1,"4":2,"13":3,"14":1,"15":1,"19":1,"23":4,"24":1,"30":2,"31":1,"33":1,"35":3,"46":2,"47":1,"48":1,"49":2,"64":1,"65":1,"66":1,"67":6,"69":9,"75":1,"76":1,"77":1}}],["3",{"2":{"0":4,"1":3,"3":1,"4":7,"5":8,"13":9,"15":18,"17":8,"18":1,"19":12,"20":2,"21":6,"22":11,"23":6,"25":2,"26":2,"28":12,"29":2,"30":10,"32":5,"33":12,"34":2,"43":7,"46":1,"47":10,"48":23,"49":3,"61":3,"62":5,"64":4,"66":10,"74":3,"75":2,"77":1,"79":1,"84":3,"85":8,"86":2}}],["1a",{"2":{"18":1}}],["182707",{"2":{"85":1}}],["18201329198359628",{"2":{"80":1}}],["186811",{"2":{"85":1}}],["187655",{"2":{"79":1}}],["187495",{"2":{"15":2}}],["18906",{"2":{"77":1}}],["18989",{"2":{"30":1}}],["184738",{"2":{"74":9}}],["184813",{"2":{"30":1}}],["180",{"2":{"43":6}}],["18035",{"2":{"26":1}}],["188864",{"2":{"30":1}}],["183637",{"2":{"26":1}}],["183555",{"2":{"19":1}}],["18",{"2":{"15":1,"46":1,"77":5}}],["1331373610060985e",{"2":{"81":1}}],["13393263555318102",{"2":{"80":1}}],["13525245310587153",{"2":{"80":1}}],["130252",{"2":{"79":1}}],["130",{"2":{"43":6,"66":2}}],["130775",{"2":{"13":1}}],["136127",{"2":{"30":1}}],["136551",{"2":{"19":1}}],["134186",{"2":{"26":1}}],["131798",{"2":{"19":1}}],["13",{"2":{"15":1,"28":9,"75":2,"77":1}}],["17977958441149666",{"2":{"86":1}}],["17978",{"2":{"85":2}}],["179889",{"2":{"49":1}}],["171961",{"2":{"77":1}}],["17520",{"2":{"46":8,"49":1}}],["17597",{"2":{"30":1}}],["170",{"2":{"43":6}}],["178022",{"2":{"43":1}}],["178902",{"2":{"28":1}}],["177155",{"2":{"79":1}}],["177857",{"2":{"43":1}}],["177423",{"2":{"26":1}}],["176197",{"2":{"28":1}}],["17673",{"2":{"26":1}}],["17645",{"2":{"26":1}}],["17",{"2":{"13":1,"15":1,"46":1,"47":1,"48":2}}],["163103",{"2":{"84":1}}],["162516",{"2":{"84":1}}],["162919",{"2":{"26":1}}],["168554",{"2":{"77":1}}],["168617",{"2":{"77":1}}],["166822",{"2":{"77":1}}],["166186",{"2":{"77":1}}],["166221",{"2":{"77":1}}],["160",{"2":{"43":6}}],["167465",{"2":{"43":1}}],["167",{"2":{"33":1}}],["169845",{"2":{"30":1}}],["16×16×3",{"2":{"20":1}}],["16",{"2":{"13":2,"15":1,"20":2,"46":1,"47":1,"48":4,"77":3}}],["145037",{"2":{"85":1}}],["143×23",{"2":{"77":1}}],["143478",{"2":{"77":1}}],["140",{"2":{"43":6,"66":6}}],["142055",{"2":{"84":1}}],["14203",{"2":{"15":2}}],["142406",{"2":{"77":1}}],["142957",{"2":{"30":1}}],["14",{"2":{"13":1,"15":1,"28":6,"77":2,"79":1}}],["1u",{"2":{"5":2}}],["195938",{"2":{"85":1}}],["195897",{"2":{"77":1}}],["1985699519321249",{"2":{"86":1}}],["19857",{"2":{"85":2}}],["198058",{"2":{"77":1}}],["194849",{"2":{"84":1,"85":2}}],["194465",{"2":{"28":3}}],["192192",{"2":{"84":1,"85":2}}],["192274",{"2":{"77":1}}],["192286",{"2":{"30":1}}],["193179",{"2":{"77":1}}],["193627",{"2":{"62":2,"64":2,"66":6}}],["196478",{"2":{"76":1}}],["196524",{"2":{"30":1}}],["19041",{"2":{"49":2}}],["190",{"2":{"43":7}}],["190726",{"2":{"30":1}}],["19122366809754",{"2":{"80":10}}],["191224",{"2":{"79":1}}],["191049",{"2":{"30":1}}],["191×20×30",{"2":{"21":1}}],["191×20×31",{"2":{"21":2}}],["191×20×32",{"2":{"21":1}}],["191×20×28",{"2":{"21":1}}],["199364",{"2":{"77":1}}],["1999",{"2":{"26":1}}],["1998",{"2":{"26":1}}],["19",{"2":{"5":5,"15":1,"46":1,"77":3}}],["1×3",{"2":{"74":2}}],["1×2",{"2":{"5":3}}],["1×12",{"2":{"0":1}}],["156388",{"2":{"84":1}}],["156538",{"2":{"74":12}}],["153753",{"2":{"85":1}}],["1532608102742886e",{"2":{"81":1}}],["15388",{"2":{"28":1}}],["152068",{"2":{"76":1}}],["155826",{"2":{"30":1}}],["15945803739833375",{"2":{"86":1}}],["159458",{"2":{"85":2}}],["15905863317294833",{"2":{"80":2}}],["159092",{"2":{"62":2,"64":2,"66":6}}],["159233",{"2":{"30":1}}],["159817",{"2":{"30":1}}],["15163",{"2":{"29":1,"31":2}}],["150155",{"2":{"19":1}}],["150",{"2":{"17":3,"43":6}}],["15004",{"2":{"15":2}}],["15489",{"2":{"15":2}}],["15",{"2":{"5":3,"13":2,"15":1,"28":3,"46":1}}],["114915",{"2":{"85":1}}],["11475",{"2":{"32":1}}],["11115487324489237",{"2":{"80":1}}],["111155",{"2":{"79":1}}],["111072",{"2":{"28":3}}],["11×17520",{"2":{"48":1}}],["110",{"2":{"43":7}}],["119937",{"2":{"30":2}}],["119505",{"2":{"28":3}}],["11311",{"2":{"79":1}}],["113",{"2":{"33":1}}],["113873",{"2":{"29":1,"31":2}}],["113704",{"2":{"28":2}}],["11787",{"2":{"77":1}}],["117",{"2":{"13":3}}],["112606",{"2":{"43":1}}],["112",{"2":{"13":2}}],["11",{"2":{"0":1,"4":1,"13":4,"15":8,"19":2,"21":6,"28":15,"33":1,"43":1,"47":6,"75":1,"77":3}}],["128827",{"2":{"84":1}}],["12196032004058277",{"2":{"81":1}}],["121186",{"2":{"29":1,"31":2}}],["121375",{"2":{"29":1,"31":2}}],["121525",{"2":{"28":3}}],["126976",{"2":{"28":1}}],["12435",{"2":{"32":1}}],["124594",{"2":{"28":2}}],["12404",{"2":{"15":2}}],["12×2",{"2":{"21":1}}],["12×100×25",{"2":{"15":2}}],["123",{"2":{"17":1,"33":1}}],["1279",{"2":{"15":3}}],["129382",{"2":{"15":3}}],["125287",{"2":{"19":1}}],["125",{"2":{"13":2}}],["1229",{"2":{"47":1}}],["122",{"2":{"13":2}}],["120955",{"2":{"84":1}}],["120845",{"2":{"77":1}}],["1201",{"2":{"47":1}}],["120",{"2":{"13":4,"43":7,"66":2}}],["12",{"2":{"0":9,"4":1,"15":23,"17":3,"18":1,"21":10,"22":1,"28":12,"46":28,"47":15,"48":8,"49":3,"75":7,"77":5}}],["1",{"2":{"0":13,"1":8,"3":14,"4":26,"5":12,"13":12,"15":52,"17":49,"18":3,"19":21,"20":241,"21":19,"22":16,"23":5,"25":2,"26":52,"28":119,"29":1,"30":4,"31":1,"32":6,"33":13,"34":10,"43":44,"44":28,"46":73,"47":46,"48":91,"49":30,"62":9,"64":12,"65":2,"66":18,"67":1,"69":4,"74":98,"75":7,"77":51,"78":7,"79":24,"80":1,"81":78,"82":1,"84":14,"85":42,"86":10}}],["10327768192755193",{"2":{"80":2,"81":2}}],["10363647991272806",{"2":{"80":1}}],["103636",{"2":{"79":1}}],["10276733254788795",{"2":{"86":1}}],["102767",{"2":{"85":2}}],["10233",{"2":{"30":1}}],["10246",{"2":{"15":2}}],["10×10",{"2":{"84":1,"85":27}}],["10×10×26",{"2":{"84":3}}],["10×1",{"2":{"81":30}}],["10×11",{"2":{"43":1}}],["10×6",{"2":{"78":3,"79":18,"81":12}}],["10×5",{"2":{"30":1}}],["10×7×5",{"2":{"30":1}}],["108968",{"2":{"28":1}}],["108514",{"2":{"28":3}}],["10426060453432562",{"2":{"80":10}}],["104261",{"2":{"79":1}}],["104867",{"2":{"28":1}}],["10415",{"2":{"15":2}}],["10914",{"2":{"32":1}}],["109",{"2":{"13":1}}],["107233",{"2":{"84":1}}],["107427",{"2":{"49":1}}],["1076",{"2":{"26":1}}],["107",{"2":{"13":1}}],["105539",{"2":{"30":1}}],["105",{"2":{"13":1}}],["106973",{"2":{"77":1}}],["106904",{"2":{"43":1}}],["106472",{"2":{"43":1}}],["106224",{"2":{"28":1}}],["106",{"2":{"13":1,"33":2}}],["106593",{"2":{"13":1}}],["101305",{"2":{"84":1}}],["101231",{"2":{"74":4}}],["101×34",{"2":{"49":2}}],["101×384",{"2":{"48":2}}],["101×8030",{"2":{"48":1}}],["101×8760",{"2":{"48":1}}],["101×2856",{"2":{"48":1}}],["101×2928",{"2":{"48":3}}],["101×240",{"2":{"48":1}}],["101×0",{"2":{"48":1}}],["101×4416",{"2":{"48":5}}],["101×4320",{"2":{"48":2}}],["101×4392",{"2":{"48":2}}],["101×4368",{"2":{"48":3}}],["101×4344",{"2":{"48":2}}],["101×1",{"2":{"49":5}}],["101×1464",{"2":{"47":1}}],["101×1440",{"2":{"47":1}}],["101×1488",{"2":{"47":2}}],["101×1368",{"2":{"47":1}}],["101×17520",{"2":{"47":1}}],["101",{"2":{"13":2}}],["10u",{"2":{"5":1}}],["100×28",{"2":{"85":1}}],["100×25×12",{"2":{"15":3}}],["1000×2000",{"2":{"26":1}}],["1000",{"2":{"26":3,"33":2}}],["10000",{"2":{"25":1,"33":2}}],["100u",{"2":{"5":2}}],["100",{"2":{"0":1,"3":1,"4":3,"15":14,"17":10,"22":8,"43":26,"44":14,"49":1,"68":1,"71":1,"75":2,"85":1}}],["10",{"2":{"0":7,"1":9,"3":6,"4":5,"5":19,"13":6,"15":8,"17":15,"18":5,"19":4,"21":2,"22":34,"28":34,"30":1,"42":9,"43":47,"44":28,"47":2,"64":2,"66":10,"67":1,"68":2,"69":5,"71":2,"75":7,"76":5,"77":14,"78":7,"79":21,"80":1,"81":61,"84":10,"85":34,"86":10}}],["2a",{"2":{"18":1}}],["2834645880044695",{"2":{"81":1}}],["286",{"2":{"77":1}}],["281077",{"2":{"30":1}}],["287739",{"2":{"30":1}}],["2845114369477759",{"2":{"81":1}}],["284399",{"2":{"30":1}}],["28405",{"2":{"26":1}}],["2855663183499576",{"2":{"80":1}}],["285205",{"2":{"30":1}}],["285965",{"2":{"26":1}}],["280686",{"2":{"28":1}}],["289335",{"2":{"28":3}}],["28",{"2":{"15":1,"47":1,"77":2,"81":4}}],["270915",{"2":{"85":1}}],["27042",{"2":{"15":2}}],["276742",{"2":{"77":1}}],["275784",{"2":{"77":1}}],["27206",{"2":{"77":1}}],["272731",{"2":{"49":1}}],["27736",{"2":{"74":5}}],["274713",{"2":{"43":1}}],["273104",{"2":{"77":1}}],["273986",{"2":{"28":1}}],["273573",{"2":{"28":2}}],["27",{"2":{"15":1}}],["22237128922242078",{"2":{"86":1}}],["222371",{"2":{"85":2}}],["222681",{"2":{"28":1}}],["226712626227074",{"2":{"80":1}}],["226064",{"2":{"74":8}}],["221908",{"2":{"77":1}}],["221313",{"2":{"77":1}}],["22401",{"2":{"77":1}}],["224375",{"2":{"26":1}}],["227082",{"2":{"85":1}}],["227865",{"2":{"77":2}}],["227455",{"2":{"28":1}}],["229792",{"2":{"77":1}}],["229418",{"2":{"76":1}}],["228081",{"2":{"77":1}}],["228248",{"2":{"76":1}}],["228294",{"2":{"30":1}}],["2237e",{"2":{"47":1}}],["2236016853688918",{"2":{"28":1}}],["223602",{"2":{"28":2}}],["22",{"2":{"15":1,"19":2,"46":1,"47":2,"85":1}}],["241791",{"2":{"77":1}}],["2415",{"2":{"47":1}}],["2423",{"2":{"47":1}}],["24247",{"2":{"15":2}}],["24303682025729376",{"2":{"81":1}}],["243035",{"2":{"30":1}}],["243842",{"2":{"49":2}}],["243368",{"2":{"77":1}}],["2433",{"2":{"47":1}}],["2436",{"2":{"47":1}}],["24524306337289326",{"2":{"86":1}}],["245243",{"2":{"85":2}}],["2454503676673656",{"2":{"81":1}}],["245499",{"2":{"43":1}}],["245",{"2":{"74":2}}],["24575",{"2":{"26":1}}],["247032",{"2":{"62":2,"64":2,"66":6}}],["247755",{"2":{"30":1}}],["247198",{"2":{"28":1}}],["249616",{"2":{"28":2}}],["24",{"2":{"15":4,"21":1,"46":1,"47":2,"48":2}}],["2601",{"2":{"86":1}}],["2600×5",{"2":{"85":1}}],["2600×4",{"2":{"85":2}}],["2600",{"2":{"85":3}}],["266342",{"2":{"85":1}}],["269905",{"2":{"79":1}}],["26917",{"2":{"26":1}}],["2641242011907946",{"2":{"80":1}}],["264001",{"2":{"77":1}}],["264242",{"2":{"28":1}}],["26×11",{"2":{"77":1}}],["263531",{"2":{"77":1}}],["268379",{"2":{"30":1}}],["261741",{"2":{"28":1}}],["26",{"2":{"13":2,"15":1}}],["290409",{"2":{"85":1}}],["294486",{"2":{"84":1}}],["296393",{"2":{"77":1}}],["29205",{"2":{"77":1}}],["292431",{"2":{"43":1}}],["298728",{"2":{"62":2,"64":2,"66":6}}],["298383",{"2":{"26":1}}],["299692",{"2":{"47":1}}],["299799",{"2":{"28":1}}],["29325",{"2":{"32":1}}],["295346",{"2":{"30":1}}],["297023",{"2":{"19":1}}],["29",{"2":{"13":2,"15":1,"47":2,"77":2,"81":2}}],["210664",{"2":{"84":1}}],["21035e",{"2":{"47":1}}],["214157",{"2":{"79":1}}],["215448",{"2":{"77":1}}],["215049",{"2":{"26":1}}],["21921",{"2":{"76":1}}],["21149",{"2":{"29":1,"31":2}}],["217733",{"2":{"28":3}}],["218579",{"2":{"19":1}}],["21",{"2":{"5":4,"13":1,"15":1,"19":2,"46":1,"47":1,"75":1}}],["256817",{"2":{"85":1}}],["2599",{"2":{"85":3}}],["2598",{"2":{"85":3}}],["259847",{"2":{"84":1}}],["2597",{"2":{"85":3}}],["2596",{"2":{"85":3}}],["2595",{"2":{"85":3}}],["2594",{"2":{"85":3}}],["2504949184379115",{"2":{"80":2}}],["2585",{"2":{"85":3}}],["258576",{"2":{"30":1}}],["258764",{"2":{"77":1}}],["25825",{"2":{"48":4}}],["254627",{"2":{"30":1}}],["254555",{"2":{"28":2}}],["253984",{"2":{"29":1,"31":2}}],["253849",{"2":{"17":2,"19":1}}],["25",{"2":{"5":2,"15":11,"48":2,"74":2}}],["233997",{"2":{"85":1}}],["234767",{"2":{"85":1}}],["236866",{"2":{"85":1}}],["23019965552513033",{"2":{"80":1}}],["231483",{"2":{"77":1}}],["235356",{"2":{"77":1}}],["239921",{"2":{"74":3}}],["2396",{"2":{"47":1}}],["23788",{"2":{"26":1}}],["23",{"2":{"5":1,"13":2,"15":4,"46":2,"47":2}}],["20636222545147498",{"2":{"86":1}}],["206362",{"2":{"85":2}}],["206406",{"2":{"32":1}}],["204084",{"2":{"79":1}}],["20258969376355607",{"2":{"80":1}}],["20259",{"2":{"79":1}}],["2021",{"2":{"0":25}}],["203451",{"2":{"79":1}}],["203",{"2":{"77":2}}],["201",{"2":{"74":1}}],["201362",{"2":{"29":1,"31":2}}],["207482",{"2":{"49":2}}],["20779",{"2":{"26":1}}],["208271",{"2":{"62":2,"64":2,"66":6}}],["208542",{"2":{"28":1}}],["208384",{"2":{"28":1}}],["2005",{"2":{"75":1}}],["2003",{"2":{"21":1}}],["2001",{"2":{"17":4,"46":28,"47":17,"49":3}}],["2000",{"2":{"15":84,"21":1,"26":3,"46":32,"47":21,"49":16,"75":18}}],["200",{"2":{"5":1,"17":9,"43":26,"44":14}}],["20",{"2":{"4":4,"5":18,"15":1,"17":3,"21":2,"22":12,"33":1,"46":1,"66":2,"76":1,"77":8,"80":1}}],["2×3",{"2":{"74":3}}],["2×3×2",{"2":{"1":1,"17":1}}],["2×2",{"2":{"19":2,"74":1}}],["2×10×3",{"2":{"13":2}}],["2×4",{"2":{"5":1,"17":4}}],["2×4×2",{"2":{"3":1}}],["2",{"2":{"0":10,"1":4,"3":3,"4":3,"5":14,"8":3,"13":6,"15":25,"17":26,"18":1,"19":10,"21":9,"22":8,"23":4,"25":2,"26":5,"28":24,"29":1,"30":8,"31":2,"32":6,"33":3,"34":2,"43":8,"46":2,"47":20,"48":24,"49":6,"61":2,"62":4,"64":6,"65":3,"66":11,"69":2,"74":62,"75":2,"76":1,"77":21,"79":2,"80":2,"81":8,"84":2,"85":8,"86":2}}],["==",{"2":{"22":1,"30":1,"49":1}}],["=>",{"2":{"1":10,"2":10,"3":15,"4":22,"11":6,"17":29,"21":4,"22":29,"24":2,"47":7,"48":18,"49":2,"62":1,"64":6,"66":7,"69":2,"74":1,"85":1}}],["=",{"2":{"0":15,"1":4,"3":4,"4":10,"5":11,"13":7,"15":5,"17":8,"18":9,"19":4,"20":1,"21":7,"22":13,"23":2,"25":1,"26":3,"28":3,"29":1,"30":2,"32":1,"33":1,"43":7,"46":3,"47":2,"48":1,"49":2,"61":3,"62":1,"64":3,"65":8,"68":1,"69":10,"71":1,"74":2,"75":7,"76":1,"77":3,"78":2,"79":4,"80":84,"81":37,"82":8,"84":4}}],["features",{"2":{"69":1}}],["few",{"2":{"64":2}}],["feb",{"2":{"48":6,"75":1}}],["fact",{"2":{"78":1}}],["faceted",{"2":{"69":1}}],["facing",{"2":{"35":1}}],["facilitate",{"2":{"11":2,"75":1}}],["favours",{"2":{"68":1}}],["favour",{"2":{"22":1}}],["fails",{"2":{"15":1}}],["fail",{"2":{"14":1}}],["fallback",{"2":{"11":1}}],["falls",{"2":{"5":2,"74":1}}],["fall",{"2":{"5":2}}],["falses",{"2":{"61":1}}],["false",{"2":{"1":1,"3":5,"11":1,"14":1,"17":1,"21":2,"22":1,"44":28}}],["far",{"2":{"4":1}}],["fast",{"2":{"4":1,"75":1,"82":1}}],["fri",{"2":{"75":2}}],["friendly",{"2":{"27":1}}],["frequency",{"2":{"33":2}}],["freely",{"2":{"19":1}}],["freeunits",{"2":{"5":1}}],["free",{"2":{"3":1,"30":1}}],["fraction",{"2":{"21":1}}],["from",{"2":{"0":3,"1":1,"2":1,"3":3,"4":10,"5":3,"8":1,"15":1,"17":4,"18":3,"19":1,"20":1,"21":6,"22":1,"23":5,"25":13,"30":1,"34":1,"36":1,"37":1,"38":1,"41":1,"42":10,"43":7,"51":1,"64":1,"74":1,"75":2,"76":1,"77":2,"82":1,"85":1}}],["further",{"2":{"40":1,"48":1}}],["future",{"2":{"4":1,"5":1,"22":1,"25":1,"73":1}}],["full",{"2":{"3":1,"4":3}}],["functionality",{"2":{"52":1}}],["functional",{"2":{"27":1}}],["functions",{"0":{"46":1,"81":1},"2":{"17":1,"21":2,"27":1,"32":1,"46":2,"64":1,"67":1,"68":1,"81":2}}],["function",{"2":{"3":1,"4":2,"5":2,"21":12,"22":2,"40":1,"45":2,"46":2,"47":2,"48":4,"49":1,"74":1,"75":1}}],["foo",{"2":{"64":3}}],["follow",{"2":{"46":1,"67":1}}],["following",{"2":{"12":1}}],["four",{"2":{"21":2}}],["found",{"2":{"3":1,"7":1,"22":3,"31":2,"79":1}}],["forms",{"2":{"27":1}}],["formats",{"2":{"10":1}}],["format",{"0":{"41":1},"2":{"2":2,"8":1,"11":1,"36":1,"41":2}}],["forward",{"2":{"4":1,"7":1,"17":2}}],["forwardordered",{"2":{"0":6,"3":1,"4":6,"5":8,"7":3,"13":6,"15":20,"17":10,"19":6,"21":4,"22":10,"23":1,"26":2,"28":6,"43":15,"44":14,"47":9,"48":7,"49":5,"62":1,"64":4,"66":9,"74":28,"75":3,"76":6,"77":8,"78":2,"79":15,"80":1,"81":41,"84":6,"85":2}}],["for",{"2":{"0":12,"1":3,"2":2,"3":7,"4":40,"5":19,"7":2,"8":3,"10":1,"11":4,"14":1,"15":1,"17":18,"18":10,"19":5,"20":3,"21":12,"22":8,"23":4,"24":3,"25":5,"27":1,"28":5,"29":1,"30":1,"34":1,"39":1,"40":5,"42":6,"43":3,"45":1,"48":4,"51":3,"53":1,"54":1,"56":1,"57":2,"59":1,"61":1,"68":1,"69":1,"73":1,"74":1,"75":1,"76":6,"78":2,"79":1,"80":2,"83":2,"85":3}}],["flexible",{"2":{"40":1}}],["float32",{"2":{"26":4}}],["float64",{"2":{"0":3,"1":1,"3":1,"4":1,"5":1,"13":1,"15":7,"17":9,"19":7,"20":1,"21":3,"22":13,"23":2,"26":2,"28":12,"29":2,"30":4,"31":2,"32":2,"33":1,"43":18,"44":14,"47":9,"48":18,"49":5,"62":4,"64":4,"66":11,"74":30,"75":1,"76":1,"77":12,"78":6,"79":39,"80":9,"81":141,"84":3,"85":36}}],["flags",{"2":{"3":1}}],["final",{"2":{"48":1}}],["find",{"2":{"75":1}}],["findfirst",{"2":{"7":1}}],["finds",{"2":{"7":1}}],["fix",{"2":{"22":1}}],["fixed",{"2":{"8":1}}],["field",{"2":{"11":1,"17":1,"22":5,"40":1,"66":1}}],["fields",{"2":{"2":1,"3":1,"4":1,"6":1,"22":5,"25":1,"27":2,"40":3,"41":1}}],["firstindex",{"2":{"32":1}}],["first",{"2":{"3":3,"12":1,"13":1,"18":8,"23":1,"31":1,"43":2,"46":1,"48":1,"74":2}}],["filter",{"2":{"43":1,"44":1}}],["filters",{"2":{"5":1,"74":1}}],["fill",{"2":{"17":5,"22":2,"28":4,"41":1,"75":1}}],["filled",{"2":{"2":1,"10":1}}],["file",{"2":{"0":1,"11":2,"51":1}}],["f",{"2":{"1":5,"3":10,"4":2,"5":1,"13":1,"17":5,"19":3,"21":11,"22":11,"71":1,"74":1,"85":1}}],["ggplot2",{"2":{"69":1}}],["gc",{"2":{"33":6}}],["goals",{"0":{"27":1},"2":{"27":1}}],["good",{"2":{"18":1}}],["global",{"0":{"23":1},"1":{"24":1,"25":1},"2":{"23":2}}],["globally",{"2":{"14":1}}],["gpus",{"0":{"26":1},"1":{"27":1},"2":{"24":1,"26":1,"57":1}}],["gpu",{"0":{"27":1},"2":{"22":2,"26":4,"27":7,"61":1}}],["graphics",{"2":{"69":2}}],["grammar",{"2":{"69":1}}],["gribdatasets",{"2":{"35":1}}],["grid",{"2":{"4":1}}],["gridded",{"2":{"4":1}}],["groupmeans",{"2":{"21":2}}],["grouped",{"2":{"21":1,"49":1}}],["groups",{"2":{"21":12,"47":2,"48":4}}],["groupings",{"2":{"46":1}}],["groupingfunction",{"2":{"21":2}}],["grouping",{"0":{"46":1,"47":1},"2":{"21":9,"45":4,"48":2,"49":1}}],["groupby",{"2":{"21":13,"45":1,"47":13,"48":21,"49":4}}],["group",{"0":{"21":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1},"2":{"21":9,"46":1,"47":3,"48":13,"49":2}}],["gis",{"2":{"51":2}}],["giving",{"2":{"5":1}}],["given",{"2":{"22":1,"83":1}}],["give",{"2":{"3":1,"4":1,"5":1,"17":1,"28":1,"79":1}}],["gives",{"2":{"0":1,"18":2,"66":1}}],["github",{"2":{"4":1,"66":1}}],["guide",{"2":{"45":1}}],["guarantee",{"2":{"11":1}}],["guaranteed",{"2":{"3":1,"17":1}}],["guessed",{"2":{"2":1,"8":2}}],["guess",{"2":{"0":1,"46":1}}],["gt",{"2":{"1":2,"3":3,"5":1,"17":2,"21":1,"22":2}}],["g",{"2":{"0":1,"3":1,"4":2,"5":1,"13":1,"17":1,"21":1,"36":1,"61":1,"65":1,"71":1,"85":1}}],["gen",{"2":{"17":2}}],["generators",{"0":{"19":1},"2":{"35":1}}],["generator",{"2":{"17":4,"23":4}}],["generates",{"2":{"21":7}}],["generate",{"2":{"3":1,"21":2,"25":1}}],["generated",{"2":{"3":1,"20":1,"40":1}}],["general",{"2":{"11":1}}],["generally",{"2":{"0":1}}],["generic",{"2":{"0":1,"4":1,"65":1}}],["geotiff",{"2":{"10":1}}],["geospatial",{"2":{"4":3,"51":1}}],["gets",{"2":{"74":4}}],["getting",{"2":{"17":1,"48":1}}],["getters",{"0":{"43":1},"1":{"44":1}}],["getter",{"2":{"4":1}}],["get",{"2":{"1":3,"2":1,"3":1,"11":3,"17":4,"20":1,"25":1,"29":1,"43":7,"75":1,"80":1}}],["getindex",{"2":{"0":1,"3":2,"18":3,"19":1,"25":2,"31":1,"42":2}}],["p",{"2":{"85":1}}],["python",{"2":{"35":1}}],["permafrost",{"2":{"56":1}}],["permutation",{"2":{"81":1}}],["permuting",{"2":{"22":2}}],["permuteddimsarray",{"2":{"81":2}}],["permutedims",{"2":{"32":1,"81":3}}],["permuted",{"2":{"22":1}}],["permute",{"2":{"14":1,"22":1,"68":1}}],["periods",{"2":{"21":3}}],["perform",{"2":{"32":1}}],["performed",{"2":{"4":1}}],["performance",{"0":{"33":1,"82":1},"2":{"4":3,"18":1,"51":1}}],["pkg",{"2":{"12":2}}],["pkg>",{"2":{"12":2}}],["put",{"2":{"11":1}}],["pixels",{"2":{"5":1}}],["powerful",{"2":{"55":1,"61":1}}],["polygon",{"2":{"51":1}}],["positions",{"0":{"10":1}}],["position",{"2":{"4":1,"9":1,"10":6}}],["possible",{"2":{"4":2,"5":1,"7":1,"22":1,"26":1,"32":1,"66":1,"67":1}}],["point",{"2":{"0":1,"4":2,"5":1,"9":1,"19":1,"75":1}}],["points",{"2":{"0":6,"4":7,"5":12,"8":2,"9":4,"13":4,"15":20,"17":7,"19":5,"21":4,"22":9,"23":1,"26":2,"28":6,"43":32,"44":28,"47":9,"48":4,"49":5,"62":2,"64":2,"66":4,"74":9,"75":1,"76":4,"77":10,"78":2,"79":15,"80":1,"81":49,"84":4,"85":2}}],["planned",{"2":{"73":1}}],["plasma",{"2":{"72":2}}],["places",{"2":{"68":2}}],["place",{"2":{"27":1,"60":1}}],["placed",{"2":{"22":1}}],["please",{"2":{"4":1}}],["plus",{"2":{"4":1}}],["plots",{"0":{"67":1,"70":1},"1":{"71":1,"72":1,"73":1},"2":{"0":1,"3":1,"11":1,"17":2,"67":2,"68":1,"69":1,"73":1}}],["plotted",{"2":{"0":1,"4":1,"7":1,"9":1,"10":1}}],["plotting",{"2":{"0":1,"69":1}}],["plot",{"2":{"0":3,"2":2,"67":2,"68":2,"69":3}}],["printing",{"2":{"75":1}}],["principles",{"2":{"46":1}}],["prior",{"2":{"22":1}}],["primarily",{"2":{"3":1}}],["primitives",{"2":{"31":2}}],["primitive",{"0":{"3":1}}],["process",{"2":{"57":1,"65":1}}],["providing",{"2":{"51":1}}],["provides",{"2":{"43":1,"45":1,"58":1,"69":1,"83":1}}],["provide",{"2":{"4":2}}],["provided",{"2":{"4":5,"5":3,"8":1,"23":2,"75":1}}],["projected",{"2":{"36":1,"51":1}}],["prod",{"2":{"32":1,"81":2}}],["probably",{"2":{"24":1,"46":1}}],["problems",{"2":{"4":1}}],["property",{"2":{"24":1}}],["properties",{"2":{"2":2,"15":1,"22":1,"41":1,"75":1,"76":2}}],["programmatically",{"2":{"17":1}}],["predicates",{"0":{"44":1},"2":{"44":1}}],["predefined",{"2":{"34":1}}],["prefereble",{"2":{"21":1}}],["preserved",{"2":{"22":1}}],["present",{"2":{"5":1,"19":1,"35":1}}],["pressed",{"2":{"12":1}}],["previously",{"2":{"22":1}}],["previous",{"2":{"3":1,"5":1}}],["precedence",{"2":{"0":1}}],["paaarnet",{"2":{"25":3,"42":3}}],["padding",{"2":{"48":1}}],["pad",{"2":{"21":5}}],["past",{"2":{"17":1}}],["pass",{"2":{"11":1,"18":1,"22":3,"25":2,"41":1,"48":1,"66":1,"69":2}}],["passing",{"2":{"3":2,"4":1,"15":1,"21":1,"22":1}}],["passed",{"2":{"0":1,"2":1,"3":5,"5":3,"19":1,"22":6,"23":1,"25":1,"27":1,"40":1,"74":2}}],["partly",{"2":{"77":1}}],["part",{"2":{"25":1,"66":1}}],["parentheses",{"2":{"22":1}}],["parent",{"2":{"14":1,"17":1,"22":5,"23":4,"25":13,"26":2,"27":1,"33":2,"41":1,"42":9,"61":5,"82":1}}],["parameters",{"2":{"3":1}}],["parameter",{"2":{"0":1,"11":1}}],["pair",{"2":{"11":1,"21":1,"22":4}}],["pairs",{"2":{"11":1,"21":1,"22":8}}],["packages",{"2":{"35":2,"36":1,"46":1,"67":1,"83":1}}],["package",{"2":{"4":1,"12":1,"13":1,"21":1,"52":1,"54":1,"55":1}}],["d=rand",{"2":{"78":1}}],["draw",{"2":{"69":3}}],["dropdims",{"2":{"32":1,"81":1}}],["dropped",{"2":{"25":2,"42":2}}],["drop=true",{"2":{"23":3}}],["dynamicgrids",{"0":{"57":1},"2":{"27":1,"57":2}}],["dd",{"2":{"5":3,"22":3,"34":1,"39":2,"46":1,"65":2,"66":1,"68":1,"83":1}}],["da4",{"2":{"33":1}}],["da5",{"2":{"32":2}}],["das",{"2":{"25":1}}],["daily",{"2":{"21":1}}],["dayofyear",{"2":{"46":2,"48":3}}],["dayofweek",{"2":{"46":1}}],["day",{"2":{"21":3,"46":2,"48":4}}],["days",{"2":{"4":1,"48":1}}],["da3",{"2":{"18":2}}],["da2",{"2":{"18":2,"22":7,"30":5}}],["da1",{"2":{"18":2,"22":7,"29":2,"30":1,"31":2}}],["da",{"2":{"4":2,"22":10,"28":2,"30":2}}],["dataframe",{"0":{"85":1},"2":{"85":8}}],["dataframes",{"0":{"83":1},"1":{"84":1,"85":1,"86":1},"2":{"5":1,"83":1,"84":1}}],["data2",{"2":{"84":1,"85":2,"86":1}}],["data2=rand",{"2":{"84":1}}],["data1",{"2":{"84":2,"85":2,"86":1}}],["dataset",{"2":{"36":1,"54":1}}],["datasets",{"0":{"18":1},"2":{"4":1,"36":1,"52":1}}],["dataapi",{"2":{"21":1}}],["data=autovalues",{"2":{"4":1}}],["data",{"2":{"0":2,"1":1,"2":1,"4":17,"11":1,"13":2,"15":8,"17":5,"18":6,"20":1,"21":2,"22":6,"23":2,"25":3,"26":2,"27":2,"34":1,"35":1,"40":2,"48":1,"51":2,"52":1,"53":1,"56":1,"57":1,"59":1,"61":1,"64":3,"69":11,"83":1,"84":2,"85":2,"86":1}}],["date",{"2":{"4":2,"75":1}}],["datetime",{"2":{"0":13,"5":1,"15":42,"17":4,"21":2,"46":5,"47":3,"49":11,"75":10,"76":1}}],["dates",{"2":{"0":3,"4":2,"15":1,"17":1,"21":1,"46":1,"75":1,"84":1}}],["d",{"0":{"14":1},"1":{"15":1},"2":{"3":2,"4":2,"13":1,"14":2,"15":6,"19":1,"22":12,"64":2,"69":1,"71":1,"76":3,"78":1,"79":6,"80":23,"81":28,"82":2,"85":2}}],["dsl",{"2":{"55":1}}],["dst",{"2":{"23":6}}],["ds",{"2":{"3":1,"4":2,"22":2,"23":2,"69":2}}],["docs",{"2":{"42":2}}],["documented",{"2":{"23":1}}],["doing",{"2":{"19":1,"23":1,"48":1,"64":1,"77":1}}],["dot",{"2":{"14":1}}],["dotview",{"2":{"3":1}}],["do",{"2":{"4":2,"11":1,"12":1,"21":1,"22":3,"32":1,"48":1,"62":1,"66":2}}],["doesn",{"2":{"19":1,"30":1,"31":1,"65":1}}],["does",{"2":{"4":1,"14":1,"22":1,"40":1,"46":1,"48":1,"79":1,"81":1,"83":1}}],["done",{"2":{"17":1,"22":1,"83":1}}],["don",{"2":{"2":1,"4":1,"23":4,"30":1,"64":1,"66":1,"69":1}}],["direct",{"2":{"35":1}}],["directly",{"2":{"19":1,"33":1,"35":1,"48":1,"69":3,"82":1,"86":1}}],["difficult",{"2":{"27":1}}],["different",{"0":{"72":1},"2":{"3":1,"5":3,"10":1,"11":1,"22":1,"43":1}}],["divide",{"2":{"21":1}}],["di",{"2":{"19":2}}],["dicts",{"2":{"60":1}}],["dictionaries",{"2":{"27":1}}],["dict",{"2":{"4":4,"11":3,"17":1,"21":3,"22":1,"28":6,"47":7,"48":11,"49":2,"64":2}}],["dictates",{"2":{"2":1}}],["discrete",{"2":{"48":1}}],["discarded",{"2":{"5":1,"17":1}}],["disk",{"2":{"35":1}}],["diskarrays",{"0":{"35":1},"2":{"21":1,"35":3,"52":1}}],["distinguishing",{"2":{"43":1}}],["distinguish",{"2":{"17":1}}],["distance",{"2":{"4":2,"5":1}}],["dispatch",{"2":{"0":1,"11":1}}],["dimmatrix",{"2":{"68":1}}],["dimvector",{"2":{"23":1,"69":1}}],["dimgroupbyarray",{"2":{"21":6,"47":1,"48":8,"49":1}}],["dimname",{"2":{"21":1}}],["dimnum",{"2":{"1":4,"17":4,"39":1}}],["dimcolumn",{"2":{"20":1}}],["dimtype",{"2":{"21":1}}],["dimtables",{"2":{"69":1}}],["dimtable",{"2":{"20":4,"85":4}}],["dimtuple",{"2":{"18":1,"43":4}}],["dimpoints",{"2":{"19":4}}],["dimindices",{"2":{"19":9,"30":2,"38":1,"77":1}}],["dimunitrange",{"2":{"15":2}}],["dimz",{"2":{"5":2,"18":4}}],["dimselector",{"0":{"77":1}}],["dimselectors",{"2":{"19":7,"77":3}}],["dimsmatch",{"2":{"3":2}}],["dimstoreduce",{"2":{"3":1}}],["dimstackinterface",{"2":{"25":2,"42":6}}],["dimstacks",{"0":{"78":1},"1":{"79":1,"80":1,"81":1,"82":1},"2":{"14":1,"69":1}}],["dimstack",{"2":{"2":1,"14":1,"18":19,"22":1,"23":2,"42":7,"43":1,"61":2,"69":2,"78":3,"79":11,"80":2,"81":25,"83":1,"84":2,"85":2,"86":2}}],["dims2indices",{"2":{"2":1}}],["dims=",{"2":{"15":4,"22":3,"23":1}}],["dims=ti",{"2":{"0":1,"18":2,"21":1,"23":1,"32":1}}],["dims=z",{"2":{"0":1}}],["dims=y",{"2":{"0":1,"22":1,"81":11}}],["dims=x",{"2":{"0":1}}],["dims",{"0":{"14":1,"32":1,"37":1,"39":1},"1":{"15":1,"38":1,"39":1},"2":{"0":4,"1":11,"2":8,"3":13,"4":18,"5":6,"11":2,"13":3,"14":3,"15":10,"17":43,"18":3,"19":14,"20":1,"21":9,"22":33,"23":13,"25":26,"26":1,"28":14,"29":3,"30":5,"31":4,"32":4,"33":1,"34":1,"36":1,"37":1,"38":1,"39":5,"40":2,"41":2,"42":17,"43":24,"44":29,"47":9,"48":19,"49":6,"61":5,"62":2,"64":4,"66":6,"74":15,"75":1,"76":1,"77":5,"78":5,"79":30,"80":5,"81":114,"84":4,"85":27}}],["dimarrays",{"0":{"28":1},"1":{"29":1,"30":1,"31":1,"32":1,"33":1},"2":{"28":1}}],["dimarrayinterface",{"2":{"25":2,"42":6}}],["dimarray",{"0":{"29":1},"2":{"0":4,"1":5,"2":1,"3":2,"4":6,"5":11,"13":7,"14":2,"15":11,"17":40,"18":11,"19":6,"20":2,"21":10,"22":10,"23":1,"26":2,"27":1,"28":22,"29":4,"30":4,"31":2,"32":2,"33":1,"35":1,"42":4,"43":7,"47":13,"48":39,"49":8,"56":1,"59":1,"61":3,"62":2,"64":2,"66":6,"69":5,"74":16,"75":4,"76":2,"77":5,"78":1,"79":3,"84":1,"85":1}}],["dim",{"2":{"0":11,"1":2,"2":4,"3":9,"4":12,"11":2,"17":8,"20":3,"22":16,"29":1,"32":1,"34":3,"38":1,"69":1,"84":1}}],["dimensionmismatch",{"2":{"15":1,"79":1}}],["dimensionalarray",{"2":{"69":1}}],["dimensionality",{"2":{"23":1}}],["dimensional",{"0":{"14":1,"30":1},"1":{"15":1},"2":{"0":1,"3":1,"18":1,"22":1,"25":2,"38":1,"45":1,"69":1,"80":1}}],["dimensionaldata",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"0":22,"1":9,"2":5,"3":20,"4":35,"5":21,"6":1,"7":6,"8":5,"9":3,"10":6,"11":4,"12":3,"13":1,"15":3,"17":20,"18":3,"19":3,"20":4,"21":10,"22":20,"23":5,"24":3,"25":8,"26":2,"27":3,"28":1,"31":6,"34":3,"35":1,"36":1,"37":1,"40":1,"41":2,"42":10,"43":3,"45":1,"46":2,"51":2,"52":1,"53":1,"60":1,"61":1,"62":1,"64":1,"68":1,"69":1,"74":2,"75":1,"78":1,"83":1,"84":1}}],["dimension",{"0":{"15":1,"19":1,"29":1,"38":1,"49":1},"2":{"0":21,"1":27,"2":11,"3":32,"4":24,"5":3,"10":2,"11":2,"14":2,"15":2,"17":75,"18":3,"19":9,"20":7,"21":2,"22":33,"23":9,"25":4,"28":2,"30":3,"31":1,"32":3,"34":2,"38":1,"39":5,"40":1,"41":2,"42":2,"43":6,"45":1,"47":1,"49":2,"62":1,"63":1,"64":4,"66":1,"74":2,"75":2,"76":1,"78":1,"80":1,"81":1,"83":2,"85":2}}],["dimensions",{"0":{"0":1,"34":1},"1":{"1":1,"2":1,"3":1},"2":{"0":30,"1":13,"2":7,"3":32,"4":39,"5":11,"6":1,"7":6,"8":5,"9":3,"10":8,"11":5,"14":2,"15":3,"17":27,"18":3,"19":5,"20":1,"21":3,"22":24,"23":9,"25":6,"28":1,"30":4,"31":4,"33":1,"34":8,"37":2,"38":1,"42":4,"43":3,"44":2,"49":2,"63":2,"64":1,"68":1,"74":1,"76":1,"78":1,"79":1,"80":1,"83":2,"84":1,"85":2}}],["during",{"2":{"0":1,"35":1,"57":1}}],["declarative",{"2":{"62":1,"69":1}}],["dec",{"2":{"48":4,"75":1}}],["december",{"2":{"21":2}}],["demo",{"2":{"46":1}}],["developers",{"2":{"40":1,"52":1}}],["development",{"2":{"35":1,"67":1}}],["devicebuffer",{"2":{"26":1}}],["dest",{"2":{"22":4}}],["descriptive",{"2":{"21":1}}],["designed",{"2":{"35":1,"36":1}}],["design",{"2":{"18":2}}],["deprecated",{"2":{"22":1,"67":1}}],["depreciated",{"2":{"5":1}}],["dependencies",{"2":{"51":1}}],["dependency",{"2":{"35":1}}],["dependent",{"2":{"0":1}}],["dependentdim",{"2":{"0":4}}],["depending",{"2":{"1":1,"17":1}}],["detect",{"2":{"4":2,"17":4,"41":1}}],["detected",{"2":{"4":4,"41":1,"75":2,"76":5}}],["determine",{"2":{"7":1,"75":1}}],["determined",{"2":{"4":1}}],["determines",{"2":{"3":1,"19":1}}],["details",{"2":{"0":1,"25":2,"34":1}}],["definition",{"2":{"25":2,"42":2}}],["defining",{"2":{"4":2}}],["defines",{"2":{"4":1,"8":1,"19":1,"22":1,"25":2,"42":3,"43":1,"55":1}}],["defined",{"2":{"3":1,"4":1,"18":1,"22":3,"34":1,"40":1,"47":1}}],["define",{"2":{"0":1,"3":1,"4":1,"9":1,"15":1,"21":1,"28":1,"43":1,"47":1,"76":1,"77":1,"84":1}}],["default",{"0":{"71":1},"2":{"0":1,"1":3,"3":11,"4":7,"10":1,"17":4,"19":2,"21":5,"24":1,"67":1,"68":1}}],["w",{"2":{"85":1}}],["would",{"2":{"14":1,"19":2,"43":1,"48":1}}],["works",{"2":{"4":1,"14":2,"22":1,"31":2,"48":2,"57":1,"79":2}}],["work",{"2":{"2":1,"4":4,"5":1,"10":2,"11":1,"14":2,"17":1,"18":1,"21":1,"22":1,"23":1,"27":3,"31":3,"34":1,"40":2,"46":1,"52":1,"65":1,"67":1,"68":2,"75":1,"81":1}}],["working",{"2":{"1":1,"18":2}}],["word",{"2":{"0":1}}],["want",{"2":{"12":1,"23":4,"25":2,"43":1,"48":2,"62":1,"66":2}}],["way",{"2":{"4":1,"15":1,"22":1,"40":1,"64":1,"66":1}}],["warning",{"2":{"3":1,"31":2,"64":1}}],["warn",{"2":{"3":1}}],["whose",{"2":{"22":3}}],["whole",{"2":{"5":2}}],["what",{"2":{"22":1,"43":2,"46":1,"48":1,"62":1,"64":1,"66":1}}],["whatever",{"2":{"19":1,"43":1}}],["which",{"2":{"3":1,"4":1,"14":1,"21":1,"22":4,"23":1,"32":1,"43":1,"51":1,"72":1,"74":3,"77":1}}],["whichever",{"2":{"3":1}}],["while",{"2":{"3":1,"11":1,"18":2,"19":1}}],["wherever",{"2":{"23":1,"48":1}}],["where",{"2":{"3":4,"4":9,"5":7,"7":1,"8":2,"9":1,"10":2,"11":1,"17":1,"18":1,"22":4,"32":1,"43":1,"48":1,"61":1,"64":1,"74":4,"76":1}}],["whether",{"2":{"1":1,"17":1}}],["whenever",{"2":{"27":1}}],["when",{"2":{"0":5,"2":1,"4":6,"5":2,"11":1,"18":2,"19":1,"21":3,"22":1,"23":3,"24":1,"27":1,"30":1,"31":1,"38":1,"41":1,"48":1,"75":1,"76":1,"79":1}}],["write",{"2":{"86":2}}],["written",{"2":{"22":1}}],["writing",{"2":{"3":1,"22":1}}],["wraps",{"2":{"38":1}}],["wrapping",{"2":{"3":1,"4":1,"43":5,"52":1,"75":4}}],["wrapper",{"2":{"4":4,"11":1,"21":1,"22":2,"23":4,"24":2,"34":1,"48":1,"64":1}}],["wrappers",{"2":{"0":2,"4":1,"5":1,"11":2,"24":1,"28":2,"30":1,"61":1}}],["wrapped",{"2":{"3":2,"21":1,"22":1,"34":1,"65":1}}],["wrap",{"2":{"0":2,"21":3,"34":3,"75":1}}],["weds",{"2":{"75":2}}],["were",{"2":{"31":2}}],["well",{"2":{"20":1,"30":1,"35":1,"74":1}}],["weeks",{"2":{"4":1}}],["week",{"2":{"4":1}}],["we",{"2":{"0":1,"4":3,"5":1,"14":3,"15":1,"18":1,"19":2,"21":2,"22":2,"23":8,"28":2,"29":1,"30":2,"34":1,"42":2,"43":1,"46":1,"47":3,"48":13,"49":2,"52":1,"62":2,"69":2,"74":3,"75":6,"76":1,"77":4,"79":2,"80":3,"85":2,"86":1}}],["winter",{"2":{"48":1}}],["wish",{"2":{"5":1,"69":1}}],["wider",{"2":{"41":1}}],["wide",{"2":{"4":1,"51":1,"83":1}}],["widely",{"2":{"1":1}}],["within",{"2":{"5":1,"19":1,"74":3}}],["without",{"2":{"3":1,"4":2,"11":1,"18":1,"22":2,"30":1,"40":1,"61":1,"65":1,"75":1,"80":1}}],["with",{"0":{"14":1,"29":1,"73":1},"1":{"15":1},"2":{"0":3,"1":5,"2":2,"3":10,"4":13,"5":10,"7":1,"8":1,"10":8,"11":1,"12":1,"14":5,"15":2,"17":12,"18":8,"19":7,"20":1,"21":7,"22":14,"23":6,"25":3,"26":1,"27":1,"28":1,"29":1,"30":3,"31":2,"32":1,"33":3,"34":5,"38":1,"40":2,"42":2,"43":1,"44":1,"45":3,"47":8,"48":11,"49":3,"52":2,"53":1,"61":2,"63":1,"64":5,"65":1,"67":2,"68":1,"69":5,"74":10,"75":1,"76":2,"77":3,"79":5,"80":2,"81":1,"82":1,"83":1,"85":1}}],["will",{"2":{"0":7,"1":1,"2":2,"3":7,"4":13,"5":9,"7":2,"8":2,"10":3,"11":2,"17":10,"18":7,"20":1,"21":5,"22":15,"23":1,"30":2,"39":2,"40":2,"43":1,"46":2,"64":1,"65":1,"67":1,"68":3,"74":1,"75":2,"81":1,"85":2}}],["btime",{"2":{"82":2}}],["blue",{"2":{"72":1,"73":1}}],["block",{"2":{"25":1}}],["blocks",{"2":{"25":1,"48":2}}],["blockwidth",{"2":{"25":4}}],["b=rand",{"2":{"78":1}}],["b=falses",{"2":{"61":1}}],["b=1",{"2":{"13":1,"29":1}}],["built",{"2":{"69":1}}],["building",{"2":{"35":1}}],["but",{"2":{"0":1,"1":2,"3":9,"4":4,"5":1,"8":1,"11":1,"15":1,"17":2,"18":3,"19":3,"21":6,"22":1,"25":2,"26":1,"30":2,"31":1,"35":2,"36":1,"43":1,"46":1,"48":1,"49":1,"51":1,"55":1,"62":1,"63":1,"64":2,"65":1,"66":1,"68":1,"74":1,"75":2,"76":1,"77":1}}],["bin",{"2":{"48":4}}],["binning",{"0":{"48":1},"2":{"21":2}}],["bins",{"2":{"21":15,"45":1,"48":5}}],["bitmatrix",{"2":{"61":2}}],["bit",{"2":{"13":1}}],["bar",{"2":{"64":3}}],["bayesian",{"2":{"54":1}}],["band",{"2":{"20":2}}],["backend",{"2":{"27":1}}],["back",{"2":{"5":1,"11":1}}],["basic",{"2":{"31":1}}],["basics",{"0":{"13":1}}],["basically",{"2":{"3":1,"21":1,"64":1}}],["base",{"2":{"3":2,"5":1,"14":2,"15":2,"17":10,"18":3,"21":1,"22":1,"23":7,"25":4,"27":1,"31":1,"42":2,"75":2,"81":1}}],["basetypeof",{"2":{"3":5}}],["basedims",{"2":{"3":2}}],["based",{"2":{"2":1,"25":1,"35":1,"64":1}}],["brackets",{"2":{"64":1}}],["break",{"2":{"48":1}}],["breaking",{"2":{"4":1,"25":1,"65":1}}],["broken",{"2":{"66":1}}],["brought",{"2":{"34":1}}],["brodcasting",{"2":{"23":2}}],["broadcast",{"0":{"14":1},"1":{"15":1},"2":{"14":6,"15":7,"21":3,"22":11,"23":4,"26":1,"35":1,"81":2}}],["broadcasts",{"0":{"14":1},"1":{"15":1},"2":{"14":2,"23":5,"27":1,"81":1}}],["broadcasting",{"2":{"3":1,"14":2,"22":2,"23":5,"47":1}}],["box",{"2":{"25":1,"67":1}}],["bonus",{"2":{"14":1}}],["boundaries",{"2":{"5":1}}],["bounds",{"2":{"4":9,"8":6,"43":8,"75":1,"76":2}}],["both",{"2":{"3":1,"4":1,"35":2,"52":1,"63":1,"79":1}}],["bool",{"2":{"1":3,"3":5,"4":2,"5":1,"17":10,"21":1,"23":2,"61":7,"74":2}}],["bytes",{"2":{"33":2,"82":2}}],["by",{"0":{"21":1,"45":1,"49":1},"1":{"46":1,"47":1,"48":1,"49":1},"2":{"0":1,"1":2,"3":13,"4":8,"5":4,"9":1,"15":2,"17":2,"19":1,"21":8,"22":2,"29":1,"33":2,"34":1,"35":1,"40":2,"47":2,"48":2,"49":3,"68":1,"69":2,"72":1,"74":4}}],["b",{"2":{"0":7,"3":4,"4":2,"5":11,"13":3,"15":1,"17":9,"18":3,"19":1,"22":4,"29":3,"31":2,"34":2,"49":3,"61":2,"62":2,"64":5,"65":3,"66":3,"67":1,"68":1,"71":2,"72":1,"74":27,"76":3,"77":3,"78":1,"79":4,"80":23,"81":40,"82":2,"85":2}}],["being",{"2":{"69":1}}],["best",{"2":{"66":1}}],["benchmarktools",{"2":{"33":3,"82":1}}],["benchmark",{"2":{"33":3}}],["before",{"2":{"23":9}}],["become",{"2":{"85":1}}],["becomes",{"2":{"20":2}}],["because",{"2":{"14":1,"21":2}}],["behavior",{"2":{"78":1}}],["behaviour",{"2":{"4":4,"5":1,"6":1,"18":2,"21":1,"22":1,"41":1,"67":1,"75":1}}],["behaviours",{"2":{"4":1,"52":1,"65":1}}],["behaves",{"2":{"19":2,"36":1}}],["begin+1",{"2":{"31":1}}],["beginendsteprange",{"2":{"10":2}}],["beginendrange",{"2":{"10":2}}],["begin",{"0":{"31":1},"2":{"10":4,"31":2}}],["better",{"2":{"5":1}}],["between",{"2":{"0":1,"4":5,"5":21,"10":1,"11":1,"17":1,"18":2}}],["been",{"2":{"2":1,"3":1,"18":1,"22":1}}],["be",{"2":{"0":5,"1":5,"2":4,"3":11,"4":33,"5":17,"6":1,"7":2,"8":3,"10":4,"11":3,"12":1,"14":1,"15":1,"17":10,"18":4,"19":3,"21":8,"22":16,"23":2,"24":1,"25":3,"27":4,"30":3,"31":1,"32":1,"34":3,"36":1,"38":1,"40":1,"41":1,"46":1,"48":1,"60":1,"61":2,"62":1,"64":1,"66":1,"69":1,"74":2,"75":3,"76":2,"79":1,"81":1}}],["ecosystem",{"2":{"83":1}}],["edges",{"2":{"48":1}}],["edge",{"2":{"21":1}}],["equally",{"2":{"21":1}}],["equivalent",{"2":{"18":1,"19":1,"23":2}}],["estimate",{"2":{"33":4}}],["essentially",{"2":{"19":1,"21":1}}],["especially",{"2":{"19":1,"23":1,"68":1}}],["effects",{"2":{"17":2}}],["ensuring",{"2":{"83":1}}],["ensure",{"2":{"23":4}}],["enforce",{"2":{"78":1}}],["entries",{"2":{"64":2}}],["entry",{"2":{"21":3,"47":7,"48":11,"49":2}}],["engine",{"2":{"57":1}}],["enables",{"2":{"35":1}}],["enable",{"2":{"8":1}}],["end",{"0":{"31":1},"2":{"5":4,"9":1,"10":6,"21":3,"22":1,"31":3,"43":1}}],["evaluations",{"2":{"33":2}}],["evaluated",{"2":{"5":1}}],["everything",{"2":{"36":1,"60":1,"64":1}}],["everywhere",{"2":{"34":1}}],["every",{"2":{"4":1,"5":1,"8":1,"22":2}}],["even",{"2":{"4":1,"14":2,"19":1,"31":1,"65":1,"75":1,"81":1}}],["error",{"2":{"3":2,"5":2,"15":1,"30":2,"64":1,"79":1}}],["errors",{"2":{"2":1,"3":1}}],["empty",{"2":{"3":1,"17":2,"25":2,"42":2,"76":1}}],["eltype",{"2":{"23":2,"61":2,"78":4,"79":22,"80":4,"81":88,"84":2,"85":26}}],["else",{"2":{"2":1,"21":1,"60":1,"64":1}}],["element",{"2":{"0":1,"2":1,"13":1,"15":3,"17":2,"21":2,"29":1,"30":2,"31":1,"43":2,"46":8,"47":7,"48":13,"49":1,"74":3,"75":3,"79":1,"80":2,"81":1,"86":1}}],["either",{"2":{"1":1,"2":1,"3":1,"4":2,"11":1,"17":2,"19":1,"21":4,"23":4}}],["easy",{"2":{"69":1}}],["easiest",{"2":{"40":1}}],["easier",{"2":{"24":1,"39":1}}],["easily",{"2":{"0":1,"4":1,"36":2,"64":1}}],["early",{"2":{"25":2}}],["eachindex",{"2":{"38":2}}],["eachslice",{"2":{"15":2,"23":4,"32":1,"49":1}}],["each",{"2":{"0":1,"3":2,"4":5,"5":2,"8":1,"14":1,"15":1,"18":1,"19":2,"20":1,"21":1,"22":1,"43":2,"47":1,"67":1,"69":1,"75":1,"80":1,"82":1,"85":3}}],["exception",{"2":{"23":2}}],["except",{"2":{"14":1,"27":1}}],["exact",{"2":{"4":1,"9":1,"19":2,"21":1}}],["exactly",{"2":{"4":1,"5":1,"48":1,"74":1}}],["examples",{"2":{"0":2,"22":1,"23":1,"36":2}}],["example",{"0":{"15":1,"84":1},"2":{"0":5,"1":4,"3":2,"4":5,"5":7,"15":1,"17":12,"18":2,"19":2,"20":1,"21":2,"22":5,"23":3,"27":1,"40":1,"43":1,"69":2}}],["extrema",{"2":{"32":1,"81":2}}],["extra",{"2":{"0":1,"76":1}}],["extent",{"2":{"43":9}}],["extents",{"2":{"43":2}}],["extensible",{"2":{"36":1,"40":1}}],["extension",{"2":{"14":1,"55":1}}],["extends",{"2":{"51":1,"53":1}}],["extend",{"2":{"18":1}}],["extended",{"2":{"4":1,"25":2,"36":2}}],["extending",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"4":3,"22":1,"37":1}}],["exploratory",{"2":{"54":1}}],["explicit",{"2":{"4":1,"8":1,"42":1}}],["explicitly",{"2":{"4":2,"8":1,"21":1,"22":2,"23":4}}],["expected",{"2":{"23":1}}],["expression",{"2":{"17":3,"22":1}}],["exported",{"0":{"1":1,"2":1}}],["existing",{"2":{"5":1,"22":1,"25":1,"45":1}}],["exists",{"2":{"3":1,"51":1}}],["exist",{"2":{"2":1,"60":1}}],["e",{"2":{"0":1,"3":1,"4":2,"5":2,"13":1,"17":1,"19":1,"21":1,"36":1,"49":1,"61":1,"65":1,"71":1,"72":1,"76":3,"79":2,"85":1}}],["etc",{"2":{"0":2,"3":1,"18":1,"22":2}}],["ll",{"2":{"69":2}}],["l",{"2":{"43":2,"62":2,"64":2,"66":3,"75":9,"85":1}}],["library",{"2":{"69":1}}],["lines",{"2":{"69":2}}],["line",{"2":{"67":1,"69":1}}],["linearmap",{"2":{"4":1}}],["list",{"2":{"21":1,"72":1}}],["listed",{"2":{"8":1,"44":1,"64":1}}],["little",{"2":{"5":1,"13":1}}],["lies",{"2":{"18":2}}],["lie",{"2":{"5":1}}],["likely",{"2":{"4":1,"25":2}}],["like",{"0":{"79":1,"80":1},"2":{"0":1,"3":2,"4":5,"5":2,"17":1,"18":1,"19":4,"21":2,"22":3,"24":1,"30":3,"32":1,"34":1,"38":1,"41":1,"43":2,"48":3,"51":1,"62":1,"63":1,"64":1,"66":1,"69":4,"74":7,"76":1,"77":2,"78":1,"79":1,"81":1}}],["legend",{"2":{"67":1}}],["less",{"2":{"48":1}}],["letting",{"2":{"34":1}}],["let",{"2":{"33":1,"46":2,"47":1,"48":1,"69":3}}],["lets",{"2":{"11":1,"24":1,"41":1}}],["left",{"2":{"13":3,"25":1}}],["leans",{"2":{"26":1}}],["leave",{"2":{"17":1}}],["leaves",{"2":{"3":1}}],["leap",{"2":{"4":1}}],["least",{"2":{"3":1,"25":4}}],["level",{"2":{"3":2,"69":1}}],["length=365",{"2":{"46":1}}],["lengths",{"2":{"3":1,"79":1}}],["length",{"2":{"0":1,"3":6,"4":5,"8":1,"17":4,"21":4,"23":2,"25":3,"38":1,"42":2,"83":1}}],["lazily",{"2":{"83":1}}],["lazy",{"2":{"20":1,"35":1}}],["largest",{"2":{"81":1,"83":1}}],["large",{"2":{"52":1}}],["larger",{"2":{"15":1}}],["language",{"2":{"26":1}}],["lastindex",{"2":{"32":1}}],["last",{"2":{"21":2,"31":1,"43":1}}],["layermetadata",{"2":{"25":1,"64":1}}],["layerdims",{"2":{"25":5,"42":2,"64":1}}],["layernames=nothing",{"2":{"20":1}}],["layered",{"2":{"18":2}}],["layer",{"2":{"18":5,"23":2,"27":2,"30":1,"69":1,"80":1,"81":1,"83":2,"85":1}}],["layersfrom=",{"2":{"85":2}}],["layersfrom=nothing",{"2":{"18":1,"20":1}}],["layersfrom",{"2":{"20":1}}],["layers",{"2":{"18":9,"20":1,"22":1,"23":5,"61":2,"78":4,"79":9,"80":2,"81":28,"82":2,"83":2,"84":1,"85":1}}],["layout",{"2":{"0":1,"69":2}}],["later",{"2":{"21":1}}],["latitude",{"2":{"0":1}}],["lat",{"2":{"0":1}}],["labelled",{"2":{"67":1}}],["labelling",{"2":{"17":1}}],["labels=x",{"2":{"48":2}}],["labels",{"2":{"11":1,"21":21,"68":1}}],["label",{"2":{"0":3,"2":5,"34":1}}],["lt",{"2":{"0":12,"1":2,"3":4,"5":1,"17":2,"39":3,"57":1,"58":1,"80":1}}],["lot",{"2":{"48":1,"73":1}}],["losing",{"2":{"21":1,"61":1}}],["looping",{"2":{"83":1}}],["loop",{"2":{"83":1}}],["look",{"2":{"46":1}}],["lookuparray",{"2":{"66":1}}],["lookupdim",{"2":{"22":1}}],["lookupcomponent",{"2":{"22":1}}],["lookuptrait",{"2":{"6":1,"7":1,"8":1,"9":1,"10":1,"22":1}}],["lookups",{"0":{"4":1,"75":1},"1":{"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"2":{"2":3,"3":2,"4":34,"5":11,"6":1,"7":6,"8":5,"9":3,"10":6,"11":4,"17":1,"19":2,"22":3,"23":1,"28":1,"34":2,"38":1,"43":1,"51":1,"62":1,"74":1,"75":3,"76":1,"77":1}}],["lookup",{"0":{"6":1,"23":1,"76":1},"1":{"7":1,"8":1,"9":1,"10":1,"24":1,"25":1},"2":{"0":4,"1":1,"2":13,"3":2,"4":52,"5":4,"6":2,"7":6,"9":1,"10":4,"17":9,"19":2,"21":2,"22":14,"23":5,"36":3,"38":1,"41":3,"43":18,"44":8,"48":2,"63":1,"64":1,"66":1,"74":2,"75":14,"76":4,"78":1}}],["loosely",{"2":{"6":1}}],["location",{"2":{"9":1}}],["located",{"2":{"5":1}}],["locus",{"2":{"0":1,"4":13,"5":3,"9":2,"10":5,"43":6}}],["lowerbound",{"2":{"8":1}}],["lower",{"2":{"5":1,"8":1}}],["low",{"2":{"3":1}}],["long",{"2":{"39":1,"40":1,"82":1}}],["longitudes",{"2":{"4":1}}],["longitude",{"2":{"0":1}}],["longer",{"2":{"0":1,"3":1,"4":1}}],["lon",{"2":{"0":1}}],["loading",{"2":{"0":1}}],["load",{"2":{"0":1,"4":1,"46":1,"51":1,"58":1}}],["csv",{"0":{"86":1},"2":{"83":1,"86":5}}],["c=rand",{"2":{"78":1}}],["cryogridoutput",{"2":{"56":1}}],["cryogrid",{"0":{"56":1},"2":{"56":2}}],["crs",{"2":{"51":1}}],["create",{"2":{"4":2,"10":2,"13":1,"17":4,"21":1,"22":1,"23":2,"26":1,"34":1,"46":2,"66":1,"69":1,"74":1,"75":5}}],["created",{"2":{"0":1}}],["creating",{"2":{"0":1,"28":1,"69":1}}],["climate",{"2":{"53":1}}],["climatebase",{"0":{"53":1},"2":{"53":1}}],["cloud",{"2":{"35":1}}],["closest",{"2":{"74":1}}],["close",{"2":{"25":3,"74":1}}],["closely",{"2":{"23":4,"52":1}}],["closed",{"2":{"5":3,"48":35}}],["closedinterval",{"2":{"5":1}}],["clashes",{"2":{"0":1,"5":1}}],["cycling",{"2":{"4":1}}],["cyclical",{"2":{"75":1}}],["cyclicbins",{"2":{"21":4}}],["cyclic",{"2":{"4":5,"21":1,"75":5}}],["cycle=month",{"2":{"75":1}}],["cycle=24",{"2":{"48":1}}],["cycle=12",{"2":{"48":3}}],["cycles",{"2":{"21":1,"75":1}}],["cycled",{"2":{"4":3}}],["cycle",{"2":{"4":9,"21":5}}],["cua2",{"2":{"26":2}}],["cua",{"2":{"26":2}}],["cuarray",{"2":{"22":1,"26":2,"61":1}}],["cuda",{"0":{"26":1},"1":{"27":1},"2":{"26":2,"27":1}}],["currently",{"2":{"14":1}}],["current",{"2":{"4":1,"17":1,"23":1}}],["curresponding",{"2":{"4":2}}],["customise",{"2":{"65":1}}],["custom=dd",{"2":{"22":1}}],["custom=10",{"2":{"22":1}}],["custom",{"2":{"0":4,"3":1,"20":2,"21":1,"22":9,"27":1,"36":2,"49":1}}],["center",{"2":{"5":5,"9":2,"10":4,"43":7,"66":1,"76":1}}],["central",{"2":{"0":1}}],["cellular",{"2":{"57":1}}],["cells",{"2":{"9":1,"10":1,"74":1}}],["cell",{"2":{"3":1,"5":1}}],["cheap",{"2":{"69":1}}],["checking",{"2":{"23":1}}],["checks",{"2":{"14":2,"23":4}}],["checked",{"2":{"14":1}}],["check=true",{"2":{"3":1}}],["check",{"2":{"1":2,"3":1,"4":1,"5":1,"12":1,"17":2,"22":1,"23":11,"64":1}}],["choosing",{"2":{"74":1}}],["choose",{"2":{"40":1,"67":1}}],["chosen",{"2":{"2":1,"19":1,"21":1}}],["child",{"2":{"23":1}}],["chunks",{"2":{"35":1}}],["chunked",{"2":{"35":1}}],["chunk",{"2":{"21":1}}],["channel",{"2":{"13":1}}],["channel=",{"2":{"13":1}}],["changing",{"2":{"4":1,"22":1,"65":1}}],["changes",{"2":{"25":1}}],["change",{"2":{"3":1,"4":4,"22":5,"66":1}}],["changed",{"2":{"3":1}}],["char",{"2":{"0":1,"3":1,"4":1,"13":1,"19":2,"62":2,"64":2,"66":3,"76":1,"84":2,"85":3}}],["cost",{"2":{"33":1}}],["costly",{"2":{"23":1}}],["covers",{"2":{"45":1}}],["cov",{"2":{"32":1}}],["core",{"2":{"64":1}}],["cor",{"2":{"32":1}}],["correctly",{"2":{"42":2}}],["correct",{"2":{"4":2,"5":1,"10":1,"27":1}}],["corresponding",{"2":{"4":1}}],["correspond",{"2":{"3":1,"10":3}}],["coordinate",{"2":{"36":1}}],["coordinatetransformations",{"2":{"4":2}}],["coordination",{"2":{"35":1}}],["coords",{"2":{"22":2}}],["copy",{"2":{"22":1,"23":7}}],["code",{"2":{"18":2,"25":2,"26":1,"69":1}}],["coded",{"2":{"6":1}}],["could",{"2":{"5":1,"15":1,"48":1}}],["counted",{"2":{"5":1}}],["colours",{"2":{"72":1}}],["color=",{"2":{"72":2,"73":1}}],["colormap",{"0":{"71":1,"72":1},"2":{"72":2}}],["colormap=",{"2":{"68":1}}],["color",{"2":{"69":7,"72":1}}],["colored",{"2":{"69":1}}],["colon",{"2":{"2":2,"3":1,"17":1,"18":1}}],["collected",{"2":{"83":1}}],["collection",{"2":{"78":1}}],["collect",{"2":{"61":1}}],["column",{"2":{"20":2,"69":1,"85":3}}],["columns",{"2":{"1":1,"8":1,"17":1,"20":3,"69":1,"83":2,"85":3}}],["command",{"2":{"12":1}}],["commands",{"2":{"12":1}}],["commondatamodel",{"2":{"35":1}}],["commondims",{"2":{"3":5}}],["commonly",{"2":{"4":1}}],["common",{"2":{"0":2,"4":1,"15":1,"21":1,"46":1,"51":1,"64":1}}],["compile",{"2":{"82":1}}],["compilation",{"2":{"82":1}}],["components",{"2":{"25":4,"42":4}}],["complex",{"2":{"69":1}}],["completely",{"2":{"23":4}}],["complicated",{"2":{"5":1,"13":1}}],["compatible",{"2":{"20":1}}],["compatibility",{"0":{"35":1},"2":{"14":1}}],["comparing",{"2":{"3":1,"23":1}}],["comparisons",{"2":{"3":2}}],["compare",{"2":{"3":6}}],["compared",{"2":{"3":1,"23":1}}],["comparedims",{"2":{"3":5}}],["combines",{"2":{"5":1,"43":1}}],["combined",{"2":{"4":1,"19":1,"22":1,"30":1,"63":1}}],["combinedims",{"2":{"3":1}}],["combine",{"2":{"3":1,"20":1}}],["combinations",{"2":{"19":2}}],["combination",{"2":{"1":1,"17":1,"35":2}}],["confusing",{"2":{"40":1}}],["confused",{"2":{"5":1}}],["consistency",{"2":{"78":1}}],["consistent",{"2":{"43":1}}],["consecutive",{"2":{"30":2}}],["constraint",{"2":{"30":1}}],["constructing",{"0":{"29":1},"2":{"41":1}}],["constructionbase",{"2":{"22":1,"40":2,"65":2}}],["construction",{"2":{"4":1,"10":1}}],["construct",{"2":{"20":1,"69":2}}],["constructors",{"2":{"17":1,"41":2}}],["constructor",{"2":{"4":1,"18":1,"26":1,"64":1}}],["constructed",{"2":{"0":1,"3":1,"4":1,"18":1,"25":2,"37":1}}],["const",{"2":{"5":1,"22":1,"46":1}}],["concatenate",{"2":{"23":4}}],["concrete",{"2":{"0":1,"1":2,"3":3,"4":2,"17":3,"18":1}}],["converging",{"2":{"52":1}}],["conversion",{"2":{"11":1}}],["conversions",{"2":{"10":1}}],["converting",{"0":{"85":1,"86":1}}],["convertible",{"2":{"27":1}}],["converts",{"2":{"2":1}}],["convert",{"2":{"2":1,"3":1,"4":1,"27":2,"69":1,"75":1}}],["converted",{"2":{"0":1,"3":1,"4":1,"20":1,"27":1}}],["controlled",{"2":{"72":1}}],["control",{"2":{"22":1,"23":1}}],["contents",{"2":{"11":1}}],["contexts",{"2":{"4":3}}],["context",{"2":{"3":1,"4":1,"17":1,"25":1}}],["contained",{"2":{"4":1,"5":1,"19":1,"60":1}}],["contain",{"2":{"2":1,"3":1,"5":2,"22":2}}],["contains",{"2":{"1":1,"4":2,"5":10,"17":1,"19":2,"21":1,"22":1,"74":2,"77":1}}],["containing",{"2":{"1":1,"3":1,"17":2}}],["cairomakie",{"2":{"68":1,"69":1}}],["caveats",{"2":{"64":1}}],["cache",{"2":{"35":1}}],["caching",{"2":{"35":1}}],["cartesianindex",{"2":{"30":2}}],["cartesianindices",{"2":{"19":4,"30":1,"77":1}}],["category",{"2":{"84":5,"85":10,"86":1}}],["categorises",{"2":{"11":1}}],["categories",{"2":{"4":3,"75":1}}],["categorical",{"2":{"0":2,"3":2,"4":8,"5":3,"13":2,"17":3,"19":2,"48":4,"62":2,"64":2,"66":4,"68":1,"74":15,"75":5,"76":3,"84":2}}],["cat",{"2":{"23":2,"32":1}}],["cases",{"2":{"23":1,"36":1,"38":1}}],["case",{"2":{"22":1,"66":1}}],["calculate",{"2":{"21":1}}],["call",{"2":{"25":1,"48":1}}],["calling",{"2":{"22":1,"39":1,"41":1}}],["callable",{"2":{"21":1}}],["called",{"2":{"3":2,"27":1,"41":1}}],["capabilities",{"2":{"51":1}}],["capable",{"2":{"4":1}}],["captions",{"2":{"17":1}}],["caution",{"2":{"5":1}}],["cannot",{"2":{"7":1}}],["can",{"2":{"0":2,"1":4,"2":3,"3":7,"4":18,"5":7,"10":3,"11":2,"12":1,"14":2,"15":3,"17":9,"18":2,"19":4,"20":1,"21":9,"22":8,"23":2,"28":1,"29":1,"30":4,"31":2,"32":2,"34":7,"36":1,"40":1,"42":2,"43":1,"44":1,"46":3,"47":2,"48":7,"49":2,"60":1,"61":1,"64":2,"65":1,"69":6,"72":1,"74":7,"75":2,"76":2,"77":4,"79":3,"81":1,"82":1,"85":2,"86":1}}],["c",{"2":{"0":6,"3":2,"4":2,"13":2,"17":9,"19":3,"22":3,"49":2,"62":2,"64":2,"66":3,"67":1,"68":1,"71":1,"74":33,"76":3,"77":2,"78":1,"79":8,"80":23,"81":28,"82":2,"84":3,"85":2}}],["zarr",{"2":{"35":1}}],["zip",{"2":{"35":1}}],["zero",{"2":{"25":2,"74":1,"80":1}}],["zeros",{"2":{"0":1,"17":6,"22":1,"28":4,"42":2}}],["z=dd",{"2":{"22":1}}],["z=",{"2":{"22":1}}],["zdim",{"2":{"0":4}}],["z",{"2":{"0":8,"1":9,"3":4,"17":9,"22":9,"23":3,"30":13,"34":3,"42":2,"66":2,"68":1,"84":4,"85":22,"86":9}}],["yaxarray",{"2":{"36":1,"52":1}}],["yaxarrays",{"0":{"52":1},"2":{"35":1,"52":1}}],["y=near",{"2":{"80":1}}],["y=not",{"2":{"74":1}}],["y=4",{"2":{"80":1,"82":1}}],["y=where",{"2":{"74":1}}],["y=at",{"2":{"74":2}}],["y=begin+1",{"2":{"31":1}}],["y=end",{"2":{"31":1}}],["y=dimarray",{"2":{"23":1}}],["y=>isodd",{"2":{"21":2}}],["yet",{"2":{"10":1,"25":2}}],["yearday",{"2":{"46":1}}],["yearmonthday",{"2":{"46":1}}],["yearmonth",{"2":{"46":1}}],["year",{"2":{"4":4,"21":1,"46":1}}],["years",{"2":{"4":3}}],["yourself",{"2":{"69":1}}],["your",{"2":{"5":1,"13":1,"22":1,"40":2,"69":2}}],["yourdimarray",{"2":{"40":1}}],["yourdim",{"2":{"0":1}}],["you",{"2":{"4":2,"5":1,"12":4,"15":2,"20":1,"22":5,"23":5,"25":2,"31":1,"32":1,"34":1,"40":1,"43":2,"46":1,"48":1,"60":1,"64":4,"66":4,"69":8,"75":1,"79":1}}],["ydim",{"2":{"0":7}}],["y",{"2":{"0":16,"1":12,"3":8,"4":9,"5":15,"15":13,"17":30,"18":2,"19":13,"20":2,"21":4,"22":11,"23":6,"26":2,"28":36,"30":7,"31":2,"32":3,"33":3,"34":3,"42":3,"43":31,"44":22,"61":8,"62":3,"64":2,"66":10,"68":2,"69":7,"71":1,"74":16,"76":3,"77":8,"78":10,"79":34,"80":4,"81":92,"84":10,"85":32,"86":1}}],["xy",{"2":{"85":2}}],["xarray",{"2":{"35":1}}],["xz",{"2":{"30":1}}],["x2",{"2":{"23":2}}],["x1",{"2":{"23":2}}],["x=not",{"2":{"74":1}}],["x=near",{"2":{"74":2}}],["x=where",{"2":{"74":1}}],["x=touches",{"2":{"74":1}}],["x=interval",{"2":{"74":1}}],["x=openinterval",{"2":{"74":1}}],["x=1",{"2":{"74":2,"80":1,"82":1}}],["x=contains",{"2":{"74":2}}],["x=at",{"2":{"74":3,"80":2}}],["x=all",{"2":{"5":1}}],["x=>",{"2":{"49":1}}],["x=>bins",{"2":{"48":2}}],["x=begin",{"2":{"31":1}}],["x=begin+1",{"2":{"31":1}}],["x=dimarray",{"2":{"23":1}}],["xs",{"2":{"2":1,"3":2,"4":6,"11":1,"17":2,"20":1}}],["xdim",{"2":{"0":7}}],["x3c",{"2":{"0":10,"4":12,"5":9,"7":6,"8":4,"9":3,"10":6,"11":2,"17":3,"18":1,"19":3,"20":2,"21":3,"24":2,"25":2,"33":2}}],["x",{"2":{"0":17,"1":27,"2":9,"3":22,"4":28,"5":32,"11":6,"15":14,"17":69,"18":3,"19":17,"20":5,"21":2,"22":27,"23":7,"26":2,"28":36,"30":18,"31":2,"32":3,"33":3,"34":6,"40":1,"42":4,"43":29,"44":23,"46":3,"47":3,"48":14,"49":3,"61":8,"62":4,"64":5,"66":8,"67":1,"68":3,"69":10,"71":1,"74":25,"75":7,"76":3,"77":8,"78":10,"79":25,"81":96,"84":10,"85":32,"86":1}}],["ideal",{"2":{"48":1}}],["identity",{"2":{"21":2,"48":2}}],["identical",{"2":{"4":2,"11":1,"78":1}}],["io",{"2":{"25":11}}],["images",{"2":{"58":1}}],["immutable",{"2":{"22":1,"27":1,"40":1,"66":1}}],["improving",{"2":{"66":1}}],["imperative",{"2":{"62":1}}],["imply",{"2":{"22":1}}],["implements",{"2":{"42":4,"83":1}}],["implemented",{"2":{"39":1,"42":2}}],["implement",{"2":{"18":1,"40":1,"83":1}}],["implementation",{"2":{"4":2,"18":1,"42":4,"56":1}}],["implementations",{"2":{"0":1}}],["important",{"2":{"4":3}}],["ignoring",{"2":{"17":1}}],["ignores",{"2":{"68":1}}],["ignore",{"2":{"3":2,"34":1,"40":1}}],["ignored",{"2":{"3":1,"23":2}}],["irregular",{"2":{"4":3,"5":6,"8":5,"17":1,"19":2,"21":4,"22":2,"47":7,"48":6,"74":6,"75":3,"76":1,"77":4}}],["i",{"2":{"2":2,"3":3,"13":1,"19":1,"38":1,"39":1,"49":1,"71":1,"72":1,"85":1}}],["if",{"2":{"0":1,"1":2,"2":3,"3":5,"4":8,"5":6,"11":2,"12":1,"17":2,"18":1,"19":2,"21":1,"22":7,"23":7,"38":1,"40":1,"43":1,"60":1,"64":2,"66":1,"68":1,"69":2,"77":1,"80":2,"81":1}}],["isend",{"2":{"44":5}}],["isexplicit",{"2":{"44":5}}],["ispoints",{"2":{"44":6}}],["isintervals",{"2":{"44":6}}],["isreverse",{"2":{"44":5}}],["isregular",{"2":{"43":2,"44":5}}],["isforward",{"2":{"44":5}}],["isordered",{"2":{"44":6}}],["iscenter",{"2":{"44":5}}],["iscyclic",{"2":{"44":6}}],["iscategorical",{"2":{"44":7}}],["isstart",{"2":{"44":5}}],["issampled",{"2":{"44":7}}],["issue",{"2":{"4":1,"66":1}}],["isbits",{"2":{"24":1,"27":1}}],["isa",{"2":{"18":1}}],["isapprox",{"2":{"5":1}}],["is",{"2":{"0":7,"1":3,"2":4,"3":14,"4":31,"5":9,"6":1,"7":3,"8":2,"10":1,"11":2,"12":1,"14":3,"17":8,"18":3,"19":6,"21":12,"22":11,"23":5,"24":3,"25":5,"26":3,"27":2,"31":2,"32":1,"34":1,"35":3,"36":4,"39":2,"40":5,"42":3,"43":6,"48":3,"49":1,"51":4,"52":3,"54":2,"55":1,"57":1,"58":1,"61":1,"62":1,"63":1,"64":3,"65":1,"66":3,"67":2,"69":6,"72":1,"73":1,"74":7,"75":4,"76":5,"77":1,"78":2,"82":2,"83":1,"85":1}}],["its",{"2":{"17":1,"21":2,"22":3,"27":1,"36":1,"52":2,"55":1,"66":1,"69":2}}],["iterates",{"2":{"23":2}}],["iterate",{"2":{"19":1}}],["iterator",{"2":{"18":2}}],["iterators",{"2":{"17":1}}],["iteration",{"2":{"18":2,"35":1}}],["iter",{"2":{"13":1}}],["iter=1",{"2":{"13":1}}],["it",{"2":{"0":1,"2":1,"3":2,"4":11,"5":3,"7":1,"11":1,"12":3,"17":1,"18":2,"19":1,"21":3,"22":7,"23":1,"24":2,"25":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":1,"38":1,"39":1,"40":1,"42":2,"43":1,"46":1,"48":2,"51":1,"55":1,"62":1,"64":1,"66":2,"68":1,"69":3,"74":3,"75":1,"79":2}}],["inverts",{"2":{"79":1}}],["invalid",{"2":{"30":1}}],["inferno",{"2":{"68":1}}],["information",{"2":{"4":3,"17":1,"43":1}}],["inner",{"2":{"22":1,"23":1,"25":1,"61":2}}],["inbuilt",{"2":{"22":1}}],["initially",{"2":{"18":2}}],["inaccurate",{"2":{"8":1}}],["including",{"2":{"7":1,"35":1,"74":1}}],["included",{"2":{"3":1,"5":1,"11":1,"48":1}}],["include",{"2":{"2":1,"3":1,"5":1,"25":1,"74":1,"75":1}}],["installed",{"2":{"12":1}}],["install",{"2":{"12":1}}],["installation",{"0":{"12":1}}],["instead",{"2":{"5":2,"7":1,"11":1,"21":1,"31":1,"68":1,"69":1,"77":1}}],["inside",{"2":{"5":1,"31":1,"74":1}}],["inserted",{"2":{"0":1}}],["inputs",{"2":{"39":1,"41":1}}],["input",{"2":{"3":1,"5":1,"8":1,"72":1}}],["inds",{"2":{"30":2}}],["individual",{"2":{"19":1}}],["indicate",{"2":{"5":1,"10":1,"32":1,"69":1}}],["indicates",{"2":{"4":2,"7":3,"9":1,"10":1,"11":1}}],["indicating",{"2":{"4":5}}],["indices",{"2":{"2":2,"5":7,"17":1,"19":3,"22":2,"34":1,"74":3,"75":1,"77":1}}],["independent",{"2":{"0":1,"4":1}}],["independentdim",{"2":{"0":5}}],["indexes",{"2":{"74":1}}],["indexed",{"2":{"4":2,"18":2}}],["indexing",{"0":{"30":1,"31":1,"79":1,"80":1},"2":{"0":2,"4":4,"17":3,"18":2,"19":1,"29":1,"30":4,"31":3,"33":1,"51":1,"74":7,"80":1,"82":3}}],["index",{"2":{"0":2,"3":3,"4":5,"5":8,"6":1,"7":4,"8":4,"9":2,"10":5,"17":6,"18":2,"19":4,"20":2,"22":5,"30":2,"31":1,"34":1,"74":3,"77":1,"80":1}}],["inherits",{"2":{"52":1}}],["inherit",{"2":{"0":1,"1":1,"17":1}}],["int8",{"2":{"13":5}}],["intselectors",{"2":{"5":1}}],["intselector",{"2":{"5":4}}],["intentionally",{"2":{"35":1}}],["intended",{"2":{"5":1}}],["integrate",{"2":{"35":1}}],["integrations",{"0":{"50":1},"1":{"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1}}],["integration",{"0":{"27":1}}],["integers",{"2":{"46":1,"48":1}}],["integer",{"2":{"3":1,"17":4,"21":7,"39":1}}],["inteface",{"2":{"25":2}}],["interoperability",{"2":{"83":1}}],["interpolate",{"2":{"19":1}}],["interpolation",{"2":{"19":3,"77":1}}],["interact",{"2":{"5":1}}],["intermediate",{"2":{"5":1}}],["interfaces",{"0":{"42":1},"2":{"25":2,"42":5}}],["interface",{"0":{"20":1,"25":1,"42":1},"2":{"3":1,"25":4,"35":1,"36":1,"65":1,"83":2,"86":1}}],["internally",{"2":{"64":1}}],["internal",{"0":{"25":1},"2":{"3":1,"22":1}}],["intervalbounds",{"2":{"43":4,"74":1}}],["interval",{"2":{"0":1,"4":5,"5":12,"8":1,"9":2,"10":4,"19":1,"21":2,"43":2,"48":9,"74":3,"75":1,"76":1}}],["intervalsets",{"2":{"5":2,"21":1,"48":6,"74":2,"76":1}}],["intervals",{"2":{"0":1,"4":13,"5":10,"8":3,"9":4,"10":1,"19":1,"21":4,"43":1,"48":7,"66":2,"74":14,"75":6,"76":2}}],["int",{"2":{"1":5,"2":2,"5":1,"17":5,"18":2,"20":1,"21":4,"31":2,"32":1,"34":1,"39":1,"48":1,"74":4}}],["int64",{"2":{"0":2,"4":2,"5":11,"13":4,"15":14,"17":6,"19":2,"21":3,"22":2,"23":1,"28":11,"30":6,"43":17,"44":14,"46":12,"47":11,"48":5,"66":2,"75":3,"76":1,"77":3,"84":4,"85":8}}],["into",{"2":{"0":3,"4":3,"19":2,"20":1,"21":1,"22":1,"26":1,"27":1,"34":2,"48":4,"56":1,"63":1,"68":1,"82":1}}],["in",{"2":{"0":7,"1":3,"2":2,"3":12,"4":12,"5":10,"7":3,"8":2,"9":1,"10":2,"11":2,"14":1,"17":7,"18":6,"19":5,"21":6,"22":24,"23":11,"24":1,"25":11,"27":1,"28":6,"30":2,"31":4,"32":1,"34":1,"35":3,"36":2,"38":1,"40":2,"41":2,"42":10,"43":2,"48":4,"60":1,"64":5,"65":1,"66":2,"67":1,"68":2,"69":3,"73":1,"74":6,"75":3,"78":1,"81":2,"82":1,"83":1}}],["hundreds",{"2":{"83":1}}],["humidity",{"2":{"23":6}}],["high",{"2":{"69":1}}],["histogram",{"2":{"33":2}}],["hierarchy",{"2":{"0":1}}],["heatmap",{"2":{"68":1}}],["helper",{"2":{"48":1}}],["help",{"2":{"25":2}}],["here",{"2":{"18":1,"19":1,"22":1,"23":1,"28":1,"29":1,"48":3,"64":1,"68":1,"69":1,"75":3}}],["h",{"2":{"13":1,"71":1,"85":1}}],["having",{"2":{"23":1}}],["have",{"2":{"0":1,"4":3,"8":2,"11":1,"12":1,"17":1,"18":2,"20":1,"21":2,"22":3,"23":1,"30":1,"35":1,"36":1,"37":1,"38":1,"40":1,"48":1,"66":1,"68":1,"78":1,"85":1}}],["hard",{"2":{"6":1}}],["haskey",{"2":{"11":2}}],["hasselection",{"2":{"4":2}}],["hasn",{"2":{"2":1}}],["has",{"2":{"1":1,"3":2,"4":1,"11":1,"15":2,"17":3,"18":1,"22":2,"23":2,"27":1,"33":1,"38":1,"40":2,"41":1,"43":1,"75":1,"76":1}}],["hasdim",{"2":{"1":6,"17":6}}],["hold",{"2":{"21":1,"38":1,"76":1}}],["holds",{"2":{"4":4,"18":1,"75":2}}],["holding",{"2":{"1":1,"2":1,"8":1,"17":9,"19":1,"21":2,"63":1,"77":1}}],["however",{"2":{"5":1,"22":1}}],["how",{"2":{"4":2,"7":2,"23":1,"34":1,"46":1,"62":1}}],["hours",{"2":{"21":4,"48":2}}],["hour",{"2":{"0":1,"21":1,"46":4,"47":1,"48":2,"49":3}}],["slower",{"2":{"82":1}}],["slowly",{"2":{"52":1}}],["slightly",{"2":{"48":1}}],["slicing",{"2":{"3":1}}],["sliced",{"2":{"18":1,"22":1}}],["slicedims",{"2":{"3":2,"17":1}}],["slices",{"2":{"17":1,"23":4}}],["slice",{"2":{"3":1,"17":1,"22":1,"69":1}}],["src",{"2":{"23":4,"31":2}}],["smaller",{"2":{"29":1}}],["small",{"2":{"23":1}}],["synchronisation",{"2":{"57":1}}],["syntax",{"2":{"17":1}}],["symmetry",{"2":{"34":1}}],["symbol",{"2":{"1":1,"2":1,"3":4,"4":7,"11":1,"13":1,"17":11,"18":6,"20":1,"21":3,"22":2,"23":1,"24":3,"39":2,"41":1,"43":1,"47":7,"48":15,"49":2,"64":2,"74":15,"76":2,"79":2}}],["symbols",{"2":{"0":1,"1":1,"2":1,"3":1,"4":5,"11":1,"17":3,"22":1,"27":1,"29":1,"32":1,"69":1}}],["system",{"2":{"27":1,"36":1}}],["scatter",{"2":{"69":2}}],["scalar",{"2":{"80":1}}],["scalars",{"2":{"15":6,"80":1}}],["scaled",{"2":{"15":6}}],["scale",{"2":{"15":1}}],["scaling",{"0":{"15":1}}],["scope",{"2":{"0":1,"4":1,"34":1}}],["sat",{"2":{"75":2}}],["save",{"2":{"51":1}}],["saving",{"2":{"11":2}}],["samples",{"2":{"9":1,"33":2}}],["sampled",{"2":{"0":6,"4":16,"5":8,"9":1,"13":4,"15":20,"17":7,"19":4,"21":4,"22":10,"23":1,"26":2,"28":6,"36":1,"43":24,"44":28,"47":9,"48":7,"49":5,"62":2,"64":2,"66":8,"74":13,"75":7,"76":3,"77":10,"78":2,"79":15,"80":1,"81":49,"84":4,"85":2}}],["sampling=dd",{"2":{"5":2}}],["sampling=intervals",{"2":{"4":2,"75":3}}],["sampling=points",{"2":{"4":2}}],["sampling",{"0":{"9":1},"2":{"0":1,"2":1,"3":1,"4":15,"5":1,"8":1,"9":6,"19":1,"22":1,"43":5,"64":1,"76":1}}],["same",{"2":{"0":2,"3":3,"4":1,"5":2,"11":1,"15":1,"17":4,"19":2,"21":1,"22":2,"23":1,"28":1,"30":1,"33":1,"38":2,"40":1,"43":1,"46":1,"67":1,"78":1,"83":1}}],["sharing",{"2":{"18":1}}],["share",{"2":{"18":1,"78":1}}],["shift",{"2":{"4":2}}],["shiftlocus",{"2":{"4":1}}],["show",{"2":{"25":9}}],["shows",{"2":{"17":1}}],["shown",{"2":{"2":1,"75":1}}],["should",{"2":{"2":1,"5":1,"12":1,"17":1,"22":1,"25":2,"38":1,"39":1,"40":1,"75":1,"85":1}}],["shortcuts",{"2":{"28":1}}],["shorthand",{"2":{"17":1,"75":1}}],["short",{"2":{"0":1}}],["swapping",{"2":{"22":1}}],["swap",{"2":{"3":1}}],["swapdims",{"2":{"3":3}}],["specialisations",{"2":{"21":1}}],["specify",{"2":{"10":5,"21":3,"22":3,"32":1,"34":1,"43":1,"48":1,"66":1,"75":1,"85":1}}],["specifying",{"2":{"4":1,"9":1,"75":1}}],["specifies",{"2":{"7":1,"24":1,"30":1,"43":1}}],["specified",{"2":{"2":1,"3":1,"4":1,"17":1,"76":1}}],["specifically",{"2":{"23":1}}],["specific",{"2":{"4":5,"6":1,"8":1,"9":1,"34":1,"62":1}}],["space",{"2":{"22":2}}],["spaced",{"2":{"21":1}}],["spacing",{"2":{"4":2}}],["span=irregular",{"2":{"75":1}}],["span=regular",{"2":{"4":1,"75":1}}],["span=autospan",{"2":{"4":2}}],["span",{"0":{"8":1},"2":{"4":15,"8":7,"43":5,"64":1,"76":1}}],["spatial",{"2":{"0":1,"35":1,"51":1,"52":1,"57":2,"85":1}}],["since",{"2":{"69":1}}],["singleton",{"2":{"22":1}}],["single",{"2":{"1":8,"3":2,"4":1,"5":5,"9":1,"15":1,"17":8,"18":1,"21":1,"22":3,"31":1,"40":1,"43":1,"63":1,"74":1,"80":1,"82":1}}],["signature",{"2":{"40":1}}],["sits",{"2":{"30":1}}],["sizes",{"2":{"48":1}}],["size",{"2":{"2":1,"3":1,"4":5,"8":1,"15":1,"21":1,"22":2,"23":6,"25":5,"32":2,"42":3,"49":2,"61":2,"78":4,"79":22,"80":3,"81":88,"83":1,"84":2,"85":26}}],["simultaneously",{"2":{"63":1}}],["simulations",{"2":{"57":1}}],["simulation",{"2":{"57":1}}],["simulataneously",{"2":{"18":1}}],["similar",{"2":{"0":1,"4":1,"7":1,"9":1,"19":1,"49":1,"61":1,"69":1}}],["simpler",{"2":{"46":1}}],["simple",{"2":{"45":1,"69":1}}],["simply",{"2":{"0":1,"4":1,"5":1,"11":1,"17":1,"22":1,"25":1,"43":1,"77":1}}],["simplicity",{"2":{"0":1}}],["st2",{"2":{"79":2}}],["st",{"2":{"61":4,"78":1,"79":8,"80":4,"81":35,"84":1,"85":2,"86":1}}],["storage",{"2":{"51":1}}],["stored",{"2":{"17":1,"78":1}}],["std",{"2":{"32":1,"81":2}}],["style",{"2":{"27":1}}],["still",{"2":{"11":1,"26":1,"31":1,"66":1}}],["standard",{"2":{"69":1,"83":1}}],["standards",{"2":{"10":1}}],["stage",{"2":{"25":2}}],["stack",{"2":{"18":2,"22":2,"23":8,"25":4,"42":2,"61":1,"81":1,"82":1,"83":2}}],["stacks",{"2":{"18":1,"23":5,"82":1,"85":1,"86":1}}],["statistics",{"2":{"15":1,"18":2,"46":1,"81":1}}],["status",{"2":{"12":2}}],["starts",{"2":{"61":1}}],["start=6",{"2":{"48":4}}],["start=1",{"2":{"48":1}}],["start=12",{"2":{"48":1}}],["start=january",{"2":{"48":1}}],["start=0",{"2":{"21":1}}],["start=dates",{"2":{"21":2}}],["starting",{"2":{"8":1,"48":2}}],["start",{"2":{"0":2,"4":6,"5":3,"9":1,"10":4,"13":1,"21":9,"43":1,"48":4,"69":1,"74":5,"75":7}}],["strongly",{"2":{"22":1}}],["stripped",{"2":{"27":1}}],["strickt",{"2":{"23":1}}],["strict=true",{"2":{"23":4}}],["strict=false",{"2":{"22":1}}],["strictness",{"0":{"23":1},"1":{"24":1,"25":1}}],["strict",{"2":{"14":2,"22":1,"23":8}}],["strings",{"2":{"5":1}}],["string",{"2":{"2":4,"3":1,"4":1,"17":1,"25":1,"48":2,"64":2,"75":3,"76":1,"86":1}}],["string=string",{"2":{"0":1}}],["struct",{"2":{"3":1,"22":1,"60":2}}],["step=12",{"2":{"48":1}}],["step=2",{"2":{"48":1}}],["step=3",{"2":{"48":2}}],["step=hour",{"2":{"46":1}}],["step=autostep",{"2":{"8":1}}],["steps",{"2":{"21":1}}],["steprange",{"2":{"15":1}}],["step",{"2":{"3":1,"4":1,"8":2,"21":7,"22":1,"76":1}}],["s",{"2":{"0":1,"1":4,"2":1,"3":4,"5":16,"14":1,"17":5,"18":3,"20":1,"21":1,"22":5,"24":1,"25":1,"33":1,"35":3,"46":2,"47":1,"48":1,"49":1,"69":4,"74":2,"85":1}}],["series",{"0":{"70":1},"1":{"71":1,"72":1,"73":1},"2":{"59":1,"71":1,"72":2,"73":1}}],["sep",{"2":{"48":6,"75":2}}],["separate",{"2":{"2":1,"51":1}}],["sequential",{"2":{"21":1}}],["seamlessly",{"2":{"27":1}}],["sea",{"2":{"23":4}}],["seasons",{"2":{"21":4,"48":5}}],["searched",{"2":{"7":1}}],["searchsortedfirst",{"2":{"7":1}}],["searchsorted",{"2":{"7":1}}],["sections",{"2":{"21":1}}],["second",{"2":{"0":1,"2":1,"4":4,"11":1,"17":2,"22":1}}],["semi",{"2":{"17":1}}],["sense",{"2":{"5":1,"51":1,"64":1}}],["seed",{"2":{"17":1}}],["see",{"2":{"3":1,"15":1,"18":1,"42":2,"46":1,"48":1,"69":1}}],["selections",{"2":{"5":1}}],["selectindices",{"2":{"2":1}}],["selects",{"2":{"5":2,"74":1}}],["select",{"0":{"49":1},"2":{"5":6,"23":2,"49":1,"74":2,"75":1,"77":1}}],["selected",{"2":{"5":4,"21":4,"74":2}}],["selectors=near",{"2":{"19":1,"77":1}}],["selectorss",{"2":{"4":2}}],["selectors",{"0":{"5":1,"74":1},"1":{"75":1,"76":1,"77":1},"2":{"2":1,"4":12,"5":8,"8":1,"17":1,"18":1,"19":6,"31":1,"69":1,"75":2,"76":1,"77":3,"80":1}}],["selector",{"2":{"0":1,"2":2,"4":3,"5":13,"34":1,"40":1,"64":1,"74":9,"79":1}}],["setproperties",{"2":{"22":1,"65":1}}],["settings",{"0":{"23":1},"1":{"24":1,"25":1}}],["setting",{"2":{"22":1,"23":1}}],["setindex",{"2":{"18":1,"31":1}}],["setdims",{"2":{"3":3}}],["set",{"0":{"66":1},"2":{"0":1,"4":6,"8":1,"11":2,"15":1,"17":13,"22":22,"23":2,"64":1,"66":11,"74":2,"76":3}}],["sophisticated",{"2":{"69":1}}],["sounds",{"2":{"39":1}}],["sources",{"2":{"4":1,"22":7,"51":1}}],["source",{"2":{"0":15,"1":5,"2":5,"3":12,"4":23,"5":10,"6":1,"7":6,"8":5,"9":3,"10":6,"11":4,"17":17,"18":2,"19":3,"20":2,"21":9,"22":12,"23":9,"24":3,"25":6}}],["solution",{"2":{"21":1}}],["so",{"2":{"4":2,"5":1,"14":1,"22":2,"27":1,"30":1,"43":1,"48":1,"65":1,"69":1,"75":1,"83":1,"85":1}}],["sorted",{"2":{"5":1,"21":2}}],["sortdims",{"2":{"3":1}}],["sort",{"2":{"3":3}}],["sometimes",{"2":{"48":1,"66":1}}],["something",{"2":{"13":1,"21":1}}],["somewhere",{"2":{"18":2,"64":1}}],["some",{"2":{"0":1,"4":1,"15":1,"17":1,"18":1,"21":1,"23":1,"34":1,"38":1,"40":1,"46":2,"78":1,"82":1,"84":1}}],["sun",{"2":{"75":2}}],["surface",{"2":{"23":4}}],["sure",{"2":{"19":2}}],["surprising",{"2":{"18":2}}],["summer",{"2":{"48":1}}],["summary",{"2":{"42":2}}],["sum",{"2":{"18":1,"21":1,"28":2,"32":3,"47":1,"81":5}}],["succinct",{"2":{"18":2}}],["such",{"2":{"0":2,"2":1,"4":1,"5":1,"10":1,"21":2}}],["supporting",{"2":{"86":1}}],["support",{"2":{"67":1}}],["supplied",{"2":{"5":1}}],["supertypes",{"2":{"3":1}}],["supertype=dimension",{"2":{"0":1}}],["supertype",{"2":{"0":8,"4":5,"5":3,"6":1,"7":1,"10":1,"11":1,"17":2,"18":1,"20":1,"24":1}}],["submodule",{"2":{"34":1}}],["subset",{"2":{"23":2,"69":2,"79":1}}],["subsetting",{"2":{"5":1}}],["subtypes",{"2":{"25":1}}],["subtype",{"2":{"17":1}}],["sub",{"2":{"0":2}}],["m=rand",{"2":{"79":1}}],["my",{"2":{"64":3}}],["mydimstack",{"2":{"18":2}}],["mutable",{"2":{"60":1}}],["much",{"2":{"26":1,"64":1,"67":1}}],["multiplying",{"2":{"23":2}}],["multiplication",{"2":{"23":5}}],["multiple",{"2":{"4":1,"18":3,"21":1,"44":1,"63":1}}],["multipications",{"2":{"23":1}}],["multi",{"0":{"18":1},"2":{"38":1}}],["must",{"2":{"4":3,"5":3,"17":2,"18":2,"22":2,"25":2,"27":2,"37":1,"38":3,"40":1,"41":1,"60":1,"78":1}}],["mixing",{"2":{"30":1}}],["mix",{"2":{"30":1,"81":1}}],["mixed",{"2":{"18":2,"19":2,"36":1}}],["mime",{"2":{"25":5}}],["mid",{"2":{"5":1}}],["minimal",{"2":{"69":1}}],["minimum",{"2":{"3":1,"32":1,"47":1,"81":2}}],["min",{"2":{"33":4}}],["minus",{"2":{"4":1}}],["missingval",{"2":{"22":1,"51":1}}],["missing",{"2":{"3":1,"22":1,"41":1,"51":1}}],["msg",{"2":{"3":1}}],["measured",{"2":{"82":1}}],["means",{"2":{"3":1,"5":1,"7":1,"10":1,"14":1,"15":1,"20":1,"22":1,"27":1,"34":1,"38":1,"44":2,"74":1}}],["mean",{"2":{"3":1,"4":1,"9":1,"14":1,"15":2,"17":1,"18":4,"21":10,"32":1,"33":4,"47":3,"48":3,"49":1,"81":3}}],["meaningful",{"2":{"35":1}}],["meaning",{"2":{"2":1,"4":1,"19":1}}],["merging",{"2":{"79":1}}],["merges",{"2":{"63":1}}],["merge",{"2":{"30":1,"79":5,"85":1}}],["merged",{"2":{"22":3}}],["mergedims=",{"2":{"85":1}}],["mergedims=nothing",{"2":{"20":3}}],["mergedims",{"0":{"63":1},"2":{"20":1,"22":5,"63":1}}],["mergedlookup",{"2":{"4":3,"22":3,"30":1}}],["median",{"2":{"32":1,"33":4,"47":1}}],["memory",{"2":{"33":2}}],["mem",{"2":{"26":1}}],["messy",{"2":{"21":1}}],["mesages",{"2":{"3":1}}],["metadata=dict",{"2":{"28":6,"64":1}}],["metadata=metadata",{"2":{"18":1}}],["metadata=nometadata",{"2":{"4":3,"17":1,"18":1}}],["metadata",{"0":{"11":1},"2":{"3":1,"4":16,"11":16,"17":11,"21":3,"22":4,"25":9,"27":1,"28":6,"40":1,"42":8,"47":7,"48":11,"49":2,"60":1,"64":5}}],["method",{"2":{"1":4,"3":3,"4":4,"9":1,"11":2,"17":7,"19":1,"22":2,"25":3,"40":1,"42":2}}],["methods",{"0":{"1":1,"2":1,"3":1,"21":1,"22":1},"2":{"0":2,"1":1,"3":3,"4":3,"7":1,"17":1,"18":5,"21":1,"23":3,"25":2,"32":1,"34":1,"36":1,"40":1,"43":1,"44":1,"49":1,"53":1}}],["m",{"2":{"0":1,"4":3,"62":2,"64":2,"66":3,"79":2,"85":1}}],["mon",{"2":{"75":2}}],["monthabbr",{"2":{"75":2}}],["months",{"2":{"21":5,"48":4,"75":1}}],["monthly",{"2":{"21":2}}],["month",{"2":{"0":6,"15":21,"17":1,"21":4,"46":1,"47":2,"48":13,"75":5}}],["moving",{"2":{"61":1,"67":1}}],["moved",{"2":{"27":2}}],["move",{"2":{"26":1}}],["moves",{"2":{"17":1}}],["mod",{"2":{"61":2}}],["models",{"2":{"54":1,"57":1}}],["model",{"2":{"27":1,"56":1}}],["modification",{"2":{"27":1}}],["modified",{"2":{"5":1}}],["modifying",{"0":{"60":1},"1":{"61":1,"62":1,"63":1,"64":1,"65":1,"66":1}}],["modify",{"0":{"61":1},"2":{"6":1,"22":6,"26":1,"60":1,"61":6}}],["module",{"2":{"0":2,"4":1}}],["mostly",{"2":{"17":1,"22":2,"67":1,"68":1}}],["most",{"2":{"4":1,"18":4,"22":1,"23":1,"25":1,"26":1,"35":1,"36":1,"64":1,"75":1,"76":1}}],["more",{"2":{"0":2,"4":4,"13":1,"17":1,"20":1,"25":1,"40":2,"52":1,"61":1,"65":1,"73":1,"74":1}}],["magic",{"0":{"65":1}}],["made",{"2":{"51":1}}],["masking",{"2":{"51":1}}],["mar",{"2":{"48":6,"75":1}}],["markersize=15",{"2":{"73":1}}],["markers",{"0":{"73":1},"2":{"10":1}}],["max",{"2":{"33":4}}],["maximum",{"2":{"5":1,"25":1,"32":1,"47":1,"81":3}}],["manipulation",{"2":{"51":1}}],["mandatory",{"2":{"25":4,"42":2}}],["many",{"2":{"18":4,"25":2,"32":1,"82":1}}],["manually",{"2":{"4":5,"21":1,"40":1,"75":2,"76":1,"82":1}}],["mapping",{"2":{"69":4}}],["mapped",{"2":{"51":1}}],["mapslices",{"2":{"32":1}}],["mapreduce",{"2":{"32":1}}],["map",{"2":{"18":5,"21":4,"23":1}}],["maintains",{"2":{"17":1}}],["main",{"2":{"17":1,"25":4}}],["makie",{"0":{"68":1},"1":{"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"67":2,"68":3,"69":1,"71":1,"73":1}}],["making",{"2":{"0":1,"69":1}}],["makes",{"2":{"24":1,"43":1}}],["make",{"2":{"4":1,"5":1,"19":2,"64":1,"75":1}}],["math",{"2":{"31":1}}],["matmul",{"2":{"23":4}}],["matrix",{"2":{"8":1,"23":6,"28":3,"61":3,"81":1}}],["matter",{"2":{"3":1,"19":1}}],["match",{"2":{"1":3,"2":2,"3":3,"4":1,"5":1,"14":1,"17":3,"21":1,"22":4,"23":9,"79":1,"81":1,"83":1}}],["matches",{"2":{"1":1,"5":1,"17":1,"21":1,"25":4,"42":4,"64":1}}],["matching",{"2":{"0":2,"1":1,"3":1,"4":3,"17":1,"18":2,"21":2,"22":1,"39":2,"74":1,"77":1}}],["macro",{"2":{"0":1,"3":1,"14":1,"15":1,"22":3}}],["may",{"2":{"0":2,"3":1,"4":5,"5":4,"6":1,"8":1,"11":2,"18":2,"23":1,"25":1,"48":6,"64":2,"66":1,"75":3}}],["tell",{"2":{"62":1}}],["text",{"2":{"25":2}}],["testable",{"2":{"42":1}}],["testing",{"0":{"42":1},"2":{"42":2}}],["test",{"0":{"70":1},"1":{"71":1,"72":1,"73":1},"2":{"25":4,"42":4}}],["tested",{"2":{"25":2}}],["testname",{"2":{"22":1}}],["temporal",{"2":{"57":1}}],["tempo",{"2":{"46":9,"47":1}}],["temp",{"2":{"23":4}}],["term",{"2":{"6":1,"43":1}}],["terms",{"2":{"4":1}}],["tue",{"2":{"75":2}}],["turn",{"2":{"23":2}}],["turned",{"2":{"14":1}}],["tuples",{"2":{"3":4,"4":1,"19":1,"21":2,"30":2,"41":1,"43":1,"46":1,"63":1}}],["tuple",{"2":{"1":22,"2":8,"3":34,"4":32,"8":2,"11":5,"17":43,"18":3,"19":8,"21":2,"22":10,"23":1,"25":5,"30":3,"37":1,"41":1,"42":2,"43":6,"46":4,"47":3,"74":1,"79":1,"81":4,"85":2}}],["twice",{"2":{"5":1}}],["two",{"2":{"3":1,"4":2,"5":4,"17":4,"18":2,"20":1,"27":1,"48":1,"74":1,"78":1}}],["tries",{"2":{"66":1}}],["trivially",{"2":{"49":1}}],["trial",{"2":{"33":2}}],["try",{"2":{"22":1}}],["treated",{"2":{"21":1}}],["treat",{"2":{"20":1}}],["track",{"2":{"17":1}}],["tracking",{"2":{"4":1,"8":1,"11":1}}],["trait",{"2":{"6":1,"22":2}}],["traits",{"0":{"6":1},"1":{"7":1,"8":1,"9":1,"10":1},"2":{"3":1,"4":1,"6":2,"7":1,"22":1,"75":1}}],["transforming",{"2":{"21":1,"22":1}}],["transform",{"2":{"4":1,"46":1,"64":1}}],["transformation",{"2":{"4":3}}],["transformations",{"2":{"3":1,"4":1,"17":1}}],["transformed",{"2":{"4":4}}],["transpose",{"2":{"0":1,"32":2,"81":1}}],["transect",{"2":{"0":1}}],["true",{"2":{"1":4,"3":3,"17":5,"18":1,"21":2,"22":2,"30":1,"42":89,"44":21}}],["typ",{"2":{"0":2}}],["typeof",{"2":{"22":1,"26":1,"75":2}}],["typed",{"2":{"22":1}}],["typemax",{"2":{"4":1}}],["typemin",{"2":{"4":1}}],["type",{"2":{"0":3,"1":6,"2":3,"3":15,"4":2,"8":1,"11":2,"17":6,"18":1,"20":2,"22":4,"24":1,"27":1,"30":1,"39":2,"41":1,"43":1,"64":1,"66":1,"69":1,"86":1}}],["types",{"2":{"0":6,"1":5,"2":1,"3":8,"4":7,"5":1,"6":1,"10":1,"11":2,"17":7,"20":1,"22":3,"31":1,"32":2,"34":2,"36":2,"46":1,"51":1,"55":1,"76":2}}],["tabular",{"2":{"83":1}}],["table",{"2":{"20":1,"69":1,"85":1}}],["tabletraits",{"0":{"20":1},"2":{"20":1}}],["tables",{"0":{"20":1,"83":1},"1":{"84":1,"85":1,"86":1},"2":{"0":1,"17":1,"20":4,"69":1,"83":2,"86":1}}],["taking",{"2":{"48":1}}],["taken",{"2":{"19":1}}],["take",{"2":{"0":1,"4":2,"5":1,"18":1,"21":2,"47":1,"72":1,"74":3,"82":1,"85":1}}],["target",{"2":{"19":2}}],["t",{"2":{"0":1,"2":2,"3":2,"4":10,"11":1,"15":3,"19":1,"23":4,"30":2,"31":1,"64":1,"65":1,"66":1,"69":2,"75":1,"76":1,"77":1,"85":1}}],["title",{"2":{"25":5}}],["ti=>",{"2":{"49":1}}],["ti=>cyclicbins",{"2":{"48":4}}],["ti=>bins",{"2":{"48":8}}],["ti=>yearday",{"2":{"47":2}}],["ti=>yearmonth",{"2":{"47":2}}],["ti=>yearmonthday",{"2":{"47":2}}],["ti=>hour",{"2":{"47":2}}],["ti=>dayofyear",{"2":{"47":2}}],["ti=>month",{"2":{"21":6,"47":3}}],["ti=2",{"2":{"19":1}}],["ti=all",{"2":{"5":1}}],["time=1",{"2":{"13":1}}],["timeseriestools",{"0":{"59":1},"2":{"59":1}}],["times",{"2":{"0":1,"47":1,"78":2}}],["timedime",{"2":{"0":1}}],["timedim",{"2":{"0":4,"3":1}}],["time",{"0":{"15":1},"2":{"0":4,"4":1,"13":1,"18":1,"21":1,"23":1,"25":1,"33":6,"47":1,"59":1,"82":1}}],["ti",{"2":{"0":14,"1":1,"3":3,"5":3,"15":15,"17":5,"19":1,"20":2,"21":6,"22":5,"23":3,"32":3,"34":1,"47":10,"48":23,"49":5,"68":1}}],["though",{"2":{"82":1}}],["those",{"2":{"5":1,"23":2,"34":1,"64":1}}],["thur",{"2":{"75":2}}],["think",{"2":{"66":1}}],["thing",{"2":{"66":2}}],["things",{"2":{"25":2,"26":1,"60":1,"61":1,"64":2,"76":1}}],["this",{"2":{"0":1,"2":3,"3":6,"4":13,"5":6,"7":1,"8":1,"10":2,"11":2,"12":1,"14":1,"18":4,"19":2,"20":2,"21":6,"22":8,"23":6,"24":1,"25":3,"26":1,"27":2,"30":1,"31":1,"32":1,"34":1,"35":1,"38":1,"39":1,"41":1,"42":1,"43":1,"45":1,"48":5,"57":1,"61":2,"64":1,"66":1,"67":1,"69":2,"74":1,"76":2,"78":1,"81":1,"82":1}}],["through",{"2":{"17":1,"55":1}}],["throws",{"2":{"5":1}}],["throw",{"2":{"3":1,"30":1}}],["throwing",{"2":{"3":1}}],["thrown",{"2":{"2":1,"3":1,"5":1,"64":1}}],["three",{"2":{"4":2,"18":2,"21":1,"48":1}}],["than",{"2":{"3":1,"4":2,"5":2,"9":1,"21":2,"27":1,"39":1,"40":1,"48":1,"60":1,"62":1,"74":1,"82":1}}],["that",{"2":{"0":3,"1":2,"2":2,"3":1,"4":13,"5":15,"7":4,"8":3,"9":2,"10":1,"11":1,"12":1,"14":4,"17":9,"18":4,"19":4,"21":4,"22":7,"23":12,"27":2,"28":1,"31":1,"34":1,"36":1,"37":1,"38":1,"39":1,"40":3,"43":3,"46":2,"64":1,"69":2,"75":2,"76":1,"78":1,"83":1,"85":1}}],["then",{"2":{"22":1,"69":1,"74":1,"76":1}}],["their",{"2":{"3":2,"18":2,"22":3,"43":1,"51":2}}],["there",{"2":{"2":2,"4":2,"14":1,"17":4,"22":1,"28":1,"40":1,"43":1,"48":1,"66":1,"75":1,"82":1}}],["these",{"2":{"0":3,"1":1,"3":2,"4":4,"6":2,"7":1,"8":1,"9":1,"10":1,"17":2,"18":1,"19":2,"20":1,"21":2,"22":1,"23":3,"30":1,"34":1,"36":1,"39":1,"40":3,"44":1,"64":1,"75":2,"77":1}}],["they",{"2":{"0":1,"2":1,"3":2,"4":3,"5":2,"10":2,"11":1,"17":1,"19":2,"22":2,"23":1,"25":2,"27":1,"30":1,"34":2,"35":1,"60":1,"64":1,"67":1,"69":1,"75":1,"76":3,"83":1}}],["them",{"2":{"0":1,"4":1,"5":3,"11":1,"23":1,"27":1,"30":1,"43":1,"47":1,"48":1,"74":1,"75":1}}],["the",{"0":{"15":1},"2":{"0":20,"1":13,"2":8,"3":43,"4":85,"5":45,"6":3,"7":9,"8":7,"9":7,"10":9,"11":6,"12":3,"13":1,"14":3,"15":8,"17":52,"18":24,"19":16,"20":4,"21":48,"22":56,"23":22,"24":4,"25":9,"26":9,"27":5,"28":1,"29":1,"30":6,"31":4,"32":3,"33":2,"34":6,"35":1,"36":1,"38":7,"39":3,"40":6,"41":4,"42":4,"43":11,"44":1,"46":6,"47":4,"48":10,"51":1,"52":1,"56":1,"60":3,"61":4,"62":1,"63":1,"64":7,"65":4,"66":9,"67":4,"68":5,"69":7,"72":2,"74":19,"75":13,"76":6,"77":2,"78":3,"79":2,"80":1,"81":5,"83":8,"85":3,"86":1}}],["tolerance",{"2":{"74":1}}],["todo",{"2":{"49":1,"66":1}}],["top",{"2":{"25":1,"30":1,"69":1}}],["tools",{"2":{"35":1,"51":2,"58":1}}],["too",{"2":{"23":1,"27":1,"55":1,"64":1}}],["total",{"2":{"21":1}}],["together",{"2":{"14":1}}],["touched",{"2":{"74":1}}],["touches",{"2":{"5":7,"74":2}}],["touch",{"2":{"5":2}}],["touching",{"2":{"5":1}}],["tosort",{"2":{"3":4}}],["to",{"0":{"85":1,"86":1},"2":{"0":8,"1":5,"2":4,"3":18,"4":35,"5":18,"6":1,"8":1,"9":2,"10":12,"11":5,"12":3,"14":4,"15":4,"17":20,"18":8,"19":5,"20":1,"21":16,"22":32,"23":21,"24":2,"25":6,"26":2,"27":10,"30":1,"31":2,"32":3,"34":5,"35":3,"36":4,"38":1,"39":1,"40":3,"41":1,"42":2,"43":1,"44":1,"46":2,"48":7,"49":2,"51":1,"57":1,"58":1,"60":1,"61":5,"62":2,"64":3,"66":6,"67":2,"69":10,"74":4,"75":4,"76":3,"78":1,"79":1,"81":1,"82":2,"83":2,"86":1}}],["jan",{"2":{"48":4,"75":1}}],["january",{"2":{"21":2,"48":1}}],["jarring",{"2":{"18":2}}],["jump",{"0":{"55":1},"2":{"55":1}}],["jul",{"2":{"48":6,"75":1}}],["juliaprint",{"2":{"25":2}}],["juliaposition",{"2":{"10":1}}],["juliapoints",{"2":{"9":1}}],["juliahours",{"2":{"21":1}}],["juliahasselection",{"2":{"4":1}}],["juliahasdim",{"2":{"1":1,"17":1}}],["juliaranges",{"2":{"21":1}}],["juliareorder",{"2":{"22":1}}],["juliarebuild",{"2":{"22":1,"25":1,"40":1}}],["juliarefdims",{"2":{"17":1,"25":1}}],["juliaregular",{"2":{"8":1}}],["juliareverseordered",{"2":{"7":1}}],["juliareducedims",{"2":{"3":1}}],["juliagroupby",{"2":{"21":1}}],["juliamakie",{"2":{"68":1,"72":2,"73":1}}],["juliamap",{"2":{"18":1}}],["juliamodify",{"2":{"22":1}}],["juliamonths",{"2":{"21":1}}],["juliamergedims",{"2":{"22":3}}],["juliamergedlookup",{"2":{"4":1}}],["juliametadata",{"2":{"11":1,"17":1}}],["juliamean",{"2":{"0":4,"18":1}}],["juliafunction",{"2":{"18":1}}],["juliaforwardordered",{"2":{"7":1}}],["juliaformat",{"2":{"2":1,"41":1}}],["juliaend",{"2":{"10":1}}],["juliaexplicit",{"2":{"8":1}}],["juliairregular",{"2":{"8":1}}],["juliaintervals",{"2":{"9":1,"21":1}}],["juliaintselector",{"2":{"5":1}}],["juliaindependentdim",{"2":{"0":1}}],["juliawhere",{"2":{"5":1}}],["juliaordered",{"2":{"7":1}}],["juliaorder",{"2":{"4":1,"7":1}}],["juliaotherdims",{"2":{"1":1,"17":1}}],["juliab",{"2":{"71":1}}],["juliablockwidth",{"2":{"25":1}}],["juliabroadcast",{"2":{"22":2}}],["juliabins",{"2":{"21":1}}],["juliabegin",{"2":{"10":1}}],["juliabetween",{"2":{"5":1}}],["juliabounds",{"2":{"4":1}}],["juliabase",{"2":{"17":4,"23":5}}],["juliabasedims",{"2":{"3":1}}],["juliabasetypeof",{"2":{"3":1}}],["julianame",{"2":{"17":1,"24":1}}],["julianame2dim",{"2":{"3":1}}],["julianoname",{"2":{"24":1}}],["julianometadata",{"2":{"11":1}}],["julianolookup",{"2":{"4":1}}],["julianear",{"2":{"5":1}}],["juliatouches",{"2":{"5":1}}],["juliatransformed",{"2":{"4":1}}],["juliatimedim",{"2":{"0":2}}],["juliaunmergedims",{"2":{"22":2}}],["juliaunits",{"2":{"11":1}}],["juliaunordered",{"2":{"7":1}}],["juliaunaligned",{"2":{"4":1}}],["juliausing",{"2":{"0":3,"3":2,"4":6,"5":7,"13":1,"15":1,"22":3,"26":1,"34":1,"43":1,"46":1,"68":1,"69":1,"74":1,"75":1,"81":1,"84":1,"86":1}}],["juliacat",{"2":{"23":1}}],["juliacategorical",{"2":{"4":1}}],["juliacenter",{"2":{"10":1}}],["juliacolor",{"2":{"69":1}}],["juliacopy",{"2":{"23":2}}],["juliacontains",{"2":{"5":1}}],["juliacombinedims",{"2":{"3":1}}],["juliacomparedims",{"2":{"3":1}}],["juliacommondims",{"2":{"3":1}}],["juliacyclicbins",{"2":{"21":1}}],["juliacyclic",{"2":{"4":1}}],["juliaa",{"2":{"22":1}}],["juliaall",{"2":{"5":1}}],["juliaaligned",{"2":{"4":1}}],["juliaat",{"2":{"5":1}}],["juliaarrayselector",{"2":{"5":1}}],["juliaautoposition",{"2":{"10":1}}],["juliaautospan",{"2":{"8":1}}],["juliaautoorder",{"2":{"7":1}}],["juliaautovalues",{"2":{"4":1}}],["juliaautolookup",{"2":{"4":1}}],["juliaabstractname",{"2":{"24":1}}],["juliaabstractdimtable",{"2":{"20":1}}],["juliaabstractdimstack",{"2":{"18":1}}],["juliaabstractdimarray",{"2":{"17":1}}],["juliaabstractbasicdimarray",{"2":{"17":1}}],["juliaabstractmetadata",{"2":{"11":1}}],["juliaabstractcategorical",{"2":{"4":1}}],["juliaabstractcyclic",{"2":{"4":1}}],["juliaabstractsampled",{"2":{"4":1}}],["juliaanondim",{"2":{"0":1}}],["juliashow",{"2":{"25":2}}],["juliashiftlocus",{"2":{"4":1}}],["juliastrict",{"2":{"23":4}}],["juliastart",{"2":{"10":1}}],["juliaspan",{"2":{"4":1,"8":1}}],["juliasampling",{"2":{"4":1,"9":1}}],["juliasampled",{"2":{"4":1}}],["juliaset",{"2":{"22":1}}],["juliasetdims",{"2":{"3":1}}],["juliaseasons",{"2":{"21":1}}],["juliaselector",{"2":{"5":1}}],["juliaselectindices",{"2":{"2":1}}],["juliasortdims",{"2":{"3":1}}],["juliaslicedims",{"2":{"3":1}}],["juliaswapdims",{"2":{"3":1}}],["julialocus",{"2":{"4":1}}],["julialookuptrait",{"2":{"6":1}}],["julialookups",{"2":{"4":1}}],["julialookup",{"2":{"2":1,"4":1}}],["julialabel",{"2":{"2":1}}],["julia>",{"2":{"1":12,"3":4,"12":1,"17":24,"18":8,"19":4,"20":2,"21":2,"22":4,"23":4,"28":1,"33":1,"34":1,"42":1,"43":1,"61":1,"62":2,"74":2,"75":1,"78":1,"82":1}}],["julia",{"2":{"0":1,"14":2,"21":1,"22":2,"25":2,"26":1,"27":1,"31":1,"32":1,"35":3,"54":1,"56":1,"83":1}}],["juliajulia>",{"2":{"0":1,"1":4,"3":1,"12":3,"13":4,"15":10,"17":10,"18":1,"19":2,"20":1,"21":4,"22":6,"23":1,"26":2,"28":17,"29":2,"30":7,"31":2,"32":2,"33":3,"34":4,"42":4,"43":50,"44":73,"46":9,"47":8,"48":13,"49":4,"61":8,"62":2,"64":6,"65":2,"66":6,"74":17,"75":11,"76":1,"77":5,"78":2,"79":9,"80":4,"81":34,"82":2,"84":3,"85":5}}],["juliaz",{"2":{"0":1}}],["juliazdim",{"2":{"0":2}}],["juliayearday",{"2":{"46":1}}],["juliay",{"2":{"0":1}}],["juliaydim",{"2":{"0":2}}],["juliaval",{"2":{"0":4,"4":1}}],["juliadata",{"2":{"69":1}}],["juliadimgroupbyarray",{"2":{"21":1}}],["juliadimtable",{"2":{"20":1}}],["juliadimpoints",{"2":{"19":1}}],["juliadimindices",{"2":{"19":1}}],["juliadimarray",{"2":{"17":1}}],["juliadimnum",{"2":{"1":1,"17":1}}],["juliadimselectors",{"2":{"19":1}}],["juliadimstack",{"2":{"18":1}}],["juliadimsmatch",{"2":{"3":1}}],["juliadims2indices",{"2":{"2":1}}],["juliadims",{"2":{"1":2,"17":2}}],["juliadim",{"2":{"0":1}}],["juliadimension",{"2":{"0":1}}],["juliadimensions",{"2":{"0":1}}],["juliadependentdim",{"2":{"0":1}}],["juliaxdim",{"2":{"0":2}}],["juliax",{"2":{"0":3}}],["jun",{"2":{"48":6,"75":1}}],["just",{"2":{"5":2,"14":1,"23":1,"38":1,"40":1,"43":1,"48":3,"65":1,"66":1,"79":1}}],["j",{"2":{"3":2,"13":3,"71":1,"85":1}}],["jl",{"0":{"20":2,"35":1,"42":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"67":1,"68":1,"69":1},"1":{"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"0":2,"4":5,"5":2,"20":2,"21":1,"22":2,"25":6,"26":1,"27":7,"31":6,"34":1,"35":11,"36":1,"37":1,"38":2,"40":3,"42":1,"43":2,"45":1,"51":3,"52":4,"53":2,"54":1,"55":1,"56":1,"57":2,"58":1,"59":1,"60":1,"64":1,"65":2,"67":4,"68":1,"69":4,"73":1,"83":5,"86":2}}],["omitted",{"2":{"85":4}}],["o=rand",{"2":{"79":1}}],["oct",{"2":{"48":4,"75":1}}],["own",{"2":{"46":1,"49":1,"55":1}}],["objs",{"2":{"39":1}}],["obj",{"2":{"37":1,"39":2,"40":2}}],["object",{"2":{"0":1,"1":9,"2":1,"3":7,"4":7,"6":1,"10":1,"11":2,"17":12,"19":1,"20":1,"22":11,"25":1,"31":2,"34":2,"40":1,"43":3,"49":1,"62":1,"64":1,"66":1}}],["objects",{"0":{"60":1},"1":{"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"0":1,"2":2,"3":1,"4":1,"5":2,"7":1,"11":1,"17":1,"18":3,"21":1,"22":4,"27":1,"30":1,"34":1,"37":1,"38":1,"39":1,"40":3,"43":1,"49":2,"60":1,"65":2,"66":1,"81":1}}],["our",{"2":{"30":2,"43":1,"46":1,"48":6,"69":1}}],["outer",{"2":{"41":1,"61":1,"75":1,"76":3}}],["outcome",{"2":{"18":2}}],["out",{"2":{"4":1,"20":1,"34":1,"51":1,"67":1}}],["outputs",{"2":{"57":1}}],["output",{"2":{"0":4,"3":2,"4":5,"5":7,"15":1,"22":2,"48":1,"49":1,"56":1}}],["old",{"2":{"22":6}}],["optimization",{"2":{"55":1}}],["optimised",{"2":{"7":1}}],["options",{"2":{"22":5,"42":2}}],["optional",{"2":{"17":1,"25":4,"42":2}}],["operation",{"2":{"21":1,"32":1,"69":1}}],["operations",{"2":{"0":1,"17":1,"21":1,"23":1,"27":1,"69":1}}],["open",{"2":{"5":1,"48":35,"74":1}}],["openinterval",{"2":{"5":1}}],["o",{"2":{"4":1,"79":2,"85":1}}],["overheads",{"2":{"82":1}}],["overlapping",{"2":{"21":1}}],["over",{"2":{"0":1,"4":4,"9":1,"14":2,"15":1,"18":3,"19":2,"21":2,"22":6,"23":2,"47":1,"75":1,"81":1}}],["others",{"2":{"22":2}}],["otherwise",{"2":{"4":1,"21":1,"22":1,"23":1,"36":1,"69":1}}],["otherdims",{"2":{"1":3,"17":3,"19":1,"43":8,"44":13}}],["other",{"2":{"0":2,"3":2,"4":2,"5":2,"14":1,"15":1,"21":1,"22":3,"23":2,"27":1,"28":1,"36":1,"44":1,"46":1,"49":1,"68":1,"75":1,"76":2,"78":1,"79":1,"83":1,"86":1}}],["orange",{"2":{"72":1,"73":1}}],["organized",{"2":{"34":1}}],["organises",{"2":{"0":1}}],["originates",{"2":{"21":1}}],["original",{"2":{"3":3,"22":7}}],["origin",{"2":{"11":1}}],["ordering",{"2":{"4":1}}],["order=unordered",{"2":{"4":1,"75":1}}],["order=autoorder",{"2":{"4":2}}],["order=forwardordered",{"2":{"3":1,"75":2}}],["ordered",{"2":{"1":1,"4":1,"7":4,"17":3,"75":2}}],["order",{"0":{"7":1},"2":{"1":1,"2":1,"3":12,"4":23,"5":1,"7":9,"15":1,"17":1,"19":7,"22":17,"23":4,"30":4,"43":6,"64":3,"68":1,"76":2}}],["or",{"2":{"0":5,"1":20,"2":7,"3":20,"4":33,"5":7,"7":1,"8":5,"9":3,"10":3,"11":6,"12":1,"13":2,"15":2,"17":32,"18":7,"19":6,"20":4,"21":16,"22":15,"23":5,"25":4,"27":1,"30":1,"31":2,"32":2,"34":1,"36":3,"38":1,"39":1,"41":1,"42":2,"43":10,"44":1,"45":1,"48":1,"60":1,"61":1,"64":1,"69":3,"72":1,"74":4,"75":3,"76":3,"77":2,"78":1,"79":2,"83":1,"86":1}}],["often",{"2":{"21":1,"22":1,"27":1,"51":1,"75":1}}],["off",{"2":{"14":1,"23":1}}],["offsetarrays",{"2":{"38":2}}],["offset",{"2":{"5":1}}],["of",{"2":{"0":5,"1":13,"2":6,"3":17,"4":45,"5":13,"6":5,"7":3,"8":1,"9":2,"10":7,"11":5,"14":1,"15":2,"17":35,"18":10,"19":16,"20":3,"21":40,"22":29,"23":10,"24":1,"25":16,"26":2,"27":1,"28":2,"30":8,"31":1,"34":2,"35":3,"36":1,"37":1,"38":1,"39":1,"40":2,"41":4,"42":10,"43":10,"46":2,"47":2,"48":5,"51":2,"53":1,"54":1,"56":1,"60":1,"61":1,"63":2,"64":4,"66":2,"67":1,"69":3,"72":1,"74":2,"75":4,"76":3,"77":2,"78":5,"79":2,"80":1,"81":3,"83":5,"85":1}}],["oneto",{"2":{"15":2,"23":2,"75":2}}],["one",{"2":{"3":1,"4":3,"9":1,"18":2,"22":1,"23":3,"26":1,"27":1,"40":2,"64":2,"74":1,"78":1,"80":1,"85":3}}],["ones",{"2":{"1":4,"3":3,"4":1,"14":1,"17":10,"20":1,"22":4,"28":4,"33":1}}],["only",{"2":{"2":1,"4":1,"5":1,"17":3,"19":4,"22":4,"40":2,"48":1,"60":1,"64":1,"69":1,"78":1,"79":1,"81":1,"85":1}}],["on",{"2":{"0":6,"1":1,"2":3,"3":1,"4":2,"5":1,"10":1,"11":1,"14":2,"17":3,"18":2,"21":3,"22":3,"23":2,"24":1,"25":3,"26":3,"27":2,"30":1,"35":1,"41":1,"42":2,"48":1,"57":1,"64":1,"65":1,"67":2,"69":1,"79":2}}],["away",{"2":{"64":1}}],["aware",{"2":{"14":1,"51":1}}],["a1",{"2":{"64":4}}],["aimed",{"2":{"52":1}}],["aggregate",{"2":{"48":1}}],["again",{"2":{"18":1,"30":1}}],["a=rand",{"2":{"78":1}}],["a=falses",{"2":{"61":1}}],["a=3",{"2":{"29":1}}],["a=1",{"2":{"13":1}}],["aug",{"2":{"48":6,"75":1}}],["auxiliary",{"2":{"27":1,"57":1}}],["autodetection",{"0":{"76":1}}],["automata",{"2":{"57":1}}],["automated",{"2":{"22":1}}],["automatic",{"2":{"0":1,"4":1,"10":1}}],["automatically",{"2":{"0":1,"4":3,"7":1,"27":1,"40":1,"75":2,"76":1}}],["autoposition",{"2":{"10":2}}],["autospan",{"2":{"8":2,"75":1}}],["autovalues",{"2":{"4":1,"75":1}}],["autolookup",{"2":{"4":3}}],["autoorder",{"2":{"4":3,"7":2,"75":1}}],["auto",{"2":{"2":1}}],["amazing",{"2":{"26":1}}],["amp",{"0":{"26":1},"1":{"27":1}}],["ambiguity",{"2":{"2":1,"11":1,"14":1,"22":1,"66":1}}],["apr",{"2":{"48":6,"75":2}}],["approach",{"2":{"69":1}}],["appearance",{"2":{"22":1}}],["applies",{"2":{"61":1}}],["applied",{"2":{"4":1,"18":1,"21":2,"22":1,"81":1}}],["applicable",{"2":{"22":1,"69":1}}],["applications",{"2":{"64":1}}],["application",{"2":{"21":1,"35":1}}],["applying",{"2":{"21":2}}],["apply",{"2":{"18":3,"49":1}}],["api",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1}}],["after",{"2":{"15":1,"17":1,"21":3,"25":3,"48":1}}],["affine",{"2":{"4":1}}],["affect",{"2":{"0":1}}],["adherence",{"2":{"35":1}}],["adjoint",{"2":{"32":1,"81":1}}],["adjacent",{"2":{"5":1}}],["adapt",{"2":{"27":3}}],["addition",{"2":{"74":1}}],["additional",{"2":{"25":2,"75":1}}],["additionally",{"2":{"12":1}}],["adding",{"2":{"4":3,"25":2}}],["add",{"2":{"12":2,"25":1,"28":1,"75":1}}],["added",{"2":{"3":1,"14":1,"25":3,"36":1,"42":2}}],["available",{"2":{"4":1,"11":2}}],["avoids",{"2":{"18":1,"21":1}}],["avoid",{"2":{"0":1,"5":1,"14":1,"18":1,"25":1}}],["actual",{"2":{"27":1}}],["actually",{"2":{"2":1,"4":1}}],["active",{"2":{"23":2}}],["acepted",{"2":{"17":4}}],["accessed",{"2":{"79":1}}],["accessible",{"2":{"69":1}}],["accessing",{"2":{"33":1}}],["accessors",{"2":{"65":1}}],["access",{"2":{"28":1,"34":1,"69":1}}],["accepted",{"2":{"25":2,"42":2,"64":1}}],["accept",{"2":{"17":1,"18":1,"39":1,"41":1,"64":1}}],["acceptable",{"2":{"8":1}}],["accepts",{"2":{"4":1,"5":1,"55":1}}],["accurate",{"2":{"8":1}}],["account",{"2":{"4":2}}],["atol=0",{"2":{"74":1}}],["atol=nothing",{"2":{"5":1}}],["atol",{"2":{"5":1,"19":6,"64":1}}],["attach",{"2":{"4":1}}],["attached",{"2":{"3":1,"38":1}}],["attempting",{"2":{"23":2}}],["attempt",{"2":{"0":1}}],["at",{"2":{"0":1,"3":2,"4":6,"5":11,"9":3,"17":1,"18":3,"19":4,"21":2,"22":1,"25":5,"43":1,"46":1,"48":1,"51":1,"52":1,"74":2,"75":2,"77":2,"78":2}}],["astroimage",{"2":{"58":1}}],["astroimages",{"0":{"58":1},"2":{"58":1}}],["astronomical",{"2":{"58":1}}],["assumes",{"2":{"64":1}}],["assert",{"2":{"49":1}}],["associate",{"2":{"34":2}}],["assignment",{"2":{"15":1,"22":1}}],["assigned",{"2":{"4":9,"60":1,"76":1}}],["ascending",{"2":{"5":1}}],["as",{"2":{"0":6,"1":1,"2":3,"3":5,"4":8,"5":4,"8":1,"10":3,"14":2,"17":7,"18":6,"19":4,"20":5,"21":5,"22":8,"23":4,"25":2,"26":2,"27":3,"32":1,"33":1,"34":1,"35":2,"36":1,"38":1,"39":2,"40":4,"64":3,"67":3,"68":1,"69":2,"72":1,"74":2,"75":1,"76":5}}],["above",{"2":{"44":1,"47":2}}],["about",{"2":{"0":1,"4":3,"11":1,"26":1,"65":1}}],["abstracdimarray",{"2":{"31":1}}],["abstractname",{"2":{"24":3}}],["abstraction",{"2":{"22":1}}],["abstractdimtable",{"2":{"20":2}}],["abstractdimstack",{"2":{"18":4,"20":3,"21":5,"22":10,"23":7,"25":5,"36":1,"41":1,"51":1,"54":1,"61":1,"64":2,"78":1,"81":2,"83":1}}],["abstractdimarrays",{"2":{"3":1,"22":4,"24":1,"25":2,"31":1}}],["abstractdimarray",{"2":{"0":1,"3":2,"4":1,"11":2,"14":1,"17":7,"18":5,"19":1,"20":4,"21":7,"22":17,"23":7,"25":6,"27":2,"32":1,"36":1,"40":3,"41":2,"45":1,"51":1,"52":1,"55":1,"57":2,"58":1,"61":1,"64":2,"67":1,"68":1,"78":1,"81":1,"83":1}}],["abstractrng",{"2":{"17":2}}],["abstractrange",{"2":{"4":4,"21":2,"75":1,"76":1}}],["abstractbasicarray",{"2":{"17":1}}],["abstractbasicdimarray",{"2":{"17":2,"22":1}}],["abstractmetadata",{"2":{"11":3,"22":1}}],["abstractmatrix",{"2":{"8":1}}],["abstractstring",{"2":{"4":1}}],["abstractsampled",{"2":{"4":6,"36":1,"51":1,"75":1}}],["abstractcolumns",{"2":{"20":1}}],["abstractcategorical",{"2":{"4":4,"36":1}}],["abstractcyclic",{"2":{"4":2}}],["abstractarray",{"2":{"2":3,"3":2,"4":4,"5":1,"17":4,"18":2,"19":3,"21":4,"22":4,"23":2,"28":1,"35":1,"38":1,"48":2,"75":1,"76":1,"78":1}}],["abstractvector",{"2":{"0":1,"4":4,"17":8}}],["abstract",{"2":{"0":7,"1":2,"3":4,"4":4,"5":3,"6":1,"10":1,"11":1,"17":4,"18":2,"20":1,"22":1,"24":1}}],["abs",{"2":{"13":1}}],["absent",{"2":{"3":1}}],["axis",{"2":{"0":6,"2":1,"3":2,"4":9,"10":3,"17":4,"19":1,"22":1,"38":1,"48":1,"67":1,"68":2,"74":2,"75":2}}],["axes",{"0":{"38":1},"2":{"0":1,"1":1,"4":1,"15":2,"17":1,"23":3,"30":2,"32":1,"38":2,"64":1,"68":2}}],["algebraic",{"2":{"69":1}}],["algebra",{"2":{"69":1}}],["algebraofgraphics",{"0":{"69":1},"2":{"69":5}}],["algorithms",{"2":{"3":1,"64":1}}],["alpha",{"2":{"13":1}}],["alpha=",{"2":{"13":1}}],["align",{"2":{"10":1}}],["aligned",{"2":{"4":6,"77":1}}],["although",{"2":{"4":1,"17":1,"67":1}}],["alone",{"2":{"4":2}}],["along",{"0":{"15":1},"2":{"0":1,"21":1,"32":1,"43":1,"75":1}}],["always",{"2":{"1":1,"3":1,"9":1,"11":2,"17":1,"18":2,"22":2,"23":4,"25":2,"40":1,"44":1,"51":1,"64":1}}],["already",{"2":{"0":1,"27":1}}],["also",{"2":{"0":3,"3":3,"5":2,"10":1,"11":1,"15":1,"18":1,"21":1,"22":3,"30":1,"31":1,"32":1,"34":1,"38":1,"39":1,"40":1,"47":1,"48":3,"49":2,"51":1,"66":1,"68":2,"69":3,"74":4,"75":1,"77":1,"80":1,"86":1}}],["allocate",{"2":{"83":1}}],["allocations",{"2":{"82":2}}],["allocation",{"2":{"22":1}}],["allocs",{"2":{"33":2}}],["allows",{"2":{"10":1,"21":1,"22":1,"69":1}}],["allowing",{"2":{"4":1}}],["allow",{"2":{"4":1,"10":1,"11":1,"57":1}}],["all",{"2":{"0":5,"2":1,"3":3,"4":5,"5":6,"6":1,"11":1,"17":3,"18":5,"19":3,"22":11,"23":8,"24":1,"25":2,"27":1,"31":1,"40":2,"42":2,"43":1,"44":3,"48":1,"51":1,"57":2,"60":1,"61":3,"69":1,"74":1,"78":2,"79":1,"80":1,"81":1,"82":1,"83":1}}],["arviz",{"0":{"54":1},"2":{"36":1,"54":2}}],["archgdal",{"2":{"35":1}}],["around",{"2":{"21":3,"22":1}}],["arbitrary",{"0":{"29":1},"2":{"19":1,"21":2,"29":1,"48":1}}],["arg",{"2":{"25":3,"42":3,"64":1}}],["args",{"2":{"3":1,"17":1,"22":3,"25":12,"40":1,"42":12}}],["argumenterror",{"2":{"30":1}}],["argument",{"2":{"2":1,"3":2,"4":4,"11":2,"15":1,"17":2,"18":1,"22":4,"39":1,"40":3,"72":1}}],["arguments",{"2":{"0":1,"1":4,"3":4,"4":8,"8":1,"17":6,"18":1,"21":1,"22":5,"25":2,"27":1,"40":1,"42":2,"64":2}}],["arrays",{"0":{"17":1},"2":{"5":1,"15":1,"17":5,"18":1,"21":1,"22":2,"23":1,"24":1,"25":2,"60":1,"61":3,"76":3,"77":1,"85":1,"86":1}}],["arrayselectors",{"2":{"5":1}}],["arrayselector",{"2":{"5":4}}],["array",{"0":{"18":1,"80":1},"2":{"0":3,"1":1,"2":2,"3":4,"4":16,"5":1,"9":1,"10":1,"11":1,"13":1,"14":1,"15":1,"17":6,"18":3,"19":3,"20":1,"21":1,"22":8,"23":4,"24":2,"25":2,"26":1,"27":3,"31":1,"32":1,"33":1,"36":2,"38":3,"41":2,"42":2,"47":1,"48":1,"55":1,"61":4,"64":4,"69":1,"74":2,"75":1,"76":2,"77":1,"82":1,"83":1}}],["aren",{"2":{"77":1}}],["area",{"2":{"5":3}}],["are",{"2":{"0":7,"1":1,"2":2,"3":17,"4":15,"5":11,"7":1,"8":2,"9":2,"11":1,"14":1,"15":1,"17":10,"18":3,"19":4,"20":2,"21":1,"22":15,"23":5,"25":13,"27":2,"28":2,"30":1,"34":4,"35":2,"36":3,"40":2,"42":10,"43":1,"46":1,"48":1,"51":2,"57":2,"60":2,"64":3,"68":1,"75":2,"76":9,"77":1,"80":2,"81":1,"82":1,"83":3}}],["analysis",{"2":{"48":1,"53":1,"54":1}}],["analogous",{"2":{"14":1}}],["answer",{"2":{"35":1}}],["ansi",{"2":{"25":1}}],["anomalies",{"2":{"21":1}}],["another",{"2":{"4":1,"17":1,"18":1,"19":2,"23":1,"29":1,"45":1,"52":1,"64":1,"74":1,"77":1,"79":1,"80":2}}],["anonymous",{"2":{"0":1}}],["anondim",{"2":{"0":2}}],["annual",{"2":{"4":1}}],["anything",{"2":{"2":1,"22":1}}],["any",{"2":{"0":1,"1":5,"2":1,"3":4,"4":5,"5":5,"11":2,"17":5,"21":8,"22":1,"23":1,"25":2,"27":1,"28":12,"34":2,"39":3,"40":1,"43":2,"47":7,"48":11,"49":3,"55":1,"69":1,"75":1,"78":1,"81":1,"86":1}}],["an",{"2":{"0":2,"1":8,"2":1,"3":5,"4":9,"5":5,"6":1,"7":1,"8":1,"9":1,"10":3,"11":2,"14":1,"17":21,"18":1,"19":6,"20":3,"21":6,"22":8,"23":2,"24":1,"25":6,"27":1,"30":1,"31":2,"32":1,"34":1,"38":1,"40":1,"41":2,"43":6,"47":1,"48":3,"49":1,"54":2,"69":2,"72":1,"74":2,"75":2,"76":1,"78":2,"83":1}}],["and",{"0":{"14":1,"47":1,"83":1},"1":{"15":1,"84":1,"85":1,"86":1},"2":{"0":9,"2":7,"3":8,"4":27,"5":10,"7":2,"8":3,"10":2,"11":4,"13":1,"14":2,"15":4,"17":17,"18":13,"19":2,"20":3,"21":4,"22":10,"23":11,"24":1,"25":12,"26":1,"27":4,"28":2,"29":2,"30":1,"31":3,"34":3,"35":5,"36":1,"38":2,"39":1,"40":3,"41":3,"42":6,"43":3,"44":2,"48":4,"49":1,"51":7,"52":2,"57":2,"58":1,"60":1,"61":2,"64":2,"65":1,"66":1,"67":3,"68":4,"69":3,"74":3,"75":3,"76":8,"77":1,"78":1,"79":1,"81":1,"82":3,"83":6,"85":3,"86":1}}],["a",{"0":{"72":1},"2":{"0":30,"1":30,"2":11,"3":32,"4":50,"5":38,"6":1,"7":2,"8":4,"9":1,"10":6,"11":8,"13":6,"14":3,"15":7,"17":69,"18":32,"19":16,"20":5,"21":43,"22":46,"23":12,"24":2,"25":13,"26":5,"27":1,"28":7,"29":3,"31":2,"34":4,"36":2,"37":1,"38":2,"40":1,"41":2,"42":4,"43":64,"44":73,"45":2,"46":1,"47":8,"48":14,"49":4,"51":5,"52":1,"54":1,"55":2,"56":1,"57":1,"60":1,"61":10,"62":9,"63":2,"64":13,"65":4,"66":14,"67":2,"68":6,"69":13,"71":1,"72":3,"73":2,"74":60,"75":14,"76":6,"77":5,"78":5,"79":14,"80":27,"81":41,"82":6,"84":5,"85":33,"86":9}}]],"serializationVersion":2}';export{e as default};
diff --git a/dev/assets/chunks/@localSearchIndexroot.zSG8EBw1.js b/dev/assets/chunks/@localSearchIndexroot.zSG8EBw1.js
deleted file mode 100644
index 89db7efe1..000000000
--- a/dev/assets/chunks/@localSearchIndexroot.zSG8EBw1.js
+++ /dev/null
@@ -1 +0,0 @@
-const e='{"documentCount":87,"nextId":87,"documentIds":{"0":"/DimensionalData.jl/dev/api/dimensions#dimensions","1":"/DimensionalData.jl/dev/api/dimensions#Exported-methods","2":"/DimensionalData.jl/dev/api/dimensions#Non-exported-methods","3":"/DimensionalData.jl/dev/api/dimensions#Primitive-methods","4":"/DimensionalData.jl/dev/api/lookuparrays#lookups","5":"/DimensionalData.jl/dev/api/lookuparrays#selectors","6":"/DimensionalData.jl/dev/api/lookuparrays#Lookup-traits","7":"/DimensionalData.jl/dev/api/lookuparrays#order","8":"/DimensionalData.jl/dev/api/lookuparrays#span","9":"/DimensionalData.jl/dev/api/lookuparrays#sampling","10":"/DimensionalData.jl/dev/api/lookuparrays#positions","11":"/DimensionalData.jl/dev/api/lookuparrays#metadata","12":"/DimensionalData.jl/dev/basics#installation","13":"/DimensionalData.jl/dev/basics#basics","14":"/DimensionalData.jl/dev/broadcasts#Dimensional-broadcasts-with-@d-and-broadcast_dims","15":"/DimensionalData.jl/dev/broadcasts#Example:-scaling-along-the-time-dimension","16":"/DimensionalData.jl/dev/cuda#CUDA-and-GPUs","17":"/DimensionalData.jl/dev/cuda#GPU-Integration-goals","18":"/DimensionalData.jl/dev/api/reference#API-Reference","19":"/DimensionalData.jl/dev/api/reference#arrays","20":"/DimensionalData.jl/dev/api/reference#Multi-array-datasets","21":"/DimensionalData.jl/dev/api/reference#Dimension-generators","22":"/DimensionalData.jl/dev/api/reference#Tables.jl/TableTraits.jl-interface","23":"/DimensionalData.jl/dev/api/reference#Group-by-methods","24":"/DimensionalData.jl/dev/api/reference#Utility-methods","25":"/DimensionalData.jl/dev/api/reference#Global-lookup-strictness-settings","26":"/DimensionalData.jl/dev/api/reference#name","27":"/DimensionalData.jl/dev/api/reference#Internal-interface","28":"/DimensionalData.jl/dev/dimarrays#dimarrays","29":"/DimensionalData.jl/dev/dimarrays#Constructing-DimArray-with-arbitrary-dimension-names","30":"/DimensionalData.jl/dev/dimarrays#Dimensional-Indexing","31":"/DimensionalData.jl/dev/dimarrays#Begin-End-indexing","32":"/DimensionalData.jl/dev/dimarrays#dims-keywords","33":"/DimensionalData.jl/dev/dimarrays#performance","34":"/DimensionalData.jl/dev/dimensions#dimensions","35":"/DimensionalData.jl/dev/diskarrays#DiskArrays.jl-compatibility","36":"/DimensionalData.jl/dev/extending_dd#Extending-DimensionalData","37":"/DimensionalData.jl/dev/extending_dd#dims","38":"/DimensionalData.jl/dev/extending_dd#Dimension-axes","39":"/DimensionalData.jl/dev/extending_dd#dims-keywords","40":"/DimensionalData.jl/dev/extending_dd#rebuild","41":"/DimensionalData.jl/dev/extending_dd#format","42":"/DimensionalData.jl/dev/extending_dd#Interfaces.jl-interface-testing","43":"/DimensionalData.jl/dev/get_info#getters","44":"/DimensionalData.jl/dev/get_info#predicates","45":"/DimensionalData.jl/dev/groupby#Group-By","46":"/DimensionalData.jl/dev/groupby#Grouping-functions","47":"/DimensionalData.jl/dev/groupby#Grouping-and-reducing","48":"/DimensionalData.jl/dev/groupby#binning","49":"/DimensionalData.jl/dev/groupby#Select-by-Dimension","50":"/DimensionalData.jl/dev/integrations#integrations","51":"/DimensionalData.jl/dev/integrations#rasters-jl","52":"/DimensionalData.jl/dev/integrations#yaxarrays-jl","53":"/DimensionalData.jl/dev/integrations#climatebase-jl","54":"/DimensionalData.jl/dev/integrations#arviz-jl","55":"/DimensionalData.jl/dev/integrations#jump-jl","56":"/DimensionalData.jl/dev/integrations#cryogrid-jl","57":"/DimensionalData.jl/dev/integrations#dynamicgrids-jl","58":"/DimensionalData.jl/dev/integrations#astroimages-jl","59":"/DimensionalData.jl/dev/integrations#timeseriestools-jl","60":"/DimensionalData.jl/dev/object_modification#Modifying-Objects","61":"/DimensionalData.jl/dev/object_modification#modify","62":"/DimensionalData.jl/dev/object_modification#reorder","63":"/DimensionalData.jl/dev/object_modification#mergedims","64":"/DimensionalData.jl/dev/object_modification#rebuild","65":"/DimensionalData.jl/dev/object_modification#rebuild-magic","66":"/DimensionalData.jl/dev/object_modification#set","67":"/DimensionalData.jl/dev/plots#plots-jl","68":"/DimensionalData.jl/dev/plots#makie-jl","69":"/DimensionalData.jl/dev/plots#algebraofgraphics-jl","70":"/DimensionalData.jl/dev/plots#Test-series-plots","71":"/DimensionalData.jl/dev/plots#default-colormap","72":"/DimensionalData.jl/dev/plots#A-different-colormap","73":"/DimensionalData.jl/dev/plots#with-markers","74":"/DimensionalData.jl/dev/selectors#selectors","75":"/DimensionalData.jl/dev/selectors#lookups","76":"/DimensionalData.jl/dev/selectors#Lookup-autodetection","77":"/DimensionalData.jl/dev/selectors#DimSelector","78":"/DimensionalData.jl/dev/tables#Tables-and-DataFrames","79":"/DimensionalData.jl/dev/tables#example","80":"/DimensionalData.jl/dev/tables#Converting-to-DataFrame","81":"/DimensionalData.jl/dev/tables#Converting-to-CSV","82":"/DimensionalData.jl/dev/stacks#dimstacks","83":"/DimensionalData.jl/dev/stacks#NamedTuple-like-indexing","84":"/DimensionalData.jl/dev/stacks#Array-like-indexing","85":"/DimensionalData.jl/dev/stacks#Reducing-functions","86":"/DimensionalData.jl/dev/stacks#performance"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,303],"1":[2,1,130],"2":[3,1,134],"3":[2,1,346],"4":[1,1,486],"5":[1,1,329],"6":[2,1,38],"7":[1,3,70],"8":[1,3,90],"9":[1,3,63],"10":[1,3,97],"11":[1,1,144],"12":[1,1,40],"13":[1,1,152],"14":[7,1,90],"15":[6,7,334],"16":[3,1,176],"17":[3,3,110],"18":[2,1,1],"19":[1,2,357],"20":[3,2,223],"21":[2,2,230],"22":[4,2,112],"23":[3,1,346],"24":[2,1,407],"25":[4,1,234],"26":[1,4,59],"27":[2,4,179],"28":[1,1,246],"29":[6,1,75],"30":[2,1,256],"31":[3,1,129],"32":[2,1,118],"33":[1,1,89],"34":[1,1,104],"35":[3,1,82],"36":[2,1,68],"37":[1,2,18],"38":[2,3,56],"39":[2,3,47],"40":[1,2,106],"41":[1,2,54],"42":[4,2,91],"43":[1,1,217],"44":[1,1,58],"45":[2,1,21],"46":[2,2,116],"47":[3,2,207],"48":[1,2,287],"49":[3,2,143],"50":[1,1,1],"51":[2,1,69],"52":[2,1,36],"53":[2,1,12],"54":[2,1,18],"55":[2,1,24],"56":[2,1,18],"57":[2,1,34],"58":[2,1,15],"59":[2,1,9],"60":[2,1,39],"61":[1,2,83],"62":[1,2,82],"63":[1,2,23],"64":[1,2,188],"65":[2,3,51],"66":[1,2,135],"67":[2,1,51],"68":[2,1,66],"69":[2,2,165],"70":[3,2,1],"71":[2,5,21],"72":[3,5,32],"73":[2,5,19],"74":[1,1,198],"75":[1,1,217],"76":[2,1,157],"77":[1,1,313],"78":[3,1,67],"79":[1,3,115],"80":[3,3,251],"81":[3,3,85],"82":[1,1,89],"83":[3,1,171],"84":[3,1,127],"85":[2,1,137],"86":[1,1,69]},"averageFieldLength":[2.0229885057471266,1.7471264367816093,127.08045977011498],"storedFields":{"0":{"title":"Dimensions","titles":[]},"1":{"title":"Exported methods","titles":["Dimensions"]},"2":{"title":"Non-exported methods","titles":["Dimensions"]},"3":{"title":"Primitive methods","titles":["Dimensions"]},"4":{"title":"Lookups","titles":[]},"5":{"title":"Selectors","titles":["Lookups"]},"6":{"title":"Lookup traits","titles":["Lookups"]},"7":{"title":"Order","titles":["Lookups","Lookup traits"]},"8":{"title":"Span","titles":["Lookups","Lookup traits"]},"9":{"title":"Sampling","titles":["Lookups","Lookup traits"]},"10":{"title":"Positions","titles":["Lookups","Lookup traits"]},"11":{"title":"Metadata","titles":["Lookups"]},"12":{"title":"Installation","titles":[]},"13":{"title":"Basics","titles":[]},"14":{"title":"Dimensional broadcasts with @d and broadcast_dims","titles":[]},"15":{"title":"Example: scaling along the time dimension","titles":["Dimensional broadcasts with @d and broadcast_dims"]},"16":{"title":"CUDA & GPUs","titles":[]},"17":{"title":"GPU Integration goals","titles":["CUDA & GPUs"]},"18":{"title":"API Reference","titles":[]},"19":{"title":"Arrays","titles":["API Reference"]},"20":{"title":"Multi-array datasets","titles":["API Reference"]},"21":{"title":"Dimension generators","titles":["API Reference"]},"22":{"title":"Tables.jl/TableTraits.jl interface","titles":["API Reference"]},"23":{"title":"Group by methods","titles":[]},"24":{"title":"Utility methods","titles":[]},"25":{"title":"Global lookup strictness settings","titles":[]},"26":{"title":"Name","titles":["Global lookup strictness settings"]},"27":{"title":"Internal interface","titles":["Global lookup strictness settings"]},"28":{"title":"DimArrays","titles":[]},"29":{"title":"Constructing DimArray with arbitrary dimension names","titles":["DimArrays"]},"30":{"title":"Dimensional Indexing","titles":["DimArrays"]},"31":{"title":"Begin End indexing","titles":["DimArrays"]},"32":{"title":"dims keywords","titles":["DimArrays"]},"33":{"title":"Performance","titles":["DimArrays"]},"34":{"title":"Dimensions","titles":[]},"35":{"title":"DiskArrays.jl compatibility","titles":[]},"36":{"title":"Extending DimensionalData","titles":[]},"37":{"title":"dims","titles":["Extending DimensionalData"]},"38":{"title":"Dimension axes","titles":["Extending DimensionalData","dims"]},"39":{"title":"dims keywords","titles":["Extending DimensionalData","dims"]},"40":{"title":"rebuild","titles":["Extending DimensionalData"]},"41":{"title":"format","titles":["Extending DimensionalData"]},"42":{"title":"Interfaces.jl interface testing","titles":["Extending DimensionalData"]},"43":{"title":"Getters","titles":[]},"44":{"title":"Predicates","titles":["Getters"]},"45":{"title":"Group By","titles":[]},"46":{"title":"Grouping functions","titles":["Group By"]},"47":{"title":"Grouping and reducing","titles":["Group By"]},"48":{"title":"Binning","titles":["Group By"]},"49":{"title":"Select by Dimension","titles":["Group By"]},"50":{"title":"Integrations","titles":[]},"51":{"title":"Rasters.jl","titles":["Integrations"]},"52":{"title":"YAXArrays.jl","titles":["Integrations"]},"53":{"title":"ClimateBase.jl","titles":["Integrations"]},"54":{"title":"ArviZ.jl","titles":["Integrations"]},"55":{"title":"JuMP.jl","titles":["Integrations"]},"56":{"title":"CryoGrid.jl","titles":["Integrations"]},"57":{"title":"DynamicGrids.jl","titles":["Integrations"]},"58":{"title":"AstroImages.jl","titles":["Integrations"]},"59":{"title":"TimeseriesTools.jl","titles":["Integrations"]},"60":{"title":"Modifying Objects","titles":[]},"61":{"title":"modify","titles":["Modifying Objects"]},"62":{"title":"reorder","titles":["Modifying Objects"]},"63":{"title":"mergedims","titles":["Modifying Objects"]},"64":{"title":"rebuild","titles":["Modifying Objects"]},"65":{"title":"rebuild magic","titles":["Modifying Objects","rebuild"]},"66":{"title":"set","titles":["Modifying Objects"]},"67":{"title":"Plots.jl","titles":[]},"68":{"title":"Makie.jl","titles":[]},"69":{"title":"AlgebraOfGraphics.jl","titles":["Makie.jl"]},"70":{"title":"Test series plots","titles":["Makie.jl"]},"71":{"title":"default colormap","titles":["Makie.jl","Test series plots"]},"72":{"title":"A different colormap","titles":["Makie.jl","Test series plots"]},"73":{"title":"with markers","titles":["Makie.jl","Test series plots"]},"74":{"title":"Selectors","titles":[]},"75":{"title":"Lookups","titles":["Selectors"]},"76":{"title":"Lookup autodetection","titles":["Selectors"]},"77":{"title":"DimSelector","titles":["Selectors"]},"78":{"title":"Tables and DataFrames","titles":[]},"79":{"title":"Example","titles":["Tables and DataFrames"]},"80":{"title":"Converting to DataFrame","titles":["Tables and DataFrames"]},"81":{"title":"Converting to CSV","titles":["Tables and DataFrames"]},"82":{"title":"DimStacks","titles":[]},"83":{"title":"NamedTuple-like indexing","titles":["DimStacks"]},"84":{"title":"Array-like indexing","titles":["DimStacks"]},"85":{"title":"Reducing functions","titles":["DimStacks"]},"86":{"title":"Performance","titles":["DimStacks"]}},"dirtCount":0,"index":[["$st",{"2":{"86":2}}],["$da4",{"2":{"33":2}}],["q",{"2":{"80":1}}],["quite",{"2":{"64":1}}],["quick",{"2":{"48":1}}],["quarters",{"2":{"23":1}}],["quantity",{"2":{"5":1}}],["quot",{"2":{"3":2,"6":2,"19":4,"34":2,"69":2}}],["query",{"2":{"1":16,"3":6,"19":16,"43":1}}],["─────┼──────────────────────────────────────────────────────────────────────────",{"2":{"80":1}}],["──────┼───────────────────────────────────────────",{"2":{"80":1}}],["──────┼───────────────────────────────────────────────",{"2":{"80":1}}],["──────┼───────────────────────────────────",{"2":{"80":1}}],["⋯",{"2":{"80":6}}],["▇",{"2":{"33":1}}],["▂",{"2":{"33":2}}],["█▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▃▁▂",{"2":{"33":2}}],["█",{"2":{"33":3}}],["▁",{"2":{"33":4}}],["σ",{"2":{"33":4}}],["±",{"2":{"33":8}}],["┊",{"2":{"33":6}}],["~",{"2":{"31":2}}],["└",{"2":{"31":2}}],["└───────────────────────┘",{"2":{"19":4}}],["└─────────────────────────────────┘",{"2":{"29":1,"30":1}}],["└──────────────────────────────────────────────┘",{"2":{"21":1}}],["└────────────────────────────────────────────────────────┘",{"2":{"25":1}}],["└───────────────────────────────────────────────────────────┘",{"2":{"19":1}}],["└────────────────────────────────────────────────────────────────┘",{"2":{"28":11,"29":1,"30":1,"31":2,"33":1,"61":3,"66":1}}],["└─────────────────────────────────────────────────────────────────┘",{"2":{"21":2}}],["└────────────────────────────────────────────────────────────────────────┘",{"2":{"23":1}}],["└─────────────────────────────────────────────────────────────────────────┘",{"2":{"21":1,"24":3}}],["└───────────────────────────────────────────────────────────────────────────┘",{"2":{"24":1}}],["└──────────────────────────────────────────────────────────────────────────────┘",{"2":{"0":3,"5":1,"13":3,"15":8,"28":3,"30":2,"32":2,"43":1,"47":8,"48":11,"49":3,"62":2,"64":2,"66":5,"74":15,"75":1,"76":1,"77":5,"79":2,"80":1,"82":1,"83":8,"84":1,"85":25}}],["└──────────────────────────────────────────────────────────────────────────┘",{"2":{"4":1}}],["└───────────────────────────────────────────────────────────────────────┘",{"2":{"23":2}}],["└─────────────────────────────────────────────────────────────────────┘",{"2":{"19":3,"24":1}}],["└────────────────────────────────────────────────────────────────────┘",{"2":{"16":1}}],["└─────────────────────────────────────────────────────────────┘",{"2":{"5":1,"19":1}}],["└────────────────────────────────────────────────────────────┘",{"2":{"5":2}}],["└───────────────────────────────────────────────────────┘",{"2":{"19":1}}],["└──────────────────────────────┘",{"2":{"22":1}}],["└────────────────────────────┘",{"2":{"1":1,"3":1,"19":1}}],["┌",{"2":{"31":2}}],["├───────────────┴────────────────────────────────────────────────────────",{"2":{"82":1,"83":6,"85":24}}],["├────────────────┴───────────────────────────────────────────────────────",{"2":{"80":1}}],["├─────────────────────┴──────────────────────────────────────────────────",{"2":{"85":1}}],["├───────────────────────┴──────────────────────────────────",{"2":{"61":2}}],["├─────────────────────────┴──────────────────────────────────────────────",{"2":{"28":2}}],["├─────────────────────────┴────────────────────────────────",{"2":{"28":1}}],["├──────────────────────────┴───────────────────────────────",{"2":{"29":1,"31":2,"33":1}}],["├──────────────────────────┴────────────────────────────────",{"2":{"21":2}}],["├──────────────────────────┴────────────────────────────────────────",{"2":{"21":1,"24":3}}],["├──────────────────────────┴──────────────────────────────────────────",{"2":{"24":1}}],["├──────────────────────────┴─────────────────────────────────────────────",{"2":{"13":2,"30":1,"74":13,"76":1,"77":3}}],["├──────────────────────────┴─────────────────────────────────────────",{"2":{"4":1}}],["├──────────────────────────┴────────────────────────────────────",{"2":{"19":3,"24":1}}],["├────────────────────────────┴───────────────────────────────────────────",{"2":{"32":2,"43":1,"77":1}}],["├──────────────────────────────┴───────────────────────────",{"2":{"28":1}}],["├──────────────────────────────┴─────────────────────────────────────────",{"2":{"13":1}}],["├───────────────────────────────┴──────────────────────────────",{"2":{"16":1}}],["├────────────────────────────────┴",{"2":{"29":1,"30":1}}],["├────────────────────────────────┴─────────────────────────",{"2":{"28":2}}],["├────────────────────────────────┴───────────────────────────────────────",{"2":{"15":4,"47":1,"48":3,"74":2}}],["├──────────────────────────────────┴─────────────────────────────────────",{"2":{"47":3,"83":1}}],["├────────────────────────────────────┴───────────────────────────────────",{"2":{"64":1,"79":1}}],["├────────────────────────────────────┴─────────────────────",{"2":{"28":1}}],["├────────────────────────────────────────",{"2":{"21":1}}],["├─────────────────────────────────────────────┴──────────────────────────",{"2":{"75":1}}],["├──────────────────────────────────────────────────┴─────────────────────",{"2":{"48":7}}],["├────────────────────────────────────────────────────────",{"2":{"61":1}}],["├───────────────────────────────────────────────────────────",{"2":{"23":1}}],["├──────────────────────────────────────────────────────────────────",{"2":{"47":1,"48":8,"49":1}}],["├──────────────────────────────────────────────────────────────────────",{"2":{"79":1,"80":1,"82":1,"83":6,"84":1,"85":25}}],["├────────────────────────────────────────────────────────────────────",{"2":{"28":1,"47":7,"48":11,"49":2,"64":1}}],["├──────────────────────────────────────────────────────────────",{"2":{"23":1}}],["├─────────────────────────────────────────────────────────────",{"2":{"23":2}}],["├──────────────────────────────────────────────────────┴─────────────────",{"2":{"49":1}}],["├──────────────────────────────────────────────────────",{"2":{"28":5}}],["├───────────────────────────────────────────────────┴────────────────────",{"2":{"47":1,"48":1}}],["├───────────────────────────────────────────────────┴─────────────",{"2":{"23":1}}],["├────────────────────────────────────────────────",{"2":{"25":1}}],["├────────────────────────────────────────────┴────",{"2":{"19":1}}],["├─────────────────────────────────────────┴──────────────────────────────",{"2":{"15":1}}],["├────────────────────────────────────────┴────────────",{"2":{"19":1}}],["├────────────────────────────────────────┴──────────────",{"2":{"19":1}}],["├───────────────────────────────────────┴────────────────────────────────",{"2":{"15":1}}],["├─────────────────────────────────┴────────────────────────",{"2":{"28":1}}],["├─────────────────────────────────┴───────────────────────────────",{"2":{"23":1}}],["├─────────────────────────────────┴──────────────────────────────────────",{"2":{"0":1,"15":2,"47":3}}],["├─────────────────────────────┴──────────────────────────────────────────",{"2":{"0":1,"28":1,"30":1,"49":2,"77":1,"83":1}}],["├───────────────────────────┴──────────────────────────────",{"2":{"28":5,"30":1,"66":1}}],["├───────────────────────────┴──────────────────────────────────────",{"2":{"23":1}}],["├───────────────────────────┴────────────────────────────────────────────",{"2":{"0":1,"62":2,"64":1,"66":5}}],["├────────────────────────",{"2":{"22":1}}],["├────────────────────────┴───────────────────────────────────────────────",{"2":{"5":1}}],["├────────────────────────┴──────────────────────────────",{"2":{"5":1}}],["├────────────────────────┴─────────────────────────────",{"2":{"5":2}}],["├──────────────────────",{"2":{"1":1,"3":1,"19":1}}],["├────────────────────┴───────────────────────────────────────────────────",{"2":{"84":1}}],["├───────────────────┴────────────────────────────────────────────────────",{"2":{"79":1}}],["├─────────────────",{"2":{"19":4}}],["├──────────────┴───────────────────────────────────────────",{"2":{"61":1}}],["├──────────────┴───────────────────────────────────",{"2":{"25":1}}],["╭───────────────╮",{"2":{"82":1,"83":6,"85":24}}],["╭────────────────╮",{"2":{"80":1}}],["╭─────────────────────╮",{"2":{"85":1}}],["╭───────────────────────╮",{"2":{"19":4,"61":2}}],["╭─────────────────────────╮",{"2":{"28":3}}],["╭──────────────────────────╮",{"2":{"4":1,"13":2,"19":3,"21":3,"24":5,"29":1,"30":1,"31":2,"33":1,"74":13,"76":1,"77":3}}],["╭────────────────────────────╮",{"2":{"1":1,"3":1,"19":1,"32":2,"43":1,"77":1}}],["╭───────────────────────────────╮",{"2":{"16":1}}],["╭────────────────────────────────╮",{"2":{"15":4,"28":2,"29":1,"30":1,"47":1,"48":3,"74":2}}],["╭──────────────────────────────────╮",{"2":{"47":3,"83":1}}],["╭────────────────────────────────────╮",{"2":{"28":1,"64":1,"79":1}}],["╭─────────────────────────────────────────────╮",{"2":{"75":1}}],["╭──────────────────────────────────────────────────────╮",{"2":{"49":1}}],["╭───────────────────────────────────────────────────╮",{"2":{"23":1,"47":1,"48":1}}],["╭──────────────────────────────────────────────────╮",{"2":{"48":7}}],["╭──────────────────────────────────────────────╮",{"2":{"21":1}}],["╭────────────────────────────────────────────╮",{"2":{"19":1}}],["╭─────────────────────────────────────────╮",{"2":{"15":1}}],["╭────────────────────────────────────────╮",{"2":{"19":2}}],["╭───────────────────────────────────────╮",{"2":{"15":1}}],["╭─────────────────────────────────╮",{"2":{"0":1,"15":2,"23":1,"28":1,"47":3}}],["╭──────────────────────────────╮",{"2":{"13":1,"22":1,"28":1}}],["╭─────────────────────────────╮",{"2":{"0":1,"28":1,"30":1,"49":2,"77":1,"83":1}}],["╭───────────────────────────╮",{"2":{"0":1,"23":1,"28":5,"30":1,"62":2,"64":1,"66":6}}],["╭────────────────────────╮",{"2":{"5":4}}],["╭────────────────────╮",{"2":{"84":1}}],["╭───────────────────╮",{"2":{"79":1}}],["╭──────────────╮",{"2":{"25":1,"61":1}}],["+",{"2":{"24":3,"28":3,"69":1,"85":2}}],["⋱",{"2":{"15":5,"16":1,"47":1,"49":2,"77":2,"79":1,"80":1}}],["⋮",{"2":{"15":10,"16":1,"23":3,"46":8,"47":9,"48":3,"49":3,"77":3,"79":2,"80":24,"81":1,"84":1}}],["|>",{"2":{"13":1,"69":3}}],["𝐓",{"2":{"5":2}}],[">=",{"2":{"74":1}}],[">",{"2":{"5":3,"20":1,"48":2,"74":1}}],["9436941638102098",{"2":{"85":2}}],["943694",{"2":{"83":1}}],["943783",{"2":{"77":1}}],["947461",{"2":{"83":1}}],["9409",{"2":{"80":1}}],["9452913850518949",{"2":{"81":1}}],["945291",{"2":{"80":2}}],["945147",{"2":{"30":1}}],["9447511416331498",{"2":{"81":1}}],["944751",{"2":{"80":2}}],["94412",{"2":{"32":1}}],["946655",{"2":{"77":1}}],["948798",{"2":{"47":1}}],["949769",{"2":{"30":1}}],["941133",{"2":{"21":1}}],["94",{"2":{"15":1,"80":1}}],["93358",{"2":{"83":1}}],["933212",{"2":{"62":2,"64":2,"66":6}}],["936495",{"2":{"80":1}}],["934189",{"2":{"79":1}}],["934419",{"2":{"28":1}}],["930699",{"2":{"77":1}}],["930332",{"2":{"21":1}}],["93972",{"2":{"15":2}}],["93",{"2":{"15":1}}],["92977",{"2":{"77":1}}],["929034",{"2":{"76":1}}],["929995",{"2":{"16":1}}],["921567",{"2":{"80":1}}],["921958",{"2":{"79":1,"80":2}}],["921936",{"2":{"15":2}}],["921012",{"2":{"47":1,"49":2}}],["925844",{"2":{"30":1}}],["925624",{"2":{"30":1}}],["92721",{"2":{"16":1}}],["92",{"2":{"15":1,"77":1}}],["920182",{"2":{"13":1}}],["994395",{"2":{"77":1}}],["994",{"2":{"77":4}}],["990114",{"2":{"77":1}}],["993001",{"2":{"77":1}}],["991676",{"2":{"30":2}}],["99118",{"2":{"30":1}}],["999338",{"2":{"49":2}}],["999348",{"2":{"15":1}}],["999534",{"2":{"47":1}}],["999149",{"2":{"47":1}}],["999957",{"2":{"47":1}}],["999774",{"2":{"47":1}}],["999781",{"2":{"47":1}}],["999742",{"2":{"47":1}}],["999253",{"2":{"47":1}}],["999",{"2":{"16":1}}],["9982064541308482",{"2":{"84":2,"85":2}}],["998661",{"2":{"77":1}}],["998484",{"2":{"77":1}}],["998",{"2":{"16":1}}],["997572",{"2":{"28":2}}],["997",{"2":{"16":1}}],["996358",{"2":{"30":1}}],["996398",{"2":{"29":1,"31":2}}],["996807",{"2":{"28":2}}],["996",{"2":{"16":1}}],["995",{"2":{"16":1}}],["995683",{"2":{"16":1}}],["99282",{"2":{"15":1}}],["99",{"2":{"15":6,"47":1,"49":2,"65":2,"74":1,"80":1}}],["97954",{"2":{"80":1}}],["9770663775826343",{"2":{"81":1}}],["977066",{"2":{"80":2}}],["975511",{"2":{"79":1}}],["973",{"2":{"77":1}}],["973154",{"2":{"13":1}}],["97293",{"2":{"76":1}}],["97437",{"2":{"49":2}}],["97406",{"2":{"49":2}}],["97164033242648",{"2":{"85":2}}],["97164",{"2":{"83":1}}],["97132e",{"2":{"47":1}}],["971794",{"2":{"30":1}}],["971252",{"2":{"30":1}}],["97129",{"2":{"15":1}}],["97",{"2":{"15":4,"47":1,"49":1,"80":1}}],["902689",{"2":{"77":1}}],["90203",{"2":{"43":1}}],["904115",{"2":{"77":1}}],["909826",{"2":{"77":1}}],["909533",{"2":{"15":3}}],["905616",{"2":{"76":1}}],["905021",{"2":{"28":3}}],["903705",{"2":{"62":2,"64":2,"66":6}}],["90309",{"2":{"16":1}}],["906601",{"2":{"30":1}}],["906883",{"2":{"28":1}}],["906838",{"2":{"16":1}}],["9063",{"2":{"21":2}}],["90645",{"2":{"16":1}}],["900394",{"2":{"16":1}}],["90",{"2":{"13":1,"15":1}}],["90u",{"2":{"5":1}}],["956417",{"2":{"80":1}}],["953651",{"2":{"77":1}}],["950007",{"2":{"77":1}}],["950338",{"2":{"28":3}}],["954153",{"2":{"77":1}}],["951789",{"2":{"77":1}}],["952489",{"2":{"77":1}}],["95217",{"2":{"16":1}}],["958811",{"2":{"28":2}}],["959434",{"2":{"21":1}}],["95",{"2":{"13":2,"15":1,"80":1}}],["987",{"2":{"77":1}}],["98981",{"2":{"77":1}}],["989952",{"2":{"16":1}}],["98893",{"2":{"80":1}}],["988957",{"2":{"15":3}}],["988013",{"2":{"77":1}}],["980637",{"2":{"49":2}}],["986207",{"2":{"28":1}}],["982762",{"2":{"16":1}}],["98193",{"2":{"16":1}}],["98",{"2":{"13":3,"15":6,"47":1,"49":2,"77":1,"80":1}}],["9675326879984427",{"2":{"81":1}}],["960726",{"2":{"80":1}}],["960677",{"2":{"15":3}}],["963657",{"2":{"79":1}}],["966475656859458e",{"2":{"85":1}}],["966517",{"2":{"79":1,"80":1}}],["966",{"2":{"77":1}}],["966133",{"2":{"77":2}}],["969026",{"2":{"43":1}}],["962808",{"2":{"30":1}}],["968484",{"2":{"30":1}}],["965008",{"2":{"13":1}}],["96",{"2":{"5":2,"15":1,"47":1,"49":1,"77":1,"80":1}}],["918",{"2":{"33":1}}],["917457",{"2":{"32":1}}],["917543",{"2":{"28":1}}],["916702",{"2":{"32":1}}],["9104238640380062",{"2":{"81":1}}],["910424",{"2":{"80":2}}],["910412",{"2":{"15":3}}],["910981",{"2":{"29":2,"31":2}}],["912676",{"2":{"28":1}}],["9155",{"2":{"16":1}}],["91495",{"2":{"16":1}}],["919534",{"2":{"15":3}}],["91",{"2":{"5":2,"15":1}}],["9",{"2":{"4":2,"13":3,"15":2,"21":2,"24":2,"28":18,"43":7,"46":1,"48":18,"75":1,"77":6,"79":2,"80":4,"81":2,"83":3}}],["7×5",{"2":{"76":1}}],["7×3",{"2":{"30":1}}],["793532",{"2":{"83":1}}],["7938317326707394",{"2":{"81":1}}],["793832",{"2":{"80":2}}],["79388",{"2":{"15":2}}],["798655984630017",{"2":{"81":1}}],["798656",{"2":{"80":2}}],["798621",{"2":{"30":1}}],["798",{"2":{"77":2}}],["791844",{"2":{"76":1}}],["799964",{"2":{"43":1}}],["799977",{"2":{"13":1}}],["796812",{"2":{"28":1}}],["797168",{"2":{"28":3}}],["79785",{"2":{"15":2}}],["792885",{"2":{"28":2}}],["79",{"2":{"15":1}}],["778122",{"2":{"83":1}}],["778222",{"2":{"16":1}}],["775634",{"2":{"83":1}}],["775495",{"2":{"77":1}}],["775377",{"2":{"28":3}}],["777408",{"2":{"77":1}}],["771237",{"2":{"76":1}}],["772277",{"2":{"74":4}}],["776593",{"2":{"30":1}}],["770316",{"2":{"29":1,"31":2}}],["774092",{"2":{"19":1,"21":1}}],["774131",{"2":{"15":3}}],["77",{"2":{"15":1}}],["7177678881661339",{"2":{"84":1}}],["717768",{"2":{"83":1}}],["7140841681506571",{"2":{"84":1}}],["714084",{"2":{"83":1}}],["7130893612876014",{"2":{"84":2}}],["713941",{"2":{"80":1}}],["713814",{"2":{"80":1}}],["713457",{"2":{"77":1}}],["71372",{"2":{"76":1}}],["712342",{"2":{"77":1}}],["711133",{"2":{"74":3}}],["716257",{"2":{"29":1,"31":2}}],["719974",{"2":{"16":1}}],["71",{"2":{"15":1}}],["752331",{"2":{"77":1}}],["75275",{"2":{"48":4}}],["751498",{"2":{"77":2}}],["75622",{"2":{"49":1}}],["757228",{"2":{"47":1}}],["754468",{"2":{"30":2}}],["750146",{"2":{"28":1}}],["755939",{"2":{"79":1}}],["755958",{"2":{"28":3}}],["755722",{"2":{"43":1}}],["75568",{"2":{"16":1}}],["758149",{"2":{"76":1}}],["758865",{"2":{"32":1}}],["75847",{"2":{"16":1}}],["758203",{"2":{"13":1}}],["75",{"2":{"15":1}}],["759047",{"2":{"15":3}}],["726244382496386",{"2":{"85":2}}],["72454",{"2":{"77":1}}],["724709",{"2":{"29":1,"31":2}}],["727464",{"2":{"77":1}}],["728852",{"2":{"77":1}}],["72217",{"2":{"76":1}}],["721101",{"2":{"15":3}}],["72",{"2":{"13":1,"15":1,"48":1}}],["7410056618197303",{"2":{"84":1,"86":2}}],["74172",{"2":{"79":1,"80":1}}],["741593",{"2":{"28":3}}],["743407",{"2":{"79":1}}],["747615",{"2":{"77":1}}],["747695",{"2":{"77":1}}],["740107",{"2":{"77":1}}],["748041",{"2":{"74":3}}],["748725",{"2":{"43":1}}],["744107",{"2":{"77":1}}],["744517",{"2":{"62":2,"64":2,"66":6}}],["74428",{"2":{"30":1}}],["742732",{"2":{"43":1}}],["749553",{"2":{"83":1}}],["749573",{"2":{"30":1}}],["749829",{"2":{"15":3}}],["745673",{"2":{"19":1,"21":2}}],["746465",{"2":{"15":3}}],["74",{"2":{"13":1,"15":1}}],["7057009741792366",{"2":{"84":1}}],["705701",{"2":{"83":1}}],["705582",{"2":{"30":2}}],["707314",{"2":{"77":1}}],["707692",{"2":{"28":3}}],["7044663405368152",{"2":{"81":1}}],["704466",{"2":{"80":2}}],["70488",{"2":{"32":1}}],["704613",{"2":{"15":3}}],["708081",{"2":{"30":2}}],["700218",{"2":{"28":1}}],["700389",{"2":{"28":2}}],["702845",{"2":{"43":1}}],["702956",{"2":{"30":1}}],["702944",{"2":{"16":1}}],["702787",{"2":{"15":3}}],["706165",{"2":{"15":3}}],["70",{"2":{"13":1,"15":1,"76":3}}],["70366",{"2":{"13":1}}],["780424",{"2":{"83":1}}],["78028",{"2":{"16":1}}],["7814968833366662",{"2":{"84":1}}],["781497",{"2":{"83":1}}],["78136e",{"2":{"47":1}}],["789667",{"2":{"80":1}}],["789816",{"2":{"77":1}}],["789198",{"2":{"29":1,"31":2}}],["784693",{"2":{"30":1}}],["783195",{"2":{"30":1}}],["7826",{"2":{"28":1}}],["788358",{"2":{"15":3}}],["78",{"2":{"13":2,"15":1}}],["76448",{"2":{"83":1}}],["764895",{"2":{"74":4}}],["764613",{"2":{"28":1}}],["760",{"2":{"33":1}}],["760205",{"2":{"28":1}}],["76668",{"2":{"32":1}}],["769884",{"2":{"30":2}}],["762199",{"2":{"30":1}}],["762722",{"2":{"30":1}}],["76511",{"2":{"80":1}}],["765808",{"2":{"30":1}}],["765773",{"2":{"28":2}}],["768719",{"2":{"77":1}}],["7684883626668314",{"2":{"74":1}}],["768488",{"2":{"74":12}}],["768639",{"2":{"30":1}}],["768325",{"2":{"28":1}}],["761347",{"2":{"28":2}}],["76",{"2":{"13":4,"15":1}}],["735973",{"2":{"83":1}}],["73591",{"2":{"16":1}}],["739936",{"2":{"80":1}}],["738445",{"2":{"80":1}}],["730",{"2":{"47":2}}],["734452",{"2":{"43":1}}],["737979",{"2":{"28":2}}],["73623",{"2":{"16":1}}],["73",{"2":{"13":1,"15":1,"48":1}}],["7",{"2":{"4":4,"5":5,"13":1,"15":4,"28":120,"30":6,"43":9,"46":10,"48":5,"75":1,"76":1,"79":1,"80":12,"81":2,"83":3,"85":20}}],["rot180",{"2":{"85":2}}],["rotr90",{"2":{"85":2}}],["rotl90",{"2":{"85":2}}],["rotated",{"2":{"4":1,"85":1}}],["rotations",{"2":{"3":1}}],["rows",{"2":{"80":4}}],["row",{"2":{"80":4}}],["runtime",{"2":{"33":1}}],["running",{"2":{"16":1,"48":1}}],["rule",{"2":{"25":2}}],["r",{"2":{"19":2,"69":1,"80":1}}],["right",{"2":{"13":3,"66":2,"68":2}}],["rtol=nothing",{"2":{"5":1}}],["rainclouds",{"2":{"68":1}}],["raw",{"2":{"48":1}}],["rarely",{"2":{"35":1}}],["ram",{"2":{"35":1}}],["rasterization",{"2":{"51":1}}],["rasterize",{"2":{"5":1}}],["raster",{"2":{"36":1,"51":3}}],["rasterstack",{"2":{"36":1,"51":1}}],["rasters",{"0":{"51":1},"2":{"4":3,"24":1,"35":1,"36":1,"51":2,"52":1}}],["randn",{"2":{"25":2}}],["random",{"2":{"19":3}}],["rand",{"2":{"4":3,"13":3,"15":1,"16":1,"19":8,"21":3,"23":1,"24":1,"28":6,"29":1,"30":1,"32":1,"42":4,"43":1,"47":1,"62":1,"68":1,"69":1,"71":1,"74":1,"76":1,"77":3,"79":2,"83":3}}],["ranges",{"2":{"5":1,"23":1,"31":1,"48":6,"74":3,"76":4}}],["range",{"2":{"4":2,"5":4,"19":2,"24":1,"33":2,"41":1,"46":2,"48":1,"51":1,"74":1,"76":1}}],["rather",{"2":{"3":1,"4":2,"5":1,"9":1,"17":1,"23":2,"60":1,"62":1}}],["red",{"2":{"72":1,"73":1}}],["reductions",{"2":{"19":1,"35":1}}],["reducing",{"0":{"47":1,"85":1},"2":{"19":1,"23":3}}],["reduce",{"2":{"3":1,"23":2,"32":1,"85":2}}],["reduced",{"2":{"3":1}}],["reducedims",{"2":{"3":1}}],["receive",{"2":{"40":1}}],["reconstruction",{"2":{"19":1,"40":1}}],["recommended",{"2":{"12":1}}],["rev",{"2":{"24":2}}],["reversal",{"2":{"24":1}}],["reverseordered",{"2":{"4":5,"7":3,"43":15,"44":14,"48":1,"62":5,"76":2,"77":2,"85":8}}],["reverse",{"2":{"4":1,"7":1,"24":4,"32":1,"43":1,"62":1,"85":1}}],["reversed",{"2":{"4":1}}],["reordering",{"2":{"24":1}}],["reorder",{"0":{"62":1},"2":{"24":8,"62":4,"68":1}}],["remove",{"2":{"25":4}}],["removed",{"2":{"5":1}}],["removing",{"2":{"20":1}}],["rebuilt",{"2":{"19":1,"24":1,"60":1}}],["rebuilding",{"2":{"24":1}}],["rebuild",{"0":{"40":1,"64":1,"65":1},"1":{"65":1},"2":{"4":2,"17":1,"19":3,"20":2,"24":6,"27":54,"36":1,"40":7,"42":40,"64":6,"65":2,"66":1}}],["readlines",{"2":{"81":1}}],["read",{"2":{"27":2}}],["reading",{"2":{"23":1}}],["reasons",{"2":{"51":1}}],["reason",{"2":{"17":1,"51":1}}],["real",{"2":{"4":1}}],["really",{"2":{"3":1,"65":1}}],["relationships",{"2":{"35":1}}],["related",{"2":{"17":1}}],["relying",{"2":{"23":1}}],["reliable",{"2":{"4":1}}],["restrict",{"2":{"69":1}}],["restored",{"2":{"24":1}}],["reshaping",{"2":{"24":2}}],["reshape",{"2":{"14":1,"24":1,"63":1}}],["resolve",{"2":{"20":1,"31":1}}],["result",{"2":{"5":1,"16":1,"20":1,"24":3,"31":1,"78":1}}],["results",{"2":{"5":2,"23":2,"67":1}}],["requires",{"2":{"19":1,"39":1,"48":1}}],["require",{"2":{"9":1}}],["required",{"2":{"0":1,"3":1,"11":1,"17":1,"22":1,"24":4}}],["repl",{"2":{"75":1}}],["replaces",{"2":{"3":1,"17":1}}],["replaced",{"2":{"3":1,"8":1}}],["replace",{"2":{"3":2,"24":1,"61":1}}],["represents",{"2":{"38":1,"82":1}}],["representing",{"2":{"4":1}}],["represent",{"2":{"4":1,"10":1}}],["refdim",{"2":{"27":1}}],["refdims=refdims",{"2":{"20":1}}],["refdims=",{"2":{"19":1}}],["refdims",{"2":{"19":9,"24":2,"27":21,"40":1,"42":12,"64":2}}],["refence",{"2":{"19":1}}],["reference",{"0":{"18":1},"1":{"19":1,"20":1,"21":1,"22":1},"2":{"3":2,"19":3,"27":1,"36":1}}],["refer",{"2":{"0":1,"9":1}}],["ref",{"2":{"3":1}}],["rewraps",{"2":{"3":1}}],["retrieved",{"2":{"34":1}}],["retrieves",{"2":{"5":1,"43":1}}],["retrieve",{"2":{"2":1,"5":1,"43":1}}],["returning",{"2":{"3":1,"11":1,"25":2,"85":1,"86":1}}],["returns",{"2":{"2":1,"3":3,"5":1,"11":2,"19":3,"20":2,"21":1,"23":1,"27":2,"42":2,"43":1,"46":1,"48":3,"84":1}}],["returned",{"2":{"1":1,"3":2,"4":1,"11":1,"19":1,"23":2,"24":4,"34":1,"38":1,"44":1}}],["return",{"2":{"1":3,"3":3,"4":8,"5":2,"19":6,"20":7,"23":7,"24":7,"37":1,"38":1,"39":2,"43":1,"44":1,"84":2}}],["regular",{"2":{"0":5,"2":1,"4":7,"5":4,"8":4,"10":2,"13":4,"14":2,"15":21,"16":3,"19":7,"21":2,"22":1,"23":2,"24":9,"25":1,"28":6,"30":2,"36":1,"39":1,"43":30,"44":28,"47":2,"48":1,"49":5,"62":2,"64":2,"66":5,"74":7,"75":3,"76":3,"77":6,"79":4,"80":2,"82":2,"83":15,"84":1,"85":49}}],["k",{"2":{"80":1}}],["kind",{"2":{"46":1}}],["kinds",{"2":{"19":4,"28":1}}],["knowing",{"2":{"30":1}}],["knows",{"2":{"15":1,"36":1}}],["know",{"2":{"14":1,"23":1,"64":1,"65":1}}],["known",{"2":{"4":5,"10":1,"30":1}}],["kw",{"2":{"3":5,"4":1,"5":1,"11":1,"19":12,"20":5,"24":3,"27":17,"40":2,"42":10,"64":2}}],["kernels",{"2":{"17":1}}],["kernelabstractions",{"2":{"17":1}}],["kernel",{"2":{"17":1}}],["keeping",{"2":{"3":1}}],["keep",{"2":{"3":1,"24":2,"26":1,"48":1}}],["key",{"2":{"25":3,"36":1}}],["keys=",{"2":{"25":2}}],["keys=keys",{"2":{"25":2}}],["keys",{"2":{"0":1,"11":2,"20":1,"25":2,"27":4,"48":1,"83":2}}],["keywords",{"0":{"32":1,"39":1},"2":{"3":2,"4":2,"19":5,"21":2,"22":1,"23":5,"24":1,"25":1,"27":5,"29":1,"31":1,"32":1,"40":1,"41":1,"42":2,"64":4,"65":1}}],["keyword",{"2":{"0":1,"4":3,"5":1,"19":1,"20":1,"23":1,"24":2,"25":1,"39":1,"40":2,"65":1}}],["kept",{"2":{"0":1,"3":1}}],["┤",{"2":{"1":1,"3":1,"19":5,"21":1,"22":1,"23":4,"25":1,"28":6,"47":8,"48":19,"49":3,"61":1,"64":1,"79":1,"80":1,"82":1,"83":6,"84":1,"85":25}}],["u",{"2":{"80":1}}],["utility",{"0":{"24":1}}],["updating",{"2":{"40":1}}],["update",{"2":{"24":3}}],["updates",{"2":{"19":1,"27":6,"42":6}}],["updated",{"2":{"3":2,"24":4,"27":6,"42":6}}],["upperbound",{"2":{"8":1}}],["upper",{"2":{"5":1,"8":1}}],["unrolled",{"2":{"78":1}}],["unnamed",{"2":{"69":1}}],["unambiguous",{"2":{"43":1}}],["unaltered",{"2":{"4":1}}],["unaligned",{"2":{"4":4}}],["unclosed",{"2":{"27":1}}],["unmerged",{"2":{"24":1}}],["unmergedims",{"2":{"24":2}}],["unmatched",{"2":{"1":1,"19":1}}],["unknown",{"2":{"21":1,"76":1}}],["underneath",{"2":{"65":1}}],["underlying",{"2":{"1":1,"19":1,"25":1}}],["undefined",{"2":{"4":1,"19":2,"23":1,"41":1}}],["unless",{"2":{"4":4,"5":1,"31":1,"76":1,"78":1}}],["unlike",{"2":{"3":2,"11":1,"21":1,"66":1}}],["unordered",{"2":{"4":6,"7":3,"48":3,"66":2,"75":2,"76":2}}],["unitrange",{"2":{"15":1,"23":2,"48":3,"74":2}}],["unit",{"2":{"11":2}}],["unitful",{"2":{"5":3}}],["units",{"2":{"2":1,"11":5}}],["unionall",{"2":{"3":1}}],["union",{"2":{"2":1,"3":1,"4":5,"5":1,"11":3,"23":2,"24":2,"26":1}}],["usage",{"2":{"19":1}}],["usual",{"2":{"14":1}}],["usually",{"2":{"0":1,"3":2,"19":1,"39":1,"46":1,"66":1,"74":1,"75":2,"86":1}}],["us",{"2":{"11":1,"30":1,"34":1,"66":1}}],["user",{"2":{"35":1}}],["uses",{"2":{"4":1,"8":1,"17":2,"34":1,"56":1,"59":1,"64":1}}],["useful",{"2":{"1":1,"3":3,"4":6,"21":1,"24":1,"43":1,"61":1,"64":1}}],["use",{"2":{"0":3,"3":1,"4":2,"5":3,"7":1,"11":1,"12":1,"15":1,"16":1,"19":2,"20":3,"21":1,"24":3,"25":4,"26":3,"29":1,"30":1,"31":1,"40":1,"44":1,"47":1,"48":5,"64":1,"69":3,"74":1,"77":1}}],["used",{"2":{"0":7,"2":1,"3":4,"4":7,"5":6,"6":1,"8":1,"9":1,"10":7,"20":2,"21":4,"23":9,"24":4,"25":1,"30":2,"31":2,"32":1,"34":1,"35":1,"40":3,"43":1,"46":1,"47":1,"57":1,"64":1,"68":1,"69":1,"75":1,"76":3}}],["using",{"2":{"0":2,"1":4,"3":1,"4":5,"5":3,"11":2,"12":2,"13":1,"15":2,"17":1,"19":10,"20":1,"21":2,"22":2,"23":1,"24":6,"25":3,"28":1,"29":1,"31":1,"32":1,"33":1,"34":1,"40":2,"42":1,"43":3,"46":2,"47":1,"61":1,"62":1,"69":1,"74":2,"75":1,"79":2,"80":2,"82":1,"86":1}}],["v",{"2":{"80":1}}],["visual",{"2":{"69":3}}],["visualizations",{"2":{"69":2}}],["visualise",{"2":{"58":1}}],["via",{"2":{"35":2}}],["views",{"2":{"25":2,"56":1}}],["view",{"2":{"3":1,"19":1,"20":2,"21":1,"31":1}}],["vec",{"2":{"69":2}}],["vectors",{"2":{"3":1,"30":1,"74":3}}],["vector",{"2":{"0":1,"4":2,"5":6,"20":1,"23":11,"24":2,"30":2,"43":2,"46":8,"48":4,"74":5,"75":3,"81":1,"84":2}}],["very",{"2":{"20":2,"52":1,"64":1,"69":1,"86":1}}],["versions",{"2":{"40":2}}],["version",{"2":{"12":1,"20":1,"24":2,"40":1,"64":1,"65":1}}],["var",{"2":{"32":1,"85":2}}],["variable",{"2":{"24":1,"60":1,"68":1,"69":1}}],["vararg",{"2":{"1":4,"2":3,"3":6,"4":5,"19":10,"20":2,"22":1,"24":3,"27":1,"30":1}}],["valtype",{"2":{"3":1}}],["valid",{"2":{"3":1}}],["val",{"2":{"2":2,"3":1,"4":4,"11":1,"24":5,"34":2,"39":2,"43":3,"64":4}}],["val=",{"2":{"0":5}}],["value",{"2":{"0":1,"3":2,"4":2,"5":15,"8":1,"9":1,"10":1,"19":7,"20":3,"21":1,"23":7,"26":1,"28":1,"29":1,"34":1,"43":2,"69":1,"74":4,"86":1}}],["values=autovalues",{"2":{"4":1}}],["values",{"2":{"0":1,"2":1,"3":4,"4":15,"5":17,"7":1,"9":2,"10":6,"14":1,"19":1,"20":3,"21":5,"23":8,"24":3,"25":5,"27":1,"38":1,"40":1,"46":1,"48":5,"60":1,"63":1,"64":1,"66":2,"67":1,"74":5,"75":5,"76":3,"77":1,"84":2}}],["nanoseconds",{"2":{"86":1}}],["name=nothing",{"2":{"20":1}}],["name=noname",{"2":{"19":1}}],["name=",{"2":{"15":1,"19":1,"20":3,"24":1,"28":6,"64":1,"79":1}}],["names",{"0":{"29":1},"2":{"14":1,"22":1,"24":2,"25":4,"26":1,"29":1,"34":2,"43":1,"74":1,"75":1}}],["name2dim",{"2":{"3":3}}],["name",{"0":{"26":1},"2":{"2":1,"14":1,"17":3,"19":11,"22":2,"24":4,"26":11,"27":4,"29":1,"34":2,"40":1,"42":4,"64":2,"69":2,"74":1,"78":2,"82":1,"83":2}}],["namedtuple",{"0":{"83":1},"2":{"11":3,"15":1,"20":12,"24":3,"27":2,"82":2,"83":1,"84":4,"86":1}}],["named",{"2":{"0":1,"10":2,"26":1,"28":1,"31":1,"34":1,"55":1,"69":1,"72":1}}],["n=rand",{"2":{"83":1}}],["nt",{"2":{"65":2}}],["ntuple",{"2":{"1":3,"2":3,"19":5}}],["night",{"2":{"48":4}}],["nice",{"2":{"48":1}}],["ncdatasets",{"2":{"35":1}}],["ns",{"2":{"33":14,"86":2}}],["ndims",{"2":{"27":5,"42":3}}],["nvidia",{"2":{"24":1}}],["neighbor",{"2":{"77":1}}],["neighbour",{"2":{"21":1}}],["necessary",{"2":{"26":1}}],["necessarily",{"2":{"24":1}}],["netcdf",{"2":{"10":1,"35":1}}],["next",{"2":{"5":1}}],["needs",{"2":{"26":1,"27":1}}],["needed",{"2":{"17":1,"19":1,"64":1,"76":1}}],["need",{"2":{"4":1,"12":1,"17":3,"20":3,"23":1,"24":4}}],["nearly",{"2":{"36":1}}],["nearsest",{"2":{"5":1}}],["nearest",{"2":{"5":3,"21":1,"77":1}}],["near",{"2":{"4":2,"5":7,"19":2,"21":2,"74":3,"77":2}}],["newdim",{"2":{"3":4}}],["newdims",{"2":{"3":4}}],["new",{"2":{"0":1,"3":5,"4":1,"19":2,"22":1,"24":13,"36":1,"40":1,"85":1}}],["nosampling",{"2":{"66":1}}],["nospan",{"2":{"66":1}}],["nov",{"2":{"48":4,"75":1}}],["now",{"2":{"46":1,"48":1,"55":1,"75":1,"84":1}}],["normalization",{"2":{"49":1}}],["normal",{"2":{"7":1,"26":1}}],["nometadata",{"2":{"4":3,"11":2,"15":2,"19":1}}],["nolookup",{"2":{"4":11,"19":4,"24":1,"66":2,"75":9,"76":1}}],["no",{"2":{"2":1,"3":3,"4":2,"11":1,"14":1,"24":2,"33":1,"35":1,"66":1,"75":1,"76":1,"86":1}}],["nonnumeric",{"2":{"69":2}}],["noname",{"2":{"24":1,"26":5}}],["non",{"0":{"2":1},"2":{"19":2,"20":1}}],["notice",{"2":{"21":1,"23":1}}],["notably",{"2":{"20":2,"57":1}}],["note",{"2":{"5":1,"19":1,"23":1,"24":1,"27":1,"48":2,"69":2}}],["notes",{"2":{"4":1,"24":1}}],["nothing",{"2":{"1":1,"3":3,"4":1,"5":1,"8":2,"11":4,"19":1,"76":4}}],["not",{"2":{"0":1,"1":1,"3":4,"4":6,"5":8,"10":3,"11":4,"14":1,"15":1,"17":1,"19":2,"21":2,"23":1,"24":7,"25":3,"26":2,"27":4,"30":1,"31":2,"40":1,"41":1,"43":1,"48":3,"51":1,"62":1,"64":3,"66":1,"67":1,"69":1,"74":4,"75":2,"76":1,"78":1,"83":3,"84":1,"85":1}}],["number",{"2":{"1":1,"3":1,"4":1,"19":1,"23":5,"27":2,"42":2,"64":1,"76":1}}],["n",{"2":{"1":1,"2":3,"3":1,"4":3,"19":3,"48":1,"62":5,"64":4,"66":6,"80":1,"83":3}}],["`refdims`",{"2":{"42":2}}],["`dims`",{"2":{"42":2}}],["`da`",{"2":{"24":1}}],["`cuarray`",{"2":{"16":1}}],["`modify`",{"2":{"16":1}}],["`openinterval",{"2":{"5":1}}],["`",{"2":{"0":1,"24":2}}],["875994",{"2":{"47":1}}],["873096",{"2":{"30":1}}],["87656",{"2":{"83":1}}],["876115",{"2":{"30":1}}],["876395",{"2":{"28":3}}],["870583",{"2":{"30":1}}],["870485",{"2":{"21":1}}],["874037",{"2":{"28":1}}],["87436",{"2":{"16":1}}],["879899",{"2":{"28":3}}],["87",{"2":{"15":1}}],["8560905731682101",{"2":{"81":1}}],["856091",{"2":{"80":2}}],["856524",{"2":{"43":1}}],["852872",{"2":{"80":1}}],["855976",{"2":{"76":1}}],["853835",{"2":{"30":1}}],["853879",{"2":{"15":3}}],["854239",{"2":{"83":1}}],["854076",{"2":{"28":3}}],["854739",{"2":{"16":1}}],["85",{"2":{"15":1,"80":1}}],["845200516911609",{"2":{"81":1}}],["845201",{"2":{"80":2}}],["843637",{"2":{"80":1}}],["849707",{"2":{"80":1}}],["842029",{"2":{"83":1}}],["8428656510212863",{"2":{"81":1}}],["842866",{"2":{"80":2}}],["84219",{"2":{"15":2}}],["840593",{"2":{"79":1}}],["846736",{"2":{"77":2}}],["846581",{"2":{"47":1}}],["846",{"2":{"31":2}}],["846175",{"2":{"28":2}}],["847981",{"2":{"28":1}}],["84",{"2":{"15":1,"77":1}}],["844262",{"2":{"15":5}}],["832345",{"2":{"77":1}}],["838572",{"2":{"77":1}}],["839223",{"2":{"43":1}}],["83904",{"2":{"15":2}}],["830655",{"2":{"43":1}}],["830187",{"2":{"29":1,"31":2}}],["83056",{"2":{"16":1}}],["835288",{"2":{"16":1}}],["83",{"2":{"15":1}}],["819605",{"2":{"80":1}}],["819291",{"2":{"77":1}}],["8146121812750928",{"2":{"81":1}}],["814612",{"2":{"80":2}}],["817575",{"2":{"83":1}}],["817821",{"2":{"80":1}}],["817199",{"2":{"77":1}}],["81708",{"2":{"16":1}}],["810377",{"2":{"77":1}}],["811947",{"2":{"32":1}}],["813229",{"2":{"28":1}}],["813705",{"2":{"28":3}}],["81",{"2":{"15":1}}],["894053",{"2":{"80":1}}],["890574",{"2":{"79":1}}],["890377",{"2":{"77":1}}],["899783",{"2":{"77":1}}],["895115",{"2":{"77":1}}],["89559",{"2":{"77":1}}],["896257",{"2":{"76":1}}],["89609",{"2":{"30":1}}],["89757",{"2":{"43":1}}],["89248",{"2":{"32":1}}],["891663",{"2":{"30":1}}],["891743",{"2":{"28":2}}],["893267",{"2":{"28":2}}],["893537",{"2":{"21":1}}],["89",{"2":{"13":1,"15":1}}],["8268020755919178",{"2":{"81":1}}],["826802",{"2":{"80":2}}],["826098",{"2":{"28":3}}],["827349",{"2":{"77":1}}],["827655",{"2":{"28":2}}],["828161",{"2":{"79":1}}],["828604",{"2":{"79":1}}],["82862",{"2":{"15":1}}],["828315",{"2":{"77":1}}],["824556",{"2":{"62":2,"64":2,"66":6}}],["8234",{"2":{"28":1}}],["823656",{"2":{"19":1}}],["82356",{"2":{"15":2}}],["82",{"2":{"13":1,"15":1,"47":2}}],["8632634208267141",{"2":{"84":2,"85":2}}],["86273",{"2":{"74":3}}],["869012",{"2":{"74":9}}],["86986",{"2":{"32":1}}],["86789",{"2":{"62":2,"64":2,"66":6}}],["867547",{"2":{"19":1,"21":1}}],["86858",{"2":{"43":1}}],["868064",{"2":{"13":1}}],["866772",{"2":{"30":1}}],["866334",{"2":{"28":3}}],["865298",{"2":{"28":3}}],["864856",{"2":{"21":1}}],["86112",{"2":{"80":1}}],["861535",{"2":{"43":1}}],["86194",{"2":{"32":1}}],["86174",{"2":{"16":1}}],["861652",{"2":{"15":3}}],["86",{"2":{"13":2,"15":1}}],["884385",{"2":{"80":1}}],["884218",{"2":{"62":2,"64":2,"66":6}}],["887294",{"2":{"79":1}}],["882656",{"2":{"76":1}}],["883323",{"2":{"76":1}}],["883222",{"2":{"74":3}}],["883048",{"2":{"30":1}}],["889153",{"2":{"47":1}}],["881528",{"2":{"80":1}}],["881533",{"2":{"30":1}}],["881149",{"2":{"16":1}}],["888721",{"2":{"79":1}}],["88841",{"2":{"30":1}}],["88869",{"2":{"16":1}}],["886959",{"2":{"28":2}}],["88092",{"2":{"16":1}}],["88058",{"2":{"16":1}}],["88",{"2":{"13":1,"15":1,"77":1}}],["8030281996030815",{"2":{"84":1}}],["8002301328044032",{"2":{"84":2}}],["80023",{"2":{"83":1}}],["800929",{"2":{"80":1}}],["800084",{"2":{"15":3}}],["806495",{"2":{"77":1}}],["802776",{"2":{"74":6}}],["805743",{"2":{"43":1}}],["80455",{"2":{"16":1}}],["80",{"2":{"4":1,"15":1,"48":1}}],["8",{"2":{"0":1,"4":1,"5":2,"13":1,"15":4,"20":1,"28":18,"30":4,"43":7,"46":1,"48":11,"74":8,"75":2,"77":7,"79":2,"80":12,"81":2,"83":3}}],["6×10",{"2":{"83":1,"85":30}}],["6×6",{"2":{"77":3}}],["6×3",{"2":{"74":2}}],["6am",{"2":{"48":1}}],["682734",{"2":{"77":1}}],["687569",{"2":{"79":1}}],["687921",{"2":{"76":1}}],["687236",{"2":{"30":1}}],["680987",{"2":{"76":1}}],["686915",{"2":{"62":2,"64":2,"66":6}}],["688928",{"2":{"28":2}}],["688175",{"2":{"28":2}}],["689712",{"2":{"28":2}}],["68136",{"2":{"28":2}}],["68",{"2":{"15":1}}],["683795",{"2":{"76":1}}],["68326",{"2":{"15":3}}],["68316",{"2":{"13":1}}],["6793280401673898",{"2":{"84":1}}],["679632",{"2":{"80":1}}],["67989",{"2":{"77":1}}],["679453",{"2":{"76":1}}],["670607",{"2":{"80":1}}],["670627",{"2":{"77":1}}],["670688",{"2":{"28":3}}],["672556",{"2":{"77":1}}],["674881",{"2":{"47":1}}],["676945",{"2":{"30":1}}],["677549",{"2":{"47":1}}],["6778",{"2":{"30":1}}],["677848",{"2":{"30":1}}],["677974",{"2":{"28":1}}],["677207",{"2":{"28":1}}],["675459",{"2":{"77":1}}],["675467",{"2":{"28":1}}],["675126",{"2":{"30":1}}],["67539",{"2":{"15":3}}],["67178",{"2":{"28":1}}],["67",{"2":{"15":1}}],["6652884461390509",{"2":{"84":1}}],["665742",{"2":{"16":1}}],["6691920691407321",{"2":{"84":1}}],["669192",{"2":{"83":1}}],["669153",{"2":{"80":1}}],["668226",{"2":{"83":1}}],["668594",{"2":{"15":3}}],["662479108116419e",{"2":{"85":1}}],["662632",{"2":{"83":1}}],["662227",{"2":{"77":1}}],["660657",{"2":{"77":1}}],["660024",{"2":{"43":1}}],["664038",{"2":{"47":1,"49":2}}],["667691",{"2":{"30":1}}],["667976",{"2":{"28":1}}],["661715",{"2":{"28":1}}],["66622",{"2":{"16":1}}],["66",{"2":{"15":1}}],["6518774627227301",{"2":{"84":1}}],["651877",{"2":{"83":1}}],["651538",{"2":{"76":1}}],["659836",{"2":{"77":1}}],["65906",{"2":{"43":1}}],["650675",{"2":{"76":1}}],["654129",{"2":{"49":1}}],["654537",{"2":{"47":1,"49":2}}],["654591",{"2":{"43":1}}],["655936",{"2":{"30":2}}],["65",{"2":{"15":1,"48":1}}],["6445457662038467",{"2":{"84":1}}],["644748",{"2":{"30":2}}],["645529",{"2":{"80":1}}],["64534",{"2":{"80":1}}],["641266",{"2":{"77":1}}],["641023",{"2":{"30":1}}],["647225",{"2":{"76":1}}],["647328",{"2":{"15":3}}],["64923",{"2":{"32":1}}],["640693",{"2":{"30":1}}],["642908",{"2":{"16":1}}],["64",{"2":{"15":1,"48":1}}],["636476",{"2":{"79":1}}],["634257",{"2":{"77":1}}],["635373",{"2":{"77":2}}],["635425",{"2":{"30":1}}],["631878",{"2":{"77":1}}],["639039",{"2":{"77":1}}],["639212",{"2":{"47":1,"49":1}}],["63959",{"2":{"43":1}}],["638072",{"2":{"30":1}}],["638336",{"2":{"30":1}}],["637077",{"2":{"19":2}}],["637399",{"2":{"15":3}}],["63",{"2":{"15":1}}],["622735",{"2":{"80":1}}],["620473",{"2":{"80":1}}],["621422",{"2":{"77":1}}],["621662",{"2":{"76":1}}],["621603",{"2":{"74":5}}],["621601",{"2":{"15":3}}],["626382",{"2":{"77":1}}],["627002",{"2":{"30":1}}],["627107",{"2":{"28":3}}],["629352",{"2":{"30":2}}],["629882",{"2":{"28":1}}],["625257",{"2":{"28":1}}],["628",{"2":{"86":1}}],["628507",{"2":{"28":2}}],["628275",{"2":{"28":2}}],["62",{"2":{"15":1}}],["624685",{"2":{"15":5}}],["619787",{"2":{"80":1}}],["610193",{"2":{"80":1}}],["61025",{"2":{"16":1}}],["6146564273146751",{"2":{"81":1}}],["614656",{"2":{"80":2}}],["614012",{"2":{"30":1}}],["612828",{"2":{"79":1}}],["615705",{"2":{"66":1}}],["616635",{"2":{"47":1}}],["616666",{"2":{"43":1}}],["61858",{"2":{"15":2}}],["61341",{"2":{"15":2}}],["61",{"2":{"13":1,"15":1}}],["691687",{"2":{"83":1}}],["691162",{"2":{"21":1}}],["694278906020718",{"2":{"81":1}}],["694279",{"2":{"80":2}}],["694096",{"2":{"77":1}}],["693866",{"2":{"77":1}}],["690159",{"2":{"77":1}}],["699118",{"2":{"77":1}}],["69689e",{"2":{"47":1}}],["697976",{"2":{"30":1}}],["692209",{"2":{"21":2}}],["692235",{"2":{"19":1}}],["69506",{"2":{"16":1}}],["69",{"2":{"13":1,"15":1}}],["603823",{"2":{"83":1}}],["603258",{"2":{"77":1}}],["607291",{"2":{"79":1,"80":2}}],["602631",{"2":{"83":1}}],["602",{"2":{"77":1}}],["6063",{"2":{"77":1}}],["606279",{"2":{"30":1}}],["601787",{"2":{"77":1}}],["601474",{"2":{"29":1,"31":2}}],["601833",{"2":{"28":3}}],["600306",{"2":{"15":3}}],["60",{"2":{"4":1,"5":1,"15":1,"76":1,"84":1}}],["6",{"2":{"0":1,"4":2,"5":18,"13":3,"15":10,"16":1,"20":1,"21":4,"24":4,"28":18,"43":7,"46":11,"47":4,"48":20,"74":14,"75":1,"77":3,"80":12,"81":2,"82":1,"83":12,"84":4,"85":19}}],["4×6",{"2":{"21":1}}],["4×5",{"2":{"13":1}}],["495624",{"2":{"77":1}}],["495215",{"2":{"15":1}}],["496092",{"2":{"47":1}}],["496532",{"2":{"47":1}}],["496329",{"2":{"47":1}}],["496943",{"2":{"47":1}}],["497705",{"2":{"47":1}}],["497559",{"2":{"47":1}}],["497181",{"2":{"28":1}}],["494267",{"2":{"30":2}}],["493065",{"2":{"80":1}}],["493072",{"2":{"30":2}}],["493784",{"2":{"77":1}}],["493258",{"2":{"30":1}}],["493417",{"2":{"28":3}}],["498801",{"2":{"23":1}}],["498606",{"2":{"23":1}}],["498145",{"2":{"23":1}}],["498704",{"2":{"23":1}}],["49097",{"2":{"16":1}}],["49232",{"2":{"15":2}}],["49169278767038266",{"2":{"85":1}}],["49118673636340926",{"2":{"84":2}}],["491911",{"2":{"77":1}}],["491202",{"2":{"15":1}}],["491479",{"2":{"15":1}}],["499307",{"2":{"77":1}}],["499353",{"2":{"47":1}}],["499837",{"2":{"48":1}}],["499959",{"2":{"48":1}}],["499901",{"2":{"48":1}}],["499985",{"2":{"23":1}}],["499069",{"2":{"47":1}}],["499693",{"2":{"47":1,"48":1}}],["499674",{"2":{"15":1}}],["499237",{"2":{"47":1}}],["499298",{"2":{"23":1}}],["499282",{"2":{"15":1}}],["499594",{"2":{"23":1}}],["499762",{"2":{"23":1}}],["49",{"2":{"15":1,"48":1}}],["45152471334016764",{"2":{"84":1}}],["451525",{"2":{"83":1}}],["451879",{"2":{"28":2}}],["456688",{"2":{"80":1}}],["457841",{"2":{"80":1}}],["450775",{"2":{"77":1}}],["450629",{"2":{"77":1}}],["454047",{"2":{"77":1}}],["454033",{"2":{"30":1}}],["454134",{"2":{"77":1}}],["454715",{"2":{"47":1}}],["45804",{"2":{"16":1}}],["45",{"2":{"15":1}}],["44764230965596247",{"2":{"85":1}}],["44724",{"2":{"15":3}}],["4408839264303761",{"2":{"84":1}}],["440884",{"2":{"83":1}}],["44097",{"2":{"43":1}}],["44833963865079907",{"2":{"81":1}}],["44818",{"2":{"77":1}}],["445218",{"2":{"80":1}}],["445628",{"2":{"43":1}}],["4496996354823414",{"2":{"81":1}}],["4497",{"2":{"80":2}}],["449491",{"2":{"80":2}}],["4492",{"2":{"16":1}}],["442111",{"2":{"76":1}}],["444305",{"2":{"74":12}}],["441181",{"2":{"76":1}}],["44104",{"2":{"28":1}}],["441762",{"2":{"15":2}}],["443494",{"2":{"19":1,"21":1}}],["44",{"2":{"15":1}}],["42964",{"2":{"77":1}}],["428951",{"2":{"47":1,"49":2}}],["423538",{"2":{"43":1}}],["42331",{"2":{"15":1}}],["426134",{"2":{"77":1}}],["426312",{"2":{"77":1}}],["426888",{"2":{"29":1,"31":2}}],["42648",{"2":{"15":1}}],["420756",{"2":{"21":1}}],["427328",{"2":{"19":1,"21":1}}],["42151",{"2":{"16":1}}],["42",{"2":{"15":1}}],["4338946695122107",{"2":{"84":1}}],["43314",{"2":{"15":3}}],["43235163202114113",{"2":{"84":2,"86":2}}],["432028",{"2":{"77":1}}],["439711995898844",{"2":{"84":1}}],["439371",{"2":{"80":1}}],["439142",{"2":{"15":2}}],["436622",{"2":{"79":1,"80":1}}],["436293",{"2":{"29":1,"31":2}}],["434286",{"2":{"79":1}}],["434374",{"2":{"15":3}}],["435719",{"2":{"30":1}}],["43",{"2":{"15":1}}],["431398",{"2":{"15":3}}],["438592",{"2":{"15":3}}],["4787707397082731",{"2":{"85":1}}],["476423096559625",{"2":{"85":2}}],["4727022060041937",{"2":{"85":2}}],["473944",{"2":{"77":1}}],["474535",{"2":{"83":1}}],["474052",{"2":{"62":2,"64":2,"66":6}}],["474087",{"2":{"15":3}}],["474755",{"2":{"62":2,"64":2,"66":6}}],["471877",{"2":{"47":1,"49":2}}],["475569",{"2":{"47":1}}],["475747",{"2":{"28":1}}],["475786",{"2":{"15":3}}],["479126",{"2":{"16":1}}],["47",{"2":{"13":1,"15":1,"48":2}}],["41940525122635797",{"2":{"81":1}}],["417756",{"2":{"80":1}}],["412631",{"2":{"77":1}}],["418968",{"2":{"47":1}}],["411529",{"2":{"30":1}}],["41173",{"2":{"30":1}}],["413756",{"2":{"28":1}}],["41334",{"2":{"16":1}}],["416444",{"2":{"15":3}}],["41",{"2":{"13":2,"15":1,"48":1}}],["48240020633837055",{"2":{"84":1}}],["48275",{"2":{"16":1}}],["486559",{"2":{"79":1}}],["487197",{"2":{"62":2,"64":2,"66":6}}],["487601",{"2":{"16":1}}],["48952511607945026",{"2":{"81":1}}],["489525",{"2":{"80":2}}],["48912e",{"2":{"47":1}}],["489497",{"2":{"15":1}}],["48889263023704055",{"2":{"84":1}}],["488136",{"2":{"83":1}}],["48817",{"2":{"32":1}}],["488473",{"2":{"80":1}}],["488029",{"2":{"29":2,"31":2}}],["481184",{"2":{"32":1}}],["4854948068259556",{"2":{"84":1}}],["485952",{"2":{"77":1}}],["485119",{"2":{"47":1}}],["485321",{"2":{"30":2}}],["485687",{"2":{"21":1}}],["485718",{"2":{"15":1}}],["48",{"2":{"13":1,"15":1,"48":1}}],["462859",{"2":{"77":1}}],["462981",{"2":{"16":1}}],["465112",{"2":{"77":1}}],["460775",{"2":{"77":1}}],["46788",{"2":{"29":1,"31":2}}],["468184",{"2":{"28":1}}],["468066",{"2":{"28":1}}],["464554",{"2":{"16":1}}],["46",{"2":{"13":3,"15":1}}],["40268027828179853",{"2":{"81":1}}],["402083",{"2":{"80":1}}],["40169",{"2":{"77":1}}],["406",{"2":{"33":1}}],["406221",{"2":{"30":1}}],["40584",{"2":{"16":1}}],["404773",{"2":{"30":1}}],["40409",{"2":{"16":1}}],["404635",{"2":{"13":1}}],["403111",{"2":{"28":3}}],["40322",{"2":{"15":1}}],["403955",{"2":{"15":3}}],["407207",{"2":{"15":3}}],["40",{"2":{"4":1,"15":1,"19":3,"48":1,"76":1}}],["4",{"2":{"0":5,"3":1,"4":5,"5":12,"13":6,"15":8,"16":2,"19":6,"20":2,"21":2,"23":1,"24":14,"25":3,"28":15,"30":5,"32":1,"33":10,"43":7,"46":1,"47":5,"48":8,"74":18,"75":1,"77":2,"79":1,"80":12,"81":2,"83":1,"85":2,"86":3}}],["0963009",{"2":{"83":1}}],["0967863",{"2":{"21":1}}],["0970658",{"2":{"80":1}}],["09300753748828394",{"2":{"81":1}}],["0930075",{"2":{"80":2}}],["0905873",{"2":{"77":1}}],["0923954",{"2":{"77":1}}],["0928922",{"2":{"76":1}}],["0927459",{"2":{"28":2}}],["0915867",{"2":{"62":2,"64":2,"66":6}}],["0958843",{"2":{"80":1}}],["095824",{"2":{"43":1}}],["0959042",{"2":{"28":2}}],["0992684",{"2":{"32":1}}],["0990347",{"2":{"30":1}}],["0999314",{"2":{"28":3}}],["0991336",{"2":{"21":2}}],["09",{"2":{"0":1,"15":6,"49":1,"75":1}}],["0852624",{"2":{"83":1}}],["084109",{"2":{"80":1}}],["0821229",{"2":{"77":1}}],["0811277",{"2":{"77":1}}],["0831822",{"2":{"77":1}}],["0837074",{"2":{"15":3}}],["0897302",{"2":{"47":1}}],["08094675775408827",{"2":{"85":1}}],["08035217265254364",{"2":{"85":1}}],["0802658",{"2":{"19":1}}],["0804518",{"2":{"16":1}}],["08",{"2":{"0":1,"15":4,"49":1,"75":1,"77":1}}],["07986058669268159",{"2":{"81":1}}],["0760101",{"2":{"77":1}}],["0760848",{"2":{"32":1}}],["0737984",{"2":{"77":1}}],["0738813",{"2":{"30":1}}],["0773793",{"2":{"77":1}}],["0775482",{"2":{"77":1}}],["0789906",{"2":{"30":1}}],["0781957",{"2":{"13":1}}],["0707995",{"2":{"28":1}}],["072176",{"2":{"83":1}}],["0724261",{"2":{"77":1}}],["07277",{"2":{"16":1}}],["0725917",{"2":{"15":3}}],["0710221",{"2":{"13":1}}],["07",{"2":{"0":1,"15":4,"49":1,"75":1}}],["067300",{"2":{"80":1}}],["0670244",{"2":{"77":1}}],["0670111",{"2":{"13":1}}],["061892",{"2":{"80":1}}],["0699673",{"2":{"77":1}}],["0697249",{"2":{"28":1}}],["0661958",{"2":{"77":1}}],["0689895",{"2":{"77":1}}],["0641884",{"2":{"32":1}}],["0649391",{"2":{"16":1}}],["0623616",{"2":{"30":1}}],["0621546",{"2":{"28":1}}],["0622255",{"2":{"28":3}}],["06",{"2":{"0":1,"15":4,"49":1,"75":1}}],["05906689600077611",{"2":{"85":1}}],["0599255",{"2":{"28":1}}],["0599431",{"2":{"16":1}}],["0506805",{"2":{"77":1}}],["0575993",{"2":{"76":1}}],["0578313",{"2":{"30":1}}],["05t03",{"2":{"49":4}}],["0536623",{"2":{"43":1}}],["0531003",{"2":{"30":2}}],["0542529",{"2":{"77":1}}],["0545071",{"2":{"43":1}}],["054613",{"2":{"28":1}}],["0541549",{"2":{"15":3}}],["0557598",{"2":{"16":1}}],["05",{"2":{"0":1,"15":4,"49":1,"74":1,"75":1}}],["04060837507113502",{"2":{"84":1,"86":2}}],["0406084",{"2":{"83":1}}],["0400057",{"2":{"43":1}}],["0445446",{"2":{"80":1}}],["0442448",{"2":{"15":5}}],["049689",{"2":{"79":1}}],["0410007",{"2":{"77":1}}],["0417586",{"2":{"77":1}}],["041",{"2":{"33":1}}],["04169",{"2":{"15":2}}],["0450386",{"2":{"30":1}}],["0471885",{"2":{"15":5}}],["04",{"2":{"0":1,"15":6,"33":2,"49":1,"75":1,"77":3}}],["0328886",{"2":{"83":1}}],["0320967",{"2":{"21":1}}],["0309852",{"2":{"80":1}}],["0300922",{"2":{"77":1}}],["0303789",{"2":{"21":1}}],["038",{"2":{"33":1}}],["0363983",{"2":{"30":1}}],["0314382",{"2":{"30":1}}],["0315486",{"2":{"28":2}}],["0379776",{"2":{"30":1}}],["0392779",{"2":{"28":2}}],["0333106",{"2":{"13":1}}],["03",{"2":{"0":1,"15":6,"47":1,"49":2,"75":1}}],["029602",{"2":{"80":1}}],["0216477",{"2":{"80":1}}],["021",{"2":{"77":1}}],["0255364",{"2":{"77":1}}],["027",{"2":{"33":2}}],["02098",{"2":{"32":1}}],["0287126",{"2":{"28":1}}],["0238569",{"2":{"28":3}}],["0239356",{"2":{"28":3}}],["02",{"2":{"0":2,"15":6,"33":2,"47":1,"49":2,"75":1}}],["0",{"2":{"0":60,"1":6,"3":8,"4":28,"5":8,"13":20,"15":178,"16":69,"19":86,"20":16,"21":81,"22":240,"23":19,"24":176,"28":546,"29":28,"30":148,"31":50,"32":12,"33":25,"43":175,"44":42,"46":2,"47":63,"48":20,"49":53,"61":105,"62":50,"64":48,"66":141,"74":147,"75":7,"76":35,"77":234,"79":48,"80":150,"81":36,"82":16,"83":133,"84":89,"85":155,"86":12}}],["0019198597596568057",{"2":{"81":1}}],["00191986",{"2":{"80":2}}],["00125e",{"2":{"47":1}}],["00258281",{"2":{"77":1}}],["007",{"2":{"77":3}}],["00428189",{"2":{"77":1}}],["0042232",{"2":{"43":1}}],["00869054",{"2":{"77":1}}],["00832284",{"2":{"47":1,"49":1}}],["00633515",{"2":{"43":1}}],["0038728108200783984",{"2":{"85":2}}],["00387281",{"2":{"83":1}}],["00337686",{"2":{"30":2}}],["00396",{"2":{"15":1}}],["00327",{"2":{"15":1}}],["00",{"2":{"0":42,"15":164,"33":10,"46":4,"47":10,"49":37,"75":32}}],["0120967",{"2":{"79":1,"80":1}}],["0135194",{"2":{"77":1}}],["0130048",{"2":{"29":1,"31":2}}],["015759978623873905",{"2":{"85":2}}],["01576",{"2":{"83":1}}],["0157247",{"2":{"43":1}}],["0154473",{"2":{"77":1}}],["011",{"2":{"48":2}}],["01t03",{"2":{"49":2}}],["01t02",{"2":{"49":1}}],["01t01",{"2":{"47":1,"49":2}}],["01t00",{"2":{"0":21,"15":82,"46":1,"47":2,"49":7,"75":16}}],["0171909",{"2":{"83":1}}],["0170682",{"2":{"83":1}}],["017",{"2":{"33":2}}],["0160205",{"2":{"30":1}}],["014402783553701615",{"2":{"85":2}}],["014",{"2":{"77":1}}],["0143204",{"2":{"77":1}}],["0140644",{"2":{"28":1}}],["0145691",{"2":{"15":3}}],["0106725",{"2":{"47":1,"49":1}}],["0109523",{"2":{"43":1}}],["0104608",{"2":{"30":1}}],["0102884",{"2":{"28":2}}],["010",{"2":{"24":2}}],["0197492",{"2":{"16":1}}],["01",{"2":{"0":5,"15":15,"46":1,"47":6,"49":21,"75":3}}],["↗",{"2":{"0":1,"1":1,"3":1,"13":1,"15":6,"19":1,"22":1,"23":1,"24":1,"30":1,"32":2,"34":1,"79":3}}],["→",{"2":{"0":4,"1":3,"3":2,"4":2,"5":8,"13":4,"15":11,"16":2,"19":15,"20":1,"21":12,"22":1,"23":3,"24":12,"25":2,"28":17,"29":1,"30":7,"31":2,"32":2,"33":1,"34":2,"43":7,"44":11,"47":3,"48":8,"49":5,"61":3,"62":4,"64":4,"66":11,"74":26,"76":2,"77":10,"79":4,"80":1,"82":2,"83":8,"85":24}}],["↓",{"2":{"0":5,"1":4,"3":3,"4":2,"5":8,"13":5,"15":14,"16":2,"19":18,"20":1,"21":12,"22":1,"23":5,"24":12,"25":2,"28":17,"29":2,"30":8,"31":2,"32":2,"33":1,"34":2,"43":12,"44":15,"47":10,"48":19,"49":6,"61":3,"62":4,"64":4,"66":11,"74":28,"75":1,"76":2,"77":10,"79":4,"80":1,"82":2,"83":9,"84":1,"85":25}}],["┐",{"2":{"0":3,"4":1,"5":4,"13":3,"15":8,"16":1,"19":6,"21":3,"23":3,"24":5,"25":1,"28":14,"29":2,"30":4,"31":2,"32":2,"33":1,"43":1,"47":8,"48":11,"49":3,"61":3,"62":2,"64":2,"66":6,"74":15,"75":1,"76":1,"77":5,"79":2,"80":1,"82":1,"83":8,"84":1,"85":25}}],["│",{"2":{"0":6,"1":2,"3":2,"4":2,"5":8,"13":6,"15":16,"16":2,"19":22,"21":8,"22":2,"23":6,"24":10,"25":2,"28":28,"29":4,"30":8,"31":4,"32":4,"33":2,"43":2,"47":16,"48":22,"49":6,"61":6,"62":4,"64":4,"66":12,"74":30,"75":2,"76":2,"77":10,"79":4,"80":74,"82":2,"83":16,"84":2,"85":50}}],["5×1",{"2":{"74":1}}],["5×10",{"2":{"28":16}}],["5×5",{"2":{"29":1,"31":2}}],["5×4",{"2":{"4":1}}],["581131",{"2":{"80":2}}],["585756",{"2":{"47":1,"49":1}}],["585658",{"2":{"15":3}}],["589536",{"2":{"43":1}}],["5891",{"2":{"15":2}}],["58",{"2":{"15":1}}],["5697400488168892",{"2":{"81":1}}],["56974",{"2":{"80":2}}],["569347",{"2":{"77":1}}],["562491",{"2":{"77":1}}],["56273",{"2":{"30":1}}],["564657",{"2":{"77":1}}],["564152",{"2":{"49":1}}],["565229",{"2":{"66":1}}],["561953",{"2":{"43":1}}],["561365",{"2":{"28":1}}],["56",{"2":{"15":1,"48":1}}],["5501481631111826",{"2":{"81":1}}],["550148",{"2":{"80":2}}],["55560637324799",{"2":{"81":1}}],["555606",{"2":{"80":2}}],["556096",{"2":{"43":1}}],["552838",{"2":{"43":1}}],["557418",{"2":{"77":1}}],["557369",{"2":{"28":1}}],["557524",{"2":{"28":1}}],["55713",{"2":{"15":2}}],["553558",{"2":{"28":1}}],["55",{"2":{"15":1}}],["5370455292538254",{"2":{"84":1}}],["537046",{"2":{"83":1}}],["53407",{"2":{"77":1}}],["534915",{"2":{"28":3}}],["531012",{"2":{"77":1}}],["533041",{"2":{"77":1}}],["539197",{"2":{"77":1}}],["539076",{"2":{"21":1}}],["539028",{"2":{"13":1}}],["532757",{"2":{"49":1}}],["53259",{"2":{"15":1}}],["530908",{"2":{"49":2}}],["535933",{"2":{"30":1}}],["53632",{"2":{"15":2}}],["53",{"2":{"15":1}}],["5201836703588896",{"2":{"84":1}}],["520184",{"2":{"83":1}}],["5203602669427675",{"2":{"84":1}}],["52036",{"2":{"83":1}}],["527254",{"2":{"77":1}}],["527261",{"2":{"30":1}}],["528009",{"2":{"77":1}}],["528138",{"2":{"30":1}}],["52849",{"2":{"13":1}}],["52496",{"2":{"28":1}}],["52389",{"2":{"15":2}}],["52",{"2":{"15":1}}],["5943408850726459",{"2":{"84":3}}],["599241",{"2":{"79":1,"80":2}}],["595409",{"2":{"77":1}}],["59542",{"2":{"15":2}}],["593346",{"2":{"66":1}}],["597808",{"2":{"30":1}}],["59705",{"2":{"16":1}}],["591606",{"2":{"30":1}}],["596077",{"2":{"28":2}}],["59",{"2":{"13":1,"15":1}}],["5434869639181522",{"2":{"84":2}}],["54624",{"2":{"79":1}}],["546357",{"2":{"15":3}}],["545522",{"2":{"77":1}}],["545156",{"2":{"13":1}}],["548479",{"2":{"43":1}}],["54822",{"2":{"16":1}}],["541438",{"2":{"28":1}}],["542251",{"2":{"28":3}}],["547848",{"2":{"15":2}}],["54",{"2":{"13":1,"15":1}}],["5154448003579335",{"2":{"84":1,"86":2}}],["515445",{"2":{"83":1}}],["518483",{"2":{"83":1}}],["518938",{"2":{"79":1}}],["516396",{"2":{"80":1}}],["51621",{"2":{"79":1}}],["513088",{"2":{"77":1}}],["513909",{"2":{"77":1}}],["519705",{"2":{"77":1}}],["519235",{"2":{"28":2}}],["510587",{"2":{"80":1}}],["510196",{"2":{"30":1}}],["510863",{"2":{"15":1}}],["511313",{"2":{"74":3}}],["511078",{"2":{"29":1,"31":2}}],["511978",{"2":{"28":3}}],["514177",{"2":{"28":1}}],["517175",{"2":{"79":1}}],["517329",{"2":{"28":2}}],["517971",{"2":{"15":3}}],["512083",{"2":{"19":1,"21":1}}],["51",{"2":{"13":1,"15":1,"47":1}}],["573469",{"2":{"77":1}}],["573391",{"2":{"77":1}}],["573147",{"2":{"32":1}}],["574526",{"2":{"77":2}}],["574678",{"2":{"77":1}}],["575878",{"2":{"49":2}}],["578183",{"2":{"47":1}}],["571658",{"2":{"30":1}}],["571821",{"2":{"13":1}}],["576903",{"2":{"28":3}}],["570725",{"2":{"79":1,"80":1}}],["570396",{"2":{"77":1}}],["570603",{"2":{"76":1}}],["570254",{"2":{"28":1}}],["57019",{"2":{"16":1}}],["570914",{"2":{"13":1}}],["57",{"2":{"5":1,"13":2,"15":1,"48":1}}],["5099922507050859",{"2":{"81":1}}],["509231",{"2":{"28":1}}],["508938",{"2":{"77":1}}],["508614",{"2":{"77":1}}],["50854",{"2":{"15":2}}],["5055",{"2":{"48":4}}],["505694",{"2":{"47":1}}],["50562",{"2":{"15":1}}],["503183",{"2":{"77":2}}],["503785",{"2":{"47":1}}],["503823",{"2":{"29":2,"31":2}}],["506181",{"2":{"83":1}}],["506221",{"2":{"76":1}}],["506084",{"2":{"47":1}}],["506965",{"2":{"43":1}}],["507581",{"2":{"43":1}}],["502499",{"2":{"30":2}}],["50156726022296",{"2":{"85":2}}],["50102",{"2":{"47":1}}],["501998",{"2":{"47":1}}],["501282",{"2":{"47":1}}],["501643",{"2":{"23":1}}],["501105",{"2":{"23":1}}],["501124",{"2":{"15":1}}],["501379",{"2":{"23":1}}],["500355",{"2":{"48":1}}],["500331",{"2":{"47":1,"48":2}}],["500136",{"2":{"47":1}}],["500155",{"2":{"47":1}}],["500665",{"2":{"47":1,"48":2}}],["500644",{"2":{"23":1}}],["500533",{"2":{"23":1}}],["50047",{"2":{"23":1}}],["500495",{"2":{"15":1}}],["500874",{"2":{"23":1}}],["500818",{"2":{"15":1}}],["500058",{"2":{"47":1}}],["500083",{"2":{"23":1}}],["500064",{"2":{"23":1}}],["50",{"2":{"5":3,"13":4,"15":1,"19":9,"76":1}}],["5u",{"2":{"5":1}}],["5",{"2":{"0":1,"4":3,"5":21,"13":6,"15":10,"16":1,"19":2,"20":1,"21":1,"24":7,"25":1,"28":34,"29":2,"30":6,"32":1,"43":9,"46":1,"47":4,"48":5,"61":3,"74":7,"75":2,"76":1,"80":12,"81":2,"82":3,"83":11,"84":1,"85":36}}],["3a",{"2":{"20":1}}],["3×14",{"2":{"62":2,"64":2,"66":6}}],["3×5",{"2":{"25":2,"61":10}}],["3×5×12",{"2":{"0":1}}],["3×4×1",{"2":{"32":1}}],["3×4×5",{"2":{"32":1}}],["3×4",{"2":{"24":5}}],["3×3",{"2":{"19":3,"21":1,"33":1,"74":3}}],["3×2",{"2":{"19":1,"74":1}}],["371583",{"2":{"77":1}}],["376",{"2":{"48":3}}],["370",{"2":{"48":2}}],["37821",{"2":{"30":1}}],["378395",{"2":{"30":1}}],["372311",{"2":{"30":2}}],["374451",{"2":{"28":1}}],["374026",{"2":{"16":1}}],["373575",{"2":{"28":2}}],["37963",{"2":{"16":1}}],["37",{"2":{"15":1}}],["367212",{"2":{"80":1}}],["369225",{"2":{"83":1}}],["369",{"2":{"48":3}}],["368",{"2":{"48":3}}],["361536",{"2":{"77":1}}],["361",{"2":{"48":3}}],["361921",{"2":{"29":1,"31":2}}],["362",{"2":{"47":1}}],["363",{"2":{"47":2}}],["365",{"2":{"47":2}}],["366",{"2":{"47":3}}],["364097",{"2":{"79":1,"80":2}}],["364079",{"2":{"49":1}}],["364844",{"2":{"62":2,"64":2,"66":6}}],["364",{"2":{"46":18,"47":3}}],["36",{"2":{"15":1}}],["360032",{"2":{"77":1}}],["360",{"2":{"4":2,"48":1}}],["34922817761541347",{"2":{"85":1}}],["3463451596221927",{"2":{"84":1}}],["3475368849412708",{"2":{"84":1}}],["347379",{"2":{"28":1}}],["34882573131206984",{"2":{"84":1}}],["348826",{"2":{"83":1}}],["341133",{"2":{"79":1}}],["341785",{"2":{"77":2}}],["344",{"2":{"48":1}}],["342499",{"2":{"77":1}}],["342437",{"2":{"28":1}}],["342887",{"2":{"30":1}}],["342919",{"2":{"30":1}}],["345667",{"2":{"83":1}}],["34589",{"2":{"77":1}}],["345",{"2":{"48":1}}],["345046",{"2":{"30":2}}],["345501",{"2":{"16":1}}],["34",{"2":{"15":1}}],["333095",{"2":{"77":1}}],["331422",{"2":{"77":1}}],["337",{"2":{"48":1}}],["337576",{"2":{"29":1,"31":2}}],["336376",{"2":{"79":1}}],["336",{"2":{"48":1}}],["336768",{"2":{"47":1}}],["338669",{"2":{"30":1}}],["334152",{"2":{"19":1,"21":1}}],["33",{"2":{"15":1,"47":1,"48":2}}],["315302",{"2":{"80":1}}],["314906",{"2":{"76":1}}],["317813",{"2":{"62":2,"64":2,"66":6}}],["313",{"2":{"48":1}}],["313185",{"2":{"30":2}}],["312",{"2":{"48":1}}],["312976",{"2":{"47":1}}],["310753",{"2":{"30":1}}],["316833",{"2":{"30":3}}],["311448",{"2":{"19":1}}],["31",{"2":{"15":1,"47":1}}],["302073",{"2":{"80":1}}],["307762",{"2":{"76":1}}],["301659",{"2":{"76":1}}],["30t22",{"2":{"49":1}}],["30t23",{"2":{"46":1,"47":2,"49":2}}],["30×17520",{"2":{"48":3}}],["3053673139967894",{"2":{"81":1}}],["305367",{"2":{"80":2}}],["305",{"2":{"48":1}}],["306932",{"2":{"28":3}}],["300304",{"2":{"77":1}}],["300",{"2":{"24":1}}],["30923",{"2":{"16":1}}],["3047",{"2":{"75":1}}],["304688",{"2":{"16":1}}],["30427",{"2":{"16":1}}],["30",{"2":{"15":1,"19":1,"20":2,"21":4,"24":9,"46":18,"47":2,"66":2,"76":1,"77":1}}],["3258728635315493",{"2":{"84":2}}],["325413",{"2":{"49":2}}],["329",{"2":{"48":1}}],["328",{"2":{"48":1,"86":1}}],["32806",{"2":{"29":1,"31":2}}],["321",{"2":{"48":1}}],["321923",{"2":{"28":1}}],["320",{"2":{"48":1}}],["322612",{"2":{"30":1}}],["32669",{"2":{"16":1}}],["32",{"2":{"13":2,"15":1,"48":2}}],["38290995355378155",{"2":{"84":1}}],["38291",{"2":{"83":1}}],["389215",{"2":{"83":1}}],["3863063388395396",{"2":{"84":1}}],["386306",{"2":{"83":1}}],["388768",{"2":{"77":1}}],["384116",{"2":{"43":1}}],["38167574879167476",{"2":{"81":1}}],["381676",{"2":{"80":2}}],["381",{"2":{"33":1}}],["385452",{"2":{"30":1}}],["385262",{"2":{"28":1}}],["38",{"2":{"13":3,"15":1}}],["350024",{"2":{"80":1}}],["350546",{"2":{"21":1}}],["359421",{"2":{"79":1}}],["358535",{"2":{"77":1}}],["353968",{"2":{"79":1}}],["353",{"2":{"48":1}}],["352",{"2":{"48":1}}],["352614",{"2":{"16":1}}],["3517350991207968",{"2":{"84":1}}],["351735",{"2":{"83":1}}],["35189",{"2":{"32":1}}],["351096",{"2":{"30":1}}],["354868",{"2":{"21":1}}],["35",{"2":{"13":1,"15":1,"19":1}}],["394448",{"2":{"79":1}}],["399",{"2":{"77":1}}],["399781",{"2":{"77":1}}],["396585",{"2":{"76":1}}],["397575",{"2":{"47":1}}],["390342",{"2":{"43":1}}],["390081",{"2":{"16":1}}],["395523",{"2":{"43":1}}],["391395",{"2":{"28":1}}],["392848",{"2":{"28":1}}],["398776",{"2":{"15":3}}],["39",{"2":{"2":2,"3":1,"4":2,"13":3,"14":1,"15":1,"21":1,"25":4,"26":1,"30":2,"31":1,"33":1,"35":3,"46":2,"47":1,"48":1,"49":2,"64":1,"65":1,"66":1,"67":6,"69":9,"75":1,"76":1,"77":1}}],["3",{"2":{"0":4,"1":3,"3":1,"4":7,"5":8,"13":9,"15":18,"16":2,"19":8,"20":1,"21":12,"22":2,"23":6,"24":11,"25":6,"27":2,"28":12,"29":2,"30":10,"32":5,"33":2,"34":2,"43":7,"46":1,"47":10,"48":23,"49":3,"61":3,"62":5,"64":4,"66":10,"74":3,"75":2,"77":1,"79":3,"80":8,"81":2,"83":1}}],["1a",{"2":{"20":1}}],["18201329198359628",{"2":{"84":1}}],["182707",{"2":{"80":1}}],["187655",{"2":{"83":1}}],["187495",{"2":{"15":2}}],["186811",{"2":{"80":1}}],["18906",{"2":{"77":1}}],["18989",{"2":{"30":1}}],["184738",{"2":{"74":9}}],["184813",{"2":{"30":1}}],["180",{"2":{"43":6}}],["18035",{"2":{"16":1}}],["188864",{"2":{"30":1}}],["183555",{"2":{"21":1}}],["183637",{"2":{"16":1}}],["18",{"2":{"15":1,"46":1,"77":5}}],["1331373610060985e",{"2":{"85":1}}],["13393263555318102",{"2":{"84":1}}],["13525245310587153",{"2":{"84":1}}],["130252",{"2":{"83":1}}],["130",{"2":{"43":6,"66":2}}],["130775",{"2":{"13":1}}],["136127",{"2":{"30":1}}],["136551",{"2":{"21":1}}],["131798",{"2":{"21":1}}],["134186",{"2":{"16":1}}],["13",{"2":{"15":1,"28":9,"75":2,"77":1}}],["17977958441149666",{"2":{"81":1}}],["17978",{"2":{"80":2}}],["179889",{"2":{"49":1}}],["171961",{"2":{"77":1}}],["17520",{"2":{"46":8,"49":1}}],["17597",{"2":{"30":1}}],["170",{"2":{"43":6}}],["178022",{"2":{"43":1}}],["178902",{"2":{"28":1}}],["177155",{"2":{"83":1}}],["177857",{"2":{"43":1}}],["177423",{"2":{"16":1}}],["176197",{"2":{"28":1}}],["17673",{"2":{"16":1}}],["17645",{"2":{"16":1}}],["17",{"2":{"13":1,"15":1,"46":1,"47":1,"48":2}}],["163103",{"2":{"79":1}}],["162516",{"2":{"79":1}}],["162919",{"2":{"16":1}}],["168554",{"2":{"77":1}}],["168617",{"2":{"77":1}}],["166822",{"2":{"77":1}}],["166186",{"2":{"77":1}}],["166221",{"2":{"77":1}}],["160",{"2":{"43":6}}],["167465",{"2":{"43":1}}],["169845",{"2":{"30":1}}],["16×16×3",{"2":{"22":1}}],["16",{"2":{"13":2,"15":1,"22":2,"46":1,"47":1,"48":4,"77":3}}],["145037",{"2":{"80":1}}],["143×23",{"2":{"77":1}}],["143478",{"2":{"77":1}}],["140",{"2":{"43":6,"66":6}}],["142055",{"2":{"79":1}}],["14203",{"2":{"15":2}}],["142406",{"2":{"77":1}}],["142957",{"2":{"30":1}}],["14",{"2":{"13":1,"15":1,"28":6,"77":2,"83":1}}],["1u",{"2":{"5":2}}],["195938",{"2":{"80":1}}],["195897",{"2":{"77":1}}],["1985699519321249",{"2":{"81":1}}],["19857",{"2":{"80":2}}],["198058",{"2":{"77":1}}],["194849",{"2":{"79":1,"80":2}}],["194465",{"2":{"28":3}}],["192192",{"2":{"79":1,"80":2}}],["192274",{"2":{"77":1}}],["192286",{"2":{"30":1}}],["193179",{"2":{"77":1}}],["193627",{"2":{"62":2,"64":2,"66":6}}],["196478",{"2":{"76":1}}],["196524",{"2":{"30":1}}],["19041",{"2":{"49":2}}],["190",{"2":{"43":7}}],["190726",{"2":{"30":1}}],["19122366809754",{"2":{"84":10}}],["191224",{"2":{"83":1}}],["191049",{"2":{"30":1}}],["191×20×30",{"2":{"23":1}}],["191×20×31",{"2":{"23":2}}],["191×20×32",{"2":{"23":1}}],["191×20×28",{"2":{"23":1}}],["199364",{"2":{"77":1}}],["1999",{"2":{"16":1}}],["1998",{"2":{"16":1}}],["19",{"2":{"5":5,"15":1,"46":1,"77":3}}],["1×3",{"2":{"74":2}}],["1×2",{"2":{"5":3}}],["1×12",{"2":{"0":1}}],["1532608102742886e",{"2":{"85":1}}],["153753",{"2":{"80":1}}],["15388",{"2":{"28":1}}],["156388",{"2":{"79":1}}],["156538",{"2":{"74":12}}],["152068",{"2":{"76":1}}],["155826",{"2":{"30":1}}],["15905863317294833",{"2":{"84":2}}],["159092",{"2":{"62":2,"64":2,"66":6}}],["15945803739833375",{"2":{"81":1}}],["159458",{"2":{"80":2}}],["159233",{"2":{"30":1}}],["159817",{"2":{"30":1}}],["15163",{"2":{"29":1,"31":2}}],["150155",{"2":{"21":1}}],["150",{"2":{"19":3,"43":6}}],["15004",{"2":{"15":2}}],["15489",{"2":{"15":2}}],["15",{"2":{"5":3,"13":2,"15":1,"28":3,"46":1}}],["11115487324489237",{"2":{"84":1}}],["111155",{"2":{"83":1}}],["111072",{"2":{"28":3}}],["114915",{"2":{"80":1}}],["11475",{"2":{"32":1}}],["11×17520",{"2":{"48":1}}],["110",{"2":{"43":7}}],["119937",{"2":{"30":2}}],["119505",{"2":{"28":3}}],["11311",{"2":{"83":1}}],["113873",{"2":{"29":1,"31":2}}],["113704",{"2":{"28":2}}],["11787",{"2":{"77":1}}],["117",{"2":{"13":3}}],["112606",{"2":{"43":1}}],["112",{"2":{"13":2}}],["11",{"2":{"0":1,"4":1,"13":4,"15":8,"21":2,"23":6,"28":15,"43":1,"47":6,"75":1,"77":3}}],["128827",{"2":{"79":1}}],["12196032004058277",{"2":{"85":1}}],["121186",{"2":{"29":1,"31":2}}],["121375",{"2":{"29":1,"31":2}}],["121525",{"2":{"28":3}}],["126976",{"2":{"28":1}}],["12435",{"2":{"32":1}}],["124594",{"2":{"28":2}}],["12404",{"2":{"15":2}}],["12×2",{"2":{"23":1}}],["12×100×25",{"2":{"15":2}}],["123",{"2":{"19":1}}],["1279",{"2":{"15":3}}],["129382",{"2":{"15":3}}],["125287",{"2":{"21":1}}],["125",{"2":{"13":2}}],["1229",{"2":{"47":1}}],["122",{"2":{"13":2}}],["120955",{"2":{"79":1}}],["120845",{"2":{"77":1}}],["1201",{"2":{"47":1}}],["120",{"2":{"13":4,"43":7,"66":2}}],["12",{"2":{"0":9,"4":1,"15":23,"19":3,"20":1,"23":10,"24":1,"28":12,"46":28,"47":15,"48":8,"49":3,"75":7,"77":5}}],["1",{"2":{"0":13,"1":8,"3":14,"4":26,"5":12,"13":12,"15":52,"16":52,"19":49,"20":3,"21":21,"22":241,"23":19,"24":16,"25":5,"27":2,"28":119,"29":1,"30":4,"31":1,"32":6,"33":11,"34":10,"43":44,"44":28,"46":73,"47":46,"48":91,"49":30,"62":9,"64":12,"65":2,"66":18,"67":1,"69":4,"74":98,"75":7,"77":51,"79":14,"80":42,"81":10,"82":7,"83":24,"84":1,"85":78,"86":1}}],["10327768192755193",{"2":{"84":2,"85":2}}],["10363647991272806",{"2":{"84":1}}],["103636",{"2":{"83":1}}],["10276733254788795",{"2":{"81":1}}],["102767",{"2":{"80":2}}],["10233",{"2":{"30":1}}],["10246",{"2":{"15":2}}],["10×6",{"2":{"82":3,"83":18,"85":12}}],["10×1",{"2":{"85":30}}],["10×10",{"2":{"79":1,"80":27}}],["10×10×26",{"2":{"79":3}}],["10×11",{"2":{"43":1}}],["10×5",{"2":{"30":1}}],["10×7×5",{"2":{"30":1}}],["108968",{"2":{"28":1}}],["108514",{"2":{"28":3}}],["10426060453432562",{"2":{"84":10}}],["104261",{"2":{"83":1}}],["104867",{"2":{"28":1}}],["10415",{"2":{"15":2}}],["10914",{"2":{"32":1}}],["109",{"2":{"13":1}}],["107233",{"2":{"79":1}}],["107427",{"2":{"49":1}}],["1076",{"2":{"16":1}}],["107",{"2":{"13":1}}],["105539",{"2":{"30":1}}],["105",{"2":{"13":1}}],["106973",{"2":{"77":1}}],["106904",{"2":{"43":1}}],["106472",{"2":{"43":1}}],["106224",{"2":{"28":1}}],["106",{"2":{"13":1}}],["106593",{"2":{"13":1}}],["101305",{"2":{"79":1}}],["101231",{"2":{"74":4}}],["101×34",{"2":{"49":2}}],["101×384",{"2":{"48":2}}],["101×8030",{"2":{"48":1}}],["101×8760",{"2":{"48":1}}],["101×2856",{"2":{"48":1}}],["101×2928",{"2":{"48":3}}],["101×240",{"2":{"48":1}}],["101×0",{"2":{"48":1}}],["101×4416",{"2":{"48":5}}],["101×4320",{"2":{"48":2}}],["101×4392",{"2":{"48":2}}],["101×4368",{"2":{"48":3}}],["101×4344",{"2":{"48":2}}],["101×1",{"2":{"49":5}}],["101×1464",{"2":{"47":1}}],["101×1440",{"2":{"47":1}}],["101×1488",{"2":{"47":2}}],["101×1368",{"2":{"47":1}}],["101×17520",{"2":{"47":1}}],["101",{"2":{"13":2}}],["10u",{"2":{"5":1}}],["100×28",{"2":{"80":1}}],["100×25×12",{"2":{"15":3}}],["10000",{"2":{"27":1,"33":2}}],["1000×2000",{"2":{"16":1}}],["1000",{"2":{"16":3,"33":2}}],["100u",{"2":{"5":2}}],["100",{"2":{"0":1,"3":1,"4":3,"15":14,"19":10,"24":8,"43":26,"44":14,"49":1,"68":1,"71":1,"75":2,"80":1}}],["10",{"2":{"0":7,"1":9,"3":6,"4":5,"5":19,"13":6,"15":8,"19":15,"20":5,"21":4,"23":2,"24":34,"28":34,"30":1,"42":9,"43":47,"44":28,"47":2,"64":2,"66":10,"67":1,"68":2,"69":5,"71":2,"75":7,"76":5,"77":14,"79":10,"80":34,"81":10,"82":7,"83":21,"84":1,"85":61}}],["2a",{"2":{"20":1}}],["2834645880044695",{"2":{"85":1}}],["286",{"2":{"77":1}}],["281077",{"2":{"30":1}}],["287739",{"2":{"30":1}}],["2845114369477759",{"2":{"85":1}}],["284399",{"2":{"30":1}}],["28405",{"2":{"16":1}}],["2855663183499576",{"2":{"84":1}}],["285205",{"2":{"30":1}}],["285965",{"2":{"16":1}}],["280686",{"2":{"28":1}}],["289335",{"2":{"28":3}}],["28",{"2":{"15":1,"47":1,"77":2,"85":4}}],["270915",{"2":{"80":1}}],["27042",{"2":{"15":2}}],["276742",{"2":{"77":1}}],["275784",{"2":{"77":1}}],["27206",{"2":{"77":1}}],["272731",{"2":{"49":1}}],["27736",{"2":{"74":5}}],["274713",{"2":{"43":1}}],["273104",{"2":{"77":1}}],["273986",{"2":{"28":1}}],["273573",{"2":{"28":2}}],["27",{"2":{"15":1}}],["226712626227074",{"2":{"84":1}}],["226064",{"2":{"74":8}}],["22237128922242078",{"2":{"81":1}}],["222371",{"2":{"80":2}}],["222681",{"2":{"28":1}}],["221908",{"2":{"77":1}}],["221313",{"2":{"77":1}}],["22401",{"2":{"77":1}}],["224375",{"2":{"16":1}}],["227082",{"2":{"80":1}}],["227865",{"2":{"77":2}}],["227455",{"2":{"28":1}}],["229792",{"2":{"77":1}}],["229418",{"2":{"76":1}}],["228081",{"2":{"77":1}}],["228248",{"2":{"76":1}}],["228294",{"2":{"30":1}}],["2237e",{"2":{"47":1}}],["2236016853688918",{"2":{"28":1}}],["223602",{"2":{"28":2}}],["22",{"2":{"15":1,"21":2,"46":1,"47":2,"80":1}}],["241791",{"2":{"77":1}}],["2415",{"2":{"47":1}}],["2423",{"2":{"47":1}}],["24247",{"2":{"15":2}}],["24303682025729376",{"2":{"85":1}}],["243035",{"2":{"30":1}}],["243842",{"2":{"49":2}}],["243368",{"2":{"77":1}}],["2433",{"2":{"47":1}}],["2436",{"2":{"47":1}}],["2454503676673656",{"2":{"85":1}}],["245499",{"2":{"43":1}}],["24524306337289326",{"2":{"81":1}}],["245243",{"2":{"80":2}}],["245",{"2":{"74":2}}],["24575",{"2":{"16":1}}],["247032",{"2":{"62":2,"64":2,"66":6}}],["247755",{"2":{"30":1}}],["247198",{"2":{"28":1}}],["249616",{"2":{"28":2}}],["24",{"2":{"15":4,"23":1,"46":1,"47":2,"48":2}}],["269905",{"2":{"83":1}}],["26917",{"2":{"16":1}}],["2601",{"2":{"81":1}}],["2600×5",{"2":{"80":1}}],["2600×4",{"2":{"80":2}}],["2600",{"2":{"80":3}}],["266342",{"2":{"80":1}}],["2641242011907946",{"2":{"84":1}}],["264001",{"2":{"77":1}}],["264242",{"2":{"28":1}}],["26×11",{"2":{"77":1}}],["263531",{"2":{"77":1}}],["268379",{"2":{"30":1}}],["261741",{"2":{"28":1}}],["26",{"2":{"13":2,"15":1}}],["290409",{"2":{"80":1}}],["294486",{"2":{"79":1}}],["296393",{"2":{"77":1}}],["29205",{"2":{"77":1}}],["292431",{"2":{"43":1}}],["298728",{"2":{"62":2,"64":2,"66":6}}],["298383",{"2":{"16":1}}],["299692",{"2":{"47":1}}],["299799",{"2":{"28":1}}],["29325",{"2":{"32":1}}],["295346",{"2":{"30":1}}],["297023",{"2":{"21":1}}],["29",{"2":{"13":2,"15":1,"47":2,"77":2,"85":2}}],["214157",{"2":{"83":1}}],["210664",{"2":{"79":1}}],["21035e",{"2":{"47":1}}],["215448",{"2":{"77":1}}],["215049",{"2":{"16":1}}],["21921",{"2":{"76":1}}],["21149",{"2":{"29":1,"31":2}}],["217733",{"2":{"28":3}}],["218579",{"2":{"21":1}}],["21",{"2":{"5":4,"13":1,"15":1,"21":2,"33":1,"46":1,"47":1,"75":1}}],["2504949184379115",{"2":{"84":2}}],["256817",{"2":{"80":1}}],["2599",{"2":{"80":3}}],["2598",{"2":{"80":3}}],["259847",{"2":{"79":1}}],["2597",{"2":{"80":3}}],["2596",{"2":{"80":3}}],["2595",{"2":{"80":3}}],["2594",{"2":{"80":3}}],["2585",{"2":{"80":3}}],["258576",{"2":{"30":1}}],["258764",{"2":{"77":1}}],["25825",{"2":{"48":4}}],["254627",{"2":{"30":1}}],["254555",{"2":{"28":2}}],["253984",{"2":{"29":1,"31":2}}],["253849",{"2":{"19":2,"21":1}}],["25",{"2":{"5":2,"15":11,"33":1,"48":2,"74":2}}],["23019965552513033",{"2":{"84":1}}],["233997",{"2":{"80":1}}],["234767",{"2":{"80":1}}],["236866",{"2":{"80":1}}],["231483",{"2":{"77":1}}],["235356",{"2":{"77":1}}],["239921",{"2":{"74":3}}],["2396",{"2":{"47":1}}],["23788",{"2":{"16":1}}],["23",{"2":{"5":1,"13":2,"15":4,"46":2,"47":2}}],["204084",{"2":{"83":1}}],["20258969376355607",{"2":{"84":1}}],["20259",{"2":{"83":1}}],["2021",{"2":{"0":25}}],["20636222545147498",{"2":{"81":1}}],["206362",{"2":{"80":2}}],["206406",{"2":{"32":1}}],["203451",{"2":{"83":1}}],["203",{"2":{"77":2}}],["201",{"2":{"74":1}}],["201362",{"2":{"29":1,"31":2}}],["207482",{"2":{"49":2}}],["20779",{"2":{"16":1}}],["208271",{"2":{"62":2,"64":2,"66":6}}],["208542",{"2":{"28":1}}],["208384",{"2":{"28":1}}],["2005",{"2":{"75":1}}],["2003",{"2":{"23":1}}],["2001",{"2":{"19":4,"46":28,"47":17,"49":3}}],["2000",{"2":{"15":84,"16":3,"23":1,"46":32,"47":21,"49":16,"75":18}}],["200",{"2":{"5":1,"19":9,"43":26,"44":14}}],["20",{"2":{"4":4,"5":18,"15":1,"19":3,"23":2,"24":12,"46":1,"66":2,"76":1,"77":8,"84":1}}],["2×3",{"2":{"74":3}}],["2×3×2",{"2":{"1":1,"19":1}}],["2×2",{"2":{"21":2,"74":1}}],["2×10×3",{"2":{"13":2}}],["2×4",{"2":{"5":1,"19":4}}],["2×4×2",{"2":{"3":1}}],["2",{"2":{"0":10,"1":4,"3":3,"4":3,"5":14,"8":3,"13":6,"15":25,"16":5,"19":26,"20":1,"21":10,"23":9,"24":8,"25":4,"27":2,"28":24,"29":1,"30":8,"31":2,"32":6,"33":3,"34":2,"43":8,"46":2,"47":20,"48":24,"49":6,"61":2,"62":4,"64":6,"65":3,"66":11,"69":2,"74":62,"75":2,"76":1,"77":21,"79":2,"80":8,"81":2,"83":2,"84":2,"85":8}}],["==",{"2":{"24":1,"30":1,"49":1}}],["=>",{"2":{"1":10,"2":10,"3":15,"4":22,"11":6,"19":29,"23":4,"24":29,"26":2,"47":7,"48":18,"49":2,"62":1,"64":6,"66":7,"69":2,"74":1,"80":1}}],["=",{"2":{"0":15,"1":4,"3":4,"4":10,"5":11,"13":7,"15":5,"16":3,"19":8,"20":9,"21":4,"22":1,"23":7,"24":13,"25":2,"27":1,"28":3,"29":1,"30":2,"32":1,"33":1,"43":7,"46":3,"47":2,"48":1,"49":2,"61":3,"62":1,"64":3,"65":8,"68":1,"69":10,"71":1,"74":2,"75":7,"76":1,"77":3,"79":4,"82":2,"83":4,"84":84,"85":37,"86":8}}],["features",{"2":{"69":1}}],["few",{"2":{"64":2}}],["feb",{"2":{"48":6,"75":1}}],["fact",{"2":{"82":1}}],["faceted",{"2":{"69":1}}],["facing",{"2":{"35":1}}],["facilitate",{"2":{"11":2,"75":1}}],["favours",{"2":{"68":1}}],["favour",{"2":{"24":1}}],["fails",{"2":{"15":1}}],["fail",{"2":{"14":1}}],["fallback",{"2":{"11":1}}],["falls",{"2":{"5":2,"74":1}}],["fall",{"2":{"5":2}}],["falses",{"2":{"61":1}}],["false",{"2":{"1":1,"3":5,"11":1,"14":1,"19":1,"23":2,"24":1,"44":28}}],["far",{"2":{"4":1}}],["fast",{"2":{"4":1,"75":1,"86":1}}],["fri",{"2":{"75":2}}],["friendly",{"2":{"17":1}}],["frequency",{"2":{"33":2}}],["freely",{"2":{"21":1}}],["freeunits",{"2":{"5":1}}],["free",{"2":{"3":1,"30":1}}],["fraction",{"2":{"23":1}}],["from",{"2":{"0":3,"1":1,"2":1,"3":3,"4":10,"5":3,"8":1,"15":1,"19":4,"20":3,"21":1,"22":1,"23":6,"24":1,"25":5,"27":13,"30":1,"34":1,"36":1,"37":1,"38":1,"41":1,"42":10,"43":7,"51":1,"64":1,"74":1,"75":2,"76":1,"77":2,"80":1,"86":1}}],["further",{"2":{"40":1,"48":1}}],["future",{"2":{"4":1,"5":1,"24":1,"27":1,"73":1}}],["full",{"2":{"3":1,"4":3}}],["functionality",{"2":{"52":1}}],["functional",{"2":{"17":1}}],["functions",{"0":{"46":1,"85":1},"2":{"17":1,"19":1,"23":2,"32":1,"46":2,"64":1,"67":1,"68":1,"85":2}}],["function",{"2":{"3":1,"4":2,"5":2,"23":12,"24":2,"40":1,"45":2,"46":2,"47":2,"48":4,"49":1,"74":1,"75":1}}],["foo",{"2":{"64":3}}],["follow",{"2":{"46":1,"67":1}}],["following",{"2":{"12":1}}],["four",{"2":{"23":2}}],["found",{"2":{"3":1,"7":1,"24":3,"31":2,"83":1}}],["forms",{"2":{"17":1}}],["formats",{"2":{"10":1}}],["format",{"0":{"41":1},"2":{"2":2,"8":1,"11":1,"36":1,"41":2}}],["forward",{"2":{"4":1,"7":1,"19":2}}],["forwardordered",{"2":{"0":6,"3":1,"4":6,"5":8,"7":3,"13":6,"15":20,"16":2,"19":10,"21":6,"23":4,"24":10,"25":1,"28":6,"43":15,"44":14,"47":9,"48":7,"49":5,"62":1,"64":4,"66":9,"74":28,"75":3,"76":6,"77":8,"79":6,"80":2,"82":2,"83":15,"84":1,"85":41}}],["for",{"2":{"0":12,"1":3,"2":2,"3":7,"4":40,"5":19,"7":2,"8":3,"10":1,"11":4,"14":1,"15":1,"17":1,"19":18,"20":10,"21":5,"22":3,"23":12,"24":8,"25":4,"26":3,"27":5,"28":5,"29":1,"30":1,"34":1,"39":1,"40":5,"42":6,"43":3,"45":1,"48":4,"51":3,"53":1,"54":1,"56":1,"57":2,"59":1,"61":1,"68":1,"69":1,"73":1,"74":1,"75":1,"76":6,"78":2,"80":3,"82":2,"83":1,"84":2}}],["flexible",{"2":{"40":1}}],["float32",{"2":{"16":4}}],["float64",{"2":{"0":3,"1":1,"3":1,"4":1,"5":1,"13":1,"15":7,"16":2,"19":9,"21":7,"22":1,"23":3,"24":13,"25":2,"28":12,"29":2,"30":4,"31":2,"32":2,"33":1,"43":18,"44":14,"47":9,"48":18,"49":5,"62":4,"64":4,"66":11,"74":30,"75":1,"76":1,"77":12,"79":3,"80":36,"82":6,"83":39,"84":9,"85":141}}],["flags",{"2":{"3":1}}],["final",{"2":{"48":1}}],["find",{"2":{"75":1}}],["findfirst",{"2":{"7":1}}],["finds",{"2":{"7":1}}],["fix",{"2":{"24":1}}],["fixed",{"2":{"8":1}}],["field",{"2":{"11":1,"19":1,"24":5,"40":1,"66":1}}],["fields",{"2":{"2":1,"3":1,"4":1,"6":1,"17":2,"24":5,"27":1,"40":3,"41":1}}],["firstindex",{"2":{"32":1}}],["first",{"2":{"3":3,"12":1,"13":1,"20":8,"25":1,"31":1,"43":2,"46":1,"48":1,"74":2}}],["filter",{"2":{"43":1,"44":1}}],["filters",{"2":{"5":1,"74":1}}],["fill",{"2":{"19":5,"24":2,"28":4,"41":1,"75":1}}],["filled",{"2":{"2":1,"10":1}}],["file",{"2":{"0":1,"11":2,"51":1}}],["f",{"2":{"1":5,"3":10,"4":2,"5":1,"13":1,"19":5,"21":3,"23":11,"24":11,"71":1,"74":1,"80":1}}],["ggplot2",{"2":{"69":1}}],["gc",{"2":{"33":6}}],["global",{"0":{"25":1},"1":{"26":1,"27":1},"2":{"25":2}}],["globally",{"2":{"14":1}}],["graphics",{"2":{"69":2}}],["grammar",{"2":{"69":1}}],["gribdatasets",{"2":{"35":1}}],["grid",{"2":{"4":1}}],["gridded",{"2":{"4":1}}],["groupmeans",{"2":{"23":2}}],["grouped",{"2":{"23":1,"49":1}}],["groups",{"2":{"23":12,"47":2,"48":4}}],["groupings",{"2":{"46":1}}],["groupingfunction",{"2":{"23":2}}],["grouping",{"0":{"46":1,"47":1},"2":{"23":9,"45":4,"48":2,"49":1}}],["groupby",{"2":{"23":13,"45":1,"47":13,"48":21,"49":4}}],["group",{"0":{"23":1,"45":1},"1":{"46":1,"47":1,"48":1,"49":1},"2":{"23":9,"46":1,"47":3,"48":13,"49":2}}],["good",{"2":{"20":1}}],["goals",{"0":{"17":1},"2":{"17":1}}],["gpu",{"0":{"17":1},"2":{"16":4,"17":7,"24":2,"61":1}}],["gpus",{"0":{"16":1},"1":{"17":1},"2":{"16":1,"26":1,"57":1}}],["gis",{"2":{"51":2}}],["giving",{"2":{"5":1}}],["given",{"2":{"24":1,"78":1}}],["give",{"2":{"3":1,"4":1,"5":1,"19":1,"28":1,"83":1}}],["gives",{"2":{"0":1,"20":2,"66":1}}],["github",{"2":{"4":1,"66":1}}],["guide",{"2":{"45":1}}],["guarantee",{"2":{"11":1}}],["guaranteed",{"2":{"3":1,"19":1}}],["guessed",{"2":{"2":1,"8":2}}],["guess",{"2":{"0":1,"46":1}}],["gt",{"2":{"1":2,"3":3,"5":1,"19":2,"23":1,"24":2}}],["g",{"2":{"0":1,"3":1,"4":2,"5":1,"13":1,"19":1,"23":1,"36":1,"61":1,"65":1,"71":1,"80":1}}],["gen",{"2":{"19":2}}],["generators",{"0":{"21":1},"2":{"35":1}}],["generator",{"2":{"19":4,"25":4}}],["generates",{"2":{"23":7}}],["generate",{"2":{"3":1,"23":2,"27":1}}],["generated",{"2":{"3":1,"22":1,"40":1}}],["general",{"2":{"11":1}}],["generally",{"2":{"0":1}}],["generic",{"2":{"0":1,"4":1,"65":1}}],["geotiff",{"2":{"10":1}}],["geospatial",{"2":{"4":3,"51":1}}],["gets",{"2":{"74":4}}],["getting",{"2":{"19":1,"48":1}}],["getters",{"0":{"43":1},"1":{"44":1}}],["getter",{"2":{"4":1}}],["get",{"2":{"1":3,"2":1,"3":1,"11":3,"19":4,"22":1,"27":1,"29":1,"43":7,"75":1,"84":1}}],["getindex",{"2":{"0":1,"3":2,"20":3,"21":1,"27":2,"31":1,"42":2}}],["p",{"2":{"80":1}}],["python",{"2":{"35":1}}],["permafrost",{"2":{"56":1}}],["permutation",{"2":{"85":1}}],["permuting",{"2":{"24":2}}],["permuteddimsarray",{"2":{"85":2}}],["permutedims",{"2":{"32":1,"85":3}}],["permuted",{"2":{"24":1}}],["permute",{"2":{"14":1,"24":1,"68":1}}],["periods",{"2":{"23":3}}],["perform",{"2":{"32":1}}],["performed",{"2":{"4":1}}],["performance",{"0":{"33":1,"86":1},"2":{"4":3,"20":1,"51":1}}],["pkg",{"2":{"12":2}}],["pkg>",{"2":{"12":2}}],["put",{"2":{"11":1}}],["pixels",{"2":{"5":1}}],["powerful",{"2":{"55":1,"61":1}}],["polygon",{"2":{"51":1}}],["positions",{"0":{"10":1}}],["position",{"2":{"4":1,"9":1,"10":6}}],["possible",{"2":{"4":2,"5":1,"7":1,"16":1,"24":1,"32":1,"66":1,"67":1}}],["point",{"2":{"0":1,"4":2,"5":1,"9":1,"21":1,"75":1}}],["points",{"2":{"0":6,"4":7,"5":12,"8":2,"9":4,"13":4,"15":20,"16":2,"19":7,"21":5,"23":4,"24":9,"25":1,"28":6,"43":32,"44":28,"47":9,"48":4,"49":5,"62":2,"64":2,"66":4,"74":9,"75":1,"76":4,"77":10,"79":4,"80":2,"82":2,"83":15,"84":1,"85":49}}],["planned",{"2":{"73":1}}],["plasma",{"2":{"72":2}}],["places",{"2":{"68":2}}],["placed",{"2":{"24":1}}],["place",{"2":{"17":1,"60":1}}],["please",{"2":{"4":1}}],["plus",{"2":{"4":1}}],["plots",{"0":{"67":1,"70":1},"1":{"71":1,"72":1,"73":1},"2":{"0":1,"3":1,"11":1,"19":2,"67":2,"68":1,"69":1,"73":1}}],["plotted",{"2":{"0":1,"4":1,"7":1,"9":1,"10":1}}],["plotting",{"2":{"0":1,"69":1}}],["plot",{"2":{"0":3,"2":2,"67":2,"68":2,"69":3}}],["printing",{"2":{"75":1}}],["principles",{"2":{"46":1}}],["prior",{"2":{"24":1}}],["primarily",{"2":{"3":1}}],["primitives",{"2":{"31":2}}],["primitive",{"0":{"3":1}}],["process",{"2":{"57":1,"65":1}}],["providing",{"2":{"51":1}}],["provides",{"2":{"43":1,"45":1,"58":1,"69":1,"78":1}}],["provide",{"2":{"4":2}}],["provided",{"2":{"4":5,"5":3,"8":1,"25":2,"75":1}}],["projected",{"2":{"36":1,"51":1}}],["prod",{"2":{"32":1,"85":2}}],["probably",{"2":{"26":1,"46":1}}],["problems",{"2":{"4":1}}],["property",{"2":{"26":1}}],["properties",{"2":{"2":2,"15":1,"24":1,"41":1,"75":1,"76":2}}],["programmatically",{"2":{"19":1}}],["predicates",{"0":{"44":1},"2":{"44":1}}],["predefined",{"2":{"34":1}}],["prefereble",{"2":{"23":1}}],["preserved",{"2":{"24":1}}],["present",{"2":{"5":1,"21":1,"35":1}}],["pressed",{"2":{"12":1}}],["previously",{"2":{"24":1}}],["previous",{"2":{"3":1,"5":1}}],["precedence",{"2":{"0":1}}],["paaarnet",{"2":{"27":3,"42":3}}],["padding",{"2":{"48":1}}],["pad",{"2":{"23":5}}],["past",{"2":{"19":1}}],["pass",{"2":{"11":1,"20":1,"24":3,"27":2,"41":1,"48":1,"66":1,"69":2}}],["passing",{"2":{"3":2,"4":1,"15":1,"23":1,"24":1}}],["passed",{"2":{"0":1,"2":1,"3":5,"5":3,"17":1,"21":1,"24":6,"25":1,"27":1,"40":1,"74":2}}],["partly",{"2":{"77":1}}],["part",{"2":{"27":1,"66":1}}],["parentheses",{"2":{"24":1}}],["parent",{"2":{"14":1,"16":2,"17":1,"19":1,"24":5,"25":4,"27":13,"33":2,"41":1,"42":9,"61":5,"86":1}}],["parameters",{"2":{"3":1}}],["parameter",{"2":{"0":1,"11":1}}],["pair",{"2":{"11":1,"23":1,"24":4}}],["pairs",{"2":{"11":1,"23":1,"24":8}}],["packages",{"2":{"35":2,"36":1,"46":1,"67":1,"78":1}}],["package",{"2":{"4":1,"12":1,"13":1,"23":1,"52":1,"54":1,"55":1}}],["d=rand",{"2":{"82":1}}],["draw",{"2":{"69":3}}],["dropdims",{"2":{"32":1,"85":1}}],["dropped",{"2":{"27":2,"42":2}}],["drop=true",{"2":{"25":3}}],["dynamicgrids",{"0":{"57":1},"2":{"17":1,"57":2}}],["dd",{"2":{"5":3,"24":3,"34":1,"39":2,"46":1,"65":2,"66":1,"68":1,"78":1}}],["da4",{"2":{"33":1}}],["da5",{"2":{"32":2}}],["das",{"2":{"27":1}}],["daily",{"2":{"23":1}}],["dayofyear",{"2":{"46":2,"48":3}}],["dayofweek",{"2":{"46":1}}],["day",{"2":{"23":3,"46":2,"48":4}}],["days",{"2":{"4":1,"48":1}}],["da3",{"2":{"20":2}}],["da2",{"2":{"20":2,"24":7,"30":5}}],["da1",{"2":{"20":2,"24":7,"29":2,"30":1,"31":2}}],["da",{"2":{"4":2,"24":10,"28":2,"30":2}}],["dataframe",{"0":{"80":1},"2":{"80":8}}],["dataframes",{"0":{"78":1},"1":{"79":1,"80":1,"81":1},"2":{"5":1,"78":1,"79":1}}],["data2",{"2":{"79":1,"80":2,"81":1}}],["data2=rand",{"2":{"79":1}}],["data1",{"2":{"79":2,"80":2,"81":1}}],["dataset",{"2":{"36":1,"54":1}}],["datasets",{"0":{"20":1},"2":{"4":1,"36":1,"52":1}}],["dataapi",{"2":{"23":1}}],["data=autovalues",{"2":{"4":1}}],["data",{"2":{"0":2,"1":1,"2":1,"4":17,"11":1,"13":2,"15":8,"16":2,"17":2,"19":5,"20":6,"22":1,"23":2,"24":6,"25":2,"27":3,"34":1,"35":1,"40":2,"48":1,"51":2,"52":1,"53":1,"56":1,"57":1,"59":1,"61":1,"64":3,"69":11,"78":1,"79":2,"80":2,"81":1}}],["date",{"2":{"4":2,"75":1}}],["datetime",{"2":{"0":13,"5":1,"15":42,"19":4,"23":2,"46":5,"47":3,"49":11,"75":10,"76":1}}],["dates",{"2":{"0":3,"4":2,"15":1,"19":1,"23":1,"46":1,"75":1,"79":1}}],["d",{"0":{"14":1},"1":{"15":1},"2":{"3":2,"4":2,"13":1,"14":2,"15":6,"21":1,"24":12,"64":2,"69":1,"71":1,"76":3,"80":2,"82":1,"83":6,"84":23,"85":28,"86":2}}],["dsl",{"2":{"55":1}}],["dst",{"2":{"25":6}}],["ds",{"2":{"3":1,"4":2,"24":2,"25":2,"69":2}}],["docs",{"2":{"42":2}}],["documented",{"2":{"25":1}}],["doing",{"2":{"21":1,"25":1,"48":1,"64":1,"77":1}}],["dot",{"2":{"14":1}}],["dotview",{"2":{"3":1}}],["do",{"2":{"4":2,"11":1,"12":1,"23":1,"24":3,"32":1,"48":1,"62":1,"66":2}}],["doesn",{"2":{"21":1,"30":1,"31":1,"65":1}}],["does",{"2":{"4":1,"14":1,"24":1,"40":1,"46":1,"48":1,"78":1,"83":1,"85":1}}],["done",{"2":{"19":1,"24":1,"78":1}}],["don",{"2":{"2":1,"4":1,"25":4,"30":1,"64":1,"66":1,"69":1}}],["direct",{"2":{"35":1}}],["directly",{"2":{"21":1,"33":1,"35":1,"48":1,"69":3,"81":1,"86":1}}],["divide",{"2":{"23":1}}],["di",{"2":{"21":2}}],["difficult",{"2":{"17":1}}],["different",{"0":{"72":1},"2":{"3":1,"5":3,"10":1,"11":1,"24":1,"43":1}}],["dicts",{"2":{"60":1}}],["dictionaries",{"2":{"17":1}}],["dict",{"2":{"4":4,"11":3,"19":1,"23":3,"24":1,"28":6,"47":7,"48":11,"49":2,"64":2}}],["dictates",{"2":{"2":1}}],["discrete",{"2":{"48":1}}],["discarded",{"2":{"5":1,"19":1}}],["disk",{"2":{"35":1}}],["diskarrays",{"0":{"35":1},"2":{"23":1,"35":3,"52":1}}],["distinguishing",{"2":{"43":1}}],["distinguish",{"2":{"19":1}}],["distance",{"2":{"4":2,"5":1}}],["dispatch",{"2":{"0":1,"11":1}}],["dimmatrix",{"2":{"68":1}}],["dimvector",{"2":{"25":1,"69":1}}],["dimgroupbyarray",{"2":{"23":6,"47":1,"48":8,"49":1}}],["dimname",{"2":{"23":1}}],["dimnum",{"2":{"1":4,"19":4,"39":1}}],["dimcolumn",{"2":{"22":1}}],["dimtype",{"2":{"23":1}}],["dimtables",{"2":{"69":1}}],["dimtable",{"2":{"22":4,"80":4}}],["dimtuple",{"2":{"20":1,"43":4}}],["dimpoints",{"2":{"21":4}}],["dimindices",{"2":{"21":9,"30":2,"38":1,"77":1}}],["dimunitrange",{"2":{"15":2}}],["dimz",{"2":{"5":2,"20":4}}],["dimselector",{"0":{"77":1}}],["dimselectors",{"2":{"21":7,"77":3}}],["dimsmatch",{"2":{"3":2}}],["dimstoreduce",{"2":{"3":1}}],["dimstackinterface",{"2":{"27":2,"42":6}}],["dimstacks",{"0":{"82":1},"1":{"83":1,"84":1,"85":1,"86":1},"2":{"14":1,"69":1}}],["dimstack",{"2":{"2":1,"14":1,"20":19,"24":1,"25":2,"42":7,"43":1,"61":2,"69":2,"78":1,"79":2,"80":2,"81":2,"82":3,"83":11,"84":2,"85":25}}],["dims2indices",{"2":{"2":1}}],["dims=",{"2":{"15":4,"24":3,"25":1}}],["dims=ti",{"2":{"0":1,"20":2,"23":1,"25":1,"32":1}}],["dims=z",{"2":{"0":1}}],["dims=y",{"2":{"0":1,"24":1,"85":11}}],["dims=x",{"2":{"0":1}}],["dims",{"0":{"14":1,"32":1,"37":1,"39":1},"1":{"15":1,"38":1,"39":1},"2":{"0":4,"1":11,"2":8,"3":13,"4":18,"5":6,"11":2,"13":3,"14":3,"15":10,"16":1,"19":43,"20":3,"21":14,"22":1,"23":9,"24":33,"25":13,"27":26,"28":14,"29":3,"30":5,"31":4,"32":4,"33":1,"34":1,"36":1,"37":1,"38":1,"39":5,"40":2,"41":2,"42":17,"43":24,"44":29,"47":9,"48":19,"49":6,"61":5,"62":2,"64":4,"66":6,"74":15,"75":1,"76":1,"77":5,"79":4,"80":27,"82":5,"83":30,"84":5,"85":114}}],["dimarrays",{"0":{"28":1},"1":{"29":1,"30":1,"31":1,"32":1,"33":1},"2":{"28":1}}],["dimarrayinterface",{"2":{"27":2,"42":6}}],["dimarray",{"0":{"29":1},"2":{"0":4,"1":5,"2":1,"3":2,"4":6,"5":11,"13":7,"14":2,"15":11,"16":2,"17":1,"19":40,"20":11,"21":6,"22":2,"23":10,"24":10,"25":1,"28":22,"29":4,"30":4,"31":2,"32":2,"33":1,"35":1,"42":4,"43":7,"47":13,"48":39,"49":8,"56":1,"59":1,"61":3,"62":2,"64":2,"66":6,"69":5,"74":16,"75":4,"76":2,"77":5,"79":1,"80":1,"82":1,"83":3}}],["dim",{"2":{"0":11,"1":2,"2":4,"3":9,"4":12,"11":2,"19":8,"22":3,"24":16,"29":1,"32":1,"34":3,"38":1,"69":1,"79":1}}],["dimensionmismatch",{"2":{"15":1,"83":1}}],["dimensionalarray",{"2":{"69":1}}],["dimensionality",{"2":{"25":1}}],["dimensional",{"0":{"14":1,"30":1},"1":{"15":1},"2":{"0":1,"3":1,"20":1,"24":1,"27":2,"38":1,"45":1,"69":1,"84":1}}],["dimensionaldata",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"0":22,"1":9,"2":5,"3":20,"4":35,"5":21,"6":1,"7":6,"8":5,"9":3,"10":6,"11":4,"12":3,"13":1,"15":3,"16":2,"17":3,"19":20,"20":3,"21":3,"22":4,"23":10,"24":20,"25":5,"26":3,"27":8,"28":1,"31":6,"34":3,"35":1,"36":1,"37":1,"40":1,"41":2,"42":10,"43":3,"45":1,"46":2,"51":2,"52":1,"53":1,"60":1,"61":1,"62":1,"64":1,"68":1,"69":1,"74":2,"75":1,"78":1,"79":1,"82":1}}],["dimension",{"0":{"15":1,"21":1,"29":1,"38":1,"49":1},"2":{"0":21,"1":27,"2":11,"3":32,"4":24,"5":3,"10":2,"11":2,"14":2,"15":2,"19":75,"20":3,"21":9,"22":7,"23":2,"24":33,"25":9,"27":4,"28":2,"30":3,"31":1,"32":3,"34":2,"38":1,"39":5,"40":1,"41":2,"42":2,"43":6,"45":1,"47":1,"49":2,"62":1,"63":1,"64":4,"66":1,"74":2,"75":2,"76":1,"78":2,"80":2,"82":1,"84":1,"85":1}}],["dimensions",{"0":{"0":1,"34":1},"1":{"1":1,"2":1,"3":1},"2":{"0":30,"1":13,"2":7,"3":32,"4":39,"5":11,"6":1,"7":6,"8":5,"9":3,"10":8,"11":5,"14":2,"15":3,"19":27,"20":3,"21":5,"22":1,"23":3,"24":24,"25":9,"27":6,"28":1,"30":4,"31":4,"33":1,"34":8,"37":2,"38":1,"42":4,"43":3,"44":2,"49":2,"63":2,"64":1,"68":1,"74":1,"76":1,"78":2,"79":1,"80":2,"82":1,"83":1,"84":1}}],["during",{"2":{"0":1,"35":1,"57":1}}],["declarative",{"2":{"62":1,"69":1}}],["dec",{"2":{"48":4,"75":1}}],["december",{"2":{"23":2}}],["demo",{"2":{"46":1}}],["developers",{"2":{"40":1,"52":1}}],["development",{"2":{"35":1,"67":1}}],["devicebuffer",{"2":{"16":1}}],["dest",{"2":{"24":4}}],["descriptive",{"2":{"23":1}}],["designed",{"2":{"35":1,"36":1}}],["design",{"2":{"20":2}}],["deprecated",{"2":{"24":1,"67":1}}],["depreciated",{"2":{"5":1}}],["dependencies",{"2":{"51":1}}],["dependency",{"2":{"35":1}}],["dependent",{"2":{"0":1}}],["dependentdim",{"2":{"0":4}}],["depending",{"2":{"1":1,"19":1}}],["detect",{"2":{"4":2,"19":4,"41":1}}],["detected",{"2":{"4":4,"41":1,"75":2,"76":5}}],["determine",{"2":{"7":1,"75":1}}],["determined",{"2":{"4":1}}],["determines",{"2":{"3":1,"21":1}}],["details",{"2":{"0":1,"27":2,"34":1}}],["definition",{"2":{"27":2,"42":2}}],["defining",{"2":{"4":2}}],["defines",{"2":{"4":1,"8":1,"21":1,"24":1,"27":2,"42":3,"43":1,"55":1}}],["defined",{"2":{"3":1,"4":1,"20":1,"24":3,"34":1,"40":1,"47":1}}],["define",{"2":{"0":1,"3":1,"4":1,"9":1,"15":1,"23":1,"28":1,"43":1,"47":1,"76":1,"77":1,"79":1}}],["default",{"0":{"71":1},"2":{"0":1,"1":3,"3":11,"4":7,"10":1,"19":4,"21":2,"23":5,"26":1,"67":1,"68":1}}],["w",{"2":{"80":1}}],["would",{"2":{"14":1,"21":2,"43":1,"48":1}}],["works",{"2":{"4":1,"14":2,"24":1,"31":2,"48":2,"57":1,"83":2}}],["work",{"2":{"2":1,"4":4,"5":1,"10":2,"11":1,"14":2,"17":3,"19":1,"20":1,"23":1,"24":1,"25":1,"31":3,"34":1,"40":2,"46":1,"52":1,"65":1,"67":1,"68":2,"75":1,"85":1}}],["working",{"2":{"1":1,"20":2}}],["word",{"2":{"0":1}}],["want",{"2":{"12":1,"25":4,"27":2,"43":1,"48":2,"62":1,"66":2}}],["way",{"2":{"4":1,"15":1,"24":1,"40":1,"64":1,"66":1}}],["warning",{"2":{"3":1,"31":2,"64":1}}],["warn",{"2":{"3":1}}],["whose",{"2":{"24":3}}],["whole",{"2":{"5":2}}],["what",{"2":{"24":1,"43":2,"46":1,"48":1,"62":1,"64":1,"66":1}}],["whatever",{"2":{"21":1,"43":1}}],["which",{"2":{"3":1,"4":1,"14":1,"23":1,"24":4,"25":1,"32":1,"43":1,"51":1,"72":1,"74":3,"77":1}}],["whichever",{"2":{"3":1}}],["while",{"2":{"3":1,"11":1,"20":2,"21":1}}],["wherever",{"2":{"25":1,"48":1}}],["where",{"2":{"3":4,"4":9,"5":7,"7":1,"8":2,"9":1,"10":2,"11":1,"19":1,"20":1,"24":4,"32":1,"43":1,"48":1,"61":1,"64":1,"74":4,"76":1}}],["whether",{"2":{"1":1,"19":1}}],["whenever",{"2":{"17":1}}],["when",{"2":{"0":5,"2":1,"4":6,"5":2,"11":1,"17":1,"20":2,"21":1,"23":3,"24":1,"25":3,"26":1,"30":1,"31":1,"38":1,"41":1,"48":1,"75":1,"76":1,"83":1}}],["write",{"2":{"81":2}}],["written",{"2":{"24":1}}],["writing",{"2":{"3":1,"24":1}}],["wraps",{"2":{"38":1}}],["wrapping",{"2":{"3":1,"4":1,"43":5,"52":1,"75":4}}],["wrapper",{"2":{"4":4,"11":1,"23":1,"24":2,"25":4,"26":2,"34":1,"48":1,"64":1}}],["wrappers",{"2":{"0":2,"4":1,"5":1,"11":2,"26":1,"28":2,"30":1,"61":1}}],["wrapped",{"2":{"3":2,"23":1,"24":1,"34":1,"65":1}}],["wrap",{"2":{"0":2,"23":3,"34":3,"75":1}}],["weds",{"2":{"75":2}}],["were",{"2":{"31":2}}],["well",{"2":{"22":1,"30":1,"35":1,"74":1}}],["weeks",{"2":{"4":1}}],["week",{"2":{"4":1}}],["we",{"2":{"0":1,"4":3,"5":1,"14":3,"15":1,"20":1,"21":2,"23":2,"24":2,"25":8,"28":2,"29":1,"30":2,"34":1,"42":2,"43":1,"46":1,"47":3,"48":13,"49":2,"52":1,"62":2,"69":2,"74":3,"75":6,"76":1,"77":4,"80":2,"81":1,"83":2,"84":3}}],["winter",{"2":{"48":1}}],["wish",{"2":{"5":1,"69":1}}],["wider",{"2":{"41":1}}],["wide",{"2":{"4":1,"51":1,"78":1}}],["widely",{"2":{"1":1}}],["within",{"2":{"5":1,"21":1,"74":3}}],["without",{"2":{"3":1,"4":2,"11":1,"20":1,"24":2,"30":1,"40":1,"61":1,"65":1,"75":1,"84":1}}],["with",{"0":{"14":1,"29":1,"73":1},"1":{"15":1},"2":{"0":3,"1":5,"2":2,"3":10,"4":13,"5":10,"7":1,"8":1,"10":8,"11":1,"12":1,"14":5,"15":2,"16":1,"17":1,"19":12,"20":8,"21":7,"22":1,"23":7,"24":14,"25":6,"27":3,"28":1,"29":1,"30":3,"31":2,"32":1,"33":3,"34":5,"38":1,"40":2,"42":2,"43":1,"44":1,"45":3,"47":8,"48":11,"49":3,"52":2,"53":1,"61":2,"63":1,"64":5,"65":1,"67":2,"68":1,"69":5,"74":10,"75":1,"76":2,"77":3,"78":1,"80":1,"83":5,"84":2,"85":1,"86":1}}],["will",{"2":{"0":7,"1":1,"2":2,"3":7,"4":13,"5":9,"7":2,"8":2,"10":3,"11":2,"19":10,"20":7,"22":1,"23":5,"24":15,"25":1,"30":2,"39":2,"40":2,"43":1,"46":2,"64":1,"65":1,"67":1,"68":3,"74":1,"75":2,"80":2,"85":1}}],["btime",{"2":{"86":2}}],["blue",{"2":{"72":1,"73":1}}],["block",{"2":{"27":1}}],["blocks",{"2":{"27":1,"48":2}}],["blockwidth",{"2":{"27":4}}],["b=rand",{"2":{"82":1}}],["b=falses",{"2":{"61":1}}],["b=1",{"2":{"13":1,"29":1}}],["built",{"2":{"69":1}}],["building",{"2":{"35":1}}],["but",{"2":{"0":1,"1":2,"3":9,"4":4,"5":1,"8":1,"11":1,"15":1,"16":1,"19":2,"20":3,"21":3,"23":6,"24":1,"27":2,"30":2,"31":1,"35":2,"36":1,"43":1,"46":1,"48":1,"49":1,"51":1,"55":1,"62":1,"63":1,"64":2,"65":1,"66":1,"68":1,"74":1,"75":2,"76":1,"77":1}}],["bin",{"2":{"48":4}}],["binning",{"0":{"48":1},"2":{"23":2}}],["bins",{"2":{"23":15,"45":1,"48":5}}],["bitmatrix",{"2":{"61":2}}],["bit",{"2":{"13":1}}],["bar",{"2":{"64":3}}],["bayesian",{"2":{"54":1}}],["band",{"2":{"22":2}}],["backend",{"2":{"17":1}}],["back",{"2":{"5":1,"11":1}}],["basic",{"2":{"31":1}}],["basics",{"0":{"13":1}}],["basically",{"2":{"3":1,"23":1,"64":1}}],["base",{"2":{"3":2,"5":1,"14":2,"15":2,"17":1,"19":10,"20":3,"23":1,"24":1,"25":7,"27":4,"31":1,"42":2,"75":2,"85":1}}],["basetypeof",{"2":{"3":5}}],["basedims",{"2":{"3":2}}],["based",{"2":{"2":1,"27":1,"35":1,"64":1}}],["brackets",{"2":{"64":1}}],["break",{"2":{"48":1}}],["breaking",{"2":{"4":1,"27":1,"65":1}}],["broken",{"2":{"66":1}}],["brought",{"2":{"34":1}}],["brodcasting",{"2":{"25":2}}],["broadcast",{"0":{"14":1},"1":{"15":1},"2":{"14":6,"15":7,"16":1,"23":3,"24":11,"25":4,"35":1,"85":2}}],["broadcasts",{"0":{"14":1},"1":{"15":1},"2":{"14":2,"17":1,"25":5,"85":1}}],["broadcasting",{"2":{"3":1,"14":2,"24":2,"25":5,"47":1}}],["box",{"2":{"27":1,"67":1}}],["bonus",{"2":{"14":1}}],["boundaries",{"2":{"5":1}}],["bounds",{"2":{"4":9,"8":6,"43":8,"75":1,"76":2}}],["both",{"2":{"3":1,"4":1,"35":2,"52":1,"63":1,"83":1}}],["bool",{"2":{"1":3,"3":5,"4":2,"5":1,"19":10,"23":1,"25":2,"61":7,"74":2}}],["bytes",{"2":{"33":2,"86":2}}],["by",{"0":{"23":1,"45":1,"49":1},"1":{"46":1,"47":1,"48":1,"49":1},"2":{"0":1,"1":2,"3":13,"4":8,"5":4,"9":1,"15":2,"19":2,"21":1,"23":8,"24":2,"29":1,"33":2,"34":1,"35":1,"40":2,"47":2,"48":2,"49":3,"68":1,"69":2,"72":1,"74":4}}],["b",{"2":{"0":7,"3":4,"4":2,"5":11,"13":3,"15":1,"19":9,"20":3,"21":1,"24":4,"29":3,"31":2,"34":2,"49":3,"61":2,"62":2,"64":5,"65":3,"66":3,"67":1,"68":1,"71":2,"72":1,"74":27,"76":3,"77":3,"80":2,"82":1,"83":4,"84":23,"85":40,"86":2}}],["being",{"2":{"69":1}}],["best",{"2":{"66":1}}],["benchmarktools",{"2":{"33":3,"86":1}}],["benchmark",{"2":{"33":3}}],["before",{"2":{"25":9}}],["become",{"2":{"80":1}}],["becomes",{"2":{"22":2}}],["because",{"2":{"14":1,"23":2}}],["behavior",{"2":{"82":1}}],["behaviour",{"2":{"4":4,"5":1,"6":1,"20":2,"23":1,"24":1,"41":1,"67":1,"75":1}}],["behaviours",{"2":{"4":1,"52":1,"65":1}}],["behaves",{"2":{"21":2,"36":1}}],["begin+1",{"2":{"31":1}}],["beginendsteprange",{"2":{"10":2}}],["beginendrange",{"2":{"10":2}}],["begin",{"0":{"31":1},"2":{"10":4,"31":2}}],["better",{"2":{"5":1}}],["between",{"2":{"0":1,"4":5,"5":21,"10":1,"11":1,"19":1,"20":2}}],["been",{"2":{"2":1,"3":1,"20":1,"24":1}}],["be",{"2":{"0":5,"1":5,"2":4,"3":11,"4":33,"5":17,"6":1,"7":2,"8":3,"10":4,"11":3,"12":1,"14":1,"15":1,"17":4,"19":10,"20":4,"21":3,"23":8,"24":16,"25":2,"26":1,"27":3,"30":3,"31":1,"32":1,"34":3,"36":1,"38":1,"40":1,"41":1,"46":1,"48":1,"60":1,"61":2,"62":1,"64":1,"66":1,"69":1,"74":2,"75":3,"76":2,"83":1,"85":1}}],["ecosystem",{"2":{"78":1}}],["edges",{"2":{"48":1}}],["edge",{"2":{"23":1}}],["equally",{"2":{"23":1}}],["equivalent",{"2":{"20":1,"21":1,"25":2}}],["estimate",{"2":{"33":4}}],["essentially",{"2":{"21":1,"23":1}}],["especially",{"2":{"21":1,"25":1,"68":1}}],["effects",{"2":{"19":2}}],["enforce",{"2":{"82":1}}],["ensuring",{"2":{"78":1}}],["ensure",{"2":{"25":4}}],["entries",{"2":{"64":2}}],["entry",{"2":{"23":3,"47":7,"48":11,"49":2}}],["engine",{"2":{"57":1}}],["enables",{"2":{"35":1}}],["enable",{"2":{"8":1}}],["end",{"0":{"31":1},"2":{"5":4,"9":1,"10":6,"23":3,"24":1,"31":3,"43":1}}],["evaluations",{"2":{"33":2}}],["evaluated",{"2":{"5":1}}],["everything",{"2":{"36":1,"60":1,"64":1}}],["everywhere",{"2":{"34":1}}],["every",{"2":{"4":1,"5":1,"8":1,"24":2}}],["even",{"2":{"4":1,"14":2,"21":1,"31":1,"65":1,"75":1,"85":1}}],["error",{"2":{"3":2,"5":2,"15":1,"30":2,"64":1,"83":1}}],["errors",{"2":{"2":1,"3":1}}],["empty",{"2":{"3":1,"19":2,"27":2,"42":2,"76":1}}],["eltype",{"2":{"25":2,"61":2,"79":2,"80":26,"82":4,"83":22,"84":4,"85":88}}],["else",{"2":{"2":1,"23":1,"60":1,"64":1}}],["element",{"2":{"0":1,"2":1,"13":1,"15":3,"19":2,"23":2,"29":1,"30":2,"31":1,"43":2,"46":8,"47":7,"48":13,"49":1,"74":3,"75":3,"81":1,"83":1,"84":2,"85":1}}],["either",{"2":{"1":1,"2":1,"3":1,"4":2,"11":1,"19":2,"21":1,"23":4,"25":4}}],["easy",{"2":{"69":1}}],["easiest",{"2":{"40":1}}],["easier",{"2":{"26":1,"39":1}}],["easily",{"2":{"0":1,"4":1,"36":2,"64":1}}],["early",{"2":{"27":2}}],["eachindex",{"2":{"38":2}}],["eachslice",{"2":{"15":2,"25":4,"32":1,"49":1}}],["each",{"2":{"0":1,"3":2,"4":5,"5":2,"8":1,"14":1,"15":1,"20":1,"21":2,"22":1,"23":1,"24":1,"43":2,"47":1,"67":1,"69":1,"75":1,"80":3,"84":1,"86":1}}],["exception",{"2":{"25":2}}],["except",{"2":{"14":1,"17":1}}],["exact",{"2":{"4":1,"9":1,"21":2,"23":1}}],["exactly",{"2":{"4":1,"5":1,"48":1,"74":1}}],["examples",{"2":{"0":2,"24":1,"25":1,"36":2}}],["example",{"0":{"15":1,"79":1},"2":{"0":5,"1":4,"3":2,"4":5,"5":7,"15":1,"17":1,"19":12,"20":2,"21":2,"22":1,"23":2,"24":5,"25":3,"40":1,"43":1,"69":2}}],["extrema",{"2":{"32":1,"85":2}}],["extra",{"2":{"0":1,"76":1}}],["extent",{"2":{"43":9}}],["extents",{"2":{"43":2}}],["extensible",{"2":{"36":1,"40":1}}],["extension",{"2":{"14":1,"55":1}}],["extends",{"2":{"51":1,"53":1}}],["extend",{"2":{"20":1}}],["extended",{"2":{"4":1,"27":2,"36":2}}],["extending",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"4":3,"24":1,"37":1}}],["exploratory",{"2":{"54":1}}],["explicit",{"2":{"4":1,"8":1,"42":1}}],["explicitly",{"2":{"4":2,"8":1,"23":1,"24":2,"25":4}}],["expected",{"2":{"25":1}}],["expression",{"2":{"19":3,"24":1}}],["exported",{"0":{"1":1,"2":1}}],["existing",{"2":{"5":1,"24":1,"27":1,"45":1}}],["exists",{"2":{"3":1,"51":1}}],["exist",{"2":{"2":1,"60":1}}],["e",{"2":{"0":1,"3":1,"4":2,"5":2,"13":1,"19":1,"21":1,"23":1,"36":1,"49":1,"61":1,"65":1,"71":1,"72":1,"76":3,"80":1,"83":2}}],["etc",{"2":{"0":2,"3":1,"20":1,"24":2}}],["ll",{"2":{"69":2}}],["l",{"2":{"43":2,"62":2,"64":2,"66":3,"75":9,"80":1}}],["library",{"2":{"69":1}}],["lines",{"2":{"69":2}}],["line",{"2":{"67":1,"69":1}}],["linearmap",{"2":{"4":1}}],["list",{"2":{"23":1,"72":1}}],["listed",{"2":{"8":1,"44":1,"64":1}}],["little",{"2":{"5":1,"13":1}}],["lies",{"2":{"20":2}}],["lie",{"2":{"5":1}}],["likely",{"2":{"4":1,"27":2}}],["like",{"0":{"83":1,"84":1},"2":{"0":1,"3":2,"4":5,"5":2,"19":1,"20":1,"21":4,"23":2,"24":3,"26":1,"30":3,"32":1,"34":1,"38":1,"41":1,"43":2,"48":3,"51":1,"62":1,"63":1,"64":1,"66":1,"69":4,"74":7,"76":1,"77":2,"82":1,"83":1,"85":1}}],["legend",{"2":{"67":1}}],["less",{"2":{"48":1}}],["letting",{"2":{"34":1}}],["let",{"2":{"33":1,"46":2,"47":1,"48":1,"69":3}}],["lets",{"2":{"11":1,"26":1,"41":1}}],["left",{"2":{"13":3,"27":1}}],["leave",{"2":{"19":1}}],["leaves",{"2":{"3":1}}],["leans",{"2":{"16":1}}],["leap",{"2":{"4":1}}],["least",{"2":{"3":1,"27":4}}],["level",{"2":{"3":2,"69":1}}],["length=365",{"2":{"46":1}}],["lengths",{"2":{"3":1,"83":1}}],["length",{"2":{"0":1,"3":6,"4":5,"8":1,"19":4,"23":4,"25":2,"27":3,"38":1,"42":2,"78":1}}],["lazily",{"2":{"78":1}}],["lazy",{"2":{"22":1,"35":1}}],["largest",{"2":{"78":1,"85":1}}],["large",{"2":{"52":1}}],["larger",{"2":{"15":1}}],["lastindex",{"2":{"32":1}}],["last",{"2":{"23":2,"31":1,"43":1}}],["layermetadata",{"2":{"27":1,"64":1}}],["layerdims",{"2":{"27":5,"42":2,"64":1}}],["layernames=nothing",{"2":{"22":1}}],["layered",{"2":{"20":2}}],["layersfrom=",{"2":{"80":2}}],["layersfrom=nothing",{"2":{"20":1,"22":1}}],["layersfrom",{"2":{"22":1}}],["layers",{"2":{"20":9,"22":1,"24":1,"25":5,"61":2,"78":2,"79":1,"80":1,"82":4,"83":9,"84":2,"85":28,"86":2}}],["layer",{"2":{"17":2,"20":5,"25":2,"30":1,"69":1,"78":2,"80":1,"84":1,"85":1}}],["layout",{"2":{"0":1,"69":2}}],["language",{"2":{"16":1}}],["later",{"2":{"23":1}}],["latitude",{"2":{"0":1}}],["lat",{"2":{"0":1}}],["labelled",{"2":{"67":1}}],["labelling",{"2":{"19":1}}],["labels=x",{"2":{"48":2}}],["labels",{"2":{"11":1,"23":21,"68":1}}],["label",{"2":{"0":3,"2":5,"34":1}}],["lt",{"2":{"0":12,"1":2,"3":4,"5":1,"19":2,"39":3,"57":1,"58":1,"84":1}}],["lot",{"2":{"48":1,"73":1}}],["losing",{"2":{"23":1,"61":1}}],["looping",{"2":{"78":1}}],["loop",{"2":{"78":1}}],["look",{"2":{"46":1}}],["lookuparray",{"2":{"66":1}}],["lookupdim",{"2":{"24":1}}],["lookupcomponent",{"2":{"24":1}}],["lookuptrait",{"2":{"6":1,"7":1,"8":1,"9":1,"10":1,"24":1}}],["lookups",{"0":{"4":1,"75":1},"1":{"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"2":{"2":3,"3":2,"4":34,"5":11,"6":1,"7":6,"8":5,"9":3,"10":6,"11":4,"19":1,"21":2,"24":3,"25":1,"28":1,"34":2,"38":1,"43":1,"51":1,"62":1,"74":1,"75":3,"76":1,"77":1}}],["lookup",{"0":{"6":1,"25":1,"76":1},"1":{"7":1,"8":1,"9":1,"10":1,"26":1,"27":1},"2":{"0":4,"1":1,"2":13,"3":2,"4":52,"5":4,"6":2,"7":6,"9":1,"10":4,"19":9,"21":2,"23":2,"24":14,"25":5,"36":3,"38":1,"41":3,"43":18,"44":8,"48":2,"63":1,"64":1,"66":1,"74":2,"75":14,"76":4,"82":1}}],["loosely",{"2":{"6":1}}],["location",{"2":{"9":1}}],["located",{"2":{"5":1}}],["locus",{"2":{"0":1,"4":13,"5":3,"9":2,"10":5,"43":6}}],["lowerbound",{"2":{"8":1}}],["lower",{"2":{"5":1,"8":1}}],["low",{"2":{"3":1}}],["long",{"2":{"39":1,"40":1,"86":1}}],["longitudes",{"2":{"4":1}}],["longitude",{"2":{"0":1}}],["longer",{"2":{"0":1,"3":1,"4":1}}],["lon",{"2":{"0":1}}],["loading",{"2":{"0":1}}],["load",{"2":{"0":1,"4":1,"46":1,"51":1,"58":1}}],["c=rand",{"2":{"82":1}}],["csv",{"0":{"81":1},"2":{"78":1,"81":5}}],["cryogridoutput",{"2":{"56":1}}],["cryogrid",{"0":{"56":1},"2":{"56":2}}],["crs",{"2":{"51":1}}],["create",{"2":{"4":2,"10":2,"13":1,"16":1,"19":4,"23":1,"24":1,"25":2,"34":1,"46":2,"66":1,"69":1,"74":1,"75":5}}],["created",{"2":{"0":1}}],["creating",{"2":{"0":1,"28":1,"69":1}}],["climate",{"2":{"53":1}}],["climatebase",{"0":{"53":1},"2":{"53":1}}],["cloud",{"2":{"35":1}}],["closest",{"2":{"74":1}}],["close",{"2":{"27":3,"74":1}}],["closely",{"2":{"25":4,"52":1}}],["closed",{"2":{"5":3,"48":35}}],["closedinterval",{"2":{"5":1}}],["clashes",{"2":{"0":1,"5":1}}],["cycling",{"2":{"4":1}}],["cyclical",{"2":{"75":1}}],["cyclicbins",{"2":{"23":4}}],["cyclic",{"2":{"4":5,"23":1,"75":5}}],["cycle=month",{"2":{"75":1}}],["cycle=24",{"2":{"48":1}}],["cycle=12",{"2":{"48":3}}],["cycles",{"2":{"23":1,"75":1}}],["cycled",{"2":{"4":3}}],["cycle",{"2":{"4":9,"23":5}}],["cua2",{"2":{"16":2}}],["cuarray",{"2":{"16":2,"24":1,"61":1}}],["cua",{"2":{"16":2}}],["cuda",{"0":{"16":1},"1":{"17":1},"2":{"16":2,"17":1}}],["currently",{"2":{"14":1}}],["current",{"2":{"4":1,"19":1,"25":1}}],["curresponding",{"2":{"4":2}}],["customise",{"2":{"65":1}}],["custom=dd",{"2":{"24":1}}],["custom=10",{"2":{"24":1}}],["custom",{"2":{"0":4,"3":1,"17":1,"22":2,"23":1,"24":9,"36":2,"49":1}}],["center",{"2":{"5":5,"9":2,"10":4,"43":7,"66":1,"76":1}}],["central",{"2":{"0":1}}],["cellular",{"2":{"57":1}}],["cells",{"2":{"9":1,"10":1,"74":1}}],["cell",{"2":{"3":1,"5":1}}],["cheap",{"2":{"69":1}}],["checking",{"2":{"25":1}}],["checks",{"2":{"14":2,"25":4}}],["checked",{"2":{"14":1}}],["check=true",{"2":{"3":1}}],["check",{"2":{"1":2,"3":1,"4":1,"5":1,"12":1,"19":2,"24":1,"25":11,"64":1}}],["choosing",{"2":{"74":1}}],["choose",{"2":{"40":1,"67":1}}],["chosen",{"2":{"2":1,"21":1,"23":1}}],["child",{"2":{"25":1}}],["chunks",{"2":{"35":1}}],["chunked",{"2":{"35":1}}],["chunk",{"2":{"23":1}}],["channel",{"2":{"13":1}}],["channel=",{"2":{"13":1}}],["changing",{"2":{"4":1,"24":1,"65":1}}],["changes",{"2":{"27":1}}],["change",{"2":{"3":1,"4":4,"24":5,"66":1}}],["changed",{"2":{"3":1}}],["char",{"2":{"0":1,"3":1,"4":1,"13":1,"21":2,"62":2,"64":2,"66":3,"76":1,"79":2,"80":3}}],["cost",{"2":{"33":1}}],["costly",{"2":{"25":1}}],["covers",{"2":{"45":1}}],["cov",{"2":{"32":1}}],["core",{"2":{"64":1}}],["cor",{"2":{"32":1}}],["correctly",{"2":{"42":2}}],["correct",{"2":{"4":2,"5":1,"10":1,"17":1}}],["corresponding",{"2":{"4":1}}],["correspond",{"2":{"3":1,"10":3}}],["coordinate",{"2":{"36":1}}],["coordinatetransformations",{"2":{"4":2}}],["coordination",{"2":{"35":1}}],["coords",{"2":{"24":2}}],["copy",{"2":{"24":1,"25":7}}],["code",{"2":{"16":1,"20":2,"27":2,"69":1}}],["coded",{"2":{"6":1}}],["could",{"2":{"5":1,"15":1,"48":1}}],["counted",{"2":{"5":1}}],["colours",{"2":{"72":1}}],["color=",{"2":{"72":2,"73":1}}],["colormap",{"0":{"71":1,"72":1},"2":{"72":2}}],["colormap=",{"2":{"68":1}}],["color",{"2":{"69":7,"72":1}}],["colored",{"2":{"69":1}}],["colon",{"2":{"2":2,"3":1,"19":1,"20":1}}],["collection",{"2":{"82":1}}],["collected",{"2":{"78":1}}],["collect",{"2":{"61":1}}],["column",{"2":{"22":2,"69":1,"80":3}}],["columns",{"2":{"1":1,"8":1,"19":1,"22":3,"69":1,"78":2,"80":3}}],["command",{"2":{"12":1}}],["commands",{"2":{"12":1}}],["commondatamodel",{"2":{"35":1}}],["commondims",{"2":{"3":5}}],["commonly",{"2":{"4":1}}],["common",{"2":{"0":2,"4":1,"15":1,"23":1,"46":1,"51":1,"64":1}}],["compile",{"2":{"86":1}}],["compilation",{"2":{"86":1}}],["components",{"2":{"27":4,"42":4}}],["complex",{"2":{"69":1}}],["completely",{"2":{"25":4}}],["complicated",{"2":{"5":1,"13":1}}],["compatible",{"2":{"22":1}}],["compatibility",{"0":{"35":1},"2":{"14":1}}],["comparing",{"2":{"3":1,"25":1}}],["comparisons",{"2":{"3":2}}],["compare",{"2":{"3":6}}],["compared",{"2":{"3":1,"25":1}}],["comparedims",{"2":{"3":5}}],["combines",{"2":{"5":1,"43":1}}],["combined",{"2":{"4":1,"21":1,"24":1,"30":1,"63":1}}],["combinedims",{"2":{"3":1}}],["combine",{"2":{"3":1,"22":1}}],["combinations",{"2":{"21":2}}],["combination",{"2":{"1":1,"19":1,"35":2}}],["confusing",{"2":{"40":1}}],["confused",{"2":{"5":1}}],["consistency",{"2":{"82":1}}],["consistent",{"2":{"43":1}}],["consecutive",{"2":{"30":2}}],["constraint",{"2":{"30":1}}],["constructing",{"0":{"29":1},"2":{"41":1}}],["constructionbase",{"2":{"24":1,"40":2,"65":2}}],["construction",{"2":{"4":1,"10":1}}],["construct",{"2":{"22":1,"69":2}}],["constructors",{"2":{"19":1,"41":2}}],["constructor",{"2":{"4":1,"16":1,"20":1,"64":1}}],["constructed",{"2":{"0":1,"3":1,"4":1,"20":1,"27":2,"37":1}}],["const",{"2":{"5":1,"24":1,"46":1}}],["concatenate",{"2":{"25":4}}],["concrete",{"2":{"0":1,"1":2,"3":3,"4":2,"19":3,"20":1}}],["converging",{"2":{"52":1}}],["conversion",{"2":{"11":1}}],["conversions",{"2":{"10":1}}],["converting",{"0":{"80":1,"81":1}}],["convertible",{"2":{"17":1}}],["converts",{"2":{"2":1}}],["convert",{"2":{"2":1,"3":1,"4":1,"17":2,"69":1,"75":1}}],["converted",{"2":{"0":1,"3":1,"4":1,"17":1,"22":1}}],["controlled",{"2":{"72":1}}],["control",{"2":{"24":1,"25":1}}],["contents",{"2":{"11":1}}],["contexts",{"2":{"4":3}}],["context",{"2":{"3":1,"4":1,"19":1,"27":1}}],["contained",{"2":{"4":1,"5":1,"21":1,"60":1}}],["contain",{"2":{"2":1,"3":1,"5":2,"24":2}}],["contains",{"2":{"1":1,"4":2,"5":10,"19":1,"21":2,"23":1,"24":1,"74":2,"77":1}}],["containing",{"2":{"1":1,"3":1,"19":2}}],["cairomakie",{"2":{"68":1,"69":1}}],["caveats",{"2":{"64":1}}],["cache",{"2":{"35":1}}],["caching",{"2":{"35":1}}],["cartesianindex",{"2":{"30":2}}],["cartesianindices",{"2":{"21":4,"30":1,"77":1}}],["category",{"2":{"79":5,"80":10,"81":1}}],["categorises",{"2":{"11":1}}],["categories",{"2":{"4":3,"75":1}}],["categorical",{"2":{"0":2,"3":2,"4":8,"5":3,"13":2,"19":3,"21":2,"48":4,"62":2,"64":2,"66":4,"68":1,"74":15,"75":5,"76":3,"79":2}}],["cat",{"2":{"25":2,"32":1}}],["cases",{"2":{"25":1,"36":1,"38":1}}],["case",{"2":{"24":1,"66":1}}],["calculate",{"2":{"23":1}}],["call",{"2":{"27":1,"48":1}}],["calling",{"2":{"24":1,"39":1,"41":1}}],["callable",{"2":{"23":1}}],["called",{"2":{"3":2,"17":1,"41":1}}],["capabilities",{"2":{"51":1}}],["capable",{"2":{"4":1}}],["captions",{"2":{"19":1}}],["caution",{"2":{"5":1}}],["cannot",{"2":{"7":1}}],["can",{"2":{"0":2,"1":4,"2":3,"3":7,"4":18,"5":7,"10":3,"11":2,"12":1,"14":2,"15":3,"19":9,"20":2,"21":4,"22":1,"23":9,"24":8,"25":2,"28":1,"29":1,"30":4,"31":2,"32":2,"34":7,"36":1,"40":1,"42":2,"43":1,"44":1,"46":3,"47":2,"48":7,"49":2,"60":1,"61":1,"64":2,"65":1,"69":6,"72":1,"74":7,"75":2,"76":2,"77":4,"80":2,"81":1,"83":3,"85":1,"86":1}}],["c",{"2":{"0":6,"3":2,"4":2,"13":2,"19":9,"21":3,"24":3,"49":2,"62":2,"64":2,"66":3,"67":1,"68":1,"71":1,"74":33,"76":3,"77":2,"79":3,"80":2,"82":1,"83":8,"84":23,"85":28,"86":2}}],["zarr",{"2":{"35":1}}],["zip",{"2":{"35":1}}],["zero",{"2":{"27":2,"74":1,"84":1}}],["zeros",{"2":{"0":1,"19":6,"24":1,"28":4,"42":2}}],["z=dd",{"2":{"24":1}}],["z=",{"2":{"24":1}}],["zdim",{"2":{"0":4}}],["z",{"2":{"0":8,"1":9,"3":4,"19":9,"24":9,"25":3,"30":13,"34":3,"42":2,"66":2,"68":1,"79":4,"80":22,"81":9}}],["yaxarray",{"2":{"36":1,"52":1}}],["yaxarrays",{"0":{"52":1},"2":{"35":1,"52":1}}],["y=near",{"2":{"84":1}}],["y=not",{"2":{"74":1}}],["y=4",{"2":{"84":1,"86":1}}],["y=where",{"2":{"74":1}}],["y=at",{"2":{"74":2}}],["y=begin+1",{"2":{"31":1}}],["y=end",{"2":{"31":1}}],["y=dimarray",{"2":{"25":1}}],["y=>isodd",{"2":{"23":2}}],["yet",{"2":{"10":1,"27":2}}],["yearday",{"2":{"46":1}}],["yearmonthday",{"2":{"46":1}}],["yearmonth",{"2":{"46":1}}],["year",{"2":{"4":4,"23":1,"46":1}}],["years",{"2":{"4":3}}],["yourself",{"2":{"69":1}}],["your",{"2":{"5":1,"13":1,"24":1,"40":2,"69":2}}],["yourdimarray",{"2":{"40":1}}],["yourdim",{"2":{"0":1}}],["you",{"2":{"4":2,"5":1,"12":4,"15":2,"22":1,"24":5,"25":5,"27":2,"31":1,"32":1,"34":1,"40":1,"43":2,"46":1,"48":1,"60":1,"64":4,"66":4,"69":8,"75":1,"83":1}}],["ydim",{"2":{"0":7}}],["y",{"2":{"0":16,"1":12,"3":8,"4":9,"5":15,"15":13,"16":2,"19":30,"20":2,"21":13,"22":2,"23":4,"24":11,"25":6,"28":36,"30":7,"31":2,"32":3,"33":3,"34":3,"42":3,"43":31,"44":22,"61":8,"62":3,"64":2,"66":10,"68":2,"69":7,"71":1,"74":16,"76":3,"77":8,"79":10,"80":32,"81":1,"82":10,"83":34,"84":4,"85":92}}],["xy",{"2":{"80":2}}],["xarray",{"2":{"35":1}}],["xz",{"2":{"30":1}}],["x2",{"2":{"25":2}}],["x1",{"2":{"25":2}}],["x=not",{"2":{"74":1}}],["x=near",{"2":{"74":2}}],["x=where",{"2":{"74":1}}],["x=touches",{"2":{"74":1}}],["x=interval",{"2":{"74":1}}],["x=openinterval",{"2":{"74":1}}],["x=1",{"2":{"74":2,"84":1,"86":1}}],["x=contains",{"2":{"74":2}}],["x=at",{"2":{"74":3,"84":2}}],["x=all",{"2":{"5":1}}],["x=>",{"2":{"49":1}}],["x=>bins",{"2":{"48":2}}],["x=begin",{"2":{"31":1}}],["x=begin+1",{"2":{"31":1}}],["x=dimarray",{"2":{"25":1}}],["xs",{"2":{"2":1,"3":2,"4":6,"11":1,"19":2,"22":1}}],["xdim",{"2":{"0":7}}],["x3c",{"2":{"0":10,"4":12,"5":9,"7":6,"8":4,"9":3,"10":6,"11":2,"19":3,"20":1,"21":3,"22":2,"23":3,"26":2,"27":2,"33":2}}],["x",{"2":{"0":17,"1":27,"2":9,"3":22,"4":28,"5":32,"11":6,"15":14,"16":2,"19":69,"20":3,"21":17,"22":5,"23":2,"24":27,"25":7,"28":36,"30":18,"31":2,"32":3,"33":3,"34":6,"40":1,"42":4,"43":29,"44":23,"46":3,"47":3,"48":14,"49":3,"61":8,"62":4,"64":5,"66":8,"67":1,"68":3,"69":10,"71":1,"74":25,"75":7,"76":3,"77":8,"79":10,"80":32,"81":1,"82":10,"83":25,"85":96}}],["ideal",{"2":{"48":1}}],["identity",{"2":{"23":2,"48":2}}],["identical",{"2":{"4":2,"11":1,"82":1}}],["io",{"2":{"27":11}}],["ignoring",{"2":{"19":1}}],["ignores",{"2":{"68":1}}],["ignore",{"2":{"3":2,"34":1,"40":1}}],["ignored",{"2":{"3":1,"25":2}}],["images",{"2":{"58":1}}],["immutable",{"2":{"17":1,"24":1,"40":1,"66":1}}],["improving",{"2":{"66":1}}],["imperative",{"2":{"62":1}}],["imply",{"2":{"24":1}}],["implements",{"2":{"42":4,"78":1}}],["implemented",{"2":{"39":1,"42":2}}],["implement",{"2":{"20":1,"40":1,"78":1}}],["implementation",{"2":{"4":2,"20":1,"42":4,"56":1}}],["implementations",{"2":{"0":1}}],["important",{"2":{"4":3}}],["irregular",{"2":{"4":3,"5":6,"8":5,"19":1,"21":2,"23":4,"24":2,"47":7,"48":6,"74":6,"75":3,"76":1,"77":4}}],["i",{"2":{"2":2,"3":3,"13":1,"21":1,"38":1,"39":1,"49":1,"71":1,"72":1,"80":1}}],["if",{"2":{"0":1,"1":2,"2":3,"3":5,"4":8,"5":6,"11":2,"12":1,"19":2,"20":1,"21":2,"23":1,"24":7,"25":7,"38":1,"40":1,"43":1,"60":1,"64":2,"66":1,"68":1,"69":2,"77":1,"84":2,"85":1}}],["isend",{"2":{"44":5}}],["isexplicit",{"2":{"44":5}}],["ispoints",{"2":{"44":6}}],["isintervals",{"2":{"44":6}}],["isreverse",{"2":{"44":5}}],["isregular",{"2":{"43":2,"44":5}}],["isforward",{"2":{"44":5}}],["isordered",{"2":{"44":6}}],["iscenter",{"2":{"44":5}}],["iscyclic",{"2":{"44":6}}],["iscategorical",{"2":{"44":7}}],["isstart",{"2":{"44":5}}],["issampled",{"2":{"44":7}}],["issue",{"2":{"4":1,"66":1}}],["isa",{"2":{"20":1}}],["isapprox",{"2":{"5":1}}],["isbits",{"2":{"17":1,"26":1}}],["is",{"2":{"0":7,"1":3,"2":4,"3":14,"4":31,"5":9,"6":1,"7":3,"8":2,"10":1,"11":2,"12":1,"14":3,"16":3,"17":2,"19":8,"20":3,"21":6,"23":12,"24":11,"25":5,"26":3,"27":5,"31":2,"32":1,"34":1,"35":3,"36":4,"39":2,"40":5,"42":3,"43":6,"48":3,"49":1,"51":4,"52":3,"54":2,"55":1,"57":1,"58":1,"61":1,"62":1,"63":1,"64":3,"65":1,"66":3,"67":2,"69":6,"72":1,"73":1,"74":7,"75":4,"76":5,"77":1,"78":1,"80":1,"82":2,"86":2}}],["its",{"2":{"17":1,"19":1,"23":2,"24":3,"36":1,"52":2,"55":1,"66":1,"69":2}}],["iterates",{"2":{"25":2}}],["iterate",{"2":{"21":1}}],["iterator",{"2":{"20":2}}],["iterators",{"2":{"19":1}}],["iteration",{"2":{"20":2,"35":1}}],["iter",{"2":{"13":1}}],["iter=1",{"2":{"13":1}}],["it",{"2":{"0":1,"2":1,"3":2,"4":11,"5":3,"7":1,"11":1,"12":3,"19":1,"20":2,"21":1,"23":3,"24":7,"25":1,"26":2,"27":1,"28":1,"30":1,"31":1,"32":1,"33":1,"34":2,"35":1,"38":1,"39":1,"40":1,"42":2,"43":1,"46":1,"48":2,"51":1,"55":1,"62":1,"64":1,"66":2,"68":1,"69":3,"74":3,"75":1,"83":2}}],["inverts",{"2":{"83":1}}],["invalid",{"2":{"30":1}}],["inferno",{"2":{"68":1}}],["information",{"2":{"4":3,"19":1,"43":1}}],["inner",{"2":{"24":1,"25":1,"27":1,"61":2}}],["inbuilt",{"2":{"24":1}}],["initially",{"2":{"20":2}}],["inaccurate",{"2":{"8":1}}],["including",{"2":{"7":1,"35":1,"74":1}}],["included",{"2":{"3":1,"5":1,"11":1,"48":1}}],["include",{"2":{"2":1,"3":1,"5":1,"27":1,"74":1,"75":1}}],["installed",{"2":{"12":1}}],["install",{"2":{"12":1}}],["installation",{"0":{"12":1}}],["instead",{"2":{"5":2,"7":1,"11":1,"23":1,"31":1,"68":1,"69":1,"77":1}}],["inside",{"2":{"5":1,"31":1,"74":1}}],["inserted",{"2":{"0":1}}],["inputs",{"2":{"39":1,"41":1}}],["input",{"2":{"3":1,"5":1,"8":1,"72":1}}],["inds",{"2":{"30":2}}],["individual",{"2":{"21":1}}],["indicate",{"2":{"5":1,"10":1,"32":1,"69":1}}],["indicates",{"2":{"4":2,"7":3,"9":1,"10":1,"11":1}}],["indicating",{"2":{"4":5}}],["indices",{"2":{"2":2,"5":7,"19":1,"21":3,"24":2,"34":1,"74":3,"75":1,"77":1}}],["independent",{"2":{"0":1,"4":1}}],["independentdim",{"2":{"0":5}}],["indexes",{"2":{"74":1}}],["indexed",{"2":{"4":2,"20":2}}],["indexing",{"0":{"30":1,"31":1,"83":1,"84":1},"2":{"0":2,"4":4,"19":3,"20":2,"21":1,"29":1,"30":4,"31":3,"33":1,"51":1,"74":7,"84":1,"86":3}}],["index",{"2":{"0":2,"3":3,"4":5,"5":8,"6":1,"7":4,"8":4,"9":2,"10":5,"19":6,"20":2,"21":4,"22":2,"24":5,"30":2,"31":1,"34":1,"74":3,"77":1,"84":1}}],["inherits",{"2":{"52":1}}],["inherit",{"2":{"0":1,"1":1,"19":1}}],["int8",{"2":{"13":5}}],["intselectors",{"2":{"5":1}}],["intselector",{"2":{"5":4}}],["intentionally",{"2":{"35":1}}],["intended",{"2":{"5":1}}],["inteface",{"2":{"27":2}}],["integrate",{"2":{"35":1}}],["integrations",{"0":{"50":1},"1":{"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1}}],["integration",{"0":{"17":1}}],["integers",{"2":{"46":1,"48":1}}],["integer",{"2":{"3":1,"19":4,"23":7,"39":1}}],["interoperability",{"2":{"78":1}}],["interpolate",{"2":{"21":1}}],["interpolation",{"2":{"21":3,"77":1}}],["interact",{"2":{"5":1}}],["intermediate",{"2":{"5":1}}],["interfaces",{"0":{"42":1},"2":{"27":2,"42":5}}],["interface",{"0":{"22":1,"27":1,"42":1},"2":{"3":1,"27":4,"35":1,"36":1,"65":1,"78":2,"81":1}}],["internally",{"2":{"64":1}}],["internal",{"0":{"27":1},"2":{"3":1,"24":1}}],["intervalbounds",{"2":{"43":4,"74":1}}],["interval",{"2":{"0":1,"4":5,"5":12,"8":1,"9":2,"10":4,"21":1,"23":2,"43":2,"48":9,"74":3,"75":1,"76":1}}],["intervalsets",{"2":{"5":2,"23":1,"48":6,"74":2,"76":1}}],["intervals",{"2":{"0":1,"4":13,"5":10,"8":3,"9":4,"10":1,"21":1,"23":4,"43":1,"48":7,"66":2,"74":14,"75":6,"76":2}}],["int",{"2":{"1":5,"2":2,"5":1,"19":5,"20":2,"22":1,"23":4,"31":2,"32":1,"34":1,"39":1,"48":1,"74":4}}],["int64",{"2":{"0":2,"4":2,"5":11,"13":4,"15":14,"19":6,"21":2,"23":3,"24":2,"25":1,"28":11,"30":6,"43":17,"44":14,"46":12,"47":11,"48":5,"66":2,"75":3,"76":1,"77":3,"79":4,"80":8}}],["into",{"2":{"0":3,"4":3,"16":1,"17":1,"21":2,"22":1,"23":1,"24":1,"34":2,"48":4,"56":1,"63":1,"68":1,"86":1}}],["in",{"2":{"0":7,"1":3,"2":2,"3":12,"4":12,"5":10,"7":3,"8":2,"9":1,"10":2,"11":2,"14":1,"17":1,"19":7,"20":6,"21":5,"23":6,"24":24,"25":11,"26":1,"27":11,"28":6,"30":2,"31":4,"32":1,"34":1,"35":3,"36":2,"38":1,"40":2,"41":2,"42":10,"43":2,"48":4,"60":1,"64":5,"65":1,"66":2,"67":1,"68":2,"69":3,"73":1,"74":6,"75":3,"78":1,"82":1,"85":2,"86":1}}],["hundreds",{"2":{"78":1}}],["humidity",{"2":{"25":6}}],["high",{"2":{"69":1}}],["histogram",{"2":{"33":2}}],["hierarchy",{"2":{"0":1}}],["heatmap",{"2":{"68":1}}],["helper",{"2":{"48":1}}],["help",{"2":{"27":2}}],["here",{"2":{"20":1,"21":1,"24":1,"25":1,"28":1,"29":1,"48":3,"64":1,"68":1,"69":1,"75":3}}],["h",{"2":{"13":1,"71":1,"80":1}}],["having",{"2":{"25":1}}],["have",{"2":{"0":1,"4":3,"8":2,"11":1,"12":1,"19":1,"20":2,"22":1,"23":2,"24":3,"25":1,"30":1,"35":1,"36":1,"37":1,"38":1,"40":1,"48":1,"66":1,"68":1,"80":1,"82":1}}],["hard",{"2":{"6":1}}],["haskey",{"2":{"11":2}}],["hasselection",{"2":{"4":2}}],["hasn",{"2":{"2":1}}],["has",{"2":{"1":1,"3":2,"4":1,"11":1,"15":2,"17":1,"19":3,"20":1,"24":2,"25":2,"33":1,"38":1,"40":2,"41":1,"43":1,"75":1,"76":1}}],["hasdim",{"2":{"1":6,"19":6}}],["hold",{"2":{"23":1,"38":1,"76":1}}],["holds",{"2":{"4":4,"20":1,"75":2}}],["holding",{"2":{"1":1,"2":1,"8":1,"19":9,"21":1,"23":2,"63":1,"77":1}}],["however",{"2":{"5":1,"24":1}}],["how",{"2":{"4":2,"7":2,"25":1,"34":1,"46":1,"62":1}}],["hours",{"2":{"23":4,"48":2}}],["hour",{"2":{"0":1,"23":1,"46":4,"47":1,"48":2,"49":3}}],["slower",{"2":{"86":1}}],["slowly",{"2":{"52":1}}],["slightly",{"2":{"48":1}}],["slicing",{"2":{"3":1}}],["sliced",{"2":{"20":1,"24":1}}],["slicedims",{"2":{"3":2,"19":1}}],["slices",{"2":{"19":1,"25":4}}],["slice",{"2":{"3":1,"19":1,"24":1,"69":1}}],["src",{"2":{"25":4,"31":2}}],["smaller",{"2":{"29":1}}],["small",{"2":{"25":1}}],["synchronisation",{"2":{"57":1}}],["syntax",{"2":{"19":1}}],["symmetry",{"2":{"34":1}}],["symbol",{"2":{"1":1,"2":1,"3":4,"4":7,"11":1,"13":1,"19":11,"20":6,"22":1,"23":3,"24":2,"25":1,"26":3,"39":2,"41":1,"43":1,"47":7,"48":15,"49":2,"64":2,"74":15,"76":2,"83":2}}],["symbols",{"2":{"0":1,"1":1,"2":1,"3":1,"4":5,"11":1,"17":1,"19":3,"24":1,"29":1,"32":1,"69":1}}],["system",{"2":{"17":1,"36":1}}],["scatter",{"2":{"69":2}}],["scalar",{"2":{"84":1}}],["scalars",{"2":{"15":6,"84":1}}],["scaled",{"2":{"15":6}}],["scale",{"2":{"15":1}}],["scaling",{"0":{"15":1}}],["scope",{"2":{"0":1,"4":1,"34":1}}],["sat",{"2":{"75":2}}],["save",{"2":{"51":1}}],["saving",{"2":{"11":2}}],["samples",{"2":{"9":1,"33":2}}],["sampled",{"2":{"0":6,"4":16,"5":8,"9":1,"13":4,"15":20,"16":2,"19":7,"21":4,"23":4,"24":10,"25":1,"28":6,"36":1,"43":24,"44":28,"47":9,"48":7,"49":5,"62":2,"64":2,"66":8,"74":13,"75":7,"76":3,"77":10,"79":4,"80":2,"82":2,"83":15,"84":1,"85":49}}],["sampling=dd",{"2":{"5":2}}],["sampling=intervals",{"2":{"4":2,"75":3}}],["sampling=points",{"2":{"4":2}}],["sampling",{"0":{"9":1},"2":{"0":1,"2":1,"3":1,"4":15,"5":1,"8":1,"9":6,"21":1,"24":1,"43":5,"64":1,"76":1}}],["same",{"2":{"0":2,"3":3,"4":1,"5":2,"11":1,"15":1,"19":4,"21":2,"23":1,"24":2,"25":1,"28":1,"30":1,"33":1,"38":2,"40":1,"43":1,"46":1,"67":1,"78":1,"82":1}}],["sharing",{"2":{"20":1}}],["share",{"2":{"20":1,"82":1}}],["shift",{"2":{"4":2}}],["shiftlocus",{"2":{"4":1}}],["show",{"2":{"27":9}}],["shows",{"2":{"19":1}}],["shown",{"2":{"2":1,"75":1}}],["should",{"2":{"2":1,"5":1,"12":1,"19":1,"24":1,"27":2,"38":1,"39":1,"40":1,"75":1,"80":1}}],["shortcuts",{"2":{"28":1}}],["shorthand",{"2":{"19":1,"75":1}}],["short",{"2":{"0":1}}],["swapping",{"2":{"24":1}}],["swap",{"2":{"3":1}}],["swapdims",{"2":{"3":3}}],["specialisations",{"2":{"23":1}}],["specify",{"2":{"10":5,"23":3,"24":3,"32":1,"34":1,"43":1,"48":1,"66":1,"75":1,"80":1}}],["specifying",{"2":{"4":1,"9":1,"75":1}}],["specifies",{"2":{"7":1,"26":1,"30":1,"43":1}}],["specified",{"2":{"2":1,"3":1,"4":1,"19":1,"76":1}}],["specifically",{"2":{"25":1}}],["specific",{"2":{"4":5,"6":1,"8":1,"9":1,"34":1,"62":1}}],["space",{"2":{"24":2}}],["spaced",{"2":{"23":1}}],["spacing",{"2":{"4":2}}],["span=irregular",{"2":{"75":1}}],["span=regular",{"2":{"4":1,"75":1}}],["span=autospan",{"2":{"4":2}}],["span",{"0":{"8":1},"2":{"4":15,"8":7,"43":5,"64":1,"76":1}}],["spatial",{"2":{"0":1,"35":1,"51":1,"52":1,"57":2,"80":1}}],["since",{"2":{"69":1}}],["singleton",{"2":{"24":1}}],["single",{"2":{"1":8,"3":2,"4":1,"5":5,"9":1,"15":1,"19":8,"20":1,"23":1,"24":3,"31":1,"40":1,"43":1,"63":1,"74":1,"84":1,"86":1}}],["signature",{"2":{"40":1}}],["sits",{"2":{"30":1}}],["sizes",{"2":{"48":1}}],["size",{"2":{"2":1,"3":1,"4":5,"8":1,"15":1,"23":1,"24":2,"25":6,"27":5,"32":2,"42":3,"49":2,"61":2,"78":1,"79":2,"80":26,"82":4,"83":22,"84":3,"85":88}}],["simultaneously",{"2":{"63":1}}],["simulations",{"2":{"57":1}}],["simulation",{"2":{"57":1}}],["simulataneously",{"2":{"20":1}}],["similar",{"2":{"0":1,"4":1,"7":1,"9":1,"21":1,"49":1,"61":1,"69":1}}],["simpler",{"2":{"46":1}}],["simple",{"2":{"45":1,"69":1}}],["simply",{"2":{"0":1,"4":1,"5":1,"11":1,"19":1,"24":1,"27":1,"43":1,"77":1}}],["simplicity",{"2":{"0":1}}],["st2",{"2":{"83":2}}],["st",{"2":{"61":4,"79":1,"80":2,"81":1,"82":1,"83":8,"84":4,"85":35}}],["storage",{"2":{"51":1}}],["stored",{"2":{"19":1,"82":1}}],["std",{"2":{"32":1,"85":2}}],["style",{"2":{"17":1}}],["still",{"2":{"11":1,"16":1,"31":1,"66":1}}],["standard",{"2":{"69":1,"78":1}}],["standards",{"2":{"10":1}}],["stage",{"2":{"27":2}}],["stack",{"2":{"20":2,"24":2,"25":8,"27":4,"42":2,"61":1,"78":2,"85":1,"86":1}}],["stacks",{"2":{"20":1,"25":5,"80":1,"81":1,"86":1}}],["statistics",{"2":{"15":1,"20":2,"46":1,"85":1}}],["status",{"2":{"12":2}}],["starts",{"2":{"61":1}}],["start=6",{"2":{"48":4}}],["start=1",{"2":{"48":1}}],["start=12",{"2":{"48":1}}],["start=january",{"2":{"48":1}}],["start=0",{"2":{"23":1}}],["start=dates",{"2":{"23":2}}],["starting",{"2":{"8":1,"48":2}}],["start",{"2":{"0":2,"4":6,"5":3,"9":1,"10":4,"13":1,"23":9,"43":1,"48":4,"69":1,"74":5,"75":7}}],["strongly",{"2":{"24":1}}],["strickt",{"2":{"25":1}}],["strict=true",{"2":{"25":4}}],["strict=false",{"2":{"24":1}}],["strictness",{"0":{"25":1},"1":{"26":1,"27":1}}],["strict",{"2":{"14":2,"24":1,"25":8}}],["stripped",{"2":{"17":1}}],["strings",{"2":{"5":1}}],["string",{"2":{"2":4,"3":1,"4":1,"19":1,"27":1,"48":2,"64":2,"75":3,"76":1,"81":1}}],["string=string",{"2":{"0":1}}],["struct",{"2":{"3":1,"24":1,"60":2}}],["step=12",{"2":{"48":1}}],["step=2",{"2":{"48":1}}],["step=3",{"2":{"48":2}}],["step=hour",{"2":{"46":1}}],["step=autostep",{"2":{"8":1}}],["steps",{"2":{"23":1}}],["steprange",{"2":{"15":1}}],["step",{"2":{"3":1,"4":1,"8":2,"23":7,"24":1,"76":1}}],["s",{"2":{"0":1,"1":4,"2":1,"3":4,"5":16,"14":1,"19":5,"20":3,"22":1,"23":1,"24":5,"26":1,"27":1,"33":1,"35":3,"46":2,"47":1,"48":1,"49":1,"69":4,"74":2,"80":1}}],["series",{"0":{"70":1},"1":{"71":1,"72":1,"73":1},"2":{"59":1,"71":1,"72":2,"73":1}}],["sep",{"2":{"48":6,"75":2}}],["separate",{"2":{"2":1,"51":1}}],["sequential",{"2":{"23":1}}],["sections",{"2":{"23":1}}],["second",{"2":{"0":1,"2":1,"4":4,"11":1,"19":2,"24":1}}],["semi",{"2":{"19":1}}],["sea",{"2":{"25":4}}],["seasons",{"2":{"23":4,"48":5}}],["seamlessly",{"2":{"17":1}}],["searched",{"2":{"7":1}}],["searchsortedfirst",{"2":{"7":1}}],["searchsorted",{"2":{"7":1}}],["sense",{"2":{"5":1,"51":1,"64":1}}],["seed",{"2":{"19":1}}],["see",{"2":{"3":1,"15":1,"20":1,"42":2,"46":1,"48":1,"69":1}}],["selections",{"2":{"5":1}}],["selectindices",{"2":{"2":1}}],["selects",{"2":{"5":2,"74":1}}],["select",{"0":{"49":1},"2":{"5":6,"25":2,"49":1,"74":2,"75":1,"77":1}}],["selected",{"2":{"5":4,"23":4,"74":2}}],["selectors=near",{"2":{"21":1,"77":1}}],["selectorss",{"2":{"4":2}}],["selectors",{"0":{"5":1,"74":1},"1":{"75":1,"76":1,"77":1},"2":{"2":1,"4":12,"5":8,"8":1,"19":1,"20":1,"21":6,"31":1,"69":1,"75":2,"76":1,"77":3,"84":1}}],["selector",{"2":{"0":1,"2":2,"4":3,"5":13,"34":1,"40":1,"64":1,"74":9,"83":1}}],["setproperties",{"2":{"24":1,"65":1}}],["settings",{"0":{"25":1},"1":{"26":1,"27":1}}],["setting",{"2":{"24":1,"25":1}}],["setindex",{"2":{"20":1,"31":1}}],["setdims",{"2":{"3":3}}],["set",{"0":{"66":1},"2":{"0":1,"4":6,"8":1,"11":2,"15":1,"19":13,"24":22,"25":2,"64":1,"66":11,"74":2,"76":3}}],["sophisticated",{"2":{"69":1}}],["sounds",{"2":{"39":1}}],["sources",{"2":{"4":1,"24":7,"51":1}}],["source",{"2":{"0":15,"1":5,"2":5,"3":12,"4":23,"5":10,"6":1,"7":6,"8":5,"9":3,"10":6,"11":4,"19":17,"20":2,"21":3,"22":2,"23":9,"24":12,"25":9,"26":3,"27":6}}],["solution",{"2":{"23":1}}],["so",{"2":{"4":2,"5":1,"14":1,"17":1,"24":2,"30":1,"43":1,"48":1,"65":1,"69":1,"75":1,"78":1,"80":1}}],["sorted",{"2":{"5":1,"23":2}}],["sortdims",{"2":{"3":1}}],["sort",{"2":{"3":3}}],["sometimes",{"2":{"48":1,"66":1}}],["something",{"2":{"13":1,"23":1}}],["somewhere",{"2":{"20":2,"64":1}}],["some",{"2":{"0":1,"4":1,"15":1,"19":1,"20":1,"23":1,"25":1,"34":1,"38":1,"40":1,"46":2,"79":1,"82":1,"86":1}}],["sun",{"2":{"75":2}}],["surface",{"2":{"25":4}}],["sure",{"2":{"21":2}}],["surprising",{"2":{"20":2}}],["summer",{"2":{"48":1}}],["summary",{"2":{"42":2}}],["sum",{"2":{"20":1,"23":1,"28":2,"32":3,"47":1,"85":5}}],["succinct",{"2":{"20":2}}],["such",{"2":{"0":2,"2":1,"4":1,"5":1,"10":1,"23":2}}],["supporting",{"2":{"81":1}}],["support",{"2":{"67":1}}],["supplied",{"2":{"5":1}}],["supertypes",{"2":{"3":1}}],["supertype=dimension",{"2":{"0":1}}],["supertype",{"2":{"0":8,"4":5,"5":3,"6":1,"7":1,"10":1,"11":1,"19":2,"20":1,"22":1,"26":1}}],["submodule",{"2":{"34":1}}],["subset",{"2":{"25":2,"69":2,"83":1}}],["subsetting",{"2":{"5":1}}],["subtypes",{"2":{"27":1}}],["subtype",{"2":{"19":1}}],["sub",{"2":{"0":2}}],["m=rand",{"2":{"83":1}}],["my",{"2":{"64":3}}],["mydimstack",{"2":{"20":2}}],["mutable",{"2":{"60":1}}],["multiplying",{"2":{"25":2}}],["multiplication",{"2":{"25":5}}],["multiple",{"2":{"4":1,"20":3,"23":1,"44":1,"63":1}}],["multipications",{"2":{"25":1}}],["multi",{"0":{"20":1},"2":{"38":1}}],["much",{"2":{"16":1,"64":1,"67":1}}],["must",{"2":{"4":3,"5":3,"17":2,"19":2,"20":2,"24":2,"27":2,"37":1,"38":3,"40":1,"41":1,"60":1,"82":1}}],["mixing",{"2":{"30":1}}],["mix",{"2":{"30":1,"85":1}}],["mixed",{"2":{"20":2,"21":2,"36":1}}],["mime",{"2":{"27":5}}],["mid",{"2":{"5":1}}],["minimal",{"2":{"69":1}}],["minimum",{"2":{"3":1,"32":1,"47":1,"85":2}}],["min",{"2":{"33":4}}],["minus",{"2":{"4":1}}],["missingval",{"2":{"24":1,"51":1}}],["missing",{"2":{"3":1,"24":1,"41":1,"51":1}}],["msg",{"2":{"3":1}}],["measured",{"2":{"86":1}}],["means",{"2":{"3":1,"5":1,"7":1,"10":1,"14":1,"15":1,"17":1,"22":1,"24":1,"34":1,"38":1,"44":2,"74":1}}],["mean",{"2":{"3":1,"4":1,"9":1,"14":1,"15":2,"19":1,"20":4,"23":10,"32":1,"33":4,"47":3,"48":3,"49":1,"85":3}}],["meaningful",{"2":{"35":1}}],["meaning",{"2":{"2":1,"4":1,"21":1}}],["merging",{"2":{"83":1}}],["merges",{"2":{"63":1}}],["merge",{"2":{"30":1,"80":1,"83":5}}],["merged",{"2":{"24":3}}],["mergedims=",{"2":{"80":1}}],["mergedims=nothing",{"2":{"22":3}}],["mergedims",{"0":{"63":1},"2":{"22":1,"24":5,"63":1}}],["mergedlookup",{"2":{"4":3,"24":3,"30":1}}],["median",{"2":{"32":1,"33":4,"47":1}}],["messy",{"2":{"23":1}}],["mesages",{"2":{"3":1}}],["memory",{"2":{"33":2}}],["mem",{"2":{"16":1}}],["metadata=dict",{"2":{"28":6,"64":1}}],["metadata=metadata",{"2":{"20":1}}],["metadata=nometadata",{"2":{"4":3,"19":1,"20":1}}],["metadata",{"0":{"11":1},"2":{"3":1,"4":16,"11":16,"17":1,"19":11,"23":3,"24":4,"27":9,"28":6,"40":1,"42":8,"47":7,"48":11,"49":2,"60":1,"64":5}}],["method",{"2":{"1":4,"3":3,"4":4,"9":1,"11":2,"19":7,"21":1,"24":2,"27":3,"40":1,"42":2}}],["methods",{"0":{"1":1,"2":1,"3":1,"23":1,"24":1},"2":{"0":2,"1":1,"3":3,"4":3,"7":1,"19":1,"20":5,"23":1,"25":3,"27":2,"32":1,"34":1,"36":1,"40":1,"43":1,"44":1,"49":1,"53":1}}],["m",{"2":{"0":1,"4":3,"62":2,"64":2,"66":3,"80":1,"83":2}}],["mon",{"2":{"75":2}}],["monthabbr",{"2":{"75":2}}],["months",{"2":{"23":5,"48":4,"75":1}}],["monthly",{"2":{"23":2}}],["month",{"2":{"0":6,"15":21,"19":1,"23":4,"46":1,"47":2,"48":13,"75":5}}],["moving",{"2":{"61":1,"67":1}}],["moves",{"2":{"19":1}}],["moved",{"2":{"17":2}}],["move",{"2":{"16":1}}],["mod",{"2":{"61":2}}],["models",{"2":{"54":1,"57":1}}],["model",{"2":{"17":1,"56":1}}],["modification",{"2":{"17":1}}],["modified",{"2":{"5":1}}],["modifying",{"0":{"60":1},"1":{"61":1,"62":1,"63":1,"64":1,"65":1,"66":1}}],["modify",{"0":{"61":1},"2":{"6":1,"16":1,"24":6,"60":1,"61":6}}],["module",{"2":{"0":2,"4":1}}],["mostly",{"2":{"19":1,"24":2,"67":1,"68":1}}],["most",{"2":{"4":1,"16":1,"20":4,"24":1,"25":1,"27":1,"35":1,"36":1,"64":1,"75":1,"76":1}}],["more",{"2":{"0":2,"4":4,"13":1,"19":1,"22":1,"27":1,"40":2,"52":1,"61":1,"65":1,"73":1,"74":1}}],["magic",{"0":{"65":1}}],["made",{"2":{"51":1}}],["masking",{"2":{"51":1}}],["mar",{"2":{"48":6,"75":1}}],["markersize=15",{"2":{"73":1}}],["markers",{"0":{"73":1},"2":{"10":1}}],["max",{"2":{"33":4}}],["maximum",{"2":{"5":1,"27":1,"32":1,"47":1,"85":3}}],["manipulation",{"2":{"51":1}}],["mandatory",{"2":{"27":4,"42":2}}],["many",{"2":{"20":4,"27":2,"32":1,"86":1}}],["manually",{"2":{"4":5,"23":1,"40":1,"75":2,"76":1,"86":1}}],["mapping",{"2":{"69":4}}],["mapped",{"2":{"51":1}}],["mapslices",{"2":{"32":1}}],["mapreduce",{"2":{"32":1}}],["map",{"2":{"20":5,"23":4,"25":1}}],["maintains",{"2":{"19":1}}],["main",{"2":{"19":1,"27":4}}],["makie",{"0":{"68":1},"1":{"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"67":2,"68":3,"69":1,"71":1,"73":1}}],["making",{"2":{"0":1,"69":1}}],["makes",{"2":{"26":1,"43":1}}],["make",{"2":{"4":1,"5":1,"21":2,"64":1,"75":1}}],["math",{"2":{"31":1}}],["matmul",{"2":{"25":4}}],["matrix",{"2":{"8":1,"25":6,"28":3,"61":3,"85":1}}],["matter",{"2":{"3":1,"21":1}}],["match",{"2":{"1":3,"2":2,"3":3,"4":1,"5":1,"14":1,"19":3,"23":1,"24":4,"25":9,"78":1,"83":1,"85":1}}],["matches",{"2":{"1":1,"5":1,"19":1,"23":1,"27":4,"42":4,"64":1}}],["matching",{"2":{"0":2,"1":1,"3":1,"4":3,"19":1,"20":2,"23":2,"24":1,"39":2,"74":1,"77":1}}],["macro",{"2":{"0":1,"3":1,"14":1,"15":1,"24":3}}],["may",{"2":{"0":2,"3":1,"4":5,"5":4,"6":1,"8":1,"11":2,"20":2,"25":1,"27":1,"48":6,"64":2,"66":1,"75":3}}],["tell",{"2":{"62":1}}],["text",{"2":{"27":2}}],["testable",{"2":{"42":1}}],["testing",{"0":{"42":1},"2":{"42":2}}],["test",{"0":{"70":1},"1":{"71":1,"72":1,"73":1},"2":{"27":4,"42":4}}],["tested",{"2":{"27":2}}],["testname",{"2":{"24":1}}],["temporal",{"2":{"57":1}}],["tempo",{"2":{"46":9,"47":1}}],["temp",{"2":{"25":4}}],["term",{"2":{"6":1,"43":1}}],["terms",{"2":{"4":1}}],["tue",{"2":{"75":2}}],["turn",{"2":{"25":2}}],["turned",{"2":{"14":1}}],["tuples",{"2":{"3":4,"4":1,"21":1,"23":2,"30":2,"41":1,"43":1,"46":1,"63":1}}],["tuple",{"2":{"1":22,"2":8,"3":34,"4":32,"8":2,"11":5,"19":43,"20":3,"21":8,"23":2,"24":10,"25":1,"27":5,"30":3,"37":1,"41":1,"42":2,"43":6,"46":4,"47":3,"74":1,"80":2,"83":1,"85":4}}],["twice",{"2":{"5":1}}],["two",{"2":{"3":1,"4":2,"5":4,"17":1,"19":4,"20":2,"22":1,"48":1,"74":1,"82":1}}],["tries",{"2":{"66":1}}],["trivially",{"2":{"49":1}}],["trial",{"2":{"33":2}}],["try",{"2":{"24":1}}],["treated",{"2":{"23":1}}],["treat",{"2":{"22":1}}],["track",{"2":{"19":1}}],["tracking",{"2":{"4":1,"8":1,"11":1}}],["trait",{"2":{"6":1,"24":2}}],["traits",{"0":{"6":1},"1":{"7":1,"8":1,"9":1,"10":1},"2":{"3":1,"4":1,"6":2,"7":1,"24":1,"75":1}}],["transforming",{"2":{"23":1,"24":1}}],["transform",{"2":{"4":1,"46":1,"64":1}}],["transformation",{"2":{"4":3}}],["transformations",{"2":{"3":1,"4":1,"19":1}}],["transformed",{"2":{"4":4}}],["transpose",{"2":{"0":1,"32":2,"85":1}}],["transect",{"2":{"0":1}}],["true",{"2":{"1":4,"3":3,"19":5,"20":1,"23":2,"24":2,"30":1,"42":89,"44":21}}],["typ",{"2":{"0":2}}],["typed",{"2":{"24":1}}],["typeof",{"2":{"16":1,"24":1,"75":2}}],["typemax",{"2":{"4":1}}],["typemin",{"2":{"4":1}}],["type",{"2":{"0":3,"1":6,"2":3,"3":15,"4":2,"8":1,"11":2,"17":1,"19":6,"20":1,"22":2,"24":4,"26":1,"30":1,"39":2,"41":1,"43":1,"64":1,"66":1,"69":1,"81":1}}],["types",{"2":{"0":6,"1":5,"2":1,"3":8,"4":7,"5":1,"6":1,"10":1,"11":2,"19":7,"22":1,"24":3,"31":1,"32":2,"34":2,"36":2,"46":1,"51":1,"55":1,"76":2}}],["tabular",{"2":{"78":1}}],["table",{"2":{"22":1,"69":1,"80":1}}],["tabletraits",{"0":{"22":1},"2":{"22":1}}],["tables",{"0":{"22":1,"78":1},"1":{"79":1,"80":1,"81":1},"2":{"0":1,"19":1,"22":4,"69":1,"78":2,"81":1}}],["taking",{"2":{"48":1}}],["taken",{"2":{"21":1}}],["take",{"2":{"0":1,"4":2,"5":1,"20":1,"23":2,"47":1,"72":1,"74":3,"80":1,"86":1}}],["target",{"2":{"21":2}}],["t",{"2":{"0":1,"2":2,"3":2,"4":10,"11":1,"15":3,"21":1,"25":4,"30":2,"31":1,"64":1,"65":1,"66":1,"69":2,"75":1,"76":1,"77":1,"80":1}}],["title",{"2":{"27":5}}],["ti=>",{"2":{"49":1}}],["ti=>cyclicbins",{"2":{"48":4}}],["ti=>bins",{"2":{"48":8}}],["ti=>yearday",{"2":{"47":2}}],["ti=>yearmonth",{"2":{"47":2}}],["ti=>yearmonthday",{"2":{"47":2}}],["ti=>hour",{"2":{"47":2}}],["ti=>dayofyear",{"2":{"47":2}}],["ti=>month",{"2":{"23":6,"47":3}}],["ti=2",{"2":{"21":1}}],["ti=all",{"2":{"5":1}}],["time=1",{"2":{"13":1}}],["timeseriestools",{"0":{"59":1},"2":{"59":1}}],["times",{"2":{"0":1,"47":1,"82":2}}],["timedime",{"2":{"0":1}}],["timedim",{"2":{"0":4,"3":1}}],["time",{"0":{"15":1},"2":{"0":4,"4":1,"13":1,"20":1,"23":1,"25":1,"27":1,"33":6,"47":1,"59":1,"86":1}}],["ti",{"2":{"0":14,"1":1,"3":3,"5":3,"15":15,"19":5,"21":1,"22":2,"23":6,"24":5,"25":3,"32":3,"34":1,"47":10,"48":23,"49":5,"68":1}}],["though",{"2":{"86":1}}],["those",{"2":{"5":1,"25":2,"34":1,"64":1}}],["thur",{"2":{"75":2}}],["think",{"2":{"66":1}}],["thing",{"2":{"66":2}}],["things",{"2":{"16":1,"27":2,"60":1,"61":1,"64":2,"76":1}}],["this",{"2":{"0":1,"2":3,"3":6,"4":13,"5":6,"7":1,"8":1,"10":2,"11":2,"12":1,"14":1,"16":1,"17":2,"20":4,"21":2,"22":2,"23":6,"24":8,"25":6,"26":1,"27":3,"30":1,"31":1,"32":1,"34":1,"35":1,"38":1,"39":1,"41":1,"42":1,"43":1,"45":1,"48":5,"57":1,"61":2,"64":1,"66":1,"67":1,"69":2,"74":1,"76":2,"82":1,"85":1,"86":1}}],["through",{"2":{"19":1,"55":1}}],["throws",{"2":{"5":1}}],["throw",{"2":{"3":1,"30":1}}],["throwing",{"2":{"3":1}}],["thrown",{"2":{"2":1,"3":1,"5":1,"64":1}}],["three",{"2":{"4":2,"20":2,"23":1,"48":1}}],["than",{"2":{"3":1,"4":2,"5":2,"9":1,"17":1,"23":2,"39":1,"40":1,"48":1,"60":1,"62":1,"74":1,"86":1}}],["that",{"2":{"0":3,"1":2,"2":2,"3":1,"4":13,"5":15,"7":4,"8":3,"9":2,"10":1,"11":1,"12":1,"14":4,"17":2,"19":9,"20":4,"21":4,"23":4,"24":7,"25":12,"28":1,"31":1,"34":1,"36":1,"37":1,"38":1,"39":1,"40":3,"43":3,"46":2,"64":1,"69":2,"75":2,"76":1,"78":1,"80":1,"82":1}}],["then",{"2":{"24":1,"69":1,"74":1,"76":1}}],["their",{"2":{"3":2,"20":2,"24":3,"43":1,"51":2}}],["there",{"2":{"2":2,"4":2,"14":1,"19":4,"24":1,"28":1,"40":1,"43":1,"48":1,"66":1,"75":1,"86":1}}],["these",{"2":{"0":3,"1":1,"3":2,"4":4,"6":2,"7":1,"8":1,"9":1,"10":1,"19":2,"20":1,"21":2,"22":1,"23":2,"24":1,"25":3,"30":1,"34":1,"36":1,"39":1,"40":3,"44":1,"64":1,"75":2,"77":1}}],["they",{"2":{"0":1,"2":1,"3":2,"4":3,"5":2,"10":2,"11":1,"17":1,"19":1,"21":2,"24":2,"25":1,"27":2,"30":1,"34":2,"35":1,"60":1,"64":1,"67":1,"69":1,"75":1,"76":3,"78":1}}],["them",{"2":{"0":1,"4":1,"5":3,"11":1,"17":1,"25":1,"30":1,"43":1,"47":1,"48":1,"74":1,"75":1}}],["the",{"0":{"15":1},"2":{"0":20,"1":13,"2":8,"3":43,"4":85,"5":45,"6":3,"7":9,"8":7,"9":7,"10":9,"11":6,"12":3,"13":1,"14":3,"15":8,"16":9,"17":5,"19":52,"20":24,"21":16,"22":4,"23":48,"24":56,"25":22,"26":4,"27":9,"28":1,"29":1,"30":6,"31":4,"32":3,"33":2,"34":6,"35":1,"36":1,"38":7,"39":3,"40":6,"41":4,"42":4,"43":11,"44":1,"46":6,"47":4,"48":10,"51":1,"52":1,"56":1,"60":3,"61":4,"62":1,"63":1,"64":7,"65":4,"66":9,"67":4,"68":5,"69":7,"72":2,"74":19,"75":13,"76":6,"77":2,"78":8,"80":3,"81":1,"82":3,"83":2,"84":1,"85":5}}],["tolerance",{"2":{"74":1}}],["todo",{"2":{"49":1,"66":1}}],["top",{"2":{"27":1,"30":1,"69":1}}],["total",{"2":{"23":1}}],["tools",{"2":{"35":1,"51":2,"58":1}}],["too",{"2":{"17":1,"25":1,"55":1,"64":1}}],["together",{"2":{"14":1}}],["touched",{"2":{"74":1}}],["touches",{"2":{"5":7,"74":2}}],["touch",{"2":{"5":2}}],["touching",{"2":{"5":1}}],["tosort",{"2":{"3":4}}],["to",{"0":{"80":1,"81":1},"2":{"0":8,"1":5,"2":4,"3":18,"4":35,"5":18,"6":1,"8":1,"9":2,"10":12,"11":5,"12":3,"14":4,"15":4,"16":2,"17":10,"19":20,"20":8,"21":5,"22":1,"23":16,"24":32,"25":21,"26":2,"27":6,"30":1,"31":2,"32":3,"34":5,"35":3,"36":4,"38":1,"39":1,"40":3,"41":1,"42":2,"43":1,"44":1,"46":2,"48":7,"49":2,"51":1,"57":1,"58":1,"60":1,"61":5,"62":2,"64":3,"66":6,"67":2,"69":10,"74":4,"75":4,"76":3,"78":2,"81":1,"82":1,"83":1,"85":1,"86":2}}],["jan",{"2":{"48":4,"75":1}}],["january",{"2":{"23":2,"48":1}}],["jarring",{"2":{"20":2}}],["jump",{"0":{"55":1},"2":{"55":1}}],["jul",{"2":{"48":6,"75":1}}],["juliaprint",{"2":{"27":2}}],["juliaposition",{"2":{"10":1}}],["juliapoints",{"2":{"9":1}}],["juliahours",{"2":{"23":1}}],["juliahasselection",{"2":{"4":1}}],["juliahasdim",{"2":{"1":1,"19":1}}],["juliaranges",{"2":{"23":1}}],["juliareorder",{"2":{"24":1}}],["juliarebuild",{"2":{"24":1,"27":1,"40":1}}],["juliarefdims",{"2":{"19":1,"27":1}}],["juliaregular",{"2":{"8":1}}],["juliareverseordered",{"2":{"7":1}}],["juliareducedims",{"2":{"3":1}}],["juliagroupby",{"2":{"23":1}}],["juliamakie",{"2":{"68":1,"72":2,"73":1}}],["juliamap",{"2":{"20":1}}],["juliamodify",{"2":{"24":1}}],["juliamonths",{"2":{"23":1}}],["juliamergedims",{"2":{"24":3}}],["juliamergedlookup",{"2":{"4":1}}],["juliametadata",{"2":{"11":1,"19":1}}],["juliamean",{"2":{"0":4,"20":1}}],["juliafunction",{"2":{"20":1}}],["juliaforwardordered",{"2":{"7":1}}],["juliaformat",{"2":{"2":1,"41":1}}],["juliaend",{"2":{"10":1}}],["juliaexplicit",{"2":{"8":1}}],["juliairregular",{"2":{"8":1}}],["juliaintervals",{"2":{"9":1,"23":1}}],["juliaintselector",{"2":{"5":1}}],["juliaindependentdim",{"2":{"0":1}}],["juliawhere",{"2":{"5":1}}],["juliaordered",{"2":{"7":1}}],["juliaorder",{"2":{"4":1,"7":1}}],["juliaotherdims",{"2":{"1":1,"19":1}}],["juliab",{"2":{"71":1}}],["juliablockwidth",{"2":{"27":1}}],["juliabroadcast",{"2":{"24":2}}],["juliabins",{"2":{"23":1}}],["juliabegin",{"2":{"10":1}}],["juliabetween",{"2":{"5":1}}],["juliabounds",{"2":{"4":1}}],["juliabase",{"2":{"19":4,"25":5}}],["juliabasedims",{"2":{"3":1}}],["juliabasetypeof",{"2":{"3":1}}],["julianame",{"2":{"19":1,"26":1}}],["julianame2dim",{"2":{"3":1}}],["julianoname",{"2":{"26":1}}],["julianometadata",{"2":{"11":1}}],["julianolookup",{"2":{"4":1}}],["julianear",{"2":{"5":1}}],["juliatouches",{"2":{"5":1}}],["juliatransformed",{"2":{"4":1}}],["juliatimedim",{"2":{"0":2}}],["juliaunmergedims",{"2":{"24":2}}],["juliaunits",{"2":{"11":1}}],["juliaunordered",{"2":{"7":1}}],["juliaunaligned",{"2":{"4":1}}],["juliausing",{"2":{"0":3,"3":2,"4":6,"5":7,"13":1,"15":1,"16":1,"24":3,"34":1,"43":1,"46":1,"68":1,"69":1,"74":1,"75":1,"79":1,"81":1,"85":1}}],["juliacat",{"2":{"25":1}}],["juliacategorical",{"2":{"4":1}}],["juliacenter",{"2":{"10":1}}],["juliacolor",{"2":{"69":1}}],["juliacopy",{"2":{"25":2}}],["juliacontains",{"2":{"5":1}}],["juliacombinedims",{"2":{"3":1}}],["juliacomparedims",{"2":{"3":1}}],["juliacommondims",{"2":{"3":1}}],["juliacyclicbins",{"2":{"23":1}}],["juliacyclic",{"2":{"4":1}}],["juliaa",{"2":{"24":1}}],["juliaall",{"2":{"5":1}}],["juliaaligned",{"2":{"4":1}}],["juliaat",{"2":{"5":1}}],["juliaarrayselector",{"2":{"5":1}}],["juliaautoposition",{"2":{"10":1}}],["juliaautospan",{"2":{"8":1}}],["juliaautoorder",{"2":{"7":1}}],["juliaautovalues",{"2":{"4":1}}],["juliaautolookup",{"2":{"4":1}}],["juliaabstractname",{"2":{"26":1}}],["juliaabstractdimtable",{"2":{"22":1}}],["juliaabstractdimstack",{"2":{"20":1}}],["juliaabstractdimarray",{"2":{"19":1}}],["juliaabstractbasicdimarray",{"2":{"19":1}}],["juliaabstractmetadata",{"2":{"11":1}}],["juliaabstractcategorical",{"2":{"4":1}}],["juliaabstractcyclic",{"2":{"4":1}}],["juliaabstractsampled",{"2":{"4":1}}],["juliaanondim",{"2":{"0":1}}],["juliashow",{"2":{"27":2}}],["juliashiftlocus",{"2":{"4":1}}],["juliastrict",{"2":{"25":4}}],["juliastart",{"2":{"10":1}}],["juliaspan",{"2":{"4":1,"8":1}}],["juliasampling",{"2":{"4":1,"9":1}}],["juliasampled",{"2":{"4":1}}],["juliaset",{"2":{"24":1}}],["juliasetdims",{"2":{"3":1}}],["juliaseasons",{"2":{"23":1}}],["juliaselector",{"2":{"5":1}}],["juliaselectindices",{"2":{"2":1}}],["juliasortdims",{"2":{"3":1}}],["juliaslicedims",{"2":{"3":1}}],["juliaswapdims",{"2":{"3":1}}],["julialocus",{"2":{"4":1}}],["julialookuptrait",{"2":{"6":1}}],["julialookups",{"2":{"4":1}}],["julialookup",{"2":{"2":1,"4":1}}],["julialabel",{"2":{"2":1}}],["julia>",{"2":{"1":12,"3":4,"12":1,"19":24,"20":8,"21":4,"22":2,"23":2,"24":4,"25":4,"28":1,"33":1,"34":1,"42":1,"43":1,"61":1,"62":2,"74":2,"75":1,"82":1,"86":1}}],["julia",{"2":{"0":1,"14":2,"16":1,"17":1,"23":1,"24":2,"27":2,"31":1,"32":1,"35":3,"54":1,"56":1,"78":1}}],["juliajulia>",{"2":{"0":1,"1":4,"3":1,"12":3,"13":4,"15":10,"16":2,"19":10,"20":1,"21":2,"22":1,"23":4,"24":6,"25":1,"28":17,"29":2,"30":7,"31":2,"32":2,"33":3,"34":4,"42":4,"43":50,"44":73,"46":9,"47":8,"48":13,"49":4,"61":8,"62":2,"64":6,"65":2,"66":6,"74":17,"75":11,"76":1,"77":5,"79":3,"80":5,"82":2,"83":9,"84":4,"85":34,"86":2}}],["juliaz",{"2":{"0":1}}],["juliazdim",{"2":{"0":2}}],["juliayearday",{"2":{"46":1}}],["juliay",{"2":{"0":1}}],["juliaydim",{"2":{"0":2}}],["juliaval",{"2":{"0":4,"4":1}}],["juliadata",{"2":{"69":1}}],["juliadimgroupbyarray",{"2":{"23":1}}],["juliadimtable",{"2":{"22":1}}],["juliadimpoints",{"2":{"21":1}}],["juliadimindices",{"2":{"21":1}}],["juliadimarray",{"2":{"19":1}}],["juliadimnum",{"2":{"1":1,"19":1}}],["juliadimselectors",{"2":{"21":1}}],["juliadimstack",{"2":{"20":1}}],["juliadimsmatch",{"2":{"3":1}}],["juliadims2indices",{"2":{"2":1}}],["juliadims",{"2":{"1":2,"19":2}}],["juliadim",{"2":{"0":1}}],["juliadimension",{"2":{"0":1}}],["juliadimensions",{"2":{"0":1}}],["juliadependentdim",{"2":{"0":1}}],["juliaxdim",{"2":{"0":2}}],["juliax",{"2":{"0":3}}],["jun",{"2":{"48":6,"75":1}}],["just",{"2":{"5":2,"14":1,"25":1,"38":1,"40":1,"43":1,"48":3,"65":1,"66":1,"83":1}}],["j",{"2":{"3":2,"13":3,"71":1,"80":1}}],["jl",{"0":{"22":2,"35":1,"42":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"67":1,"68":1,"69":1},"1":{"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"0":2,"4":5,"5":2,"16":1,"17":7,"22":2,"23":1,"24":2,"27":6,"31":6,"34":1,"35":11,"36":1,"37":1,"38":2,"40":3,"42":1,"43":2,"45":1,"51":3,"52":4,"53":2,"54":1,"55":1,"56":1,"57":2,"58":1,"59":1,"60":1,"64":1,"65":2,"67":4,"68":1,"69":4,"73":1,"78":5,"81":2}}],["o=rand",{"2":{"83":1}}],["omitted",{"2":{"80":4}}],["oct",{"2":{"48":4,"75":1}}],["own",{"2":{"46":1,"49":1,"55":1}}],["objs",{"2":{"39":1}}],["obj",{"2":{"37":1,"39":2,"40":2}}],["object",{"2":{"0":1,"1":9,"2":1,"3":7,"4":7,"6":1,"10":1,"11":2,"19":12,"21":1,"22":1,"24":11,"27":1,"31":2,"34":2,"40":1,"43":3,"49":1,"62":1,"64":1,"66":1}}],["objects",{"0":{"60":1},"1":{"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"0":1,"2":2,"3":1,"4":1,"5":2,"7":1,"11":1,"17":1,"19":1,"20":3,"23":1,"24":4,"30":1,"34":1,"37":1,"38":1,"39":1,"40":3,"43":1,"49":2,"60":1,"65":2,"66":1,"85":1}}],["our",{"2":{"30":2,"43":1,"46":1,"48":6,"69":1}}],["outer",{"2":{"41":1,"61":1,"75":1,"76":3}}],["outcome",{"2":{"20":2}}],["out",{"2":{"4":1,"22":1,"34":1,"51":1,"67":1}}],["outputs",{"2":{"57":1}}],["output",{"2":{"0":4,"3":2,"4":5,"5":7,"15":1,"24":2,"48":1,"49":1,"56":1}}],["old",{"2":{"24":6}}],["optimization",{"2":{"55":1}}],["optimised",{"2":{"7":1}}],["options",{"2":{"24":5,"42":2}}],["optional",{"2":{"19":1,"27":4,"42":2}}],["operation",{"2":{"23":1,"32":1,"69":1}}],["operations",{"2":{"0":1,"17":1,"19":1,"23":1,"25":1,"69":1}}],["open",{"2":{"5":1,"48":35,"74":1}}],["openinterval",{"2":{"5":1}}],["o",{"2":{"4":1,"80":1,"83":2}}],["overheads",{"2":{"86":1}}],["overlapping",{"2":{"23":1}}],["over",{"2":{"0":1,"4":4,"9":1,"14":2,"15":1,"20":3,"21":2,"23":2,"24":6,"25":2,"47":1,"75":1,"85":1}}],["others",{"2":{"24":2}}],["otherwise",{"2":{"4":1,"23":1,"24":1,"25":1,"36":1,"69":1}}],["otherdims",{"2":{"1":3,"19":3,"21":1,"43":8,"44":13}}],["other",{"2":{"0":2,"3":2,"4":2,"5":2,"14":1,"15":1,"17":1,"23":1,"24":3,"25":2,"28":1,"36":1,"44":1,"46":1,"49":1,"68":1,"75":1,"76":2,"78":1,"81":1,"82":1,"83":1}}],["orange",{"2":{"72":1,"73":1}}],["organized",{"2":{"34":1}}],["organises",{"2":{"0":1}}],["originates",{"2":{"23":1}}],["original",{"2":{"3":3,"24":7}}],["origin",{"2":{"11":1}}],["ordering",{"2":{"4":1}}],["order=unordered",{"2":{"4":1,"75":1}}],["order=autoorder",{"2":{"4":2}}],["order=forwardordered",{"2":{"3":1,"75":2}}],["ordered",{"2":{"1":1,"4":1,"7":4,"19":3,"75":2}}],["order",{"0":{"7":1},"2":{"1":1,"2":1,"3":12,"4":23,"5":1,"7":9,"15":1,"19":1,"21":7,"24":17,"25":4,"30":4,"43":6,"64":3,"68":1,"76":2}}],["or",{"2":{"0":5,"1":20,"2":7,"3":20,"4":33,"5":7,"7":1,"8":5,"9":3,"10":3,"11":6,"12":1,"13":2,"15":2,"17":1,"19":32,"20":7,"21":6,"22":4,"23":16,"24":15,"25":5,"27":4,"30":1,"31":2,"32":2,"34":1,"36":3,"38":1,"39":1,"41":1,"42":2,"43":10,"44":1,"45":1,"48":1,"60":1,"61":1,"64":1,"69":3,"72":1,"74":4,"75":3,"76":3,"77":2,"78":1,"81":1,"82":1,"83":2}}],["often",{"2":{"17":1,"23":1,"24":1,"51":1,"75":1}}],["off",{"2":{"14":1,"25":1}}],["offsetarrays",{"2":{"38":2}}],["offset",{"2":{"5":1}}],["of",{"2":{"0":5,"1":13,"2":6,"3":17,"4":45,"5":13,"6":5,"7":3,"8":1,"9":2,"10":7,"11":5,"14":1,"15":2,"16":2,"17":1,"19":35,"20":10,"21":16,"22":3,"23":40,"24":29,"25":10,"26":1,"27":16,"28":2,"30":8,"31":1,"34":2,"35":3,"36":1,"37":1,"38":1,"39":1,"40":2,"41":4,"42":10,"43":10,"46":2,"47":2,"48":5,"51":2,"53":1,"54":1,"56":1,"60":1,"61":1,"63":2,"64":4,"66":2,"67":1,"69":3,"72":1,"74":2,"75":4,"76":3,"77":2,"78":5,"80":1,"82":5,"83":2,"84":1,"85":3}}],["oneto",{"2":{"15":2,"25":2,"75":2}}],["one",{"2":{"3":1,"4":3,"9":1,"16":1,"17":1,"20":2,"24":1,"25":3,"40":2,"64":2,"74":1,"80":3,"82":1,"84":1}}],["ones",{"2":{"1":4,"3":3,"4":1,"14":1,"19":10,"22":1,"24":4,"28":4,"33":1}}],["only",{"2":{"2":1,"4":1,"5":1,"19":3,"21":4,"24":4,"40":2,"48":1,"60":1,"64":1,"69":1,"80":1,"82":1,"83":1,"85":1}}],["on",{"2":{"0":6,"1":1,"2":3,"3":1,"4":2,"5":1,"10":1,"11":1,"14":2,"16":3,"17":2,"19":3,"20":2,"23":3,"24":3,"25":2,"26":1,"27":3,"30":1,"35":1,"41":1,"42":2,"48":1,"57":1,"64":1,"65":1,"67":2,"69":1,"83":2}}],["away",{"2":{"64":1}}],["aware",{"2":{"14":1,"51":1}}],["a1",{"2":{"64":4}}],["aimed",{"2":{"52":1}}],["aggregate",{"2":{"48":1}}],["again",{"2":{"20":1,"30":1}}],["a=rand",{"2":{"82":1}}],["a=falses",{"2":{"61":1}}],["a=3",{"2":{"29":1}}],["a=1",{"2":{"13":1}}],["apr",{"2":{"48":6,"75":2}}],["approach",{"2":{"69":1}}],["appearance",{"2":{"24":1}}],["applies",{"2":{"61":1}}],["applied",{"2":{"4":1,"20":1,"23":2,"24":1,"85":1}}],["applicable",{"2":{"24":1,"69":1}}],["applications",{"2":{"64":1}}],["application",{"2":{"23":1,"35":1}}],["applying",{"2":{"23":2}}],["apply",{"2":{"20":3,"49":1}}],["api",{"0":{"18":1},"1":{"19":1,"20":1,"21":1,"22":1}}],["aug",{"2":{"48":6,"75":1}}],["auxiliary",{"2":{"17":1,"57":1}}],["autodetection",{"0":{"76":1}}],["automata",{"2":{"57":1}}],["automated",{"2":{"24":1}}],["automatic",{"2":{"0":1,"4":1,"10":1}}],["automatically",{"2":{"0":1,"4":3,"7":1,"17":1,"40":1,"75":2,"76":1}}],["autoposition",{"2":{"10":2}}],["autospan",{"2":{"8":2,"75":1}}],["autovalues",{"2":{"4":1,"75":1}}],["autolookup",{"2":{"4":3}}],["autoorder",{"2":{"4":3,"7":2,"75":1}}],["auto",{"2":{"2":1}}],["amazing",{"2":{"16":1}}],["amp",{"0":{"16":1},"1":{"17":1}}],["ambiguity",{"2":{"2":1,"11":1,"14":1,"24":1,"66":1}}],["after",{"2":{"15":1,"19":1,"23":3,"27":3,"48":1}}],["affine",{"2":{"4":1}}],["affect",{"2":{"0":1}}],["adherence",{"2":{"35":1}}],["adjoint",{"2":{"32":1,"85":1}}],["adjacent",{"2":{"5":1}}],["adapt",{"2":{"17":3}}],["addition",{"2":{"74":1}}],["additional",{"2":{"27":2,"75":1}}],["additionally",{"2":{"12":1}}],["adding",{"2":{"4":3,"27":2}}],["add",{"2":{"12":2,"27":1,"28":1,"75":1}}],["added",{"2":{"3":1,"14":1,"27":3,"36":1,"42":2}}],["available",{"2":{"4":1,"11":2}}],["avoids",{"2":{"20":1,"23":1}}],["avoid",{"2":{"0":1,"5":1,"14":1,"20":1,"27":1}}],["active",{"2":{"25":2}}],["actual",{"2":{"17":1}}],["actually",{"2":{"2":1,"4":1}}],["acepted",{"2":{"19":4}}],["accessed",{"2":{"83":1}}],["accessible",{"2":{"69":1}}],["accessing",{"2":{"33":1}}],["accessors",{"2":{"65":1}}],["access",{"2":{"28":1,"34":1,"69":1}}],["accepted",{"2":{"27":2,"42":2,"64":1}}],["accept",{"2":{"19":1,"20":1,"39":1,"41":1,"64":1}}],["acceptable",{"2":{"8":1}}],["accepts",{"2":{"4":1,"5":1,"55":1}}],["accurate",{"2":{"8":1}}],["account",{"2":{"4":2}}],["atol=0",{"2":{"74":1}}],["atol=nothing",{"2":{"5":1}}],["atol",{"2":{"5":1,"21":6,"64":1}}],["attach",{"2":{"4":1}}],["attached",{"2":{"3":1,"38":1}}],["attempting",{"2":{"25":2}}],["attempt",{"2":{"0":1}}],["at",{"2":{"0":1,"3":2,"4":6,"5":11,"9":3,"19":1,"20":3,"21":4,"23":2,"24":1,"27":5,"43":1,"46":1,"48":1,"51":1,"52":1,"74":2,"75":2,"77":2,"82":2}}],["astroimage",{"2":{"58":1}}],["astroimages",{"0":{"58":1},"2":{"58":1}}],["astronomical",{"2":{"58":1}}],["assumes",{"2":{"64":1}}],["assert",{"2":{"49":1}}],["associate",{"2":{"34":2}}],["assignment",{"2":{"15":1,"24":1}}],["assigned",{"2":{"4":9,"60":1,"76":1}}],["ascending",{"2":{"5":1}}],["as",{"2":{"0":6,"1":1,"2":3,"3":5,"4":8,"5":4,"8":1,"10":3,"14":2,"16":2,"17":3,"19":7,"20":6,"21":4,"22":5,"23":5,"24":8,"25":4,"27":2,"32":1,"33":1,"34":1,"35":2,"36":1,"38":1,"39":2,"40":4,"64":3,"67":3,"68":1,"69":2,"72":1,"74":2,"75":1,"76":5}}],["above",{"2":{"44":1,"47":2}}],["about",{"2":{"0":1,"4":3,"11":1,"16":1,"65":1}}],["abstracdimarray",{"2":{"31":1}}],["abstractname",{"2":{"26":3}}],["abstraction",{"2":{"24":1}}],["abstractdimtable",{"2":{"22":2}}],["abstractdimstack",{"2":{"20":4,"22":3,"23":5,"24":10,"25":7,"27":5,"36":1,"41":1,"51":1,"54":1,"61":1,"64":2,"78":1,"82":1,"85":2}}],["abstractdimarrays",{"2":{"3":1,"24":4,"26":1,"27":2,"31":1}}],["abstractdimarray",{"2":{"0":1,"3":2,"4":1,"11":2,"14":1,"17":2,"19":7,"20":5,"21":1,"22":4,"23":7,"24":17,"25":7,"27":6,"32":1,"36":1,"40":3,"41":2,"45":1,"51":1,"52":1,"55":1,"57":2,"58":1,"61":1,"64":2,"67":1,"68":1,"78":1,"82":1,"85":1}}],["abstractrng",{"2":{"19":2}}],["abstractrange",{"2":{"4":4,"23":2,"75":1,"76":1}}],["abstractbasicarray",{"2":{"19":1}}],["abstractbasicdimarray",{"2":{"19":2,"24":1}}],["abstractmetadata",{"2":{"11":3,"24":1}}],["abstractmatrix",{"2":{"8":1}}],["abstractstring",{"2":{"4":1}}],["abstractsampled",{"2":{"4":6,"36":1,"51":1,"75":1}}],["abstractcolumns",{"2":{"22":1}}],["abstractcategorical",{"2":{"4":4,"36":1}}],["abstractcyclic",{"2":{"4":2}}],["abstractarray",{"2":{"2":3,"3":2,"4":4,"5":1,"19":4,"20":2,"21":3,"23":4,"24":4,"25":2,"28":1,"35":1,"38":1,"48":2,"75":1,"76":1,"82":1}}],["abstractvector",{"2":{"0":1,"4":4,"19":8}}],["abstract",{"2":{"0":7,"1":2,"3":4,"4":4,"5":3,"6":1,"10":1,"11":1,"19":4,"20":2,"22":1,"24":1,"26":1}}],["abs",{"2":{"13":1}}],["absent",{"2":{"3":1}}],["axis",{"2":{"0":6,"2":1,"3":2,"4":9,"10":3,"19":4,"21":1,"24":1,"38":1,"48":1,"67":1,"68":2,"74":2,"75":2}}],["axes",{"0":{"38":1},"2":{"0":1,"1":1,"4":1,"15":2,"19":1,"25":3,"30":2,"32":1,"38":2,"64":1,"68":2}}],["algebraic",{"2":{"69":1}}],["algebra",{"2":{"69":1}}],["algebraofgraphics",{"0":{"69":1},"2":{"69":5}}],["algorithms",{"2":{"3":1,"64":1}}],["alpha",{"2":{"13":1}}],["alpha=",{"2":{"13":1}}],["align",{"2":{"10":1}}],["aligned",{"2":{"4":6,"77":1}}],["although",{"2":{"4":1,"19":1,"67":1}}],["alone",{"2":{"4":2}}],["along",{"0":{"15":1},"2":{"0":1,"23":1,"32":1,"43":1,"75":1}}],["always",{"2":{"1":1,"3":1,"9":1,"11":2,"19":1,"20":2,"24":2,"25":4,"27":2,"40":1,"44":1,"51":1,"64":1}}],["already",{"2":{"0":1,"17":1}}],["also",{"2":{"0":3,"3":3,"5":2,"10":1,"11":1,"15":1,"20":1,"23":1,"24":3,"30":1,"31":1,"32":1,"34":1,"38":1,"39":1,"40":1,"47":1,"48":3,"49":2,"51":1,"66":1,"68":2,"69":3,"74":4,"75":1,"77":1,"81":1,"84":1}}],["allocate",{"2":{"78":1}}],["allocations",{"2":{"86":2}}],["allocation",{"2":{"24":1}}],["allocs",{"2":{"33":2}}],["allows",{"2":{"10":1,"23":1,"24":1,"69":1}}],["allowing",{"2":{"4":1}}],["allow",{"2":{"4":1,"10":1,"11":1,"57":1}}],["all",{"2":{"0":5,"2":1,"3":3,"4":5,"5":6,"6":1,"11":1,"17":1,"19":3,"20":5,"21":3,"24":11,"25":8,"26":1,"27":2,"31":1,"40":2,"42":2,"43":1,"44":3,"48":1,"51":1,"57":2,"60":1,"61":3,"69":1,"74":1,"78":1,"82":2,"83":1,"84":1,"85":1,"86":1}}],["arviz",{"0":{"54":1},"2":{"36":1,"54":2}}],["archgdal",{"2":{"35":1}}],["around",{"2":{"23":3,"24":1}}],["arbitrary",{"0":{"29":1},"2":{"21":1,"23":2,"29":1,"48":1}}],["arg",{"2":{"27":3,"42":3,"64":1}}],["args",{"2":{"3":1,"19":1,"24":3,"27":12,"40":1,"42":12}}],["argumenterror",{"2":{"30":1}}],["argument",{"2":{"2":1,"3":2,"4":4,"11":2,"15":1,"19":2,"20":1,"24":4,"39":1,"40":3,"72":1}}],["arguments",{"2":{"0":1,"1":4,"3":4,"4":8,"8":1,"17":1,"19":6,"20":1,"23":1,"24":5,"27":2,"40":1,"42":2,"64":2}}],["arrays",{"0":{"19":1},"2":{"5":1,"15":1,"19":5,"20":1,"23":1,"24":2,"25":1,"26":1,"27":2,"60":1,"61":3,"76":3,"77":1,"80":1,"81":1}}],["arrayselectors",{"2":{"5":1}}],["arrayselector",{"2":{"5":4}}],["array",{"0":{"20":1,"84":1},"2":{"0":3,"1":1,"2":2,"3":4,"4":16,"5":1,"9":1,"10":1,"11":1,"13":1,"14":1,"15":1,"16":1,"17":3,"19":6,"20":3,"21":3,"22":1,"23":1,"24":8,"25":4,"26":2,"27":2,"31":1,"32":1,"33":1,"36":2,"38":3,"41":2,"42":2,"47":1,"48":1,"55":1,"61":4,"64":4,"69":1,"74":2,"75":1,"76":2,"77":1,"78":1,"86":1}}],["aren",{"2":{"77":1}}],["area",{"2":{"5":3}}],["are",{"2":{"0":7,"1":1,"2":2,"3":17,"4":15,"5":11,"7":1,"8":2,"9":2,"11":1,"14":1,"15":1,"17":2,"19":10,"20":3,"21":4,"22":2,"23":1,"24":15,"25":5,"27":13,"28":2,"30":1,"34":4,"35":2,"36":3,"40":2,"42":10,"43":1,"46":1,"48":1,"51":2,"57":2,"60":2,"64":3,"68":1,"75":2,"76":9,"77":1,"78":3,"84":2,"85":1,"86":1}}],["analysis",{"2":{"48":1,"53":1,"54":1}}],["analogous",{"2":{"14":1}}],["answer",{"2":{"35":1}}],["ansi",{"2":{"27":1}}],["anomalies",{"2":{"23":1}}],["another",{"2":{"4":1,"19":1,"20":1,"21":2,"25":1,"29":1,"45":1,"52":1,"64":1,"74":1,"77":1,"83":1,"84":2}}],["anonymous",{"2":{"0":1}}],["anondim",{"2":{"0":2}}],["annual",{"2":{"4":1}}],["anything",{"2":{"2":1,"24":1}}],["any",{"2":{"0":1,"1":5,"2":1,"3":4,"4":5,"5":5,"11":2,"17":1,"19":5,"23":8,"24":1,"25":1,"27":2,"28":12,"34":2,"39":3,"40":1,"43":2,"47":7,"48":11,"49":3,"55":1,"69":1,"75":1,"81":1,"82":1,"85":1}}],["an",{"2":{"0":2,"1":8,"2":1,"3":5,"4":9,"5":5,"6":1,"7":1,"8":1,"9":1,"10":3,"11":2,"14":1,"17":1,"19":21,"20":1,"21":6,"22":3,"23":6,"24":8,"25":2,"26":1,"27":6,"30":1,"31":2,"32":1,"34":1,"38":1,"40":1,"41":2,"43":6,"47":1,"48":3,"49":1,"54":2,"69":2,"72":1,"74":2,"75":2,"76":1,"78":1,"82":2}}],["and",{"0":{"14":1,"47":1,"78":1},"1":{"15":1,"79":1,"80":1,"81":1},"2":{"0":9,"2":7,"3":8,"4":27,"5":10,"7":2,"8":3,"10":2,"11":4,"13":1,"14":2,"15":4,"16":1,"17":4,"19":17,"20":13,"21":2,"22":3,"23":4,"24":10,"25":11,"26":1,"27":12,"28":2,"29":2,"30":1,"31":3,"34":3,"35":5,"36":1,"38":2,"39":1,"40":3,"41":3,"42":6,"43":3,"44":2,"48":4,"49":1,"51":7,"52":2,"57":2,"58":1,"60":1,"61":2,"64":2,"65":1,"66":1,"67":3,"68":4,"69":3,"74":3,"75":3,"76":8,"77":1,"78":6,"80":3,"81":1,"82":1,"83":1,"85":1,"86":3}}],["a",{"0":{"72":1},"2":{"0":30,"1":30,"2":11,"3":32,"4":50,"5":38,"6":1,"7":2,"8":4,"9":1,"10":6,"11":8,"13":6,"14":3,"15":7,"16":5,"17":1,"19":69,"20":32,"21":16,"22":5,"23":43,"24":46,"25":12,"26":2,"27":13,"28":7,"29":3,"31":2,"34":4,"36":2,"37":1,"38":2,"40":1,"41":2,"42":4,"43":64,"44":73,"45":2,"46":1,"47":8,"48":14,"49":4,"51":5,"52":1,"54":1,"55":2,"56":1,"57":1,"60":1,"61":10,"62":9,"63":2,"64":13,"65":4,"66":14,"67":2,"68":6,"69":13,"71":1,"72":3,"73":2,"74":60,"75":14,"76":6,"77":5,"79":5,"80":33,"81":9,"82":5,"83":14,"84":27,"85":41,"86":6}}]],"serializationVersion":2}';export{e as default};
diff --git a/dev/assets/chunks/VPLocalSearchBox.dNVfz4aJ.js b/dev/assets/chunks/VPLocalSearchBox.Bitc2Dar.js
similarity index 66%
rename from dev/assets/chunks/VPLocalSearchBox.dNVfz4aJ.js
rename to dev/assets/chunks/VPLocalSearchBox.Bitc2Dar.js
index 70eaaa121..5e9ce9998 100644
--- a/dev/assets/chunks/VPLocalSearchBox.dNVfz4aJ.js
+++ b/dev/assets/chunks/VPLocalSearchBox.Bitc2Dar.js
@@ -1,8 +1,8 @@
-var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as nt,ap as Dt,aq as zt,s as Pt,ar as jt,a6 as Vt,as as $t,ae as Bt,P as he,at as Wt,v as Me,O as _e,au as Kt,av as Jt,W as Ut,R as qt,$ as Gt,o as H,b as Ht,j as _,a0 as Qt,k as L,aw as Yt,ax as Zt,ay as Xt,c as Z,n as it,e as Se,C as rt,F as at,a as fe,t as pe,az as es,_ as ts}from"./framework.Brp_kw4H.js";import{u as ss,c as ns}from"./theme.DDyAget_.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.zSG8EBw1.js"),[])};/*!
+var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as he,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aw as Qt,ax as at,ay as Yt,a8 as Zt,ae as Xt,az as es,_ as ts}from"./framework.60YQGL-0.js";import{u as ss,c as ns}from"./theme.BgWk1Cn2.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.WeONpZsl.js"),[])};/*!
 * tabbable 6.2.0
 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
 */var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Ce.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Ce(t,e)};/*!
 * focus-trap 7.6.2
 * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
 */function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,s=Array(e);t0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Os=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cs=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Rs=function(e){return ge(e)&&!e.shiftKey},As=function(e){return ge(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},ve=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:{},g=d.hasFallback,T=g===void 0?!1:g,k=d.params,O=k===void 0?[]:k,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Is(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=s.querySelector(S)}catch(v){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(v.message,'"'))}if(!C&&!T)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(s.activeElement)>=0)u=s.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),g=ws(u,r.tabbableOptions),T=d.length>0?d[0]:void 0,k=d.length>0?d[d.length-1]:void 0,O=g.find(function(v){return oe(v)}),S=g.slice().reverse().find(function(v){return oe(v)}),C=!!d.find(function(v){return re(v)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:C,firstTabbableNode:T,lastTabbableNode:k,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?E?g.slice(g.indexOf(p)+1).find(function(z){return oe(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(E?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(m());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Os(u)&&u.select()}},x=function(u){var d=h("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,T=u.isBackward,k=T===void 0?!1:T;d=d||Ee(g),f();var O=null;if(i.tabbableGroups.length>0){var S=c(d,g),C=S>=0?i.containerGroups[S]:void 0;if(S<0)k?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(k){var v=i.tabbableGroups.findIndex(function(j){var I=j.firstTabbableNode;return d===I});if(v<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(v=S),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,E=i.tabbableGroups[p];O=re(d)>=0?E.lastTabbableNode:E.lastDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var I=j.lastTabbableNode;return d===I});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d))}}else O=h("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(ve(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var T,k=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(v){return v===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(T=S[C-1],k=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return re(p)>0})})||(k=!1);else k=!1;k&&(T=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(T||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(ge(u)&&u.preventDefault(),y(g))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Cs(u)&&ve(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||ve(r.clickOutsideDeactivates,u)||ve(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(m())}):y(m()),s.addEventListener("focusin",A,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",Q,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},be=function(){if(i.active)return s.removeEventListener("focusin",A,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",Q,!0),s.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(g){var T=Array.from(g.removedNodes);return T.some(function(k){return k===i.mostRecentlyFocusedNode})});d&&y(m())},U=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,q=function(){U&&(U.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){U.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),T=l(u,"checkCanFocusTrap");T||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var k=function(){T&&f(),$(),q(),g==null||g()};return T?(T(i.containers.concat()).then(k,k),this):(k(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,q(),ut.deactivateTrap(n,o);var g=l(d,"onDeactivate"),T=l(d,"onPostDeactivate"),k=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),T==null||T()})};return O&&k?(k(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=l(u,"onPause"),g=l(u,"onPostPause");return i.paused=!0,d==null||d(),be(),q(),g==null||g(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=l(u,"onUnpause"),g=l(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),$(),q(),g==null||g(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),q(),this}},o.updateContainerElements(e),o};function Ds(a,e={}){let t;const{immediate:s,...n}=e,r=ie(!1),i=ie(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=me(()=>{const f=tt(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=tt(b);return typeof y=="string"?y:Rt(y)}).filter(At)});return $e(m,f=>{f.length&&(t=Ls(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let zs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ps(a){const e=new zs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const js="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const s=e.get(le(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Vs=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=qe(s);for(const i of n.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,$s(this._tree,e)}entries(){return new De(this,js)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Vs(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);return s.set(D,t(s.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);let n=s.get(D);return n===void 0&&s.set(D,n=t()),n}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==D&&e.startsWith(s))return t.push([a,s]),Re(a.get(s),e.slice(s.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=qe(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==D&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=qe(a);s.set(n+e,t),s.delete(n)},qe=a=>a[a.length-1],Ge="or",kt="and",Bs="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},qs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:l}]of s){const c=o.length||1,h={id:this._documentIds.get(r),score:i*c,terms:Object.keys(l),queryTerms:o,match:l};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===ue.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(pt),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(n),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),Te(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(n),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map(Us(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=h*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ws[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[f],Q=Js(A,y,this._documentCount,J,x,l),W=s*n*m*R*Q,V=c.get(w);if(V){V.score+=W,Gs(V.terms,e);const $=Pe(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ws={[Ge]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Bs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Ks={k:1.2,b:.7,d:.5},Js=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},Us=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Hs),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Ks},qs={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),Ue),Gs=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Hs=/[\n\r\p{Z}\p{P}]+/u;class Qs{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Ys=["aria-owns"],Zs={class:"shell"},Xs=["title"],en={class:"search-actions before"},tn=["title"],sn=["aria-activedescendant","aria-controls","placeholder"],nn={class:"search-actions"},rn=["title"],an=["disabled","title"],on=["id","role","aria-labelledby"],ln=["id","aria-selected"],cn=["href","aria-label","onMouseenter","onFocusin","data-index"],un={class:"titles"},dn=["innerHTML"],hn={class:"title main"},fn=["innerHTML"],pn={key:0,class:"excerpt-wrapper"},vn={key:0,class:"excerpt",inert:""},mn=["innerHTML"],gn={key:0,class:"no-results"},bn={class:"search-keyboard-shortcuts"},yn=["aria-label"],wn=["aria-label"],xn=["aria-label"],_n=["aria-label"],Sn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,s=xe(),n=xe(),r=xe(is),i=ss(),{activate:o}=Ds(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=st(async()=>{var v,p,E,F,z,P,j,I,K;return nt(ue.loadJSON((E=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:E.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(I=c.value.search.options)==null?void 0:I.miniSearch)==null?void 0:K.options)}))}),f=me(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=me(()=>{var v,p,E;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((E=c.value.search.options)==null?void 0:E.detailedView)===!1)}),x=me(()=>{var p,E,F,z,P,j,I;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(E=v==null?void 0:v.locales)==null?void 0:E[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((I=(j=v==null?void 0:v.translations)==null?void 0:j.button)==null?void 0:I.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(f,()=>{R.value=!1});const A=st(async()=>{if(n.value)return nt(new Ps(n.value))},null),J=new Qs(16);jt(()=>[h.value,f.value,b.value],async([v,p,E],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==v&&J.clear();let P=!1;if(z(()=>{P=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const j=E?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const se=B.slice(0,B.indexOf("#"));let Y=J.get(se);if(Y)continue;Y=new Map,J.set(se,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const ne=$t(G);ne.config.warnHandler=()=>{},ne.provide(Bt,i),Object.defineProperties(ne.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ne.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),ne.unmount()}if(P)return}const I=new Set;if(w.value=w.value.map(B=>{const[te,se]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(se))??"";for(const ne in B.match)I.add(ne);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var se;(se=A.value)==null||se.markRegExp(k(I),{done:B})}})});const K=((ee=s.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(v){const p=Vt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(E){return console.error(E),{id:v,mod:{}}}}const W=ie(),V=me(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,E;(p=W.value)==null||p.focus(),v&&((E=W.value)==null||E.select())}Me(()=>{$()});function be(v){v.pointerType==="mouse"&&$()}const M=ie(-1),U=ie(!0);$e(w,v=>{M.value=v.length?0:-1,q()});function q(){he(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),U.value=!0,q()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),U.value=!0,q()});const N=Kt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[M.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),Jt("popstate",v=>{v.preventDefault(),t("close")});const g=Ut(qt?document.body:null);Me(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Gt(()=>{g.value=!1});function T(){f.value="",he().then(()=>$(!1))}function k(v){return new RegExp([...v].sort((p,E)=>E.length-p.length).map(p=>`(${Wt(p)})`).join("|"),"gi")}function O(v){var F;if(!U.value)return;const p=(F=v.target)==null?void 0:F.closest(".result"),E=Number.parseInt(p==null?void 0:p.dataset.index);E>=0&&E!==M.value&&(M.value=E),U.value=!1}return(v,p)=>{var E,F,z,P,j;return H(),Ht(es,{to:"body"},[_("div",{ref_key:"el",ref:s,role:"button","aria-owns":(E=w.value)!=null&&E.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),_("div",Zs,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>be(I)),onSubmit:p[5]||(p[5]=Qt(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,Xs),_("div",en,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,tn)]),Yt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Xt(f)?f.value=I:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,sn),[[Zt,L(f)]]),_("div",nn,[y.value?Se("",!0):(H(),Z("button",{key:0,class:it(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rn)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:T},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,an)])],32),_("ul",{ref_key:"resultsEl",ref:n,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(at,null,rt(w.value,(I,K)=>(H(),Z("li",{key:I.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:I.id,class:it(["result",{selected:M.value===K}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:ee=>!U.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>v.$emit("close")),"data-index":K},[_("div",null,[_("div",un,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(at,null,rt(I.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,dn),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hn,[_("span",{class:"text",innerHTML:I.title},null,8,fn)])]),L(b)?(H(),Z("div",pn,[I.text?(H(),Z("div",vn,[_("div",{class:"vp-doc",innerHTML:I.text},null,8,mn)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cn)],8,ln))),128)),L(f)&&!w.value.length&&R.value?(H(),Z("li",gn,[fe(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(f)),1),p[15]||(p[15]=fe('" '))])):Se("",!0)],40,on),_("div",bn,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,yn),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,wn),fe(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xn),fe(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_n),fe(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Ys)])}}}),Fn=ts(Sn,[["__scopeId","data-v-42e65fb9"]]);export{Fn as default};
+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lt(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function ct(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Os=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cs=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Rs=function(e){return ge(e)&&!e.shiftKey},As=function(e){return ge(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},ve=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:{},g=d.hasFallback,T=g===void 0?!1:g,k=d.params,O=k===void 0?[]:k,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Is(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=s.querySelector(S)}catch(v){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(v.message,'"'))}if(!C&&!T)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(s.activeElement)>=0)u=s.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),g=ws(u,r.tabbableOptions),T=d.length>0?d[0]:void 0,k=d.length>0?d[d.length-1]:void 0,O=g.find(function(v){return oe(v)}),S=g.slice().reverse().find(function(v){return oe(v)}),C=!!d.find(function(v){return re(v)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:C,firstTabbableNode:T,lastTabbableNode:k,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?E?g.slice(g.indexOf(p)+1).find(function(z){return oe(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(E?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(m());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Os(u)&&u.select()}},x=function(u){var d=h("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,T=u.isBackward,k=T===void 0?!1:T;d=d||Ee(g),f();var O=null;if(i.tabbableGroups.length>0){var S=c(d,g),C=S>=0?i.containerGroups[S]:void 0;if(S<0)k?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(k){var v=i.tabbableGroups.findIndex(function(j){var I=j.firstTabbableNode;return d===I});if(v<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(v=S),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,E=i.tabbableGroups[p];O=re(d)>=0?E.lastTabbableNode:E.lastDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var I=j.lastTabbableNode;return d===I});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d))}}else O=h("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(ve(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var T,k=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(v){return v===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(T=S[C-1],k=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return re(p)>0})})||(k=!1);else k=!1;k&&(T=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(T||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(ge(u)&&u.preventDefault(),y(g))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Cs(u)&&ve(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||ve(r.clickOutsideDeactivates,u)||ve(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(m())}):y(m()),s.addEventListener("focusin",A,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",Q,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},be=function(){if(i.active)return s.removeEventListener("focusin",A,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",Q,!0),s.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(g){var T=Array.from(g.removedNodes);return T.some(function(k){return k===i.mostRecentlyFocusedNode})});d&&y(m())},U=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,q=function(){U&&(U.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){U.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),T=l(u,"checkCanFocusTrap");T||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var k=function(){T&&f(),$(),q(),g==null||g()};return T?(T(i.containers.concat()).then(k,k),this):(k(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,q(),ut.deactivateTrap(n,o);var g=l(d,"onDeactivate"),T=l(d,"onPostDeactivate"),k=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),T==null||T()})};return O&&k?(k(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=l(u,"onPause"),g=l(u,"onPostPause");return i.paused=!0,d==null||d(),be(),q(),g==null||g(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=l(u,"onUnpause"),g=l(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),$(),q(),g==null||g(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),q(),this}},o.updateContainerElements(e),o};function Ds(a,e={}){let t;const{immediate:s,...n}=e,r=ie(!1),i=ie(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=me(()=>{const f=tt(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=tt(b);return typeof y=="string"?y:Rt(y)}).filter(At)});return $e(m,f=>{f.length&&(t=Ls(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let zs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ps(a){const e=new zs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const js="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const s=e.get(le(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Vs=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=qe(s);for(const i of n.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,$s(this._tree,e)}entries(){return new De(this,js)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Vs(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);return s.set(D,t(s.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);let n=s.get(D);return n===void 0&&s.set(D,n=t()),n}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==D&&e.startsWith(s))return t.push([a,s]),Re(a.get(s),e.slice(s.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=qe(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==D&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=qe(a);s.set(n+e,t),s.delete(n)},qe=a=>a[a.length-1],Ge="or",kt="and",Bs="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},qs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:s}=this._options,n=Object.assign(Object.assign({},s),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:h}]of r){const m=c.length||1,f={id:this._documentIds.get(o),score:l*m,terms:Object.keys(h),queryTerms:c,match:h};Object.assign(f,this._storedFields.get(o)),(n.filter==null||n.filter(f))&&i.push(f)}return e===ue.wildcard&&n.boostDocument==null||i.sort(pt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(n),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),Te(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(n),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map(Us(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=h*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ws[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[f],Q=Js(A,y,this._documentCount,J,x,l),W=s*n*m*R*Q,V=c.get(w);if(V){V.score+=W,Gs(V.terms,e);const $=Pe(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ws={[Ge]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Bs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Ks={k:1.2,b:.7,d:.5},Js=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},Us=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Hs),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Ks},qs={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),Ue),Gs=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Hs=/[\n\r\p{Z}\p{P}]+/u;class Qs{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Ys=["aria-owns"],Zs={class:"shell"},Xs=["title"],en={class:"search-actions before"},tn=["title"],sn=["aria-activedescendant","aria-controls","placeholder"],nn={class:"search-actions"},rn=["title"],an=["disabled","title"],on=["id","role","aria-labelledby"],ln=["id","aria-selected"],cn=["href","aria-label","onMouseenter","onFocusin","data-index"],un={class:"titles"},dn=["innerHTML"],hn={class:"title main"},fn=["innerHTML"],pn={key:0,class:"excerpt-wrapper"},vn={key:0,class:"excerpt",inert:""},mn=["innerHTML"],gn={key:0,class:"no-results"},bn={class:"search-keyboard-shortcuts"},yn=["aria-label"],wn=["aria-label"],xn=["aria-label"],_n=["aria-label"],Sn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,s=xe(),n=xe(),r=xe(is),i=ss(),{activate:o}=Ds(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=st(async()=>{var v,p,E,F,z,P,j,I,K;return at(ue.loadJSON((E=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:E.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(I=c.value.search.options)==null?void 0:I.miniSearch)==null?void 0:K.options)}))}),f=me(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=me(()=>{var v,p,E;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((E=c.value.search.options)==null?void 0:E.detailedView)===!1)}),x=me(()=>{var p,E,F,z,P,j,I;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(E=v==null?void 0:v.locales)==null?void 0:E[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((I=(j=v==null?void 0:v.translations)==null?void 0:j.button)==null?void 0:I.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(f,()=>{R.value=!1});const A=st(async()=>{if(n.value)return at(new Ps(n.value))},null),J=new Qs(16);jt(()=>[h.value,f.value,b.value],async([v,p,E],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==v&&J.clear();let P=!1;if(z(()=>{P=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const j=E?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const se=B.slice(0,B.indexOf("#"));let Y=J.get(se);if(Y)continue;Y=new Map,J.set(se,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const ne=Yt(G);ne.config.warnHandler=()=>{},ne.provide(Zt,i),Object.defineProperties(ne.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ne.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),ne.unmount()}if(P)return}const I=new Set;if(w.value=w.value.map(B=>{const[te,se]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(se))??"";for(const ne in B.match)I.add(ne);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var se;(se=A.value)==null||se.markRegExp(k(I),{done:B})}})});const K=((ee=s.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(v){const p=Xt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(E){return console.error(E),{id:v,mod:{}}}}const W=ie(),V=me(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,E;(p=W.value)==null||p.focus(),v&&((E=W.value)==null||E.select())}Me(()=>{$()});function be(v){v.pointerType==="mouse"&&$()}const M=ie(-1),U=ie(!0);$e(w,v=>{M.value=v.length?0:-1,q()});function q(){he(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),U.value=!0,q()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),U.value=!0,q()});const N=Vt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[M.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",v=>{v.preventDefault(),t("close")});const g=Bt(Wt?document.body:null);Me(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Kt(()=>{g.value=!1});function T(){f.value="",he().then(()=>$(!1))}function k(v){return new RegExp([...v].sort((p,E)=>E.length-p.length).map(p=>`(${es(p)})`).join("|"),"gi")}function O(v){var F;if(!U.value)return;const p=(F=v.target)==null?void 0:F.closest(".result"),E=Number.parseInt(p==null?void 0:p.dataset.index);E>=0&&E!==M.value&&(M.value=E),U.value=!1}return(v,p)=>{var E,F,z,P,j;return H(),Jt(Qt,{to:"body"},[_("div",{ref_key:"el",ref:s,role:"button","aria-owns":(E=w.value)!=null&&E.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),_("div",Zs,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>be(I)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,Xs),_("div",en,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,tn)]),qt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Ht(f)?f.value=I:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,sn),[[Gt,L(f)]]),_("div",nn,[y.value?Se("",!0):(H(),Z("button",{key:0,class:nt(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rn)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:T},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,an)])],32),_("ul",{ref_key:"resultsEl",ref:n,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(rt,null,it(w.value,(I,K)=>(H(),Z("li",{key:I.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:I.id,class:nt(["result",{selected:M.value===K}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:ee=>!U.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>v.$emit("close")),"data-index":K},[_("div",null,[_("div",un,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(rt,null,it(I.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,dn),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hn,[_("span",{class:"text",innerHTML:I.title},null,8,fn)])]),L(b)?(H(),Z("div",pn,[I.text?(H(),Z("div",vn,[_("div",{class:"vp-doc",innerHTML:I.text},null,8,mn)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cn)],8,ln))),128)),L(f)&&!w.value.length&&R.value?(H(),Z("li",gn,[fe(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(f)),1),p[15]||(p[15]=fe('" '))])):Se("",!0)],40,on),_("div",bn,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,yn),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,wn),fe(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xn),fe(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_n),fe(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Ys)])}}}),Fn=ts(Sn,[["__scopeId","data-v-42e65fb9"]]);export{Fn as default};
diff --git a/dev/assets/chunks/framework.Brp_kw4H.js b/dev/assets/chunks/framework.60YQGL-0.js
similarity index 66%
rename from dev/assets/chunks/framework.Brp_kw4H.js
rename to dev/assets/chunks/framework.60YQGL-0.js
index c1713caa9..20165b2a8 100644
--- a/dev/assets/chunks/framework.Brp_kw4H.js
+++ b/dev/assets/chunks/framework.60YQGL-0.js
@@ -2,17 +2,17 @@
 * @vue/shared v3.5.13
 * (c) 2018-present Yuxi (Evan) You and Vue contributors
 * @license MIT
-**//*! #__NO_SIDE_EFFECTS__ */function Ns(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Tt=[],ke=()=>{},Ko=()=>!1,en=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),ae=Object.assign,Hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},qo=Object.prototype.hasOwnProperty,z=(e,t)=>qo.call(e,t),W=Array.isArray,Et=e=>In(e)==="[object Map]",ii=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Xe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",oi=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),li=Object.prototype.toString,In=e=>li.call(e),Go=e=>In(e).slice(8,-1),ci=e=>In(e)==="[object Object]",$s=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yo=/-(\w)/g,Le=Nn(e=>e.replace(Yo,(t,n)=>n?n.toUpperCase():"")),Xo=/\B([A-Z])/g,st=Nn(e=>e.replace(Xo,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},vs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Jo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let ar;const Hn=()=>ar||(ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ds(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(Qo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),sl=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===li||!q(e.toString))?ui(e)?sl(e.value):JSON.stringify(e,di,2):String(e),di=(e,t)=>ui(t)?di(e,t.value):Et(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[zn(s,i)+" =>"]=r,n),{})}:ii(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zn(n))}:Xe(t)?zn(t):ne(t)&&!W(t)&&!ci(t)?String(t):t,zn=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
+**//*! #__NO_SIDE_EFFECTS__ */function Ns(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Et=[],ke=()=>{},Ko=()=>!1,en=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),ae=Object.assign,Ds=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},qo=Object.prototype.hasOwnProperty,z=(e,t)=>qo.call(e,t),W=Array.isArray,Tt=e=>In(e)==="[object Map]",ii=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Xe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",oi=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),li=Object.prototype.toString,In=e=>li.call(e),Go=e=>In(e).slice(8,-1),ci=e=>In(e)==="[object Object]",Hs=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yo=/-(\w)/g,Le=Nn(e=>e.replace(Yo,(t,n)=>n?n.toUpperCase():"")),Xo=/\B([A-Z])/g,st=Nn(e=>e.replace(Xo,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},vs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Jo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let ar;const Dn=()=>ar||(ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function $s(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(Qo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),sl=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===li||!q(e.toString))?ui(e)?sl(e.value):JSON.stringify(e,di,2):String(e),di=(e,t)=>ui(t)?di(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[zn(s,i)+" =>"]=r,n),{})}:ii(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zn(n))}:Xe(t)?zn(t):ne(t)&&!W(t)&&!ci(t)?String(t):t,zn=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
 * @vue/reactivity v3.5.13
 * (c) 2018-present Yuxi (Evan) You and Vue contributors
 * @license MIT
-**/let we;class rl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function yi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function vi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ks(s),ol(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_i(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _i(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!_s(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{yi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,vi(e),e.flags&=-3}}function ks(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ks(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function ol(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const bi=[];function rt(){bi.push(Ne),Ne=!1}function it(){const e=bi.pop();Ne=e===void 0?!0:e}function fr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class ll{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $n{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new ll(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,wi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Us()}}}function wi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)wi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,dt=Symbol(""),bs=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Cn.get(e);s||Cn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new $n),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Cn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Vs(),t==="clear")o.forEach(l);else{const c=W(e),f=c&&$s(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===qt||!Xe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Et(e)&&l(o.get(bs)));break;case"delete":c||(l(o.get(dt)),Et(e)&&l(o.get(bs)));break;case"set":Et(e)&&l(o.get(dt));break}}Us()}function cl(e,t){const n=Cn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function Dn(e){return me(e=J(e),"iterate",qt),e}const al={__proto__:null,[Symbol.iterator](){return Zn(this,Symbol.iterator,ye)},concat(...e){return _t(this).concat(...e.map(t=>W(t)?_t(t):t))},entries(){return Zn(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return es(this,"includes",e)},indexOf(...e){return es(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return es(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return ur(this,"reduce",e,t)},reduceRight(e,...t){return ur(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Zn(this,"values",ye)}};function Zn(e,t,n){const s=Dn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const fl=Array.prototype;function We(e,t,n,s,r,i){const o=Dn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==fl[t]){const h=c.apply(e,i);return l?ye(h):h}let f=n;o!==e&&(l?f=function(h,y){return n.call(this,ye(h),y,e)}:n.length>2&&(f=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function ur(e,t,n,s){const r=Dn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function es(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&Ks(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Vs();const s=J(e)[t].apply(e,n);return Us(),it(),s}const ul=Ns("__proto__,__v_isRef,__isVue"),Si=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function dl(e){Xe(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class xi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Sl:Ai:i?Ci:Ei).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=al[n]))return c;if(n==="hasOwnProperty")return dl}const l=Reflect.get(t,n,fe(t)?t:s);return(Xe(n)?Si.has(n):ul(n))||(r||me(t,"get",n),i)?l:fe(l)?o&&$s(n)?l:l.value:ne(l)?r?Vn(l):jn(l):l}}class Ti extends xi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=W(t)&&$s(n)?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function yl(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Et(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?ws:t?Ss:ye;return!t&&me(i,"iterate",c?bs:dt),{next(){const{value:h,done:y}=f.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function vl(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=cn(o),f=t?ws:e?Ss:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?ws:e?Ss:ye;return!e&&me(c,"iterate",dt),l.forEach((a,h)=>r.call(i,f(a),f(h),o))}};return ae(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=cn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=cn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=yl(r,e,t)}),n}function Bs(e,t){const n=vl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const _l={get:Bs(!1,!1)},bl={get:Bs(!1,!0)},wl={get:Bs(!0,!1)};const Ei=new WeakMap,Ci=new WeakMap,Ai=new WeakMap,Sl=new WeakMap;function xl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Tl(e){return e.__v_skip||!Object.isExtensible(e)?0:xl(Go(e))}function jn(e){return yt(e)?e:Ws(e,!1,pl,_l,Ei)}function El(e){return Ws(e,!1,ml,bl,Ci)}function Vn(e){return Ws(e,!0,gl,wl,Ai)}function Ws(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Tl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function wn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&ai(e,"__v_skip",!0),e}const ye=e=>ne(e)?jn(e):e,Ss=e=>ne(e)?Vn(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ri(e,!1)}function qs(e){return Ri(e,!0)}function Ri(e,t){return fe(e)?e:new Cl(e,t)}class Cl{constructor(t,n){this.dep=new $n,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Oi(e){return fe(e)?e.value:e}const Al={get:(e,t,n)=>t==="__v_raw"?e:Oi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Mi(e){return ht(e)?e:new Proxy(e,Al)}class Rl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new $n,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Ol(e){return new Rl(e)}class Ml{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return cl(J(this._object),this._key)}}class Pl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ll(e,t,n){return fe(e)?e:q(e)?new Pl(e):ne(e)&&arguments.length>1?Il(e,t,n):oe(e)}function Il(e,t,n){const s=e[t];return fe(s)?s:new Ml(e,t,n)}class Nl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $n(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return mi(this,!0),!0}get value(){const t=this.dep.track();return _i(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Fl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Nl(s,r,n)}const fn={},An=new WeakMap;let ft;function Hl(e,t=!1,n=ft){if(n){let s=An.get(n);s||An.set(n,s=[]),s.push(e)}}function $l(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,h,y,v,S=!1,_=!1;if(fe(e)?(h=()=>e.value,S=Pe(e)):ht(e)?(h=()=>f(e),S=!0):W(e)?(_=!0,S=e.some(g=>ht(g)||Pe(g)),h=()=>e.map(g=>{if(fe(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[v]):e(v)}finally{ft=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>Ye(g(),O)}const K=hi(),N=()=>{a.stop(),K&&K.active&&Hs(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),N()}}let j=_?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||S||(_?O.some((F,$)=>tt(F,j[$])):tt(O,j))){y&&y();const F=ft;ft=a;try{const $=[O,j===fn?void 0:_&&j[0]===fn?[]:j,v];c?c(t,3,$):t(...$),j=O}finally{ft=F}}}else a.run()};return l&&l(p),a=new pi(h),a.scheduler=o?()=>o(p,!1):p,v=g=>Hl(g,!1,a),y=a.onStop=()=>{const g=An.get(a);if(g){if(c)c(g,4);else for(const O of g)O();An.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ye(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Ye(e.value,t,n);else if(W(e))for(let s=0;s{Ye(s,t,n)});else if(ci(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/**
+**/let we;class rl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;$t;){let t=$t;for($t=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function yi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function vi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ks(s),ol(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_i(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _i(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!_s(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{yi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,vi(e),e.flags&=-3}}function ks(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ks(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function ol(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const bi=[];function rt(){bi.push(Ne),Ne=!1}function it(){const e=bi.pop();Ne=e===void 0?!0:e}function fr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class ll{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Hn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new ll(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,wi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Us()}}}function wi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)wi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,dt=Symbol(""),bs=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Cn.get(e);s||Cn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Hn),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Cn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Vs(),t==="clear")o.forEach(l);else{const c=W(e),f=c&&Hs(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===qt||!Xe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Tt(e)&&l(o.get(bs)));break;case"delete":c||(l(o.get(dt)),Tt(e)&&l(o.get(bs)));break;case"set":Tt(e)&&l(o.get(dt));break}}Us()}function cl(e,t){const n=Cn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function $n(e){return me(e=J(e),"iterate",qt),e}const al={__proto__:null,[Symbol.iterator](){return Zn(this,Symbol.iterator,ye)},concat(...e){return _t(this).concat(...e.map(t=>W(t)?_t(t):t))},entries(){return Zn(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return es(this,"includes",e)},indexOf(...e){return es(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return es(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return ur(this,"reduce",e,t)},reduceRight(e,...t){return ur(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Zn(this,"values",ye)}};function Zn(e,t,n){const s=$n(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const fl=Array.prototype;function We(e,t,n,s,r,i){const o=$n(e),l=o!==e&&!Pe(e),c=o[t];if(c!==fl[t]){const h=c.apply(e,i);return l?ye(h):h}let f=n;o!==e&&(l?f=function(h,y){return n.call(this,ye(h),y,e)}:n.length>2&&(f=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function ur(e,t,n,s){const r=$n(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function es(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&Ks(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Vs();const s=J(e)[t].apply(e,n);return Us(),it(),s}const ul=Ns("__proto__,__v_isRef,__isVue"),Si=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function dl(e){Xe(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class xi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Sl:Ai:i?Ci:Ti).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=al[n]))return c;if(n==="hasOwnProperty")return dl}const l=Reflect.get(t,n,fe(t)?t:s);return(Xe(n)?Si.has(n):ul(n))||(r||me(t,"get",n),i)?l:fe(l)?o&&Hs(n)?l:l.value:ne(l)?r?Vn(l):jn(l):l}}class Ei extends xi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=W(t)&&Hs(n)?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function yl(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?ws:t?Ss:ye;return!t&&me(i,"iterate",c?bs:dt),{next(){const{value:h,done:y}=f.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function vl(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=cn(o),f=t?ws:e?Ss:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?ws:e?Ss:ye;return!e&&me(c,"iterate",dt),l.forEach((a,h)=>r.call(i,f(a),f(h),o))}};return ae(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=cn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=cn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=yl(r,e,t)}),n}function Bs(e,t){const n=vl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const _l={get:Bs(!1,!1)},bl={get:Bs(!1,!0)},wl={get:Bs(!0,!1)};const Ti=new WeakMap,Ci=new WeakMap,Ai=new WeakMap,Sl=new WeakMap;function xl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function El(e){return e.__v_skip||!Object.isExtensible(e)?0:xl(Go(e))}function jn(e){return yt(e)?e:Ws(e,!1,pl,_l,Ti)}function Tl(e){return Ws(e,!1,ml,bl,Ci)}function Vn(e){return Ws(e,!0,gl,wl,Ai)}function Ws(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=El(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function wn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&ai(e,"__v_skip",!0),e}const ye=e=>ne(e)?jn(e):e,Ss=e=>ne(e)?Vn(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ri(e,!1)}function qs(e){return Ri(e,!0)}function Ri(e,t){return fe(e)?e:new Cl(e,t)}class Cl{constructor(t,n){this.dep=new Hn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Oi(e){return fe(e)?e.value:e}const Al={get:(e,t,n)=>t==="__v_raw"?e:Oi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Mi(e){return ht(e)?e:new Proxy(e,Al)}class Rl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Hn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Ol(e){return new Rl(e)}class Ml{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return cl(J(this._object),this._key)}}class Pl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ll(e,t,n){return fe(e)?e:q(e)?new Pl(e):ne(e)&&arguments.length>1?Il(e,t,n):oe(e)}function Il(e,t,n){const s=e[t];return fe(s)?s:new Ml(e,t,n)}class Nl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Hn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return mi(this,!0),!0}get value(){const t=this.dep.track();return _i(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Fl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Nl(s,r,n)}const fn={},An=new WeakMap;let ft;function Dl(e,t=!1,n=ft){if(n){let s=An.get(n);s||An.set(n,s=[]),s.push(e)}}function Hl(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,h,y,v,S=!1,_=!1;if(fe(e)?(h=()=>e.value,S=Pe(e)):ht(e)?(h=()=>f(e),S=!0):W(e)?(_=!0,S=e.some(g=>ht(g)||Pe(g)),h=()=>e.map(g=>{if(fe(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[v]):e(v)}finally{ft=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>Ye(g(),O)}const K=hi(),N=()=>{a.stop(),K&&K.active&&Ds(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),N()}}let j=_?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||S||(_?O.some((F,H)=>tt(F,j[H])):tt(O,j))){y&&y();const F=ft;ft=a;try{const H=[O,j===fn?void 0:_&&j[0]===fn?[]:j,v];c?c(t,3,H):t(...H),j=O}finally{ft=F}}}else a.run()};return l&&l(p),a=new pi(h),a.scheduler=o?()=>o(p,!1):p,v=g=>Dl(g,!1,a),y=a.onStop=()=>{const g=An.get(a);if(g){if(c)c(g,4);else for(const O of g)O();An.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ye(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Ye(e.value,t,n);else if(W(e))for(let s=0;s{Ye(s,t,n)});else if(ci(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/**
 * @vue/runtime-core v3.5.13
 * (c) 2018-present Yuxi (Evan) You and Vue contributors
 * @license MIT
-**/function tn(e,t,n,s){try{return s?e(...s):e()}catch(r){nn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=tn(e,t,n,s);return r&&oi(r)&&r.catch(i=>{nn(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Gt(r);i=Gt(n)?Se.push(e):Se.splice(jl(t),0,e),e.flags|=1,Li()}}function Li(){Rn||(Rn=Pi.then(Ii))}function Vl(e){W(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(wt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Li()}function dr(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function Ii(e){try{for(Ve=0;Ve{s._d&&Ar(-1);const i=Mn(t);let o;try{o=e(...r)}finally{Mn(i),s._d&&Ar(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function _f(e,t){if(de===null)return e;const n=Gn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),hr=e=>e&&(e.defer||e.defer===""),pr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,gr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,xs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},$i={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:y,o:{insert:v,querySelector:S,createText:_,createComment:K}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=_(""),F=t.anchor=_("");v(O,n,s),v(F,n,s);const $=(R,b)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,b,r,i,o,l,c))},V=()=>{const R=t.target=xs(t.props,S),b=Di(R,t,_,v);R&&(o!=="svg"&&pr(R)?o="svg":o!=="mathml"&&gr(R)&&(o="mathml"),N||($(R,b),Sn(t,!1)))};N&&($(n,F),Sn(t,!0)),hr(t.props)?be(()=>{V(),t.el.__isMounted=!0},i):V()}else{if(hr(t.props)&&!e.el.__isMounted){be(()=>{$i.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,b=V?O:$;if(o==="svg"||pr(F)?o="svg":(o==="mathml"||gr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),Qs(e,t,!0)):c||h(e,t,R,b,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):un(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=xs(t.props,S);I&&un(t,I,null,f,0)}else V&&un(t,F,$,f,1);Sn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:y}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const v=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),Ki(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],ji={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Vi=e=>{const t=e.subTree;return t.component?Vi(t.component):t},Wl={name:"BaseTransition",props:ji,setup(e,{slots:t}){const n=qn(),s=Bl();return()=>{const r=t.default&&Bi(t.default(),!0);if(!r||!r.length)return;const i=Ui(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ts(i);const c=mr(i);if(!c)return ts(i);let f=Ts(c,o,s,n,h=>f=h);c.type!==ve&&Yt(c,f);let a=n.subTree&&mr(n.subTree);if(a&&a.type!==ve&&!ut(c,a)&&Vi(n).type!==ve){let h=Ts(a,o,s,n);if(Yt(a,h),l==="out-in"&&c.type!==ve)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},ts(i);l==="in-out"&&c.type!==ve?h.delayLeave=(y,v,S)=>{const _=ki(s,a);_[String(a.key)]=a,y[Ze]=()=>{v(),y[Ze]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{S(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Ui(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ve){t=n;break}}return t}const Kl=Wl;function ki(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Ts(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:v,onAfterLeave:S,onLeaveCancelled:_,onBeforeAppear:K,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),O=ki(n,e),F=(R,b)=>{R&&He(R,s,9,b)},$=(R,b)=>{const I=b[1];F(R,b),W(R)?R.every(x=>x.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let b=c;if(!n.isMounted)if(i)b=K||c;else return;R[Ze]&&R[Ze](!0);const I=O[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(b,[R])},enter(R){let b=f,I=a,x=h;if(!n.isMounted)if(i)b=N||f,I=j||a,x=p||h;else return;let B=!1;const se=R[dn]=le=>{B||(B=!0,le?F(x,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[dn]=void 0)};b?$(b,[R,se]):se()},leave(R,b){const I=String(e.key);if(R[dn]&&R[dn](!0),n.isUnmounting)return b();F(y,[R]);let x=!1;const B=R[Ze]=se=>{x||(x=!0,b(),se?F(_,[R]):F(S,[R]),R[Ze]=void 0,O[I]===e&&delete O[I])};O[I]=e,v?$(v,[R,B]):B()},clone(R){const b=Ts(R,t,n,s,r);return r&&r(b),b}};return V}function ts(e){if(sn(e))return e=nt(e),e.children=null,e}function mr(e){if(!sn(e))return Hi(e.type)&&e.children?Ui(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Bi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iXt(S,t&&(W(t)?t[_]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Gn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,y=J(h),v=h===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,v(f)&&(h[f]=null)):fe(f)&&(f.value=null)),q(c))tn(c,l,12,[o,a]);else{const S=re(c),_=fe(c);if(S||_){const K=()=>{if(e.f){const N=S?v(c)?h[c]:a[c]:c.value;r?W(N)&&Hs(N,i):W(N)?N.includes(i)||N.push(i):S?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,v(c)&&(h[c]=o)):_&&(c.value=o,e.k&&(a[e.k]=o))};o?(K.id=-1,be(K,n)):K()}}}let yr=!1;const bt=()=>{yr||(console.error("Hydration completed but contains mismatches."),yr=!0)},ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Gl=e=>e.namespaceURI.includes("MathML"),hn=e=>{if(e.nodeType===1){if(ql(e))return"svg";if(Gl(e))return"mathml"}},xt=e=>e.nodeType===8;function Yl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),On(),g._vnode=p;return}h(g.firstChild,p,null,null,null),On(),g._vnode=p},h=(p,g,O,F,$,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",b=()=>_(p,g,O,F,$,R),{type:I,ref:x,shapeFlag:B,patchFlag:se}=g;let le=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:le!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=b():(p.data!==g.children&&(bt(),p.data=g.children),U=i(p));break;case ve:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,O)):le!==8||R?U=b():U=i(p);break;case kt:if(R&&(p=i(p),le=p.nodeType),le===1||le===3){U=p;const Y=!g.children.length;for(let D=0;D{V=V||!!g.dynamicChildren;const{type:R,props:b,patchFlag:I,shapeFlag:x,dirs:B,transition:se}=g,le=R==="input"||R==="option";if(le||I!==-1){B&&Ue(g,null,O,"created");let U=!1;if(j(p)){U=co(null,se)&&O&&O.vnode.props&&O.vnode.props.appear;const D=p.content.firstChild;U&&se.beforeEnter(D),N(D,p,O),g.el=p=D}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let D=v(p.firstChild,g,p,O,F,$,V);for(;D;){pn(p,1)||bt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=g.children;D[0]===`
-`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(pn(p,0)||bt(),p.textContent=g.children)}if(b){if(le||!V||I&48){const D=p.tagName.includes("-");for(const he in b)(le&&(he.endsWith("value")||he==="indeterminate")||en(he)&&!Ct(he)||he[0]==="."||D)&&s(p,he,null,b[he],void 0,O)}else if(b.onClick)s(p,"onClick",null,b.onClick,void 0,O);else if(I&4&&ht(b.style))for(const D in b.style)b.style[D]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,O,g),B&&Ue(g,null,O,"beforeMount"),((Y=b&&b.onVnodeMounted)||B||U)&&go(()=>{Y&&Oe(Y,O,g),U&&se.enter(p),B&&Ue(g,null,O,"mounted")},F)}return p.nextSibling},v=(p,g,O,F,$,V,R)=>{R=R||!!g.dynamicChildren;const b=g.children,I=b.length;for(let x=0;x{const{slotScopeIds:R}=g;R&&($=$?$.concat(R):R);const b=o(p),I=v(i(p),g,b,O,F,$,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(bt(),c(g.anchor=f("]"),b,I),I)},_=(p,g,O,F,$,V)=>{if(pn(p.parentElement,1)||bt(),g.el=null,V){const I=K(p);for(;;){const x=i(p);if(x&&x!==I)l(x);else break}}const R=i(p),b=o(p);return l(p),n(null,g,b,R,O,F,hn(b),$),O&&(O.vnode.el=g.el,ho(O,g.el)),R},K=(p,g="[",O="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===O)){if(F===0)return i(p);F--}return p},N=(p,g,O)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let $=O;for(;$;)$.vnode.el===g&&($.vnode.el=$.subTree.el=p),$=$.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const vr="data-allow-mismatch",Xl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(vr);)e=e.parentElement;const n=e&&e.getAttribute(vr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Xl[t])}}Hn().requestIdleCallback;Hn().cancelIdleCallback;function Jl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function wf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const y=()=>(h++,f=null,v()),v=()=>{let S;return f||(S=f=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),c)return new Promise((K,N)=>{c(_,()=>K(y()),()=>N(_),h+1)});throw _}).then(_=>S!==f&&f?f:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),a=_,_)))};return Ys({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(S,_,K){const N=i?()=>{const j=i(K,p=>Jl(S,p));j&&(_.bum||(_.bum=[])).push(j)}:K;a?N():v().then(()=>!_.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=ue;if(Xs(S),a)return()=>ns(a,S);const _=p=>{f=null,nn(p,S,13,!s)};if(l&&S.suspense||Mt)return v().then(p=>()=>ns(p,S)).catch(p=>(_(p),()=>s?ce(s,{error:p}):null));const K=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!K.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);_(p),N.value=p}},o),v().then(()=>{K.value=!0,S.parent&&sn(S.parent.vnode)&&S.parent.update()}).catch(p=>{_(p),N.value=p}),()=>{if(K.value&&a)return ns(a,S);if(N.value&&s)return ce(s,{error:N.value});if(n&&!j.value)return ce(n)}}})}function ns(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function zl(e,t){Wi(e,"a",t)}function Ql(e,t){Wi(e,"da",t)}function Wi(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)sn(r.parent.vnode)&&Zl(s,t,n,r),r=r.parent}}function Zl(e,t,n,s){const r=kn(t,e,s,!0);Bn(()=>{Hs(s[t],r)},n)}function kn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=rn(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=ue)=>{(!Mt||e==="sp")&&kn(e,(...s)=>t(...s),n)},ec=Je("bm"),Lt=Je("m"),tc=Je("bu"),nc=Je("u"),Ki=Je("bum"),Bn=Je("um"),sc=Je("sp"),rc=Je("rtg"),ic=Je("rtc");function oc(e,t=ue){kn("ec",e,t)}const qi="components";function Sf(e,t){return Yi(qi,e,!0,t)||e}const Gi=Symbol.for("v-ndc");function xf(e){return re(e)?Yi(qi,e,!1)||e:e||Gi}function Yi(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=Wc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=_r(r[e]||i[e],t)||_r(r.appContext[e],t);return!o&&s?i:o}}function _r(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function Tf(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=Dn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;czt(t)?!(t.type===ve||t.type===xe&&!Xi(t.children)):!0)?e:null}function Cf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:_n(s)]=e[s];return n}const Es=e=>e?bo(e)?Gn(e):Es(e.parent):null,Ut=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Es(e.parent),$root:e=>Es(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Js(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Rc.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),lc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ss(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Cs&&(o[t]=0)}}const a=Ut[t];let h,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||ss(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Af(){return cc().slots}function cc(){const e=qn();return e.setupContext||(e.setupContext=So(e))}function br(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function ac(e){const t=Js(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&wr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:y,beforeUpdate:v,updated:S,activated:_,deactivated:K,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:O,renderTracked:F,renderTriggered:$,errorCaptured:V,serverPrefetch:R,expose:b,inheritAttrs:I,components:x,directives:B,filters:se}=t;if(f&&fc(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=jn(Y))}if(Cs=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):ke,on=!q(D)&&q(D.set)?D.set.bind(n):ke,ot=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:De=>ot.value=De})}if(l)for(const Y in l)Ji(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{mc(D,Y[D])})}a&&wr(a,e,"c");function U(Y,D){W(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(U(ec,h),U(Lt,y),U(tc,v),U(nc,S),U(zl,_),U(Ql,K),U(oc,V),U(ic,F),U(rc,$),U(Ki,j),U(Bn,g),U(sc,R),W(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),I!=null&&(e.inheritAttrs=I),x&&(e.components=x),B&&(e.directives=B),R&&Xs(e)}function fc(e,t,n=ke){W(e)&&(e=As(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function wr(e,t,n){He(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ji(e,t,n,s){let r=s.includes(".")?fo(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>Ji(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Js(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=uc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const uc={data:Sr,props:xr,emits:xr,methods:$t,computed:$t,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:$t,directives:$t,watch:hc,provide:Sr,inject:dc};function Sr(e,t){return t?e?function(){return ae(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function dc(e,t){return $t(As(e),As(t))}function As(e){if(W(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Qi={},Zi=()=>Object.create(Qi),eo=e=>Object.getPrototypeOf(e)===Qi;function yc(e,t,n,s=!1){const r={},i=Zi();e.propsDefaults=Object.create(null),to(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:El(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function vc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,v]=no(h,t,!0);ae(o,y),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Tt),Tt;if(W(i))for(let a=0;ae[0]==="_"||e==="$stable",zs=e=>W(e)?e.map(Me):[Me(e)],bc=(e,t,n)=>{if(t._n)return t;const s=Ul((...r)=>zs(t(...r)),n);return s._c=!1,s},ro=(e,t,n)=>{const s=e._ctx;for(const r in e){if(so(r))continue;const i=e[r];if(q(i))t[r]=bc(r,i,s);else if(i!=null){const o=zs(i);t[r]=()=>o}}},io=(e,t)=>{const n=zs(t);e.slots.default=()=>n},oo=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},wc=(e,t,n)=>{const s=e.slots=Zi();if(e.vnode.shapeFlag&32){const r=t._;r?(oo(s,t,n),n&&ai(s,"_",r,!0)):ro(t,s)}else t&&io(e,t)},Sc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:oo(r,t,n):(i=!t.$stable,ro(t,r)),o=t}else t&&(io(e,t),o={default:1});if(i)for(const l in r)!so(l)&&o[l]==null&&delete r[l]},be=go;function xc(e){return lo(e)}function Tc(e){return lo(e,Yl)}function lo(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:y,setScopeId:v=ke,insertStaticContent:S}=e,_=(u,d,m,E=null,w=null,T=null,P=void 0,M=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!ut(u,d)&&(E=ln(u),De(u,w,T,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:L}=d;switch(C){case gt:K(u,d,m,E);break;case ve:N(u,d,m,E);break;case kt:u==null&&j(d,m,E,P);break;case xe:x(u,d,m,E,w,T,P,M,A);break;default:L&1?O(u,d,m,E,w,T,P,M,A):L&6?B(u,d,m,E,w,T,P,M,A):(L&64||L&128)&&C.process(u,d,m,E,w,T,P,M,A,vt)}k!=null&&w&&Xt(k,u&&u.ref,T,d||u,!d)},K=(u,d,m,E)=>{if(u==null)s(d.el=l(d.children),m,E);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,m,E)=>{u==null?s(d.el=c(d.children||""),m,E):d.el=u.el},j=(u,d,m,E)=>{[u.el,u.anchor]=S(u.children,d,m,E,u.el,u.anchor)},p=({el:u,anchor:d},m,E)=>{let w;for(;u&&u!==d;)w=y(u),s(u,m,E),u=w;s(d,m,E)},g=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=y(u),r(u),u=m;r(d)},O=(u,d,m,E,w,T,P,M,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,m,E,w,T,P,M,A):R(u,d,w,T,P,M,A)},F=(u,d,m,E,w,T,P,M)=>{let A,C;const{props:k,shapeFlag:L,transition:H,dirs:G}=u;if(A=u.el=o(u.type,T,k&&k.is,k),L&8?a(A,u.children):L&16&&V(u.children,A,null,E,w,rs(u,T),P,M),G&&Ue(u,null,E,"created"),$(A,u,u.scopeId,P,E),k){for(const ee in k)ee!=="value"&&!Ct(ee)&&i(A,ee,null,k[ee],T,E);"value"in k&&i(A,"value",null,k.value,T),(C=k.onVnodeBeforeMount)&&Oe(C,E,u)}G&&Ue(u,null,E,"beforeMount");const X=co(w,H);X&&H.beforeEnter(A),s(A,d,m),((C=k&&k.onVnodeMounted)||X||G)&&be(()=>{C&&Oe(C,E,u),X&&H.enter(A),G&&Ue(u,null,E,"mounted")},w)},$=(u,d,m,E,w)=>{if(m&&v(u,m),E)for(let T=0;T{for(let C=A;C{const M=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const L=u.props||Z,H=d.props||Z;let G;if(m&<(m,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,m,d,u),k&&Ue(d,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(M,""),C?b(u.dynamicChildren,C,M,m,E,rs(d,w),T):P||D(u,d,M,null,m,E,rs(d,w),T,!1),A>0){if(A&16)I(M,L,H,m,w);else if(A&2&&L.class!==H.class&&i(M,"class",null,H.class,w),A&4&&i(M,"style",L.style,H.style,w),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,d,u),k&&Ue(d,u,m,"updated")},E)},b=(u,d,m,E,w,T,P)=>{for(let M=0;M{if(d!==m){if(d!==Z)for(const T in d)!Ct(T)&&!(T in m)&&i(u,T,d[T],null,w,E);for(const T in m){if(Ct(T))continue;const P=m[T],M=d[T];P!==M&&T!=="value"&&i(u,T,M,P,w,E)}"value"in m&&i(u,"value",d.value,m.value,w)}},x=(u,d,m,E,w,T,P,M,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=d;G&&(M=M?M.concat(G):G),u==null?(s(C,m,E),s(k,m,E),V(d.children||[],m,k,w,T,P,M,A)):L>0&&L&64&&H&&u.dynamicChildren?(b(u.dynamicChildren,H,m,w,T,P,M),(d.key!=null||w&&d===w.subTree)&&Qs(u,d,!0)):D(u,d,m,k,w,T,P,M,A)},B=(u,d,m,E,w,T,P,M,A)=>{d.slotScopeIds=M,u==null?d.shapeFlag&512?w.ctx.activate(d,m,E,P,A):se(d,m,E,w,T,P,A):le(u,d,A)},se=(u,d,m,E,w,T,P)=>{const M=u.component=Vc(u,E,w);if(sn(u)&&(M.ctx.renderer=vt),Uc(M,!1,P),M.asyncDep){if(w&&w.registerDep(M,U,P),!u.el){const A=M.subTree=ce(ve);N(null,A,d,m)}}else U(M,u,d,m,w,T,P)},le=(u,d,m)=>{const E=d.component=u.component;if(Ic(u,d,m))if(E.asyncDep&&!E.asyncResolved){Y(E,d,m);return}else E.next=d,E.update();else d.el=u.el,E.vnode=d},U=(u,d,m,E,w,T,P)=>{const M=()=>{if(u.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:ee}=u;{const Ee=ao(u);if(Ee){L&&(L.el=ee.el,Y(u,L,P)),Ee.asyncDep.then(()=>{u.isUnmounted||M()});return}}let Q=L,Te;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,H&&bn(H),(Te=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Te,X,L,ee),lt(u,!0);const pe=is(u),Ie=u.subTree;u.subTree=pe,_(Ie,pe,h(Ie.el),ln(Ie),u,w,T),L.el=pe.el,Q===null&&ho(u,pe.el),G&&be(G,w),(Te=L.props&&L.props.onVnodeUpdated)&&be(()=>Oe(Te,X,L,ee),w)}else{let L;const{el:H,props:G}=d,{bm:X,m:ee,parent:Q,root:Te,type:pe}=u,Ie=pt(d);if(lt(u,!1),X&&bn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,d),lt(u,!0),H&&Jn){const Ee=()=>{u.subTree=is(u),Jn(H,u.subTree,u,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Ee):Ee()}else{Te.ce&&Te.ce._injectChildStyle(pe);const Ee=u.subTree=is(u);_(null,Ee,m,E,u,w,T),d.el=Ee.el}if(ee&&be(ee,w),!Ie&&(L=G&&G.onVnodeMounted)){const Ee=d;be(()=>Oe(L,Q,Ee),w)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&be(u.a,w),u.isMounted=!0,d=m=E=null}};u.scope.on();const A=u.effect=new pi(M);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Gs(k),lt(u,!0),C()},Y=(u,d,m)=>{d.component=u;const E=u.vnode.props;u.vnode=d,u.next=null,vc(u,d.props,E,m),Sc(u,d.children,m),rt(),dr(u),it()},D=(u,d,m,E,w,T,P,M,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,L=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){on(C,L,m,E,w,T,P,M,A);return}else if(H&256){he(C,L,m,E,w,T,P,M,A);return}}G&8?(k&16&&It(C,w,T),L!==C&&a(m,L)):k&16?G&16?on(C,L,m,E,w,T,P,M,A):It(C,w,T,!0):(k&8&&a(m,""),G&16&&V(L,m,E,w,T,P,M,A))},he=(u,d,m,E,w,T,P,M,A)=>{u=u||Tt,d=d||Tt;const C=u.length,k=d.length,L=Math.min(C,k);let H;for(H=0;Hk?It(u,w,T,!0,!1,L):V(d,m,E,w,T,P,M,A,L)},on=(u,d,m,E,w,T,P,M,A)=>{let C=0;const k=d.length;let L=u.length-1,H=k-1;for(;C<=L&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(ut(G,X))_(G,X,m,null,w,T,P,M,A);else break;C++}for(;C<=L&&C<=H;){const G=u[L],X=d[H]=A?et(d[H]):Me(d[H]);if(ut(G,X))_(G,X,m,null,w,T,P,M,A);else break;L--,H--}if(C>L){if(C<=H){const G=H+1,X=GH)for(;C<=L;)De(u[C],w,T,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Te=0;const pe=H-X+1;let Ie=!1,Ee=0;const Nt=new Array(pe);for(C=0;C=pe){De(Ce,w,T,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&ut(Ce,d[Q])){je=Q;break}je===void 0?De(Ce,w,T,!0):(Nt[je-X]=C+1,je>=Ee?Ee=je:Ie=!0,_(Ce,d[je],m,null,w,T,P,M,A),Te++)}const lr=Ie?Ec(Nt):Tt;for(Q=lr.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=d[Ce],cr=Ce+1{const{el:T,type:P,transition:M,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,d,m,E);return}if(C&128){u.suspense.move(d,m,E);return}if(C&64){P.move(u,d,m,vt);return}if(P===xe){s(T,d,m);for(let L=0;LM.enter(T),w);else{const{leave:L,delayLeave:H,afterLeave:G}=M,X=()=>s(T,d,m),ee=()=>{L(T,()=>{X(),G&&G()})};H?H(T,X,ee):ee()}else s(T,d,m)},De=(u,d,m,E=!1,w=!1)=>{const{type:T,props:P,ref:M,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:L,dirs:H,cacheIndex:G}=u;if(L===-2&&(w=!1),M!=null&&Xt(M,null,m,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Wo(u.component,m,E);else{if(k&128){u.suspense.unmount(m,E);return}X&&Ue(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,m,vt,E):C&&!C.hasOnce&&(T!==xe||L>0&&L&64)?It(C,d,m,!1,!0):(T===xe&&L&384||!w&&k&16)&&It(A,d,m),E&&ir(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&be(()=>{Q&&Oe(Q,d,u),X&&Ue(u,null,d,"unmounted")},m)},ir=u=>{const{type:d,el:m,anchor:E,transition:w}=u;if(d===xe){Bo(m,E);return}if(d===kt){g(u);return}const T=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:M}=w,A=()=>P(m,T);M?M(u.el,T,A):A()}else T()},Bo=(u,d)=>{let m;for(;u!==d;)m=y(u),r(u),u=m;r(d)},Wo=(u,d,m)=>{const{bum:E,scope:w,job:T,subTree:P,um:M,m:A,a:C}=u;Er(A),Er(C),E&&bn(E),w.stop(),T&&(T.flags|=8,De(P,u,d,m)),M&&be(M,d),be(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(u,d,m,E=!1,w=!1,T=0)=>{for(let P=T;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=y(u.anchor||u.el),m=d&&d[Fi];return m?y(m):d};let Yn=!1;const or=(u,d,m)=>{u==null?d._vnode&&De(d._vnode,null,null,!0):_(d._vnode||null,u,d,null,null,null,m),d._vnode=u,Yn||(Yn=!0,dr(),On(),Yn=!1)},vt={p:_,um:De,m:ot,r:ir,mt:se,mc:V,pc:D,pbc:b,n:ln,o:e};let Xn,Jn;return t&&([Xn,Jn]=t(vt)),{render:or,hydrate:Xn,createApp:gc(or,Xn)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function co(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Qs(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function ao(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ao(t)}function Er(e){if(e)for(let t=0;tOt(Cc);function Zs(e,t){return Wn(e,null,t)}function Rf(e,t){return Wn(e,null,{flush:"post"})}function Fe(e,t,n){return Wn(e,t,n)}function Wn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=ae({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const v=Ac();f=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=ke,v.resume=ke,v.pause=ke,v}}const a=ue;l.call=(v,S,_)=>He(v,a,S,_);let h=!1;i==="post"?l.scheduler=v=>{be(v,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(v,S)=>{S?v():Gs(v)}),l.augmentJob=v=>{t&&(v.flags|=4),h&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const y=$l(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Rc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?fo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=rn(this),l=Wn(r,i.bind(s),n);return o(),l}function fo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Mc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Oc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(vs)));let l,c=s[l=_n(t)]||s[l=_n(Le(t))];!c&&i&&(c=s[l=_n(st(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function uo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=uo(f,t,!0);a&&(l=!0,ae(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):ae(o,i),ne(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!en(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function is(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:y,setupState:v,ctx:S,inheritAttrs:_}=e,K=Mn(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,O=g;N=Me(f.call(O,g,a,h,v,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),j=t.props?l:Pc(l)}}catch(g){Bt.length=0,nn(g,e,1),N=ce(ve)}let p=N;if(j&&_!==!1){const g=Object.keys(j),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Fs)&&(j=Lc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(K),N}const Pc=e=>{let t;for(const n in e)(n==="class"||n==="style"||en(n))&&((t||(t={}))[n]=e[n]);return t},Lc=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ic(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Cr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function go(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Vl(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),kt=Symbol.for("v-stc"),Bt=[];let Ae=null;function Os(e=!1){Bt.push(Ae=e?null:[])}function Nc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Jt=1;function Ar(e,t=!1){Jt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function mo(e){return e.dynamicChildren=Jt>0?Ae||Tt:null,Nc(),Jt>0&&Ae&&Ae.push(e),e}function Of(e,t,n,s,r,i){return mo(vo(e,t,n,s,r,i,!0))}function Ms(e,t,n,s,r){return mo(ce(e,t,n,s,r,!0))}function zt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const yo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||fe(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function vo(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yo(t),ref:t&&xn(t),scopeId:Ni,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(er(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Jt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const ce=Fc;function Fc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Gi)&&(e=ve),zt(e)){const l=nt(e,t,!0);return n&&er(l,n),Jt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Kc(e)&&(e=e.__vccOpts),t){t=Hc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=js(l)),ne(c)&&(Ks(c)&&!W(c)&&(c=ae({},c)),t.style=Ds(c))}const o=re(e)?1:po(e)?128:Hi(e)?64:ne(e)?4:q(e)?2:0;return vo(e,t,n,s,r,o,i,!0)}function Hc(e){return e?Ks(e)||eo(e)?ae({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?$c(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&yo(f),ref:t&&t.ref?n&&i?W(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function _o(e=" ",t=0){return ce(gt,null,e,t)}function Mf(e,t){const n=ce(kt,null,e);return n.staticCount=t,n}function Pf(e="",t=!1){return t?(Os(),Ms(ve,null,e)):ce(ve,null,e)}function Me(e){return e==null||typeof e=="boolean"?ce(ve):W(e)?ce(xe,null,e.slice()):zt(e)?et(e):ce(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function er(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!eo(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[_o(t)]):n=8);e.children=t,e.shapeFlag|=n}function $c(...e){const t={};for(let n=0;nue||de;let Ln,Ps;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Ps=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const rn=e=>{const t=ue;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Rr=()=>{ue&&ue.scope.off(),Ln(null)};function bo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Uc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=bo(e);yc(e,s,i,t),wc(e,r,n);const o=i?kc(e,t):void 0;return t&&Ps(!1),o}function kc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,lc);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?So(e):null,i=rn(e),o=tn(s,e,0,[e.props,r]),l=oi(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Xs(e),l){if(o.then(Rr,Rr),t)return o.then(c=>{Or(e,c,t)}).catch(c=>{nn(c,e,0)});e.asyncDep=o}else Or(e,o,t)}else wo(e,t)}function Or(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Mi(t)),wo(e,n)}let Mr;function wo(e,t,n){const s=e.type;if(!e.render){if(!t&&Mr&&!s.render){const r=s.template||Js(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ae(ae({isCustomElement:i,delimiters:l},o),c);s.render=Mr(r,f)}}e.render=s.render||ke}{const r=rn(e);rt();try{ac(e)}finally{it(),r()}}}const Bc={get(e,t){return me(e,"get",""),e[t]}};function So(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Bc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Mi(wn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function Wc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Kc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Fl(e,t,Mt);function Ls(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?zt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&zt(n)&&(n=[n]),ce(e,t,n))}const qc="3.5.13";/**
+**/function tn(e,t,n,s){try{return s?e(...s):e()}catch(r){nn(r,t,n)}}function De(e,t,n,s){if(q(e)){const r=tn(e,t,n,s);return r&&oi(r)&&r.catch(i=>{nn(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Gt(r);i=Gt(n)?Se.push(e):Se.splice(jl(t),0,e),e.flags|=1,Li()}}function Li(){Rn||(Rn=Pi.then(Ii))}function Vl(e){W(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(wt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Li()}function dr(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function Ii(e){try{for(Ve=0;Ve{s._d&&Ar(-1);const i=Mn(t);let o;try{o=e(...r)}finally{Mn(i),s._d&&Ar(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function _f(e,t){if(de===null)return e;const n=Gn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),hr=e=>e&&(e.defer||e.defer===""),pr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,gr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,xs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Hi={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:y,o:{insert:v,querySelector:S,createText:_,createComment:K}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=_(""),F=t.anchor=_("");v(O,n,s),v(F,n,s);const H=(R,b)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,b,r,i,o,l,c))},V=()=>{const R=t.target=xs(t.props,S),b=$i(R,t,_,v);R&&(o!=="svg"&&pr(R)?o="svg":o!=="mathml"&&gr(R)&&(o="mathml"),N||(H(R,b),Sn(t,!1)))};N&&(H(n,F),Sn(t,!0)),hr(t.props)?be(()=>{V(),t.el.__isMounted=!0},i):V()}else{if(hr(t.props)&&!e.el.__isMounted){be(()=>{Hi.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,F=t.target=e.target,H=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,b=V?O:H;if(o==="svg"||pr(F)?o="svg":(o==="mathml"||gr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),Qs(e,t,!0)):c||h(e,t,R,b,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):un(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=xs(t.props,S);I&&un(t,I,null,f,0)}else V&&un(t,F,H,f,1);Sn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:y}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const v=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),Ki(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],ji={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Vi=e=>{const t=e.subTree;return t.component?Vi(t.component):t},Wl={name:"BaseTransition",props:ji,setup(e,{slots:t}){const n=qn(),s=Bl();return()=>{const r=t.default&&Bi(t.default(),!0);if(!r||!r.length)return;const i=Ui(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ts(i);const c=mr(i);if(!c)return ts(i);let f=Es(c,o,s,n,h=>f=h);c.type!==ve&&Yt(c,f);let a=n.subTree&&mr(n.subTree);if(a&&a.type!==ve&&!ut(c,a)&&Vi(n).type!==ve){let h=Es(a,o,s,n);if(Yt(a,h),l==="out-in"&&c.type!==ve)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},ts(i);l==="in-out"&&c.type!==ve?h.delayLeave=(y,v,S)=>{const _=ki(s,a);_[String(a.key)]=a,y[Ze]=()=>{v(),y[Ze]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{S(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Ui(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ve){t=n;break}}return t}const Kl=Wl;function ki(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Es(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:v,onAfterLeave:S,onLeaveCancelled:_,onBeforeAppear:K,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),O=ki(n,e),F=(R,b)=>{R&&De(R,s,9,b)},H=(R,b)=>{const I=b[1];F(R,b),W(R)?R.every(x=>x.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let b=c;if(!n.isMounted)if(i)b=K||c;else return;R[Ze]&&R[Ze](!0);const I=O[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(b,[R])},enter(R){let b=f,I=a,x=h;if(!n.isMounted)if(i)b=N||f,I=j||a,x=p||h;else return;let B=!1;const se=R[dn]=le=>{B||(B=!0,le?F(x,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[dn]=void 0)};b?H(b,[R,se]):se()},leave(R,b){const I=String(e.key);if(R[dn]&&R[dn](!0),n.isUnmounting)return b();F(y,[R]);let x=!1;const B=R[Ze]=se=>{x||(x=!0,b(),se?F(_,[R]):F(S,[R]),R[Ze]=void 0,O[I]===e&&delete O[I])};O[I]=e,v?H(v,[R,B]):B()},clone(R){const b=Es(R,t,n,s,r);return r&&r(b),b}};return V}function ts(e){if(sn(e))return e=nt(e),e.children=null,e}function mr(e){if(!sn(e))return Di(e.type)&&e.children?Ui(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Bi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iXt(S,t&&(W(t)?t[_]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Gn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,y=J(h),v=h===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,v(f)&&(h[f]=null)):fe(f)&&(f.value=null)),q(c))tn(c,l,12,[o,a]);else{const S=re(c),_=fe(c);if(S||_){const K=()=>{if(e.f){const N=S?v(c)?h[c]:a[c]:c.value;r?W(N)&&Ds(N,i):W(N)?N.includes(i)||N.push(i):S?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,v(c)&&(h[c]=o)):_&&(c.value=o,e.k&&(a[e.k]=o))};o?(K.id=-1,be(K,n)):K()}}}let yr=!1;const bt=()=>{yr||(console.error("Hydration completed but contains mismatches."),yr=!0)},ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Gl=e=>e.namespaceURI.includes("MathML"),hn=e=>{if(e.nodeType===1){if(ql(e))return"svg";if(Gl(e))return"mathml"}},xt=e=>e.nodeType===8;function Yl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),On(),g._vnode=p;return}h(g.firstChild,p,null,null,null),On(),g._vnode=p},h=(p,g,O,F,H,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",b=()=>_(p,g,O,F,H,R),{type:I,ref:x,shapeFlag:B,patchFlag:se}=g;let le=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:le!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=b():(p.data!==g.children&&(bt(),p.data=g.children),U=i(p));break;case ve:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,O)):le!==8||R?U=b():U=i(p);break;case kt:if(R&&(p=i(p),le=p.nodeType),le===1||le===3){U=p;const Y=!g.children.length;for(let $=0;${V=V||!!g.dynamicChildren;const{type:R,props:b,patchFlag:I,shapeFlag:x,dirs:B,transition:se}=g,le=R==="input"||R==="option";if(le||I!==-1){B&&Ue(g,null,O,"created");let U=!1;if(j(p)){U=co(null,se)&&O&&O.vnode.props&&O.vnode.props.appear;const $=p.content.firstChild;U&&se.beforeEnter($),N($,p,O),g.el=p=$}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let $=v(p.firstChild,g,p,O,F,H,V);for(;$;){pn(p,1)||bt();const he=$;$=$.nextSibling,l(he)}}else if(x&8){let $=g.children;$[0]===`
+`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&($=$.slice(1)),p.textContent!==$&&(pn(p,0)||bt(),p.textContent=g.children)}if(b){if(le||!V||I&48){const $=p.tagName.includes("-");for(const he in b)(le&&(he.endsWith("value")||he==="indeterminate")||en(he)&&!Ct(he)||he[0]==="."||$)&&s(p,he,null,b[he],void 0,O)}else if(b.onClick)s(p,"onClick",null,b.onClick,void 0,O);else if(I&4&&ht(b.style))for(const $ in b.style)b.style[$]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,O,g),B&&Ue(g,null,O,"beforeMount"),((Y=b&&b.onVnodeMounted)||B||U)&&go(()=>{Y&&Oe(Y,O,g),U&&se.enter(p),B&&Ue(g,null,O,"mounted")},F)}return p.nextSibling},v=(p,g,O,F,H,V,R)=>{R=R||!!g.dynamicChildren;const b=g.children,I=b.length;for(let x=0;x{const{slotScopeIds:R}=g;R&&(H=H?H.concat(R):R);const b=o(p),I=v(i(p),g,b,O,F,H,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(bt(),c(g.anchor=f("]"),b,I),I)},_=(p,g,O,F,H,V)=>{if(pn(p.parentElement,1)||bt(),g.el=null,V){const I=K(p);for(;;){const x=i(p);if(x&&x!==I)l(x);else break}}const R=i(p),b=o(p);return l(p),n(null,g,b,R,O,F,hn(b),H),O&&(O.vnode.el=g.el,ho(O,g.el)),R},K=(p,g="[",O="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===O)){if(F===0)return i(p);F--}return p},N=(p,g,O)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let H=O;for(;H;)H.vnode.el===g&&(H.vnode.el=H.subTree.el=p),H=H.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const vr="data-allow-mismatch",Xl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(vr);)e=e.parentElement;const n=e&&e.getAttribute(vr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Xl[t])}}Dn().requestIdleCallback;Dn().cancelIdleCallback;function Jl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function wf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const y=()=>(h++,f=null,v()),v=()=>{let S;return f||(S=f=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),c)return new Promise((K,N)=>{c(_,()=>K(y()),()=>N(_),h+1)});throw _}).then(_=>S!==f&&f?f:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),a=_,_)))};return Ys({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(S,_,K){const N=i?()=>{const j=i(K,p=>Jl(S,p));j&&(_.bum||(_.bum=[])).push(j)}:K;a?N():v().then(()=>!_.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=ue;if(Xs(S),a)return()=>ns(a,S);const _=p=>{f=null,nn(p,S,13,!s)};if(l&&S.suspense||Mt)return v().then(p=>()=>ns(p,S)).catch(p=>(_(p),()=>s?ce(s,{error:p}):null));const K=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!K.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);_(p),N.value=p}},o),v().then(()=>{K.value=!0,S.parent&&sn(S.parent.vnode)&&S.parent.update()}).catch(p=>{_(p),N.value=p}),()=>{if(K.value&&a)return ns(a,S);if(N.value&&s)return ce(s,{error:N.value});if(n&&!j.value)return ce(n)}}})}function ns(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function zl(e,t){Wi(e,"a",t)}function Ql(e,t){Wi(e,"da",t)}function Wi(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)sn(r.parent.vnode)&&Zl(s,t,n,r),r=r.parent}}function Zl(e,t,n,s){const r=kn(t,e,s,!0);Bn(()=>{Ds(s[t],r)},n)}function kn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=rn(n),c=De(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=ue)=>{(!Mt||e==="sp")&&kn(e,(...s)=>t(...s),n)},ec=Je("bm"),Lt=Je("m"),tc=Je("bu"),nc=Je("u"),Ki=Je("bum"),Bn=Je("um"),sc=Je("sp"),rc=Je("rtg"),ic=Je("rtc");function oc(e,t=ue){kn("ec",e,t)}const qi="components";function Sf(e,t){return Yi(qi,e,!0,t)||e}const Gi=Symbol.for("v-ndc");function xf(e){return re(e)?Yi(qi,e,!1)||e:e||Gi}function Yi(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=Wc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=_r(r[e]||i[e],t)||_r(r.appContext[e],t);return!o&&s?i:o}}function _r(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function Ef(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=$n(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;czt(t)?!(t.type===ve||t.type===xe&&!Xi(t.children)):!0)?e:null}function Cf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:_n(s)]=e[s];return n}const Ts=e=>e?bo(e)?Gn(e):Ts(e.parent):null,Ut=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ts(e.parent),$root:e=>Ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Js(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Rc.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),lc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ss(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Cs&&(o[t]=0)}}const a=Ut[t];let h,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||ss(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Af(){return cc().slots}function cc(){const e=qn();return e.setupContext||(e.setupContext=So(e))}function br(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function ac(e){const t=Js(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&wr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:y,beforeUpdate:v,updated:S,activated:_,deactivated:K,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:O,renderTracked:F,renderTriggered:H,errorCaptured:V,serverPrefetch:R,expose:b,inheritAttrs:I,components:x,directives:B,filters:se}=t;if(f&&fc(f,s,null),o)for(const Y in o){const $=o[Y];q($)&&(s[Y]=$.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=jn(Y))}if(Cs=!0,i)for(const Y in i){const $=i[Y],he=q($)?$.bind(n,n):q($.get)?$.get.bind(n,n):ke,on=!q($)&&q($.set)?$.set.bind(n):ke,ot=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:$e=>ot.value=$e})}if(l)for(const Y in l)Ji(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach($=>{mc($,Y[$])})}a&&wr(a,e,"c");function U(Y,$){W($)?$.forEach(he=>Y(he.bind(n))):$&&Y($.bind(n))}if(U(ec,h),U(Lt,y),U(tc,v),U(nc,S),U(zl,_),U(Ql,K),U(oc,V),U(ic,F),U(rc,H),U(Ki,j),U(Bn,g),U(sc,R),W(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach($=>{Object.defineProperty(Y,$,{get:()=>n[$],set:he=>n[$]=he})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),I!=null&&(e.inheritAttrs=I),x&&(e.components=x),B&&(e.directives=B),R&&Xs(e)}function fc(e,t,n=ke){W(e)&&(e=As(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function wr(e,t,n){De(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ji(e,t,n,s){let r=s.includes(".")?fo(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>Ji(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Js(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=uc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const uc={data:Sr,props:xr,emits:xr,methods:Ht,computed:Ht,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:Ht,directives:Ht,watch:hc,provide:Sr,inject:dc};function Sr(e,t){return t?e?function(){return ae(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function dc(e,t){return Ht(As(e),As(t))}function As(e){if(W(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Qi={},Zi=()=>Object.create(Qi),eo=e=>Object.getPrototypeOf(e)===Qi;function yc(e,t,n,s=!1){const r={},i=Zi();e.propsDefaults=Object.create(null),to(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Tl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function vc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,v]=no(h,t,!0);ae(o,y),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Et),Et;if(W(i))for(let a=0;ae[0]==="_"||e==="$stable",zs=e=>W(e)?e.map(Me):[Me(e)],bc=(e,t,n)=>{if(t._n)return t;const s=Ul((...r)=>zs(t(...r)),n);return s._c=!1,s},ro=(e,t,n)=>{const s=e._ctx;for(const r in e){if(so(r))continue;const i=e[r];if(q(i))t[r]=bc(r,i,s);else if(i!=null){const o=zs(i);t[r]=()=>o}}},io=(e,t)=>{const n=zs(t);e.slots.default=()=>n},oo=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},wc=(e,t,n)=>{const s=e.slots=Zi();if(e.vnode.shapeFlag&32){const r=t._;r?(oo(s,t,n),n&&ai(s,"_",r,!0)):ro(t,s)}else t&&io(e,t)},Sc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:oo(r,t,n):(i=!t.$stable,ro(t,r)),o=t}else t&&(io(e,t),o={default:1});if(i)for(const l in r)!so(l)&&o[l]==null&&delete r[l]},be=go;function xc(e){return lo(e)}function Ec(e){return lo(e,Yl)}function lo(e,t){const n=Dn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:y,setScopeId:v=ke,insertStaticContent:S}=e,_=(u,d,m,T=null,w=null,E=null,P=void 0,M=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!ut(u,d)&&(T=ln(u),$e(u,w,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:L}=d;switch(C){case gt:K(u,d,m,T);break;case ve:N(u,d,m,T);break;case kt:u==null&&j(d,m,T,P);break;case xe:x(u,d,m,T,w,E,P,M,A);break;default:L&1?O(u,d,m,T,w,E,P,M,A):L&6?B(u,d,m,T,w,E,P,M,A):(L&64||L&128)&&C.process(u,d,m,T,w,E,P,M,A,vt)}k!=null&&w&&Xt(k,u&&u.ref,E,d||u,!d)},K=(u,d,m,T)=>{if(u==null)s(d.el=l(d.children),m,T);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,m,T)=>{u==null?s(d.el=c(d.children||""),m,T):d.el=u.el},j=(u,d,m,T)=>{[u.el,u.anchor]=S(u.children,d,m,T,u.el,u.anchor)},p=({el:u,anchor:d},m,T)=>{let w;for(;u&&u!==d;)w=y(u),s(u,m,T),u=w;s(d,m,T)},g=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=y(u),r(u),u=m;r(d)},O=(u,d,m,T,w,E,P,M,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,m,T,w,E,P,M,A):R(u,d,w,E,P,M,A)},F=(u,d,m,T,w,E,P,M)=>{let A,C;const{props:k,shapeFlag:L,transition:D,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),L&8?a(A,u.children):L&16&&V(u.children,A,null,T,w,rs(u,E),P,M),G&&Ue(u,null,T,"created"),H(A,u,u.scopeId,P,T),k){for(const ee in k)ee!=="value"&&!Ct(ee)&&i(A,ee,null,k[ee],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ue(u,null,T,"beforeMount");const X=co(w,D);X&&D.beforeEnter(A),s(A,d,m),((C=k&&k.onVnodeMounted)||X||G)&&be(()=>{C&&Oe(C,T,u),X&&D.enter(A),G&&Ue(u,null,T,"mounted")},w)},H=(u,d,m,T,w)=>{if(m&&v(u,m),T)for(let E=0;E{for(let C=A;C{const M=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const L=u.props||Z,D=d.props||Z;let G;if(m&<(m,!1),(G=D.onVnodeBeforeUpdate)&&Oe(G,m,d,u),k&&Ue(d,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&D.innerHTML==null||L.textContent&&D.textContent==null)&&a(M,""),C?b(u.dynamicChildren,C,M,m,T,rs(d,w),E):P||$(u,d,M,null,m,T,rs(d,w),E,!1),A>0){if(A&16)I(M,L,D,m,w);else if(A&2&&L.class!==D.class&&i(M,"class",null,D.class,w),A&4&&i(M,"style",L.style,D.style,w),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,d,u),k&&Ue(d,u,m,"updated")},T)},b=(u,d,m,T,w,E,P)=>{for(let M=0;M{if(d!==m){if(d!==Z)for(const E in d)!Ct(E)&&!(E in m)&&i(u,E,d[E],null,w,T);for(const E in m){if(Ct(E))continue;const P=m[E],M=d[E];P!==M&&E!=="value"&&i(u,E,M,P,w,T)}"value"in m&&i(u,"value",d.value,m.value,w)}},x=(u,d,m,T,w,E,P,M,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:D,slotScopeIds:G}=d;G&&(M=M?M.concat(G):G),u==null?(s(C,m,T),s(k,m,T),V(d.children||[],m,k,w,E,P,M,A)):L>0&&L&64&&D&&u.dynamicChildren?(b(u.dynamicChildren,D,m,w,E,P,M),(d.key!=null||w&&d===w.subTree)&&Qs(u,d,!0)):$(u,d,m,k,w,E,P,M,A)},B=(u,d,m,T,w,E,P,M,A)=>{d.slotScopeIds=M,u==null?d.shapeFlag&512?w.ctx.activate(d,m,T,P,A):se(d,m,T,w,E,P,A):le(u,d,A)},se=(u,d,m,T,w,E,P)=>{const M=u.component=Vc(u,T,w);if(sn(u)&&(M.ctx.renderer=vt),Uc(M,!1,P),M.asyncDep){if(w&&w.registerDep(M,U,P),!u.el){const A=M.subTree=ce(ve);N(null,A,d,m)}}else U(M,u,d,m,w,E,P)},le=(u,d,m)=>{const T=d.component=u.component;if(Ic(u,d,m))if(T.asyncDep&&!T.asyncResolved){Y(T,d,m);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},U=(u,d,m,T,w,E,P)=>{const M=()=>{if(u.isMounted){let{next:L,bu:D,u:G,parent:X,vnode:ee}=u;{const Te=ao(u);if(Te){L&&(L.el=ee.el,Y(u,L,P)),Te.asyncDep.then(()=>{u.isUnmounted||M()});return}}let Q=L,Ee;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,D&&bn(D),(Ee=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Ee,X,L,ee),lt(u,!0);const pe=is(u),Ie=u.subTree;u.subTree=pe,_(Ie,pe,h(Ie.el),ln(Ie),u,w,E),L.el=pe.el,Q===null&&ho(u,pe.el),G&&be(G,w),(Ee=L.props&&L.props.onVnodeUpdated)&&be(()=>Oe(Ee,X,L,ee),w)}else{let L;const{el:D,props:G}=d,{bm:X,m:ee,parent:Q,root:Ee,type:pe}=u,Ie=pt(d);if(lt(u,!1),X&&bn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,d),lt(u,!0),D&&Jn){const Te=()=>{u.subTree=is(u),Jn(D,u.subTree,u,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(D,u,Te):Te()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Te=u.subTree=is(u);_(null,Te,m,T,u,w,E),d.el=Te.el}if(ee&&be(ee,w),!Ie&&(L=G&&G.onVnodeMounted)){const Te=d;be(()=>Oe(L,Q,Te),w)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&be(u.a,w),u.isMounted=!0,d=m=T=null}};u.scope.on();const A=u.effect=new pi(M);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Gs(k),lt(u,!0),C()},Y=(u,d,m)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,vc(u,d.props,T,m),Sc(u,d.children,m),rt(),dr(u),it()},$=(u,d,m,T,w,E,P,M,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,L=d.children,{patchFlag:D,shapeFlag:G}=d;if(D>0){if(D&128){on(C,L,m,T,w,E,P,M,A);return}else if(D&256){he(C,L,m,T,w,E,P,M,A);return}}G&8?(k&16&&It(C,w,E),L!==C&&a(m,L)):k&16?G&16?on(C,L,m,T,w,E,P,M,A):It(C,w,E,!0):(k&8&&a(m,""),G&16&&V(L,m,T,w,E,P,M,A))},he=(u,d,m,T,w,E,P,M,A)=>{u=u||Et,d=d||Et;const C=u.length,k=d.length,L=Math.min(C,k);let D;for(D=0;Dk?It(u,w,E,!0,!1,L):V(d,m,T,w,E,P,M,A,L)},on=(u,d,m,T,w,E,P,M,A)=>{let C=0;const k=d.length;let L=u.length-1,D=k-1;for(;C<=L&&C<=D;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;C++}for(;C<=L&&C<=D;){const G=u[L],X=d[D]=A?et(d[D]):Me(d[D]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;L--,D--}if(C>L){if(C<=D){const G=D+1,X=GD)for(;C<=L;)$e(u[C],w,E,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=D;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Ee=0;const pe=D-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){$e(Ce,w,E,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=D;Q++)if(Nt[Q-X]===0&&ut(Ce,d[Q])){je=Q;break}je===void 0?$e(Ce,w,E,!0):(Nt[je-X]=C+1,je>=Te?Te=je:Ie=!0,_(Ce,d[je],m,null,w,E,P,M,A),Ee++)}const lr=Ie?Tc(Nt):Et;for(Q=lr.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=d[Ce],cr=Ce+1{const{el:E,type:P,transition:M,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,d,m,T);return}if(C&128){u.suspense.move(d,m,T);return}if(C&64){P.move(u,d,m,vt);return}if(P===xe){s(E,d,m);for(let L=0;LM.enter(E),w);else{const{leave:L,delayLeave:D,afterLeave:G}=M,X=()=>s(E,d,m),ee=()=>{L(E,()=>{X(),G&&G()})};D?D(E,X,ee):ee()}else s(E,d,m)},$e=(u,d,m,T=!1,w=!1)=>{const{type:E,props:P,ref:M,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:L,dirs:D,cacheIndex:G}=u;if(L===-2&&(w=!1),M!=null&&Xt(M,null,m,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&D,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Wo(u.component,m,T);else{if(k&128){u.suspense.unmount(m,T);return}X&&Ue(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,m,vt,T):C&&!C.hasOnce&&(E!==xe||L>0&&L&64)?It(C,d,m,!1,!0):(E===xe&&L&384||!w&&k&16)&&It(A,d,m),T&&ir(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&be(()=>{Q&&Oe(Q,d,u),X&&Ue(u,null,d,"unmounted")},m)},ir=u=>{const{type:d,el:m,anchor:T,transition:w}=u;if(d===xe){Bo(m,T);return}if(d===kt){g(u);return}const E=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:M}=w,A=()=>P(m,E);M?M(u.el,E,A):A()}else E()},Bo=(u,d)=>{let m;for(;u!==d;)m=y(u),r(u),u=m;r(d)},Wo=(u,d,m)=>{const{bum:T,scope:w,job:E,subTree:P,um:M,m:A,a:C}=u;Tr(A),Tr(C),T&&bn(T),w.stop(),E&&(E.flags|=8,$e(P,u,d,m)),M&&be(M,d),be(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(u,d,m,T=!1,w=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=y(u.anchor||u.el),m=d&&d[Fi];return m?y(m):d};let Yn=!1;const or=(u,d,m)=>{u==null?d._vnode&&$e(d._vnode,null,null,!0):_(d._vnode||null,u,d,null,null,null,m),d._vnode=u,Yn||(Yn=!0,dr(),On(),Yn=!1)},vt={p:_,um:$e,m:ot,r:ir,mt:se,mc:V,pc:$,pbc:b,n:ln,o:e};let Xn,Jn;return t&&([Xn,Jn]=t(vt)),{render:or,hydrate:Xn,createApp:gc(or,Xn)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function co(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Qs(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function ao(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ao(t)}function Tr(e){if(e)for(let t=0;tOt(Cc);function Zs(e,t){return Wn(e,null,t)}function Rf(e,t){return Wn(e,null,{flush:"post"})}function Fe(e,t,n){return Wn(e,t,n)}function Wn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=ae({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const v=Ac();f=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=ke,v.resume=ke,v.pause=ke,v}}const a=ue;l.call=(v,S,_)=>De(v,a,S,_);let h=!1;i==="post"?l.scheduler=v=>{be(v,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(v,S)=>{S?v():Gs(v)}),l.augmentJob=v=>{t&&(v.flags|=4),h&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const y=Hl(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Rc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?fo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=rn(this),l=Wn(r,i.bind(s),n);return o(),l}function fo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Mc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Oc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(vs)));let l,c=s[l=_n(t)]||s[l=_n(Le(t))];!c&&i&&(c=s[l=_n(st(t))]),c&&De(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,De(f,e,6,r)}}function uo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=uo(f,t,!0);a&&(l=!0,ae(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):ae(o,i),ne(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!en(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function is(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:y,setupState:v,ctx:S,inheritAttrs:_}=e,K=Mn(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,O=g;N=Me(f.call(O,g,a,h,v,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),j=t.props?l:Pc(l)}}catch(g){Bt.length=0,nn(g,e,1),N=ce(ve)}let p=N;if(j&&_!==!1){const g=Object.keys(j),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Fs)&&(j=Lc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(K),N}const Pc=e=>{let t;for(const n in e)(n==="class"||n==="style"||en(n))&&((t||(t={}))[n]=e[n]);return t},Lc=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ic(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Cr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function go(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Vl(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),kt=Symbol.for("v-stc"),Bt=[];let Ae=null;function Os(e=!1){Bt.push(Ae=e?null:[])}function Nc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Jt=1;function Ar(e,t=!1){Jt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function mo(e){return e.dynamicChildren=Jt>0?Ae||Et:null,Nc(),Jt>0&&Ae&&Ae.push(e),e}function Of(e,t,n,s,r,i){return mo(vo(e,t,n,s,r,i,!0))}function Ms(e,t,n,s,r){return mo(ce(e,t,n,s,r,!0))}function zt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const yo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||fe(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function vo(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yo(t),ref:t&&xn(t),scopeId:Ni,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(er(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Jt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const ce=Fc;function Fc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Gi)&&(e=ve),zt(e)){const l=nt(e,t,!0);return n&&er(l,n),Jt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Kc(e)&&(e=e.__vccOpts),t){t=Dc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=js(l)),ne(c)&&(Ks(c)&&!W(c)&&(c=ae({},c)),t.style=$s(c))}const o=re(e)?1:po(e)?128:Di(e)?64:ne(e)?4:q(e)?2:0;return vo(e,t,n,s,r,o,i,!0)}function Dc(e){return e?Ks(e)||eo(e)?ae({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Hc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&yo(f),ref:t&&t.ref?n&&i?W(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function _o(e=" ",t=0){return ce(gt,null,e,t)}function Mf(e,t){const n=ce(kt,null,e);return n.staticCount=t,n}function Pf(e="",t=!1){return t?(Os(),Ms(ve,null,e)):ce(ve,null,e)}function Me(e){return e==null||typeof e=="boolean"?ce(ve):W(e)?ce(xe,null,e.slice()):zt(e)?et(e):ce(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function er(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!eo(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[_o(t)]):n=8);e.children=t,e.shapeFlag|=n}function Hc(...e){const t={};for(let n=0;nue||de;let Ln,Ps;{const e=Dn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Ps=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const rn=e=>{const t=ue;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Rr=()=>{ue&&ue.scope.off(),Ln(null)};function bo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Uc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=bo(e);yc(e,s,i,t),wc(e,r,n);const o=i?kc(e,t):void 0;return t&&Ps(!1),o}function kc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,lc);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?So(e):null,i=rn(e),o=tn(s,e,0,[e.props,r]),l=oi(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Xs(e),l){if(o.then(Rr,Rr),t)return o.then(c=>{Or(e,c,t)}).catch(c=>{nn(c,e,0)});e.asyncDep=o}else Or(e,o,t)}else wo(e,t)}function Or(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Mi(t)),wo(e,n)}let Mr;function wo(e,t,n){const s=e.type;if(!e.render){if(!t&&Mr&&!s.render){const r=s.template||Js(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ae(ae({isCustomElement:i,delimiters:l},o),c);s.render=Mr(r,f)}}e.render=s.render||ke}{const r=rn(e);rt();try{ac(e)}finally{it(),r()}}}const Bc={get(e,t){return me(e,"get",""),e[t]}};function So(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Bc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Mi(wn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function Wc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Kc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Fl(e,t,Mt);function Ls(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?zt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&zt(n)&&(n=[n]),ce(e,t,n))}const qc="3.5.13";/**
 * @vue/runtime-dom v3.5.13
 * (c) 2018-present Yuxi (Evan) You and Vue contributors
 * @license MIT
-**/let Is;const Pr=typeof window<"u"&&window.trustedTypes;if(Pr)try{Is=Pr.createPolicy("vue",{createHTML:e=>e})}catch{}const xo=Is?e=>Is.createHTML(e):e=>e,Gc="http://www.w3.org/2000/svg",Yc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Lr=qe&&qe.createElement("template"),Xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(Gc,e):t==="mathml"?qe.createElementNS(Yc,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Lr.innerHTML=xo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Lr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",Qt=Symbol("_vtc"),To={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Jc=ae({},ji,To),zc=e=>(e.displayName="Transition",e.props=Jc,e),Lf=zc((e,{slots:t})=>Ls(Kl,Qc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ir=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Qc(e){const t={};for(const x in e)x in To||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,S=Zc(r),_=S&&S[0],K=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:F=N,onAppear:$=j,onAppearCancelled:V=p}=t,R=(x,B,se,le)=>{x._enterCancelled=le,at(x,B?a:l),at(x,B?f:o),se&&se()},b=(x,B)=>{x._isLeaving=!1,at(x,h),at(x,v),at(x,y),B&&B()},I=x=>(B,se)=>{const le=x?$:j,U=()=>R(B,x,se);ct(le,[B,U]),Nr(()=>{at(B,x?c:i),Ke(B,x?a:l),Ir(le)||Fr(B,s,_,U)})};return ae(t,{onBeforeEnter(x){ct(N,[x]),Ke(x,i),Ke(x,o)},onBeforeAppear(x){ct(F,[x]),Ke(x,c),Ke(x,f)},onEnter:I(!1),onAppear:I(!0),onLeave(x,B){x._isLeaving=!0;const se=()=>b(x,B);Ke(x,h),x._enterCancelled?(Ke(x,y),Dr()):(Dr(),Ke(x,y)),Nr(()=>{x._isLeaving&&(at(x,h),Ke(x,v),Ir(g)||Fr(x,s,K,se))}),ct(g,[x,se])},onEnterCancelled(x){R(x,!1,void 0,!0),ct(p,[x])},onAppearCancelled(x){R(x,!0,void 0,!0),ct(V,[x])},onLeaveCancelled(x){b(x),ct(O,[x])}})}function Zc(e){if(e==null)return null;if(ne(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return Jo(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Qt]||(e[Qt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Qt];n&&(n.delete(t),n.size||(e[Qt]=void 0))}function Nr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ea=0;function Fr(e,t,n,s){const r=e._endId=++ea,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ta(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,y),i()},y=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${ze}Delay`),i=s(`${ze}Duration`),o=Hr(r,i),l=s(`${Ht}Delay`),c=s(`${Ht}Duration`),f=Hr(l,c);let a=null,h=0,y=0;t===ze?o>0&&(a=ze,h=o,y=i.length):t===Ht?f>0&&(a=Ht,h=f,y=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,y=a?a===ze?i.length:c.length:0);const v=a===ze&&/\b(transform|all)(,|$)/.test(s(`${ze}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:v}}function Hr(e,t){for(;e.length$r(n)+$r(e[s])))}function $r(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Dr(){return document.body.offsetHeight}function na(e,t,n){const s=e[Qt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),sa=Symbol("_vsh"),ra=Symbol(""),ia=/(^|;)\s*display\s*:/;function oa(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Tn(s,l,"")}else for(const o in t)n[o]==null&&Tn(s,o,"");for(const o in n)o==="display"&&(i=!0),Tn(s,o,n[o])}else if(r){if(t!==n){const o=s[ra];o&&(n+=";"+o),s.cssText=n,i=ia.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=i?s.display:"",e[sa]&&(s.display="none"))}const Vr=/\s*!important$/;function Tn(e,t,n){if(W(n))n.forEach(s=>Tn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=la(e,t);Vr.test(n)?e.setProperty(st(s),n.replace(Vr,""),"important"):e[s]=n}}const Ur=["Webkit","Moz","ms"],ls={};function la(e,t){const n=ls[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return ls[t]=s;s=Fn(s);for(let r=0;rcs||(ua.then(()=>cs=0),cs=Date.now());function ha(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(pa(s,n.value),t,5,[s])};return n.value=e,n.attached=da(),n}function pa(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ga=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?na(e,s,o):t==="style"?oa(e,n,s):en(t)?Fs(t)||aa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ma(e,t,s,o))?(Wr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Br(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Wr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Br(e,t,s,o))};function ma(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Gr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Gr(t)&&re(n)?!1:t in e}const Yr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>bn(t,n):t};function ya(e){e.target.composing=!0}function Xr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const as=Symbol("_assign"),If={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[as]=Yr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=vs(l)),e[as](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ya),St(e,"compositionend",Xr),St(e,"change",Xr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[as]=Yr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?vs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},va=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>va.some(n=>e[`${n}Key`]&&!t.includes(n))},Nf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ba[o]===i))return e(r)})},Eo=ae({patchProp:ga},Xc);let Wt,Jr=!1;function wa(){return Wt||(Wt=xc(Eo))}function Sa(){return Wt=Jr?Wt:Tc(Eo),Jr=!0,Wt}const Hf=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Co(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},$f=(...e)=>{const t=Sa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(r)return n(r,!0,Co(r))},t};function Co(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ao(e){return re(e)?document.querySelector(e):e}const Df=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},xa=window.__VP_SITE_DATA__;function tr(e){return hi()?(il(e),!0):!1}function Be(e){return typeof e=="function"?e():Oi(e)}const Ro=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const jf=e=>e!=null,Ta=Object.prototype.toString,Ea=e=>Ta.call(e)==="[object Object]",Zt=()=>{},zr=Ca();function Ca(){var e,t;return Ro&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Aa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Oo=e=>e();function Ra(e,t={}){let n,s,r=Zt;const i=l=>{clearTimeout(l),r(),r=Zt};return l=>{const c=Be(e),f=Be(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Oa(e=Oo){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Vn(t),pause:n,resume:s,eventFilter:r}}function Ma(e){return qn()}function Mo(...e){if(e.length!==1)return Ll(...e);const t=e[0];return typeof t=="function"?Vn(Ol(()=>({get:t,set:Zt}))):oe(t)}function Po(e,t,n={}){const{eventFilter:s=Oo,...r}=n;return Fe(e,Aa(s,t),r)}function Pa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Oa(s);return{stop:Po(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function nr(e,t=!0,n){Ma()?Lt(e,n):t?e():Un(e)}function Vf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Po(e,t,{...i,eventFilter:Ra(s,{maxWait:r})})}function Uf(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Zt}=s,c=oe(!r),f=o?qs(t):oe(t);let a=0;return Zs(async h=>{if(!c.value)return;a++;const y=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(_=>{h(()=>{i&&(i.value=!1),v||_()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),v=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const $e=Ro?window:void 0;function Lo(e){var t;const n=Be(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=$e):[t,n,s,r]=e,!t)return Zt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,v)=>(a.addEventListener(h,y,v),()=>a.removeEventListener(h,y,v)),c=Fe(()=>[Lo(t),Be(r)],([a,h])=>{if(o(),!a)return;const y=Ea(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(S=>l(a,v,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return tr(f),f}function La(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function kf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=La(t);return Pt(r,i,a=>{a.repeat&&Be(l)||c(a)&&n(a)},o)}function Ia(){const e=oe(!1),t=qn();return t&&Lt(()=>{e.value=!0},t),e}function Na(e){const t=Ia();return ie(()=>(t.value,!!e()))}function Io(e,t={}){const{window:n=$e}=t,s=Na(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Zs(()=>{s.value&&(l(),r=n.matchMedia(Be(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return tr(()=>{c(),l(),r=void 0}),i}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Fa=Ha();function Ha(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function No(e,t){return Fa[e]||t}function sr(e){return Io("(prefers-color-scheme: dark)",e)}function $a(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Da={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Qr="vueuse-storage";function rr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=$e,eventFilter:y,onError:v=b=>{console.error(b)},initOnMounted:S}=s,_=(a?qs:oe)(typeof t=="function"?t():t);if(!n)try{n=No("getDefaultStorage",()=>{var b;return(b=$e)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return _;const K=Be(t),N=$a(K),j=(r=s.serializer)!=null?r:Da[N],{pause:p,resume:g}=Pa(_,()=>F(_.value),{flush:i,deep:o,eventFilter:y});h&&l&&nr(()=>{n instanceof Storage?Pt(h,"storage",V):Pt(h,Qr,R),S&&V()}),S||V();function O(b,I){if(h){const x={key:e,oldValue:b,newValue:I,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Qr,{detail:x}))}}function F(b){try{const I=n.getItem(e);if(b==null)O(I,null),n.removeItem(e);else{const x=j.write(b);I!==x&&(n.setItem(e,x),O(I,x))}}catch(I){v(I)}}function $(b){const I=b?b.newValue:n.getItem(e);if(I==null)return c&&K!=null&&n.setItem(e,j.write(K)),K;if(!b&&f){const x=j.read(I);return typeof f=="function"?f(x,K):N==="object"&&!Array.isArray(x)?{...K,...x}:x}else return typeof I!="string"?I:j.read(I)}function V(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){_.value=K;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==j.write(_.value)&&(_.value=$(b))}catch(I){v(I)}finally{b?Un(g):g()}}}}function R(b){V(b.detail)}return _}const ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Va(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=sr({window:r}),v=ie(()=>y.value?"dark":"light"),S=c||(o==null?Mo(s):rr(o,s,i,{window:r,listenToStorageChanges:l})),_=ie(()=>S.value==="auto"?v.value:S.value),K=No("updateHTMLAttrs",(g,O,F)=>{const $=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Lo(g);if(!$)return;const V=new Set,R=new Set;let b=null;if(O==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{x.includes(B)?V.add(B):R.add(B)})}else b={key:O,value:F};if(V.size===0&&R.size===0&&b===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(ja)),r.document.head.appendChild(I));for(const x of V)$.classList.add(x);for(const x of R)$.classList.remove(x);b&&$.setAttribute(b.key,b.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var O;K(t,n,(O=h[g])!=null?O:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(_,j,{flush:"post",immediate:!0}),nr(()=>j(_.value));const p=ie({get(){return f?S.value:_.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:v,state:_})}catch{return p}}function Ua(e={}){const{valueDark:t="dark",valueLight:n="",window:s=$e}=e,r=Va({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:sr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function fs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Bf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.localStorage,n)}function Fo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const us=new WeakMap;function Wf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Mo(e),l=>{const c=fs(Be(l));if(c){const f=c;if(us.get(f)||us.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=fs(Be(e));!l||n.value||(zr&&(s=Pt(l,"touchmove",c=>{ka(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=fs(Be(e));!l||!n.value||(zr&&(s==null||s()),l.style.overflow=r,us.delete(l),n.value=!1)};return tr(o),ie({get(){return n.value},set(l){l?i():o()}})}function Kf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.sessionStorage,n)}function qf(e={}){const{window:t=$e,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function Gf(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),nr(f),Pt("resize",f,{passive:!0}),r){const a=Io("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const ds={};var hs={};const Ho=/^(?:[a-z]+:|\/\/)/i,Ba="vitepress-theme-appearance",Wa=/#.*$/,Ka=/[?#].*$/,qa=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",$o={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ga(e,t,n=!1){if(t===void 0)return!1;if(e=Zr(`/${e}`),n)return new RegExp(t).test(e);if(Zr(t)!==e)return!1;const s=t.match(Wa);return s?(ge?location.hash:"")===s[0]:!0}function Zr(e){return decodeURI(e).replace(Ka,"").replace(qa,"$1")}function Ya(e){return Ho.test(e)}function Xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ya(n)&&Ga(t,`/${n}/`,!0))||"root"}function Ja(e,t){var s,r,i,o,l,c,f;const n=Xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:jo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Do(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=za(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function za(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Qa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function jo(e,t){return[...e.filter(n=>!Qa(t,n)),...t]}const Za=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ef=/^[a-z]:/i;function ei(e){const t=ef.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Za,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ps=new Set;function tf(e){if(ps.size===0){const n=typeof process=="object"&&(hs==null?void 0:hs.VITE_EXTRA_EXTENSIONS)||(ds==null?void 0:ds.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ps.add(s))}const t=e.split(".").pop();return t==null||!ps.has(t.toLowerCase())}function Yf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const nf=Symbol(),mt=qs(xa);function Xf(e){const t=ie(()=>Ja(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?sr():n?Ua({storageKey:Ba,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>Do(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function sf(){const e=Ot(nf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function rf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ti(e){return Ho.test(e)||!e.startsWith("/")?e:rf(mt.value.base,e)}function of(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/DimensionalData.jl/dev/";t=ei(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${ei(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let En=[];function Jf(e){En.push(e),Bn(()=>{En=En.filter(t=>t!==e)})}function lf(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ni(e,n);else if(Array.isArray(e))for(const s of e){const r=ni(s,n);if(r){t=r;break}}return t}function ni(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const cf=Symbol(),Vo="http://a.com",af=()=>({path:"/",component:null,data:$o});function zf(e,t){const n=jn(af()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=gs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==gs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,v;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,Vo),h=i=a.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:K}=S;if(!_)throw new Error(`Invalid route component: ${_}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=ge?h:ti(h),n.component=wn(_),n.data=wn(K),ge&&Un(()=>{let N=mt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){si(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const _=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:ti(h),n.component=t?wn(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...$o,relativePath:_}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:y,hash:v,search:S}=new URL(f,c.baseURI),_=new URL(location.href);h===_.origin&&tf(y)&&(l.preventDefault(),y===_.pathname&&S===_.search?(v!==_.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:_.href,newURL:a}))),v?si(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(gs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ff(){const e=Ot(cf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Uo(){return ff().route}function si(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-lf()+i;requestAnimationFrame(r)}}function gs(e){const t=new URL(e,Vo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const yn=()=>En.forEach(e=>e()),Qf=Ys({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Uo(),{frontmatter:n,site:s}=sf();return Fe(n,yn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:yn,onVnodeUpdated:yn,onVnodeUnmounted:yn}):"404 Page Not Found"])}}),uf="modulepreload",df=function(e){return"/DimensionalData.jl/dev/"+e},ri={},Zf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=df(c),c in ri)return;ri[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":uf,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((y,v)=>{h.addEventListener("load",y),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},eu=Ys({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function tu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function nu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),hf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function hf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function su(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ms(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(ms);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Zs(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=Do(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):ms(["meta",{name:"description",content:a}]),r(jo(o.head,gf(c)))})}function ms([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function pf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function gf(e){return e.filter(t=>!pf(t))}const ys=new Set,ko=()=>document.createElement("link"),mf=e=>{const t=ko();t.rel="prefetch",t.href=e,document.head.appendChild(t)},yf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let vn;const vf=ge&&(vn=ko())&&vn.relList&&vn.relList.supports&&vn.relList.supports("prefetch")?mf:yf;function ru(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ys.has(c)){ys.add(c);const f=of(c);f&&vf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ys.add(l))})})};Lt(s);const r=Uo();Fe(()=>r.path,s),Bn(()=>{n&&n.disconnect()})}export{Ki as $,nc as A,Sf as B,Tf as C,qs as D,Jf as E,xe as F,ce as G,Ho as H,xf as I,Uo as J,$c as K,Ot as L,Gf as M,Ds as N,kf as O,Un as P,qf as Q,ge as R,Vn as S,Lf as T,wf as U,Zf as V,Wf as W,mc as X,Ff as Y,Cf as Z,Df as _,_o as a,Nf as a0,Af as a1,jn as a2,Ll as a3,Mf as a4,zf as a5,of as a6,$f as a7,ru as a8,nu as a9,tu as aa,Ls as ab,cf as ac,Xf as ad,nf as ae,Qf as af,eu as ag,mt as ah,su as ai,Be as aj,Lo as ak,jf as al,tr as am,Uf as an,wn as ao,Kf as ap,Bf as aq,Vf as ar,Hf as as,Yf as at,ff as au,Pt as av,_f as aw,If as ax,fe as ay,bf as az,Ms as b,Of as c,Ys as d,Pf as e,tf as f,ti as g,ie as h,Ya as i,vo as j,Oi as k,Ga as l,Io as m,js as n,Os as o,oe as p,Fe as q,Ef as r,Zs as s,sl as t,sf as u,Lt as v,Ul as w,Bn as x,Rf as y,lf as z};
+**/let Is;const Pr=typeof window<"u"&&window.trustedTypes;if(Pr)try{Is=Pr.createPolicy("vue",{createHTML:e=>e})}catch{}const xo=Is?e=>Is.createHTML(e):e=>e,Gc="http://www.w3.org/2000/svg",Yc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Lr=qe&&qe.createElement("template"),Xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(Gc,e):t==="mathml"?qe.createElementNS(Yc,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Lr.innerHTML=xo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Lr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Dt="animation",Qt=Symbol("_vtc"),Eo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Jc=ae({},ji,Eo),zc=e=>(e.displayName="Transition",e.props=Jc,e),Lf=zc((e,{slots:t})=>Ls(Kl,Qc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ir=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Qc(e){const t={};for(const x in e)x in Eo||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,S=Zc(r),_=S&&S[0],K=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:F=N,onAppear:H=j,onAppearCancelled:V=p}=t,R=(x,B,se,le)=>{x._enterCancelled=le,at(x,B?a:l),at(x,B?f:o),se&&se()},b=(x,B)=>{x._isLeaving=!1,at(x,h),at(x,v),at(x,y),B&&B()},I=x=>(B,se)=>{const le=x?H:j,U=()=>R(B,x,se);ct(le,[B,U]),Nr(()=>{at(B,x?c:i),Ke(B,x?a:l),Ir(le)||Fr(B,s,_,U)})};return ae(t,{onBeforeEnter(x){ct(N,[x]),Ke(x,i),Ke(x,o)},onBeforeAppear(x){ct(F,[x]),Ke(x,c),Ke(x,f)},onEnter:I(!1),onAppear:I(!0),onLeave(x,B){x._isLeaving=!0;const se=()=>b(x,B);Ke(x,h),x._enterCancelled?(Ke(x,y),$r()):($r(),Ke(x,y)),Nr(()=>{x._isLeaving&&(at(x,h),Ke(x,v),Ir(g)||Fr(x,s,K,se))}),ct(g,[x,se])},onEnterCancelled(x){R(x,!1,void 0,!0),ct(p,[x])},onAppearCancelled(x){R(x,!0,void 0,!0),ct(V,[x])},onLeaveCancelled(x){b(x),ct(O,[x])}})}function Zc(e){if(e==null)return null;if(ne(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return Jo(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Qt]||(e[Qt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Qt];n&&(n.delete(t),n.size||(e[Qt]=void 0))}function Nr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ea=0;function Fr(e,t,n,s){const r=e._endId=++ea,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ta(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,y),i()},y=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${ze}Delay`),i=s(`${ze}Duration`),o=Dr(r,i),l=s(`${Dt}Delay`),c=s(`${Dt}Duration`),f=Dr(l,c);let a=null,h=0,y=0;t===ze?o>0&&(a=ze,h=o,y=i.length):t===Dt?f>0&&(a=Dt,h=f,y=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Dt:null,y=a?a===ze?i.length:c.length:0);const v=a===ze&&/\b(transform|all)(,|$)/.test(s(`${ze}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:v}}function Dr(e,t){for(;e.lengthHr(n)+Hr(e[s])))}function Hr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function $r(){return document.body.offsetHeight}function na(e,t,n){const s=e[Qt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),sa=Symbol("_vsh"),ra=Symbol(""),ia=/(^|;)\s*display\s*:/;function oa(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&En(s,l,"")}else for(const o in t)n[o]==null&&En(s,o,"");for(const o in n)o==="display"&&(i=!0),En(s,o,n[o])}else if(r){if(t!==n){const o=s[ra];o&&(n+=";"+o),s.cssText=n,i=ia.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=i?s.display:"",e[sa]&&(s.display="none"))}const Vr=/\s*!important$/;function En(e,t,n){if(W(n))n.forEach(s=>En(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=la(e,t);Vr.test(n)?e.setProperty(st(s),n.replace(Vr,""),"important"):e[s]=n}}const Ur=["Webkit","Moz","ms"],ls={};function la(e,t){const n=ls[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return ls[t]=s;s=Fn(s);for(let r=0;rcs||(ua.then(()=>cs=0),cs=Date.now());function ha(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;De(pa(s,n.value),t,5,[s])};return n.value=e,n.attached=da(),n}function pa(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ga=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?na(e,s,o):t==="style"?oa(e,n,s):en(t)?Fs(t)||aa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ma(e,t,s,o))?(Wr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Br(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Wr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Br(e,t,s,o))};function ma(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Gr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Gr(t)&&re(n)?!1:t in e}const Yr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>bn(t,n):t};function ya(e){e.target.composing=!0}function Xr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const as=Symbol("_assign"),If={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[as]=Yr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=vs(l)),e[as](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ya),St(e,"compositionend",Xr),St(e,"change",Xr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[as]=Yr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?vs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},va=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>va.some(n=>e[`${n}Key`]&&!t.includes(n))},Nf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ba[o]===i))return e(r)})},To=ae({patchProp:ga},Xc);let Wt,Jr=!1;function wa(){return Wt||(Wt=xc(To))}function Sa(){return Wt=Jr?Wt:Ec(To),Jr=!0,Wt}const Df=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Co(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Hf=(...e)=>{const t=Sa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(r)return n(r,!0,Co(r))},t};function Co(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ao(e){return re(e)?document.querySelector(e):e}const $f=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},xa=window.__VP_SITE_DATA__;function tr(e){return hi()?(il(e),!0):!1}function Be(e){return typeof e=="function"?e():Oi(e)}const Ro=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const jf=e=>e!=null,Ea=Object.prototype.toString,Ta=e=>Ea.call(e)==="[object Object]",Zt=()=>{},zr=Ca();function Ca(){var e,t;return Ro&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Aa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Oo=e=>e();function Ra(e,t={}){let n,s,r=Zt;const i=l=>{clearTimeout(l),r(),r=Zt};return l=>{const c=Be(e),f=Be(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Oa(e=Oo){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Vn(t),pause:n,resume:s,eventFilter:r}}function Ma(e){return qn()}function Mo(...e){if(e.length!==1)return Ll(...e);const t=e[0];return typeof t=="function"?Vn(Ol(()=>({get:t,set:Zt}))):oe(t)}function Po(e,t,n={}){const{eventFilter:s=Oo,...r}=n;return Fe(e,Aa(s,t),r)}function Pa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Oa(s);return{stop:Po(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function nr(e,t=!0,n){Ma()?Lt(e,n):t?e():Un(e)}function Vf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Po(e,t,{...i,eventFilter:Ra(s,{maxWait:r})})}function Uf(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Zt}=s,c=oe(!r),f=o?qs(t):oe(t);let a=0;return Zs(async h=>{if(!c.value)return;a++;const y=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(_=>{h(()=>{i&&(i.value=!1),v||_()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),v=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const He=Ro?window:void 0;function Lo(e){var t;const n=Be(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=He):[t,n,s,r]=e,!t)return Zt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,v)=>(a.addEventListener(h,y,v),()=>a.removeEventListener(h,y,v)),c=Fe(()=>[Lo(t),Be(r)],([a,h])=>{if(o(),!a)return;const y=Ta(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(S=>l(a,v,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return tr(f),f}function La(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function kf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=He,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=La(t);return Pt(r,i,a=>{a.repeat&&Be(l)||c(a)&&n(a)},o)}function Ia(){const e=oe(!1),t=qn();return t&&Lt(()=>{e.value=!0},t),e}function Na(e){const t=Ia();return ie(()=>(t.value,!!e()))}function Io(e,t={}){const{window:n=He}=t,s=Na(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Zs(()=>{s.value&&(l(),r=n.matchMedia(Be(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return tr(()=>{c(),l(),r=void 0}),i}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Fa=Da();function Da(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function No(e,t){return Fa[e]||t}function sr(e){return Io("(prefers-color-scheme: dark)",e)}function Ha(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const $a={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Qr="vueuse-storage";function rr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=He,eventFilter:y,onError:v=b=>{console.error(b)},initOnMounted:S}=s,_=(a?qs:oe)(typeof t=="function"?t():t);if(!n)try{n=No("getDefaultStorage",()=>{var b;return(b=He)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return _;const K=Be(t),N=Ha(K),j=(r=s.serializer)!=null?r:$a[N],{pause:p,resume:g}=Pa(_,()=>F(_.value),{flush:i,deep:o,eventFilter:y});h&&l&&nr(()=>{n instanceof Storage?Pt(h,"storage",V):Pt(h,Qr,R),S&&V()}),S||V();function O(b,I){if(h){const x={key:e,oldValue:b,newValue:I,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Qr,{detail:x}))}}function F(b){try{const I=n.getItem(e);if(b==null)O(I,null),n.removeItem(e);else{const x=j.write(b);I!==x&&(n.setItem(e,x),O(I,x))}}catch(I){v(I)}}function H(b){const I=b?b.newValue:n.getItem(e);if(I==null)return c&&K!=null&&n.setItem(e,j.write(K)),K;if(!b&&f){const x=j.read(I);return typeof f=="function"?f(x,K):N==="object"&&!Array.isArray(x)?{...K,...x}:x}else return typeof I!="string"?I:j.read(I)}function V(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){_.value=K;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==j.write(_.value)&&(_.value=H(b))}catch(I){v(I)}finally{b?Un(g):g()}}}}function R(b){V(b.detail)}return _}const ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Va(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=He,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=sr({window:r}),v=ie(()=>y.value?"dark":"light"),S=c||(o==null?Mo(s):rr(o,s,i,{window:r,listenToStorageChanges:l})),_=ie(()=>S.value==="auto"?v.value:S.value),K=No("updateHTMLAttrs",(g,O,F)=>{const H=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Lo(g);if(!H)return;const V=new Set,R=new Set;let b=null;if(O==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{x.includes(B)?V.add(B):R.add(B)})}else b={key:O,value:F};if(V.size===0&&R.size===0&&b===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(ja)),r.document.head.appendChild(I));for(const x of V)H.classList.add(x);for(const x of R)H.classList.remove(x);b&&H.setAttribute(b.key,b.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var O;K(t,n,(O=h[g])!=null?O:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(_,j,{flush:"post",immediate:!0}),nr(()=>j(_.value));const p=ie({get(){return f?S.value:_.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:v,state:_})}catch{return p}}function Ua(e={}){const{valueDark:t="dark",valueLight:n="",window:s=He}=e,r=Va({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:sr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function fs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Bf(e,t,n={}){const{window:s=He}=n;return rr(e,t,s==null?void 0:s.localStorage,n)}function Fo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const us=new WeakMap;function Wf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Mo(e),l=>{const c=fs(Be(l));if(c){const f=c;if(us.get(f)||us.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=fs(Be(e));!l||n.value||(zr&&(s=Pt(l,"touchmove",c=>{ka(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=fs(Be(e));!l||!n.value||(zr&&(s==null||s()),l.style.overflow=r,us.delete(l),n.value=!1)};return tr(o),ie({get(){return n.value},set(l){l?i():o()}})}function Kf(e,t,n={}){const{window:s=He}=n;return rr(e,t,s==null?void 0:s.sessionStorage,n)}function qf(e={}){const{window:t=He,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function Gf(e={}){const{window:t=He,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),nr(f),Pt("resize",f,{passive:!0}),r){const a=Io("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const ds={BASE_URL:"/DimensionalData.jl/dev/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var hs={};const Do=/^(?:[a-z]+:|\/\/)/i,Ba="vitepress-theme-appearance",Wa=/#.*$/,Ka=/[?#].*$/,qa=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Ho={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ga(e,t,n=!1){if(t===void 0)return!1;if(e=Zr(`/${e}`),n)return new RegExp(t).test(e);if(Zr(t)!==e)return!1;const s=t.match(Wa);return s?(ge?location.hash:"")===s[0]:!0}function Zr(e){return decodeURI(e).replace(Ka,"").replace(qa,"$1")}function Ya(e){return Do.test(e)}function Xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ya(n)&&Ga(t,`/${n}/`,!0))||"root"}function Ja(e,t){var s,r,i,o,l,c,f;const n=Xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:jo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function $o(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=za(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function za(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Qa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function jo(e,t){return[...e.filter(n=>!Qa(t,n)),...t]}const Za=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ef=/^[a-z]:/i;function ei(e){const t=ef.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Za,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ps=new Set;function tf(e){if(ps.size===0){const n=typeof process=="object"&&(hs==null?void 0:hs.VITE_EXTRA_EXTENSIONS)||(ds==null?void 0:ds.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ps.add(s))}const t=e.split(".").pop();return t==null||!ps.has(t.toLowerCase())}function Yf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const nf=Symbol(),mt=qs(xa);function Xf(e){const t=ie(()=>Ja(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?sr():n?Ua({storageKey:Ba,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>$o(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function sf(){const e=Ot(nf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function rf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ti(e){return Do.test(e)||!e.startsWith("/")?e:rf(mt.value.base,e)}function of(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/DimensionalData.jl/dev/";t=ei(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${ei(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function Jf(e){Tn.push(e),Bn(()=>{Tn=Tn.filter(t=>t!==e)})}function lf(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ni(e,n);else if(Array.isArray(e))for(const s of e){const r=ni(s,n);if(r){t=r;break}}return t}function ni(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const cf=Symbol(),Vo="http://a.com",af=()=>({path:"/",component:null,data:Ho});function zf(e,t){const n=jn(af()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=gs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==gs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,v;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,Vo),h=i=a.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:K}=S;if(!_)throw new Error(`Invalid route component: ${_}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=ge?h:ti(h),n.component=wn(_),n.data=wn(K),ge&&Un(()=>{let N=mt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){si(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const _=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:ti(h),n.component=t?wn(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ho,relativePath:_}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:y,hash:v,search:S}=new URL(f,c.baseURI),_=new URL(location.href);h===_.origin&&tf(y)&&(l.preventDefault(),y===_.pathname&&S===_.search?(v!==_.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:_.href,newURL:a}))),v?si(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(gs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ff(){const e=Ot(cf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Uo(){return ff().route}function si(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-lf()+i;requestAnimationFrame(r)}}function gs(e){const t=new URL(e,Vo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const yn=()=>Tn.forEach(e=>e()),Qf=Ys({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Uo(),{frontmatter:n,site:s}=sf();return Fe(n,yn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:yn,onVnodeUpdated:yn,onVnodeUnmounted:yn}):"404 Page Not Found"])}}),uf="modulepreload",df=function(e){return"/DimensionalData.jl/dev/"+e},ri={},Zf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=df(c),c in ri)return;ri[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":uf,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((y,v)=>{h.addEventListener("load",y),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},eu=Ys({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function tu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function nu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),hf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function hf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function su(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ms(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(ms);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Zs(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=$o(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):ms(["meta",{name:"description",content:a}]),r(jo(o.head,gf(c)))})}function ms([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function pf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function gf(e){return e.filter(t=>!pf(t))}const ys=new Set,ko=()=>document.createElement("link"),mf=e=>{const t=ko();t.rel="prefetch",t.href=e,document.head.appendChild(t)},yf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let vn;const vf=ge&&(vn=ko())&&vn.relList&&vn.relList.supports&&vn.relList.supports("prefetch")?mf:yf;function ru(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ys.has(c)){ys.add(c);const f=of(c);f&&vf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ys.add(l))})})};Lt(s);const r=Uo();Fe(()=>r.path,s),Bn(()=>{n&&n.disconnect()})}export{Ki as $,lf as A,Sf as B,Ef as C,qs as D,Jf as E,xe as F,ce as G,xf as H,Do as I,Uo as J,Hc as K,Ot as L,Gf as M,$s as N,kf as O,Un as P,qf as Q,ge as R,Vn as S,Lf as T,wf as U,Zf as V,Wf as W,mc as X,Cf as Y,Ff as Z,$f as _,_o as a,Nf as a0,Af as a1,jn as a2,Ll as a3,Mf as a4,su as a5,cf as a6,Xf as a7,nf as a8,Qf as a9,eu as aa,mt as ab,Hf as ac,zf as ad,of as ae,ru as af,nu as ag,tu as ah,Ls as ai,Be as aj,Lo as ak,jf as al,tr as am,Uf as an,Kf as ao,Bf as ap,Vf as aq,ff as ar,Pt as as,_f as at,If as au,fe as av,bf as aw,wn as ax,Df as ay,Yf as az,Ms as b,Of as c,Ys as d,Pf as e,tf as f,ti as g,ie as h,Ya as i,vo as j,Oi as k,Ga as l,Io as m,js as n,Os as o,oe as p,Fe as q,Tf as r,Zs as s,sl as t,sf as u,Lt as v,Ul as w,Bn as x,Rf as y,nc as z};
diff --git a/dev/assets/chunks/theme.BgWk1Cn2.js b/dev/assets/chunks/theme.BgWk1Cn2.js
new file mode 100644
index 000000000..40b3cb0b0
--- /dev/null
+++ b/dev/assets/chunks/theme.BgWk1Cn2.js
@@ -0,0 +1,2 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.Bitc2Dar.js","assets/chunks/framework.60YQGL-0.js"])))=>i.map(i=>d[i]);
+import{d as b,o as a,c as d,r as u,n as I,a as j,t as N,b as k,w as f,e as _,T as de,_ as $,u as Se,i as je,f as ze,g as ve,h as P,j as p,k as i,l as z,m as re,p as T,q as D,s as Z,v as F,x as pe,y as fe,z as Ke,A as We,B as K,F as M,C as E,D as Le,E as x,G as g,H,I as Te,J as ee,K as G,L as q,M as qe,N as we,O as ie,P as he,Q as Ne,R as te,S as Je,U as Ye,V as Xe,W as Ie,X as me,Y as Qe,Z as Ze,$ as xe,a0 as et,a1 as Me,a2 as tt,a3 as nt}from"./framework.60YQGL-0.js";const st=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),d("span",{class:I(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[j(N(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},at=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),k(de,{name:"fade"},{default:f(()=>[e.show?(a(),d("div",ot)):_("",!0)]),_:1}))}}),rt=$(at,[["__scopeId","data-v-b06cdb19"]]),L=Se;function it(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function _e(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(je(o)||o.startsWith("#")||!n.startsWith("http")||!ze(e))return o;const{site:r}=L(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return ve(l)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:r}=L(),l=P(()=>{var c,h;return{label:(c=e.value.locales[t.value])==null?void 0:c.label,link:((h=e.value.locales[t.value])==null?void 0:h.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:P(()=>Object.entries(e.value.locales).flatMap(([c,h])=>l.value.label===h.label?[]:{text:h.label,link:lt(h.link||(c==="root"?"/":`/${c}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function lt(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},vt={class:"quote"},pt={class:"action"},ft=["href","aria-label"],ht=b({__name:"NotFound",setup(o){const{theme:e}=L(),{currentLang:t}=Y();return(s,n)=>{var r,l,v,c,h;return a(),d("div",ct,[p("p",ut,N(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",dt,N(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",vt,N(((v=i(e).notFound)==null?void 0:v.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",pt,[p("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((c=i(e).notFound)==null?void 0:c.linkLabel)??"go to home"},N(((h=i(e).notFound)==null?void 0:h.linkText)??"Take me home"),9,ft)])])}}}),mt=$(ht,[["__scopeId","data-v-951cab6c"]]);function Ce(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function _t(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function bt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):z(o,e.link)?!0:e.items?ce(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function R(){const{frontmatter:o,page:e,theme:t}=L(),s=re("(min-width: 960px)"),n=T(!1),r=P(()=>{const A=t.value.sidebar,w=e.value.relativePath;return A?Ce(A,w):[]}),l=T(r.value);D(r,(A,w)=>{JSON.stringify(A)!==JSON.stringify(w)&&(l.value=r.value)});const v=P(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),c=P(()=>h?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),h=P(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),y=P(()=>v.value&&s.value),m=P(()=>v.value?_t(l.value):[]);function V(){n.value=!0}function S(){n.value=!1}function C(){n.value?S():V()}return{isOpen:n,sidebar:l,sidebarGroups:m,hasSidebar:v,hasAside:h,leftAside:c,isSidebarEnabled:y,open:V,close:S,toggle:C}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),F(()=>{window.addEventListener("keyup",s)}),pe(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function gt(o){const{page:e,hash:t}=L(),s=T(!1),n=P(()=>o.value.collapsed!=null),r=P(()=>!!o.value.link),l=T(!1),v=()=>{l.value=z(e.value.relativePath,o.value.link)};D([e,o,t],v),F(v);const c=P(()=>l.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),h=P(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(l.value||c.value)&&(s.value=!1)});function y(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:c,hasChildren:h,toggle:y}}function $t(){const{hasSidebar:o}=R(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:P(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function Ae(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function be(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Lt(o,s,n)}function Vt(o,e){const{isAsideEnabled:t}=$t(),s=it(r,100);let n=null;F(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),Ke(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const v=window.scrollY,c=window.innerHeight,h=document.body.offsetHeight,y=Math.abs(v+c-h)<1,m=ue.map(({element:S,link:C})=>({link:C,top:St(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,C)=>S.top-C.top);if(!m.length){l(null);return}if(v<1){l(null);return}if(y){l(m[m.length-1].link);return}let V=null;for(const{link:S,top:C}of m){if(C>v+We()+4)break;V=S}l(V)}function l(v){n&&n.classList.remove("active"),v==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const c=n;c?(c.classList.add("active"),e.value.style.top=c.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function St(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function Lt(o,e,t){ue.length=0;const s=[],n=[];return o.forEach(r=>{const l={...r,children:[]};let v=n[n.length-1];for(;v&&v.level>=l.level;)n.pop(),v=n[n.length-1];if(l.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),d("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),d(M,null,E(t.headers,({children:r,link:l,title:v})=>(a(),d("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:v},N(v),9,Tt),r!=null&&r.length?(a(),k(n,{key:0,headers:r},null,8,["headers"])):_("",!0)]))),256))],2)}}}),Ee=$(wt,[["__scopeId","data-v-3f927ebe"]]),Nt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Mt=b({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),s=Le([]);x(()=>{s.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return Vt(n,r),(l,v)=>(a(),d("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",Nt,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",It,N(i(Ae)(i(t))),1),g(Ee,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Ct=$(Mt,[["__scopeId","data-v-b38bf2ff"]]),At={class:"VPDocAsideCarbonAds"},Et=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),d("div",At,[g(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Bt={class:"VPDocAside"},Ht=b({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,s)=>(a(),d("div",Bt,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),g(Ct),u(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=p("div",{class:"spacer"},null,-1)),u(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),k(Et,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):_("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ot=$(Ht,[["__scopeId","data-v-6d7b3c46"]]);function Dt(){const{theme:o,page:e}=L();return P(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ft(){const{page:o,theme:e,frontmatter:t}=L();return P(()=>{var h,y,m,V,S,C,A,w;const s=Ce(e.value.sidebar,o.value.relativePath),n=bt(s),r=Rt(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>z(o.value.relativePath,B.link)),v=((h=e.value.docFooter)==null?void 0:h.prev)===!1&&!t.value.prev||t.value.prev===!1,c=((y=e.value.docFooter)==null?void 0:y.next)===!1&&!t.value.next||t.value.next===!1;return{prev:v?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((m=r[l-1])==null?void 0:m.docFooterText)??((V=r[l-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:c?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((C=r[l+1])==null?void 0:C.docFooterText)??((A=r[l+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=r[l+1])==null?void 0:w.link)}}})}function Rt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const O=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=P(()=>e.tag??(e.href?"a":"span")),s=P(()=>e.href&&Te.test(e.href)||e.target==="_blank");return(n,r)=>(a(),k(H(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[u(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ut={class:"VPLastUpdated"},Gt=["datetime"],jt=b({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=L(),n=P(()=>new Date(t.value.lastUpdated)),r=P(()=>n.value.toISOString()),l=T("");return F(()=>{Z(()=>{var v,c,h;l.value=new Intl.DateTimeFormat((c=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&c.forceLocale?s.value:void 0,((h=e.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(v,c)=>{var h;return a(),d("p",Ut,[j(N(((h=i(e).lastUpdated)==null?void 0:h.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},N(l.value),9,Gt)])}}}),zt=$(jt,[["__scopeId","data-v-475f71b8"]]),Kt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},qt={key:0,class:"edit-link"},Jt={key:1,class:"last-updated"},Yt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt={class:"pager"},Qt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},en=["innerHTML"],tn=["innerHTML"],nn=b({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=L(),n=Dt(),r=Ft(),l=P(()=>e.value.editLink&&s.value.editLink!==!1),v=P(()=>t.value.lastUpdated),c=P(()=>l.value||v.value||r.value.prev||r.value.next);return(h,y)=>{var m,V,S,C;return c.value?(a(),d("footer",Kt,[u(h.$slots,"doc-footer-before",{},void 0,!0),l.value||v.value?(a(),d("div",Wt,[l.value?(a(),d("div",qt,[g(O,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:f(()=>[y[0]||(y[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+N(i(n).text),1)]),_:1},8,["href"])])):_("",!0),v.value?(a(),d("div",Jt,[g(zt)])):_("",!0)])):_("",!0),(m=i(r).prev)!=null&&m.link||(V=i(r).next)!=null&&V.link?(a(),d("nav",Yt,[y[1]||(y[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Xt,[(S=i(r).prev)!=null&&S.link?(a(),k(O,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var A;return[p("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,Qt),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,Zt)]}),_:1},8,["href"])):_("",!0)]),p("div",xt,[(C=i(r).next)!=null&&C.link?(a(),k(O,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var A;return[p("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,en),p("span",{class:"title",innerHTML:i(r).next.text},null,8,tn)]}),_:1},8,["href"])):_("",!0)])])):_("",!0)])):_("",!0)}}}),sn=$(nn,[["__scopeId","data-v-4f9813fa"]]),on={class:"container"},an={class:"aside-container"},rn={class:"aside-content"},ln={class:"content"},cn={class:"content-container"},un={class:"main"},dn=b({__name:"VPDoc",setup(o){const{theme:e}=L(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:r}=R(),l=P(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,c)=>{const h=K("Content");return a(),d("div",{class:I(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[u(v.$slots,"doc-top",{},void 0,!0),p("div",on,[i(n)?(a(),d("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[c[0]||(c[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",an,[p("div",rn,[g(Ot,null,{"aside-top":f(()=>[u(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):_("",!0),p("div",ln,[p("div",cn,[u(v.$slots,"doc-before",{},void 0,!0),p("main",un,[g(h,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(sn,null,{"doc-footer-before":f(()=>[u(v.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(v.$slots,"doc-after",{},void 0,!0)])])]),u(v.$slots,"doc-bottom",{},void 0,!0)],2)}}}),vn=$(dn,[["__scopeId","data-v-83890dd9"]]),pn=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=P(()=>e.href&&Te.test(e.href)),s=P(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),k(H(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(N(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),fn=$(pn,[["__scopeId","data-v-906d7fb4"]]),hn=["src","alt"],mn=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=K("VPImage",!0);return e.image?(a(),d(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),d("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,hn)):(a(),d(M,{key:1},[g(s,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(s,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):_("",!0)}}}),Q=$(mn,[["__scopeId","data-v-35a7d0b8"]]),_n={class:"container"},bn={class:"main"},kn={key:0,class:"name"},gn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:0,class:"actions"},Vn={key:0,class:"image"},Sn={class:"image-container"},Ln=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=q("hero-image-slot-exists");return(t,s)=>(a(),d("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[p("div",_n,[p("div",bn,[u(t.$slots,"home-hero-info-before",{},void 0,!0),u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),d("h1",kn,[p("span",{innerHTML:t.name,class:"clip"},null,8,gn)])):_("",!0),t.text?(a(),d("p",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):_("",!0),t.tagline?(a(),d("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,yn)):_("",!0)],!0),u(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),d("div",Pn,[(a(!0),d(M,null,E(t.actions,n=>(a(),d("div",{key:n.link,class:"action"},[g(fn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):_("",!0),u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),d("div",Vn,[p("div",Sn,[s[0]||(s[0]=p("div",{class:"image-bg"},null,-1)),u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):_("",!0)],!0)])])):_("",!0)])],2))}}),Tn=$(Ln,[["__scopeId","data-v-955009fc"]]),wn=b({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,s)=>i(e).hero?(a(),k(Tn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[u(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[u(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[u(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[u(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):_("",!0)}}),Nn={class:"box"},In={key:0,class:"icon"},Mn=["innerHTML"],Cn=["innerHTML"],An=["innerHTML"],En={key:4,class:"link-text"},Bn={class:"link-text-value"},Hn=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),k(O,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Nn,[typeof e.icon=="object"&&e.icon.wrap?(a(),d("div",In,[g(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),d("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Mn)):_("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Cn),e.details?(a(),d("p",{key:3,class:"details",innerHTML:e.details},null,8,An)):_("",!0),e.linkText?(a(),d("div",En,[p("p",Bn,[j(N(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):_("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),On=$(Hn,[["__scopeId","data-v-f5e9645b"]]),Dn={key:0,class:"VPFeatures"},Fn={class:"container"},Rn={class:"items"},Un=b({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=P(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),d("div",Dn,[p("div",Fn,[p("div",Rn,[(a(!0),d(M,null,E(s.features,r=>(a(),d("div",{key:r.title,class:I(["item",[t.value]])},[g(On,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):_("",!0)}}),Gn=$(Un,[["__scopeId","data-v-d0a190d7"]]),jn=b({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,s)=>i(e).features?(a(),k(Gn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):_("",!0)}}),zn=b({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),d("div",{class:"vp-doc container",style:we(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[u(t.$slots,"default",{},void 0,!0)],4))}}),Kn=$(zn,[["__scopeId","data-v-7a48a447"]]),Wn={class:"VPHome"},qn=b({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,s)=>{const n=K("Content");return a(),d("div",Wn,[u(t.$slots,"home-hero-before",{},void 0,!0),g(wn,null,{"home-hero-info-before":f(()=>[u(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(t.$slots,"home-hero-after",{},void 0,!0),u(t.$slots,"home-features-before",{},void 0,!0),g(jn),u(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),k(Kn,{key:0},{default:f(()=>[g(n)]),_:1})):(a(),k(n,{key:1}))])}}}),Jn=$(qn,[["__scopeId","data-v-cbb6ec48"]]),Yn={},Xn={class:"VPPage"};function Qn(o,e){const t=K("Content");return a(),d("div",Xn,[u(o.$slots,"page-top"),g(t),u(o.$slots,"page-bottom")])}const Zn=$(Yn,[["render",Qn]]),xn=b({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:s}=R();return(n,r)=>(a(),d("div",{class:I(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?u(n.$slots,"not-found",{key:0},()=>[g(mt)],!0):i(t).layout==="page"?(a(),k(Zn,{key:1},{"page-top":f(()=>[u(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),k(Jn,{key:2},{"home-hero-before":f(()=>[u(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),k(H(i(t).layout),{key:3})):(a(),k(vn,{key:4},{"doc-top":f(()=>[u(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[u(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[u(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[u(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[u(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),es=$(xn,[["__scopeId","data-v-91765379"]]),ts={class:"container"},ns=["innerHTML"],ss=["innerHTML"],os=b({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=R();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),d("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(s)}])},[p("div",ts,[i(e).footer.message?(a(),d("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ns)):_("",!0),i(e).footer.copyright?(a(),d("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,ss)):_("",!0)])],2)):_("",!0)}}),as=$(os,[["__scopeId","data-v-c970a860"]]);function rs(){const{theme:o,frontmatter:e}=L(),t=Le([]),s=P(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const is={class:"menu-text"},ls={class:"header"},cs={class:"outline"},us=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),s=T(!1),n=T(0),r=T(),l=T();function v(m){var V;(V=r.value)!=null&&V.contains(m.target)||(s.value=!1)}D(s,m=>{if(m){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function c(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function h(m){m.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{s.value=!1}))}function y(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(m,V)=>(a(),d("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[m.headers.length>0?(a(),d("button",{key:0,onClick:c,class:I({open:s.value})},[p("span",is,N(i(Ae)(i(t))),1),V[0]||(V[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),d("button",{key:1,onClick:y},N(i(t).returnToTopLabel||"Return to top"),1)),g(de,{name:"flyout"},{default:f(()=>[s.value?(a(),d("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:h},[p("div",ls,[p("a",{class:"top-link",href:"#",onClick:y},N(i(t).returnToTopLabel||"Return to top"),1)]),p("div",cs,[g(Ee,{headers:m.headers},null,8,["headers"])])],512)):_("",!0)]),_:1})],4))}}),ds=$(us,[["__scopeId","data-v-bc9dc845"]]),vs={class:"container"},ps=["aria-expanded"],fs={class:"menu-text"},hs=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=R(),{headers:n}=rs(),{y:r}=Ne(),l=T(0);F(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=be(t.value.outline??e.value.outline)});const v=P(()=>n.value.length===0),c=P(()=>v.value&&!s.value),h=P(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:v.value,fixed:c.value}));return(y,m)=>i(t).layout!=="home"&&(!c.value||i(r)>=l.value)?(a(),d("div",{key:0,class:I(h.value)},[p("div",vs,[i(s)?(a(),d("button",{key:0,class:"menu","aria-expanded":y.open,"aria-controls":"VPSidebarNav",onClick:m[0]||(m[0]=V=>y.$emit("open-menu"))},[m[1]||(m[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",fs,N(i(e).sidebarMenuLabel||"Menu"),1)],8,ps)):_("",!0),g(ds,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):_("",!0)}}),ms=$(hs,[["__scopeId","data-v-070ab83d"]]);function _s(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=ee();return D(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const bs={},ks={class:"VPSwitch",type:"button",role:"switch"},gs={class:"check"},$s={key:0,class:"icon"};function ys(o,e){return a(),d("button",ks,[p("span",gs,[o.$slots.default?(a(),d("span",$s,[u(o.$slots,"default",{},void 0,!0)])):_("",!0)])])}const Ps=$(bs,[["render",ys],["__scopeId","data-v-4a1c76db"]]),Vs=b({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),s=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),k(Ps,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Vs,[["__scopeId","data-v-e40a8bb6"]]),Ss={key:0,class:"VPNavBarAppearance"},Ls=b({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),d("div",Ss,[g(ke)])):_("",!0)}}),Ts=$(Ls,[["__scopeId","data-v-af096f4a"]]),ge=T();let Be=!1,ae=0;function ws(o){const e=T(!1);if(te){!Be&&Ns(),ae++;const t=D(ge,s=>{var n,r,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});pe(()=>{t(),ae--,ae||Is()})}return Je(e)}function Ns(){document.addEventListener("focusin",He),Be=!0,ge.value=document.activeElement}function Is(){document.removeEventListener("focusin",He)}function He(){ge.value=document.activeElement}const Ms={class:"VPMenuLink"},Cs=["innerHTML"],As=b({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),d("div",Ms,[g(O,{class:I({active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Cs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(As,[["__scopeId","data-v-acbfed09"]]),Es={class:"VPMenuGroup"},Bs={key:0,class:"title"},Hs=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),d("div",Es,[e.text?(a(),d("p",Bs,N(e.text),1)):_("",!0),(a(!0),d(M,null,E(e.items,s=>(a(),d(M,null,["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):_("",!0)],64))),256))]))}}),Os=$(Hs,[["__scopeId","data-v-48c802d0"]]),Ds={class:"VPMenu"},Fs={key:0,class:"items"},Rs=b({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),d("div",Ds,[e.items?(a(),d("div",Fs,[(a(!0),d(M,null,E(e.items,s=>(a(),d(M,{key:JSON.stringify(s)},["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),k(H(s.component),G({key:1,ref_for:!0},s.props),null,16)):(a(),k(Os,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):_("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Us=$(Rs,[["__scopeId","data-v-7dd3104a"]]),Gs=["aria-expanded","aria-label"],js={key:0,class:"text"},zs=["innerHTML"],Ks={key:1,class:"vpi-more-horizontal icon"},Ws={class:"menu"},qs=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();ws({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(a(),d("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),d("span",js,[n.icon?(a(),d("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):_("",!0),n.button?(a(),d("span",{key:1,innerHTML:n.button},null,8,zs)):_("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),d("span",Ks))],8,Gs),p("div",Ws,[g(Us,{items:n.items},{default:f(()=>[u(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(qs,[["__scopeId","data-v-04f5c5e9"]]),Js=["href","aria-label","innerHTML"],Ys=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=T();F(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=P(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),d("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Js))}}),Xs=$(Ys,[["__scopeId","data-v-d26d30cb"]]),Qs={class:"VPSocialLinks"},Zs=b({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),d("div",Qs,[(a(!0),d(M,null,E(e.links,({link:s,icon:n,ariaLabel:r})=>(a(),k(Xs,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(Zs,[["__scopeId","data-v-ee7a9424"]]),xs={key:0,class:"group translations"},eo={class:"trans-title"},to={key:1,class:"group"},no={class:"item appearance"},so={class:"label"},oo={class:"appearance-action"},ao={key:2,class:"group"},ro={class:"item social-links"},io=b({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=P(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,v)=>r.value?(a(),k($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(s).length&&i(n).label?(a(),d("div",xs,[p("p",eo,N(i(n).label),1),(a(!0),d(M,null,E(i(s),c=>(a(),k(ne,{key:c.link,item:c},null,8,["item"]))),128))])):_("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),d("div",to,[p("div",no,[p("p",so,N(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",oo,[g(ke)])])])):_("",!0),i(t).socialLinks?(a(),d("div",ao,[p("div",ro,[g(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):_("",!0)]),_:1})):_("",!0)}}),lo=$(io,[["__scopeId","data-v-925effce"]]),co=["aria-expanded"],uo=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),d("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,co))}}),vo=$(uo,[["__scopeId","data-v-5dea55bf"]]),po=["innerHTML"],fo=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),k(O,{class:I({VPNavBarMenuLink:!0,active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,po)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ho=$(fo,[["__scopeId","data-v-956ec74c"]]),Oe=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),s=r=>"component"in r?!1:"link"in r?z(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=P(()=>s(e.item));return(r,l)=>(a(),k($e,{class:I({VPNavBarMenuGroup:!0,active:i(z)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),mo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},_o=b({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,s)=>i(e).nav?(a(),d("nav",mo,[s[0]||(s[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),d(M,null,E(i(e).nav,n=>(a(),d(M,{key:JSON.stringify(n)},["link"in n?(a(),k(ho,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(H(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),k(Oe,{key:2,item:n},null,8,["item"]))],64))),128))])):_("",!0)}}),bo=$(_o,[["__scopeId","data-v-e6d46098"]]);function ko(o){const{localeIndex:e,theme:t}=L();function s(n){var C,A,w;const r=n.split("."),l=(C=t.value.search)==null?void 0:C.options,v=l&&typeof l=="object",c=v&&((w=(A=l.locales)==null?void 0:A[e.value])==null?void 0:w.translations)||null,h=v&&l.translations||null;let y=c,m=h,V=o;const S=r.pop();for(const B of r){let U=null;const W=V==null?void 0:V[B];W&&(U=V=W);const se=m==null?void 0:m[B];se&&(U=m=se);const oe=y==null?void 0:y[B];oe&&(U=y=oe),W||(V=U),se||(m=U),oe||(y=U)}return(y==null?void 0:y[S])??(m==null?void 0:m[S])??(V==null?void 0:V[S])??""}return s}const go=["aria-label"],$o={class:"DocSearch-Button-Container"},yo={class:"DocSearch-Button-Placeholder"},Pe=b({__name:"VPNavBarSearchButton",setup(o){const t=ko({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),d("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",$o,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",yo,N(i(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,go))}}),Po={class:"VPNavBarSearch"},Vo={id:"local-search"},So={key:1,id:"docsearch"},Lo=b({__name:"VPNavBarSearch",setup(o){const e=Ye(()=>Xe(()=>import("./VPLocalSearchBox.Bitc2Dar.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=L(),n=T(!1),r=T(!1);F(()=>{});function l(){n.value||(n.value=!0,setTimeout(v,16))}function v(){const m=new Event("keydown");m.key="k",m.metaKey=!0,window.dispatchEvent(m),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function c(m){const V=m.target,S=V.tagName;return V.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const h=T(!1);ie("k",m=>{(m.ctrlKey||m.metaKey)&&(m.preventDefault(),h.value=!0)}),ie("/",m=>{c(m)||(m.preventDefault(),h.value=!0)});const y="local";return(m,V)=>{var S;return a(),d("div",Po,[i(y)==="local"?(a(),d(M,{key:0},[h.value?(a(),k(i(e),{key:0,onClose:V[0]||(V[0]=C=>h.value=!1)})):_("",!0),p("div",Vo,[g(Pe,{onClick:V[1]||(V[1]=C=>h.value=!0)})])],64)):i(y)==="algolia"?(a(),d(M,{key:1},[n.value?(a(),k(i(t),{key:0,algolia:((S=i(s).search)==null?void 0:S.options)??i(s).algolia,onVnodeBeforeMount:V[2]||(V[2]=C=>r.value=!0)},null,8,["algolia"])):_("",!0),r.value?_("",!0):(a(),d("div",So,[g(Pe,{onClick:l})]))],64)):_("",!0)])}}}),To=b({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>i(e).socialLinks?(a(),k(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):_("",!0)}}),wo=$(To,[["__scopeId","data-v-164c457f"]]),No=["href","rel","target"],Io=["innerHTML"],Mo={key:2},Co=b({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:s}=R(),{currentLang:n}=Y(),r=P(()=>{var c;return typeof t.value.logoLink=="string"?t.value.logoLink:(c=t.value.logoLink)==null?void 0:c.link}),l=P(()=>{var c;return typeof t.value.logoLink=="string"||(c=t.value.logoLink)==null?void 0:c.rel}),v=P(()=>{var c;return typeof t.value.logoLink=="string"||(c=t.value.logoLink)==null?void 0:c.target});return(c,h)=>(a(),d("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(s)}])},[p("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:v.value},[u(c.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),k(Q,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):_("",!0),i(t).siteTitle?(a(),d("span",{key:1,innerHTML:i(t).siteTitle},null,8,Io)):i(t).siteTitle===void 0?(a(),d("span",Mo,N(i(e).title),1)):_("",!0),u(c.$slots,"nav-bar-title-after",{},void 0,!0)],8,No)],2))}}),Ao=$(Co,[["__scopeId","data-v-0f4f798b"]]),Eo={class:"items"},Bo={class:"title"},Ho=b({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(a(),k($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Eo,[p("p",Bo,N(i(s).label),1),(a(!0),d(M,null,E(i(t),l=>(a(),k(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):_("",!0)}}),Oo=$(Ho,[["__scopeId","data-v-c80d9ad0"]]),Do={class:"wrapper"},Fo={class:"container"},Ro={class:"title"},Uo={class:"content"},Go={class:"content-body"},jo=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Ne(),{hasSidebar:s}=R(),{frontmatter:n}=L(),r=T({});return fe(()=>{r.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,v)=>(a(),d("div",{class:I(["VPNavBar",r.value])},[p("div",Do,[p("div",Fo,[p("div",Ro,[g(Ao,null,{"nav-bar-title-before":f(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Uo,[p("div",Go,[u(l.$slots,"nav-bar-content-before",{},void 0,!0),g(Lo,{class:"search"}),g(bo,{class:"menu"}),g(Oo,{class:"translations"}),g(Ts,{class:"appearance"}),g(wo,{class:"social-links"}),g(lo,{class:"extra"}),u(l.$slots,"nav-bar-content-after",{},void 0,!0),g(vo,{class:"hamburger",active:l.isScreenOpen,onClick:v[0]||(v[0]=c=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),zo=$(jo,[["__scopeId","data-v-822684d1"]]),Ko={key:0,class:"VPNavScreenAppearance"},Wo={class:"text"},qo=b({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),d("div",Ko,[p("p",Wo,N(i(t).darkModeSwitchLabel||"Appearance"),1),g(ke)])):_("",!0)}}),Jo=$(qo,[["__scopeId","data-v-ffb44008"]]),Yo=["innerHTML"],Xo=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),k(O,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Yo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Qo=$(Xo,[["__scopeId","data-v-735512b8"]]),Zo=["innerHTML"],xo=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),k(O,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(xo,[["__scopeId","data-v-372ae7c0"]]),ea={class:"VPNavScreenMenuGroupSection"},ta={key:0,class:"title"},na=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),d("div",ea,[e.text?(a(),d("p",ta,N(e.text),1)):_("",!0),(a(!0),d(M,null,E(e.items,s=>(a(),k(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),sa=$(na,[["__scopeId","data-v-4b8941ac"]]),oa=["aria-controls","aria-expanded"],aa=["innerHTML"],ra=["id"],ia={key:0,class:"item"},la={key:1,class:"item"},ca={key:2,class:"group"},ua=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),d("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:r.text},null,8,aa),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,oa),p("div",{id:s.value,class:"items"},[(a(!0),d(M,null,E(r.items,v=>(a(),d(M,{key:JSON.stringify(v)},["link"in v?(a(),d("div",ia,[g(De,{item:v},null,8,["item"])])):"component"in v?(a(),d("div",la,[(a(),k(H(v.component),G({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(a(),d("div",ca,[g(sa,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,ra)],2))}}),Fe=$(ua,[["__scopeId","data-v-875057a5"]]),da={key:0,class:"VPNavScreenMenu"},va=b({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,s)=>i(e).nav?(a(),d("nav",da,[(a(!0),d(M,null,E(i(e).nav,n=>(a(),d(M,{key:JSON.stringify(n)},["link"in n?(a(),k(Qo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(H(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(Fe,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):_("",!0)}}),pa=b({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>i(e).socialLinks?(a(),k(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):_("",!0)}}),fa={class:"list"},ha=b({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(r,l)=>i(e).length&&i(t).label?(a(),d("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+N(i(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",fa,[(a(!0),d(M,null,E(i(e),v=>(a(),d("li",{key:v.link,class:"item"},[g(O,{class:"link",href:v.link},{default:f(()=>[j(N(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):_("",!0)}}),ma=$(ha,[["__scopeId","data-v-362991c2"]]),_a={class:"container"},ba=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Ie(te?document.body:null);return(s,n)=>(a(),k(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:f(()=>[s.open?(a(),d("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",_a,[u(s.$slots,"nav-screen-content-before",{},void 0,!0),g(va,{class:"menu"}),g(ma,{class:"translations"}),g(Jo,{class:"appearance"}),g(pa,{class:"social-links"}),u(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):_("",!0)]),_:3}))}}),ka=$(ba,[["__scopeId","data-v-833aabba"]]),ga={key:0,class:"VPNav"},$a=b({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=_s(),{frontmatter:n}=L(),r=P(()=>n.value.navbar!==!1);return me("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,v)=>r.value?(a(),d("header",ga,[g(zo,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":f(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),g(ka,{open:i(e)},{"nav-screen-content-before":f(()=>[u(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):_("",!0)}}),ya=$($a,[["__scopeId","data-v-f1e365da"]]),Pa=["role","tabindex"],Va={key:1,class:"items"},Sa=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:v,toggle:c}=gt(P(()=>e.item)),h=P(()=>v.value?"section":"div"),y=P(()=>n.value?"a":"div"),m=P(()=>v.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=P(()=>n.value?void 0:"button"),S=P(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function C(w){"key"in w&&w.key!=="Enter"||!e.item.link&&c()}function A(){e.item.link&&c()}return(w,B)=>{const U=K("VPSidebarItem",!0);return a(),k(H(h.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),d("div",G({key:0,class:"item",role:V.value},Qe(w.item.items?{click:C,keydown:C}:{},!0),{tabindex:w.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),w.item.link?(a(),k(O,{key:0,tag:y.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),k(H(m.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(H(m.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),d("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:Ze(A,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):_("",!0)],16,Pa)):_("",!0),w.item.items&&w.item.items.length?(a(),d("div",Va,[w.depth<5?(a(!0),d(M,{key:0},E(w.item.items,W=>(a(),k(U,{key:W.text,item:W,depth:w.depth+1},null,8,["item","depth"]))),128)):_("",!0)])):_("",!0)]),_:1},8,["class"])}}}),La=$(Sa,[["__scopeId","data-v-196b2e5f"]]),Ta=b({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return F(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),xe(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),d(M,null,E(s.items,r=>(a(),d("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[g(La,{item:r,depth:0},null,8,["item"])],2))),128))}}),wa=$(Ta,[["__scopeId","data-v-9e426adc"]]),Na={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ia=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=R(),s=o,n=T(null),r=Ie(te?document.body:null);D([s,n],()=>{var v;s.open?(r.value=!0,(v=n.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return D(e,()=>{l.value+=1},{deep:!0}),(v,c)=>i(t)?(a(),d("aside",{key:0,class:I(["VPSidebar",{open:v.open}]),ref_key:"navEl",ref:n,onClick:c[0]||(c[0]=et(()=>{},["stop"]))},[c[2]||(c[2]=p("div",{class:"curtain"},null,-1)),p("nav",Na,[c[1]||(c[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(v.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(wa,{items:i(e),key:l.value},null,8,["items"])),u(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):_("",!0)}}),Ma=$(Ia,[["__scopeId","data-v-18756405"]]),Ca=b({__name:"VPSkipLink",setup(o){const e=ee(),t=T();D(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),d(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Aa=$(Ca,[["__scopeId","data-v-c3508ec8"]]),Ea=b({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=R(),n=ee();D(()=>n.path,s),kt(e,s);const{frontmatter:r}=L(),l=Me(),v=P(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",v),(c,h)=>{const y=K("Content");return i(r).layout!==!1?(a(),d("div",{key:0,class:I(["Layout",i(r).pageClass])},[u(c.$slots,"layout-top",{},void 0,!0),g(Aa),g(rt,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),g(ya,null,{"nav-bar-title-before":f(()=>[u(c.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(c.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(c.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(c.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[u(c.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(c.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(ms,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),g(Ma,{open:i(e)},{"sidebar-nav-before":f(()=>[u(c.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[u(c.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(es,null,{"page-top":f(()=>[u(c.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(c.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[u(c.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[u(c.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(c.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(c.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(c.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(c.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(c.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(c.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(c.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(c.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[u(c.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(c.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(c.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[u(c.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(c.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[u(c.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(c.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(c.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(c.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(c.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(c.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(as),u(c.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(y,{key:1}))}}}),Ba=$(Ea,[["__scopeId","data-v-a9a9e638"]]),Ha={Layout:Ba,enhanceApp:({app:o})=>{o.component("Badge",st)}},Oa=o=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const r=s(...n),l=o.value;if(!l)return r;const v=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-v,r}}},Re="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Ue="vitepress:tabsSharedState",Da=()=>{const o=J==null?void 0:J.getItem(Ue);if(o)try{return JSON.parse(o)}catch{}return{}},Fa=o=>{J&&J.setItem(Ue,JSON.stringify(o))},Ra=o=>{const e=tt({});D(()=>e.content,(t,s)=>{t&&s&&Fa(t)},{deep:!0}),o.provide(Re,e)},Ua=(o,e)=>{const t=q(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");F(()=>{t.content||(t.content=Da())});const s=T(),n=P({get(){var c;const l=e.value,v=o.value;if(l){const h=(c=t.content)==null?void 0:c[l];if(h&&v.includes(h))return h}else{const h=s.value;if(h)return h}return v[0]},set(l){const v=e.value;v?t.content&&(t.content[v]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const Ga=()=>(Ve++,""+Ve);function ja(){const o=Me();return P(()=>{var s;const t=(s=o.default)==null?void 0:s.call(o);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const Ge="vitepress:tabSingleState",za=o=>{me(Ge,o)},Ka=()=>{const o=q(Ge);if(!o)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return o},Wa={class:"plugin-tabs"},qa=["id","aria-selected","aria-controls","tabindex","onClick"],Ja=b({__name:"PluginTabs",props:{sharedStateKey:{}},setup(o){const e=o,t=ja(),{selected:s,select:n}=Ua(t,nt(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Oa(r),v=l(n),c=T([]),h=m=>{var C;const V=t.value.indexOf(s.value);let S;m.key==="ArrowLeft"?S=V>=1?V-1:t.value.length-1:m.key==="ArrowRight"&&(S=V(a(),d("div",Wa,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:h},[(a(!0),d(M,null,E(i(t),S=>(a(),d("button",{id:`tab-${S}-${i(y)}`,ref_for:!0,ref_key:"buttonRefs",ref:c,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(s),"aria-controls":`panel-${S}-${i(y)}`,tabindex:S===i(s)?0:-1,onClick:()=>i(v)(S)},N(S),9,qa))),128))],544),u(m.$slots,"default")]))}}),Ya=["id","aria-labelledby"],Xa=b({__name:"PluginTabsTab",props:{label:{}},setup(o){const{uid:e,selected:t}=Ka();return(s,n)=>i(t)===s.label?(a(),d("div",{key:0,id:`panel-${s.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${i(e)}`},[u(s.$slots,"default",{},void 0,!0)],8,Ya)):_("",!0)}}),Qa=$(Xa,[["__scopeId","data-v-9b0d03d2"]]),Za=o=>{Ra(o),o.component("PluginTabs",Ja),o.component("PluginTabsTab",Qa)},xa=b({__name:"VersionPicker",props:{screenMenu:{type:Boolean}},setup(o){const e=T([]),t=T("Versions"),s=T(!1);Se();const n=()=>typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),r=()=>{if(typeof window>"u")return"";const{origin:c,pathname:h}=window.location;if(c.includes("github.io")){const y=h.split("/").filter(Boolean),m=y.length>0?`/${y[0]}/`:"/";return`${c}${m}`}else return c},l=()=>new Promise(c=>{if(n()){c(!1);return}const h=setInterval(()=>{window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION&&(clearInterval(h),c(!0))},100);setTimeout(()=>{clearInterval(h),c(!1)},5e3)});return F(async()=>{if(!(typeof window>"u")){try{if(n()){const c=["dev"];e.value=c.map(h=>({text:h,link:"/"})),t.value="dev"}else{const c=await l(),h=P(()=>r());if(c&&window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION)e.value=window.DOC_VERSIONS.map(y=>({text:y,link:`${h.value}/${y}/`})),t.value=window.DOCUMENTER_CURRENT_VERSION;else{const y=["dev"];e.value=y.map(m=>({text:m,link:`${h.value}/${m}/`})),t.value="dev"}}}catch(c){console.warn("Error loading versions:",c);const h=["dev"],y=P(()=>r());e.value=h.map(m=>({text:m,link:`${y.value}/${m}/`})),t.value="dev"}s.value=!0}}),(c,h)=>s.value?(a(),d(M,{key:0},[!c.screenMenu&&e.value.length>0?(a(),k(Oe,{key:0,item:{text:t.value,items:e.value},class:"VPVersionPicker"},null,8,["item"])):c.screenMenu&&e.value.length>0?(a(),k(Fe,{key:1,text:t.value,items:e.value,class:"VPVersionPicker"},null,8,["text","items"])):_("",!0)],64)):_("",!0)}}),er=$(xa,[["__scopeId","data-v-f465cb49"]]),nr={extends:Ha,enhanceApp({app:o,router:e,siteData:t}){Za(o),o.component("VersionPicker",er)}};export{nr as R,ko as c,L as u};
diff --git a/dev/assets/chunks/theme.DDyAget_.js b/dev/assets/chunks/theme.DDyAget_.js
deleted file mode 100644
index 1668ce953..000000000
--- a/dev/assets/chunks/theme.DDyAget_.js
+++ /dev/null
@@ -1,2 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.dNVfz4aJ.js","assets/chunks/framework.Brp_kw4H.js"])))=>i.map(i=>d[i]);
-import{d as b,o as a,c as u,r as c,a as j,t as N,n as I,b as k,w as f,e as _,T as de,_ as P,u as Se,i as je,f as ze,g as ve,h as V,j as p,k as i,l as z,m as re,p as T,q as D,s as Z,v as F,x as pe,y as fe,z as Ke,A as We,B as K,F as M,C as E,D as Le,E as x,G as g,H as Te,I as H,J as ee,K as G,L as q,M as qe,N as we,O as ie,P as he,Q as Ne,R as te,S as Je,U as Ye,V as Xe,W as Ie,X as me,Y as Qe,Z as Ze,$ as xe,a0 as et,a1 as Me,a2 as tt,a3 as nt}from"./framework.Brp_kw4H.js";const st=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(N(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},at=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),k(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",ot)):_("",!0)]),_:1}))}}),rt=P(at,[["__scopeId","data-v-b06cdb19"]]),L=Se;function it(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function _e(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(je(o)||o.startsWith("#")||!n.startsWith("http")||!ze(e))return o;const{site:r}=L(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return ve(l)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:r}=L(),l=V(()=>{var v,h;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((h=e.value.locales[t.value])==null?void 0:h.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:V(()=>Object.entries(e.value.locales).flatMap(([v,h])=>l.value.label===h.label?[]:{text:h.label,link:lt(h.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function lt(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},vt={class:"quote"},pt={class:"action"},ft=["href","aria-label"],ht=b({__name:"NotFound",setup(o){const{theme:e}=L(),{currentLang:t}=Y();return(s,n)=>{var r,l,d,v,h;return a(),u("div",ct,[p("p",ut,N(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",dt,N(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",vt,N(((d=i(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",pt,[p("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((v=i(e).notFound)==null?void 0:v.linkLabel)??"go to home"},N(((h=i(e).notFound)==null?void 0:h.linkText)??"Take me home"),9,ft)])])}}}),mt=P(ht,[["__scopeId","data-v-951cab6c"]]);function Ce(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function _t(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function bt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):z(o,e.link)?!0:e.items?ce(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function R(){const{frontmatter:o,page:e,theme:t}=L(),s=re("(min-width: 960px)"),n=T(!1),r=V(()=>{const A=t.value.sidebar,w=e.value.relativePath;return A?Ce(A,w):[]}),l=T(r.value);D(r,(A,w)=>{JSON.stringify(A)!==JSON.stringify(w)&&(l.value=r.value)});const d=V(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),v=V(()=>h?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),h=V(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),y=V(()=>d.value&&s.value),m=V(()=>d.value?_t(l.value):[]);function $(){n.value=!0}function S(){n.value=!1}function C(){n.value?S():$()}return{isOpen:n,sidebar:l,sidebarGroups:m,hasSidebar:d,hasAside:h,leftAside:v,isSidebarEnabled:y,open:$,close:S,toggle:C}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),F(()=>{window.addEventListener("keyup",s)}),pe(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function gt(o){const{page:e,hash:t}=L(),s=T(!1),n=V(()=>o.value.collapsed!=null),r=V(()=>!!o.value.link),l=T(!1),d=()=>{l.value=z(e.value.relativePath,o.value.link)};D([e,o,t],d),F(d);const v=V(()=>l.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),h=V(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(l.value||v.value)&&(s.value=!1)});function y(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:v,hasChildren:h,toggle:y}}function $t(){const{hasSidebar:o}=R(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:V(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function Ae(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function be(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Lt(o,s,n)}function Vt(o,e){const{isAsideEnabled:t}=$t(),s=it(r,100);let n=null;F(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),We(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,h=document.body.offsetHeight,y=Math.abs(d+v-h)<1,m=ue.map(({element:S,link:C})=>({link:C,top:St(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,C)=>S.top-C.top);if(!m.length){l(null);return}if(d<1){l(null);return}if(y){l(m[m.length-1].link);return}let $=null;for(const{link:S,top:C}of m){if(C>d+Ke()+4)break;$=S}l($)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function St(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function Lt(o,e,t){ue.length=0;const s=[],n=[];return o.forEach(r=>{const l={...r,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,E(t.headers,({children:r,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},N(d),9,Tt),r!=null&&r.length?(a(),k(n,{key:0,headers:r},null,8,["headers"])):_("",!0)]))),256))],2)}}}),Ee=P(wt,[["__scopeId","data-v-3f927ebe"]]),Nt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Mt=b({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),s=Le([]);x(()=>{s.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return Vt(n,r),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",Nt,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",It,N(i(Ae)(i(t))),1),g(Ee,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Ct=P(Mt,[["__scopeId","data-v-b38bf2ff"]]),At={class:"VPDocAsideCarbonAds"},Et=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),u("div",At,[g(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Bt={class:"VPDocAside"},Ht=b({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,s)=>(a(),u("div",Bt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),g(Ct),c(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=p("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),k(Et,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):_("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ot=P(Ht,[["__scopeId","data-v-6d7b3c46"]]);function Dt(){const{theme:o,page:e}=L();return V(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ft(){const{page:o,theme:e,frontmatter:t}=L();return V(()=>{var h,y,m,$,S,C,A,w;const s=Ce(e.value.sidebar,o.value.relativePath),n=bt(s),r=Rt(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>z(o.value.relativePath,B.link)),d=((h=e.value.docFooter)==null?void 0:h.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((y=e.value.docFooter)==null?void 0:y.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((m=r[l-1])==null?void 0:m.docFooterText)??(($=r[l-1])==null?void 0:$.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((C=r[l+1])==null?void 0:C.docFooterText)??((A=r[l+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=r[l+1])==null?void 0:w.link)}}})}function Rt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const O=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=V(()=>e.tag??(e.href?"a":"span")),s=V(()=>e.href&&Te.test(e.href)||e.target==="_blank");return(n,r)=>(a(),k(H(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Ut={class:"VPLastUpdated"},Gt=["datetime"],jt=b({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=L(),n=V(()=>new Date(t.value.lastUpdated)),r=V(()=>n.value.toISOString()),l=T("");return F(()=>{Z(()=>{var d,v,h;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?s.value:void 0,((h=e.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,v)=>{var h;return a(),u("p",Ut,[j(N(((h=i(e).lastUpdated)==null?void 0:h.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},N(l.value),9,Gt)])}}}),zt=P(jt,[["__scopeId","data-v-475f71b8"]]),Kt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},qt={key:0,class:"edit-link"},Jt={key:1,class:"last-updated"},Yt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt={class:"pager"},Qt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},en=["innerHTML"],tn=["innerHTML"],nn=b({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=L(),n=Dt(),r=Ft(),l=V(()=>e.value.editLink&&s.value.editLink!==!1),d=V(()=>t.value.lastUpdated),v=V(()=>l.value||d.value||r.value.prev||r.value.next);return(h,y)=>{var m,$,S,C;return v.value?(a(),u("footer",Kt,[c(h.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",Wt,[l.value?(a(),u("div",qt,[g(O,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:f(()=>[y[0]||(y[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),j(" "+N(i(n).text),1)]),_:1},8,["href"])])):_("",!0),d.value?(a(),u("div",Jt,[g(zt)])):_("",!0)])):_("",!0),(m=i(r).prev)!=null&&m.link||($=i(r).next)!=null&&$.link?(a(),u("nav",Yt,[y[1]||(y[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Xt,[(S=i(r).prev)!=null&&S.link?(a(),k(O,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var A;return[p("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,Qt),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,Zt)]}),_:1},8,["href"])):_("",!0)]),p("div",xt,[(C=i(r).next)!=null&&C.link?(a(),k(O,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var A;return[p("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,en),p("span",{class:"title",innerHTML:i(r).next.text},null,8,tn)]}),_:1},8,["href"])):_("",!0)])])):_("",!0)])):_("",!0)}}}),sn=P(nn,[["__scopeId","data-v-4f9813fa"]]),on={class:"container"},an={class:"aside-container"},rn={class:"aside-content"},ln={class:"content"},cn={class:"content-container"},un={class:"main"},dn=b({__name:"VPDoc",setup(o){const{theme:e}=L(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:r}=R(),l=V(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const h=K("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",on,[i(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[v[0]||(v[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",an,[p("div",rn,[g(Ot,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):_("",!0),p("div",ln,[p("div",cn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",un,[g(h,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(sn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),vn=P(dn,[["__scopeId","data-v-83890dd9"]]),pn=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=V(()=>e.href&&Te.test(e.href)),s=V(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),k(H(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(N(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),fn=P(pn,[["__scopeId","data-v-906d7fb4"]]),hn=["src","alt"],mn=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=K("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,hn)):(a(),u(M,{key:1},[g(s,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(s,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):_("",!0)}}}),Q=P(mn,[["__scopeId","data-v-35a7d0b8"]]),_n={class:"container"},bn={class:"main"},kn={key:0,class:"name"},gn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:0,class:"actions"},Vn={key:0,class:"image"},Sn={class:"image-container"},Ln=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=q("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[p("div",_n,[p("div",bn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",kn,[p("span",{innerHTML:t.name,class:"clip"},null,8,gn)])):_("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):_("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,yn)):_("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Pn,[(a(!0),u(M,null,E(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[g(fn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):_("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",Vn,[p("div",Sn,[s[0]||(s[0]=p("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):_("",!0)],!0)])])):_("",!0)])],2))}}),Tn=P(Ln,[["__scopeId","data-v-955009fc"]]),wn=b({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,s)=>i(e).hero?(a(),k(Tn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):_("",!0)}}),Nn={class:"box"},In={key:0,class:"icon"},Mn=["innerHTML"],Cn=["innerHTML"],An=["innerHTML"],En={key:4,class:"link-text"},Bn={class:"link-text-value"},Hn=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),k(O,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Nn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",In,[g(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Mn)):_("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Cn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,An)):_("",!0),e.linkText?(a(),u("div",En,[p("p",Bn,[j(N(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):_("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),On=P(Hn,[["__scopeId","data-v-f5e9645b"]]),Dn={key:0,class:"VPFeatures"},Fn={class:"container"},Rn={class:"items"},Un=b({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=V(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),u("div",Dn,[p("div",Fn,[p("div",Rn,[(a(!0),u(M,null,E(s.features,r=>(a(),u("div",{key:r.title,class:I(["item",[t.value]])},[g(On,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):_("",!0)}}),Gn=P(Un,[["__scopeId","data-v-d0a190d7"]]),jn=b({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,s)=>i(e).features?(a(),k(Gn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):_("",!0)}}),zn=b({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:we(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Kn=P(zn,[["__scopeId","data-v-7a48a447"]]),Wn={class:"VPHome"},qn=b({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,s)=>{const n=K("Content");return a(),u("div",Wn,[c(t.$slots,"home-hero-before",{},void 0,!0),g(wn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),g(jn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),k(Kn,{key:0},{default:f(()=>[g(n)]),_:1})):(a(),k(n,{key:1}))])}}}),Jn=P(qn,[["__scopeId","data-v-cbb6ec48"]]),Yn={},Xn={class:"VPPage"};function Qn(o,e){const t=K("Content");return a(),u("div",Xn,[c(o.$slots,"page-top"),g(t),c(o.$slots,"page-bottom")])}const Zn=P(Yn,[["render",Qn]]),xn=b({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:s}=R();return(n,r)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[g(mt)],!0):i(t).layout==="page"?(a(),k(Zn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),k(Jn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),k(H(i(t).layout),{key:3})):(a(),k(vn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),es=P(xn,[["__scopeId","data-v-91765379"]]),ts={class:"container"},ns=["innerHTML"],ss=["innerHTML"],os=b({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=R();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(s)}])},[p("div",ts,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ns)):_("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,ss)):_("",!0)])],2)):_("",!0)}}),as=P(os,[["__scopeId","data-v-c970a860"]]);function rs(){const{theme:o,frontmatter:e}=L(),t=Le([]),s=V(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const is={class:"menu-text"},ls={class:"header"},cs={class:"outline"},us=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),s=T(!1),n=T(0),r=T(),l=T();function d(m){var $;($=r.value)!=null&&$.contains(m.target)||(s.value=!1)}D(s,m=>{if(m){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function v(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function h(m){m.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{s.value=!1}))}function y(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(m,$)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[m.headers.length>0?(a(),u("button",{key:0,onClick:v,class:I({open:s.value})},[p("span",is,N(i(Ae)(i(t))),1),$[0]||($[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:y},N(i(t).returnToTopLabel||"Return to top"),1)),g(de,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:h},[p("div",ls,[p("a",{class:"top-link",href:"#",onClick:y},N(i(t).returnToTopLabel||"Return to top"),1)]),p("div",cs,[g(Ee,{headers:m.headers},null,8,["headers"])])],512)):_("",!0)]),_:1})],4))}}),ds=P(us,[["__scopeId","data-v-bc9dc845"]]),vs={class:"container"},ps=["aria-expanded"],fs={class:"menu-text"},hs=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=R(),{headers:n}=rs(),{y:r}=Ne(),l=T(0);F(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=be(t.value.outline??e.value.outline)});const d=V(()=>n.value.length===0),v=V(()=>d.value&&!s.value),h=V(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:v.value}));return(y,m)=>i(t).layout!=="home"&&(!v.value||i(r)>=l.value)?(a(),u("div",{key:0,class:I(h.value)},[p("div",vs,[i(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":y.open,"aria-controls":"VPSidebarNav",onClick:m[0]||(m[0]=$=>y.$emit("open-menu"))},[m[1]||(m[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",fs,N(i(e).sidebarMenuLabel||"Menu"),1)],8,ps)):_("",!0),g(ds,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):_("",!0)}}),ms=P(hs,[["__scopeId","data-v-070ab83d"]]);function _s(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=ee();return D(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const bs={},ks={class:"VPSwitch",type:"button",role:"switch"},gs={class:"check"},$s={key:0,class:"icon"};function ys(o,e){return a(),u("button",ks,[p("span",gs,[o.$slots.default?(a(),u("span",$s,[c(o.$slots,"default",{},void 0,!0)])):_("",!0)])])}const Ps=P(bs,[["render",ys],["__scopeId","data-v-4a1c76db"]]),Vs=b({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),s=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),k(Ps,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:f(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=P(Vs,[["__scopeId","data-v-e40a8bb6"]]),Ss={key:0,class:"VPNavBarAppearance"},Ls=b({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Ss,[g(ke)])):_("",!0)}}),Ts=P(Ls,[["__scopeId","data-v-af096f4a"]]),ge=T();let Be=!1,ae=0;function ws(o){const e=T(!1);if(te){!Be&&Ns(),ae++;const t=D(ge,s=>{var n,r,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});pe(()=>{t(),ae--,ae||Is()})}return Je(e)}function Ns(){document.addEventListener("focusin",He),Be=!0,ge.value=document.activeElement}function Is(){document.removeEventListener("focusin",He)}function He(){ge.value=document.activeElement}const Ms={class:"VPMenuLink"},Cs=["innerHTML"],As=b({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),u("div",Ms,[g(O,{class:I({active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Cs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=P(As,[["__scopeId","data-v-acbfed09"]]),Es={class:"VPMenuGroup"},Bs={key:0,class:"title"},Hs=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Es,[e.text?(a(),u("p",Bs,N(e.text),1)):_("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),u(M,null,["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):_("",!0)],64))),256))]))}}),Os=P(Hs,[["__scopeId","data-v-48c802d0"]]),Ds={class:"VPMenu"},Fs={key:0,class:"items"},Rs=b({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),u("div",Ds,[e.items?(a(),u("div",Fs,[(a(!0),u(M,null,E(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),k(H(s.component),G({key:1,ref_for:!0},s.props),null,16)):(a(),k(Os,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):_("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Us=P(Rs,[["__scopeId","data-v-7dd3104a"]]),Gs=["aria-expanded","aria-label"],js={key:0,class:"text"},zs=["innerHTML"],Ks={key:1,class:"vpi-more-horizontal icon"},Ws={class:"menu"},qs=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();ws({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",js,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):_("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,zs)):_("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Ks))],8,Gs),p("div",Ws,[g(Us,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=P(qs,[["__scopeId","data-v-04f5c5e9"]]),Js=["href","aria-label","innerHTML"],Ys=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=T();F(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=V(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Js))}}),Xs=P(Ys,[["__scopeId","data-v-d26d30cb"]]),Qs={class:"VPSocialLinks"},Zs=b({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),u("div",Qs,[(a(!0),u(M,null,E(e.links,({link:s,icon:n,ariaLabel:r})=>(a(),k(Xs,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=P(Zs,[["__scopeId","data-v-ee7a9424"]]),xs={key:0,class:"group translations"},eo={class:"trans-title"},to={key:1,class:"group"},no={class:"item appearance"},so={class:"label"},oo={class:"appearance-action"},ao={key:2,class:"group"},ro={class:"item social-links"},io=b({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=V(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>r.value?(a(),k($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(s).length&&i(n).label?(a(),u("div",xs,[p("p",eo,N(i(n).label),1),(a(!0),u(M,null,E(i(s),v=>(a(),k(ne,{key:v.link,item:v},null,8,["item"]))),128))])):_("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",to,[p("div",no,[p("p",so,N(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",oo,[g(ke)])])])):_("",!0),i(t).socialLinks?(a(),u("div",ao,[p("div",ro,[g(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):_("",!0)]),_:1})):_("",!0)}}),lo=P(io,[["__scopeId","data-v-925effce"]]),co=["aria-expanded"],uo=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,co))}}),vo=P(uo,[["__scopeId","data-v-5dea55bf"]]),po=["innerHTML"],fo=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),k(O,{class:I({VPNavBarMenuLink:!0,active:i(z)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,po)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ho=P(fo,[["__scopeId","data-v-956ec74c"]]),Oe=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),s=r=>"component"in r?!1:"link"in r?z(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=V(()=>s(e.item));return(r,l)=>(a(),k($e,{class:I({VPNavBarMenuGroup:!0,active:i(z)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),mo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},_o=b({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,s)=>i(e).nav?(a(),u("nav",mo,[s[0]||(s[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,E(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),k(ho,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(H(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),k(Oe,{key:2,item:n},null,8,["item"]))],64))),128))])):_("",!0)}}),bo=P(_o,[["__scopeId","data-v-e6d46098"]]);function ko(o){const{localeIndex:e,theme:t}=L();function s(n){var C,A,w;const r=n.split("."),l=(C=t.value.search)==null?void 0:C.options,d=l&&typeof l=="object",v=d&&((w=(A=l.locales)==null?void 0:A[e.value])==null?void 0:w.translations)||null,h=d&&l.translations||null;let y=v,m=h,$=o;const S=r.pop();for(const B of r){let U=null;const W=$==null?void 0:$[B];W&&(U=$=W);const se=m==null?void 0:m[B];se&&(U=m=se);const oe=y==null?void 0:y[B];oe&&(U=y=oe),W||($=U),se||(m=U),oe||(y=U)}return(y==null?void 0:y[S])??(m==null?void 0:m[S])??($==null?void 0:$[S])??""}return s}const go=["aria-label"],$o={class:"DocSearch-Button-Container"},yo={class:"DocSearch-Button-Placeholder"},Pe=b({__name:"VPNavBarSearchButton",setup(o){const t=ko({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",$o,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",yo,N(i(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,go))}}),Po={class:"VPNavBarSearch"},Vo={id:"local-search"},So={key:1,id:"docsearch"},Lo=b({__name:"VPNavBarSearch",setup(o){const e=Ye(()=>Xe(()=>import("./VPLocalSearchBox.dNVfz4aJ.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=L(),n=T(!1),r=T(!1);F(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const m=new Event("keydown");m.key="k",m.metaKey=!0,window.dispatchEvent(m),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(m){const $=m.target,S=$.tagName;return $.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const h=T(!1);ie("k",m=>{(m.ctrlKey||m.metaKey)&&(m.preventDefault(),h.value=!0)}),ie("/",m=>{v(m)||(m.preventDefault(),h.value=!0)});const y="local";return(m,$)=>{var S;return a(),u("div",Po,[i(y)==="local"?(a(),u(M,{key:0},[h.value?(a(),k(i(e),{key:0,onClose:$[0]||($[0]=C=>h.value=!1)})):_("",!0),p("div",Vo,[g(Pe,{onClick:$[1]||($[1]=C=>h.value=!0)})])],64)):i(y)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),k(i(t),{key:0,algolia:((S=i(s).search)==null?void 0:S.options)??i(s).algolia,onVnodeBeforeMount:$[2]||($[2]=C=>r.value=!0)},null,8,["algolia"])):_("",!0),r.value?_("",!0):(a(),u("div",So,[g(Pe,{onClick:l})]))],64)):_("",!0)])}}}),To=b({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>i(e).socialLinks?(a(),k(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):_("",!0)}}),wo=P(To,[["__scopeId","data-v-164c457f"]]),No=["href","rel","target"],Io=["innerHTML"],Mo={key:2},Co=b({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:s}=R(),{currentLang:n}=Y(),r=V(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=V(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=V(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,h)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(s)}])},[p("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),k(Q,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):_("",!0),i(t).siteTitle?(a(),u("span",{key:1,innerHTML:i(t).siteTitle},null,8,Io)):i(t).siteTitle===void 0?(a(),u("span",Mo,N(i(e).title),1)):_("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,No)],2))}}),Ao=P(Co,[["__scopeId","data-v-0f4f798b"]]),Eo={class:"items"},Bo={class:"title"},Ho=b({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(a(),k($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Eo,[p("p",Bo,N(i(s).label),1),(a(!0),u(M,null,E(i(t),l=>(a(),k(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):_("",!0)}}),Oo=P(Ho,[["__scopeId","data-v-c80d9ad0"]]),Do={class:"wrapper"},Fo={class:"container"},Ro={class:"title"},Uo={class:"content"},Go={class:"content-body"},jo=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Ne(),{hasSidebar:s}=R(),{frontmatter:n}=L(),r=T({});return fe(()=>{r.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",r.value])},[p("div",Do,[p("div",Fo,[p("div",Ro,[g(Ao,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Uo,[p("div",Go,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),g(Lo,{class:"search"}),g(bo,{class:"menu"}),g(Oo,{class:"translations"}),g(Ts,{class:"appearance"}),g(wo,{class:"social-links"}),g(lo,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),g(vo,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),zo=P(jo,[["__scopeId","data-v-822684d1"]]),Ko={key:0,class:"VPNavScreenAppearance"},Wo={class:"text"},qo=b({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Ko,[p("p",Wo,N(i(t).darkModeSwitchLabel||"Appearance"),1),g(ke)])):_("",!0)}}),Jo=P(qo,[["__scopeId","data-v-ffb44008"]]),Yo=["innerHTML"],Xo=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),k(O,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Yo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Qo=P(Xo,[["__scopeId","data-v-735512b8"]]),Zo=["innerHTML"],xo=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),k(O,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Zo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=P(xo,[["__scopeId","data-v-372ae7c0"]]),ea={class:"VPNavScreenMenuGroupSection"},ta={key:0,class:"title"},na=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",ea,[e.text?(a(),u("p",ta,N(e.text),1)):_("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),k(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),sa=P(na,[["__scopeId","data-v-4b8941ac"]]),oa=["aria-controls","aria-expanded"],aa=["innerHTML"],ra=["id"],ia={key:0,class:"item"},la={key:1,class:"item"},ca={key:2,class:"group"},ua=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=V(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:r.text},null,8,aa),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,oa),p("div",{id:s.value,class:"items"},[(a(!0),u(M,null,E(r.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ia,[g(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",la,[(a(),k(H(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",ca,[g(sa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,ra)],2))}}),Fe=P(ua,[["__scopeId","data-v-875057a5"]]),da={key:0,class:"VPNavScreenMenu"},va=b({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,s)=>i(e).nav?(a(),u("nav",da,[(a(!0),u(M,null,E(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),k(Qo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(H(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(Fe,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):_("",!0)}}),pa=b({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>i(e).socialLinks?(a(),k(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):_("",!0)}}),fa={class:"list"},ha=b({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),j(" "+N(i(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",fa,[(a(!0),u(M,null,E(i(e),d=>(a(),u("li",{key:d.link,class:"item"},[g(O,{class:"link",href:d.link},{default:f(()=>[j(N(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):_("",!0)}}),ma=P(ha,[["__scopeId","data-v-362991c2"]]),_a={class:"container"},ba=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Ie(te?document.body:null);return(s,n)=>(a(),k(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",_a,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),g(va,{class:"menu"}),g(ma,{class:"translations"}),g(Jo,{class:"appearance"}),g(pa,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):_("",!0)]),_:3}))}}),ka=P(ba,[["__scopeId","data-v-833aabba"]]),ga={key:0,class:"VPNav"},$a=b({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=_s(),{frontmatter:n}=L(),r=V(()=>n.value.navbar!==!1);return me("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,d)=>r.value?(a(),u("header",ga,[g(zo,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),g(ka,{open:i(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):_("",!0)}}),ya=P($a,[["__scopeId","data-v-f1e365da"]]),Pa=["role","tabindex"],Va={key:1,class:"items"},Sa=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:d,toggle:v}=gt(V(()=>e.item)),h=V(()=>d.value?"section":"div"),y=V(()=>n.value?"a":"div"),m=V(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),$=V(()=>n.value?void 0:"button"),S=V(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function C(w){"key"in w&&w.key!=="Enter"||!e.item.link&&v()}function A(){e.item.link&&v()}return(w,B)=>{const U=K("VPSidebarItem",!0);return a(),k(H(h.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),u("div",G({key:0,class:"item",role:$.value},Ze(w.item.items?{click:C,keydown:C}:{},!0),{tabindex:w.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),w.item.link?(a(),k(O,{key:0,tag:y.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),k(H(m.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(H(m.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:Qe(A,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):_("",!0)],16,Pa)):_("",!0),w.item.items&&w.item.items.length?(a(),u("div",Va,[w.depth<5?(a(!0),u(M,{key:0},E(w.item.items,W=>(a(),k(U,{key:W.text,item:W,depth:w.depth+1},null,8,["item","depth"]))),128)):_("",!0)])):_("",!0)]),_:1},8,["class"])}}}),La=P(Sa,[["__scopeId","data-v-196b2e5f"]]),Ta=b({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return F(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),xe(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),u(M,null,E(s.items,r=>(a(),u("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[g(La,{item:r,depth:0},null,8,["item"])],2))),128))}}),wa=P(Ta,[["__scopeId","data-v-9e426adc"]]),Na={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ia=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=R(),s=o,n=T(null),r=Ie(te?document.body:null);D([s,n],()=>{var d;s.open?(r.value=!0,(d=n.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return D(e,()=>{l.value+=1},{deep:!0}),(d,v)=>i(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=et(()=>{},["stop"]))},[v[2]||(v[2]=p("div",{class:"curtain"},null,-1)),p("nav",Na,[v[1]||(v[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(wa,{items:i(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):_("",!0)}}),Ma=P(Ia,[["__scopeId","data-v-18756405"]]),Ca=b({__name:"VPSkipLink",setup(o){const e=ee(),t=T();D(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Aa=P(Ca,[["__scopeId","data-v-c3508ec8"]]),Ea=b({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=R(),n=ee();D(()=>n.path,s),kt(e,s);const{frontmatter:r}=L(),l=Me(),d=V(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(v,h)=>{const y=K("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",i(r).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),g(Aa),g(rt,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),g(ya,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(ms,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),g(Ma,{open:i(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(es,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(as),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(y,{key:1}))}}}),Ba=P(Ea,[["__scopeId","data-v-a9a9e638"]]),Ha={Layout:Ba,enhanceApp:({app:o})=>{o.component("Badge",st)}},Oa=o=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const r=s(...n),l=o.value;if(!l)return r;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,r}}},Re="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Ue="vitepress:tabsSharedState",Da=()=>{const o=J==null?void 0:J.getItem(Ue);if(o)try{return JSON.parse(o)}catch{}return{}},Fa=o=>{J&&J.setItem(Ue,JSON.stringify(o))},Ra=o=>{const e=tt({});D(()=>e.content,(t,s)=>{t&&s&&Fa(t)},{deep:!0}),o.provide(Re,e)},Ua=(o,e)=>{const t=q(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");F(()=>{t.content||(t.content=Da())});const s=T(),n=V({get(){var v;const l=e.value,d=o.value;if(l){const h=(v=t.content)==null?void 0:v[l];if(h&&d.includes(h))return h}else{const h=s.value;if(h)return h}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const Ga=()=>(Ve++,""+Ve);function ja(){const o=Me();return V(()=>{var s;const t=(s=o.default)==null?void 0:s.call(o);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const Ge="vitepress:tabSingleState",za=o=>{me(Ge,o)},Ka=()=>{const o=q(Ge);if(!o)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return o},Wa={class:"plugin-tabs"},qa=["id","aria-selected","aria-controls","tabindex","onClick"],Ja=b({__name:"PluginTabs",props:{sharedStateKey:{}},setup(o){const e=o,t=ja(),{selected:s,select:n}=Ua(t,nt(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Oa(r),d=l(n),v=T([]),h=m=>{var C;const $=t.value.indexOf(s.value);let S;m.key==="ArrowLeft"?S=$>=1?$-1:t.value.length-1:m.key==="ArrowRight"&&(S=$(a(),u("div",Wa,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:h},[(a(!0),u(M,null,E(i(t),S=>(a(),u("button",{id:`tab-${S}-${i(y)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(s),"aria-controls":`panel-${S}-${i(y)}`,tabindex:S===i(s)?0:-1,onClick:()=>i(d)(S)},N(S),9,qa))),128))],544),c(m.$slots,"default")]))}}),Ya=["id","aria-labelledby"],Xa=b({__name:"PluginTabsTab",props:{label:{}},setup(o){const{uid:e,selected:t}=Ka();return(s,n)=>i(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${i(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Ya)):_("",!0)}}),Qa=P(Xa,[["__scopeId","data-v-9b0d03d2"]]),Za=o=>{Ra(o),o.component("PluginTabs",Ja),o.component("PluginTabsTab",Qa)},xa=b({__name:"VersionPicker",props:{screenMenu:{type:Boolean}},setup(o){const e=T([]),t=T("Versions"),s=T(!1),{site:n}=Se(),r=()=>typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),l=()=>{if(typeof window>"u")return"";const{origin:h,pathname:y}=window.location;if(h.includes("github.io")){const m=y.split("/").filter(Boolean),$=m.length>0?`/${m[0]}/`:"/";return`${h}${$}`}else return h},d=()=>new Promise(h=>{if(r()){h(!1);return}const y=setInterval(()=>{window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION&&(clearInterval(y),h(!0))},100);setTimeout(()=>{clearInterval(y),h(!1)},5e3)});return F(async()=>{if(!(typeof window>"u")){try{if(r()){const h=["dev"];e.value=h.map(y=>({text:y,link:"/"})),t.value="dev"}else{const h=await d(),y=V(()=>l());if(h&&window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION)e.value=window.DOC_VERSIONS.map(m=>({text:m,link:`${y.value}/${m}/`})),t.value=window.DOCUMENTER_CURRENT_VERSION;else{const m=["dev"];e.value=m.map($=>({text:$,link:`${y.value}/${$}/`})),t.value="dev"}}}catch(h){console.warn("Error loading versions:",h);const y=["dev"],m=V(()=>l());e.value=y.map($=>({text:$,link:`${m.value}/${$}/`})),t.value="dev"}s.value=!0}}),(h,y)=>s.value?(a(),u(M,{key:0},[!h.screenMenu&&e.value.length>0?(a(),k(Oe,{key:0,item:{text:t.value,items:e.value},class:"VPVersionPicker"},null,8,["item"])):h.screenMenu&&e.value.length>0?(a(),k(Fe,{key:1,text:t.value,items:e.value,class:"VPVersionPicker"},null,8,["text","items"])):_("",!0)],64)):_("",!0)}}),er=P(xa,[["__scopeId","data-v-f465cb49"]]),nr={extends:Ha,enhanceApp({app:o,router:e,siteData:t}){Za(o),o.component("VersionPicker",er)}};export{nr as R,ko as c,L as u};
diff --git a/dev/assets/cuda.md.BXQXZlS4.js b/dev/assets/cuda.md.Dq_6ILaQ.js
similarity index 98%
rename from dev/assets/cuda.md.BXQXZlS4.js
rename to dev/assets/cuda.md.Dq_6ILaQ.js
index 09d9c6a72..fb1ffad0c 100644
--- a/dev/assets/cuda.md.BXQXZlS4.js
+++ b/dev/assets/cuda.md.Dq_6ILaQ.js
@@ -1,4 +1,4 @@
-import{_ as i,o as a,c as n,a4 as h}from"./chunks/framework.Brp_kw4H.js";const C=JSON.parse('{"title":"CUDA & GPUs","description":"","frontmatter":{},"headers":[],"relativePath":"cuda.md","filePath":"cuda.md","lastUpdated":null}'),t={name:"cuda.md"};function l(k,s,p,e,r,d){return a(),n("div",null,s[0]||(s[0]=[h(`

CUDA & GPUs

Running regular julia code on GPUs is one of the most amazing things about the language. DimensionalData.jl leans into this as much as possible.

julia
using DimensionalData, CUDA
+import{_ as i,c as a,a4 as n,o as h}from"./chunks/framework.60YQGL-0.js";const C=JSON.parse('{"title":"CUDA & GPUs","description":"","frontmatter":{},"headers":[],"relativePath":"cuda.md","filePath":"cuda.md","lastUpdated":null}'),t={name:"cuda.md"};function l(k,s,p,e,r,d){return h(),a("div",null,s[0]||(s[0]=[n(`

CUDA & GPUs

Running regular julia code on GPUs is one of the most amazing things about the language. DimensionalData.jl leans into this as much as possible.

julia
using DimensionalData, CUDA
 
 # Create a Float32 array to use on the GPU
 A = rand(Float32, X(1.0:1000.0), Y(1.0:2000.0))
diff --git a/dev/assets/cuda.md.BXQXZlS4.lean.js b/dev/assets/cuda.md.Dq_6ILaQ.lean.js
similarity index 98%
rename from dev/assets/cuda.md.BXQXZlS4.lean.js
rename to dev/assets/cuda.md.Dq_6ILaQ.lean.js
index 09d9c6a72..fb1ffad0c 100644
--- a/dev/assets/cuda.md.BXQXZlS4.lean.js
+++ b/dev/assets/cuda.md.Dq_6ILaQ.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,o as a,c as n,a4 as h}from"./chunks/framework.Brp_kw4H.js";const C=JSON.parse('{"title":"CUDA & GPUs","description":"","frontmatter":{},"headers":[],"relativePath":"cuda.md","filePath":"cuda.md","lastUpdated":null}'),t={name:"cuda.md"};function l(k,s,p,e,r,d){return a(),n("div",null,s[0]||(s[0]=[h(`

CUDA & GPUs

Running regular julia code on GPUs is one of the most amazing things about the language. DimensionalData.jl leans into this as much as possible.

julia
using DimensionalData, CUDA
+import{_ as i,c as a,a4 as n,o as h}from"./chunks/framework.60YQGL-0.js";const C=JSON.parse('{"title":"CUDA & GPUs","description":"","frontmatter":{},"headers":[],"relativePath":"cuda.md","filePath":"cuda.md","lastUpdated":null}'),t={name:"cuda.md"};function l(k,s,p,e,r,d){return h(),a("div",null,s[0]||(s[0]=[n(`

CUDA & GPUs

Running regular julia code on GPUs is one of the most amazing things about the language. DimensionalData.jl leans into this as much as possible.

julia
using DimensionalData, CUDA
 
 # Create a Float32 array to use on the GPU
 A = rand(Float32, X(1.0:1000.0), Y(1.0:2000.0))
diff --git a/dev/assets/dimarrays.md.u5JBFfPL.lean.js b/dev/assets/dimarrays.md.DsHVo8VO.js
similarity index 97%
rename from dev/assets/dimarrays.md.u5JBFfPL.lean.js
rename to dev/assets/dimarrays.md.DsHVo8VO.js
index d9a8efcf1..6f3986322 100644
--- a/dev/assets/dimarrays.md.u5JBFfPL.lean.js
+++ b/dev/assets/dimarrays.md.DsHVo8VO.js
@@ -1,4 +1,4 @@
-import{_ as d,B as l,o as p,c as g,a4 as k,G as h,w as e,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const u=JSON.parse('{"title":"DimArrays","description":"","frontmatter":{},"headers":[],"relativePath":"dimarrays.md","filePath":"dimarrays.md","lastUpdated":null}'),r={name:"dimarrays.md"};function o(y,a,f,c,b,E){const t=l("PluginTabsTab"),n=l("PluginTabs");return p(),g("div",null,[a[6]||(a[6]=k(`

DimArrays

DimArrays are wrappers for other kinds of AbstractArray that add named dimension lookups.

Here we define a Matrix of Float64, and give it X and Y dimensions

julia
julia> using DimensionalData
+import{_ as d,c as p,a4 as l,G as h,w as e,B as k,o as g,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const u=JSON.parse('{"title":"DimArrays","description":"","frontmatter":{},"headers":[],"relativePath":"dimarrays.md","filePath":"dimarrays.md","lastUpdated":null}'),r={name:"dimarrays.md"};function o(y,a,f,c,b,E){const t=k("PluginTabsTab"),n=k("PluginTabs");return g(),p("div",null,[a[6]||(a[6]=l(`

DimArrays

DimArrays are wrappers for other kinds of AbstractArray that add named dimension lookups.

Here we define a Matrix of Float64, and give it X and Y dimensions

julia
julia> using DimensionalData
 
 julia> A = rand(5, 10)
5×10 Matrix{Float64}:
  0.827655   0.0102884  0.688175  0.254555  …  0.628275   0.517329  0.886959
@@ -154,7 +154,7 @@ import{_ as d,B as l,o as p,c as g,a4 as k,G as h,w as e,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 2"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    3  4  5  6   7   8   9  10  11  12")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 3"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    4  5  6  7   8   9  10  11  12  13")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 4"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    5  6  7  8   9  10  11  12  13  14")]),s(`
-`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 5"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    6  7  8  9  10  11  12  13  14  15")])])])],-1)])),_:1})]),_:1}),a[7]||(a[7]=k(`

Constructing DimArray with arbitrary dimension names

For arbitrary names, we can use the Dim{:name} dims by using Symbols, and indexing with keywords:

julia
julia> da1 = DimArray(rand(5, 5), (:a, :b))
╭──────────────────────────╮
+`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 5"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    6  7  8  9  10  11  12  13  14  15")])])])],-1)])),_:1})]),_:1}),a[7]||(a[7]=l(`

Constructing DimArray with arbitrary dimension names

For arbitrary names, we can use the Dim{:name} dims by using Symbols, and indexing with keywords:

julia
julia> da1 = DimArray(rand(5, 5), (:a, :b))
╭──────────────────────────╮
 5×5 DimArray{Float64, 2}
 ├──────────────────────────┴─────────────────────────────── dims ┐
 a, b
@@ -274,21 +274,21 @@ import{_ as d,B as l,o as p,c as g,a4 as k,G as h,w as e,j as i,a as s}from"./ch
  1.0  1.0  1.0
  1.0  1.0  1.0
  1.0  1.0  1.0
julia
julia> @benchmark $da4[X(1), Y(2)]
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
- Range (minmax):  4.017 ns21.760 ns GC (min … max): 0.00% … 0.00%
- Time  (median):     4.027 ns               GC (median):    0.00%
- Time  (mean ± σ):   4.038 ns ±  0.381 ns GC (mean ± σ):  0.00% ± 0.00%
+ Range (minmax):  3.095 ns20.167 ns GC (min … max): 0.00% … 0.00%
+ Time  (median):     3.106 ns               GC (median):    0.00%
+ Time  (mean ± σ):   3.113 ns ±  0.328 ns GC (mean ± σ):  0.00% ± 0.00%
 
-                             
-
-  4.02 ns        Histogram: frequency by time        4.04 ns <
+ 
+
+  3.1 ns         Histogram: frequency by time        3.11 ns <
 
  Memory estimate: 0 bytes, allocs estimate: 0.

the same as accessing the parent array directly:

julia
julia> @benchmark parent($da4)[1, 2]
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
- Range (minmax):  4.017 ns25.918 ns GC (min … max): 0.00% … 0.00%
- Time  (median):     4.027 ns               GC (median):    0.00%
- Time  (mean ± σ):   4.041 ns ±  0.406 ns GC (mean ± σ):  0.00% ± 0.00%
+ Range (minmax):  3.095 ns30.337 ns GC (min … max): 0.00% … 0.00%
+ Time  (median):     3.106 ns               GC (median):    0.00%
+ Time  (mean ± σ):   3.123 ns ±  0.451 ns GC (mean ± σ):  0.00% ± 0.00%
 
-                            
-
-  4.02 ns        Histogram: frequency by time        4.04 ns <
+                                                       
+
+  3.1 ns         Histogram: frequency by time        3.31 ns <
 
  Memory estimate: 0 bytes, allocs estimate: 0.
`,52))])}const C=d(r,[["render",o]]);export{u as __pageData,C as default}; diff --git a/dev/assets/dimarrays.md.u5JBFfPL.js b/dev/assets/dimarrays.md.DsHVo8VO.lean.js similarity index 97% rename from dev/assets/dimarrays.md.u5JBFfPL.js rename to dev/assets/dimarrays.md.DsHVo8VO.lean.js index d9a8efcf1..6f3986322 100644 --- a/dev/assets/dimarrays.md.u5JBFfPL.js +++ b/dev/assets/dimarrays.md.DsHVo8VO.lean.js @@ -1,4 +1,4 @@ -import{_ as d,B as l,o as p,c as g,a4 as k,G as h,w as e,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const u=JSON.parse('{"title":"DimArrays","description":"","frontmatter":{},"headers":[],"relativePath":"dimarrays.md","filePath":"dimarrays.md","lastUpdated":null}'),r={name:"dimarrays.md"};function o(y,a,f,c,b,E){const t=l("PluginTabsTab"),n=l("PluginTabs");return p(),g("div",null,[a[6]||(a[6]=k(`

DimArrays

DimArrays are wrappers for other kinds of AbstractArray that add named dimension lookups.

Here we define a Matrix of Float64, and give it X and Y dimensions

julia
julia> using DimensionalData
+import{_ as d,c as p,a4 as l,G as h,w as e,B as k,o as g,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const u=JSON.parse('{"title":"DimArrays","description":"","frontmatter":{},"headers":[],"relativePath":"dimarrays.md","filePath":"dimarrays.md","lastUpdated":null}'),r={name:"dimarrays.md"};function o(y,a,f,c,b,E){const t=k("PluginTabsTab"),n=k("PluginTabs");return g(),p("div",null,[a[6]||(a[6]=l(`

DimArrays

DimArrays are wrappers for other kinds of AbstractArray that add named dimension lookups.

Here we define a Matrix of Float64, and give it X and Y dimensions

julia
julia> using DimensionalData
 
 julia> A = rand(5, 10)
5×10 Matrix{Float64}:
  0.827655   0.0102884  0.688175  0.254555  …  0.628275   0.517329  0.886959
@@ -154,7 +154,7 @@ import{_ as d,B as l,o as p,c as g,a4 as k,G as h,w as e,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 2"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    3  4  5  6   7   8   9  10  11  12")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 3"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    4  5  6  7   8   9  10  11  12  13")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 4"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    5  6  7  8   9  10  11  12  13  14")]),s(`
-`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 5"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    6  7  8  9  10  11  12  13  14  15")])])])],-1)])),_:1})]),_:1}),a[7]||(a[7]=k(`

Constructing DimArray with arbitrary dimension names

For arbitrary names, we can use the Dim{:name} dims by using Symbols, and indexing with keywords:

julia
julia> da1 = DimArray(rand(5, 5), (:a, :b))
╭──────────────────────────╮
+`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}}," 5"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"    6  7  8  9  10  11  12  13  14  15")])])])],-1)])),_:1})]),_:1}),a[7]||(a[7]=l(`

Constructing DimArray with arbitrary dimension names

For arbitrary names, we can use the Dim{:name} dims by using Symbols, and indexing with keywords:

julia
julia> da1 = DimArray(rand(5, 5), (:a, :b))
╭──────────────────────────╮
 5×5 DimArray{Float64, 2}
 ├──────────────────────────┴─────────────────────────────── dims ┐
 a, b
@@ -274,21 +274,21 @@ import{_ as d,B as l,o as p,c as g,a4 as k,G as h,w as e,j as i,a as s}from"./ch
  1.0  1.0  1.0
  1.0  1.0  1.0
  1.0  1.0  1.0
julia
julia> @benchmark $da4[X(1), Y(2)]
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
- Range (minmax):  4.017 ns21.760 ns GC (min … max): 0.00% … 0.00%
- Time  (median):     4.027 ns               GC (median):    0.00%
- Time  (mean ± σ):   4.038 ns ±  0.381 ns GC (mean ± σ):  0.00% ± 0.00%
+ Range (minmax):  3.095 ns20.167 ns GC (min … max): 0.00% … 0.00%
+ Time  (median):     3.106 ns               GC (median):    0.00%
+ Time  (mean ± σ):   3.113 ns ±  0.328 ns GC (mean ± σ):  0.00% ± 0.00%
 
-                             
-
-  4.02 ns        Histogram: frequency by time        4.04 ns <
+ 
+
+  3.1 ns         Histogram: frequency by time        3.11 ns <
 
  Memory estimate: 0 bytes, allocs estimate: 0.

the same as accessing the parent array directly:

julia
julia> @benchmark parent($da4)[1, 2]
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
- Range (minmax):  4.017 ns25.918 ns GC (min … max): 0.00% … 0.00%
- Time  (median):     4.027 ns               GC (median):    0.00%
- Time  (mean ± σ):   4.041 ns ±  0.406 ns GC (mean ± σ):  0.00% ± 0.00%
+ Range (minmax):  3.095 ns30.337 ns GC (min … max): 0.00% … 0.00%
+ Time  (median):     3.106 ns               GC (median):    0.00%
+ Time  (mean ± σ):   3.123 ns ±  0.451 ns GC (mean ± σ):  0.00% ± 0.00%
 
-                            
-
-  4.02 ns        Histogram: frequency by time        4.04 ns <
+                                                       
+
+  3.1 ns         Histogram: frequency by time        3.31 ns <
 
  Memory estimate: 0 bytes, allocs estimate: 0.
`,52))])}const C=d(r,[["render",o]]);export{u as __pageData,C as default}; diff --git a/dev/assets/dimensions.md.ChH0lYl4.js b/dev/assets/dimensions.md.BZOXPG9N.js similarity index 97% rename from dev/assets/dimensions.md.ChH0lYl4.js rename to dev/assets/dimensions.md.BZOXPG9N.js index cdc78f15e..98873adf7 100644 --- a/dev/assets/dimensions.md.ChH0lYl4.js +++ b/dev/assets/dimensions.md.BZOXPG9N.js @@ -1,3 +1,3 @@ -import{_ as i,o as a,c as e,a4 as n}from"./chunks/framework.Brp_kw4H.js";const c=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"dimensions.md","filePath":"dimensions.md","lastUpdated":null}'),t={name:"dimensions.md"};function h(l,s,p,k,d,o){return a(),e("div",null,s[0]||(s[0]=[n(`

Dimensions

Dimensions are "wrapper types" that can be used to wrap any object to associate it with a named dimension.

X, Y, Z, Ti are predefined as types:

julia
julia> using DimensionalData
+import{_ as i,c as a,a4 as e,o as n}from"./chunks/framework.60YQGL-0.js";const c=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"dimensions.md","filePath":"dimensions.md","lastUpdated":null}'),t={name:"dimensions.md"};function h(l,s,p,k,d,o){return n(),a("div",null,s[0]||(s[0]=[e(`

Dimensions

Dimensions are "wrapper types" that can be used to wrap any object to associate it with a named dimension.

X, Y, Z, Ti are predefined as types:

julia
julia> using DimensionalData
 
 julia> X(1)
X 1
julia
julia> X(1), Y(2), Z(3)
(X 1, Y 2, Z 3)

You can also create Dim dimensions with any name:

julia
julia> Dim{:a}(1), Dim{:b}(1)
(a 1, b 1)

The wrapped value can be retrieved with val:

julia
julia> val(X(1))
1

DimensionalData.jl uses Dimensions everywhere:

  • Dimensions are returned from dims to specify the names of the dimensions of an object

  • They can wrap Lookups to associate the lookups with those names

  • To index into these objects, they can wrap indices like Int or a Selector

This symmetry means we can ignore how data is organized, and label and access it by name, letting DD work out the details for us.

Dimensions are defined in the Dimensions submodule, and some Dimension-specific methods can be brought into scope with:

julia
using DimensionalData.Dimensions
`,18)]))}const g=i(t,[["render",h]]);export{c as __pageData,g as default}; diff --git a/dev/assets/dimensions.md.ChH0lYl4.lean.js b/dev/assets/dimensions.md.BZOXPG9N.lean.js similarity index 97% rename from dev/assets/dimensions.md.ChH0lYl4.lean.js rename to dev/assets/dimensions.md.BZOXPG9N.lean.js index cdc78f15e..98873adf7 100644 --- a/dev/assets/dimensions.md.ChH0lYl4.lean.js +++ b/dev/assets/dimensions.md.BZOXPG9N.lean.js @@ -1,3 +1,3 @@ -import{_ as i,o as a,c as e,a4 as n}from"./chunks/framework.Brp_kw4H.js";const c=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"dimensions.md","filePath":"dimensions.md","lastUpdated":null}'),t={name:"dimensions.md"};function h(l,s,p,k,d,o){return a(),e("div",null,s[0]||(s[0]=[n(`

Dimensions

Dimensions are "wrapper types" that can be used to wrap any object to associate it with a named dimension.

X, Y, Z, Ti are predefined as types:

julia
julia> using DimensionalData
+import{_ as i,c as a,a4 as e,o as n}from"./chunks/framework.60YQGL-0.js";const c=JSON.parse('{"title":"Dimensions","description":"","frontmatter":{},"headers":[],"relativePath":"dimensions.md","filePath":"dimensions.md","lastUpdated":null}'),t={name:"dimensions.md"};function h(l,s,p,k,d,o){return n(),a("div",null,s[0]||(s[0]=[e(`

Dimensions

Dimensions are "wrapper types" that can be used to wrap any object to associate it with a named dimension.

X, Y, Z, Ti are predefined as types:

julia
julia> using DimensionalData
 
 julia> X(1)
X 1
julia
julia> X(1), Y(2), Z(3)
(X 1, Y 2, Z 3)

You can also create Dim dimensions with any name:

julia
julia> Dim{:a}(1), Dim{:b}(1)
(a 1, b 1)

The wrapped value can be retrieved with val:

julia
julia> val(X(1))
1

DimensionalData.jl uses Dimensions everywhere:

  • Dimensions are returned from dims to specify the names of the dimensions of an object

  • They can wrap Lookups to associate the lookups with those names

  • To index into these objects, they can wrap indices like Int or a Selector

This symmetry means we can ignore how data is organized, and label and access it by name, letting DD work out the details for us.

Dimensions are defined in the Dimensions submodule, and some Dimension-specific methods can be brought into scope with:

julia
using DimensionalData.Dimensions
`,18)]))}const g=i(t,[["render",h]]);export{c as __pageData,g as default}; diff --git a/dev/assets/diskarrays.md.Cfuf4AI0.js b/dev/assets/diskarrays.md.Ccioefu8.js similarity index 89% rename from dev/assets/diskarrays.md.Cfuf4AI0.js rename to dev/assets/diskarrays.md.Ccioefu8.js index 44f0ad13e..758382537 100644 --- a/dev/assets/diskarrays.md.Cfuf4AI0.js +++ b/dev/assets/diskarrays.md.Ccioefu8.js @@ -1 +1 @@ -import{_ as r,o as e,c as t,a4 as i}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"DiskArrays.jl compatibility","description":"","frontmatter":{},"headers":[],"relativePath":"diskarrays.md","filePath":"diskarrays.md","lastUpdated":null}'),l={name:"diskarrays.md"};function s(n,a,o,c,p,d){return e(),t("div",null,a[0]||(a[0]=[i('

DiskArrays.jl compatibility

DiskArrays.jl enables lazy, chunked application of:

  • broadcast

  • reductions

  • iteration

  • generators

  • zip

as well as caching chunks in RAM via DiskArrays.cache(dimarray).

It is rarely used directly, but is present in most disk and cloud based spatial data packages in julia, including: ArchGDAL.jl, NetCDF.jl, Zarr.jl, NCDatasets.jl, GRIBDatasets.jl and CommonDataModel.jl.

The combination of DiskArrays.jl and DimensionalData.jl is Julia's answer to python's xarray. Rasters.jl and YAXArrays.jl are user-facing tools building on this combination.

They have no meaningful direct dependency relationships, but are intentionally designed to integrate via both adherence to Julia's AbstractArray interface, and by coordination during development of both packages.

',7)]))}const u=r(l,[["render",s]]);export{b as __pageData,u as default}; +import{_ as r,c as e,a4 as t,o as i}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"DiskArrays.jl compatibility","description":"","frontmatter":{},"headers":[],"relativePath":"diskarrays.md","filePath":"diskarrays.md","lastUpdated":null}'),l={name:"diskarrays.md"};function s(n,a,o,c,p,d){return i(),e("div",null,a[0]||(a[0]=[t('

DiskArrays.jl compatibility

DiskArrays.jl enables lazy, chunked application of:

  • broadcast

  • reductions

  • iteration

  • generators

  • zip

as well as caching chunks in RAM via DiskArrays.cache(dimarray).

It is rarely used directly, but is present in most disk and cloud based spatial data packages in julia, including: ArchGDAL.jl, NetCDF.jl, Zarr.jl, NCDatasets.jl, GRIBDatasets.jl and CommonDataModel.jl.

The combination of DiskArrays.jl and DimensionalData.jl is Julia's answer to python's xarray. Rasters.jl and YAXArrays.jl are user-facing tools building on this combination.

They have no meaningful direct dependency relationships, but are intentionally designed to integrate via both adherence to Julia's AbstractArray interface, and by coordination during development of both packages.

',7)]))}const u=r(l,[["render",s]]);export{b as __pageData,u as default}; diff --git a/dev/assets/diskarrays.md.Cfuf4AI0.lean.js b/dev/assets/diskarrays.md.Ccioefu8.lean.js similarity index 89% rename from dev/assets/diskarrays.md.Cfuf4AI0.lean.js rename to dev/assets/diskarrays.md.Ccioefu8.lean.js index 44f0ad13e..758382537 100644 --- a/dev/assets/diskarrays.md.Cfuf4AI0.lean.js +++ b/dev/assets/diskarrays.md.Ccioefu8.lean.js @@ -1 +1 @@ -import{_ as r,o as e,c as t,a4 as i}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"DiskArrays.jl compatibility","description":"","frontmatter":{},"headers":[],"relativePath":"diskarrays.md","filePath":"diskarrays.md","lastUpdated":null}'),l={name:"diskarrays.md"};function s(n,a,o,c,p,d){return e(),t("div",null,a[0]||(a[0]=[i('

DiskArrays.jl compatibility

DiskArrays.jl enables lazy, chunked application of:

  • broadcast

  • reductions

  • iteration

  • generators

  • zip

as well as caching chunks in RAM via DiskArrays.cache(dimarray).

It is rarely used directly, but is present in most disk and cloud based spatial data packages in julia, including: ArchGDAL.jl, NetCDF.jl, Zarr.jl, NCDatasets.jl, GRIBDatasets.jl and CommonDataModel.jl.

The combination of DiskArrays.jl and DimensionalData.jl is Julia's answer to python's xarray. Rasters.jl and YAXArrays.jl are user-facing tools building on this combination.

They have no meaningful direct dependency relationships, but are intentionally designed to integrate via both adherence to Julia's AbstractArray interface, and by coordination during development of both packages.

',7)]))}const u=r(l,[["render",s]]);export{b as __pageData,u as default}; +import{_ as r,c as e,a4 as t,o as i}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"DiskArrays.jl compatibility","description":"","frontmatter":{},"headers":[],"relativePath":"diskarrays.md","filePath":"diskarrays.md","lastUpdated":null}'),l={name:"diskarrays.md"};function s(n,a,o,c,p,d){return i(),e("div",null,a[0]||(a[0]=[t('

DiskArrays.jl compatibility

DiskArrays.jl enables lazy, chunked application of:

  • broadcast

  • reductions

  • iteration

  • generators

  • zip

as well as caching chunks in RAM via DiskArrays.cache(dimarray).

It is rarely used directly, but is present in most disk and cloud based spatial data packages in julia, including: ArchGDAL.jl, NetCDF.jl, Zarr.jl, NCDatasets.jl, GRIBDatasets.jl and CommonDataModel.jl.

The combination of DiskArrays.jl and DimensionalData.jl is Julia's answer to python's xarray. Rasters.jl and YAXArrays.jl are user-facing tools building on this combination.

They have no meaningful direct dependency relationships, but are intentionally designed to integrate via both adherence to Julia's AbstractArray interface, and by coordination during development of both packages.

',7)]))}const u=r(l,[["render",s]]);export{b as __pageData,u as default}; diff --git a/dev/assets/extending_dd.md.CvLFMnJ_.js b/dev/assets/extending_dd.md.1GiVmXy5.js similarity index 99% rename from dev/assets/extending_dd.md.CvLFMnJ_.js rename to dev/assets/extending_dd.md.1GiVmXy5.js index 9b305c768..5724246e1 100644 --- a/dev/assets/extending_dd.md.CvLFMnJ_.js +++ b/dev/assets/extending_dd.md.1GiVmXy5.js @@ -1,4 +1,4 @@ -import{_ as n,B as l,o as d,c as r,a4 as p,G as a,w as t,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"Extending DimensionalData","description":"","frontmatter":{},"headers":[],"relativePath":"extending_dd.md","filePath":"extending_dd.md","lastUpdated":null}'),o={name:"extending_dd.md"};function g(y,e,c,u,m,E){const h=l("PluginTabsTab"),k=l("PluginTabs");return d(),r("div",null,[e[2]||(e[2]=p('

Extending DimensionalData

Nearly everything in DimensionalData.jl is designed to be extensible.

  • AbstractDimArray is easily extended to custom array types. Raster or YAXArray are examples from other packages.

  • AbstractDimStack is easily extended to custom mixed array datasets. RasterStack or ArViZ.Dataset are examples.

  • Lookup can have new types added, e.g. to AbstractSampled or AbstractCategorical. Rasters.Projected is a lookup that knows its coordinate reference system, but otherwise behaves as a regular Sampled lookup.

dims, rebuild and format are the key interface methods in most of these cases.

dims

Objects extending DimensionalData.jl that have dimensions must return a Tuple of constructed Dimensions from dims(obj).

Dimension axes

Dimensions returned from dims should hold a Lookup or in some cases just an AbstractArray (like with DimIndices). When attached to multi-dimensional objects, lookups must be the same length as the axis of the array it represents, and eachindex(A, i) and eachindex(dim) must return the same values.

This means that if the array has OffsetArrays.jl axes, the array the dimension wraps must also have OffsetArrays.jl axes.

dims keywords

To any dims keyword argument that usually requires the dimension I, objects should accept any Dimension, Type{<:Dimension}, Symbol, Val{:Symbol}, Val{<:Type{<:Dimension}} or also regular Integer.

This is easier than it sounds, calling DD.dims(objs, dims) will return the matching dimension and DD.dimnum(obj, dims) will return the matching Int for any of these inputs as long as dims(obj) is implemented.

rebuild

Rebuild methods are used to rebuild immutable objects with new field values, in a way that is more flexible and extensible than just using ConstructionBase.jl reconstruction. Developers can choose to ignore some of the fields passed by rebuild.

The function signature is always one of:

julia
rebuild(obj, args...)\nrebuild(obj; kw...)

rebuild has keyword versions automatically generated for all objects using ConstructionBase.jl.

These will work without further work as long as your object has the fields used by DimensionalData.jl objects. For example, AbstractDimArray will receive these keywords in rebuild: data, dims, refdims, name, metadata.

If your AbstractDimArray does not have all these fields, you must implement rebuild(x::YourDimArray; kw...) manually.

An argument method is also defined with the same arguments as the keyword version. For AbstractDimArray it should only be used for updating data and dims, any more that that is confusing.

For Dimension and Selector the single argument versions are easiest to use, as there is only one argument.

format

When constructing an AbstractDimArray or AbstractDimStack DimensionalData.format must be called on the dims tuple and the parent array:

julia
format(dims, array)

This lets DimensionalData detect the lookup properties, fill in missing fields of a Lookup, pass keywords from Dimension to detected Lookup constructors, and accept a wider range of dimension inputs like tuples of Symbol and Type.

Not calling format in the outer constructors of an AbstractDimArray has undefined behaviour.

Interfaces.jl interface testing

DimensionalData defines explicit, testable Interfaces.jl interfaces: DimArrayInterface and DimStackInterface.

',28)),a(k,null,{default:t(()=>[a(h,{label:"array"},{default:t(()=>e[0]||(e[0]=[i("p",null,[s("This is the implementation definition for "),i("code",null,"DimArray"),s(":")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData, Interfaces")]),s(` +import{_ as n,c as d,a4 as r,G as a,w as t,B as l,o as p,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"Extending DimensionalData","description":"","frontmatter":{},"headers":[],"relativePath":"extending_dd.md","filePath":"extending_dd.md","lastUpdated":null}'),o={name:"extending_dd.md"};function g(y,e,c,u,m,E){const h=l("PluginTabsTab"),k=l("PluginTabs");return p(),d("div",null,[e[2]||(e[2]=r('

Extending DimensionalData

Nearly everything in DimensionalData.jl is designed to be extensible.

  • AbstractDimArray is easily extended to custom array types. Raster or YAXArray are examples from other packages.

  • AbstractDimStack is easily extended to custom mixed array datasets. RasterStack or ArViZ.Dataset are examples.

  • Lookup can have new types added, e.g. to AbstractSampled or AbstractCategorical. Rasters.Projected is a lookup that knows its coordinate reference system, but otherwise behaves as a regular Sampled lookup.

dims, rebuild and format are the key interface methods in most of these cases.

dims

Objects extending DimensionalData.jl that have dimensions must return a Tuple of constructed Dimensions from dims(obj).

Dimension axes

Dimensions returned from dims should hold a Lookup or in some cases just an AbstractArray (like with DimIndices). When attached to multi-dimensional objects, lookups must be the same length as the axis of the array it represents, and eachindex(A, i) and eachindex(dim) must return the same values.

This means that if the array has OffsetArrays.jl axes, the array the dimension wraps must also have OffsetArrays.jl axes.

dims keywords

To any dims keyword argument that usually requires the dimension I, objects should accept any Dimension, Type{<:Dimension}, Symbol, Val{:Symbol}, Val{<:Type{<:Dimension}} or also regular Integer.

This is easier than it sounds, calling DD.dims(objs, dims) will return the matching dimension and DD.dimnum(obj, dims) will return the matching Int for any of these inputs as long as dims(obj) is implemented.

rebuild

Rebuild methods are used to rebuild immutable objects with new field values, in a way that is more flexible and extensible than just using ConstructionBase.jl reconstruction. Developers can choose to ignore some of the fields passed by rebuild.

The function signature is always one of:

julia
rebuild(obj, args...)\nrebuild(obj; kw...)

rebuild has keyword versions automatically generated for all objects using ConstructionBase.jl.

These will work without further work as long as your object has the fields used by DimensionalData.jl objects. For example, AbstractDimArray will receive these keywords in rebuild: data, dims, refdims, name, metadata.

If your AbstractDimArray does not have all these fields, you must implement rebuild(x::YourDimArray; kw...) manually.

An argument method is also defined with the same arguments as the keyword version. For AbstractDimArray it should only be used for updating data and dims, any more that that is confusing.

For Dimension and Selector the single argument versions are easiest to use, as there is only one argument.

format

When constructing an AbstractDimArray or AbstractDimStack DimensionalData.format must be called on the dims tuple and the parent array:

julia
format(dims, array)

This lets DimensionalData detect the lookup properties, fill in missing fields of a Lookup, pass keywords from Dimension to detected Lookup constructors, and accept a wider range of dimension inputs like tuples of Symbol and Type.

Not calling format in the outer constructors of an AbstractDimArray has undefined behaviour.

Interfaces.jl interface testing

DimensionalData defines explicit, testable Interfaces.jl interfaces: DimArrayInterface and DimStackInterface.

',28)),a(k,null,{default:t(()=>[a(h,{label:"array"},{default:t(()=>e[0]||(e[0]=[i("p",null,[s("This is the implementation definition for "),i("code",null,"DimArray"),s(":")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData, Interfaces")]),s(` `),i("span",{class:"line"}),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @implements"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"DimArrayInterface{("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":refdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},","),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":name"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},","),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":metadata"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")} DimArray ["),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"rand"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"X"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"Y"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")), "),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"zeros"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"Z"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"))]")])])])],-1),i("p",null,[s("See the "),i("a",{href:"/DimensionalData.jl/dev/api/reference#DimensionalData.DimArrayInterface"},[i("code",null,"DimensionalData.DimArrayInterface")]),s(" docs for options. We can test it with:")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Interfaces"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"test"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(DimensionalData"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"DimArrayInterface)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"}),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Testing "),i("span",{style:{"--shiki-light":"#0366d6","--shiki-dark":"#2188ff"}},"DimArrayInterface"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," is implemented for "),i("span",{style:{"--shiki-light":"#0366d6","--shiki-dark":"#2188ff"}},"DimArray")]),s(` diff --git a/dev/assets/extending_dd.md.CvLFMnJ_.lean.js b/dev/assets/extending_dd.md.1GiVmXy5.lean.js similarity index 99% rename from dev/assets/extending_dd.md.CvLFMnJ_.lean.js rename to dev/assets/extending_dd.md.1GiVmXy5.lean.js index 9b305c768..5724246e1 100644 --- a/dev/assets/extending_dd.md.CvLFMnJ_.lean.js +++ b/dev/assets/extending_dd.md.1GiVmXy5.lean.js @@ -1,4 +1,4 @@ -import{_ as n,B as l,o as d,c as r,a4 as p,G as a,w as t,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"Extending DimensionalData","description":"","frontmatter":{},"headers":[],"relativePath":"extending_dd.md","filePath":"extending_dd.md","lastUpdated":null}'),o={name:"extending_dd.md"};function g(y,e,c,u,m,E){const h=l("PluginTabsTab"),k=l("PluginTabs");return d(),r("div",null,[e[2]||(e[2]=p('

Extending DimensionalData

Nearly everything in DimensionalData.jl is designed to be extensible.

  • AbstractDimArray is easily extended to custom array types. Raster or YAXArray are examples from other packages.

  • AbstractDimStack is easily extended to custom mixed array datasets. RasterStack or ArViZ.Dataset are examples.

  • Lookup can have new types added, e.g. to AbstractSampled or AbstractCategorical. Rasters.Projected is a lookup that knows its coordinate reference system, but otherwise behaves as a regular Sampled lookup.

dims, rebuild and format are the key interface methods in most of these cases.

dims

Objects extending DimensionalData.jl that have dimensions must return a Tuple of constructed Dimensions from dims(obj).

Dimension axes

Dimensions returned from dims should hold a Lookup or in some cases just an AbstractArray (like with DimIndices). When attached to multi-dimensional objects, lookups must be the same length as the axis of the array it represents, and eachindex(A, i) and eachindex(dim) must return the same values.

This means that if the array has OffsetArrays.jl axes, the array the dimension wraps must also have OffsetArrays.jl axes.

dims keywords

To any dims keyword argument that usually requires the dimension I, objects should accept any Dimension, Type{<:Dimension}, Symbol, Val{:Symbol}, Val{<:Type{<:Dimension}} or also regular Integer.

This is easier than it sounds, calling DD.dims(objs, dims) will return the matching dimension and DD.dimnum(obj, dims) will return the matching Int for any of these inputs as long as dims(obj) is implemented.

rebuild

Rebuild methods are used to rebuild immutable objects with new field values, in a way that is more flexible and extensible than just using ConstructionBase.jl reconstruction. Developers can choose to ignore some of the fields passed by rebuild.

The function signature is always one of:

julia
rebuild(obj, args...)\nrebuild(obj; kw...)

rebuild has keyword versions automatically generated for all objects using ConstructionBase.jl.

These will work without further work as long as your object has the fields used by DimensionalData.jl objects. For example, AbstractDimArray will receive these keywords in rebuild: data, dims, refdims, name, metadata.

If your AbstractDimArray does not have all these fields, you must implement rebuild(x::YourDimArray; kw...) manually.

An argument method is also defined with the same arguments as the keyword version. For AbstractDimArray it should only be used for updating data and dims, any more that that is confusing.

For Dimension and Selector the single argument versions are easiest to use, as there is only one argument.

format

When constructing an AbstractDimArray or AbstractDimStack DimensionalData.format must be called on the dims tuple and the parent array:

julia
format(dims, array)

This lets DimensionalData detect the lookup properties, fill in missing fields of a Lookup, pass keywords from Dimension to detected Lookup constructors, and accept a wider range of dimension inputs like tuples of Symbol and Type.

Not calling format in the outer constructors of an AbstractDimArray has undefined behaviour.

Interfaces.jl interface testing

DimensionalData defines explicit, testable Interfaces.jl interfaces: DimArrayInterface and DimStackInterface.

',28)),a(k,null,{default:t(()=>[a(h,{label:"array"},{default:t(()=>e[0]||(e[0]=[i("p",null,[s("This is the implementation definition for "),i("code",null,"DimArray"),s(":")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData, Interfaces")]),s(` +import{_ as n,c as d,a4 as r,G as a,w as t,B as l,o as p,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"Extending DimensionalData","description":"","frontmatter":{},"headers":[],"relativePath":"extending_dd.md","filePath":"extending_dd.md","lastUpdated":null}'),o={name:"extending_dd.md"};function g(y,e,c,u,m,E){const h=l("PluginTabsTab"),k=l("PluginTabs");return p(),d("div",null,[e[2]||(e[2]=r('

Extending DimensionalData

Nearly everything in DimensionalData.jl is designed to be extensible.

  • AbstractDimArray is easily extended to custom array types. Raster or YAXArray are examples from other packages.

  • AbstractDimStack is easily extended to custom mixed array datasets. RasterStack or ArViZ.Dataset are examples.

  • Lookup can have new types added, e.g. to AbstractSampled or AbstractCategorical. Rasters.Projected is a lookup that knows its coordinate reference system, but otherwise behaves as a regular Sampled lookup.

dims, rebuild and format are the key interface methods in most of these cases.

dims

Objects extending DimensionalData.jl that have dimensions must return a Tuple of constructed Dimensions from dims(obj).

Dimension axes

Dimensions returned from dims should hold a Lookup or in some cases just an AbstractArray (like with DimIndices). When attached to multi-dimensional objects, lookups must be the same length as the axis of the array it represents, and eachindex(A, i) and eachindex(dim) must return the same values.

This means that if the array has OffsetArrays.jl axes, the array the dimension wraps must also have OffsetArrays.jl axes.

dims keywords

To any dims keyword argument that usually requires the dimension I, objects should accept any Dimension, Type{<:Dimension}, Symbol, Val{:Symbol}, Val{<:Type{<:Dimension}} or also regular Integer.

This is easier than it sounds, calling DD.dims(objs, dims) will return the matching dimension and DD.dimnum(obj, dims) will return the matching Int for any of these inputs as long as dims(obj) is implemented.

rebuild

Rebuild methods are used to rebuild immutable objects with new field values, in a way that is more flexible and extensible than just using ConstructionBase.jl reconstruction. Developers can choose to ignore some of the fields passed by rebuild.

The function signature is always one of:

julia
rebuild(obj, args...)\nrebuild(obj; kw...)

rebuild has keyword versions automatically generated for all objects using ConstructionBase.jl.

These will work without further work as long as your object has the fields used by DimensionalData.jl objects. For example, AbstractDimArray will receive these keywords in rebuild: data, dims, refdims, name, metadata.

If your AbstractDimArray does not have all these fields, you must implement rebuild(x::YourDimArray; kw...) manually.

An argument method is also defined with the same arguments as the keyword version. For AbstractDimArray it should only be used for updating data and dims, any more that that is confusing.

For Dimension and Selector the single argument versions are easiest to use, as there is only one argument.

format

When constructing an AbstractDimArray or AbstractDimStack DimensionalData.format must be called on the dims tuple and the parent array:

julia
format(dims, array)

This lets DimensionalData detect the lookup properties, fill in missing fields of a Lookup, pass keywords from Dimension to detected Lookup constructors, and accept a wider range of dimension inputs like tuples of Symbol and Type.

Not calling format in the outer constructors of an AbstractDimArray has undefined behaviour.

Interfaces.jl interface testing

DimensionalData defines explicit, testable Interfaces.jl interfaces: DimArrayInterface and DimStackInterface.

',28)),a(k,null,{default:t(()=>[a(h,{label:"array"},{default:t(()=>e[0]||(e[0]=[i("p",null,[s("This is the implementation definition for "),i("code",null,"DimArray"),s(":")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData, Interfaces")]),s(` `),i("span",{class:"line"}),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," @implements"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"DimArrayInterface{("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":refdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},","),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":name"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},","),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},":metadata"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")} DimArray ["),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"rand"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"X"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"Y"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},")), "),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"zeros"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"Z"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"10"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"))]")])])])],-1),i("p",null,[s("See the "),i("a",{href:"/DimensionalData.jl/dev/api/reference#DimensionalData.DimArrayInterface"},[i("code",null,"DimensionalData.DimArrayInterface")]),s(" docs for options. We can test it with:")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Interfaces"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"test"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(DimensionalData"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"DimArrayInterface)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"}),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Testing "),i("span",{style:{"--shiki-light":"#0366d6","--shiki-dark":"#2188ff"}},"DimArrayInterface"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," is implemented for "),i("span",{style:{"--shiki-light":"#0366d6","--shiki-dark":"#2188ff"}},"DimArray")]),s(` diff --git a/dev/assets/get_info.md.58vnLvH3.js b/dev/assets/get_info.md.BbLR9nNK.js similarity index 99% rename from dev/assets/get_info.md.58vnLvH3.js rename to dev/assets/get_info.md.BbLR9nNK.js index b1fde95d3..9573d3afa 100644 --- a/dev/assets/get_info.md.58vnLvH3.js +++ b/dev/assets/get_info.md.BbLR9nNK.js @@ -1,4 +1,4 @@ -import{_ as d,B as k,o as p,c as g,a4 as n,G as l,w as e,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const C=JSON.parse('{"title":"Getters","description":"","frontmatter":{},"headers":[],"relativePath":"get_info.md","filePath":"get_info.md","lastUpdated":null}'),r={name:"get_info.md"};function c(o,a,u,y,E,v){const t=k("PluginTabsTab"),h=k("PluginTabs");return p(),g("div",null,[a[24]||(a[24]=n(`

Getters

DimensionalData.jl defines consistent methods to retrieve information from objects like DimArray, DimStack, Tuples of Dimension, Dimension, and Lookup.

First, we will define an example DimArray.

julia
using DimensionalData
+import{_ as d,c as p,a4 as k,G as l,w as e,B as n,o as g,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const C=JSON.parse('{"title":"Getters","description":"","frontmatter":{},"headers":[],"relativePath":"get_info.md","filePath":"get_info.md","lastUpdated":null}'),r={name:"get_info.md"};function c(o,a,u,y,E,v){const t=n("PluginTabsTab"),h=n("PluginTabs");return g(),p("div",null,[a[24]||(a[24]=k(`

Getters

DimensionalData.jl defines consistent methods to retrieve information from objects like DimArray, DimStack, Tuples of Dimension, Dimension, and Lookup.

First, we will define an example DimArray.

julia
using DimensionalData
 using DimensionalData.Lookups
 x, y = X(10:-1:1), Y(100.0:10:200.0)
(↓ X 10:-1:1,
 → Y 100.0:10.0:200.0)
julia
julia> A = rand(x, y)
╭────────────────────────────╮
@@ -51,7 +51,7 @@ import{_ as d,B as k,o as p,c as g,a4 as n,G as l,w as e,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (190.0, 190.0)")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (200.0, 200.0)")])])])],-1)])),_:1}),l(t,{label:"extent"},{default:e(()=>a[10]||(a[10]=[i("p",null,[i("a",{href:"https://github.com/rafaqz/Extent",target:"_blank",rel:"noreferrer"},"Extents.jl"),s(" provides an "),i("code",null,"Extent"),s(" object that combines the names of dimensions with their bounds.")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Extents"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," extent")]),s(`
 `),i("span",{class:"line"}),s(`
-`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, X)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10),)")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1)])),_:1})]),_:1}),a[25]||(a[25]=n('

Predicates

These always return true or false. With multiple dimensions, false means !all and true means all.

dims and all other methods listed above can use predicates to filter the returned dimensions.

',3)),l(h,null,{default:e(()=>[l(t,{label:"issampled"},{default:e(()=>a[11]||(a[11]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` +`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, X)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10),)")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1)])),_:1})]),_:1}),a[25]||(a[25]=k('

Predicates

These always return true or false. With multiple dimensions, false means !all and true means all.

dims and all other methods listed above can use predicates to filter the returned dimensions.

',3)),l(h,null,{default:e(()=>[l(t,{label:"issampled"},{default:e(()=>a[11]||(a[11]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"→ "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"Y"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Float64} "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"100.0:10.0:200.0"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ForwardOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},")")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," otherdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Sampled{Int64} "),i("span",{style:{"--shiki-light":"#6a737d","--shiki-dark":"#d1d5da"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Sampled{Float64} "),i("span",{style:{"--shiki-light":"#6a737d","--shiki-dark":"#d1d5da"}},"100.0:10.0:200.0"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ForwardOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points")])])])],-1)])),_:1}),l(t,{label:"iscategorical"},{default:e(()=>a[12]||(a[12]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscategorical)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," otherdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscategorical)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"→ "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"Y"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Float64} "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"100.0:10.0:200.0"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ForwardOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},")")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscategorical)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1)])),_:1}),l(t,{label:"iscyclic"},{default:e(()=>a[13]||(a[13]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscyclic)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," otherdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscyclic)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` diff --git a/dev/assets/get_info.md.58vnLvH3.lean.js b/dev/assets/get_info.md.BbLR9nNK.lean.js similarity index 99% rename from dev/assets/get_info.md.58vnLvH3.lean.js rename to dev/assets/get_info.md.BbLR9nNK.lean.js index b1fde95d3..9573d3afa 100644 --- a/dev/assets/get_info.md.58vnLvH3.lean.js +++ b/dev/assets/get_info.md.BbLR9nNK.lean.js @@ -1,4 +1,4 @@ -import{_ as d,B as k,o as p,c as g,a4 as n,G as l,w as e,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const C=JSON.parse('{"title":"Getters","description":"","frontmatter":{},"headers":[],"relativePath":"get_info.md","filePath":"get_info.md","lastUpdated":null}'),r={name:"get_info.md"};function c(o,a,u,y,E,v){const t=k("PluginTabsTab"),h=k("PluginTabs");return p(),g("div",null,[a[24]||(a[24]=n(`

Getters

DimensionalData.jl defines consistent methods to retrieve information from objects like DimArray, DimStack, Tuples of Dimension, Dimension, and Lookup.

First, we will define an example DimArray.

julia
using DimensionalData
+import{_ as d,c as p,a4 as k,G as l,w as e,B as n,o as g,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const C=JSON.parse('{"title":"Getters","description":"","frontmatter":{},"headers":[],"relativePath":"get_info.md","filePath":"get_info.md","lastUpdated":null}'),r={name:"get_info.md"};function c(o,a,u,y,E,v){const t=n("PluginTabsTab"),h=n("PluginTabs");return g(),p("div",null,[a[24]||(a[24]=k(`

Getters

DimensionalData.jl defines consistent methods to retrieve information from objects like DimArray, DimStack, Tuples of Dimension, Dimension, and Lookup.

First, we will define an example DimArray.

julia
using DimensionalData
 using DimensionalData.Lookups
 x, y = X(10:-1:1), Y(100.0:10:200.0)
(↓ X 10:-1:1,
 → Y 100.0:10.0:200.0)
julia
julia> A = rand(x, y)
╭────────────────────────────╮
@@ -51,7 +51,7 @@ import{_ as d,B as k,o as p,c as g,a4 as n,G as l,w as e,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (190.0, 190.0)")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (200.0, 200.0)")])])])],-1)])),_:1}),l(t,{label:"extent"},{default:e(()=>a[10]||(a[10]=[i("p",null,[i("a",{href:"https://github.com/rafaqz/Extent",target:"_blank",rel:"noreferrer"},"Extents.jl"),s(" provides an "),i("code",null,"Extent"),s(" object that combines the names of dimensions with their bounds.")],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," Extents"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},":"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," extent")]),s(`
 `),i("span",{class:"line"}),s(`
-`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, X)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10),)")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1)])),_:1})]),_:1}),a[25]||(a[25]=n('

Predicates

These always return true or false. With multiple dimensions, false means !all and true means all.

dims and all other methods listed above can use predicates to filter the returned dimensions.

',3)),l(h,null,{default:e(()=>[l(t,{label:"issampled"},{default:e(()=>a[11]||(a[11]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` +`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, X)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10),)")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Extent(X = (1, 10), Y = (100.0, 200.0))")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," extent"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1)])),_:1})]),_:1}),a[25]||(a[25]=k('

Predicates

These always return true or false. With multiple dimensions, false means !all and true means all.

dims and all other methods listed above can use predicates to filter the returned dimensions.

',3)),l(h,null,{default:e(()=>[l(t,{label:"issampled"},{default:e(()=>a[11]||(a[11]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," issampled"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"true")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"→ "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"Y"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Float64} "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"100.0:10.0:200.0"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ForwardOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},")")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," otherdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, issampled)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Sampled{Int64} "),i("span",{style:{"--shiki-light":"#6a737d","--shiki-dark":"#d1d5da"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Sampled{Float64} "),i("span",{style:{"--shiki-light":"#6a737d","--shiki-dark":"#d1d5da"}},"100.0:10.0:200.0"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ForwardOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points")])])])],-1)])),_:1}),l(t,{label:"iscategorical"},{default:e(()=>a[12]||(a[12]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscategorical"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscategorical)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," otherdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscategorical)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"→ "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"Y"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Float64} "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"100.0:10.0:200.0"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ForwardOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},")")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscategorical)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1)])),_:1}),l(t,{label:"iscyclic"},{default:e(()=>a[13]||(a[13]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," iscyclic"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"lookup"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, Y))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"false")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," dims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscyclic)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"()")])])])],-1),i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," otherdims"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(A, iscyclic)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"("),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"↓ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"X"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," Sampled{Int64} "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"10:-1:1"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," ReverseOrdered"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Regular"),i("span",{style:{"--shiki-light":"#808080","--shiki-dark":"#808080"}}," Points"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},",")]),s(` diff --git a/dev/assets/groupby.md.BzT1eUq0.js b/dev/assets/groupby.md.BaWubqAT.js similarity index 99% rename from dev/assets/groupby.md.BzT1eUq0.js rename to dev/assets/groupby.md.BaWubqAT.js index bbcab2798..e33ee8a78 100644 --- a/dev/assets/groupby.md.BzT1eUq0.js +++ b/dev/assets/groupby.md.BaWubqAT.js @@ -1,4 +1,4 @@ -import{_ as p,B as t,o as d,c as r,a4 as n,G as e,w as l,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"Group By","description":"","frontmatter":{},"headers":[],"relativePath":"groupby.md","filePath":"groupby.md","lastUpdated":null}'),g={name:"groupby.md"};function y(f,a,c,o,u,E){const h=t("PluginTabsTab"),k=t("PluginTabs");return d(),r("div",null,[a[25]||(a[25]=n(`

Group By

DimensionalData.jl provides a groupby function for dimensional grouping. This guide covers:

  • simple grouping with a function

  • grouping with Bins

  • grouping with another existing AbstractDimArray or Dimension

Grouping functions

Let's look at the kind of functions that can be used to group DateTime. Other types will follow the same principles, but are usually simpler.

First, load some packages:

julia
using DimensionalData
+import{_ as p,c as d,a4 as t,G as e,w as l,j as i,a as s,B as n,o as r}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"Group By","description":"","frontmatter":{},"headers":[],"relativePath":"groupby.md","filePath":"groupby.md","lastUpdated":null}'),g={name:"groupby.md"};function y(f,a,c,o,u,E){const h=n("PluginTabsTab"),k=n("PluginTabs");return r(),d("div",null,[a[25]||(a[25]=t(`

Group By

DimensionalData.jl provides a groupby function for dimensional grouping. This guide covers:

  • simple grouping with a function

  • grouping with Bins

  • grouping with another existing AbstractDimArray or Dimension

Grouping functions

Let's look at the kind of functions that can be used to group DateTime. Other types will follow the same principles, but are usually simpler.

First, load some packages:

julia
using DimensionalData
 using Dates
 using Statistics
 const DD = DimensionalData

Now create a demo DateTime range

julia
julia> tempo = range(DateTime(2000), step=Hour(1), length=365*24*2)
DateTime("2000-01-01T00:00:00"):Hour(1):DateTime("2001-12-30T23:00:00")

Let's see how some common functions work.

The hour function will transform values to the hour of the day - the integers 0:23

`,12)),e(k,null,{default:l(()=>[e(h,{label:"hour"},{default:l(()=>a[0]||(a[0]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," hour"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},".(tempo)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"17520-element Vector{Int64}:")]),s(` @@ -161,7 +161,7 @@ import{_ as p,B as t,o as d,c as r,a4 as n,G as e,w as l,j as i,a as s}from"./ch `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")]),s(` -`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")])])])],-1)])),_:1})]),_:1}),a[27]||(a[27]=n(`

Grouping and reducing

Let's define an array with a time dimension of the times used above:

julia
julia> A = rand(X(1:0.01:2), Ti(tempo))
╭────────────────────────────────╮
+`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")])])])],-1)])),_:1})]),_:1}),a[27]||(a[27]=t(`

Grouping and reducing

Let's define an array with a time dimension of the times used above:

julia
julia> A = rand(X(1:0.01:2), Ti(tempo))
╭────────────────────────────────╮
 101×17520 DimArray{Float64, 2}
 ├────────────────────────────────┴─────────────────────────────────────── dims ┐
 X  Sampled{Float64} 1.0:0.01:2.0 ForwardOrdered Regular Points,
diff --git a/dev/assets/groupby.md.BzT1eUq0.lean.js b/dev/assets/groupby.md.BaWubqAT.lean.js
similarity index 99%
rename from dev/assets/groupby.md.BzT1eUq0.lean.js
rename to dev/assets/groupby.md.BaWubqAT.lean.js
index bbcab2798..e33ee8a78 100644
--- a/dev/assets/groupby.md.BzT1eUq0.lean.js
+++ b/dev/assets/groupby.md.BaWubqAT.lean.js
@@ -1,4 +1,4 @@
-import{_ as p,B as t,o as d,c as r,a4 as n,G as e,w as l,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"Group By","description":"","frontmatter":{},"headers":[],"relativePath":"groupby.md","filePath":"groupby.md","lastUpdated":null}'),g={name:"groupby.md"};function y(f,a,c,o,u,E){const h=t("PluginTabsTab"),k=t("PluginTabs");return d(),r("div",null,[a[25]||(a[25]=n(`

Group By

DimensionalData.jl provides a groupby function for dimensional grouping. This guide covers:

  • simple grouping with a function

  • grouping with Bins

  • grouping with another existing AbstractDimArray or Dimension

Grouping functions

Let's look at the kind of functions that can be used to group DateTime. Other types will follow the same principles, but are usually simpler.

First, load some packages:

julia
using DimensionalData
+import{_ as p,c as d,a4 as t,G as e,w as l,j as i,a as s,B as n,o as r}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"Group By","description":"","frontmatter":{},"headers":[],"relativePath":"groupby.md","filePath":"groupby.md","lastUpdated":null}'),g={name:"groupby.md"};function y(f,a,c,o,u,E){const h=n("PluginTabsTab"),k=n("PluginTabs");return r(),d("div",null,[a[25]||(a[25]=t(`

Group By

DimensionalData.jl provides a groupby function for dimensional grouping. This guide covers:

  • simple grouping with a function

  • grouping with Bins

  • grouping with another existing AbstractDimArray or Dimension

Grouping functions

Let's look at the kind of functions that can be used to group DateTime. Other types will follow the same principles, but are usually simpler.

First, load some packages:

julia
using DimensionalData
 using Dates
 using Statistics
 const DD = DimensionalData

Now create a demo DateTime range

julia
julia> tempo = range(DateTime(2000), step=Hour(1), length=365*24*2)
DateTime("2000-01-01T00:00:00"):Hour(1):DateTime("2001-12-30T23:00:00")

Let's see how some common functions work.

The hour function will transform values to the hour of the day - the integers 0:23

`,12)),e(k,null,{default:l(()=>[e(h,{label:"hour"},{default:l(()=>a[0]||(a[0]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," hour"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},".(tempo)")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"17520-element Vector{Int64}:")]),s(` @@ -161,7 +161,7 @@ import{_ as p,B as t,o as d,c as r,a4 as n,G as e,w as l,j as i,a as s}from"./ch `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")]),s(` -`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")])])])],-1)])),_:1})]),_:1}),a[27]||(a[27]=n(`

Grouping and reducing

Let's define an array with a time dimension of the times used above:

julia
julia> A = rand(X(1:0.01:2), Ti(tempo))
╭────────────────────────────────╮
+`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," (2001, 364)")])])])],-1)])),_:1})]),_:1}),a[27]||(a[27]=t(`

Grouping and reducing

Let's define an array with a time dimension of the times used above:

julia
julia> A = rand(X(1:0.01:2), Ti(tempo))
╭────────────────────────────────╮
 101×17520 DimArray{Float64, 2}
 ├────────────────────────────────┴─────────────────────────────────────── dims ┐
 X  Sampled{Float64} 1.0:0.01:2.0 ForwardOrdered Regular Points,
diff --git a/dev/assets/index.md.C2X_uMqs.js b/dev/assets/index.md.CdZfAwlh.js
similarity index 90%
rename from dev/assets/index.md.C2X_uMqs.js
rename to dev/assets/index.md.CdZfAwlh.js
index 7e16a52ba..2746ed3d8 100644
--- a/dev/assets/index.md.C2X_uMqs.js
+++ b/dev/assets/index.md.CdZfAwlh.js
@@ -1 +1 @@
-import{_ as e,o as t,c as a}from"./chunks/framework.Brp_kw4H.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"DimensionalData.jl","text":"Julia datasets with named dimensions","tagline":"High performance named indexing for Julia","image":{"src":"/logo.png"},"actions":[{"theme":"brand","text":"Getting Started","link":"/basics"},{"theme":"alt","text":"API reference","link":"/api/reference"},{"theme":"alt","text":"View on Github","link":"https://github.com/rafaqz/DimensionalData.jl"}]},"features":[{"title":"Intelligent indexing","details":"DimensionalData.jl provides no-cost abstractions for named indexing, and fast index lookups.","link":"/selectors"},{"title":"Powerful Array manipulation","details":"broadcast, reduce, permutedims, and groupby operations.","link":"/groupby"},{"title":"Seamlessly integrated with the julia ecosystem","details":"Works with most methods that accept a regular Array. If a method accepts numeric indices or dims=X in base, you should be able to use DimensionalData.jl dims."}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function n(s,o,r,l,d,m){return t(),a("div")}const u=e(i,[["render",n]]);export{p as __pageData,u as default};
+import{_ as e,c as t,o as a}from"./chunks/framework.60YQGL-0.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"DimensionalData.jl","text":"Julia datasets with named dimensions","tagline":"High performance named indexing for Julia","image":{"src":"/logo.png"},"actions":[{"theme":"brand","text":"Getting Started","link":"/basics"},{"theme":"alt","text":"API reference","link":"/api/reference"},{"theme":"alt","text":"View on Github","link":"https://github.com/rafaqz/DimensionalData.jl"}]},"features":[{"title":"Intelligent indexing","details":"DimensionalData.jl provides no-cost abstractions for named indexing, and fast index lookups.","link":"/selectors"},{"title":"Powerful Array manipulation","details":"broadcast, reduce, permutedims, and groupby operations.","link":"/groupby"},{"title":"Seamlessly integrated with the julia ecosystem","details":"Works with most methods that accept a regular Array. If a method accepts numeric indices or dims=X in base, you should be able to use DimensionalData.jl dims."}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function n(s,o,r,l,d,m){return a(),t("div")}const u=e(i,[["render",n]]);export{p as __pageData,u as default};
diff --git a/dev/assets/index.md.C2X_uMqs.lean.js b/dev/assets/index.md.CdZfAwlh.lean.js
similarity index 90%
rename from dev/assets/index.md.C2X_uMqs.lean.js
rename to dev/assets/index.md.CdZfAwlh.lean.js
index 7e16a52ba..2746ed3d8 100644
--- a/dev/assets/index.md.C2X_uMqs.lean.js
+++ b/dev/assets/index.md.CdZfAwlh.lean.js
@@ -1 +1 @@
-import{_ as e,o as t,c as a}from"./chunks/framework.Brp_kw4H.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"DimensionalData.jl","text":"Julia datasets with named dimensions","tagline":"High performance named indexing for Julia","image":{"src":"/logo.png"},"actions":[{"theme":"brand","text":"Getting Started","link":"/basics"},{"theme":"alt","text":"API reference","link":"/api/reference"},{"theme":"alt","text":"View on Github","link":"https://github.com/rafaqz/DimensionalData.jl"}]},"features":[{"title":"Intelligent indexing","details":"DimensionalData.jl provides no-cost abstractions for named indexing, and fast index lookups.","link":"/selectors"},{"title":"Powerful Array manipulation","details":"broadcast, reduce, permutedims, and groupby operations.","link":"/groupby"},{"title":"Seamlessly integrated with the julia ecosystem","details":"Works with most methods that accept a regular Array. If a method accepts numeric indices or dims=X in base, you should be able to use DimensionalData.jl dims."}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function n(s,o,r,l,d,m){return t(),a("div")}const u=e(i,[["render",n]]);export{p as __pageData,u as default};
+import{_ as e,c as t,o as a}from"./chunks/framework.60YQGL-0.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"DimensionalData.jl","text":"Julia datasets with named dimensions","tagline":"High performance named indexing for Julia","image":{"src":"/logo.png"},"actions":[{"theme":"brand","text":"Getting Started","link":"/basics"},{"theme":"alt","text":"API reference","link":"/api/reference"},{"theme":"alt","text":"View on Github","link":"https://github.com/rafaqz/DimensionalData.jl"}]},"features":[{"title":"Intelligent indexing","details":"DimensionalData.jl provides no-cost abstractions for named indexing, and fast index lookups.","link":"/selectors"},{"title":"Powerful Array manipulation","details":"broadcast, reduce, permutedims, and groupby operations.","link":"/groupby"},{"title":"Seamlessly integrated with the julia ecosystem","details":"Works with most methods that accept a regular Array. If a method accepts numeric indices or dims=X in base, you should be able to use DimensionalData.jl dims."}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function n(s,o,r,l,d,m){return a(),t("div")}const u=e(i,[["render",n]]);export{p as __pageData,u as default};
diff --git a/dev/assets/integrations.md.DI7gl9eu.js b/dev/assets/integrations.md.DI7gl9eu.js
deleted file mode 100644
index 863717241..000000000
--- a/dev/assets/integrations.md.DI7gl9eu.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,o as r,c as t,a4 as o}from"./chunks/framework.Brp_kw4H.js";const p=JSON.parse('{"title":"Integrations","description":"","frontmatter":{},"headers":[],"relativePath":"integrations.md","filePath":"integrations.md","lastUpdated":null}'),s={name:"integrations.md"};function i(l,a,n,d,c,h){return r(),t("div",null,a[0]||(a[0]=[o('

Integrations

Rasters.jl

Rasters.jl extends DimensionalData for geospatial data manipulation, providing file load/save capabilities for a wide range of raster data sources and common GIS tools like polygon rasterization and masking. Raster types are aware of their crs and their missingval (which is often not missing for performance and storage reasons).

Rasters.jl is also the reason DimensionalData.jl exists at all! But it always made sense to separate out spatial indexing from GIS tools and dependencies.

A Raster is a AbstractDimArray, a RasterStack is a AbstractDimStack, and Projected and Mapped are AbstractSampled lookups.

YAXArrays.jl

YAXArrays.jl is another spatial data package aimed more at (very) large datasets. Its functionality is slowly converging with Rasters.jl (both wrapping DiskArrays.jl/DimensionalData.jl) and we work closely with the developers.

YAXArray is a AbstractDimArray and inherits its behaviours.

ClimateBase.jl

ClimateBase.jl Extends DimensionalData.jl with methods for analysis of climate data.

ArviZ.jl

ArviZ.jl Is a Julia package for exploratory analysis of Bayesian models.

An ArviZ.Dataset is an AbstractDimStack!

JuMP.jl

JuMP.jl is a powerful optimization DSL. It defines its own named array types but now accepts any AbstractDimArray too, through a package extension.

CryoGrid.jl

CryoGrid.jl A Julia implementation of the CryoGrid permafrost model.

CryoGridOutput uses DimArray for views into output data.

DynamicGrids.jl

DynamicGrids.jl is a spatial simulation engine, for cellular automata and spatial process models.

All DynamicGrids.jl Outputs are <: AbstractDimArray, and AbstractDimArray are used for auxiliary data to allow temporal synchronisation during simulations. Notably, this all works on GPUs!

AstroImages.jl

AstroImages.jl Provides tools to load and visualise astronomical images. AstroImage is <: AbstractDimArray.

TimeseriesTools.jl

TimeseriesTools.jl Uses DimArray for time-series data.

',25)]))}const u=e(s,[["render",i]]);export{p as __pageData,u as default}; diff --git a/dev/assets/integrations.md.DI7gl9eu.lean.js b/dev/assets/integrations.md.DI7gl9eu.lean.js deleted file mode 100644 index 863717241..000000000 --- a/dev/assets/integrations.md.DI7gl9eu.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,o as r,c as t,a4 as o}from"./chunks/framework.Brp_kw4H.js";const p=JSON.parse('{"title":"Integrations","description":"","frontmatter":{},"headers":[],"relativePath":"integrations.md","filePath":"integrations.md","lastUpdated":null}'),s={name:"integrations.md"};function i(l,a,n,d,c,h){return r(),t("div",null,a[0]||(a[0]=[o('

Integrations

Rasters.jl

Rasters.jl extends DimensionalData for geospatial data manipulation, providing file load/save capabilities for a wide range of raster data sources and common GIS tools like polygon rasterization and masking. Raster types are aware of their crs and their missingval (which is often not missing for performance and storage reasons).

Rasters.jl is also the reason DimensionalData.jl exists at all! But it always made sense to separate out spatial indexing from GIS tools and dependencies.

A Raster is a AbstractDimArray, a RasterStack is a AbstractDimStack, and Projected and Mapped are AbstractSampled lookups.

YAXArrays.jl

YAXArrays.jl is another spatial data package aimed more at (very) large datasets. Its functionality is slowly converging with Rasters.jl (both wrapping DiskArrays.jl/DimensionalData.jl) and we work closely with the developers.

YAXArray is a AbstractDimArray and inherits its behaviours.

ClimateBase.jl

ClimateBase.jl Extends DimensionalData.jl with methods for analysis of climate data.

ArviZ.jl

ArviZ.jl Is a Julia package for exploratory analysis of Bayesian models.

An ArviZ.Dataset is an AbstractDimStack!

JuMP.jl

JuMP.jl is a powerful optimization DSL. It defines its own named array types but now accepts any AbstractDimArray too, through a package extension.

CryoGrid.jl

CryoGrid.jl A Julia implementation of the CryoGrid permafrost model.

CryoGridOutput uses DimArray for views into output data.

DynamicGrids.jl

DynamicGrids.jl is a spatial simulation engine, for cellular automata and spatial process models.

All DynamicGrids.jl Outputs are <: AbstractDimArray, and AbstractDimArray are used for auxiliary data to allow temporal synchronisation during simulations. Notably, this all works on GPUs!

AstroImages.jl

AstroImages.jl Provides tools to load and visualise astronomical images. AstroImage is <: AbstractDimArray.

TimeseriesTools.jl

TimeseriesTools.jl Uses DimArray for time-series data.

',25)]))}const u=e(s,[["render",i]]);export{p as __pageData,u as default}; diff --git a/dev/assets/integrations.md.Dc7kY-MO.js b/dev/assets/integrations.md.Dc7kY-MO.js new file mode 100644 index 000000000..f9239ff24 --- /dev/null +++ b/dev/assets/integrations.md.Dc7kY-MO.js @@ -0,0 +1 @@ +import{_ as e,c as r,a4 as t,o}from"./chunks/framework.60YQGL-0.js";const p=JSON.parse('{"title":"Integrations","description":"","frontmatter":{},"headers":[],"relativePath":"integrations.md","filePath":"integrations.md","lastUpdated":null}'),s={name:"integrations.md"};function i(l,a,n,d,c,h){return o(),r("div",null,a[0]||(a[0]=[t('

Integrations

Rasters.jl

Rasters.jl extends DimensionalData for geospatial data manipulation, providing file load/save capabilities for a wide range of raster data sources and common GIS tools like polygon rasterization and masking. Raster types are aware of their crs and their missingval (which is often not missing for performance and storage reasons).

Rasters.jl is also the reason DimensionalData.jl exists at all! But it always made sense to separate out spatial indexing from GIS tools and dependencies.

A Raster is a AbstractDimArray, a RasterStack is a AbstractDimStack, and Projected and Mapped are AbstractSampled lookups.

YAXArrays.jl

YAXArrays.jl is another spatial data package aimed more at (very) large datasets. Its functionality is slowly converging with Rasters.jl (both wrapping DiskArrays.jl/DimensionalData.jl) and we work closely with the developers.

YAXArray is a AbstractDimArray and inherits its behaviours.

ClimateBase.jl

ClimateBase.jl Extends DimensionalData.jl with methods for analysis of climate data.

ArviZ.jl

ArviZ.jl Is a Julia package for exploratory analysis of Bayesian models.

An ArviZ.Dataset is an AbstractDimStack!

JuMP.jl

JuMP.jl is a powerful optimization DSL. It defines its own named array types but now accepts any AbstractDimArray too, through a package extension.

CryoGrid.jl

CryoGrid.jl A Julia implementation of the CryoGrid permafrost model.

CryoGridOutput uses DimArray for views into output data.

DynamicGrids.jl

DynamicGrids.jl is a spatial simulation engine, for cellular automata and spatial process models.

All DynamicGrids.jl Outputs are <: AbstractDimArray, and AbstractDimArray are used for auxiliary data to allow temporal synchronisation during simulations. Notably, this all works on GPUs!

AstroImages.jl

AstroImages.jl Provides tools to load and visualise astronomical images. AstroImage is <: AbstractDimArray.

TimeseriesTools.jl

TimeseriesTools.jl Uses DimArray for time-series data.

',25)]))}const u=e(s,[["render",i]]);export{p as __pageData,u as default}; diff --git a/dev/assets/integrations.md.Dc7kY-MO.lean.js b/dev/assets/integrations.md.Dc7kY-MO.lean.js new file mode 100644 index 000000000..f9239ff24 --- /dev/null +++ b/dev/assets/integrations.md.Dc7kY-MO.lean.js @@ -0,0 +1 @@ +import{_ as e,c as r,a4 as t,o}from"./chunks/framework.60YQGL-0.js";const p=JSON.parse('{"title":"Integrations","description":"","frontmatter":{},"headers":[],"relativePath":"integrations.md","filePath":"integrations.md","lastUpdated":null}'),s={name:"integrations.md"};function i(l,a,n,d,c,h){return o(),r("div",null,a[0]||(a[0]=[t('

Integrations

Rasters.jl

Rasters.jl extends DimensionalData for geospatial data manipulation, providing file load/save capabilities for a wide range of raster data sources and common GIS tools like polygon rasterization and masking. Raster types are aware of their crs and their missingval (which is often not missing for performance and storage reasons).

Rasters.jl is also the reason DimensionalData.jl exists at all! But it always made sense to separate out spatial indexing from GIS tools and dependencies.

A Raster is a AbstractDimArray, a RasterStack is a AbstractDimStack, and Projected and Mapped are AbstractSampled lookups.

YAXArrays.jl

YAXArrays.jl is another spatial data package aimed more at (very) large datasets. Its functionality is slowly converging with Rasters.jl (both wrapping DiskArrays.jl/DimensionalData.jl) and we work closely with the developers.

YAXArray is a AbstractDimArray and inherits its behaviours.

ClimateBase.jl

ClimateBase.jl Extends DimensionalData.jl with methods for analysis of climate data.

ArviZ.jl

ArviZ.jl Is a Julia package for exploratory analysis of Bayesian models.

An ArviZ.Dataset is an AbstractDimStack!

JuMP.jl

JuMP.jl is a powerful optimization DSL. It defines its own named array types but now accepts any AbstractDimArray too, through a package extension.

CryoGrid.jl

CryoGrid.jl A Julia implementation of the CryoGrid permafrost model.

CryoGridOutput uses DimArray for views into output data.

DynamicGrids.jl

DynamicGrids.jl is a spatial simulation engine, for cellular automata and spatial process models.

All DynamicGrids.jl Outputs are <: AbstractDimArray, and AbstractDimArray are used for auxiliary data to allow temporal synchronisation during simulations. Notably, this all works on GPUs!

AstroImages.jl

AstroImages.jl Provides tools to load and visualise astronomical images. AstroImage is <: AbstractDimArray.

TimeseriesTools.jl

TimeseriesTools.jl Uses DimArray for time-series data.

',25)]))}const u=e(s,[["render",i]]);export{p as __pageData,u as default}; diff --git a/dev/assets/object_modification.md.DkAIeZDw.js b/dev/assets/object_modification.md.CITpgP_p.js similarity index 99% rename from dev/assets/object_modification.md.DkAIeZDw.js rename to dev/assets/object_modification.md.CITpgP_p.js index 038761797..58add8773 100644 --- a/dev/assets/object_modification.md.DkAIeZDw.js +++ b/dev/assets/object_modification.md.CITpgP_p.js @@ -1,4 +1,4 @@ -import{_ as d,B as n,o as p,c as r,a4 as k,G as e,w as l,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const m=JSON.parse('{"title":"Modifying Objects","description":"","frontmatter":{},"headers":[],"relativePath":"object_modification.md","filePath":"object_modification.md","lastUpdated":null}'),g={name:"object_modification.md"};function y(o,a,c,f,u,E){const h=n("PluginTabsTab"),t=n("PluginTabs");return p(),r("div",null,[a[12]||(a[12]=k('

Modifying Objects

DimensionalData.jl objects are all struct rather than mutable struct. The only things you can modify in-place are the values of the contained arrays or metadata Dicts if they exist.

Everything else must be rebuilt and assigned to a variable.

modify

Modify the inner arrays of a AbstractDimArray or AbstractDimStack, with modify. This can be useful to e.g. replace all arrays with CuArray moving the data to the GPU, collect all inner arrays to Array without losing the outer DimArray wrappers, and similar things.

',5)),e(t,null,{default:l(()=>[e(h,{label:"array"},{default:l(()=>a[0]||(a[0]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData")]),s(` +import{_ as d,c as p,a4 as k,G as e,w as l,j as i,a as s,B as n,o as r}from"./chunks/framework.60YQGL-0.js";const m=JSON.parse('{"title":"Modifying Objects","description":"","frontmatter":{},"headers":[],"relativePath":"object_modification.md","filePath":"object_modification.md","lastUpdated":null}'),g={name:"object_modification.md"};function y(o,a,c,f,u,E){const h=n("PluginTabsTab"),t=n("PluginTabs");return r(),p("div",null,[a[12]||(a[12]=k('

Modifying Objects

DimensionalData.jl objects are all struct rather than mutable struct. The only things you can modify in-place are the values of the contained arrays or metadata Dicts if they exist.

Everything else must be rebuilt and assigned to a variable.

modify

Modify the inner arrays of a AbstractDimArray or AbstractDimStack, with modify. This can be useful to e.g. replace all arrays with CuArray moving the data to the GPU, collect all inner arrays to Array without losing the outer DimArray wrappers, and similar things.

',5)),e(t,null,{default:l(()=>[e(h,{label:"array"},{default:l(()=>a[0]||(a[0]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData")]),s(` `),i("span",{class:"line"}),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," A "),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," falses"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"X"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"Y"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"5"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}},"╭───────────────────────╮")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}},"│ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"3"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"×"),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"5"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," DimArray{Bool, 2}"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," │")]),s(` diff --git a/dev/assets/object_modification.md.DkAIeZDw.lean.js b/dev/assets/object_modification.md.CITpgP_p.lean.js similarity index 99% rename from dev/assets/object_modification.md.DkAIeZDw.lean.js rename to dev/assets/object_modification.md.CITpgP_p.lean.js index 038761797..58add8773 100644 --- a/dev/assets/object_modification.md.DkAIeZDw.lean.js +++ b/dev/assets/object_modification.md.CITpgP_p.lean.js @@ -1,4 +1,4 @@ -import{_ as d,B as n,o as p,c as r,a4 as k,G as e,w as l,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const m=JSON.parse('{"title":"Modifying Objects","description":"","frontmatter":{},"headers":[],"relativePath":"object_modification.md","filePath":"object_modification.md","lastUpdated":null}'),g={name:"object_modification.md"};function y(o,a,c,f,u,E){const h=n("PluginTabsTab"),t=n("PluginTabs");return p(),r("div",null,[a[12]||(a[12]=k('

Modifying Objects

DimensionalData.jl objects are all struct rather than mutable struct. The only things you can modify in-place are the values of the contained arrays or metadata Dicts if they exist.

Everything else must be rebuilt and assigned to a variable.

modify

Modify the inner arrays of a AbstractDimArray or AbstractDimStack, with modify. This can be useful to e.g. replace all arrays with CuArray moving the data to the GPU, collect all inner arrays to Array without losing the outer DimArray wrappers, and similar things.

',5)),e(t,null,{default:l(()=>[e(h,{label:"array"},{default:l(()=>a[0]||(a[0]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData")]),s(` +import{_ as d,c as p,a4 as k,G as e,w as l,j as i,a as s,B as n,o as r}from"./chunks/framework.60YQGL-0.js";const m=JSON.parse('{"title":"Modifying Objects","description":"","frontmatter":{},"headers":[],"relativePath":"object_modification.md","filePath":"object_modification.md","lastUpdated":null}'),g={name:"object_modification.md"};function y(o,a,c,f,u,E){const h=n("PluginTabsTab"),t=n("PluginTabs");return r(),p("div",null,[a[12]||(a[12]=k('

Modifying Objects

DimensionalData.jl objects are all struct rather than mutable struct. The only things you can modify in-place are the values of the contained arrays or metadata Dicts if they exist.

Everything else must be rebuilt and assigned to a variable.

modify

Modify the inner arrays of a AbstractDimArray or AbstractDimStack, with modify. This can be useful to e.g. replace all arrays with CuArray moving the data to the GPU, collect all inner arrays to Array without losing the outer DimArray wrappers, and similar things.

',5)),e(t,null,{default:l(()=>[e(h,{label:"array"},{default:l(()=>a[0]||(a[0]=[i("div",{class:"language-julia vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"},"julia"),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}}," using"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," DimensionalData")]),s(` `),i("span",{class:"line"}),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"julia"),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},">"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}}," A "),i("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," falses"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"X"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"3"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"), "),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"Y"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"("),i("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"5"),i("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"))")])])])],-1),i("div",{class:"language- vp-adaptive-theme"},[i("button",{title:"Copy Code",class:"copy"}),i("span",{class:"lang"}),i("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[i("code",null,[i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}},"╭───────────────────────╮")]),s(` `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}},"│ "),i("span",{style:{"--shiki-light":"#ff875f","--shiki-dark":"#ff875f"}},"3"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"×"),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"5"),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}}," DimArray{Bool, 2}"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," │")]),s(` diff --git a/dev/assets/plots.md.oQals6G0.js b/dev/assets/plots.md.ClRtwxbW.js similarity index 99% rename from dev/assets/plots.md.oQals6G0.js rename to dev/assets/plots.md.ClRtwxbW.js index 3e8bd7b7d..b13fad969 100644 --- a/dev/assets/plots.md.oQals6G0.js +++ b/dev/assets/plots.md.ClRtwxbW.js @@ -1,4 +1,4 @@ -import{_ as i,o as a,c as t,a4 as l}from"./chunks/framework.Brp_kw4H.js";const h="/DimensionalData.jl/dev/assets/cljjmmh.wy-ul34S.svg",e="/DimensionalData.jl/dev/assets/sxuybmz.D5bwtKy3.svg",n="/DimensionalData.jl/dev/assets/rjcvept.BqNWAx4q.svg",p="/DimensionalData.jl/dev/assets/oqyizkf.DtePuwiC.svg",k="/DimensionalData.jl/dev/assets/ogtyhxw.CCyMSy2O.svg",r="/DimensionalData.jl/dev/assets/itircyw.CHd-coyf.svg",d="/DimensionalData.jl/dev/assets/ifocdvs.aA03bjeh.svg",o="/DimensionalData.jl/dev/assets/fznpaoc.Cr0VT91V.svg",E="/DimensionalData.jl/dev/assets/yqlixmh.DNNBmrjN.svg",v=JSON.parse('{"title":"Plots.jl","description":"","frontmatter":{},"headers":[],"relativePath":"plots.md","filePath":"plots.md","lastUpdated":null}'),c={name:"plots.md"};function g(y,s,F,C,u,m){return a(),t("div",null,s[0]||(s[0]=[l(`

Plots.jl

Plots.jl and Makie.jl functions mostly work out of the box on AbstractDimArray, although not with the same results - they choose to follow each packages default behaviour as much as possible.

This will plot a line plot with 'a', 'b' and 'c' in the legend, and values 1-10 on the labelled X axis:

Plots.jl support is deprecated, as development is moving to Makie.jl

Makie.jl

Makie.jl functions also mostly work with AbstractDimArray and will permute and reorder axes into the right places, especially if X/Y/Z/Ti dimensions are used.

In Makie a DimMatrix will plot as a heatmap by default, but it will have labels and axes in the right places:

julia
using DimensionalData, CairoMakie
+import{_ as i,c as a,a4 as t,o as l}from"./chunks/framework.60YQGL-0.js";const h="/DimensionalData.jl/dev/assets/cljjmmh.wy-ul34S.svg",e="/DimensionalData.jl/dev/assets/sxuybmz.D5bwtKy3.svg",n="/DimensionalData.jl/dev/assets/rjcvept.BqNWAx4q.svg",p="/DimensionalData.jl/dev/assets/oqyizkf.DtePuwiC.svg",k="/DimensionalData.jl/dev/assets/ogtyhxw.CCyMSy2O.svg",r="/DimensionalData.jl/dev/assets/itircyw.CHd-coyf.svg",d="/DimensionalData.jl/dev/assets/ifocdvs.aA03bjeh.svg",o="/DimensionalData.jl/dev/assets/fznpaoc.Cr0VT91V.svg",E="/DimensionalData.jl/dev/assets/yqlixmh.DNNBmrjN.svg",v=JSON.parse('{"title":"Plots.jl","description":"","frontmatter":{},"headers":[],"relativePath":"plots.md","filePath":"plots.md","lastUpdated":null}'),c={name:"plots.md"};function g(y,s,F,C,u,m){return l(),a("div",null,s[0]||(s[0]=[t(`

Plots.jl

Plots.jl and Makie.jl functions mostly work out of the box on AbstractDimArray, although not with the same results - they choose to follow each packages default behaviour as much as possible.

This will plot a line plot with 'a', 'b' and 'c' in the legend, and values 1-10 on the labelled X axis:

Plots.jl support is deprecated, as development is moving to Makie.jl

Makie.jl

Makie.jl functions also mostly work with AbstractDimArray and will permute and reorder axes into the right places, especially if X/Y/Z/Ti dimensions are used.

In Makie a DimMatrix will plot as a heatmap by default, but it will have labels and axes in the right places:

julia
using DimensionalData, CairoMakie
 
 A = rand(X(10:10:100), Y([:a, :b, :c]))
 Makie.plot(A; colormap=:inferno)

Other plots also work, here DD ignores the axis order and instead favours the categorical variable for the X axis:

julia
Makie.rainclouds(A)

AlgebraOfGraphics.jl

AlgebraOfGraphics.jl is a high-level plotting library built on top of Makie.jl that provides a declarative algebra for creating complex visualizations, similar to ggplot2's "grammar of graphics" in R. It allows you to construct plots using algebraic operations like * and +, making it easy to create sophisticated graphics with minimal code.

Any DimensionalArray is also a Tables.jl table, so it can be used with AlgebraOfGraphics.jl directly. You can indicate columns in mapping with Symbols directly (like :X or :Y), or you can use the Dim type directly (like X or Y)!

Note

If your dimensional array is not named, then you can access the data as the :unnamed column. Otherwise, the data is accessible by its name.

Let's start with a simple example, and plot a 2-D dimarray as a scatter plot, colored by its value.

julia
using DimensionalData, AlgebraOfGraphics, CairoMakie
diff --git a/dev/assets/plots.md.oQals6G0.lean.js b/dev/assets/plots.md.ClRtwxbW.lean.js
similarity index 99%
rename from dev/assets/plots.md.oQals6G0.lean.js
rename to dev/assets/plots.md.ClRtwxbW.lean.js
index 3e8bd7b7d..b13fad969 100644
--- a/dev/assets/plots.md.oQals6G0.lean.js
+++ b/dev/assets/plots.md.ClRtwxbW.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,o as a,c as t,a4 as l}from"./chunks/framework.Brp_kw4H.js";const h="/DimensionalData.jl/dev/assets/cljjmmh.wy-ul34S.svg",e="/DimensionalData.jl/dev/assets/sxuybmz.D5bwtKy3.svg",n="/DimensionalData.jl/dev/assets/rjcvept.BqNWAx4q.svg",p="/DimensionalData.jl/dev/assets/oqyizkf.DtePuwiC.svg",k="/DimensionalData.jl/dev/assets/ogtyhxw.CCyMSy2O.svg",r="/DimensionalData.jl/dev/assets/itircyw.CHd-coyf.svg",d="/DimensionalData.jl/dev/assets/ifocdvs.aA03bjeh.svg",o="/DimensionalData.jl/dev/assets/fznpaoc.Cr0VT91V.svg",E="/DimensionalData.jl/dev/assets/yqlixmh.DNNBmrjN.svg",v=JSON.parse('{"title":"Plots.jl","description":"","frontmatter":{},"headers":[],"relativePath":"plots.md","filePath":"plots.md","lastUpdated":null}'),c={name:"plots.md"};function g(y,s,F,C,u,m){return a(),t("div",null,s[0]||(s[0]=[l(`

Plots.jl

Plots.jl and Makie.jl functions mostly work out of the box on AbstractDimArray, although not with the same results - they choose to follow each packages default behaviour as much as possible.

This will plot a line plot with 'a', 'b' and 'c' in the legend, and values 1-10 on the labelled X axis:

Plots.jl support is deprecated, as development is moving to Makie.jl

Makie.jl

Makie.jl functions also mostly work with AbstractDimArray and will permute and reorder axes into the right places, especially if X/Y/Z/Ti dimensions are used.

In Makie a DimMatrix will plot as a heatmap by default, but it will have labels and axes in the right places:

julia
using DimensionalData, CairoMakie
+import{_ as i,c as a,a4 as t,o as l}from"./chunks/framework.60YQGL-0.js";const h="/DimensionalData.jl/dev/assets/cljjmmh.wy-ul34S.svg",e="/DimensionalData.jl/dev/assets/sxuybmz.D5bwtKy3.svg",n="/DimensionalData.jl/dev/assets/rjcvept.BqNWAx4q.svg",p="/DimensionalData.jl/dev/assets/oqyizkf.DtePuwiC.svg",k="/DimensionalData.jl/dev/assets/ogtyhxw.CCyMSy2O.svg",r="/DimensionalData.jl/dev/assets/itircyw.CHd-coyf.svg",d="/DimensionalData.jl/dev/assets/ifocdvs.aA03bjeh.svg",o="/DimensionalData.jl/dev/assets/fznpaoc.Cr0VT91V.svg",E="/DimensionalData.jl/dev/assets/yqlixmh.DNNBmrjN.svg",v=JSON.parse('{"title":"Plots.jl","description":"","frontmatter":{},"headers":[],"relativePath":"plots.md","filePath":"plots.md","lastUpdated":null}'),c={name:"plots.md"};function g(y,s,F,C,u,m){return l(),a("div",null,s[0]||(s[0]=[t(`

Plots.jl

Plots.jl and Makie.jl functions mostly work out of the box on AbstractDimArray, although not with the same results - they choose to follow each packages default behaviour as much as possible.

This will plot a line plot with 'a', 'b' and 'c' in the legend, and values 1-10 on the labelled X axis:

Plots.jl support is deprecated, as development is moving to Makie.jl

Makie.jl

Makie.jl functions also mostly work with AbstractDimArray and will permute and reorder axes into the right places, especially if X/Y/Z/Ti dimensions are used.

In Makie a DimMatrix will plot as a heatmap by default, but it will have labels and axes in the right places:

julia
using DimensionalData, CairoMakie
 
 A = rand(X(10:10:100), Y([:a, :b, :c]))
 Makie.plot(A; colormap=:inferno)

Other plots also work, here DD ignores the axis order and instead favours the categorical variable for the X axis:

julia
Makie.rainclouds(A)

AlgebraOfGraphics.jl

AlgebraOfGraphics.jl is a high-level plotting library built on top of Makie.jl that provides a declarative algebra for creating complex visualizations, similar to ggplot2's "grammar of graphics" in R. It allows you to construct plots using algebraic operations like * and +, making it easy to create sophisticated graphics with minimal code.

Any DimensionalArray is also a Tables.jl table, so it can be used with AlgebraOfGraphics.jl directly. You can indicate columns in mapping with Symbols directly (like :X or :Y), or you can use the Dim type directly (like X or Y)!

Note

If your dimensional array is not named, then you can access the data as the :unnamed column. Otherwise, the data is accessible by its name.

Let's start with a simple example, and plot a 2-D dimarray as a scatter plot, colored by its value.

julia
using DimensionalData, AlgebraOfGraphics, CairoMakie
diff --git a/dev/assets/selectors.md.BjCFWsJn.js b/dev/assets/selectors.md.CPyvJTAL.js
similarity index 99%
rename from dev/assets/selectors.md.BjCFWsJn.js
rename to dev/assets/selectors.md.CPyvJTAL.js
index 5c9d6fe89..e4ea3e1d1 100644
--- a/dev/assets/selectors.md.BjCFWsJn.js
+++ b/dev/assets/selectors.md.CPyvJTAL.js
@@ -1,4 +1,4 @@
-import{_ as p,B as n,o as d,c as r,a4 as k,G as l,w as h,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const C=JSON.parse('{"title":"Selectors","description":"","frontmatter":{},"headers":[],"relativePath":"selectors.md","filePath":"selectors.md","lastUpdated":null}'),g={name:"selectors.md"};function y(f,a,o,c,E,u){const e=n("PluginTabsTab"),t=n("PluginTabs");return d(),r("div",null,[a[11]||(a[11]=k(`

Selectors

In addition to choosing dimensions by name, we can also select values within them.

First, we can create a DimArray with lookup values as well as dimension names:

julia
using DimensionalData
julia
julia> A = rand(X(1.0:0.2:2.0), Y([:a, :b, :c]))
╭──────────────────────────╮
+import{_ as p,c as d,a4 as k,G as l,w as h,B as n,o as r,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const C=JSON.parse('{"title":"Selectors","description":"","frontmatter":{},"headers":[],"relativePath":"selectors.md","filePath":"selectors.md","lastUpdated":null}'),g={name:"selectors.md"};function y(f,a,o,c,E,u){const e=n("PluginTabsTab"),t=n("PluginTabs");return r(),d("div",null,[a[11]||(a[11]=k(`

Selectors

In addition to choosing dimensions by name, we can also select values within them.

First, we can create a DimArray with lookup values as well as dimension names:

julia
using DimensionalData
julia
julia> A = rand(X(1.0:0.2:2.0), Y([:a, :b, :c]))
╭──────────────────────────╮
 6×3 DimArray{Float64, 2}
 ├──────────────────────────┴───────────────────────────────────────────── dims ┐
 X Sampled{Float64} 1.0:0.2:2.0 ForwardOrdered Regular Points,
diff --git a/dev/assets/selectors.md.BjCFWsJn.lean.js b/dev/assets/selectors.md.CPyvJTAL.lean.js
similarity index 99%
rename from dev/assets/selectors.md.BjCFWsJn.lean.js
rename to dev/assets/selectors.md.CPyvJTAL.lean.js
index 5c9d6fe89..e4ea3e1d1 100644
--- a/dev/assets/selectors.md.BjCFWsJn.lean.js
+++ b/dev/assets/selectors.md.CPyvJTAL.lean.js
@@ -1,4 +1,4 @@
-import{_ as p,B as n,o as d,c as r,a4 as k,G as l,w as h,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const C=JSON.parse('{"title":"Selectors","description":"","frontmatter":{},"headers":[],"relativePath":"selectors.md","filePath":"selectors.md","lastUpdated":null}'),g={name:"selectors.md"};function y(f,a,o,c,E,u){const e=n("PluginTabsTab"),t=n("PluginTabs");return d(),r("div",null,[a[11]||(a[11]=k(`

Selectors

In addition to choosing dimensions by name, we can also select values within them.

First, we can create a DimArray with lookup values as well as dimension names:

julia
using DimensionalData
julia
julia> A = rand(X(1.0:0.2:2.0), Y([:a, :b, :c]))
╭──────────────────────────╮
+import{_ as p,c as d,a4 as k,G as l,w as h,B as n,o as r,j as i,a as s}from"./chunks/framework.60YQGL-0.js";const C=JSON.parse('{"title":"Selectors","description":"","frontmatter":{},"headers":[],"relativePath":"selectors.md","filePath":"selectors.md","lastUpdated":null}'),g={name:"selectors.md"};function y(f,a,o,c,E,u){const e=n("PluginTabsTab"),t=n("PluginTabs");return r(),d("div",null,[a[11]||(a[11]=k(`

Selectors

In addition to choosing dimensions by name, we can also select values within them.

First, we can create a DimArray with lookup values as well as dimension names:

julia
using DimensionalData
julia
julia> A = rand(X(1.0:0.2:2.0), Y([:a, :b, :c]))
╭──────────────────────────╮
 6×3 DimArray{Float64, 2}
 ├──────────────────────────┴───────────────────────────────────────────── dims ┐
 X Sampled{Float64} 1.0:0.2:2.0 ForwardOrdered Regular Points,
diff --git a/dev/assets/stacks.md.CxHR72sg.js b/dev/assets/stacks.md.BzNwO13T.js
similarity index 99%
rename from dev/assets/stacks.md.CxHR72sg.js
rename to dev/assets/stacks.md.BzNwO13T.js
index 8cb880f2e..ba2509e64 100644
--- a/dev/assets/stacks.md.CxHR72sg.js
+++ b/dev/assets/stacks.md.BzNwO13T.js
@@ -1,4 +1,4 @@
-import{_ as n,B as d,o as p,c as r,a4 as t,G as h,w as l,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"DimStacks","description":"","frontmatter":{},"headers":[],"relativePath":"stacks.md","filePath":"stacks.md","lastUpdated":null}'),g={name:"stacks.md"};function y(f,a,c,o,u,E){const k=d("PluginTabsTab"),e=d("PluginTabs");return p(),r("div",null,[a[25]||(a[25]=t(`

DimStacks

An AbstractDimStack represents a collection of AbstractDimArray layers that share some or all dimensions. For any two layers, a dimension of the same name must have the identical lookup - in fact, only one is stored for all layers to enforce this consistency.

julia
julia> using DimensionalData
+import{_ as n,c as p,a4 as t,G as h,w as l,j as i,a as s,B as d,o as r}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"DimStacks","description":"","frontmatter":{},"headers":[],"relativePath":"stacks.md","filePath":"stacks.md","lastUpdated":null}'),g={name:"stacks.md"};function y(f,a,c,o,u,E){const k=d("PluginTabsTab"),e=d("PluginTabs");return r(),p("div",null,[a[25]||(a[25]=t(`

DimStacks

An AbstractDimStack represents a collection of AbstractDimArray layers that share some or all dimensions. For any two layers, a dimension of the same name must have the identical lookup - in fact, only one is stored for all layers to enforce this consistency.

julia
julia> using DimensionalData
 
 julia> x, y = X(1.0:10.0), Y(5.0:10.0)
(X 1.0:1.0:10.0,
 Y 5.0:1.0:10.0)
julia
julia> st = DimStack((a=rand(x, y), b=rand(x, y), c=rand(y), d=rand(x)))
╭───────────────╮
@@ -363,6 +363,6 @@ import{_ as n,B as d,o as p,c as r,a4 as t,G as h,w as l,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#00afaf","--shiki-dark":"#00afaf"}},"  :d"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," eltype: "),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Float64"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," dims: "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"X"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," size: "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"10")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}},"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),a[29]||(a[29]=t(`

Performance

Indexing a stack is fast - indexing a single value and returning a NamedTuple from all layers is usually measured in nanoseconds, and no slower than manually indexing into each parent array directly.

There are some compilation overheads to this though, and stacks with very many layers can take a long time to compile.

julia
julia> using BenchmarkTools
 
-julia> @btime $st[X=1, Y=4]
  4.628 ns (0 allocations: 0 bytes)
-(a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
julia
julia> @btime $st[1, 4]
  4.328 ns (0 allocations: 0 bytes)
+julia> @btime $st[X=1, Y=4]
  4.037 ns (0 allocations: 0 bytes)
+(a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
julia
julia> @btime $st[1, 4]
  4.038 ns (0 allocations: 0 bytes)
 (a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
`,7))])}const F=n(g,[["render",y]]);export{b as __pageData,F as default}; diff --git a/dev/assets/stacks.md.CxHR72sg.lean.js b/dev/assets/stacks.md.BzNwO13T.lean.js similarity index 99% rename from dev/assets/stacks.md.CxHR72sg.lean.js rename to dev/assets/stacks.md.BzNwO13T.lean.js index 8cb880f2e..ba2509e64 100644 --- a/dev/assets/stacks.md.CxHR72sg.lean.js +++ b/dev/assets/stacks.md.BzNwO13T.lean.js @@ -1,4 +1,4 @@ -import{_ as n,B as d,o as p,c as r,a4 as t,G as h,w as l,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const b=JSON.parse('{"title":"DimStacks","description":"","frontmatter":{},"headers":[],"relativePath":"stacks.md","filePath":"stacks.md","lastUpdated":null}'),g={name:"stacks.md"};function y(f,a,c,o,u,E){const k=d("PluginTabsTab"),e=d("PluginTabs");return p(),r("div",null,[a[25]||(a[25]=t(`

DimStacks

An AbstractDimStack represents a collection of AbstractDimArray layers that share some or all dimensions. For any two layers, a dimension of the same name must have the identical lookup - in fact, only one is stored for all layers to enforce this consistency.

julia
julia> using DimensionalData
+import{_ as n,c as p,a4 as t,G as h,w as l,j as i,a as s,B as d,o as r}from"./chunks/framework.60YQGL-0.js";const b=JSON.parse('{"title":"DimStacks","description":"","frontmatter":{},"headers":[],"relativePath":"stacks.md","filePath":"stacks.md","lastUpdated":null}'),g={name:"stacks.md"};function y(f,a,c,o,u,E){const k=d("PluginTabsTab"),e=d("PluginTabs");return r(),p("div",null,[a[25]||(a[25]=t(`

DimStacks

An AbstractDimStack represents a collection of AbstractDimArray layers that share some or all dimensions. For any two layers, a dimension of the same name must have the identical lookup - in fact, only one is stored for all layers to enforce this consistency.

julia
julia> using DimensionalData
 
 julia> x, y = X(1.0:10.0), Y(5.0:10.0)
(X 1.0:1.0:10.0,
 Y 5.0:1.0:10.0)
julia
julia> st = DimStack((a=rand(x, y), b=rand(x, y), c=rand(y), d=rand(x)))
╭───────────────╮
@@ -363,6 +363,6 @@ import{_ as n,B as d,o as p,c as r,a4 as t,G as h,w as l,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#00afaf","--shiki-dark":"#00afaf"}},"  :d"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," eltype: "),i("span",{style:{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8"}},"Float64"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," dims: "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"X"),i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}}," size: "),i("span",{style:{"--shiki-light":"#0087d7","--shiki-dark":"#0087d7"}},"10")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-dark":"#959da5"}},"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),a[29]||(a[29]=t(`

Performance

Indexing a stack is fast - indexing a single value and returning a NamedTuple from all layers is usually measured in nanoseconds, and no slower than manually indexing into each parent array directly.

There are some compilation overheads to this though, and stacks with very many layers can take a long time to compile.

julia
julia> using BenchmarkTools
 
-julia> @btime $st[X=1, Y=4]
  4.628 ns (0 allocations: 0 bytes)
-(a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
julia
julia> @btime $st[1, 4]
  4.328 ns (0 allocations: 0 bytes)
+julia> @btime $st[X=1, Y=4]
  4.037 ns (0 allocations: 0 bytes)
+(a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
julia
julia> @btime $st[1, 4]
  4.038 ns (0 allocations: 0 bytes)
 (a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
`,7))])}const F=n(g,[["render",y]]);export{b as __pageData,F as default}; diff --git a/dev/assets/tables.md.BlXc5nW9.js b/dev/assets/tables.md.DMBpxVNO.js similarity index 99% rename from dev/assets/tables.md.BlXc5nW9.js rename to dev/assets/tables.md.DMBpxVNO.js index 1fa55ddaf..d866478ea 100644 --- a/dev/assets/tables.md.BlXc5nW9.js +++ b/dev/assets/tables.md.DMBpxVNO.js @@ -1,4 +1,4 @@ -import{_ as n,B as e,o as g,c as p,a4 as d,G as h,w as t,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const m=JSON.parse('{"title":"Tables and DataFrames","description":"","frontmatter":{},"headers":[],"relativePath":"tables.md","filePath":"tables.md","lastUpdated":null}'),r={name:"tables.md"};function f(o,a,y,c,b,w){const l=e("PluginTabsTab"),k=e("PluginTabs");return g(),p("div",null,[a[6]||(a[6]=d(`

Tables and DataFrames

Tables.jl provides an ecosystem-wide interface to tabular data in Julia, ensuring interoperability with DataFrames.jl, CSV.jl, and hundreds of other packages that implement the standard.

DimensionalData.jl implements the Tables.jl interface for AbstractDimArray and AbstractDimStack. DimStack layers are unrolled so they are all the same size, and dimensions loop to match the length of the largest layer.

Columns are given the name of the array or stack layer, and the result of DD.name(dimension) for Dimension columns.

Looping of dimensions and stack layers is done lazily, and does not allocate unless collected.

Example

julia
using DimensionalData
+import{_ as n,c as g,a4 as e,G as h,w as t,j as i,a as s,B as d,o as p}from"./chunks/framework.60YQGL-0.js";const m=JSON.parse('{"title":"Tables and DataFrames","description":"","frontmatter":{},"headers":[],"relativePath":"tables.md","filePath":"tables.md","lastUpdated":null}'),r={name:"tables.md"};function f(o,a,y,c,b,w){const l=d("PluginTabsTab"),k=d("PluginTabs");return p(),g("div",null,[a[6]||(a[6]=e(`

Tables and DataFrames

Tables.jl provides an ecosystem-wide interface to tabular data in Julia, ensuring interoperability with DataFrames.jl, CSV.jl, and hundreds of other packages that implement the standard.

DimensionalData.jl implements the Tables.jl interface for AbstractDimArray and AbstractDimStack. DimStack layers are unrolled so they are all the same size, and dimensions loop to match the length of the largest layer.

Columns are given the name of the array or stack layer, and the result of DD.name(dimension) for Dimension columns.

Looping of dimensions and stack layers is done lazily, and does not allocate unless collected.

Example

julia
using DimensionalData
 using Dates
 using DataFrames

Define some dimensions:

julia
julia> x, y, c = X(1:10), Y(1:10), Dim{:category}('a':'z')
(X        1:10,
 Y        1:10,
@@ -140,7 +140,7 @@ import{_ as n,B as e,o as g,c as p,a4 as d,G as h,w as t,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-light-font-weight":"bold","--shiki-dark":"#959da5","--shiki-dark-font-weight":"bold"}}," 2598 │ (8, 10)   z         0.704466    0.694279")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-light-font-weight":"bold","--shiki-dark":"#959da5","--shiki-dark-font-weight":"bold"}}," 2599 │ (9, 10)   z         0.56974     0.206362")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-light-font-weight":"bold","--shiki-dark":"#959da5","--shiki-dark-font-weight":"bold"}}," 2600 │ (10, 10)  z         0.856091    0.842866")]),s(`
-`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#1b7c83","--shiki-light-font-weight":"bold","--shiki-dark":"#39c5cf","--shiki-dark-font-weight":"bold"}},"                                 2585 rows omitted")])])])],-1)])),_:1})]),_:1}),a[8]||(a[8]=d(`

Converting to CSV

We can also write arrays and stacks directly to CSV.jl, or any other data type supporting the Tables.jl interface.

julia
using CSV
+`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#1b7c83","--shiki-light-font-weight":"bold","--shiki-dark":"#39c5cf","--shiki-dark-font-weight":"bold"}},"                                 2585 rows omitted")])])])],-1)])),_:1})]),_:1}),a[8]||(a[8]=e(`

Converting to CSV

We can also write arrays and stacks directly to CSV.jl, or any other data type supporting the Tables.jl interface.

julia
using CSV
 CSV.write("dimstack.csv", st)
 readlines("dimstack.csv")
2601-element Vector{String}:
  "X,Y,category,data1,data2"
diff --git a/dev/assets/tables.md.BlXc5nW9.lean.js b/dev/assets/tables.md.DMBpxVNO.lean.js
similarity index 99%
rename from dev/assets/tables.md.BlXc5nW9.lean.js
rename to dev/assets/tables.md.DMBpxVNO.lean.js
index 1fa55ddaf..d866478ea 100644
--- a/dev/assets/tables.md.BlXc5nW9.lean.js
+++ b/dev/assets/tables.md.DMBpxVNO.lean.js
@@ -1,4 +1,4 @@
-import{_ as n,B as e,o as g,c as p,a4 as d,G as h,w as t,j as i,a as s}from"./chunks/framework.Brp_kw4H.js";const m=JSON.parse('{"title":"Tables and DataFrames","description":"","frontmatter":{},"headers":[],"relativePath":"tables.md","filePath":"tables.md","lastUpdated":null}'),r={name:"tables.md"};function f(o,a,y,c,b,w){const l=e("PluginTabsTab"),k=e("PluginTabs");return g(),p("div",null,[a[6]||(a[6]=d(`

Tables and DataFrames

Tables.jl provides an ecosystem-wide interface to tabular data in Julia, ensuring interoperability with DataFrames.jl, CSV.jl, and hundreds of other packages that implement the standard.

DimensionalData.jl implements the Tables.jl interface for AbstractDimArray and AbstractDimStack. DimStack layers are unrolled so they are all the same size, and dimensions loop to match the length of the largest layer.

Columns are given the name of the array or stack layer, and the result of DD.name(dimension) for Dimension columns.

Looping of dimensions and stack layers is done lazily, and does not allocate unless collected.

Example

julia
using DimensionalData
+import{_ as n,c as g,a4 as e,G as h,w as t,j as i,a as s,B as d,o as p}from"./chunks/framework.60YQGL-0.js";const m=JSON.parse('{"title":"Tables and DataFrames","description":"","frontmatter":{},"headers":[],"relativePath":"tables.md","filePath":"tables.md","lastUpdated":null}'),r={name:"tables.md"};function f(o,a,y,c,b,w){const l=d("PluginTabsTab"),k=d("PluginTabs");return p(),g("div",null,[a[6]||(a[6]=e(`

Tables and DataFrames

Tables.jl provides an ecosystem-wide interface to tabular data in Julia, ensuring interoperability with DataFrames.jl, CSV.jl, and hundreds of other packages that implement the standard.

DimensionalData.jl implements the Tables.jl interface for AbstractDimArray and AbstractDimStack. DimStack layers are unrolled so they are all the same size, and dimensions loop to match the length of the largest layer.

Columns are given the name of the array or stack layer, and the result of DD.name(dimension) for Dimension columns.

Looping of dimensions and stack layers is done lazily, and does not allocate unless collected.

Example

julia
using DimensionalData
 using Dates
 using DataFrames

Define some dimensions:

julia
julia> x, y, c = X(1:10), Y(1:10), Dim{:category}('a':'z')
(X        1:10,
 Y        1:10,
@@ -140,7 +140,7 @@ import{_ as n,B as e,o as g,c as p,a4 as d,G as h,w as t,j as i,a as s}from"./ch
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-light-font-weight":"bold","--shiki-dark":"#959da5","--shiki-dark-font-weight":"bold"}}," 2598 │ (8, 10)   z         0.704466    0.694279")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-light-font-weight":"bold","--shiki-dark":"#959da5","--shiki-dark-font-weight":"bold"}}," 2599 │ (9, 10)   z         0.56974     0.206362")]),s(`
 `),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#959da5","--shiki-light-font-weight":"bold","--shiki-dark":"#959da5","--shiki-dark-font-weight":"bold"}}," 2600 │ (10, 10)  z         0.856091    0.842866")]),s(`
-`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#1b7c83","--shiki-light-font-weight":"bold","--shiki-dark":"#39c5cf","--shiki-dark-font-weight":"bold"}},"                                 2585 rows omitted")])])])],-1)])),_:1})]),_:1}),a[8]||(a[8]=d(`

Converting to CSV

We can also write arrays and stacks directly to CSV.jl, or any other data type supporting the Tables.jl interface.

julia
using CSV
+`),i("span",{class:"line"},[i("span",{style:{"--shiki-light":"#1b7c83","--shiki-light-font-weight":"bold","--shiki-dark":"#39c5cf","--shiki-dark-font-weight":"bold"}},"                                 2585 rows omitted")])])])],-1)])),_:1})]),_:1}),a[8]||(a[8]=e(`

Converting to CSV

We can also write arrays and stacks directly to CSV.jl, or any other data type supporting the Tables.jl interface.

julia
using CSV
 CSV.write("dimstack.csv", st)
 readlines("dimstack.csv")
2601-element Vector{String}:
  "X,Y,category,data1,data2"
diff --git a/dev/basics.html b/dev/basics.html
index c643e398e..66e2a692f 100644
--- a/dev/basics.html
+++ b/dev/basics.html
@@ -9,11 +9,11 @@
     
     
     
-    
+    
     
-    
-    
-    
+    
+    
+    
     
     
     
@@ -70,7 +70,7 @@
        1   2   3   4    5    6   7   8   9  10
   :left   46  76  38  32  120  122  29  57   9  23
   :right  78  26   6  50   16  125  11  98  39  95
- + \ No newline at end of file diff --git a/dev/broadcasts.html b/dev/broadcasts.html index fa050e822..e08de79fa 100644 --- a/dev/broadcasts.html +++ b/dev/broadcasts.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -159,7 +159,7 @@ 2000-10-01T00:00:00 0.12404 … 2.53632 7.83904 6.55713 2000-11-01T00:00:00 1.79388 2.5891 2.14203 5.52389 2000-12-01T00:00:00 8.84219 6.15004 5.04169 6.10415
- + \ No newline at end of file diff --git a/dev/cuda.html b/dev/cuda.html index 08db4ffdf..1ba3e5bc8 100644 --- a/dev/cuda.html +++ b/dev/cuda.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -49,7 +49,7 @@ 999.0 1.40584 1.83056 0.0804518 0.177423 1.20779 1.95217 0.881149 1000.0 1.41334 0.719974 0.479126 1.92721 0.0649391 0.642908 1.07277

But the data is on the GPU:

julia
julia> typeof(parent(cuA2))
 CuArray{Float32, 2, CUDA.Mem.DeviceBuffer}

GPU Integration goals

DimensionalData.jl has two GPU-related goals:

  1. Work seamlessly with Base Julia broadcasts and other operations that already work on GPU.

  2. Work as arguments to custom GPU kernel functions.

This means any AbstractDimArray must be automatically moved to the GPU and its fields converted to GPU-friendly forms whenever required, using Adapt.jl.

  • The array data must convert to the correct GPU array backend when Adapt.adapt(dimarray) is called.

  • All DimensionalData.jl objects, except the actual parent array, need to be immutable isbits or convertible to them. This is one reason DimensionalData.jl uses rebuild and a functional style, rather than in-place modification of fields.

  • Symbols need to be moved to the type system, so Name{:layer_name}() replaces :layer_name.

  • Metadata dictionaries need to be stripped, as they are often too difficult to convert and not needed on GPU.

As an example, DynamicGrids.jl uses AbstractDimArray for auxiliary model data that are passed into KernelAbstractions.jl/ CUDA.jl kernels.

- + \ No newline at end of file diff --git a/dev/dimarrays.html b/dev/dimarrays.html index 336b6cc24..e44e89986 100644 --- a/dev/dimarrays.html +++ b/dev/dimarrays.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -182,25 +182,25 @@ 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
julia
julia> @benchmark $da4[X(1), Y(2)]
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
- Range (minmax):  4.017 ns21.760 ns GC (min … max): 0.00% … 0.00%
- Time  (median):     4.027 ns               GC (median):    0.00%
- Time  (mean ± σ):   4.038 ns ±  0.381 ns GC (mean ± σ):  0.00% ± 0.00%
+ Range (minmax):  3.095 ns20.167 ns GC (min … max): 0.00% … 0.00%
+ Time  (median):     3.106 ns               GC (median):    0.00%
+ Time  (mean ± σ):   3.113 ns ±  0.328 ns GC (mean ± σ):  0.00% ± 0.00%
 
-                             
-
-  4.02 ns        Histogram: frequency by time        4.04 ns <
+ 
+
+  3.1 ns         Histogram: frequency by time        3.11 ns <
 
  Memory estimate: 0 bytes, allocs estimate: 0.

the same as accessing the parent array directly:

julia
julia> @benchmark parent($da4)[1, 2]
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
- Range (minmax):  4.017 ns25.918 ns GC (min … max): 0.00% … 0.00%
- Time  (median):     4.027 ns               GC (median):    0.00%
- Time  (mean ± σ):   4.041 ns ±  0.406 ns GC (mean ± σ):  0.00% ± 0.00%
+ Range (minmax):  3.095 ns30.337 ns GC (min … max): 0.00% … 0.00%
+ Time  (median):     3.106 ns               GC (median):    0.00%
+ Time  (mean ± σ):   3.123 ns ±  0.451 ns GC (mean ± σ):  0.00% ± 0.00%
 
-                            
-
-  4.02 ns        Histogram: frequency by time        4.04 ns <
+                                                       
+
+  3.1 ns         Histogram: frequency by time        3.31 ns <
 
  Memory estimate: 0 bytes, allocs estimate: 0.
- + \ No newline at end of file diff --git a/dev/dimensions.html b/dev/dimensions.html index 9417c9e5c..ca9a86960 100644 --- a/dev/dimensions.html +++ b/dev/dimensions.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -24,7 +24,7 @@
Skip to content

Dimensions

Dimensions are "wrapper types" that can be used to wrap any object to associate it with a named dimension.

X, Y, Z, Ti are predefined as types:

julia
julia> using DimensionalData
 
 julia> X(1)
X 1
julia
julia> X(1), Y(2), Z(3)
(X 1, Y 2, Z 3)

You can also create Dim dimensions with any name:

julia
julia> Dim{:a}(1), Dim{:b}(1)
(a 1, b 1)

The wrapped value can be retrieved with val:

julia
julia> val(X(1))
1

DimensionalData.jl uses Dimensions everywhere:

  • Dimensions are returned from dims to specify the names of the dimensions of an object

  • They can wrap Lookups to associate the lookups with those names

  • To index into these objects, they can wrap indices like Int or a Selector

This symmetry means we can ignore how data is organized, and label and access it by name, letting DD work out the details for us.

Dimensions are defined in the Dimensions submodule, and some Dimension-specific methods can be brought into scope with:

julia
using DimensionalData.Dimensions
- + \ No newline at end of file diff --git a/dev/diskarrays.html b/dev/diskarrays.html index 2bcd26ae7..1c3c659ee 100644 --- a/dev/diskarrays.html +++ b/dev/diskarrays.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -22,7 +22,7 @@
Skip to content

DiskArrays.jl compatibility

DiskArrays.jl enables lazy, chunked application of:

  • broadcast

  • reductions

  • iteration

  • generators

  • zip

as well as caching chunks in RAM via DiskArrays.cache(dimarray).

It is rarely used directly, but is present in most disk and cloud based spatial data packages in julia, including: ArchGDAL.jl, NetCDF.jl, Zarr.jl, NCDatasets.jl, GRIBDatasets.jl and CommonDataModel.jl.

The combination of DiskArrays.jl and DimensionalData.jl is Julia's answer to python's xarray. Rasters.jl and YAXArrays.jl are user-facing tools building on this combination.

They have no meaningful direct dependency relationships, but are intentionally designed to integrate via both adherence to Julia's AbstractArray interface, and by coordination during development of both packages.

- + \ No newline at end of file diff --git a/dev/extending_dd.html b/dev/extending_dd.html index 0960ea80f..d1162d540 100644 --- a/dev/extending_dd.html +++ b/dev/extending_dd.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -51,7 +51,7 @@ Implementation summary: DimArray correctly implements DimensionalData.DimArrayInterface: true true
- + \ No newline at end of file diff --git a/dev/get_info.html b/dev/get_info.html index 6bc3ca6ad..e1310d790 100644 --- a/dev/get_info.html +++ b/dev/get_info.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -40,17 +40,17 @@ 4 0.969026 0.0042232 0.63959 0.423538 0.556096 3 0.106472 0.274713 0.589536 0.805743 0.390342 2 0.861535 0.167465 0.507581 0.799964 0.292431 - 1 0.245499 0.742732 0.095824 … 0.90203 0.86858

dims retrieves dimensions from any object that has them.

What makes it so useful is that you can filter which dimensions you want, and specify in what order, using any Dimension, Type{Dimension} or Symbol.

julia
julia> dims(A)
(X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points,
+  1      0.245499    0.742732     0.095824    …    0.90203     0.86858

dims retrieves dimensions from any object that has them.

What makes it so useful is that you can filter which dimensions you want, and specify in what order, using any Dimension, Type{Dimension} or Symbol.

julia
julia> dims(A)
(X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points,
 Y Sampled{Float64} 100.0:10.0:200.0 ForwardOrdered Regular Points)
julia
julia> dims(A, Y)
Y Sampled{Float64} ForwardOrdered Regular Points
 wrapping: 100.0:10.0:200.0
julia
julia> dims(A, Y())
Y Sampled{Float64} ForwardOrdered Regular Points
 wrapping: 100.0:10.0:200.0
julia
julia> dims(A, :Y)
Y Sampled{Float64} ForwardOrdered Regular Points
 wrapping: 100.0:10.0:200.0
julia
julia> dims(A, (X,))
(X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points)
julia
julia> dims(A, (Y, X))
(Y Sampled{Float64} 100.0:10.0:200.0 ForwardOrdered Regular Points,
 X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points)
julia
julia> dims(A, reverse(dims(A)))
(Y Sampled{Float64} 100.0:10.0:200.0 ForwardOrdered Regular Points,
 X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points)
julia
julia> dims(A, isregular)
(X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points,
-Y Sampled{Float64} 100.0:10.0:200.0 ForwardOrdered Regular Points)

Predicates

These always return true or false. With multiple dimensions, false means !all and true means all.

dims and all other methods listed above can use predicates to filter the returned dimensions.

julia
julia> issampled(A)
true
julia
julia> issampled(dims(A))
true
julia
julia> issampled(A, Y)
true
julia
julia> issampled(lookup(A, Y))
true
julia
julia> dims(A, issampled)
(X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points,
+Y Sampled{Float64} 100.0:10.0:200.0 ForwardOrdered Regular Points)

Predicates

These always return true or false. With multiple dimensions, false means !all and true means all.

dims and all other methods listed above can use predicates to filter the returned dimensions.

julia
julia> issampled(A)
true
julia
julia> issampled(dims(A))
true
julia
julia> issampled(A, Y)
true
julia
julia> issampled(lookup(A, Y))
true
julia
julia> dims(A, issampled)
(X Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points,
 Y Sampled{Float64} 100.0:10.0:200.0 ForwardOrdered Regular Points)
julia
julia> otherdims(A, issampled)
()
julia
julia> lookup(A, issampled)
Sampled{Int64} 10:-1:1 ReverseOrdered Regular Points,
 Sampled{Float64} 100.0:10.0:200.0 ForwardOrdered Regular Points
- + \ No newline at end of file diff --git a/dev/groupby.html b/dev/groupby.html index 3bff0c176..cc59a7166 100644 --- a/dev/groupby.html +++ b/dev/groupby.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -24,7 +24,7 @@
Skip to content

Group By

DimensionalData.jl provides a groupby function for dimensional grouping. This guide covers:

  • simple grouping with a function

  • grouping with Bins

  • grouping with another existing AbstractDimArray or Dimension

Grouping functions

Let's look at the kind of functions that can be used to group DateTime. Other types will follow the same principles, but are usually simpler.

First, load some packages:

julia
using DimensionalData
 using Dates
 using Statistics
-const DD = DimensionalData

Now create a demo DateTime range

julia
julia> tempo = range(DateTime(2000), step=Hour(1), length=365*24*2)
DateTime("2000-01-01T00:00:00"):Hour(1):DateTime("2001-12-30T23:00:00")

Let's see how some common functions work.

The hour function will transform values to the hour of the day - the integers 0:23

julia
julia> hour.(tempo)
17520-element Vector{Int64}:
+const DD = DimensionalData

Now create a demo DateTime range

julia
julia> tempo = range(DateTime(2000), step=Hour(1), length=365*24*2)
DateTime("2000-01-01T00:00:00"):Hour(1):DateTime("2001-12-30T23:00:00")

Let's see how some common functions work.

The hour function will transform values to the hour of the day - the integers 0:23

julia
julia> hour.(tempo)
17520-element Vector{Int64}:
   0
   1
   2
@@ -44,7 +44,7 @@
  20
  21
  22
- 23

Tuple groupings

julia
julia> yearmonth.(tempo)
17520-element Vector{Tuple{Int64, Int64}}:
+ 23

Tuple groupings

julia
julia> yearmonth.(tempo)
17520-element Vector{Tuple{Int64, Int64}}:
  (2000, 1)
  (2000, 1)
  (2000, 1)
@@ -80,7 +80,7 @@
  1.97  0.585756              0.485119                 0.299692
  1.98  0.471877              0.889153                 0.336768
  1.99  0.428951              0.312976              …  0.948798
- 2.0   0.921012              0.397575                 0.0897302

Group by month, using the month function:

julia
julia> groups = groupby(A, Ti=>month)
╭───────────────────────────────────────────────────╮
+ 2.0   0.921012              0.397575                 0.0897302

Group by month, using the month function:

julia
julia> groups = groupby(A, Ti=>month)
╭───────────────────────────────────────────────────╮
 12-element DimGroupByArray{DimArray{Float64,1},1}
 ├───────────────────────────────────────────────────┴──────────────────── dims ┐
 Ti Sampled{Int64} [1, 2, …, 11, 12] ForwardOrdered Irregular Points
@@ -110,7 +110,7 @@
 
  10  0.499069
  11  0.500155
- 12  0.500136

Binning

Sometimes we want to further aggregate our groups after running a function, or just bin the raw data directly. We can use the Bins wrapper to do this.

For quick analysis, we can break our groups into N bins.

julia
julia> groupby(A, Ti=>Bins(month, 4))
╭──────────────────────────────────────────────────╮
+ 12  0.500136

Binning

Sometimes we want to further aggregate our groups after running a function, or just bin the raw data directly. We can use the Bins wrapper to do this.

For quick analysis, we can break our groups into N bins.

julia
julia> groupby(A, Ti=>Bins(month, 4))
╭──────────────────────────────────────────────────╮
 4-element DimGroupByArray{DimArray{Float64,1},1}
 ├──────────────────────────────────────────────────┴───────────────────── dims ┐
 Ti Sampled{IntervalSets.Interval{:closed, :open, Float64}} [1.0 .. 3.75275 (closed-open), 3.75275 .. 6.5055 (closed-open), 6.5055 .. 9.25825 (closed-open), 9.25825 .. 12.011 (closed-open)] ForwardOrdered Irregular Intervals{Start}
@@ -123,7 +123,7 @@
  1.0 .. 3.75275 (closed-open)     101×4344 DimArray
  3.75275 .. 6.5055 (closed-open)  101×4368 DimArray
  6.5055 .. 9.25825 (closed-open)  101×4416 DimArray
- 9.25825 .. 12.011 (closed-open)  101×4392 DimArray

Doing this requires slightly padding the bin edges, so the lookup of the output is less than ideal.

Select by Dimension

We can also select by Dimensions and any objects with dims methods.

Trivially, grouping by an object's own dimension is similar to eachslice:

julia
julia> groupby(A, dims(A, Ti))
╭──────────────────────────────────────────────────────╮
+ 9.25825 .. 12.011 (closed-open)  101×4392 DimArray

Doing this requires slightly padding the bin edges, so the lookup of the output is less than ideal.

Select by Dimension

We can also select by Dimensions and any objects with dims methods.

Trivially, grouping by an object's own dimension is similar to eachslice:

julia
julia> groupby(A, dims(A, Ti))
╭──────────────────────────────────────────────────────╮
 17520-element DimGroupByArray{DimArray{Float64,1},1}
 ├──────────────────────────────────────────────────────┴───────────────── dims ┐
 Ti Sampled{DateTime} DateTime("2000-01-01T00:00:00"):Hour(1):DateTime("2001-12-30T23:00:00") ForwardOrdered Regular Points
@@ -139,7 +139,7 @@
 
  2001-12-30T22:00:00  101×1 DimArray
  2001-12-30T23:00:00  101×1 DimArray

TODO: Apply custom function (i.e. normalization) to grouped output.

- + \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 2005c2bcd..bb0366965 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"api_dimensions.md":"BdeTmDqi","api_lookuparrays.md":"CXdh9f-q","api_reference.md":"BrbldTqp","basics.md":"DvNeQ43N","broadcasts.md":"DUhrmJhF","cuda.md":"BXQXZlS4","dimarrays.md":"u5JBFfPL","dimensions.md":"ChH0lYl4","diskarrays.md":"Cfuf4AI0","extending_dd.md":"CvLFMnJ_","get_info.md":"58vnLvH3","groupby.md":"BzT1eUq0","index.md":"C2X_uMqs","integrations.md":"DI7gl9eu","object_modification.md":"DkAIeZDw","plots.md":"oQals6G0","selectors.md":"BjCFWsJn","stacks.md":"CxHR72sg","tables.md":"BlXc5nW9"} +{"api_dimensions.md":"DD3cOSSp","api_lookuparrays.md":"C48veaQd","api_reference.md":"DP_ai0mp","basics.md":"DvSSF084","broadcasts.md":"D98V6alE","cuda.md":"Dq_6ILaQ","dimarrays.md":"DsHVo8VO","dimensions.md":"BZOXPG9N","diskarrays.md":"Ccioefu8","extending_dd.md":"1GiVmXy5","get_info.md":"BbLR9nNK","groupby.md":"BaWubqAT","index.md":"CdZfAwlh","integrations.md":"Dc7kY-MO","object_modification.md":"CITpgP_p","plots.md":"ClRtwxbW","selectors.md":"CPyvJTAL","stacks.md":"BzNwO13T","tables.md":"DMBpxVNO"} diff --git a/dev/index.html b/dev/index.html index 80a36e63a..13241f7de 100644 --- a/dev/index.html +++ b/dev/index.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -22,7 +22,7 @@
Skip to content

DimensionalData.jl

Julia datasets with named dimensions

High performance named indexing for Julia

- + \ No newline at end of file diff --git a/dev/integrations.html b/dev/integrations.html index a2bef87ee..3573d00e1 100644 --- a/dev/integrations.html +++ b/dev/integrations.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -22,7 +22,7 @@
Skip to content

Integrations

Rasters.jl

Rasters.jl extends DimensionalData for geospatial data manipulation, providing file load/save capabilities for a wide range of raster data sources and common GIS tools like polygon rasterization and masking. Raster types are aware of their crs and their missingval (which is often not missing for performance and storage reasons).

Rasters.jl is also the reason DimensionalData.jl exists at all! But it always made sense to separate out spatial indexing from GIS tools and dependencies.

A Raster is a AbstractDimArray, a RasterStack is a AbstractDimStack, and Projected and Mapped are AbstractSampled lookups.

YAXArrays.jl

YAXArrays.jl is another spatial data package aimed more at (very) large datasets. Its functionality is slowly converging with Rasters.jl (both wrapping DiskArrays.jl/DimensionalData.jl) and we work closely with the developers.

YAXArray is a AbstractDimArray and inherits its behaviours.

ClimateBase.jl

ClimateBase.jl Extends DimensionalData.jl with methods for analysis of climate data.

ArviZ.jl

ArviZ.jl Is a Julia package for exploratory analysis of Bayesian models.

An ArviZ.Dataset is an AbstractDimStack!

JuMP.jl

JuMP.jl is a powerful optimization DSL. It defines its own named array types but now accepts any AbstractDimArray too, through a package extension.

CryoGrid.jl

CryoGrid.jl A Julia implementation of the CryoGrid permafrost model.

CryoGridOutput uses DimArray for views into output data.

DynamicGrids.jl

DynamicGrids.jl is a spatial simulation engine, for cellular automata and spatial process models.

All DynamicGrids.jl Outputs are <: AbstractDimArray, and AbstractDimArray are used for auxiliary data to allow temporal synchronisation during simulations. Notably, this all works on GPUs!

AstroImages.jl

AstroImages.jl Provides tools to load and visualise astronomical images. AstroImage is <: AbstractDimArray.

TimeseriesTools.jl

TimeseriesTools.jl Uses DimArray for time-series data.

- + \ No newline at end of file diff --git a/dev/object_modification.html b/dev/object_modification.html index fbdf38abe..f58e89888 100644 --- a/dev/object_modification.html +++ b/dev/object_modification.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -21,7 +21,7 @@ -
Skip to content

Modifying Objects

DimensionalData.jl objects are all struct rather than mutable struct. The only things you can modify in-place are the values of the contained arrays or metadata Dicts if they exist.

Everything else must be rebuilt and assigned to a variable.

modify

Modify the inner arrays of a AbstractDimArray or AbstractDimStack, with modify. This can be useful to e.g. replace all arrays with CuArray moving the data to the GPU, collect all inner arrays to Array without losing the outer DimArray wrappers, and similar things.

julia
julia> using DimensionalData
+    
Skip to content

Modifying Objects

DimensionalData.jl objects are all struct rather than mutable struct. The only things you can modify in-place are the values of the contained arrays or metadata Dicts if they exist.

Everything else must be rebuilt and assigned to a variable.

modify

Modify the inner arrays of a AbstractDimArray or AbstractDimStack, with modify. This can be useful to e.g. replace all arrays with CuArray moving the data to the GPU, collect all inner arrays to Array without losing the outer DimArray wrappers, and similar things.

julia
julia> using DimensionalData
 
 julia> A = falses(X(3), Y(5))
╭───────────────────────╮
 3×5 DimArray{Bool, 2}
@@ -43,7 +43,7 @@
  0  0  0  0  0
julia
julia> parent(A_mod)
3×5 Matrix{Bool}:
  0  0  0  0  0
  0  0  0  0  0
- 0  0  0  0  0

reorder

reorder is like reverse but declarative, rather than imperative: we tell it how we want the object to be, not what to do.

Reorder a specific dimension

julia
julia> using DimensionalData.Lookups;
+ 0  0  0  0  0

reorder

reorder is like reverse but declarative, rather than imperative: we tell it how we want the object to be, not what to do.

Reorder a specific dimension

julia
julia> using DimensionalData.Lookups;
 
 julia> A = rand(X(1.0:3.0), Y('a':'n'));
 
@@ -56,7 +56,7 @@
    'a'       'b'        'c''l'       'm'       'n'
  3.0  0.884218  0.686915   0.208271     0.744517  0.487197  0.86789
  2.0  0.903705  0.0915867  0.247032     0.824556  0.298728  0.933212
- 1.0  0.159092  0.193627   0.317813     0.474755  0.474052  0.364844

mergedims

mergedims is like reshape, but simultaneously merges multiple dimensions into a single combined dimension with a lookup holding Tuples of the values of both dimensions.

rebuild

rebuild is one of the core functions of DimensionalData.jl. Basically everything uses it somewhere. And you can too, with a few caveats.

Warning

rebuild assumes you know what you are doing. You can quite easily set values to things that don't make sense. The constructor may check a few things, like the number of dimensions matches the axes of the array. But not much else.

julia
julia> A1 = rebuild(A; name=:my_array)
╭────────────────────────────────────╮
+ 1.0  0.159092  0.193627   0.317813     0.474755  0.474052  0.364844

mergedims

mergedims is like reshape, but simultaneously merges multiple dimensions into a single combined dimension with a lookup holding Tuples of the values of both dimensions.

rebuild

rebuild is one of the core functions of DimensionalData.jl. Basically everything uses it somewhere. And you can too, with a few caveats.

Warning

rebuild assumes you know what you are doing. You can quite easily set values to things that don't make sense. The constructor may check a few things, like the number of dimensions matches the axes of the array. But not much else.

julia
julia> A1 = rebuild(A; name=:my_array)
╭────────────────────────────────────╮
 3×14 DimArray{Float64, 2} my_array
 ├────────────────────────────────────┴─────────────────────────────────── dims ┐
 X Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
@@ -65,7 +65,7 @@
    'a'       'b'        'c''l'       'm'       'n'
  1.0  0.159092  0.193627   0.317813     0.474755  0.474052  0.364844
  2.0  0.903705  0.0915867  0.247032     0.824556  0.298728  0.933212
- 3.0  0.884218  0.686915   0.208271     0.744517  0.487197  0.86789
julia
julia> name(A1)
:my_array

The most common use internally is the arg version on Dimension. This is very useful in dimension-based algorithms as a way to transform a dimension wrapper from one object to another:

julia
julia> d = X(1)
X 1
julia
julia> rebuild(d, 1:10)
X 1:10

rebuild applications are listed here. AbstractDimArray and AbstractDimStack always accept these keywords or arguments, but those in [ ] brackets may be thrown away if not needed. Keywords in ( ) will error if used where they are not accepted.

TypeKeywordsArguments
AbstractDimArraydata, dims, [refdims, name, metadata]as with kw, in order
AbstractDimStackdata, dims, [refdims], layerdims, [metadata, layermetadata]as with kw, in order
Dimensionvalval
Selectorval, (atol)val
Lookupdata, (order, span, sampling, metadata)keywords only

rebuild magic

rebuild with keywords will even work on objects DD doesn't know about!

julia
julia> nt = (a = 1, b = 2)
(a = 1, b = 2)
julia
julia> rebuild(nt, a = 99)
(a = 99, b = 2)

Really, the keyword version is just ConstructionBase.setproperties underneath, but wrapped so objects can customise the DD interface without changing the more generic ConstructionBase.jl behaviours and breaking e.g. Accessors.jl in the process.

set

set gives us a way to set the values of the immutable objects in DD, like Dimension and LookupArray. Unlike rebuild it tries its best to do the right thing. You don't have to specify what field you want to set. Just pass in the object you want to be part of the lookup. Usually, there is no possible ambiguity.

set is still improving. Sometimes it may not do the right thing. If you think this is the case, create a GitHub issue.

julia
julia> set(A, Y => Z)
╭───────────────────────────╮
+ 3.0  0.884218  0.686915   0.208271     0.744517  0.487197  0.86789
julia
julia> name(A1)
:my_array

The most common use internally is the arg version on Dimension. This is very useful in dimension-based algorithms as a way to transform a dimension wrapper from one object to another:

julia
julia> d = X(1)
X 1
julia
julia> rebuild(d, 1:10)
X 1:10

rebuild applications are listed here. AbstractDimArray and AbstractDimStack always accept these keywords or arguments, but those in [ ] brackets may be thrown away if not needed. Keywords in ( ) will error if used where they are not accepted.

TypeKeywordsArguments
AbstractDimArraydata, dims, [refdims, name, metadata]as with kw, in order
AbstractDimStackdata, dims, [refdims], layerdims, [metadata, layermetadata]as with kw, in order
Dimensionvalval
Selectorval, (atol)val
Lookupdata, (order, span, sampling, metadata)keywords only

rebuild magic

rebuild with keywords will even work on objects DD doesn't know about!

julia
julia> nt = (a = 1, b = 2)
(a = 1, b = 2)
julia
julia> rebuild(nt, a = 99)
(a = 99, b = 2)

Really, the keyword version is just ConstructionBase.setproperties underneath, but wrapped so objects can customise the DD interface without changing the more generic ConstructionBase.jl behaviours and breaking e.g. Accessors.jl in the process.

set

set gives us a way to set the values of the immutable objects in DD, like Dimension and LookupArray. Unlike rebuild it tries its best to do the right thing. You don't have to specify what field you want to set. Just pass in the object you want to be part of the lookup. Usually, there is no possible ambiguity.

set is still improving. Sometimes it may not do the right thing. If you think this is the case, create a GitHub issue.

julia
julia> set(A, Y => Z)
╭───────────────────────────╮
 3×14 DimArray{Float64, 2}
 ├───────────────────────────┴──────────────────────────────────────────── dims ┐
 X Sampled{Float64} 1.0:1.0:3.0 ForwardOrdered Regular Points,
@@ -75,7 +75,7 @@
  1.0  0.159092  0.193627   0.317813     0.474755  0.474052  0.364844
  2.0  0.903705  0.0915867  0.247032     0.824556  0.298728  0.933212
  3.0  0.884218  0.686915   0.208271     0.744517  0.487197  0.86789
- + \ No newline at end of file diff --git a/dev/plots.html b/dev/plots.html index 00b497e71..c073eb5d0 100644 --- a/dev/plots.html +++ b/dev/plots.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -33,7 +33,7 @@ data(ds) * mapping(X, :data; color = :color, layout = Y => nonnumeric) * visual(Lines) |> draw

Note

If you wish to subset your DimArray, you can't pass selectors like X(1 .. 2) to AlgebraOfGraphics. Instead, subset the DimArray you pass to data - this is a very cheap operation.

Test series plots

default colormap

julia
B = rand(X(10:10:100), Y([:a, :b, :c, :d, :e, :f, :g, :h, :i, :j]))
 Makie.series(B)

A different colormap

The colormap is controlled by the color argument, which can take as an input a named colormap, i.e. :plasma or a list of colours.

julia
Makie.series(B; color=:plasma)

julia
Makie.series(A; color=[:red, :blue, :orange])

with markers

julia
Makie.series(A; color=[:red, :blue, :orange], markersize=15)

A lot more is planned for Makie.jl plots in future!

- + \ No newline at end of file diff --git a/dev/selectors.html b/dev/selectors.html index 23175c296..0e16ebc62 100644 --- a/dev/selectors.html +++ b/dev/selectors.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -33,7 +33,7 @@ 1.4 0.184738 0.226064 0.869012 1.6 0.772277 0.764895 0.101231 1.8 0.711133 0.86273 0.239921 - 2.0 0.883222 0.748041 0.511313

Then we can use the Selector to select values from the array:

The At(x) selector gets the index or indices exactly matching the passed in value(s).

julia
julia> A[X=At(1.2), Y=At(:c)]
0.7684883626668314

Or within a tolerance:

julia
julia> A[X=At(0.99:0.201:1.5; atol=0.05)]
╭──────────────────────────╮
+ 2.0  0.883222  0.748041  0.511313

Then we can use the Selector to select values from the array:

The At(x) selector gets the index or indices exactly matching the passed in value(s).

julia
julia> A[X=At(1.2), Y=At(:c)]
0.7684883626668314

Or within a tolerance:

julia
julia> A[X=At(0.99:0.201:1.5; atol=0.05)]
╭──────────────────────────╮
 3×3 DimArray{Float64, 2}
 ├──────────────────────────┴───────────────────────────────────────────── dims ┐
 X Sampled{Float64} [1.0, 1.2, 1.4] ForwardOrdered Irregular Points,
@@ -50,7 +50,7 @@
 └──────────────────────────────────────────────────────────────────────────────┘
    :a        :c
  1.2  0.444305  0.768488
- 1.4  0.184738  0.869012

Lookups

Selectors find indices in the Lookup of each dimension. Lookups wrap other AbstractArray (often AbstractRange) but add additional traits to facilitate fast lookups or specifying point or interval behaviour. These are usually detected automatically.

julia
using DimensionalData.Lookups

The Sampled(x) lookup holds values sampled along an axis. They may be Ordered/Unordered, Intervals/Points, and Regular/Irregular.

Most of these properties are usually detected automatically, but here we create a Sampled lookup manually:

julia
julia> l = Sampled(10.0:10.0:100.0; order=ForwardOrdered(), span=Regular(10.0), sampling=Intervals(Start()))
Sampled{Float64} ForwardOrdered Regular Intervals{Start}
+ 1.4  0.184738  0.869012

Lookups

Selectors find indices in the Lookup of each dimension. Lookups wrap other AbstractArray (often AbstractRange) but add additional traits to facilitate fast lookups or specifying point or interval behaviour. These are usually detected automatically.

julia
using DimensionalData.Lookups

The Sampled(x) lookup holds values sampled along an axis. They may be Ordered/Unordered, Intervals/Points, and Regular/Irregular.

Most of these properties are usually detected automatically, but here we create a Sampled lookup manually:

julia
julia> l = Sampled(10.0:10.0:100.0; order=ForwardOrdered(), span=Regular(10.0), sampling=Intervals(Start()))
Sampled{Float64} ForwardOrdered Regular Intervals{Start}
 wrapping: 10.0:10.0:100.0

To specify Irregular Intervals, we should include the outer bounds of the lookup, as we can't determine them from the vector.

julia
julia> l = Sampled([13, 8, 5, 3, 2, 1]; order=ForwardOrdered(), span=Irregular(1, 21), sampling=Intervals(Start()))
Sampled{Int64} ForwardOrdered Irregular Intervals{Start}
 wrapping: 6-element Vector{Int64}:
  13
@@ -140,7 +140,7 @@
  1.602   0.827349   0.662227    0.682734    0.432028   0.707314    0.0542529
  1.798   0.192274   0.243368    0.53407     0.513909   0.0154473   0.450775
  1.994   0.846736   0.573469    0.0410007   0.513088   0.221908    0.0135194
- + \ No newline at end of file diff --git a/dev/stacks.html b/dev/stacks.html index d30b847c6..83b6e3aa1 100644 --- a/dev/stacks.html +++ b/dev/stacks.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -88,10 +88,10 @@ :b eltype: Float64 dims: X, Y size: 10×6 └──────────────────────────────────────────────────────────────────────────────┘

Performance

Indexing a stack is fast - indexing a single value and returning a NamedTuple from all layers is usually measured in nanoseconds, and no slower than manually indexing into each parent array directly.

There are some compilation overheads to this though, and stacks with very many layers can take a long time to compile.

julia
julia> using BenchmarkTools
 
-julia> @btime $st[X=1, Y=4]
  4.628 ns (0 allocations: 0 bytes)
-(a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
julia
julia> @btime $st[1, 4]
  4.328 ns (0 allocations: 0 bytes)
+julia> @btime $st[X=1, Y=4]
  4.037 ns (0 allocations: 0 bytes)
+(a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
julia
julia> @btime $st[1, 4]
  4.038 ns (0 allocations: 0 bytes)
 (a = 0.5154448003579335, b = 0.7410056618197303, c = 0.04060837507113502, d = 0.43235163202114113)
- + \ No newline at end of file diff --git a/dev/tables.html b/dev/tables.html index c197440ef..1bf96dae6 100644 --- a/dev/tables.html +++ b/dev/tables.html @@ -9,11 +9,11 @@ - + - - - + + + @@ -25,7 +25,7 @@ using Dates using DataFrames

Define some dimensions:

julia
julia> x, y, c = X(1:10), Y(1:10), Dim{:category}('a':'z')
(X        1:10,
 Y        1:10,
-category 'a':1:'z')
julia
julia> A = rand(x, y, c; name=:data)
╭────────────────────────────────────╮
+category 'a':1:'z')
julia
julia> A = rand(x, y, c; name=:data)
╭────────────────────────────────────╮
 10×10×26 DimArray{Float64, 3} data
 ├────────────────────────────────────┴─────────────────────────────────── dims ┐
 X        Sampled{Int64} 1:10 ForwardOrdered Regular Points,
@@ -42,7 +42,7 @@
   7    0.194849  0.975511  0.612828     0.888721  0.890574   0.436622
   8    0.364097  0.163103  0.142055     0.049689  0.259847   0.570725
   9    0.394448  0.755939  0.54624      0.156388  0.210664   0.966517
- 10    0.828604  0.359421  0.51621   …  0.828161  0.107233   0.74172

Converting to DataFrame

Arrays will have columns for each dimension, and only one data column

julia
julia> DataFrame(A)
2600×4 DataFrame
+ 10    0.828604  0.359421  0.51621   …  0.828161  0.107233   0.74172

Converting to DataFrame

Arrays will have columns for each dimension, and only one data column

julia
julia> DataFrame(A)
2600×4 DataFrame
   Row │ X      Y      category  data
  Int64  Int64  Char      Float64
 ──────┼───────────────────────────────────
@@ -85,7 +85,7 @@
  "8,10,z,0.7044663405368152,0.694278906020718"
  "9,10,z,0.5697400488168892,0.20636222545147498"
  "10,10,z,0.8560905731682101,0.8428656510212863"
- + \ No newline at end of file