From f5add93a6ea6c8e80f12e51eb04b5ef36582ca57 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Mon, 16 Dec 2024 21:49:17 +0000 Subject: [PATCH] build based on bb1dd47 --- previews/PR481/404.html | 4 +- previews/PR481/UserGuide/cache.html | 6 +- previews/PR481/UserGuide/chunk.html | 6 +- previews/PR481/UserGuide/combine.html | 6 +- previews/PR481/UserGuide/compute.html | 10 +- previews/PR481/UserGuide/convert.html | 6 +- previews/PR481/UserGuide/create.html | 6 +- previews/PR481/UserGuide/faq.html | 18 +- previews/PR481/UserGuide/group.html | 10 +- previews/PR481/UserGuide/read.html | 93 ++++++- previews/PR481/UserGuide/select.html | 6 +- previews/PR481/UserGuide/types.html | 6 +- previews/PR481/UserGuide/write.html | 44 ++-- previews/PR481/api.html | 16 +- ...ke.js => UserGuide_compute.md.CWZTpUy8.js} | 2 +- ... => UserGuide_compute.md.CWZTpUy8.lean.js} | 2 +- ...-eNQY1.js => UserGuide_faq.md.BuLJTuK9.js} | 10 +- ...n.js => UserGuide_faq.md.BuLJTuK9.lean.js} | 10 +- ...NYm5.js => UserGuide_group.md.BcDRPBeu.js} | 2 +- ...js => UserGuide_group.md.BcDRPBeu.lean.js} | 2 +- .../assets/UserGuide_read.md.BTfWZ5v4.js | 154 ------------ .../assets/UserGuide_read.md.BTfWZ5v4.lean.js | 154 ------------ .../assets/UserGuide_read.md.BXOmI-6j.js | 229 ++++++++++++++++++ .../assets/UserGuide_read.md.BXOmI-6j.lean.js | 229 ++++++++++++++++++ ...mBBx.js => UserGuide_write.md.mv5yJBqP.js} | 36 +-- ...js => UserGuide_write.md.mv5yJBqP.lean.js} | 36 +-- ...{api.md.lNaPRPE1.js => api.md.powSNzVx.js} | 6 +- ...aPRPE1.lean.js => api.md.powSNzVx.lean.js} | 6 +- .../{app.C6XJ8azz.js => app.Bjz1K9It.js} | 2 +- .../chunks/@localSearchIndexroot.C8t7r5x6.js | 1 + .../chunks/@localSearchIndexroot.CnnmGcC2.js | 1 - ...JcLahT.js => VPLocalSearchBox.DPA6Cfil.js} | 2 +- .../{theme.vl07g5LM.js => theme.CaJ052h0.js} | 4 +- ...ei.B7KFIfDV.jpeg => cyhvrkj.B7KFIfDV.jpeg} | Bin ...> development_contributors.md.B-Ls9c13.js} | 2 +- ...elopment_contributors.md.B-Ls9c13.lean.js} | 2 +- previews/PR481/assets/deycsiw.m9Tg4llE.png | Bin 110641 -> 0 bytes previews/PR481/assets/dzarsbx.C-WFBMfk.png | Bin 0 -> 81291 bytes previews/PR481/assets/frwqpez.D9rvatPm.png | Bin 0 -> 112073 bytes ...BLwRYmKy.js => get_started.md.C4hyZ71i.js} | 20 +- ...ean.js => get_started.md.C4hyZ71i.lean.js} | 20 +- ...ex.md.DzORC5-U.js => index.md.CY7kWBGJ.js} | 2 +- ...C5-U.lean.js => index.md.CY7kWBGJ.lean.js} | 2 +- ...xv.96k_BqPR.jpeg => mbalbzx.96k_BqPR.jpeg} | Bin previews/PR481/assets/nrllxra.Dugsq64i.png | Bin 81850 -> 0 bytes ...mpxn.BJNzQY3Z.png => oowdcxc.BJNzQY3Z.png} | Bin ...qw.CQ9uchq9.jpeg => taklqov.CQ9uchq9.jpeg} | Bin ...orials_mean_seasonal_cycle.md.BuEmiFk0.js} | 40 +-- ...s_mean_seasonal_cycle.md.BuEmiFk0.lean.js} | 40 +-- ... => tutorials_plottingmaps.md.BT-klemp.js} | 2 +- ...utorials_plottingmaps.md.BT-klemp.lean.js} | 2 +- ...hn.DldUI1n7.jpeg => zvezrog.DldUI1n7.jpeg} | Bin previews/PR481/development/contribute.html | 6 +- previews/PR481/development/contributors.html | 8 +- previews/PR481/get_started.html | 28 +-- previews/PR481/hashmap.json | 2 +- previews/PR481/index.html | 10 +- .../PR481/tutorials/mean_seasonal_cycle.html | 50 ++-- previews/PR481/tutorials/other_tutorials.html | 6 +- previews/PR481/tutorials/plottingmaps.html | 14 +- 60 files changed, 803 insertions(+), 578 deletions(-) rename previews/PR481/assets/{UserGuide_compute.md.8aFlrRke.js => UserGuide_compute.md.CWZTpUy8.js} (97%) rename previews/PR481/assets/{UserGuide_compute.md.8aFlrRke.lean.js => UserGuide_compute.md.CWZTpUy8.lean.js} (97%) rename previews/PR481/assets/{UserGuide_faq.md.Do-eNQY1.js => UserGuide_faq.md.BuLJTuK9.js} (99%) rename previews/PR481/assets/{UserGuide_faq.md.Do-eNQY1.lean.js => UserGuide_faq.md.BuLJTuK9.lean.js} (99%) rename previews/PR481/assets/{UserGuide_group.md.CxogNYm5.js => UserGuide_group.md.BcDRPBeu.js} (99%) rename previews/PR481/assets/{UserGuide_group.md.CxogNYm5.lean.js => UserGuide_group.md.BcDRPBeu.lean.js} (99%) delete mode 100644 previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.js delete mode 100644 previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.lean.js create mode 100644 previews/PR481/assets/UserGuide_read.md.BXOmI-6j.js create mode 100644 previews/PR481/assets/UserGuide_read.md.BXOmI-6j.lean.js rename previews/PR481/assets/{UserGuide_write.md.CoRkmBBx.js => UserGuide_write.md.mv5yJBqP.js} (96%) rename previews/PR481/assets/{UserGuide_write.md.CoRkmBBx.lean.js => UserGuide_write.md.mv5yJBqP.lean.js} (96%) rename previews/PR481/assets/{api.md.lNaPRPE1.js => api.md.powSNzVx.js} (92%) rename previews/PR481/assets/{api.md.lNaPRPE1.lean.js => api.md.powSNzVx.lean.js} (92%) rename previews/PR481/assets/{app.C6XJ8azz.js => app.Bjz1K9It.js} (95%) create mode 100644 previews/PR481/assets/chunks/@localSearchIndexroot.C8t7r5x6.js delete mode 100644 previews/PR481/assets/chunks/@localSearchIndexroot.CnnmGcC2.js rename previews/PR481/assets/chunks/{VPLocalSearchBox.DwJcLahT.js => VPLocalSearchBox.DPA6Cfil.js} (99%) rename previews/PR481/assets/chunks/{theme.vl07g5LM.js => theme.CaJ052h0.js} (99%) rename previews/PR481/assets/{ltjmjei.B7KFIfDV.jpeg => cyhvrkj.B7KFIfDV.jpeg} (100%) rename previews/PR481/assets/{development_contributors.md.BPZV1DF3.js => development_contributors.md.B-Ls9c13.js} (98%) rename previews/PR481/assets/{development_contributors.md.BPZV1DF3.lean.js => development_contributors.md.B-Ls9c13.lean.js} (98%) delete mode 100644 previews/PR481/assets/deycsiw.m9Tg4llE.png create mode 100644 previews/PR481/assets/dzarsbx.C-WFBMfk.png create mode 100644 previews/PR481/assets/frwqpez.D9rvatPm.png rename previews/PR481/assets/{get_started.md.BLwRYmKy.js => get_started.md.C4hyZ71i.js} (86%) rename previews/PR481/assets/{get_started.md.BLwRYmKy.lean.js => get_started.md.C4hyZ71i.lean.js} (86%) rename previews/PR481/assets/{index.md.DzORC5-U.js => index.md.CY7kWBGJ.js} (94%) rename previews/PR481/assets/{index.md.DzORC5-U.lean.js => index.md.CY7kWBGJ.lean.js} (94%) rename previews/PR481/assets/{msrdcxv.96k_BqPR.jpeg => mbalbzx.96k_BqPR.jpeg} (100%) delete mode 100644 previews/PR481/assets/nrllxra.Dugsq64i.png rename previews/PR481/assets/{lhmmpxn.BJNzQY3Z.png => oowdcxc.BJNzQY3Z.png} (100%) rename previews/PR481/assets/{poommqw.CQ9uchq9.jpeg => taklqov.CQ9uchq9.jpeg} (100%) rename previews/PR481/assets/{tutorials_mean_seasonal_cycle.md.BS_HoVlU.js => tutorials_mean_seasonal_cycle.md.BuEmiFk0.js} (95%) rename previews/PR481/assets/{tutorials_mean_seasonal_cycle.md.BS_HoVlU.lean.js => tutorials_mean_seasonal_cycle.md.BuEmiFk0.lean.js} (95%) rename previews/PR481/assets/{tutorials_plottingmaps.md.BW7Rdia9.js => tutorials_plottingmaps.md.BT-klemp.js} (99%) rename previews/PR481/assets/{tutorials_plottingmaps.md.BW7Rdia9.lean.js => tutorials_plottingmaps.md.BT-klemp.lean.js} (99%) rename previews/PR481/assets/{utzwahn.DldUI1n7.jpeg => zvezrog.DldUI1n7.jpeg} (100%) diff --git a/previews/PR481/404.html b/previews/PR481/404.html index 7320e86e..5e1b7cd8 100644 --- a/previews/PR481/404.html +++ b/previews/PR481/404.html @@ -9,7 +9,7 @@ - + @@ -19,7 +19,7 @@
- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/cache.html b/previews/PR481/UserGuide/cache.html index 91b5d698..d1da22d4 100644 --- a/previews/PR481/UserGuide/cache.html +++ b/previews/PR481/UserGuide/cache.html @@ -9,9 +9,9 @@ - + - + @@ -26,7 +26,7 @@ cachesize = 500 #MB cache(ds,maxsize = cachesize)

The above will wrap every array in the dataset into its own cache, where the 500MB are distributed equally across datasets. Alternatively individual caches can be applied to single YAXArrays

julia
yax = ds.avariable
 cache(yax,maxsize = 1000)
- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/chunk.html b/previews/PR481/UserGuide/chunk.html index 43f894e0..b17b748d 100644 --- a/previews/PR481/UserGuide/chunk.html +++ b/previews/PR481/UserGuide/chunk.html @@ -9,9 +9,9 @@ - + - + @@ -119,7 +119,7 @@ Variables: x, y, z

Suggestions on how to improve or add to these examples is welcome.

- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/combine.html b/previews/PR481/UserGuide/combine.html index 3cdeb817..b15cfbd8 100644 --- a/previews/PR481/UserGuide/combine.html +++ b/previews/PR481/UserGuide/combine.html @@ -9,9 +9,9 @@ - + - + @@ -49,7 +49,7 @@ ├────────────────────────────────────────────────── loaded lazily ┤ data size: 96.0 bytes └─────────────────────────────────────────────────────────────────┘ - + \ No newline at end of file diff --git a/previews/PR481/UserGuide/compute.html b/previews/PR481/UserGuide/compute.html index 78bb3f61..5fa21fad 100644 --- a/previews/PR481/UserGuide/compute.html +++ b/previews/PR481/UserGuide/compute.html @@ -9,11 +9,11 @@ - + - + - + @@ -42,7 +42,7 @@ :origin => "user guide" ├──────────────────────────────────────────────────────────── loaded in memory ┤ data size: 35.16 KB -└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.799412415821963
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.2651438939533647
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
 ├───────────────────────────────┴──────────────────────────────────────── dims ┐
   ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
   → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
@@ -413,7 +413,7 @@
 mapCube(mymean, a, indims=InDims("time"), outdims=OutDims())

In the last example, mapCube was used to map the mymean function. mapslices is a convenient function that can replace mapCube, where you can omit defining an extra function with the output argument as an input (e.g. mymean). It is possible to simply use mapslice

julia
mapslices(mean  skipmissing, a, dims="time")

It is also possible to distribute easily the workload on a cluster, with little modification to the code. To do so, we use the ClusterManagers package.

julia
using Distributed
 using ClusterManagers
 addprocs(SlurmManager(10))
- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/convert.html b/previews/PR481/UserGuide/convert.html index 7ca795dd..de394a8d 100644 --- a/previews/PR481/UserGuide/convert.html +++ b/previews/PR481/UserGuide/convert.html @@ -9,9 +9,9 @@ - + - + @@ -67,7 +67,7 @@ 3 0.492817 0.718667 0.0702532 0.926096 0.225542 0.100622 4 0.268675 0.0566881 0.916686 0.973332 0.744521 0.052264 5 0.540514 0.215973 0.617023 0.796375 0.13205 0.366625

INFO

At the moment there is no support to save a DimArray directly into disk as a NetCDF or a Zarr file.

- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/create.html b/previews/PR481/UserGuide/create.html index 3617e72a..5495862f 100644 --- a/previews/PR481/UserGuide/create.html +++ b/previews/PR481/UserGuide/create.html @@ -9,9 +9,9 @@ - + - + @@ -69,7 +69,7 @@ a2, a3 Properties: Dict(:origin => "user guide") - + \ No newline at end of file diff --git a/previews/PR481/UserGuide/faq.html b/previews/PR481/UserGuide/faq.html index a21d36c5..7e9f5d29 100644 --- a/previews/PR481/UserGuide/faq.html +++ b/previews/PR481/UserGuide/faq.html @@ -9,11 +9,11 @@ - + - + - + @@ -210,7 +210,7 @@ Additional Axes: (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points) Variables: - latitudes + longitudes Additional Axes: (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points, @@ -221,7 +221,7 @@ Additional Axes: (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points) Variables: - longitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+  latitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
 longitudes_yasxa = readcubedata(ds["longitudes"])
 ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
                              longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
@@ -287,7 +287,7 @@
 fig, ax, obj = heatmap(classes;
     colormap=Makie.Categorical(cgrad([:grey15, :orangered, :snow3])))
 cbar = Colorbar(fig[1,2], obj)
-fig

Now we define the input cubes that will be considered for the iterable table

julia
t = CubeTable(values=ds1, classes=classes)
Datacube iterator with 1 subtables with fields: (:values, :classes, :time, :lon, :lat)
julia
using DataFrames
+fig

Now we define the input cubes that will be considered for the iterable table

julia
t = CubeTable(values=ds1, classes=classes)
Datacube iterator with 1 subtables with fields: (:values, :classes, :time, :lon, :lat)
julia
using DataFrames
 using OnlineStats
 ## visualization of the CubeTable
 c_tbl = DataFrame(t[1])
@@ -348,7 +348,7 @@
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock3
+  Stock1
 
   Additional Axes: 
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
@@ -360,7 +360,7 @@
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock1

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+  Stock3

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
 Shared Axes:
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
@@ -385,7 +385,7 @@
 ├─────────────────────────────────────────────────── loaded in memory ┤
   summarysize: 172.0 bytes
 └─────────────────────────────────────────────────────────────────────┘

WARNING

Note that although their creation is allowed, it is not possible to save these types into Zarr or NetCDF.

- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/group.html b/previews/PR481/UserGuide/group.html index 26dede16..92e58b1f 100644 --- a/previews/PR481/UserGuide/group.html +++ b/previews/PR481/UserGuide/group.html @@ -9,11 +9,11 @@ - + - + - + @@ -228,8 +228,8 @@ colgap!(fig.layout, 5) rowgap!(fig.layout, 5) fig -end

which shows a good agreement with the results first published by Joe Hamman.

- +end

which shows a good agreement with the results first published by Joe Hamman.

+ \ No newline at end of file diff --git a/previews/PR481/UserGuide/read.html b/previews/PR481/UserGuide/read.html index b274eba1..c7023ec8 100644 --- a/previews/PR481/UserGuide/read.html +++ b/previews/PR481/UserGuide/read.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,7 +21,7 @@ -
Skip to content

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+    
Skip to content

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

open_dataset

The usual method for reading any format is using this function. See its docstring for more information.

YAXArrays.Datasets.open_dataset Function
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

Now, let's explore different examples.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
 using Zarr
 path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
 store = zopen(path, consolidated=true)
@@ -58,7 +58,7 @@
   "comment"       => "near-surface (usually, 2 meter) air temperature"
 ├─────────────────────────────────────────────────────────────── loaded lazily ┤
   data size: 69.02 GB
-└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
+└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
 using NetCDF
 using Downloads: download
 
@@ -103,7 +103,7 @@
 [ Info: missing
 [ Info: missing
 [ Info: missing
-[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
+[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
 using ArchGDAL
 using Downloads: download
 
@@ -116,7 +116,7 @@
 Variables: 
 Blue, Green, Red
 
-Properties: Dict{String, Any}("projection" => "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

julia
readcubedata(ds.tos)
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+Properties: Dict{String, Any}("projection" => "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

julia
readcubedata(ds.tos)
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
 ├─────────────────────────────────────────────────┴────────────────────── dims ┐
   ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
   → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
@@ -135,8 +135,83 @@
   "original_name"  => "sosstsst"
 ├──────────────────────────────────────────────────────────── loaded in memory ┤
   data size: 2.8 MB
-└──────────────────────────────────────────────────────────────────────────────┘

Note how the loading status changes from loaded lazily to loaded in memory.

- +└──────────────────────────────────────────────────────────────────────────────┘

Note how the loading status changes from loaded lazily to loaded in memory.

open_mfdataset

There are situations when we would like to open and concatenate a list of dataset paths along a certain dimension. For example, to concatenate a list of NetCDF files along a new time dimension, one can use:

creation of NetCDF files
julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+
+dates_1 = [Date(2020, 1, 1) + Dates.Day(i) for i in 1:3]
+dates_2 = [Date(2020, 1, 4) + Dates.Day(i) for i in 1:3]
+
+a1 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+a2 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+
+a3 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_1)), rand(5, 7, 3))
+a4 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_2)), rand(5, 7, 3))
+
+savecube(a1, "a1.nc")
+savecube(a2, "a2.nc")
+savecube(a3, "a3.nc")
+savecube(a4, "a4.nc")
┌ 5×7×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [2020-01-05, …, 2020-01-07] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 840.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

along a new dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a1.nc", "a2.nc"]
+
+dates_read = [Date(2024, 1, 1) + Dates.Day(i) for i in 1:2]
+ds = open_mfdataset(DD.DimArray(files, YAX.time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

and even opening files along a new Time dimension that already have a time dimension

julia
files = ["a3.nc", "a4.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.Time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-04T00:00:00] ForwardOrdered Irregular Points,
+  ⬔ Time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

Note that opening along a new dimension name without specifying values also works; however, it defaults to 1:length(files) for the dimension values.

julia
files = ["a1.nc", "a2.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.time))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Int64} 1:2 ForwardOrdered Regular Points)
+
+Variables: 
+layer

along a existing dimension

Another use case is when we want to open files along an existing dimension. In this case, open_mfdataset will concatenate the paths along the specified dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a3.nc", "a4.nc"]
+
+ds = open_mfdataset(DD.DimArray(files, YAX.time()))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-07T00:00:00] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

where the contents of the time dimension are the merged values from both files

julia
julia> ds["time"]
time Sampled{DateTime} ForwardOrdered Irregular DimensionalData.Dimensions.Lookups.Points
+wrapping: 6-element Vector{DateTime}:
+ 2020-01-02T00:00:00
+ 2020-01-03T00:00:00
+ 2020-01-04T00:00:00
+ 2020-01-05T00:00:00
+ 2020-01-06T00:00:00
+ 2020-01-07T00:00:00

providing us with a wide range of options to work with.

+ \ No newline at end of file diff --git a/previews/PR481/UserGuide/select.html b/previews/PR481/UserGuide/select.html index 7c64ed56..01741677 100644 --- a/previews/PR481/UserGuide/select.html +++ b/previews/PR481/UserGuide/select.html @@ -9,9 +9,9 @@ - + - + @@ -297,7 +297,7 @@ 89.5 89.5

These values are defined as lookups in the package DimensionalData:

julia
lookup(tos, :lon)
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
 wrapping: 1.0:2.0:359.0

which is equivalent to:

julia
tos.lon.val
Sampled{Float64} ForwardOrdered Regular DimensionalData.Dimensions.Lookups.Points
 wrapping: 1.0:2.0:359.0
- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/types.html b/previews/PR481/UserGuide/types.html index ac3ac06a..03561b45 100644 --- a/previews/PR481/UserGuide/types.html +++ b/previews/PR481/UserGuide/types.html @@ -9,9 +9,9 @@ - + - + @@ -23,7 +23,7 @@
Skip to content

Types

This section describes the data structures used to work with n-dimensional arrays in YAXArrays.

YAXArray

An Array stores a sequence of ordered elements of the same type usually across multiple dimensions or axes. For example, one can measure temperature across all time points of the time dimension or brightness values of a picture across X and Y dimensions. A one dimensional array is called Vector and a two dimensional array is called a Matrix. In many Machine Learning libraries, arrays are also called tensors. Arrays are designed to store dense spatial-temporal data stored in a grid, whereas a collection of sparse points is usually stored in data frames or relational databases.

A DimArray as defined by DimensionalData.jl adds names to the dimensions and their axes ticks for a given Array. These names can be used to access the data, e.g., by date instead of just by integer position.

A YAXArray is a subtype of a AbstractDimArray and adds functions to load and process the named arrays. For example, it can also handle very large arrays stored on disk that are too big to fit in memory. In addition, it provides functions for parallel computation.

Dataset

A Dataset is an ordered dictionary of YAXArrays that usually share dimensions. For example, it can bundle arrays storing temperature and precipitation that are measured at the same time points and the same locations. One also can store a picture in a Dataset with three arrays containing brightness values for red green and blue, respectively. Internally, those arrays are still separated allowing to chose different element types for each array. Analog to the (NetCDF Data Model)[https://docs.unidata.ucar.edu/netcdf-c/current/netcdf_data_model.html], a Dataset usually represents variables belonging to the same group.

(Data) Cube

A (Data) Cube is just a YAXArray in which arrays from a dataset are combined together by introducing a new dimension containing labels of which array the corresponding element came from. Unlike a Dataset, all arrays must have the same element type to be converted into a cube. This data structure is useful when we want to use all variables at once. For example, the arrays temperature and precipitation which are measured at the same locations and dates can be combined into a single cube. A more formal definition of Data Cubes are given in Mahecha et al. 2020

Dimensions

A Dimension or axis as defined by DimensionalData.jl adds tick labels, e.g., to each row or column of an array. It's name is used to access particular subsets of that array.

Lon, Lat, time

For convenience, several Dimensions have been defined in YAXArrays.jl, but only a few have been exported. The remaining dimensions can be used by calling them explicitly. See the next table for an overview

Dimensionexportedusage: using YAXArrays: YAXArrays as YAX
lonlon or YAX.lon
LonLon or YAX.Lon
longitudelongitude or YAX.longitude
LongitudeLongitude or YAX.Longitude
latlat or YAX.lat
LatLat or YAX.Lat
latitudelatitude or YAX.latitude
LatitudeLatitude or YAX.Latitude
timeYAX.time
TimeYAX.Time
rlatYAX.rlat
rlonYAX.rlon
lat_cYAX.lat_c
lon_cYAX.lon_c
heightYAX.height
depthYAX.depth
VariablesVariables or YAX.Variables

INFO

If the dimension you are looking for is not in that table, you can define your own by doing

julia
using DimensionalData: @dim, XDim # If you want it to be a subtype of XDim
 @dim newDim XDim "Your newDim label"

Sometimes, when you want to operate on a specific dimension in your dataset (for example, a dimension named date), then doing

julia
groupby(ds, Dim{:date} => seasons())

should do the job.

- + \ No newline at end of file diff --git a/previews/PR481/UserGuide/write.html b/previews/PR481/UserGuide/write.html index 8e3c47d1..4568f231 100644 --- a/previews/PR481/UserGuide/write.html +++ b/previews/PR481/UserGuide/write.html @@ -9,11 +9,11 @@ - + - + - + @@ -43,25 +43,25 @@ savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

netcdf compression

Save a dataset to NetCDF format with compression:

julia
n = 7 # compression level, number between 0 (no compression) and 9 (max compression)
 savedataset(ds, path="ds_c.nc", driver=:netcdf, compress=n)

Comparing it to the default saved file

julia
ds_info = stat("ds.nc")
 ds_c_info = stat("ds_c.nc")
-println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

YAXArrays.Datasets.savedataset Function
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

YAXArrays.Datasets.savedataset Function
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
 savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
 Shared Axes:
 None
 Variables with additional axes:
   Additional Axes: 
-  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
-Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
-Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
-  Variables: 
-  z
-
-  Additional Axes: 
   (lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
 lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
 time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
   Variables: 
   tos
 
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
+  Variables: 
+  z
+
 Properties: Dict{String, Any}("cmor_version" => 0.96, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "Conventions" => "CF-1.0", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Save Skeleton

Sometimes one merely wants to create a datacube "Skeleton" on disk and gradually fill it with data. Here we make use of FillArrays to create a YAXArray and write only the axis data and array metadata to disk, while no actual array data is copied:

julia
using YAXArrays, Zarr, FillArrays

create the Zeros array

julia
julia> a = YAXArray(Zeros(Union{Missing, Float32},  5, 4, 5))
5×4×5 YAXArray{Union{Missing, Float32}, 3}
 ├────────────────────────────────────────────┴─────────────────────────── dims ┐
 Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
@@ -80,19 +80,19 @@
 Variables: 
 skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
 ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
- 0.558193  0.62639    0.860688  0.363668
- 0.414006  0.66729    0.125769  0.00277787
- 0.891257  0.0887544  0.630526  0.782494
- 0.948244  0.195437   0.102333  0.669125
- 0.102816  0.781572   0.527401  0.719692

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
 ds_array = ds_open["skeleton"]
 ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
- 0.558193  0.62639    0.860688  0.363668
- 0.414006  0.66729    0.125769  0.00277787
- 0.891257  0.0887544  0.630526  0.782494
- 0.948244  0.195437   0.102333  0.669125
- 0.102816  0.781572   0.527401  0.719692

indeed, those entries had been updated.

- + 0.746259 0.259455 0.831968 0.275265 + 0.547738 0.35762 0.158741 0.991508 + 0.716952 0.95965 0.599987 0.337016 + 0.506947 0.923876 0.0940127 0.54942 + 0.847062 0.298617 0.182371 0.921

indeed, those entries had been updated.

+ \ No newline at end of file diff --git a/previews/PR481/api.html b/previews/PR481/api.html index 651927f8..d04f2ead 100644 --- a/previews/PR481/api.html +++ b/previews/PR481/api.html @@ -9,11 +9,11 @@ - + - + - + @@ -21,13 +21,13 @@ -
Skip to content

API Reference

This section describes all available functions of this package.

Public API

YAXArrays.getAxis Method
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

YAXArrays.Cubes Module

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source

YAXArrays.Cubes.YAXArray Type
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source

YAXArrays.Cubes.caxes Function

Returns the axes of a Cube

source

YAXArrays.Cubes.caxes Method
julia
caxes

Embeds Cube inside a new Cube

source

YAXArrays.Cubes.concatenatecubes Method
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

YAXArrays.Cubes.readcubedata Method
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

YAXArrays.Cubes.setchunks Method
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

YAXArrays.Cubes.subsetcube Function

This function calculates a subset of a cube's data

source

YAXArrays.DAT.InDims Type
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source

YAXArrays.DAT.MovingWindow Type
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

YAXArrays.DAT.OutDims Method
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source

YAXArrays.DAT.CubeTable Method
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

YAXArrays.DAT.cubefittable Method
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

YAXArrays.DAT.fittable Method
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

YAXArrays.DAT.mapCube Method
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

YAXArrays.DAT.mapCube Method
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" or max_cache=1GB defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

YAXArrays.Datasets.Dataset Type

Dataset object which stores an OrderedDict of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source

YAXArrays.Datasets.Dataset Method
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

YAXArrays.Datasets.Cube Method
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

YAXArrays.Datasets.open_dataset Method
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

YAXArrays.Datasets.open_mfdataset Method
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
+    
Skip to content

API Reference

This section describes all available functions of this package.

Public API

YAXArrays.getAxis Method
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

YAXArrays.Cubes Module

The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that

source

YAXArrays.Cubes.YAXArray Type
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source

YAXArrays.Cubes.caxes Function

Returns the axes of a Cube

source

YAXArrays.Cubes.caxes Method
julia
caxes

Embeds Cube inside a new Cube

source

YAXArrays.Cubes.concatenatecubes Method
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

YAXArrays.Cubes.readcubedata Method
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

YAXArrays.Cubes.setchunks Method
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

YAXArrays.Cubes.subsetcube Function

This function calculates a subset of a cube's data

source

YAXArrays.DAT.InDims Type
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source

YAXArrays.DAT.MovingWindow Type
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

YAXArrays.DAT.OutDims Method
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source

YAXArrays.DAT.CubeTable Method
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

YAXArrays.DAT.cubefittable Method
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

YAXArrays.DAT.fittable Method
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

YAXArrays.DAT.mapCube Method
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

YAXArrays.DAT.mapCube Method
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" or max_cache=1GB defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

YAXArrays.Datasets.Dataset Type

Dataset object which stores an OrderedDict of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.

source

YAXArrays.Datasets.Dataset Method
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

YAXArrays.Datasets.Cube Method
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

YAXArrays.Datasets.open_dataset Method
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

YAXArrays.Datasets.open_mfdataset Method
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
 open_mfdataset(DD.DimArray(files, YAX.time()))

alternatively, if the dimension to concatenate along does not exist yet, the dimension provided in the input arg is used:

julia
files = ["a.nc", "b.nc", "c.nc"]
-open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

YAXArrays.Datasets.savecube Method
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source

YAXArrays.Datasets.savedataset Method
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

YAXArrays.Datasets.to_dataset Method
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

Internal API

YAXArrays.YAXDefaults Constant

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source

YAXArrays.findAxis Method
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

YAXArrays.getOutAxis Method
julia
getOutAxis

source

YAXArrays.get_descriptor Method
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

YAXArrays.match_axis Method
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

YAXArrays.Datasets.savecube Method
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source

YAXArrays.Datasets.savedataset Method
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

YAXArrays.Datasets.to_dataset Method
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

Internal API

YAXArrays.YAXDefaults Constant

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source

YAXArrays.findAxis Method
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

YAXArrays.getOutAxis Method
julia
getOutAxis

source

YAXArrays.get_descriptor Method
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

YAXArrays.match_axis Method
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
 This is used to find different axes and to make certain axis description the same.
-For example to disregard differences of captialisation.

source

YAXArrays.Cubes.CleanMe Type
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

YAXArrays.Cubes.clean Method
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

YAXArrays.Cubes.copydata Method
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

YAXArrays.Cubes.optifunc Method
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

YAXArrays.DAT.DATConfig Type

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::NTuple{NIN, YAXArrays.DAT.InputCube} where NIN: The input data cubes

  • outcubes::NTuple{NOUT, YAXArrays.DAT.OutputCube} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source

YAXArrays.DAT.InputCube Type

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source

YAXArrays.DAT.OutputCube Type

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source

YAXArrays.DAT.YAXColumn Type
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source

YAXArrays.DAT.cmpcachmisses Method

Function that compares two cache miss specifiers by their importance

source

YAXArrays.DAT.getFrontPerm Method

Calculate an axis permutation that brings the wanted dimensions to the front

source

YAXArrays.DAT.getLoopCacheSize Method

Calculate optimal Cache size to DAT operation

source

YAXArrays.DAT.getOuttype Method
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

YAXArrays.DAT.getloopchunks Method
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
-This computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

YAXArrays.DAT.permuteloopaxes Method
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

YAXArrays.Cubes.setchunks Method
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

YAXArrays.Datasets.collectfromhandle Method

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source

YAXArrays.Datasets.createdataset Method
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source

YAXArrays.Datasets.getarrayinfo Method

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source

YAXArrays.Datasets.testrange Method

Test if data in x can be approximated by a step range

source

- +For example to disregard differences of captialisation.

source

YAXArrays.Cubes.CleanMe Type
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

YAXArrays.Cubes.clean Method
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

YAXArrays.Cubes.copydata Method
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

YAXArrays.Cubes.optifunc Method
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

YAXArrays.DAT.DATConfig Type

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::NTuple{NIN, YAXArrays.DAT.InputCube} where NIN: The input data cubes

  • outcubes::NTuple{NOUT, YAXArrays.DAT.OutputCube} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source

YAXArrays.DAT.InputCube Type

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source

YAXArrays.DAT.OutputCube Type

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source

YAXArrays.DAT.YAXColumn Type
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source

YAXArrays.DAT.cmpcachmisses Method

Function that compares two cache miss specifiers by their importance

source

YAXArrays.DAT.getFrontPerm Method

Calculate an axis permutation that brings the wanted dimensions to the front

source

YAXArrays.DAT.getLoopCacheSize Method

Calculate optimal Cache size to DAT operation

source

YAXArrays.DAT.getOuttype Method
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

YAXArrays.DAT.getloopchunks Method
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.
+This computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

YAXArrays.DAT.permuteloopaxes Method
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

YAXArrays.Cubes.setchunks Method
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

YAXArrays.Datasets.collectfromhandle Method

Extracts a YAXArray from a dataset handle that was just created from a arrayinfo

source

YAXArrays.Datasets.createdataset Method
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source

YAXArrays.Datasets.getarrayinfo Method

Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair

source

YAXArrays.Datasets.testrange Method

Test if data in x can be approximated by a step range

source

+ \ No newline at end of file diff --git a/previews/PR481/assets/UserGuide_compute.md.8aFlrRke.js b/previews/PR481/assets/UserGuide_compute.md.CWZTpUy8.js similarity index 97% rename from previews/PR481/assets/UserGuide_compute.md.8aFlrRke.js rename to previews/PR481/assets/UserGuide_compute.md.CWZTpUy8.js index 86f51b73..cc40d125 100644 --- a/previews/PR481/assets/UserGuide_compute.md.8aFlrRke.js +++ b/previews/PR481/assets/UserGuide_compute.md.CWZTpUy8.js @@ -19,7 +19,7 @@ import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CmUrV9pg.js";const g :origin => "user guide" ├──────────────────────────────────────────────────────────── loaded in memory ┤ data size: 35.16 KB -└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.799412415821963
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.2651438939533647
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
 ├───────────────────────────────┴──────────────────────────────────────── dims ┐
   ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
   → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
diff --git a/previews/PR481/assets/UserGuide_compute.md.8aFlrRke.lean.js b/previews/PR481/assets/UserGuide_compute.md.CWZTpUy8.lean.js
similarity index 97%
rename from previews/PR481/assets/UserGuide_compute.md.8aFlrRke.lean.js
rename to previews/PR481/assets/UserGuide_compute.md.CWZTpUy8.lean.js
index 86f51b73..cc40d125 100644
--- a/previews/PR481/assets/UserGuide_compute.md.8aFlrRke.lean.js
+++ b/previews/PR481/assets/UserGuide_compute.md.CWZTpUy8.lean.js
@@ -19,7 +19,7 @@ import{_ as i,c as a,a2 as n,o as t}from"./chunks/framework.CmUrV9pg.js";const g
   :origin => "user guide"
 ├──────────────────────────────────────────────────────────── loaded in memory ┤
   data size: 35.16 KB
-└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.799412415821963
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
+└──────────────────────────────────────────────────────────────────────────────┘

Modify elements of a YAXArray

julia
a[1,2,3]
0.2651438939533647
julia
a[1,2,3] = 42
42
julia
a[1,2,3]
42.0

WARNING

Some arrays, e.g. those saved in a cloud object storage are immutable making any modification of the data impossible.

Arithmetics

Add a value to all elements of an array and save it as a new array:

julia
a2 = a .+ 5
┌ 30×10×15 YAXArray{Float64, 3} ┐
 ├───────────────────────────────┴──────────────────────────────────────── dims ┐
   ↓ time Sampled{Date} Date("2022-01-01"):Dates.Day(1):Date("2022-01-30") ForwardOrdered Regular Points,
   → lon  Sampled{Float64} 1.0:1.0:10.0 ForwardOrdered Regular Points,
diff --git a/previews/PR481/assets/UserGuide_faq.md.Do-eNQY1.js b/previews/PR481/assets/UserGuide_faq.md.BuLJTuK9.js
similarity index 99%
rename from previews/PR481/assets/UserGuide_faq.md.Do-eNQY1.js
rename to previews/PR481/assets/UserGuide_faq.md.BuLJTuK9.js
index f511a2f9..7236c8e1 100644
--- a/previews/PR481/assets/UserGuide_faq.md.Do-eNQY1.js
+++ b/previews/PR481/assets/UserGuide_faq.md.BuLJTuK9.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/utzwahn.DldUI1n7.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/zvezrog.DldUI1n7.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
 using DimensionalData
julia
julia> c = YAXArray(rand(10, 10, 5))
10×10×5 YAXArray{Float64, 3}
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
 Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
@@ -187,7 +187,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   Additional Axes: 
   (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
   Variables: 
-  latitudes
+  longitudes
 
   Additional Axes: 
   (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
@@ -198,7 +198,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   Additional Axes: 
   (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
   Variables: 
-  longitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+  latitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
 longitudes_yasxa = readcubedata(ds["longitudes"])
 ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
                              longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
@@ -325,7 +325,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock3
+  Stock1
 
   Additional Axes: 
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
@@ -337,7 +337,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock1

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+  Stock3

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
 Shared Axes:
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
diff --git a/previews/PR481/assets/UserGuide_faq.md.Do-eNQY1.lean.js b/previews/PR481/assets/UserGuide_faq.md.BuLJTuK9.lean.js
similarity index 99%
rename from previews/PR481/assets/UserGuide_faq.md.Do-eNQY1.lean.js
rename to previews/PR481/assets/UserGuide_faq.md.BuLJTuK9.lean.js
index f511a2f9..7236c8e1 100644
--- a/previews/PR481/assets/UserGuide_faq.md.Do-eNQY1.lean.js
+++ b/previews/PR481/assets/UserGuide_faq.md.BuLJTuK9.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/utzwahn.DldUI1n7.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/zvezrog.DldUI1n7.jpeg",o=JSON.parse('{"title":"Frequently Asked Questions (FAQ)","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/faq.md","filePath":"UserGuide/faq.md","lastUpdated":null}'),l={name:"UserGuide/faq.md"};function h(p,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Frequently Asked Questions (FAQ)

The purpose of this section is to do a collection of small convinient pieces of code on how to do simple things.

Extract the axes names from a Cube

julia
using YAXArrays
 using DimensionalData
julia
julia> c = YAXArray(rand(10, 10, 5))
10×10×5 YAXArray{Float64, 3}
 ├──────────────────────────────┴───────────────────────────────────────── dims ┐
 Dim_1 Sampled{Int64} Base.OneTo(10) ForwardOrdered Regular Points,
@@ -187,7 +187,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   Additional Axes: 
   (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
   Variables: 
-  latitudes
+  longitudes
 
   Additional Axes: 
   (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points,
@@ -198,7 +198,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   Additional Axes: 
   (↓ points Sampled{Int64} [2, 4, …, 96, 98] ForwardOrdered Irregular Points)
   Variables: 
-  longitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
+  latitudes

If your dataset has been read from a file with Cube it is not loaded into memory, and you have to load the latitudes and longitudes YAXArrays into memory:

julia
latitudes_yasxa  = readcubedata(ds["latitudes"])
 longitudes_yasxa = readcubedata(ds["longitudes"])
 ds_subset = ds[points = Where(p-> latitudes_yasxa[p]  >= 20 && latitudes_yasxa[p]  <= 80 &&
                              longitudes_yasxa[p] >= 0  && longitudes_yasxa[p] <= 180
@@ -325,7 +325,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock3
+  Stock1
 
   Additional Axes: 
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
@@ -337,7 +337,7 @@ import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
   Variables: 
-  Stock1

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
+  Stock3

and, it looks like there some small differences in the axes, they are being printed independently although they should be the same. Well, they are at least at the == level but not at ===. We could use the axes from one YAXArray as reference and rebuild all the others

julia
yax_list = [rebuild(yax_list[1], values(stocks[k])) for k in d_keys];

and voilà

julia
julia> ds = Dataset(; (d_keys .=> yax_list)...)
YAXArray Dataset
 Shared Axes:
   (time      Sampled{DateTime} [2020-01-01T00:00:00, …, 2020-01-21T19:00:00] ForwardOrdered Irregular Points,
 Variables Categorical{Symbol} [:Open, :High, :Low, :Close, :Volume] Unordered)
diff --git a/previews/PR481/assets/UserGuide_group.md.CxogNYm5.js b/previews/PR481/assets/UserGuide_group.md.BcDRPBeu.js
similarity index 99%
rename from previews/PR481/assets/UserGuide_group.md.CxogNYm5.js
rename to previews/PR481/assets/UserGuide_group.md.BcDRPBeu.js
index a0a2b194..ac89c8c8 100644
--- a/previews/PR481/assets/UserGuide_group.md.CxogNYm5.js
+++ b/previews/PR481/assets/UserGuide_group.md.BcDRPBeu.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/lhmmpxn.BJNzQY3Z.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function p(h,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/oowdcxc.BJNzQY3Z.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function p(h,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
 using YAXArrays: YAXArrays as YAX
 using NetCDF
 using Downloads
diff --git a/previews/PR481/assets/UserGuide_group.md.CxogNYm5.lean.js b/previews/PR481/assets/UserGuide_group.md.BcDRPBeu.lean.js
similarity index 99%
rename from previews/PR481/assets/UserGuide_group.md.CxogNYm5.lean.js
rename to previews/PR481/assets/UserGuide_group.md.BcDRPBeu.lean.js
index a0a2b194..ac89c8c8 100644
--- a/previews/PR481/assets/UserGuide_group.md.CxogNYm5.lean.js
+++ b/previews/PR481/assets/UserGuide_group.md.BcDRPBeu.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/lhmmpxn.BJNzQY3Z.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function p(h,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
+import{_ as i,c as a,a2 as n,o as e}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/oowdcxc.BJNzQY3Z.png",y=JSON.parse('{"title":"Group YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/group.md","filePath":"UserGuide/group.md","lastUpdated":null}'),l={name:"UserGuide/group.md"};function p(h,s,k,d,r,g){return e(),a("div",null,s[0]||(s[0]=[n(`

Group YAXArrays and Datasets

The following examples will use the groupby function to calculate temporal and spatial averages.

julia
using YAXArrays, DimensionalData
 using YAXArrays: YAXArrays as YAX
 using NetCDF
 using Downloads
diff --git a/previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.js b/previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.js
deleted file mode 100644
index 6390215a..00000000
--- a/previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.js
+++ /dev/null
@@ -1,154 +0,0 @@
-import{_ as o,c as r,a2 as d,G as i,w as e,j as s,a,B as l,o as h}from"./chunks/framework.CmUrV9pg.js";const F=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),u={name:"UserGuide/read.md"};function c(k,n,g,m,y,E){const t=l("PluginTabsTab"),p=l("PluginTabs");return h(),r("div",null,[n[3]||(n[3]=d(`

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
-using Zarr
-path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
-store = zopen(path, consolidated=true)
-ds = open_dataset(store)
YAXArray Dataset
-Shared Axes: 
-None
-Variables: 
-height
-
-Variables with additional axes:
-  Additional Axes: 
-  (↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
-  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points)
-  Variables: 
-  tas
-
-Properties: Dict{String, Any}("initialization_index" => 1, "realm" => "atmos", "variable_id" => "tas", "external_variables" => "areacella", "branch_time_in_child" => 60265.0, "data_specs_version" => "01.00.30", "history" => "2019-07-21T06:26:13Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.", "forcing_index" => 1, "parent_variant_label" => "r1i1p1f1", "table_id" => "3hr"…)

We can set path to a URL, a local directory, or in this case to a cloud object storage path.

A zarr store may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tas
┌ 384×192×251288 YAXArray{Float32, 3} ┐
-├─────────────────────────────────────┴────────────────────────────────── dims ┐
-  ↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
-  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points
-├──────────────────────────────────────────────────────────────────── metadata ┤
-  Dict{String, Any} with 10 entries:
-  "units"         => "K"
-  "history"       => "2019-07-21T06:26:13Z altered by CMOR: Treated scalar dime…
-  "name"          => "tas"
-  "cell_methods"  => "area: mean time: point"
-  "cell_measures" => "area: areacella"
-  "long_name"     => "Near-Surface Air Temperature"
-  "coordinates"   => "height"
-  "standard_name" => "air_temperature"
-  "_FillValue"    => 1.0f20
-  "comment"       => "near-surface (usually, 2 meter) air temperature"
-├─────────────────────────────────────────────────────────────── loaded lazily ┤
-  data size: 69.02 GB
-└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
-using NetCDF
-using Downloads: download
-
-path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
-ds = open_dataset(path)
YAXArray Dataset
-Shared Axes: 
-  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
-  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
-
-Variables: 
-tos
-
-Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

A NetCDF file may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
-├─────────────────────────────────────────────────┴────────────────────── dims ┐
-  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
-  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
-├──────────────────────────────────────────────────────────────────── metadata ┤
-  Dict{String, Any} with 10 entries:
-  "units"          => "K"
-  "missing_value"  => 1.0f20
-  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
-  "cell_methods"   => "time: mean (interval: 30 minutes)"
-  "name"           => "tos"
-  "long_name"      => "Sea Surface Temperature"
-  "original_units" => "degC"
-  "standard_name"  => "sea_surface_temperature"
-  "_FillValue"     => 1.0f20
-  "original_name"  => "sosstsst"
-├─────────────────────────────────────────────────────────────── loaded lazily ┤
-  data size: 2.8 MB
-└──────────────────────────────────────────────────────────────────────────────┘

Please note that netCDF4 uses HDF5 which is not thread-safe in Julia. Add manual locks in your own code to avoid any data-race:

julia
my_lock = ReentrantLock()
-Threads.@threads for i in 1:10
-    @lock my_lock @info ds.tos[1, 1, 1]
-end
[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
-using ArchGDAL
-using Downloads: download
-
-path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
-ds = open_dataset(path)
YAXArray Dataset
-Shared Axes: 
-  (↓ X Sampled{Float64} -180.0:0.17578125:179.82421875 ForwardOrdered Regular Points,
-  → Y Sampled{Float64} 90.0:-0.17578125:-89.82421875 ReverseOrdered Regular Points)
-
-Variables: 
-Blue, Green, Red
-
-Properties: Dict{String, Any}("projection" => "GEOGCS[\\"WGS 84\\",DATUM[\\"WGS_1984\\",SPHEROID[\\"WGS 84\\",6378137,298.257223563,AUTHORITY[\\"EPSG\\",\\"7030\\"]],AUTHORITY[\\"EPSG\\",\\"6326\\"]],PRIMEM[\\"Greenwich\\",0,AUTHORITY[\\"EPSG\\",\\"8901\\"]],UNIT[\\"degree\\",0.0174532925199433,AUTHORITY[\\"EPSG\\",\\"9122\\"]],AXIS[\\"Latitude\\",NORTH],AXIS[\\"Longitude\\",EAST],AUTHORITY[\\"EPSG\\",\\"4326\\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

`,28)),i(p,null,{default:e(()=>[i(t,{label:"single variable"},{default:e(()=>n[0]||(n[0]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos)")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` -`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` -`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` -`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` -`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` -`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1}),i(t,{label:"with the `:` operator"},{default:e(()=>n[1]||(n[1]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos[:, :, :]")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` -`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` -`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` -`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` -`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` -`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1),s("p",null,"In this case, you should know in advance how many dimensions there are and how long they are, which shouldn't be hard to determine since this information is already displayed when querying such variables.",-1)])),_:1}),i(t,{label:"Complete Dataset"},{default:e(()=>n[2]||(n[2]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded "),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds)")]),a(` -`),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded["),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tos"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"] "),s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# Load the variable of interest; the loaded status is shown for each variable.")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` -`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` -`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` -`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` -`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` -`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),n[4]||(n[4]=s("p",null,[a("Note how the loading status changes from "),s("code",null,"loaded lazily"),a(" to "),s("code",null,"loaded in memory"),a(".")],-1))])}const b=o(u,[["render",c]]);export{F as __pageData,b as default}; diff --git a/previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.lean.js b/previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.lean.js deleted file mode 100644 index 6390215a..00000000 --- a/previews/PR481/assets/UserGuide_read.md.BTfWZ5v4.lean.js +++ /dev/null @@ -1,154 +0,0 @@ -import{_ as o,c as r,a2 as d,G as i,w as e,j as s,a,B as l,o as h}from"./chunks/framework.CmUrV9pg.js";const F=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),u={name:"UserGuide/read.md"};function c(k,n,g,m,y,E){const t=l("PluginTabsTab"),p=l("PluginTabs");return h(),r("div",null,[n[3]||(n[3]=d(`

Read YAXArrays and Datasets

This section describes how to read files, URLs, and directories into YAXArrays and datasets.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
-using Zarr
-path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
-store = zopen(path, consolidated=true)
-ds = open_dataset(store)
YAXArray Dataset
-Shared Axes: 
-None
-Variables: 
-height
-
-Variables with additional axes:
-  Additional Axes: 
-  (↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
-  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points)
-  Variables: 
-  tas
-
-Properties: Dict{String, Any}("initialization_index" => 1, "realm" => "atmos", "variable_id" => "tas", "external_variables" => "areacella", "branch_time_in_child" => 60265.0, "data_specs_version" => "01.00.30", "history" => "2019-07-21T06:26:13Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.", "forcing_index" => 1, "parent_variant_label" => "r1i1p1f1", "table_id" => "3hr"…)

We can set path to a URL, a local directory, or in this case to a cloud object storage path.

A zarr store may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tas
┌ 384×192×251288 YAXArray{Float32, 3} ┐
-├─────────────────────────────────────┴────────────────────────────────── dims ┐
-  ↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
-  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points
-├──────────────────────────────────────────────────────────────────── metadata ┤
-  Dict{String, Any} with 10 entries:
-  "units"         => "K"
-  "history"       => "2019-07-21T06:26:13Z altered by CMOR: Treated scalar dime…
-  "name"          => "tas"
-  "cell_methods"  => "area: mean time: point"
-  "cell_measures" => "area: areacella"
-  "long_name"     => "Near-Surface Air Temperature"
-  "coordinates"   => "height"
-  "standard_name" => "air_temperature"
-  "_FillValue"    => 1.0f20
-  "comment"       => "near-surface (usually, 2 meter) air temperature"
-├─────────────────────────────────────────────────────────────── loaded lazily ┤
-  data size: 69.02 GB
-└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
-using NetCDF
-using Downloads: download
-
-path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
-ds = open_dataset(path)
YAXArray Dataset
-Shared Axes: 
-  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
-  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
-
-Variables: 
-tos
-
-Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

A NetCDF file may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
-├─────────────────────────────────────────────────┴────────────────────── dims ┐
-  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
-  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
-  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
-├──────────────────────────────────────────────────────────────────── metadata ┤
-  Dict{String, Any} with 10 entries:
-  "units"          => "K"
-  "missing_value"  => 1.0f20
-  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
-  "cell_methods"   => "time: mean (interval: 30 minutes)"
-  "name"           => "tos"
-  "long_name"      => "Sea Surface Temperature"
-  "original_units" => "degC"
-  "standard_name"  => "sea_surface_temperature"
-  "_FillValue"     => 1.0f20
-  "original_name"  => "sosstsst"
-├─────────────────────────────────────────────────────────────── loaded lazily ┤
-  data size: 2.8 MB
-└──────────────────────────────────────────────────────────────────────────────┘

Please note that netCDF4 uses HDF5 which is not thread-safe in Julia. Add manual locks in your own code to avoid any data-race:

julia
my_lock = ReentrantLock()
-Threads.@threads for i in 1:10
-    @lock my_lock @info ds.tos[1, 1, 1]
-end
[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing
-[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
-using ArchGDAL
-using Downloads: download
-
-path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
-ds = open_dataset(path)
YAXArray Dataset
-Shared Axes: 
-  (↓ X Sampled{Float64} -180.0:0.17578125:179.82421875 ForwardOrdered Regular Points,
-  → Y Sampled{Float64} 90.0:-0.17578125:-89.82421875 ReverseOrdered Regular Points)
-
-Variables: 
-Blue, Green, Red
-
-Properties: Dict{String, Any}("projection" => "GEOGCS[\\"WGS 84\\",DATUM[\\"WGS_1984\\",SPHEROID[\\"WGS 84\\",6378137,298.257223563,AUTHORITY[\\"EPSG\\",\\"7030\\"]],AUTHORITY[\\"EPSG\\",\\"6326\\"]],PRIMEM[\\"Greenwich\\",0,AUTHORITY[\\"EPSG\\",\\"8901\\"]],UNIT[\\"degree\\",0.0174532925199433,AUTHORITY[\\"EPSG\\",\\"9122\\"]],AXIS[\\"Latitude\\",NORTH],AXIS[\\"Longitude\\",EAST],AUTHORITY[\\"EPSG\\",\\"4326\\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

`,28)),i(p,null,{default:e(()=>[i(t,{label:"single variable"},{default:e(()=>n[0]||(n[0]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos)")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` -`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` -`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` -`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` -`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` -`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1}),i(t,{label:"with the `:` operator"},{default:e(()=>n[1]||(n[1]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos[:, :, :]")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` -`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` -`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` -`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` -`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` -`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1),s("p",null,"In this case, you should know in advance how many dimensions there are and how long they are, which shouldn't be hard to determine since this information is already displayed when querying such variables.",-1)])),_:1}),i(t,{label:"Complete Dataset"},{default:e(()=>n[2]||(n[2]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded "),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds)")]),a(` -`),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded["),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tos"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"] "),s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# Load the variable of interest; the loaded status is shown for each variable.")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` -`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` -`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` -`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` -`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` -`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` -`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` -`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` -`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` -`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` -`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),n[4]||(n[4]=s("p",null,[a("Note how the loading status changes from "),s("code",null,"loaded lazily"),a(" to "),s("code",null,"loaded in memory"),a(".")],-1))])}const b=o(u,[["render",c]]);export{F as __pageData,b as default}; diff --git a/previews/PR481/assets/UserGuide_read.md.BXOmI-6j.js b/previews/PR481/assets/UserGuide_read.md.BXOmI-6j.js new file mode 100644 index 00000000..5c200205 --- /dev/null +++ b/previews/PR481/assets/UserGuide_read.md.BXOmI-6j.js @@ -0,0 +1,229 @@ +import{_ as d,c as r,j as s,a,G as n,a2 as l,w as e,B as p,o}from"./chunks/framework.CmUrV9pg.js";const A=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),g={name:"UserGuide/read.md"},E={class:"jldocstring custom-block",open:""};function c(u,i,y,F,m,C){const h=p("Badge"),t=p("PluginTabsTab"),k=p("PluginTabs");return o(),r("div",null,[i[6]||(i[6]=s("h1",{id:"Read-YAXArrays-and-Datasets",tabindex:"-1"},[a("Read YAXArrays and Datasets "),s("a",{class:"header-anchor",href:"#Read-YAXArrays-and-Datasets","aria-label":'Permalink to "Read YAXArrays and Datasets {#Read-YAXArrays-and-Datasets}"'},"​")],-1)),i[7]||(i[7]=s("p",null,"This section describes how to read files, URLs, and directories into YAXArrays and datasets.",-1)),i[8]||(i[8]=s("h2",{id:"open-dataset",tabindex:"-1"},[a("open_dataset "),s("a",{class:"header-anchor",href:"#open-dataset","aria-label":'Permalink to "open_dataset"'},"​")],-1)),i[9]||(i[9]=s("p",null,[a("The usual method for reading any format is using this function. See its "),s("code",null,"docstring"),a(" for more information.")],-1)),s("details",E,[s("summary",null,[i[0]||(i[0]=s("a",{id:"YAXArrays.Datasets.open_dataset",href:"#YAXArrays.Datasets.open_dataset"},[s("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),i[1]||(i[1]=a()),n(h,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[2]||(i[2]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),i[10]||(i[10]=l(`

Now, let's explore different examples.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+using Zarr
+path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
+store = zopen(path, consolidated=true)
+ds = open_dataset(store)
YAXArray Dataset
+Shared Axes: 
+None
+Variables: 
+height
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points)
+  Variables: 
+  tas
+
+Properties: Dict{String, Any}("initialization_index" => 1, "realm" => "atmos", "variable_id" => "tas", "external_variables" => "areacella", "branch_time_in_child" => 60265.0, "data_specs_version" => "01.00.30", "history" => "2019-07-21T06:26:13Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.", "forcing_index" => 1, "parent_variant_label" => "r1i1p1f1", "table_id" => "3hr"…)

We can set path to a URL, a local directory, or in this case to a cloud object storage path.

A zarr store may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tas
┌ 384×192×251288 YAXArray{Float32, 3} ┐
+├─────────────────────────────────────┴────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"         => "K"
+  "history"       => "2019-07-21T06:26:13Z altered by CMOR: Treated scalar dime…
+  "name"          => "tas"
+  "cell_methods"  => "area: mean time: point"
+  "cell_measures" => "area: areacella"
+  "long_name"     => "Near-Surface Air Temperature"
+  "coordinates"   => "height"
+  "standard_name" => "air_temperature"
+  "_FillValue"    => 1.0f20
+  "comment"       => "near-surface (usually, 2 meter) air temperature"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 69.02 GB
+└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

A NetCDF file may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Please note that netCDF4 uses HDF5 which is not thread-safe in Julia. Add manual locks in your own code to avoid any data-race:

julia
my_lock = ReentrantLock()
+Threads.@threads for i in 1:10
+    @lock my_lock @info ds.tos[1, 1, 1]
+end
[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
+using ArchGDAL
+using Downloads: download
+
+path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ X Sampled{Float64} -180.0:0.17578125:179.82421875 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 90.0:-0.17578125:-89.82421875 ReverseOrdered Regular Points)
+
+Variables: 
+Blue, Green, Red
+
+Properties: Dict{String, Any}("projection" => "GEOGCS[\\"WGS 84\\",DATUM[\\"WGS_1984\\",SPHEROID[\\"WGS 84\\",6378137,298.257223563,AUTHORITY[\\"EPSG\\",\\"7030\\"]],AUTHORITY[\\"EPSG\\",\\"6326\\"]],PRIMEM[\\"Greenwich\\",0,AUTHORITY[\\"EPSG\\",\\"8901\\"]],UNIT[\\"degree\\",0.0174532925199433,AUTHORITY[\\"EPSG\\",\\"9122\\"]],AXIS[\\"Latitude\\",NORTH],AXIS[\\"Longitude\\",EAST],AUTHORITY[\\"EPSG\\",\\"4326\\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

`,27)),n(k,null,{default:e(()=>[n(t,{label:"single variable"},{default:e(()=>i[3]||(i[3]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos)")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1}),n(t,{label:"with the `:` operator"},{default:e(()=>i[4]||(i[4]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos[:, :, :]")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1),s("p",null,"In this case, you should know in advance how many dimensions there are and how long they are, which shouldn't be hard to determine since this information is already displayed when querying such variables.",-1)])),_:1}),n(t,{label:"Complete Dataset"},{default:e(()=>i[5]||(i[5]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded "),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds)")]),a(` +`),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded["),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tos"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"] "),s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# Load the variable of interest; the loaded status is shown for each variable.")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),i[11]||(i[11]=l(`

Note how the loading status changes from loaded lazily to loaded in memory.

open_mfdataset

There are situations when we would like to open and concatenate a list of dataset paths along a certain dimension. For example, to concatenate a list of NetCDF files along a new time dimension, one can use:

creation of NetCDF files
julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+
+dates_1 = [Date(2020, 1, 1) + Dates.Day(i) for i in 1:3]
+dates_2 = [Date(2020, 1, 4) + Dates.Day(i) for i in 1:3]
+
+a1 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+a2 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+
+a3 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_1)), rand(5, 7, 3))
+a4 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_2)), rand(5, 7, 3))
+
+savecube(a1, "a1.nc")
+savecube(a2, "a2.nc")
+savecube(a3, "a3.nc")
+savecube(a4, "a4.nc")
┌ 5×7×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [2020-01-05, …, 2020-01-07] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 840.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

along a new dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a1.nc", "a2.nc"]
+
+dates_read = [Date(2024, 1, 1) + Dates.Day(i) for i in 1:2]
+ds = open_mfdataset(DD.DimArray(files, YAX.time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

and even opening files along a new Time dimension that already have a time dimension

julia
files = ["a3.nc", "a4.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.Time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-04T00:00:00] ForwardOrdered Irregular Points,
+  ⬔ Time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

Note that opening along a new dimension name without specifying values also works; however, it defaults to 1:length(files) for the dimension values.

julia
files = ["a1.nc", "a2.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.time))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Int64} 1:2 ForwardOrdered Regular Points)
+
+Variables: 
+layer

along a existing dimension

Another use case is when we want to open files along an existing dimension. In this case, open_mfdataset will concatenate the paths along the specified dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a3.nc", "a4.nc"]
+
+ds = open_mfdataset(DD.DimArray(files, YAX.time()))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-07T00:00:00] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

where the contents of the time dimension are the merged values from both files

julia
julia> ds["time"]
time Sampled{DateTime} ForwardOrdered Irregular DimensionalData.Dimensions.Lookups.Points
+wrapping: 6-element Vector{DateTime}:
+ 2020-01-02T00:00:00
+ 2020-01-03T00:00:00
+ 2020-01-04T00:00:00
+ 2020-01-05T00:00:00
+ 2020-01-06T00:00:00
+ 2020-01-07T00:00:00

providing us with a wide range of options to work with.

`,21))])}const D=d(g,[["render",c]]);export{A as __pageData,D as default}; diff --git a/previews/PR481/assets/UserGuide_read.md.BXOmI-6j.lean.js b/previews/PR481/assets/UserGuide_read.md.BXOmI-6j.lean.js new file mode 100644 index 00000000..5c200205 --- /dev/null +++ b/previews/PR481/assets/UserGuide_read.md.BXOmI-6j.lean.js @@ -0,0 +1,229 @@ +import{_ as d,c as r,j as s,a,G as n,a2 as l,w as e,B as p,o}from"./chunks/framework.CmUrV9pg.js";const A=JSON.parse('{"title":"Read YAXArrays and Datasets","description":"","frontmatter":{},"headers":[],"relativePath":"UserGuide/read.md","filePath":"UserGuide/read.md","lastUpdated":null}'),g={name:"UserGuide/read.md"},E={class:"jldocstring custom-block",open:""};function c(u,i,y,F,m,C){const h=p("Badge"),t=p("PluginTabsTab"),k=p("PluginTabs");return o(),r("div",null,[i[6]||(i[6]=s("h1",{id:"Read-YAXArrays-and-Datasets",tabindex:"-1"},[a("Read YAXArrays and Datasets "),s("a",{class:"header-anchor",href:"#Read-YAXArrays-and-Datasets","aria-label":'Permalink to "Read YAXArrays and Datasets {#Read-YAXArrays-and-Datasets}"'},"​")],-1)),i[7]||(i[7]=s("p",null,"This section describes how to read files, URLs, and directories into YAXArrays and datasets.",-1)),i[8]||(i[8]=s("h2",{id:"open-dataset",tabindex:"-1"},[a("open_dataset "),s("a",{class:"header-anchor",href:"#open-dataset","aria-label":'Permalink to "open_dataset"'},"​")],-1)),i[9]||(i[9]=s("p",null,[a("The usual method for reading any format is using this function. See its "),s("code",null,"docstring"),a(" for more information.")],-1)),s("details",E,[s("summary",null,[i[0]||(i[0]=s("a",{id:"YAXArrays.Datasets.open_dataset",href:"#YAXArrays.Datasets.open_dataset"},[s("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),i[1]||(i[1]=a()),n(h,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),i[2]||(i[2]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),i[10]||(i[10]=l(`

Now, let's explore different examples.

Read Zarr

Open a Zarr store as a Dataset:

julia
using YAXArrays
+using Zarr
+path="gs://cmip6/CMIP6/ScenarioMIP/DKRZ/MPI-ESM1-2-HR/ssp585/r1i1p1f1/3hr/tas/gn/v20190710/"
+store = zopen(path, consolidated=true)
+ds = open_dataset(store)
YAXArray Dataset
+Shared Axes: 
+None
+Variables: 
+height
+
+Variables with additional axes:
+  Additional Axes: 
+  (↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points)
+  Variables: 
+  tas
+
+Properties: Dict{String, Any}("initialization_index" => 1, "realm" => "atmos", "variable_id" => "tas", "external_variables" => "areacella", "branch_time_in_child" => 60265.0, "data_specs_version" => "01.00.30", "history" => "2019-07-21T06:26:13Z ; CMOR rewrote data to be consistent with CMIP6, CF-1.7 CMIP-6.2 and CF standards.", "forcing_index" => 1, "parent_variant_label" => "r1i1p1f1", "table_id" => "3hr"…)

We can set path to a URL, a local directory, or in this case to a cloud object storage path.

A zarr store may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tas
┌ 384×192×251288 YAXArray{Float32, 3} ┐
+├─────────────────────────────────────┴────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 0.0:0.9375:359.0625 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} [-89.28422753251364, -88.35700351866494, …, 88.35700351866494, 89.28422753251364] ForwardOrdered Irregular Points,
+  ↗ time Sampled{DateTime} [2015-01-01T03:00:00, …, 2101-01-01T00:00:00] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"         => "K"
+  "history"       => "2019-07-21T06:26:13Z altered by CMOR: Treated scalar dime…
+  "name"          => "tas"
+  "cell_methods"  => "area: mean time: point"
+  "cell_measures" => "area: areacella"
+  "long_name"     => "Near-Surface Air Temperature"
+  "coordinates"   => "height"
+  "standard_name" => "air_temperature"
+  "_FillValue"    => 1.0f20
+  "comment"       => "near-surface (usually, 2 meter) air temperature"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 69.02 GB
+└──────────────────────────────────────────────────────────────────────────────┘

Read NetCDF

Open a NetCDF file as a Dataset:

julia
using YAXArrays
+using NetCDF
+using Downloads: download
+
+path = download("https://www.unidata.ucar.edu/software/netcdf/examples/tos_O1_2001-2002.nc", "example.nc")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
+
+Variables: 
+tos
+
+Properties: Dict{String, Any}("cmor_version" => 0.96f0, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "Conventions" => "CF-1.0", "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

A NetCDF file may contain multiple arrays. Individual arrays can be accessed using subsetting:

julia
ds.tos
┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐
+├─────────────────────────────────────────────────┴────────────────────── dims ┐
+  ↓ lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
+  → lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
+  ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any} with 10 entries:
+  "units"          => "K"
+  "missing_value"  => 1.0f20
+  "history"        => " At   16:37:23 on 01/11/2005: CMOR altered the data in t…
+  "cell_methods"   => "time: mean (interval: 30 minutes)"
+  "name"           => "tos"
+  "long_name"      => "Sea Surface Temperature"
+  "original_units" => "degC"
+  "standard_name"  => "sea_surface_temperature"
+  "_FillValue"     => 1.0f20
+  "original_name"  => "sosstsst"
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 2.8 MB
+└──────────────────────────────────────────────────────────────────────────────┘

Please note that netCDF4 uses HDF5 which is not thread-safe in Julia. Add manual locks in your own code to avoid any data-race:

julia
my_lock = ReentrantLock()
+Threads.@threads for i in 1:10
+    @lock my_lock @info ds.tos[1, 1, 1]
+end
[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing
+[ Info: missing

This code will ensure that the data is only accessed by one thread at a time, i.e. making it actual single-threaded but thread-safe.

Read GDAL (GeoTIFF, GeoJSON)

All GDAL compatible files can be read as a YAXArrays.Dataset after loading ArchGDAL:

julia
using YAXArrays
+using ArchGDAL
+using Downloads: download
+
+path = download("https://github.com/yeesian/ArchGDALDatasets/raw/307f8f0e584a39a050c042849004e6a2bd674f99/gdalworkshop/world.tif", "world.tif")
+ds = open_dataset(path)
YAXArray Dataset
+Shared Axes: 
+  (↓ X Sampled{Float64} -180.0:0.17578125:179.82421875 ForwardOrdered Regular Points,
+  → Y Sampled{Float64} 90.0:-0.17578125:-89.82421875 ReverseOrdered Regular Points)
+
+Variables: 
+Blue, Green, Red
+
+Properties: Dict{String, Any}("projection" => "GEOGCS[\\"WGS 84\\",DATUM[\\"WGS_1984\\",SPHEROID[\\"WGS 84\\",6378137,298.257223563,AUTHORITY[\\"EPSG\\",\\"7030\\"]],AUTHORITY[\\"EPSG\\",\\"6326\\"]],PRIMEM[\\"Greenwich\\",0,AUTHORITY[\\"EPSG\\",\\"8901\\"]],UNIT[\\"degree\\",0.0174532925199433,AUTHORITY[\\"EPSG\\",\\"9122\\"]],AXIS[\\"Latitude\\",NORTH],AXIS[\\"Longitude\\",EAST],AUTHORITY[\\"EPSG\\",\\"4326\\"]]")

Load data into memory

For datasets or variables that could fit in RAM, you might want to load them completely into memory. This can be done using the readcubedata function. As an example, let's use the NetCDF workflow; the same should be true for other cases.

readcubedata

`,27)),n(k,null,{default:e(()=>[n(t,{label:"single variable"},{default:e(()=>i[3]||(i[3]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}},"readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos)")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1}),n(t,{label:"with the `:` operator"},{default:e(()=>i[4]||(i[4]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds"),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"."),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"tos[:, :, :]")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1),s("p",null,"In this case, you should know in advance how many dimensions there are and how long they are, which shouldn't be hard to determine since this information is already displayed when querying such variables.",-1)])),_:1}),n(t,{label:"Complete Dataset"},{default:e(()=>i[5]||(i[5]=[s("div",{class:"language-julia vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"},"julia"),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded "),s("span",{style:{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"}},"="),s("span",{style:{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"}}," readcubedata"),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"(ds)")]),a(` +`),s("span",{class:"line"},[s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"ds_loaded["),s("span",{style:{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"}},'"tos"'),s("span",{style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},"] "),s("span",{style:{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"}},"# Load the variable of interest; the loaded status is shown for each variable.")])])])],-1),s("div",{class:"language- vp-adaptive-theme"},[s("button",{title:"Copy Code",class:"copy"}),s("span",{class:"lang"}),s("pre",{class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",null,"┌ 180×170×24 YAXArray{Union{Missing, Float32}, 3} ┐")]),a(` +`),s("span",{class:"line"},[s("span",null,"├─────────────────────────────────────────────────┴────────────────────── dims ┐")]),a(` +`),s("span",{class:"line"},[s("span",null," ↓ lon Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," → lat Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,")]),a(` +`),s("span",{class:"line"},[s("span",null," ↗ time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points")]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────────────── metadata ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," Dict{String, Any} with 10 entries:")]),a(` +`),s("span",{class:"line"},[s("span",null,' "units" => "K"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "missing_value" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "history" => " At 16:37:23 on 01/11/2005: CMOR altered the data in t…')]),a(` +`),s("span",{class:"line"},[s("span",null,' "cell_methods" => "time: mean (interval: 30 minutes)"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "name" => "tos"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "long_name" => "Sea Surface Temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_units" => "degC"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "standard_name" => "sea_surface_temperature"')]),a(` +`),s("span",{class:"line"},[s("span",null,' "_FillValue" => 1.0f20')]),a(` +`),s("span",{class:"line"},[s("span",null,' "original_name" => "sosstsst"')]),a(` +`),s("span",{class:"line"},[s("span",null,"├──────────────────────────────────────────────────────────── loaded in memory ┤")]),a(` +`),s("span",{class:"line"},[s("span",null," data size: 2.8 MB")]),a(` +`),s("span",{class:"line"},[s("span",null,"└──────────────────────────────────────────────────────────────────────────────┘")])])])],-1)])),_:1})]),_:1}),i[11]||(i[11]=l(`

Note how the loading status changes from loaded lazily to loaded in memory.

open_mfdataset

There are situations when we would like to open and concatenate a list of dataset paths along a certain dimension. For example, to concatenate a list of NetCDF files along a new time dimension, one can use:

creation of NetCDF files
julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+
+dates_1 = [Date(2020, 1, 1) + Dates.Day(i) for i in 1:3]
+dates_2 = [Date(2020, 1, 4) + Dates.Day(i) for i in 1:3]
+
+a1 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+a2 = YAXArray((lon(1:5), lat(1:7)), rand(5, 7))
+
+a3 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_1)), rand(5, 7, 3))
+a4 = YAXArray((lon(1:5), lat(1:7), YAX.time(dates_2)), rand(5, 7, 3))
+
+savecube(a1, "a1.nc")
+savecube(a2, "a2.nc")
+savecube(a3, "a3.nc")
+savecube(a4, "a4.nc")
┌ 5×7×3 YAXArray{Float64, 3} ┐
+├────────────────────────────┴─────────────────────────────────────────── dims ┐
+  ↓ lon  Sampled{Int64} 1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [2020-01-05, …, 2020-01-07] ForwardOrdered Irregular Points
+├──────────────────────────────────────────────────────────────────── metadata ┤
+  Dict{String, Any}()
+├─────────────────────────────────────────────────────────────── loaded lazily ┤
+  data size: 840.0 bytes
+└──────────────────────────────────────────────────────────────────────────────┘

along a new dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a1.nc", "a2.nc"]
+
+dates_read = [Date(2024, 1, 1) + Dates.Day(i) for i in 1:2]
+ds = open_mfdataset(DD.DimArray(files, YAX.time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

and even opening files along a new Time dimension that already have a time dimension

julia
files = ["a3.nc", "a4.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.Time(dates_read)))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-04T00:00:00] ForwardOrdered Irregular Points,
+  ⬔ Time Sampled{Date} [Date("2024-01-02"), Date("2024-01-03")] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

Note that opening along a new dimension name without specifying values also works; however, it defaults to 1:length(files) for the dimension values.

julia
files = ["a1.nc", "a2.nc"]
+ds = open_mfdataset(DD.DimArray(files, YAX.time))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{Int64} 1:2 ForwardOrdered Regular Points)
+
+Variables: 
+layer

along a existing dimension

Another use case is when we want to open files along an existing dimension. In this case, open_mfdataset will concatenate the paths along the specified dimension

julia
using YAXArrays, NetCDF, Dates
+using YAXArrays: YAXArrays as YAX
+import DimensionalData as DD
+
+files = ["a3.nc", "a4.nc"]
+
+ds = open_mfdataset(DD.DimArray(files, YAX.time()))
YAXArray Dataset
+Shared Axes: 
+  (↓ lon  Sampled{Int64} 1:1:5 ForwardOrdered Regular Points,
+  → lat  Sampled{Int64} 1:1:7 ForwardOrdered Regular Points,
+  ↗ time Sampled{DateTime} [2020-01-02T00:00:00, …, 2020-01-07T00:00:00] ForwardOrdered Irregular Points)
+
+Variables: 
+layer

where the contents of the time dimension are the merged values from both files

julia
julia> ds["time"]
time Sampled{DateTime} ForwardOrdered Irregular DimensionalData.Dimensions.Lookups.Points
+wrapping: 6-element Vector{DateTime}:
+ 2020-01-02T00:00:00
+ 2020-01-03T00:00:00
+ 2020-01-04T00:00:00
+ 2020-01-05T00:00:00
+ 2020-01-06T00:00:00
+ 2020-01-07T00:00:00

providing us with a wide range of options to work with.

`,21))])}const D=d(g,[["render",c]]);export{A as __pageData,D as default}; diff --git a/previews/PR481/assets/UserGuide_write.md.CoRkmBBx.js b/previews/PR481/assets/UserGuide_write.md.mv5yJBqP.js similarity index 96% rename from previews/PR481/assets/UserGuide_write.md.CoRkmBBx.js rename to previews/PR481/assets/UserGuide_write.md.mv5yJBqP.js index 38a0acdf..7bfce432 100644 --- a/previews/PR481/assets/UserGuide_write.md.CoRkmBBx.js +++ b/previews/PR481/assets/UserGuide_write.md.mv5yJBqP.js @@ -20,25 +20,25 @@ import{_ as e,c as n,a2 as a,j as i,a as l,G as p,B as h,o as k}from"./chunks/fr savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

netcdf compression

Save a dataset to NetCDF format with compression:

julia
n = 7 # compression level, number between 0 (no compression) and 9 (max compression)
 savedataset(ds, path="ds_c.nc", driver=:netcdf, compress=n)

Comparing it to the default saved file

julia
ds_info = stat("ds.nc")
 ds_c_info = stat("ds_c.nc")
-println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

`,29)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"YAXArrays.Datasets.savedataset",href:"#YAXArrays.Datasets.savedataset"},[i("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[1]||(s[1]=l()),p(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=a('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),s[4]||(s[4]=a(`

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

`,29)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"YAXArrays.Datasets.savedataset",href:"#YAXArrays.Datasets.savedataset"},[i("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[1]||(s[1]=l()),p(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=a('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),s[4]||(s[4]=a(`

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
 savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
 Shared Axes:
 None
 Variables with additional axes:
   Additional Axes: 
-  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
-Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
-Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
-  Variables: 
-  z
-
-  Additional Axes: 
   (lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
 lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
 time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
   Variables: 
   tos
 
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
+  Variables: 
+  z
+
 Properties: Dict{String, Any}("cmor_version" => 0.96, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "Conventions" => "CF-1.0", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Save Skeleton

Sometimes one merely wants to create a datacube "Skeleton" on disk and gradually fill it with data. Here we make use of FillArrays to create a YAXArray and write only the axis data and array metadata to disk, while no actual array data is copied:

julia
using YAXArrays, Zarr, FillArrays

create the Zeros array

julia
julia> a = YAXArray(Zeros(Union{Missing, Float32},  5, 4, 5))
5×4×5 YAXArray{Union{Missing, Float32}, 3}
 ├────────────────────────────────────────────┴─────────────────────────── dims ┐
 Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
@@ -57,15 +57,15 @@ import{_ as e,c as n,a2 as a,j as i,a as l,G as p,B as h,o as k}from"./chunks/fr
 Variables: 
 skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
 ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
- 0.558193  0.62639    0.860688  0.363668
- 0.414006  0.66729    0.125769  0.00277787
- 0.891257  0.0887544  0.630526  0.782494
- 0.948244  0.195437   0.102333  0.669125
- 0.102816  0.781572   0.527401  0.719692

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
 ds_array = ds_open["skeleton"]
 ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
- 0.558193  0.62639    0.860688  0.363668
- 0.414006  0.66729    0.125769  0.00277787
- 0.891257  0.0887544  0.630526  0.782494
- 0.948244  0.195437   0.102333  0.669125
- 0.102816  0.781572   0.527401  0.719692

indeed, those entries had been updated.

`,35))])}const v=e(d,[["render",o]]);export{C as __pageData,v as default}; + 0.746259 0.259455 0.831968 0.275265 + 0.547738 0.35762 0.158741 0.991508 + 0.716952 0.95965 0.599987 0.337016 + 0.506947 0.923876 0.0940127 0.54942 + 0.847062 0.298617 0.182371 0.921

indeed, those entries had been updated.

`,35))])}const v=e(d,[["render",o]]);export{C as __pageData,v as default}; diff --git a/previews/PR481/assets/UserGuide_write.md.CoRkmBBx.lean.js b/previews/PR481/assets/UserGuide_write.md.mv5yJBqP.lean.js similarity index 96% rename from previews/PR481/assets/UserGuide_write.md.CoRkmBBx.lean.js rename to previews/PR481/assets/UserGuide_write.md.mv5yJBqP.lean.js index 38a0acdf..7bfce432 100644 --- a/previews/PR481/assets/UserGuide_write.md.CoRkmBBx.lean.js +++ b/previews/PR481/assets/UserGuide_write.md.mv5yJBqP.lean.js @@ -20,25 +20,25 @@ import{_ as e,c as n,a2 as a,j as i,a as l,G as p,B as h,o as k}from"./chunks/fr savecube(ds.tos, "tos.nc", driver=:netcdf)

Save an entire Dataset to a directory:

julia
savedataset(ds, path="ds.nc", driver=:netcdf)

netcdf compression

Save a dataset to NetCDF format with compression:

julia
n = 7 # compression level, number between 0 (no compression) and 9 (max compression)
 savedataset(ds, path="ds_c.nc", driver=:netcdf, compress=n)

Comparing it to the default saved file

julia
ds_info = stat("ds.nc")
 ds_c_info = stat("ds_c.nc")
-println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

`,29)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"YAXArrays.Datasets.savedataset",href:"#YAXArrays.Datasets.savedataset"},[i("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[1]||(s[1]=l()),p(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=a('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),s[4]||(s[4]=a(`

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
+println("File size: ", "default: ", ds_info.size, " bytes", ", compress: ", ds_c_info.size, " bytes")
File size: default: 2963860 bytes, compress: 1159916 bytes

Overwrite a Dataset

If a path already exists, an error will be thrown. Set overwrite=true to delete the existing dataset

julia
savedataset(ds, path="ds.zarr", driver=:zarr, overwrite=true)

DANGER

Again, setting overwrite will delete all your previous saved data.

Look at the doc string for more information

`,29)),i("details",r,[i("summary",null,[s[0]||(s[0]=i("a",{id:"YAXArrays.Datasets.savedataset",href:"#YAXArrays.Datasets.savedataset"},[i("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[1]||(s[1]=l()),p(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[2]||(s[2]=a('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),s[4]||(s[4]=a(`

Append to a Dataset

New variables can be added to an existing dataset using the append=true keyword.

julia
ds2 = Dataset(z = YAXArray(rand(10,20,5)))
 savedataset(ds2, path="ds.zarr", backend=:zarr, append=true)
julia
julia> open_dataset("ds.zarr", driver=:zarr)
YAXArray Dataset
 Shared Axes:
 None
 Variables with additional axes:
   Additional Axes: 
-  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
-Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
-Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
-  Variables: 
-  z
-
-  Additional Axes: 
   (lon  Sampled{Float64} 1.0:2.0:359.0 ForwardOrdered Regular Points,
 lat  Sampled{Float64} -79.5:1.0:89.5 ForwardOrdered Regular Points,
 time Sampled{CFTime.DateTime360Day} [CFTime.DateTime360Day(2001-01-16T00:00:00), …, CFTime.DateTime360Day(2002-12-16T00:00:00)] ForwardOrdered Irregular Points)
   Variables: 
   tos
 
+  Additional Axes: 
+  (Dim_1 Sampled{Int64} 1:1:10 ForwardOrdered Regular Points,
+Dim_2 Sampled{Int64} 1:1:20 ForwardOrdered Regular Points,
+Dim_3 Sampled{Int64} 1:1:5 ForwardOrdered Regular Points)
+  Variables: 
+  z
+
 Properties: Dict{String, Any}("cmor_version" => 0.96, "references" => "Dufresne et al, Journal of Climate, 2015, vol XX, p 136", "realization" => 1, "contact" => "Sebastien Denvil, sebastien.denvil@ipsl.jussieu.fr", "Conventions" => "CF-1.0", "history" => "YYYY/MM/JJ: data generated; YYYY/MM/JJ+1 data transformed  At 16:37:23 on 01/11/2005, CMOR rewrote data to comply with CF standards and IPCC Fourth Assessment requirements", "table_id" => "Table O1 (13 November 2004)", "source" => "IPSL-CM4_v1 (2003) : atmosphere : LMDZ (IPSL-CM4_IPCC, 96x71x19) ; ocean ORCA2 (ipsl_cm4_v1_8, 2x2L31); sea ice LIM (ipsl_cm4_v", "title" => "IPSL  model output prepared for IPCC Fourth Assessment SRES A2 experiment", "experiment_id" => "SRES A2 experiment"…)

Save Skeleton

Sometimes one merely wants to create a datacube "Skeleton" on disk and gradually fill it with data. Here we make use of FillArrays to create a YAXArray and write only the axis data and array metadata to disk, while no actual array data is copied:

julia
using YAXArrays, Zarr, FillArrays

create the Zeros array

julia
julia> a = YAXArray(Zeros(Union{Missing, Float32},  5, 4, 5))
5×4×5 YAXArray{Union{Missing, Float32}, 3}
 ├────────────────────────────────────────────┴─────────────────────────── dims ┐
 Dim_1 Sampled{Int64} Base.OneTo(5) ForwardOrdered Regular Points,
@@ -57,15 +57,15 @@ import{_ as e,c as n,a2 as a,j as i,a as l,G as p,B as h,o as k}from"./chunks/fr
 Variables: 
 skeleton
julia
ds_s = savedataset(ds, path="skeleton.zarr", driver=:zarr, skeleton=true, overwrite=true)

Update values of dataset

Now, we show how to start updating the array values. In order to do it we need to open the dataset first with writing w rights as follows:

julia
ds_open = zopen("skeleton.zarr", "w")
 ds_array = ds_open["skeleton"]
ZArray{Float32} of size 5 x 4 x 5

and then we simply update values by indexing them where necessary

julia
ds_array[:,:,1] = rand(Float32, 5, 4) # this will update values directly into disk!
5×4 Matrix{Float32}:
- 0.558193  0.62639    0.860688  0.363668
- 0.414006  0.66729    0.125769  0.00277787
- 0.891257  0.0887544  0.630526  0.782494
- 0.948244  0.195437   0.102333  0.669125
- 0.102816  0.781572   0.527401  0.719692

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
+ 0.746259  0.259455  0.831968   0.275265
+ 0.547738  0.35762   0.158741   0.991508
+ 0.716952  0.95965   0.599987   0.337016
+ 0.506947  0.923876  0.0940127  0.54942
+ 0.847062  0.298617  0.182371   0.921

we can verify is this working by loading again directly from disk

julia
ds_open = open_dataset("skeleton.zarr")
 ds_array = ds_open["skeleton"]
 ds_array.data[:,:,1]
5×4 Matrix{Union{Missing, Float32}}:
- 0.558193  0.62639    0.860688  0.363668
- 0.414006  0.66729    0.125769  0.00277787
- 0.891257  0.0887544  0.630526  0.782494
- 0.948244  0.195437   0.102333  0.669125
- 0.102816  0.781572   0.527401  0.719692

indeed, those entries had been updated.

`,35))])}const v=e(d,[["render",o]]);export{C as __pageData,v as default}; + 0.746259 0.259455 0.831968 0.275265 + 0.547738 0.35762 0.158741 0.991508 + 0.716952 0.95965 0.599987 0.337016 + 0.506947 0.923876 0.0940127 0.54942 + 0.847062 0.298617 0.182371 0.921

indeed, those entries had been updated.

`,35))])}const v=e(d,[["render",o]]);export{C as __pageData,v as default}; diff --git a/previews/PR481/assets/api.md.lNaPRPE1.js b/previews/PR481/assets/api.md.powSNzVx.js similarity index 92% rename from previews/PR481/assets/api.md.lNaPRPE1.js rename to previews/PR481/assets/api.md.powSNzVx.js index 6e9856a5..4a058604 100644 --- a/previews/PR481/assets/api.md.lNaPRPE1.js +++ b/previews/PR481/assets/api.md.powSNzVx.js @@ -1,5 +1,5 @@ -import{_ as n,c as o,j as e,a,G as i,a2 as l,B as r,o as p}from"./chunks/framework.CmUrV9pg.js";const cs=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),d={name:"api.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""};function ns(os,s,rs,ps,ds,hs){const t=r("Badge");return p(),o("div",null,[s[157]||(s[157]=e("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),e("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[158]||(s[158]=e("p",null,"This section describes all available functions of this package.",-1)),s[159]||(s[159]=e("h2",{id:"Public-API",tabindex:"-1"},[a("Public API "),e("a",{class:"header-anchor",href:"#Public-API","aria-label":'Permalink to "Public API {#Public-API}"'},"​")],-1)),e("details",h,[e("summary",null,[s[0]||(s[0]=e("a",{id:"YAXArrays.getAxis-Tuple{Any, Any}",href:"#YAXArrays.getAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getAxis")],-1)),s[1]||(s[1]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',4))]),e("details",u,[e("summary",null,[s[3]||(s[3]=e("a",{id:"YAXArrays.Cubes",href:"#YAXArrays.Cubes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes")],-1)),s[4]||(s[4]=a()),i(t,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[5]||(s[5]=e("p",null,"The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that",-1)),s[6]||(s[6]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/Cubes/Cubes.jl#L1-L4",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",c,[e("summary",null,[s[7]||(s[7]=e("a",{id:"YAXArrays.Cubes.YAXArray",href:"#YAXArrays.Cubes.YAXArray"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.YAXArray")],-1)),s[8]||(s[8]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[9]||(s[9]=l('
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source

',5))]),e("details",k,[e("summary",null,[s[10]||(s[10]=e("a",{id:"YAXArrays.Cubes.caxes",href:"#YAXArrays.Cubes.caxes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[11]||(s[11]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=e("p",null,"Returns the axes of a Cube",-1)),s[13]||(s[13]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/Cubes/Cubes.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",b,[e("summary",null,[s[14]||(s[14]=e("a",{id:"YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[15]||(s[15]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=l('
julia
caxes

Embeds Cube inside a new Cube

source

',3))]),e("details",y,[e("summary",null,[s[17]||(s[17]=e("a",{id:"YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.concatenatecubes")],-1)),s[18]||(s[18]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=l('
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

',3))]),e("details",g,[e("summary",null,[s[20]||(s[20]=e("a",{id:"YAXArrays.Cubes.readcubedata-Tuple{Any}",href:"#YAXArrays.Cubes.readcubedata-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.readcubedata")],-1)),s[21]||(s[21]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=l('
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

',3))]),e("details",A,[e("summary",null,[s[23]||(s[23]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[24]||(s[24]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=l('
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',4))]),e("details",f,[e("summary",null,[s[26]||(s[26]=e("a",{id:"YAXArrays.Cubes.subsetcube",href:"#YAXArrays.Cubes.subsetcube"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.subsetcube")],-1)),s[27]||(s[27]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[28]||(s[28]=e("p",null,"This function calculates a subset of a cube's data",-1)),s[29]||(s[29]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/Cubes/Cubes.jl#L22-L24",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"YAXArrays.DAT.InDims",href:"#YAXArrays.DAT.InDims"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InDims")],-1)),s[31]||(s[31]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=l('
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source

',5))]),e("details",E,[e("summary",null,[s[33]||(s[33]=e("a",{id:"YAXArrays.DAT.MovingWindow",href:"#YAXArrays.DAT.MovingWindow"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.MovingWindow")],-1)),s[34]||(s[34]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=l('
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

',4))]),e("details",j,[e("summary",null,[s[36]||(s[36]=e("a",{id:"YAXArrays.DAT.OutDims-Tuple",href:"#YAXArrays.DAT.OutDims-Tuple"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutDims")],-1)),s[37]||(s[37]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[38]||(s[38]=l('
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source

',4))]),e("details",C,[e("summary",null,[s[39]||(s[39]=e("a",{id:"YAXArrays.DAT.CubeTable-Tuple{}",href:"#YAXArrays.DAT.CubeTable-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.CubeTable")],-1)),s[40]||(s[40]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[41]||(s[41]=l('
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

',3))]),e("details",D,[e("summary",null,[s[42]||(s[42]=e("a",{id:"YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}",href:"#YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cubefittable")],-1)),s[43]||(s[43]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[44]||(s[44]=l('
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

',3))]),e("details",v,[e("summary",null,[s[45]||(s[45]=e("a",{id:"YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}",href:"#YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.fittable")],-1)),s[46]||(s[46]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=l('
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

',5))]),e("details",T,[e("summary",null,[s[48]||(s[48]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[49]||(s[49]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

',5))]),e("details",F,[e("summary",null,[s[51]||(s[51]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[52]||(s[52]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" or max_cache=1GB defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

',6))]),e("details",X,[e("summary",null,[s[54]||(s[54]=e("a",{id:"YAXArrays.Datasets.Dataset",href:"#YAXArrays.Datasets.Dataset"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[55]||(s[55]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=e("p",null,[a("Dataset object which stores an "),e("code",null,"OrderedDict"),a(" of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.")],-1)),s[57]||(s[57]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L18-L22",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Y,[e("summary",null,[s[58]||(s[58]=e("a",{id:"YAXArrays.Datasets.Dataset-Tuple{}",href:"#YAXArrays.Datasets.Dataset-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[59]||(s[59]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[60]||(s[60]=l('
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

',3))]),e("details",x,[e("summary",null,[s[61]||(s[61]=e("a",{id:"YAXArrays.Datasets.Cube-Tuple{Dataset}",href:"#YAXArrays.Datasets.Cube-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Cube")],-1)),s[62]||(s[62]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[63]||(s[63]=l('
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

',3))]),e("details",w,[e("summary",null,[s[64]||(s[64]=e("a",{id:"YAXArrays.Datasets.open_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.open_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),s[65]||(s[65]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[66]||(s[66]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),e("details",L,[e("summary",null,[s[67]||(s[67]=e("a",{id:'YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}',href:'#YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}'},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_mfdataset")],-1)),s[68]||(s[68]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[69]||(s[69]=l(`
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
+import{_ as n,c as o,j as e,a,G as i,a2 as l,B as r,o as p}from"./chunks/framework.CmUrV9pg.js";const bs=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),d={name:"api.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""};function ns(os,s,rs,ps,ds,hs){const t=r("Badge");return p(),o("div",null,[s[157]||(s[157]=e("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),e("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[158]||(s[158]=e("p",null,"This section describes all available functions of this package.",-1)),s[159]||(s[159]=e("h2",{id:"Public-API",tabindex:"-1"},[a("Public API "),e("a",{class:"header-anchor",href:"#Public-API","aria-label":'Permalink to "Public API {#Public-API}"'},"​")],-1)),e("details",h,[e("summary",null,[s[0]||(s[0]=e("a",{id:"YAXArrays.getAxis-Tuple{Any, Any}",href:"#YAXArrays.getAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getAxis")],-1)),s[1]||(s[1]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',4))]),e("details",u,[e("summary",null,[s[3]||(s[3]=e("a",{id:"YAXArrays.Cubes",href:"#YAXArrays.Cubes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes")],-1)),s[4]||(s[4]=a()),i(t,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[5]||(s[5]=e("p",null,"The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that",-1)),s[6]||(s[6]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/Cubes/Cubes.jl#L1-L4",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",b,[e("summary",null,[s[7]||(s[7]=e("a",{id:"YAXArrays.Cubes.YAXArray",href:"#YAXArrays.Cubes.YAXArray"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.YAXArray")],-1)),s[8]||(s[8]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[9]||(s[9]=l('
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source

',5))]),e("details",c,[e("summary",null,[s[10]||(s[10]=e("a",{id:"YAXArrays.Cubes.caxes",href:"#YAXArrays.Cubes.caxes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[11]||(s[11]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=e("p",null,"Returns the axes of a Cube",-1)),s[13]||(s[13]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/Cubes/Cubes.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",k,[e("summary",null,[s[14]||(s[14]=e("a",{id:"YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[15]||(s[15]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=l('
julia
caxes

Embeds Cube inside a new Cube

source

',3))]),e("details",y,[e("summary",null,[s[17]||(s[17]=e("a",{id:"YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.concatenatecubes")],-1)),s[18]||(s[18]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=l('
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

',3))]),e("details",g,[e("summary",null,[s[20]||(s[20]=e("a",{id:"YAXArrays.Cubes.readcubedata-Tuple{Any}",href:"#YAXArrays.Cubes.readcubedata-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.readcubedata")],-1)),s[21]||(s[21]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=l('
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

',3))]),e("details",A,[e("summary",null,[s[23]||(s[23]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[24]||(s[24]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=l('
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',4))]),e("details",f,[e("summary",null,[s[26]||(s[26]=e("a",{id:"YAXArrays.Cubes.subsetcube",href:"#YAXArrays.Cubes.subsetcube"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.subsetcube")],-1)),s[27]||(s[27]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[28]||(s[28]=e("p",null,"This function calculates a subset of a cube's data",-1)),s[29]||(s[29]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/Cubes/Cubes.jl#L22-L24",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"YAXArrays.DAT.InDims",href:"#YAXArrays.DAT.InDims"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InDims")],-1)),s[31]||(s[31]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=l('
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source

',5))]),e("details",E,[e("summary",null,[s[33]||(s[33]=e("a",{id:"YAXArrays.DAT.MovingWindow",href:"#YAXArrays.DAT.MovingWindow"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.MovingWindow")],-1)),s[34]||(s[34]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=l('
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

',4))]),e("details",j,[e("summary",null,[s[36]||(s[36]=e("a",{id:"YAXArrays.DAT.OutDims-Tuple",href:"#YAXArrays.DAT.OutDims-Tuple"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutDims")],-1)),s[37]||(s[37]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[38]||(s[38]=l('
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source

',4))]),e("details",C,[e("summary",null,[s[39]||(s[39]=e("a",{id:"YAXArrays.DAT.CubeTable-Tuple{}",href:"#YAXArrays.DAT.CubeTable-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.CubeTable")],-1)),s[40]||(s[40]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[41]||(s[41]=l('
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

',3))]),e("details",D,[e("summary",null,[s[42]||(s[42]=e("a",{id:"YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}",href:"#YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cubefittable")],-1)),s[43]||(s[43]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[44]||(s[44]=l('
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

',3))]),e("details",v,[e("summary",null,[s[45]||(s[45]=e("a",{id:"YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}",href:"#YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.fittable")],-1)),s[46]||(s[46]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=l('
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

',5))]),e("details",T,[e("summary",null,[s[48]||(s[48]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[49]||(s[49]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

',5))]),e("details",F,[e("summary",null,[s[51]||(s[51]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[52]||(s[52]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" or max_cache=1GB defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

',6))]),e("details",X,[e("summary",null,[s[54]||(s[54]=e("a",{id:"YAXArrays.Datasets.Dataset",href:"#YAXArrays.Datasets.Dataset"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[55]||(s[55]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=e("p",null,[a("Dataset object which stores an "),e("code",null,"OrderedDict"),a(" of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.")],-1)),s[57]||(s[57]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L18-L22",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Y,[e("summary",null,[s[58]||(s[58]=e("a",{id:"YAXArrays.Datasets.Dataset-Tuple{}",href:"#YAXArrays.Datasets.Dataset-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[59]||(s[59]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[60]||(s[60]=l('
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

',3))]),e("details",x,[e("summary",null,[s[61]||(s[61]=e("a",{id:"YAXArrays.Datasets.Cube-Tuple{Dataset}",href:"#YAXArrays.Datasets.Cube-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Cube")],-1)),s[62]||(s[62]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[63]||(s[63]=l('
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

',3))]),e("details",w,[e("summary",null,[s[64]||(s[64]=e("a",{id:"YAXArrays.Datasets.open_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.open_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),s[65]||(s[65]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[66]||(s[66]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),e("details",L,[e("summary",null,[s[67]||(s[67]=e("a",{id:'YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}',href:'#YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}'},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_mfdataset")],-1)),s[68]||(s[68]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[69]||(s[69]=l(`
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
 open_mfdataset(DD.DimArray(files, YAX.time()))

alternatively, if the dimension to concatenate along does not exist yet, the dimension provided in the input arg is used:

julia
files = ["a.nc", "b.nc", "c.nc"]
-open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

`,6))]),e("details",M,[e("summary",null,[s[70]||(s[70]=e("a",{id:"YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}",href:"#YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savecube")],-1)),s[71]||(s[71]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[72]||(s[72]=l('
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source

',6))]),e("details",B,[e("summary",null,[s[73]||(s[73]=e("a",{id:"YAXArrays.Datasets.savedataset-Tuple{Dataset}",href:"#YAXArrays.Datasets.savedataset-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[74]||(s[74]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[75]||(s[75]=l('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),e("details",O,[e("summary",null,[s[76]||(s[76]=e("a",{id:"YAXArrays.Datasets.to_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.to_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.to_dataset")],-1)),s[77]||(s[77]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[78]||(s[78]=l('
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

',3))]),s[160]||(s[160]=e("h2",{id:"Internal-API",tabindex:"-1"},[a("Internal API "),e("a",{class:"header-anchor",href:"#Internal-API","aria-label":'Permalink to "Internal API {#Internal-API}"'},"​")],-1)),e("details",I,[e("summary",null,[s[79]||(s[79]=e("a",{id:"YAXArrays.YAXDefaults",href:"#YAXArrays.YAXDefaults"},[e("span",{class:"jlbinding"},"YAXArrays.YAXDefaults")],-1)),s[80]||(s[80]=a()),i(t,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),s[81]||(s[81]=l('

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source

',3))]),e("details",J,[e("summary",null,[s[82]||(s[82]=e("a",{id:"YAXArrays.findAxis-Tuple{Any, Any}",href:"#YAXArrays.findAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.findAxis")],-1)),s[83]||(s[83]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[84]||(s[84]=l('
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',7))]),e("details",P,[e("summary",null,[s[85]||(s[85]=e("a",{id:"YAXArrays.getOutAxis-NTuple{5, Any}",href:"#YAXArrays.getOutAxis-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getOutAxis")],-1)),s[86]||(s[86]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[87]||(s[87]=l('
julia
getOutAxis

source

',2))]),e("details",q,[e("summary",null,[s[88]||(s[88]=e("a",{id:"YAXArrays.get_descriptor-Tuple{String}",href:"#YAXArrays.get_descriptor-Tuple{String}"},[e("span",{class:"jlbinding"},"YAXArrays.get_descriptor")],-1)),s[89]||(s[89]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[90]||(s[90]=l('
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

',3))]),e("details",z,[e("summary",null,[s[91]||(s[91]=e("a",{id:"YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}",href:"#YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.match_axis")],-1)),s[92]||(s[92]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[93]||(s[93]=l(`
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

`,6))]),e("details",M,[e("summary",null,[s[70]||(s[70]=e("a",{id:"YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}",href:"#YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savecube")],-1)),s[71]||(s[71]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[72]||(s[72]=l('
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source

',6))]),e("details",B,[e("summary",null,[s[73]||(s[73]=e("a",{id:"YAXArrays.Datasets.savedataset-Tuple{Dataset}",href:"#YAXArrays.Datasets.savedataset-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[74]||(s[74]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[75]||(s[75]=l('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),e("details",O,[e("summary",null,[s[76]||(s[76]=e("a",{id:"YAXArrays.Datasets.to_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.to_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.to_dataset")],-1)),s[77]||(s[77]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[78]||(s[78]=l('
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

',3))]),s[160]||(s[160]=e("h2",{id:"Internal-API",tabindex:"-1"},[a("Internal API "),e("a",{class:"header-anchor",href:"#Internal-API","aria-label":'Permalink to "Internal API {#Internal-API}"'},"​")],-1)),e("details",I,[e("summary",null,[s[79]||(s[79]=e("a",{id:"YAXArrays.YAXDefaults",href:"#YAXArrays.YAXDefaults"},[e("span",{class:"jlbinding"},"YAXArrays.YAXDefaults")],-1)),s[80]||(s[80]=a()),i(t,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),s[81]||(s[81]=l('

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source

',3))]),e("details",J,[e("summary",null,[s[82]||(s[82]=e("a",{id:"YAXArrays.findAxis-Tuple{Any, Any}",href:"#YAXArrays.findAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.findAxis")],-1)),s[83]||(s[83]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[84]||(s[84]=l('
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',7))]),e("details",P,[e("summary",null,[s[85]||(s[85]=e("a",{id:"YAXArrays.getOutAxis-NTuple{5, Any}",href:"#YAXArrays.getOutAxis-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getOutAxis")],-1)),s[86]||(s[86]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[87]||(s[87]=l('
julia
getOutAxis

source

',2))]),e("details",q,[e("summary",null,[s[88]||(s[88]=e("a",{id:"YAXArrays.get_descriptor-Tuple{String}",href:"#YAXArrays.get_descriptor-Tuple{String}"},[e("span",{class:"jlbinding"},"YAXArrays.get_descriptor")],-1)),s[89]||(s[89]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[90]||(s[90]=l('
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

',3))]),e("details",z,[e("summary",null,[s[91]||(s[91]=e("a",{id:"YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}",href:"#YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.match_axis")],-1)),s[92]||(s[92]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[93]||(s[93]=l(`
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
 This is used to find different axes and to make certain axis description the same.
-For example to disregard differences of captialisation.

source

`,5))]),e("details",N,[e("summary",null,[s[94]||(s[94]=e("a",{id:"YAXArrays.Cubes.CleanMe",href:"#YAXArrays.Cubes.CleanMe"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.CleanMe")],-1)),s[95]||(s[95]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[96]||(s[96]=l('
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

',3))]),e("details",S,[e("summary",null,[s[97]||(s[97]=e("a",{id:"YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}",href:"#YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.clean")],-1)),s[98]||(s[98]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[99]||(s[99]=l('
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

',3))]),e("details",R,[e("summary",null,[s[100]||(s[100]=e("a",{id:"YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}",href:"#YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.copydata")],-1)),s[101]||(s[101]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[102]||(s[102]=l('
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

',3))]),e("details",V,[e("summary",null,[s[103]||(s[103]=e("a",{id:"YAXArrays.Cubes.optifunc-NTuple{7, Any}",href:"#YAXArrays.Cubes.optifunc-NTuple{7, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.optifunc")],-1)),s[104]||(s[104]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=l('
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

',4))]),e("details",G,[e("summary",null,[s[106]||(s[106]=e("a",{id:"YAXArrays.DAT.DATConfig",href:"#YAXArrays.DAT.DATConfig"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.DATConfig")],-1)),s[107]||(s[107]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[108]||(s[108]=l('

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::NTuple{NIN, YAXArrays.DAT.InputCube} where NIN: The input data cubes

  • outcubes::NTuple{NOUT, YAXArrays.DAT.OutputCube} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source

',3))]),e("details",W,[e("summary",null,[s[109]||(s[109]=e("a",{id:"YAXArrays.DAT.InputCube",href:"#YAXArrays.DAT.InputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InputCube")],-1)),s[110]||(s[110]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[111]||(s[111]=l('

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source

',3))]),e("details",U,[e("summary",null,[s[112]||(s[112]=e("a",{id:"YAXArrays.DAT.OutputCube",href:"#YAXArrays.DAT.OutputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutputCube")],-1)),s[113]||(s[113]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[114]||(s[114]=l('

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source

',4))]),e("details",K,[e("summary",null,[s[115]||(s[115]=e("a",{id:"YAXArrays.DAT.YAXColumn",href:"#YAXArrays.DAT.YAXColumn"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.YAXColumn")],-1)),s[116]||(s[116]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[117]||(s[117]=l('
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source

',4))]),e("details",$,[e("summary",null,[s[118]||(s[118]=e("a",{id:"YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}",href:"#YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cmpcachmisses")],-1)),s[119]||(s[119]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=e("p",null,"Function that compares two cache miss specifiers by their importance",-1)),s[121]||(s[121]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DAT/DAT.jl#L958-L960",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",H,[e("summary",null,[s[122]||(s[122]=e("a",{id:"YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}",href:"#YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getFrontPerm")],-1)),s[123]||(s[123]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e("p",null,"Calculate an axis permutation that brings the wanted dimensions to the front",-1)),s[125]||(s[125]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DAT/DAT.jl#L1203",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Z,[e("summary",null,[s[126]||(s[126]=e("a",{id:"YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}",href:"#YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getLoopCacheSize")],-1)),s[127]||(s[127]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[128]||(s[128]=e("p",null,"Calculate optimal Cache size to DAT operation",-1)),s[129]||(s[129]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DAT/DAT.jl#L1057",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Q,[e("summary",null,[s[130]||(s[130]=e("a",{id:"YAXArrays.DAT.getOuttype-Tuple{Int64, Any}",href:"#YAXArrays.DAT.getOuttype-Tuple{Int64, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getOuttype")],-1)),s[131]||(s[131]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[132]||(s[132]=l('
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

',4))]),e("details",_,[e("summary",null,[s[133]||(s[133]=e("a",{id:"YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}",href:"#YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getloopchunks")],-1)),s[134]||(s[134]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[135]||(s[135]=l('
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.\nThis computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

',4))]),e("details",ss,[e("summary",null,[s[136]||(s[136]=e("a",{id:"YAXArrays.DAT.permuteloopaxes-Tuple{Any}",href:"#YAXArrays.DAT.permuteloopaxes-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.permuteloopaxes")],-1)),s[137]||(s[137]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[138]||(s[138]=l('
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

',4))]),e("details",es,[e("summary",null,[s[139]||(s[139]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[140]||(s[140]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[141]||(s[141]=l('
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',6))]),e("details",as,[e("summary",null,[s[142]||(s[142]=e("a",{id:"YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}",href:"#YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.collectfromhandle")],-1)),s[143]||(s[143]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[144]||(s[144]=e("p",null,"Extracts a YAXArray from a dataset handle that was just created from a arrayinfo",-1)),s[145]||(s[145]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L561-L563",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ts,[e("summary",null,[s[146]||(s[146]=e("a",{id:"YAXArrays.Datasets.createdataset-Tuple{Any, Any}",href:"#YAXArrays.Datasets.createdataset-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.createdataset")],-1)),s[147]||(s[147]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[148]||(s[148]=l('
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source

',5))]),e("details",is,[e("summary",null,[s[149]||(s[149]=e("a",{id:"YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}",href:"#YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.getarrayinfo")],-1)),s[150]||(s[150]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=e("p",null,"Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair",-1)),s[152]||(s[152]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L530-L532",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ls,[e("summary",null,[s[153]||(s[153]=e("a",{id:"YAXArrays.Datasets.testrange-Tuple{Any}",href:"#YAXArrays.Datasets.testrange-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.testrange")],-1)),s[154]||(s[154]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[155]||(s[155]=e("p",null,"Test if data in x can be approximated by a step range",-1)),s[156]||(s[156]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L312",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const ks=n(d,[["render",ns]]);export{cs as __pageData,ks as default}; +For example to disregard differences of captialisation.

source

`,5))]),e("details",N,[e("summary",null,[s[94]||(s[94]=e("a",{id:"YAXArrays.Cubes.CleanMe",href:"#YAXArrays.Cubes.CleanMe"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.CleanMe")],-1)),s[95]||(s[95]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[96]||(s[96]=l('
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

',3))]),e("details",S,[e("summary",null,[s[97]||(s[97]=e("a",{id:"YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}",href:"#YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.clean")],-1)),s[98]||(s[98]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[99]||(s[99]=l('
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

',3))]),e("details",R,[e("summary",null,[s[100]||(s[100]=e("a",{id:"YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}",href:"#YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.copydata")],-1)),s[101]||(s[101]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[102]||(s[102]=l('
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

',3))]),e("details",V,[e("summary",null,[s[103]||(s[103]=e("a",{id:"YAXArrays.Cubes.optifunc-NTuple{7, Any}",href:"#YAXArrays.Cubes.optifunc-NTuple{7, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.optifunc")],-1)),s[104]||(s[104]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=l('
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

',4))]),e("details",G,[e("summary",null,[s[106]||(s[106]=e("a",{id:"YAXArrays.DAT.DATConfig",href:"#YAXArrays.DAT.DATConfig"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.DATConfig")],-1)),s[107]||(s[107]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[108]||(s[108]=l('

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::NTuple{NIN, YAXArrays.DAT.InputCube} where NIN: The input data cubes

  • outcubes::NTuple{NOUT, YAXArrays.DAT.OutputCube} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source

',3))]),e("details",W,[e("summary",null,[s[109]||(s[109]=e("a",{id:"YAXArrays.DAT.InputCube",href:"#YAXArrays.DAT.InputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InputCube")],-1)),s[110]||(s[110]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[111]||(s[111]=l('

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source

',3))]),e("details",U,[e("summary",null,[s[112]||(s[112]=e("a",{id:"YAXArrays.DAT.OutputCube",href:"#YAXArrays.DAT.OutputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutputCube")],-1)),s[113]||(s[113]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[114]||(s[114]=l('

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source

',4))]),e("details",K,[e("summary",null,[s[115]||(s[115]=e("a",{id:"YAXArrays.DAT.YAXColumn",href:"#YAXArrays.DAT.YAXColumn"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.YAXColumn")],-1)),s[116]||(s[116]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[117]||(s[117]=l('
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source

',4))]),e("details",$,[e("summary",null,[s[118]||(s[118]=e("a",{id:"YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}",href:"#YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cmpcachmisses")],-1)),s[119]||(s[119]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=e("p",null,"Function that compares two cache miss specifiers by their importance",-1)),s[121]||(s[121]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DAT/DAT.jl#L958-L960",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",H,[e("summary",null,[s[122]||(s[122]=e("a",{id:"YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}",href:"#YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getFrontPerm")],-1)),s[123]||(s[123]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e("p",null,"Calculate an axis permutation that brings the wanted dimensions to the front",-1)),s[125]||(s[125]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DAT/DAT.jl#L1203",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Z,[e("summary",null,[s[126]||(s[126]=e("a",{id:"YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}",href:"#YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getLoopCacheSize")],-1)),s[127]||(s[127]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[128]||(s[128]=e("p",null,"Calculate optimal Cache size to DAT operation",-1)),s[129]||(s[129]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DAT/DAT.jl#L1057",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Q,[e("summary",null,[s[130]||(s[130]=e("a",{id:"YAXArrays.DAT.getOuttype-Tuple{Int64, Any}",href:"#YAXArrays.DAT.getOuttype-Tuple{Int64, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getOuttype")],-1)),s[131]||(s[131]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[132]||(s[132]=l('
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

',4))]),e("details",_,[e("summary",null,[s[133]||(s[133]=e("a",{id:"YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}",href:"#YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getloopchunks")],-1)),s[134]||(s[134]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[135]||(s[135]=l('
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.\nThis computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

',4))]),e("details",ss,[e("summary",null,[s[136]||(s[136]=e("a",{id:"YAXArrays.DAT.permuteloopaxes-Tuple{Any}",href:"#YAXArrays.DAT.permuteloopaxes-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.permuteloopaxes")],-1)),s[137]||(s[137]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[138]||(s[138]=l('
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

',4))]),e("details",es,[e("summary",null,[s[139]||(s[139]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[140]||(s[140]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[141]||(s[141]=l('
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',6))]),e("details",as,[e("summary",null,[s[142]||(s[142]=e("a",{id:"YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}",href:"#YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.collectfromhandle")],-1)),s[143]||(s[143]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[144]||(s[144]=e("p",null,"Extracts a YAXArray from a dataset handle that was just created from a arrayinfo",-1)),s[145]||(s[145]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L561-L563",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ts,[e("summary",null,[s[146]||(s[146]=e("a",{id:"YAXArrays.Datasets.createdataset-Tuple{Any, Any}",href:"#YAXArrays.Datasets.createdataset-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.createdataset")],-1)),s[147]||(s[147]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[148]||(s[148]=l('
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source

',5))]),e("details",is,[e("summary",null,[s[149]||(s[149]=e("a",{id:"YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}",href:"#YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.getarrayinfo")],-1)),s[150]||(s[150]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=e("p",null,"Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair",-1)),s[152]||(s[152]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L530-L532",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ls,[e("summary",null,[s[153]||(s[153]=e("a",{id:"YAXArrays.Datasets.testrange-Tuple{Any}",href:"#YAXArrays.Datasets.testrange-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.testrange")],-1)),s[154]||(s[154]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[155]||(s[155]=e("p",null,"Test if data in x can be approximated by a step range",-1)),s[156]||(s[156]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L312",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const cs=n(d,[["render",ns]]);export{bs as __pageData,cs as default}; diff --git a/previews/PR481/assets/api.md.lNaPRPE1.lean.js b/previews/PR481/assets/api.md.powSNzVx.lean.js similarity index 92% rename from previews/PR481/assets/api.md.lNaPRPE1.lean.js rename to previews/PR481/assets/api.md.powSNzVx.lean.js index 6e9856a5..4a058604 100644 --- a/previews/PR481/assets/api.md.lNaPRPE1.lean.js +++ b/previews/PR481/assets/api.md.powSNzVx.lean.js @@ -1,5 +1,5 @@ -import{_ as n,c as o,j as e,a,G as i,a2 as l,B as r,o as p}from"./chunks/framework.CmUrV9pg.js";const cs=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),d={name:"api.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""};function ns(os,s,rs,ps,ds,hs){const t=r("Badge");return p(),o("div",null,[s[157]||(s[157]=e("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),e("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[158]||(s[158]=e("p",null,"This section describes all available functions of this package.",-1)),s[159]||(s[159]=e("h2",{id:"Public-API",tabindex:"-1"},[a("Public API "),e("a",{class:"header-anchor",href:"#Public-API","aria-label":'Permalink to "Public API {#Public-API}"'},"​")],-1)),e("details",h,[e("summary",null,[s[0]||(s[0]=e("a",{id:"YAXArrays.getAxis-Tuple{Any, Any}",href:"#YAXArrays.getAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getAxis")],-1)),s[1]||(s[1]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',4))]),e("details",u,[e("summary",null,[s[3]||(s[3]=e("a",{id:"YAXArrays.Cubes",href:"#YAXArrays.Cubes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes")],-1)),s[4]||(s[4]=a()),i(t,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[5]||(s[5]=e("p",null,"The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that",-1)),s[6]||(s[6]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/Cubes/Cubes.jl#L1-L4",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",c,[e("summary",null,[s[7]||(s[7]=e("a",{id:"YAXArrays.Cubes.YAXArray",href:"#YAXArrays.Cubes.YAXArray"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.YAXArray")],-1)),s[8]||(s[8]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[9]||(s[9]=l('
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source

',5))]),e("details",k,[e("summary",null,[s[10]||(s[10]=e("a",{id:"YAXArrays.Cubes.caxes",href:"#YAXArrays.Cubes.caxes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[11]||(s[11]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=e("p",null,"Returns the axes of a Cube",-1)),s[13]||(s[13]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/Cubes/Cubes.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",b,[e("summary",null,[s[14]||(s[14]=e("a",{id:"YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[15]||(s[15]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=l('
julia
caxes

Embeds Cube inside a new Cube

source

',3))]),e("details",y,[e("summary",null,[s[17]||(s[17]=e("a",{id:"YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.concatenatecubes")],-1)),s[18]||(s[18]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=l('
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

',3))]),e("details",g,[e("summary",null,[s[20]||(s[20]=e("a",{id:"YAXArrays.Cubes.readcubedata-Tuple{Any}",href:"#YAXArrays.Cubes.readcubedata-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.readcubedata")],-1)),s[21]||(s[21]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=l('
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

',3))]),e("details",A,[e("summary",null,[s[23]||(s[23]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[24]||(s[24]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=l('
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',4))]),e("details",f,[e("summary",null,[s[26]||(s[26]=e("a",{id:"YAXArrays.Cubes.subsetcube",href:"#YAXArrays.Cubes.subsetcube"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.subsetcube")],-1)),s[27]||(s[27]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[28]||(s[28]=e("p",null,"This function calculates a subset of a cube's data",-1)),s[29]||(s[29]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/Cubes/Cubes.jl#L22-L24",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"YAXArrays.DAT.InDims",href:"#YAXArrays.DAT.InDims"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InDims")],-1)),s[31]||(s[31]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=l('
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source

',5))]),e("details",E,[e("summary",null,[s[33]||(s[33]=e("a",{id:"YAXArrays.DAT.MovingWindow",href:"#YAXArrays.DAT.MovingWindow"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.MovingWindow")],-1)),s[34]||(s[34]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=l('
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

',4))]),e("details",j,[e("summary",null,[s[36]||(s[36]=e("a",{id:"YAXArrays.DAT.OutDims-Tuple",href:"#YAXArrays.DAT.OutDims-Tuple"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutDims")],-1)),s[37]||(s[37]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[38]||(s[38]=l('
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source

',4))]),e("details",C,[e("summary",null,[s[39]||(s[39]=e("a",{id:"YAXArrays.DAT.CubeTable-Tuple{}",href:"#YAXArrays.DAT.CubeTable-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.CubeTable")],-1)),s[40]||(s[40]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[41]||(s[41]=l('
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

',3))]),e("details",D,[e("summary",null,[s[42]||(s[42]=e("a",{id:"YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}",href:"#YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cubefittable")],-1)),s[43]||(s[43]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[44]||(s[44]=l('
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

',3))]),e("details",v,[e("summary",null,[s[45]||(s[45]=e("a",{id:"YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}",href:"#YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.fittable")],-1)),s[46]||(s[46]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=l('
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

',5))]),e("details",T,[e("summary",null,[s[48]||(s[48]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[49]||(s[49]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

',5))]),e("details",F,[e("summary",null,[s[51]||(s[51]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[52]||(s[52]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" or max_cache=1GB defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

',6))]),e("details",X,[e("summary",null,[s[54]||(s[54]=e("a",{id:"YAXArrays.Datasets.Dataset",href:"#YAXArrays.Datasets.Dataset"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[55]||(s[55]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=e("p",null,[a("Dataset object which stores an "),e("code",null,"OrderedDict"),a(" of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.")],-1)),s[57]||(s[57]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L18-L22",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Y,[e("summary",null,[s[58]||(s[58]=e("a",{id:"YAXArrays.Datasets.Dataset-Tuple{}",href:"#YAXArrays.Datasets.Dataset-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[59]||(s[59]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[60]||(s[60]=l('
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

',3))]),e("details",x,[e("summary",null,[s[61]||(s[61]=e("a",{id:"YAXArrays.Datasets.Cube-Tuple{Dataset}",href:"#YAXArrays.Datasets.Cube-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Cube")],-1)),s[62]||(s[62]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[63]||(s[63]=l('
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

',3))]),e("details",w,[e("summary",null,[s[64]||(s[64]=e("a",{id:"YAXArrays.Datasets.open_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.open_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),s[65]||(s[65]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[66]||(s[66]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),e("details",L,[e("summary",null,[s[67]||(s[67]=e("a",{id:'YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}',href:'#YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}'},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_mfdataset")],-1)),s[68]||(s[68]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[69]||(s[69]=l(`
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
+import{_ as n,c as o,j as e,a,G as i,a2 as l,B as r,o as p}from"./chunks/framework.CmUrV9pg.js";const bs=JSON.parse('{"title":"API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),d={name:"api.md"},h={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},H={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},ss={class:"jldocstring custom-block",open:""},es={class:"jldocstring custom-block",open:""},as={class:"jldocstring custom-block",open:""},ts={class:"jldocstring custom-block",open:""},is={class:"jldocstring custom-block",open:""},ls={class:"jldocstring custom-block",open:""};function ns(os,s,rs,ps,ds,hs){const t=r("Badge");return p(),o("div",null,[s[157]||(s[157]=e("h1",{id:"API-Reference",tabindex:"-1"},[a("API Reference "),e("a",{class:"header-anchor",href:"#API-Reference","aria-label":'Permalink to "API Reference {#API-Reference}"'},"​")],-1)),s[158]||(s[158]=e("p",null,"This section describes all available functions of this package.",-1)),s[159]||(s[159]=e("h2",{id:"Public-API",tabindex:"-1"},[a("Public API "),e("a",{class:"header-anchor",href:"#Public-API","aria-label":'Permalink to "Public API {#Public-API}"'},"​")],-1)),e("details",h,[e("summary",null,[s[0]||(s[0]=e("a",{id:"YAXArrays.getAxis-Tuple{Any, Any}",href:"#YAXArrays.getAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getAxis")],-1)),s[1]||(s[1]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
getAxis(desc, c)

Given an Axis description and a cube, returns the corresponding axis of the cube. The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',4))]),e("details",u,[e("summary",null,[s[3]||(s[3]=e("a",{id:"YAXArrays.Cubes",href:"#YAXArrays.Cubes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes")],-1)),s[4]||(s[4]=a()),i(t,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[5]||(s[5]=e("p",null,"The functions provided by YAXArrays are supposed to work on different types of cubes. This module defines the interface for all Data types that",-1)),s[6]||(s[6]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/Cubes/Cubes.jl#L1-L4",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",b,[e("summary",null,[s[7]||(s[7]=e("a",{id:"YAXArrays.Cubes.YAXArray",href:"#YAXArrays.Cubes.YAXArray"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.YAXArray")],-1)),s[8]||(s[8]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[9]||(s[9]=l('
julia
YAXArray{T,N}

An array labelled with named axes that have values associated with them. It can wrap normal arrays or, more typically DiskArrays.

Fields

  • axes: Tuple of Dimensions containing the Axes of the Cube

  • data: length(axes)-dimensional array which holds the data, this can be a lazy DiskArray

  • properties: Metadata properties describing the content of the data

  • chunks: Representation of the chunking of the data

  • cleaner: Cleaner objects to track which objects to tidy up when the YAXArray goes out of scope

source

',5))]),e("details",c,[e("summary",null,[s[10]||(s[10]=e("a",{id:"YAXArrays.Cubes.caxes",href:"#YAXArrays.Cubes.caxes"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[11]||(s[11]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=e("p",null,"Returns the axes of a Cube",-1)),s[13]||(s[13]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/Cubes/Cubes.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",k,[e("summary",null,[s[14]||(s[14]=e("a",{id:"YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.caxes-Tuple{DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.caxes")],-1)),s[15]||(s[15]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=l('
julia
caxes

Embeds Cube inside a new Cube

source

',3))]),e("details",y,[e("summary",null,[s[17]||(s[17]=e("a",{id:"YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}",href:"#YAXArrays.Cubes.concatenatecubes-Tuple{Any, DimensionalData.Dimensions.Dimension}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.concatenatecubes")],-1)),s[18]||(s[18]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=l('
julia
function concatenateCubes(cubelist, cataxis::CategoricalAxis)

Concatenates a vector of datacubes that have identical axes to a new single cube along the new axis cataxis

source

',3))]),e("details",g,[e("summary",null,[s[20]||(s[20]=e("a",{id:"YAXArrays.Cubes.readcubedata-Tuple{Any}",href:"#YAXArrays.Cubes.readcubedata-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.readcubedata")],-1)),s[21]||(s[21]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=l('
julia
readcubedata(cube)

Given any array implementing the YAXArray interface it returns an in-memory YAXArray from it.

source

',3))]),e("details",A,[e("summary",null,[s[23]||(s[23]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{YAXArray, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[24]||(s[24]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=l('
julia
setchunks(c::YAXArray,chunks)

Resets the chunks of a YAXArray and returns a new YAXArray. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savecube on the resulting array. The chunks argument can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',4))]),e("details",f,[e("summary",null,[s[26]||(s[26]=e("a",{id:"YAXArrays.Cubes.subsetcube",href:"#YAXArrays.Cubes.subsetcube"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.subsetcube")],-1)),s[27]||(s[27]=a()),i(t,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[28]||(s[28]=e("p",null,"This function calculates a subset of a cube's data",-1)),s[29]||(s[29]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/Cubes/Cubes.jl#L22-L24",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",m,[e("summary",null,[s[30]||(s[30]=e("a",{id:"YAXArrays.DAT.InDims",href:"#YAXArrays.DAT.InDims"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InDims")],-1)),s[31]||(s[31]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[32]||(s[32]=l('
julia
InDims(axisdesc...;...)

Creates a description of an Input Data Cube for cube operations. Takes a single or multiple axis descriptions as first arguments. Alternatively a MovingWindow(@ref) struct can be passed to include neighbour slices of one or more axes in the computation. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

Keyword arguments

  • artype how shall the array be represented in the inner function. Defaults to Array, alternatives are DataFrame or AsAxisArray

  • filter define some filter to skip the computation, e.g. when all values are missing. Defaults to AllMissing(), possible values are AnyMissing(), AnyOcean(), StdZero(), NValid(n) (for at least n non-missing elements). It is also possible to provide a custom one-argument function that takes the array and returns true if the compuation shall be skipped and false otherwise.

  • window_oob_value if one of the input dimensions is a MowingWindow, this value will be used to fill out-of-bounds areas

source

',5))]),e("details",E,[e("summary",null,[s[33]||(s[33]=e("a",{id:"YAXArrays.DAT.MovingWindow",href:"#YAXArrays.DAT.MovingWindow"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.MovingWindow")],-1)),s[34]||(s[34]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[35]||(s[35]=l('
julia
MovingWindow(desc, pre, after)

Constructs a MovingWindow object to be passed to an InDims constructor to define that the axis in desc shall participate in the inner function (i.e. shall be looped over), but inside the inner function pre values before and after values after the center value will be passed as well.

For example passing MovingWindow("Time", 2, 0) will loop over the time axis and always pass the current time step plus the 2 previous steps. So in the inner function the array will have an additional dimension of size 3.

source

',4))]),e("details",j,[e("summary",null,[s[36]||(s[36]=e("a",{id:"YAXArrays.DAT.OutDims-Tuple",href:"#YAXArrays.DAT.OutDims-Tuple"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutDims")],-1)),s[37]||(s[37]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[38]||(s[38]=l('
julia
OutDims(axisdesc;...)

Creates a description of an Output Data Cube for cube operations. Takes a single or a Vector/Tuple of axes as first argument. Axes can be specified by their name (String), through an Axis type, or by passing a concrete axis.

  • axisdesc: List of input axis names

  • backend : specifies the dataset backend to write data to, must be either :auto or a key in YAXArrayBase.backendlist

  • update : specifies wether the function operates inplace or if an output is returned

  • artype : specifies the Array type inside the inner function that is mapped over

  • chunksize: A Dict specifying the chunksizes for the output dimensions of the cube, or :input to copy chunksizes from input cube axes or :max to not chunk the inner dimensions

  • outtype: force the output type to a specific type, defaults to Any which means that the element type of the first input cube is used

source

',4))]),e("details",C,[e("summary",null,[s[39]||(s[39]=e("a",{id:"YAXArrays.DAT.CubeTable-Tuple{}",href:"#YAXArrays.DAT.CubeTable-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.CubeTable")],-1)),s[40]||(s[40]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[41]||(s[41]=l('
julia
CubeTable()

Function to turn a DataCube object into an iterable table. Takes a list of as arguments, specified as a name=cube expression. For example CubeTable(data=cube1,country=cube2) would generate a Table with the entries data and country, where data contains the values of cube1 and country the values of cube2. The cubes are matched and broadcasted along their axes like in mapCube.

source

',3))]),e("details",D,[e("summary",null,[s[42]||(s[42]=e("a",{id:"YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}",href:"#YAXArrays.DAT.cubefittable-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cubefittable")],-1)),s[43]||(s[43]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[44]||(s[44]=l('
julia
cubefittable(tab,o,fitsym;post=getpostfunction(o),kwargs...)

Executes fittable on the CubeTable tab with the (Weighted-)OnlineStat o, looping through the values specified by fitsym. Finally, writes the results from the TableAggregator to an output data cube.

source

',3))]),e("details",v,[e("summary",null,[s[45]||(s[45]=e("a",{id:"YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}",href:"#YAXArrays.DAT.fittable-Tuple{YAXArrays.DAT.CubeIterator, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.fittable")],-1)),s[46]||(s[46]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=l('
julia
fittable(tab,o,fitsym;by=(),weight=nothing)

Loops through an iterable table tab and thereby fitting an OnlineStat o with the values specified through fitsym. Optionally one can specify a field (or tuple) to group by. Any groupby specifier can either be a symbol denoting the entry to group by or an anynymous function calculating the group from a table row.

For example the following would caluclate a weighted mean over a cube weighted by grid cell area and grouped by country and month:

julia
fittable(iter,WeightedMean,:tair,weight=(i->abs(cosd(i.lat))),by=(i->month(i.time),:country))

source

',5))]),e("details",T,[e("summary",null,[s[48]||(s[48]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Dataset, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[49]||(s[49]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of all cubes of the dataset ds. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

For Datasets, only one output cube can be specified. In contrast to the mapCube function for cubes, additional arguments for the inner function should be set as keyword arguments.

For the specific keyword arguments see the docstring of the mapCube function for cubes.

source

',5))]),e("details",F,[e("summary",null,[s[51]||(s[51]=e("a",{id:"YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}",href:"#YAXArrays.DAT.mapCube-Tuple{Function, Tuple, Vararg{Any}}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.mapCube")],-1)),s[52]||(s[52]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=l('
julia
mapCube(fun, cube, addargs...;kwargs...)

Map a given function fun over slices of the data cube cube. The additional arguments addargs will be forwarded to the inner function fun. Use InDims to discribe the input dimensions and OutDims to describe the output dimensions of the function.

Keyword arguments

  • max_cache=YAXDefaults.max_cache Float64 maximum size of blocks that are read into memory in bits e.g. max_cache=5.0e8. Or String. e.g. max_cache="10MB" or max_cache=1GB defaults to approx 10Mb.

  • indims::InDims List of input cube descriptors of type InDims for each input data cube.

  • outdims::OutDims List of output cube descriptors of type OutDims for each output cube.

  • inplace does the function write to an output array inplace or return a single value> defaults to true

  • ispar boolean to determine if parallelisation should be applied, defaults to true if workers are available.

  • showprog boolean indicating if a ProgressMeter shall be shown

  • include_loopvars boolean to indicate if the varoables looped over should be added as function arguments

  • nthreads number of threads for the computation, defaults to Threads.nthreads for every worker.

  • loopchunksize determines the chunk sizes of variables which are looped over, a dict

  • kwargs additional keyword arguments are passed to the inner function

The first argument is always the function to be applied, the second is the input cube or a tuple of input cubes if needed.

source

',6))]),e("details",X,[e("summary",null,[s[54]||(s[54]=e("a",{id:"YAXArrays.Datasets.Dataset",href:"#YAXArrays.Datasets.Dataset"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[55]||(s[55]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[56]||(s[56]=e("p",null,[a("Dataset object which stores an "),e("code",null,"OrderedDict"),a(" of YAXArrays with Symbol keys. A dictionary of CubeAxes and a Dictionary of general properties. A dictionary can hold cubes with differing axes. But it will share the common axes between the subcubes.")],-1)),s[57]||(s[57]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L18-L22",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Y,[e("summary",null,[s[58]||(s[58]=e("a",{id:"YAXArrays.Datasets.Dataset-Tuple{}",href:"#YAXArrays.Datasets.Dataset-Tuple{}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Dataset")],-1)),s[59]||(s[59]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[60]||(s[60]=l('
julia
Dataset(; properties = Dict{String,Any}, cubes...)

Construct a YAXArray Dataset with global attributes properties a and a list of named YAXArrays cubes...

source

',3))]),e("details",x,[e("summary",null,[s[61]||(s[61]=e("a",{id:"YAXArrays.Datasets.Cube-Tuple{Dataset}",href:"#YAXArrays.Datasets.Cube-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.Cube")],-1)),s[62]||(s[62]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[63]||(s[63]=l('
julia
Cube(ds::Dataset; joinname="Variables")

Construct a single YAXArray from the dataset ds by concatenating the cubes in the datset on the joinname dimension.

source

',3))]),e("details",w,[e("summary",null,[s[64]||(s[64]=e("a",{id:"YAXArrays.Datasets.open_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.open_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_dataset")],-1)),s[65]||(s[65]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[66]||(s[66]=l('
julia
open_dataset(g; skip_keys=(), driver=:all)

Open the dataset at g with the given driver. The default driver will search for available drivers and tries to detect the useable driver from the filename extension.

Keyword arguments

  • skip_keys are passed as symbols, i.e., skip_keys = (:a, :b)

  • driver=:all, common options are :netcdf or :zarr.

Example:

julia
ds = open_dataset(f, driver=:zarr, skip_keys = (:c,))

source

',7))]),e("details",L,[e("summary",null,[s[67]||(s[67]=e("a",{id:'YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}',href:'#YAXArrays.Datasets.open_mfdataset-Tuple{DimensionalData.DimVector{var"#s34", D, R, A} where {var"#s34"<:AbstractString, D<:Tuple, R<:Tuple, A<:AbstractVector{var"#s34"}}}'},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.open_mfdataset")],-1)),s[68]||(s[68]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[69]||(s[69]=l(`
julia
open_mfdataset(files::DD.DimVector{<:AbstractString}; kwargs...)

Opens and concatenates a list of dataset paths along the dimension specified in files. This method can be used when the generic glob-based version of open_mfdataset fails or is too slow. For example, to concatenate a list of annual NetCDF files along the time dimension, one can use:

julia
files = ["1990.nc","1991.nc","1992.nc"]
 open_mfdataset(DD.DimArray(files, YAX.time()))

alternatively, if the dimension to concatenate along does not exist yet, the dimension provided in the input arg is used:

julia
files = ["a.nc", "b.nc", "c.nc"]
-open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

`,6))]),e("details",M,[e("summary",null,[s[70]||(s[70]=e("a",{id:"YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}",href:"#YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savecube")],-1)),s[71]||(s[71]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[72]||(s[72]=l('
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source

',6))]),e("details",B,[e("summary",null,[s[73]||(s[73]=e("a",{id:"YAXArrays.Datasets.savedataset-Tuple{Dataset}",href:"#YAXArrays.Datasets.savedataset-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[74]||(s[74]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[75]||(s[75]=l('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),e("details",O,[e("summary",null,[s[76]||(s[76]=e("a",{id:"YAXArrays.Datasets.to_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.to_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.to_dataset")],-1)),s[77]||(s[77]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[78]||(s[78]=l('
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

',3))]),s[160]||(s[160]=e("h2",{id:"Internal-API",tabindex:"-1"},[a("Internal API "),e("a",{class:"header-anchor",href:"#Internal-API","aria-label":'Permalink to "Internal API {#Internal-API}"'},"​")],-1)),e("details",I,[e("summary",null,[s[79]||(s[79]=e("a",{id:"YAXArrays.YAXDefaults",href:"#YAXArrays.YAXDefaults"},[e("span",{class:"jlbinding"},"YAXArrays.YAXDefaults")],-1)),s[80]||(s[80]=a()),i(t,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),s[81]||(s[81]=l('

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source

',3))]),e("details",J,[e("summary",null,[s[82]||(s[82]=e("a",{id:"YAXArrays.findAxis-Tuple{Any, Any}",href:"#YAXArrays.findAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.findAxis")],-1)),s[83]||(s[83]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[84]||(s[84]=l('
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',7))]),e("details",P,[e("summary",null,[s[85]||(s[85]=e("a",{id:"YAXArrays.getOutAxis-NTuple{5, Any}",href:"#YAXArrays.getOutAxis-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getOutAxis")],-1)),s[86]||(s[86]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[87]||(s[87]=l('
julia
getOutAxis

source

',2))]),e("details",q,[e("summary",null,[s[88]||(s[88]=e("a",{id:"YAXArrays.get_descriptor-Tuple{String}",href:"#YAXArrays.get_descriptor-Tuple{String}"},[e("span",{class:"jlbinding"},"YAXArrays.get_descriptor")],-1)),s[89]||(s[89]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[90]||(s[90]=l('
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

',3))]),e("details",z,[e("summary",null,[s[91]||(s[91]=e("a",{id:"YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}",href:"#YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.match_axis")],-1)),s[92]||(s[92]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[93]||(s[93]=l(`
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
+open_mfdataset(DD.DimArray(files, DD.Dim{:NewDim}(["a","b","c"])))

source

`,6))]),e("details",M,[e("summary",null,[s[70]||(s[70]=e("a",{id:"YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}",href:"#YAXArrays.Datasets.savecube-Tuple{Any, AbstractString}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savecube")],-1)),s[71]||(s[71]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[72]||(s[72]=l('
julia
savecube(cube,name::String)

Save a YAXArray to the path.

Extended Help

The keyword arguments are:

  • name:

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • max_cache: The number of bits that are used as cache for the data handling.

  • backend: The backend, that is used to save the data. Falls back to searching the backend according to the extension of the path.

  • driver: The same setting as backend.

  • overwrite::Bool=false overwrite cube if it already exists

source

',6))]),e("details",B,[e("summary",null,[s[73]||(s[73]=e("a",{id:"YAXArrays.Datasets.savedataset-Tuple{Dataset}",href:"#YAXArrays.Datasets.savedataset-Tuple{Dataset}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.savedataset")],-1)),s[74]||(s[74]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[75]||(s[75]=l('
julia
savedataset(ds::Dataset; path= "", persist=nothing, overwrite=false, append=false, skeleton=false, backend=:all, driver=backend, max_cache=5e8, writefac=4.0)

Saves a Dataset into a file at path with the format given by driver, i.e., driver=:netcdf or driver=:zarr.

Warning

overwrite=true, deletes ALL your data and it will create a new file.

source

',4))]),e("details",O,[e("summary",null,[s[76]||(s[76]=e("a",{id:"YAXArrays.Datasets.to_dataset-Tuple{Any}",href:"#YAXArrays.Datasets.to_dataset-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.to_dataset")],-1)),s[77]||(s[77]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[78]||(s[78]=l('
julia
to_dataset(c;datasetaxis = "Variables", layername = "layer")

Convert a Data Cube into a Dataset. It is possible to treat one of the Cube's axes as a datasetaxis i.e. the cube will be split into different parts that become variables in the Dataset. If no such axis is specified or found, there will only be a single variable in the dataset with the name layername.

source

',3))]),s[160]||(s[160]=e("h2",{id:"Internal-API",tabindex:"-1"},[a("Internal API "),e("a",{class:"header-anchor",href:"#Internal-API","aria-label":'Permalink to "Internal API {#Internal-API}"'},"​")],-1)),e("details",I,[e("summary",null,[s[79]||(s[79]=e("a",{id:"YAXArrays.YAXDefaults",href:"#YAXArrays.YAXDefaults"},[e("span",{class:"jlbinding"},"YAXArrays.YAXDefaults")],-1)),s[80]||(s[80]=a()),i(t,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),s[81]||(s[81]=l('

Default configuration for YAXArrays, has the following fields:

  • workdir[]::String = "./" The default location for temporary cubes.

  • recal[]::Bool = false set to true if you want @loadOrGenerate to always recalculate the results.

  • chunksize[]::Any = :input Set the default output chunksize.

  • max_cache[]::Float64 = 1e8 The maximum cache used by mapCube.

  • cubedir[]::"" the default location for Cube() without an argument.

  • subsetextensions::Array{Any} = [] List of registered functions, that convert subsetting input into dimension boundaries.

source

',3))]),e("details",J,[e("summary",null,[s[82]||(s[82]=e("a",{id:"YAXArrays.findAxis-Tuple{Any, Any}",href:"#YAXArrays.findAxis-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.findAxis")],-1)),s[83]||(s[83]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[84]||(s[84]=l('
julia
findAxis(desc, c)

Internal function

Extended Help

Given an Axis description and a cube return the index of the Axis.

The Axis description can be:

  • the name as a string or symbol.

  • an Axis object

source

',7))]),e("details",P,[e("summary",null,[s[85]||(s[85]=e("a",{id:"YAXArrays.getOutAxis-NTuple{5, Any}",href:"#YAXArrays.getOutAxis-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.getOutAxis")],-1)),s[86]||(s[86]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[87]||(s[87]=l('
julia
getOutAxis

source

',2))]),e("details",q,[e("summary",null,[s[88]||(s[88]=e("a",{id:"YAXArrays.get_descriptor-Tuple{String}",href:"#YAXArrays.get_descriptor-Tuple{String}"},[e("span",{class:"jlbinding"},"YAXArrays.get_descriptor")],-1)),s[89]||(s[89]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[90]||(s[90]=l('
julia
get_descriptor(a)

Get the descriptor of an Axis. This is used to dispatch on the descriptor.

source

',3))]),e("details",z,[e("summary",null,[s[91]||(s[91]=e("a",{id:"YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}",href:"#YAXArrays.match_axis-Tuple{YAXArrays.ByName, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.match_axis")],-1)),s[92]||(s[92]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[93]||(s[93]=l(`
julia
match_axis

Internal function

Extended Help

Match the Axis based on the AxisDescriptor.
 This is used to find different axes and to make certain axis description the same.
-For example to disregard differences of captialisation.

source

`,5))]),e("details",N,[e("summary",null,[s[94]||(s[94]=e("a",{id:"YAXArrays.Cubes.CleanMe",href:"#YAXArrays.Cubes.CleanMe"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.CleanMe")],-1)),s[95]||(s[95]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[96]||(s[96]=l('
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

',3))]),e("details",S,[e("summary",null,[s[97]||(s[97]=e("a",{id:"YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}",href:"#YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.clean")],-1)),s[98]||(s[98]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[99]||(s[99]=l('
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

',3))]),e("details",R,[e("summary",null,[s[100]||(s[100]=e("a",{id:"YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}",href:"#YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.copydata")],-1)),s[101]||(s[101]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[102]||(s[102]=l('
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

',3))]),e("details",V,[e("summary",null,[s[103]||(s[103]=e("a",{id:"YAXArrays.Cubes.optifunc-NTuple{7, Any}",href:"#YAXArrays.Cubes.optifunc-NTuple{7, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.optifunc")],-1)),s[104]||(s[104]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=l('
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

',4))]),e("details",G,[e("summary",null,[s[106]||(s[106]=e("a",{id:"YAXArrays.DAT.DATConfig",href:"#YAXArrays.DAT.DATConfig"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.DATConfig")],-1)),s[107]||(s[107]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[108]||(s[108]=l('

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::NTuple{NIN, YAXArrays.DAT.InputCube} where NIN: The input data cubes

  • outcubes::NTuple{NOUT, YAXArrays.DAT.OutputCube} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source

',3))]),e("details",W,[e("summary",null,[s[109]||(s[109]=e("a",{id:"YAXArrays.DAT.InputCube",href:"#YAXArrays.DAT.InputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InputCube")],-1)),s[110]||(s[110]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[111]||(s[111]=l('

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source

',3))]),e("details",U,[e("summary",null,[s[112]||(s[112]=e("a",{id:"YAXArrays.DAT.OutputCube",href:"#YAXArrays.DAT.OutputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutputCube")],-1)),s[113]||(s[113]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[114]||(s[114]=l('

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source

',4))]),e("details",K,[e("summary",null,[s[115]||(s[115]=e("a",{id:"YAXArrays.DAT.YAXColumn",href:"#YAXArrays.DAT.YAXColumn"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.YAXColumn")],-1)),s[116]||(s[116]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[117]||(s[117]=l('
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source

',4))]),e("details",$,[e("summary",null,[s[118]||(s[118]=e("a",{id:"YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}",href:"#YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cmpcachmisses")],-1)),s[119]||(s[119]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=e("p",null,"Function that compares two cache miss specifiers by their importance",-1)),s[121]||(s[121]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DAT/DAT.jl#L958-L960",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",H,[e("summary",null,[s[122]||(s[122]=e("a",{id:"YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}",href:"#YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getFrontPerm")],-1)),s[123]||(s[123]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e("p",null,"Calculate an axis permutation that brings the wanted dimensions to the front",-1)),s[125]||(s[125]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DAT/DAT.jl#L1203",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Z,[e("summary",null,[s[126]||(s[126]=e("a",{id:"YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}",href:"#YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getLoopCacheSize")],-1)),s[127]||(s[127]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[128]||(s[128]=e("p",null,"Calculate optimal Cache size to DAT operation",-1)),s[129]||(s[129]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DAT/DAT.jl#L1057",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Q,[e("summary",null,[s[130]||(s[130]=e("a",{id:"YAXArrays.DAT.getOuttype-Tuple{Int64, Any}",href:"#YAXArrays.DAT.getOuttype-Tuple{Int64, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getOuttype")],-1)),s[131]||(s[131]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[132]||(s[132]=l('
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

',4))]),e("details",_,[e("summary",null,[s[133]||(s[133]=e("a",{id:"YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}",href:"#YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getloopchunks")],-1)),s[134]||(s[134]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[135]||(s[135]=l('
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.\nThis computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

',4))]),e("details",ss,[e("summary",null,[s[136]||(s[136]=e("a",{id:"YAXArrays.DAT.permuteloopaxes-Tuple{Any}",href:"#YAXArrays.DAT.permuteloopaxes-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.permuteloopaxes")],-1)),s[137]||(s[137]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[138]||(s[138]=l('
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

',4))]),e("details",es,[e("summary",null,[s[139]||(s[139]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[140]||(s[140]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[141]||(s[141]=l('
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',6))]),e("details",as,[e("summary",null,[s[142]||(s[142]=e("a",{id:"YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}",href:"#YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.collectfromhandle")],-1)),s[143]||(s[143]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[144]||(s[144]=e("p",null,"Extracts a YAXArray from a dataset handle that was just created from a arrayinfo",-1)),s[145]||(s[145]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L561-L563",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ts,[e("summary",null,[s[146]||(s[146]=e("a",{id:"YAXArrays.Datasets.createdataset-Tuple{Any, Any}",href:"#YAXArrays.Datasets.createdataset-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.createdataset")],-1)),s[147]||(s[147]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[148]||(s[148]=l('
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source

',5))]),e("details",is,[e("summary",null,[s[149]||(s[149]=e("a",{id:"YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}",href:"#YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.getarrayinfo")],-1)),s[150]||(s[150]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=e("p",null,"Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair",-1)),s[152]||(s[152]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L530-L532",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ls,[e("summary",null,[s[153]||(s[153]=e("a",{id:"YAXArrays.Datasets.testrange-Tuple{Any}",href:"#YAXArrays.Datasets.testrange-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.testrange")],-1)),s[154]||(s[154]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[155]||(s[155]=e("p",null,"Test if data in x can be approximated by a step range",-1)),s[156]||(s[156]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/687ede1d3de69995fd30d7c43816f9fed9d95632/src/DatasetAPI/Datasets.jl#L312",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const ks=n(d,[["render",ns]]);export{cs as __pageData,ks as default}; +For example to disregard differences of captialisation.

source

`,5))]),e("details",N,[e("summary",null,[s[94]||(s[94]=e("a",{id:"YAXArrays.Cubes.CleanMe",href:"#YAXArrays.Cubes.CleanMe"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.CleanMe")],-1)),s[95]||(s[95]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[96]||(s[96]=l('
julia
mutable struct CleanMe

Struct which describes data paths and their persistency. Non-persistend paths/files are removed at finalize step

source

',3))]),e("details",S,[e("summary",null,[s[97]||(s[97]=e("a",{id:"YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}",href:"#YAXArrays.Cubes.clean-Tuple{YAXArrays.Cubes.CleanMe}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.clean")],-1)),s[98]||(s[98]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[99]||(s[99]=l('
julia
clean(c::CleanMe)

finalizer function for CleanMe struct. The main process removes all directories/files which are not persistent.

source

',3))]),e("details",R,[e("summary",null,[s[100]||(s[100]=e("a",{id:"YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}",href:"#YAXArrays.Cubes.copydata-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.copydata")],-1)),s[101]||(s[101]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[102]||(s[102]=l('
julia
copydata(outar, inar, copybuf)

Internal function which copies the data from the input inar into the output outar at the copybuf positions.

source

',3))]),e("details",V,[e("summary",null,[s[103]||(s[103]=e("a",{id:"YAXArrays.Cubes.optifunc-NTuple{7, Any}",href:"#YAXArrays.Cubes.optifunc-NTuple{7, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.optifunc")],-1)),s[104]||(s[104]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[105]||(s[105]=l('
julia
optifunc(s, maxbuf, incs, outcs, insize, outsize, writefac)

Internal

This function is going to be minimized to detect the best possible chunk setting for the rechunking of the data.

source

',4))]),e("details",G,[e("summary",null,[s[106]||(s[106]=e("a",{id:"YAXArrays.DAT.DATConfig",href:"#YAXArrays.DAT.DATConfig"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.DATConfig")],-1)),s[107]||(s[107]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[108]||(s[108]=l('

Configuration object of a DAT process. This holds all necessary information to perform the calculations. It contains the following fields:

  • incubes::NTuple{NIN, YAXArrays.DAT.InputCube} where NIN: The input data cubes

  • outcubes::NTuple{NOUT, YAXArrays.DAT.OutputCube} where NOUT: The output data cubes

  • allInAxes::Vector: List of all axes of the input cubes

  • LoopAxes::Vector: List of axes that are looped through

  • ispar::Bool: Flag whether the computation is parallelized

  • loopcachesize::Vector{Int64}:

  • allow_irregular_chunks::Bool:

  • max_cache::Any: Maximal size of the in memory cache

  • fu::Any: Inner function which is computed

  • inplace::Bool: Flag whether the computation happens in place

  • include_loopvars::Bool:

  • ntr::Any:

  • do_gc::Bool: Flag if GC should be called explicitly. Probably necessary for many runs in Julia 1.9

  • addargs::Any: Additional arguments for the inner function

  • kwargs::Any: Additional keyword arguments for the inner function

source

',3))]),e("details",W,[e("summary",null,[s[109]||(s[109]=e("a",{id:"YAXArrays.DAT.InputCube",href:"#YAXArrays.DAT.InputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.InputCube")],-1)),s[110]||(s[110]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[111]||(s[111]=l('

Internal representation of an input cube for DAT operations

  • cube: The input data

  • desc: The input description given by the user/registration

  • axesSmall: List of axes that were actually selected through the description

  • icolon

  • colonperm

  • loopinds: Indices of loop axes that this cube does not contain, i.e. broadcasts

  • cachesize: Number of elements to keep in cache along each axis

  • window

  • iwindow

  • windowloopinds

  • iall

source

',3))]),e("details",U,[e("summary",null,[s[112]||(s[112]=e("a",{id:"YAXArrays.DAT.OutputCube",href:"#YAXArrays.DAT.OutputCube"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.OutputCube")],-1)),s[113]||(s[113]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[114]||(s[114]=l('

Internal representation of an output cube for DAT operations

Fields

  • cube: The actual outcube cube, once it is generated

  • cube_unpermuted: The unpermuted output cube

  • desc: The description of the output axes as given by users or registration

  • axesSmall: The list of output axes determined through the description

  • allAxes: List of all the axes of the cube

  • loopinds: Index of the loop axes that are broadcasted for this output cube

  • innerchunks

  • outtype: Elementtype of the outputcube

source

',4))]),e("details",K,[e("summary",null,[s[115]||(s[115]=e("a",{id:"YAXArrays.DAT.YAXColumn",href:"#YAXArrays.DAT.YAXColumn"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.YAXColumn")],-1)),s[116]||(s[116]=a()),i(t,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[117]||(s[117]=l('
julia
YAXColumn

A struct representing a single column of a YAXArray partitioned Table # Fields

  • inarBC

  • inds

source

',4))]),e("details",$,[e("summary",null,[s[118]||(s[118]=e("a",{id:"YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}",href:"#YAXArrays.DAT.cmpcachmisses-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.cmpcachmisses")],-1)),s[119]||(s[119]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[120]||(s[120]=e("p",null,"Function that compares two cache miss specifiers by their importance",-1)),s[121]||(s[121]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DAT/DAT.jl#L958-L960",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",H,[e("summary",null,[s[122]||(s[122]=e("a",{id:"YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}",href:"#YAXArrays.DAT.getFrontPerm-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getFrontPerm")],-1)),s[123]||(s[123]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=e("p",null,"Calculate an axis permutation that brings the wanted dimensions to the front",-1)),s[125]||(s[125]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DAT/DAT.jl#L1203",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Z,[e("summary",null,[s[126]||(s[126]=e("a",{id:"YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}",href:"#YAXArrays.DAT.getLoopCacheSize-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getLoopCacheSize")],-1)),s[127]||(s[127]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[128]||(s[128]=e("p",null,"Calculate optimal Cache size to DAT operation",-1)),s[129]||(s[129]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DAT/DAT.jl#L1057",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",Q,[e("summary",null,[s[130]||(s[130]=e("a",{id:"YAXArrays.DAT.getOuttype-Tuple{Int64, Any}",href:"#YAXArrays.DAT.getOuttype-Tuple{Int64, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getOuttype")],-1)),s[131]||(s[131]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[132]||(s[132]=l('
julia
getOuttype(outtype, cdata)

Internal function

Get the element type for the output cube

source

',4))]),e("details",_,[e("summary",null,[s[133]||(s[133]=e("a",{id:"YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}",href:"#YAXArrays.DAT.getloopchunks-Tuple{YAXArrays.DAT.DATConfig}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.getloopchunks")],-1)),s[134]||(s[134]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[135]||(s[135]=l('
julia
getloopchunks(dc::DATConfig)

Internal function

Returns the chunks that can be looped over toghether for all dimensions.\nThis computation of the size of the chunks is handled by [`DiskArrays.approx_chunksize`](@ref)

source

',4))]),e("details",ss,[e("summary",null,[s[136]||(s[136]=e("a",{id:"YAXArrays.DAT.permuteloopaxes-Tuple{Any}",href:"#YAXArrays.DAT.permuteloopaxes-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.DAT.permuteloopaxes")],-1)),s[137]||(s[137]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[138]||(s[138]=l('
julia
permuteloopaxes(dc)

Internal function

Permute the dimensions of the cube, so that the axes that are looped through are in the first positions. This is necessary for a faster looping through the data.

source

',4))]),e("details",es,[e("summary",null,[s[139]||(s[139]=e("a",{id:"YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}",href:"#YAXArrays.Cubes.setchunks-Tuple{Dataset, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Cubes.setchunks")],-1)),s[140]||(s[140]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[141]||(s[141]=l('
julia
setchunks(c::Dataset,chunks)

Resets the chunks of all or a subset YAXArrays in the dataset and returns a new Dataset. Note that this will not change the chunking of the underlying data itself, it will just make the data "look" like it had a different chunking. If you need a persistent on-disk representation of this chunking, use savedataset on the resulting array. The chunks argument can take one of the following forms:

  • a NamedTuple or AbstractDict mapping from variable name to a description of the desired variable chunks

  • a NamedTuple or AbstractDict mapping from dimension name to a description of the desired variable chunks

  • a description of the desired variable chunks applied to all members of the Dataset

where a description of the desired variable chunks can take one of the following forms:

  • a DiskArrays.GridChunks object

  • a tuple specifying the chunk size along each dimension

  • an AbstractDict or NamedTuple mapping one or more axis names to chunk sizes

source

',6))]),e("details",as,[e("summary",null,[s[142]||(s[142]=e("a",{id:"YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}",href:"#YAXArrays.Datasets.collectfromhandle-Tuple{Any, Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.collectfromhandle")],-1)),s[143]||(s[143]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[144]||(s[144]=e("p",null,"Extracts a YAXArray from a dataset handle that was just created from a arrayinfo",-1)),s[145]||(s[145]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L561-L563",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ts,[e("summary",null,[s[146]||(s[146]=e("a",{id:"YAXArrays.Datasets.createdataset-Tuple{Any, Any}",href:"#YAXArrays.Datasets.createdataset-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.createdataset")],-1)),s[147]||(s[147]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[148]||(s[148]=l('
julia
function createdataset(DS::Type,axlist; kwargs...)

Creates a new dataset with axes specified in axlist. Each axis must be a subtype of CubeAxis. A new empty Zarr array will be created and can serve as a sink for mapCube operations.

Keyword arguments

  • path="" location where the new cube is stored

  • T=Union{Float32,Missing} data type of the target cube

  • chunksize = ntuple(i->length(axlist[i]),length(axlist)) chunk sizes of the array

  • chunkoffset = ntuple(i->0,length(axlist)) offsets of the chunks

  • persist::Bool=true shall the disk data be garbage-collected when the cube goes out of scope?

  • overwrite::Bool=false overwrite cube if it already exists

  • properties=Dict{String,Any}() additional cube properties

  • globalproperties=Dict{String,Any} global attributes to be added to the dataset

  • fillvalue= T>:Missing ? defaultfillval(Base.nonmissingtype(T)) : nothing fill value

  • datasetaxis="Variables" special treatment of a categorical axis that gets written into separate zarr arrays

  • layername="layer" Fallback name of the variable stored in the dataset if no datasetaxis is found

source

',5))]),e("details",is,[e("summary",null,[s[149]||(s[149]=e("a",{id:"YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}",href:"#YAXArrays.Datasets.getarrayinfo-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.getarrayinfo")],-1)),s[150]||(s[150]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=e("p",null,"Extract necessary information to create a YAXArrayBase dataset from a name and YAXArray pair",-1)),s[152]||(s[152]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L530-L532",target:"_blank",rel:"noreferrer"},"source")],-1))]),e("details",ls,[e("summary",null,[s[153]||(s[153]=e("a",{id:"YAXArrays.Datasets.testrange-Tuple{Any}",href:"#YAXArrays.Datasets.testrange-Tuple{Any}"},[e("span",{class:"jlbinding"},"YAXArrays.Datasets.testrange")],-1)),s[154]||(s[154]=a()),i(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[155]||(s[155]=e("p",null,"Test if data in x can be approximated by a step range",-1)),s[156]||(s[156]=e("p",null,[e("a",{href:"https://github.com/JuliaDataCubes/YAXArrays.jl/blob/bb1dd478377fa4fbbd57786a5579fb12f2bb0be9/src/DatasetAPI/Datasets.jl#L312",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const cs=n(d,[["render",ns]]);export{bs as __pageData,cs as default}; diff --git a/previews/PR481/assets/app.C6XJ8azz.js b/previews/PR481/assets/app.Bjz1K9It.js similarity index 95% rename from previews/PR481/assets/app.C6XJ8azz.js rename to previews/PR481/assets/app.Bjz1K9It.js index 5db1ea4b..7a3ad4f3 100644 --- a/previews/PR481/assets/app.C6XJ8azz.js +++ b/previews/PR481/assets/app.Bjz1K9It.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.vl07g5LM.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a5 as S}from"./chunks/framework.CmUrV9pg.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}; +import{R as p}from"./chunks/theme.CaJ052h0.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a5 as S}from"./chunks/framework.CmUrV9pg.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/previews/PR481/assets/chunks/@localSearchIndexroot.C8t7r5x6.js b/previews/PR481/assets/chunks/@localSearchIndexroot.C8t7r5x6.js new file mode 100644 index 00000000..3e4c1244 --- /dev/null +++ b/previews/PR481/assets/chunks/@localSearchIndexroot.C8t7r5x6.js @@ -0,0 +1 @@ +const e='{"documentCount":112,"nextId":112,"documentIds":{"0":"/YAXArrays.jl/previews/PR481/UserGuide/cache.html#Caching-YAXArrays","1":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Chunk-YAXArrays","2":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Chunking-YAXArrays","3":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Chunking-Datasets","4":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Set-Chunks-by-Axis","5":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Set-chunking-by-Variable","6":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Set-chunking-for-all-variables","7":"/YAXArrays.jl/previews/PR481/UserGuide/combine.html#Combine-YAXArrays","8":"/YAXArrays.jl/previews/PR481/UserGuide/combine.html#cat-along-an-existing-dimension","9":"/YAXArrays.jl/previews/PR481/UserGuide/combine.html#concatenatecubes-to-a-new-dimension","10":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-YAXArrays","11":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-Base.Array","12":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-Raster","13":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-DimArray","14":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Compute-YAXArrays","15":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Modify-elements-of-a-YAXArray","16":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#arithmetics","17":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#map","18":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#mapslices","19":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#mapCube","20":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Operations-over-several-YAXArrays","21":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#OutDims-and-YAXArray-Properties","22":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#One-InDims-to-many-OutDims","23":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Many-InDims-to-many-OutDims","24":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Specify-path-in-OutDims","25":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Different-InDims-names","26":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Creating-a-vector-array","27":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Distributed-Computation","28":"/YAXArrays.jl/previews/PR481/UserGuide/create.html#Create-YAXArrays-and-Datasets","29":"/YAXArrays.jl/previews/PR481/UserGuide/create.html#Create-a-YAXArray","30":"/YAXArrays.jl/previews/PR481/UserGuide/create.html#Create-a-Dataset","31":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Frequently-Asked-Questions-(FAQ)","32":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Extract-the-axes-names-from-a-Cube","33":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#rebuild","34":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Obtain-values-from-axes-and-data-from-the-cube","35":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-concatenate-cubes","36":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-subset-a-YAXArray-(-Cube-)-or-Dataset?","37":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-YAXArray","38":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-Dataset","39":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-Dataset-whose-variables-share-all-their-dimensions","40":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-Dataset-whose-variables-share-some-but-not-all-of-their-dimensions","41":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-apply-map-algebra?","42":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-use-the-CubeTable-function?","43":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-assign-variable-names-to-YAXArrays-in-a-Dataset","44":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#One-variable-name","45":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Multiple-variable-names","46":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Ho-do-I-construct-a-Dataset-from-a-TimeArray","47":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Create-a-YAXArray-with-unions-containing-Strings","48":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#Group-YAXArrays-and-Datasets","49":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#Seasonal-Averages-from-Time-Series-of-Monthly-Means","50":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#Download-the-data","51":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#GroupBy:-seasons","52":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#dropdims","53":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#seasons","54":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#GroupBy:-weight","55":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#weights","56":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#weighted-seasons","57":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-YAXArrays-and-Datasets","58":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#open-dataset","59":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-Zarr","60":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-NetCDF","61":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-GDAL-(GeoTIFF,-GeoJSON)","62":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Load-data-into-memory","63":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#readcubedata","64":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#open-mfdataset","65":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#along-a-new-dimension","66":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#along-a-existing-dimension","67":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-YAXArrays-and-Datasets","68":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-a-YAXArray","69":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-elements","70":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-ranges","71":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Closed-and-open-intervals","72":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Get-a-dimension","73":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#types","74":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#yaxarray","75":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#dataset","76":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#(Data)-Cube","77":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#dimensions","78":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#Lon,-Lat,-time","79":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Write-YAXArrays-and-Datasets","80":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Write-Zarr","81":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#zarr-compression","82":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Write-NetCDF","83":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#netcdf-compression","84":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Overwrite-a-Dataset","85":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Append-to-a-Dataset","86":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Save-Skeleton","87":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Update-values-of-dataset","88":"/YAXArrays.jl/previews/PR481/api.html#API-Reference","89":"/YAXArrays.jl/previews/PR481/api.html#Public-API","90":"/YAXArrays.jl/previews/PR481/api.html#Internal-API","91":"/YAXArrays.jl/previews/PR481/development/contribute.html#Contribute-to-YAXArrays.jl","92":"/YAXArrays.jl/previews/PR481/development/contribute.html#Contribute-to-Documentation","93":"/YAXArrays.jl/previews/PR481/development/contribute.html#Build-docs-locally","94":"/YAXArrays.jl/previews/PR481/get_started.html#Getting-Started","95":"/YAXArrays.jl/previews/PR481/get_started.html#installation","96":"/YAXArrays.jl/previews/PR481/get_started.html#quickstart","97":"/YAXArrays.jl/previews/PR481/get_started.html#updates","98":"/YAXArrays.jl/previews/PR481/#How-to-Install-YAXArrays.jl?","99":"/YAXArrays.jl/previews/PR481/#Want-interoperability?","100":"/YAXArrays.jl/previews/PR481/tutorials/mean_seasonal_cycle.html#Mean-Seasonal-Cycle-for-a-single-pixel","101":"/YAXArrays.jl/previews/PR481/tutorials/mean_seasonal_cycle.html#Define-the-cube","102":"/YAXArrays.jl/previews/PR481/tutorials/mean_seasonal_cycle.html#Plot-results:-mean-seasonal-cycle","103":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#Other-tutorials","104":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#General-overview-of-the-functionality-of-YAXArrays","105":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#Table-style-iteration-over-YAXArrays","106":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#Combining-multiple-tiff-files-into-a-zarr-based-datacube","107":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Plotting-maps","108":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Heatmap-plot","109":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Wintri-Projection","110":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Moll-projection","111":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#3D-sphere-plot"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,86],"1":[2,1,58],"2":[2,2,57],"3":[2,2,9],"4":[4,4,76],"5":[4,4,76],"6":[5,4,81],"7":[2,1,31],"8":[5,2,82],"9":[5,2,92],"10":[2,1,52],"11":[3,2,85],"12":[2,2,41],"13":[2,2,122],"14":[2,1,119],"15":[5,2,30],"16":[1,2,72],"17":[1,2,120],"18":[1,2,88],"19":[1,2,22],"20":[4,3,211],"21":[4,3,100],"22":[5,7,128],"23":[5,7,98],"24":[4,7,90],"25":[3,3,150],"26":[4,3,245],"27":[2,2,138],"28":[4,1,14],"29":[3,4,109],"30":[3,4,45],"31":[5,1,19],"32":[7,5,77],"33":[1,11,90],"34":[8,5,76],"35":[5,5,90],"36":[10,5,33],"37":[3,14,142],"38":[3,14,18],"39":[9,14,69],"40":[13,14,158],"41":[7,5,113],"42":[8,5,168],"43":[11,5,1],"44":[3,15,24],"45":[3,15,59],"46":[8,5,139],"47":[7,5,79],"48":[4,1,32],"49":[8,4,35],"50":[3,4,131],"51":[2,4,169],"52":[1,6,101],"53":[1,6,48],"54":[2,4,111],"55":[1,6,84],"56":[2,6,348],"57":[4,1,14],"58":[2,4,75],"59":[2,6,187],"60":[2,6,251],"61":[5,6,90],"62":[4,6,42],"63":[1,10,142],"64":[2,4,94],"65":[4,6,87],"66":[4,6,93],"67":[4,1,165],"68":[3,4,105],"69":[2,4,115],"70":[2,4,129],"71":[4,4,143],"72":[3,4,71],"73":[1,1,16],"74":[1,1,113],"75":[1,1,78],"76":[3,1,70],"77":[1,1,32],"78":[3,2,100],"79":[4,1,146],"80":[2,4,19],"81":[2,5,52],"82":[2,4,20],"83":[2,5,44],"84":[3,4,73],"85":[4,4,157],"86":[2,4,154],"87":[4,4,93],"88":[2,1,10],"89":[2,2,597],"90":[2,2,463],"91":[4,1,15],"92":[3,4,40],"93":[3,5,75],"94":[2,1,1],"95":[1,2,34],"96":[1,2,199],"97":[1,2,49],"98":[6,1,37],"99":[3,1,21],"100":[7,1,73],"101":[3,7,133],"102":[5,7,48],"103":[2,1,49],"104":[6,2,12],"105":[5,2,38],"106":[9,2,1],"107":[2,1,135],"108":[2,2,21],"109":[2,1,46],"110":[2,2,33],"111":[3,2,57]},"averageFieldLength":[3.482142857142858,3.937499999999997,91.94642857142857],"storedFields":{"0":{"title":"Caching YAXArrays","titles":[]},"1":{"title":"Chunk YAXArrays","titles":[]},"2":{"title":"Chunking YAXArrays","titles":["Chunk YAXArrays"]},"3":{"title":"Chunking Datasets","titles":["Chunk YAXArrays"]},"4":{"title":"Set Chunks by Axis","titles":["Chunk YAXArrays","Chunking Datasets"]},"5":{"title":"Set chunking by Variable","titles":["Chunk YAXArrays","Chunking Datasets"]},"6":{"title":"Set chunking for all variables","titles":["Chunk YAXArrays","Chunking Datasets"]},"7":{"title":"Combine YAXArrays","titles":[]},"8":{"title":"cat along an existing dimension","titles":["Combine YAXArrays"]},"9":{"title":"concatenatecubes to a new dimension","titles":["Combine YAXArrays"]},"10":{"title":"Convert YAXArrays","titles":[]},"11":{"title":"Convert Base.Array","titles":["Convert YAXArrays"]},"12":{"title":"Convert Raster","titles":["Convert YAXArrays"]},"13":{"title":"Convert DimArray","titles":["Convert YAXArrays"]},"14":{"title":"Compute YAXArrays","titles":[]},"15":{"title":"Modify elements of a YAXArray","titles":["Compute YAXArrays"]},"16":{"title":"Arithmetics","titles":["Compute YAXArrays"]},"17":{"title":"map","titles":["Compute YAXArrays"]},"18":{"title":"mapslices","titles":["Compute YAXArrays"]},"19":{"title":"mapCube","titles":["Compute YAXArrays"]},"20":{"title":"Operations over several YAXArrays","titles":["Compute YAXArrays","mapCube"]},"21":{"title":"OutDims and YAXArray Properties","titles":["Compute YAXArrays","mapCube"]},"22":{"title":"One InDims to many OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"23":{"title":"Many InDims to many OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"24":{"title":"Specify path in OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"25":{"title":"Different InDims names","titles":["Compute YAXArrays","mapCube"]},"26":{"title":"Creating a vector array","titles":["Compute YAXArrays","mapCube"]},"27":{"title":"Distributed Computation","titles":["Compute YAXArrays"]},"28":{"title":"Create YAXArrays and Datasets","titles":[]},"29":{"title":"Create a YAXArray","titles":["Create YAXArrays and Datasets"]},"30":{"title":"Create a Dataset","titles":["Create YAXArrays and Datasets"]},"31":{"title":"Frequently Asked Questions (FAQ)","titles":[]},"32":{"title":"Extract the axes names from a Cube","titles":["Frequently Asked Questions (FAQ)"]},"33":{"title":"rebuild","titles":["Frequently Asked Questions (FAQ)","Extract the axes names from a Cube"]},"34":{"title":"Obtain values from axes and data from the cube","titles":["Frequently Asked Questions (FAQ)"]},"35":{"title":"How do I concatenate cubes","titles":["Frequently Asked Questions (FAQ)"]},"36":{"title":"How do I subset a YAXArray ( Cube ) or Dataset?","titles":["Frequently Asked Questions (FAQ)"]},"37":{"title":"Subsetting a YAXArray","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?"]},"38":{"title":"Subsetting a Dataset","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?"]},"39":{"title":"Subsetting a Dataset whose variables share all their dimensions","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?","Subsetting a Dataset"]},"40":{"title":"Subsetting a Dataset whose variables share some but not all of their dimensions","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?","Subsetting a Dataset"]},"41":{"title":"How do I apply map algebra?","titles":["Frequently Asked Questions (FAQ)"]},"42":{"title":"How do I use the CubeTable function?","titles":["Frequently Asked Questions (FAQ)"]},"43":{"title":"How do I assign variable names to YAXArrays in a Dataset","titles":["Frequently Asked Questions (FAQ)"]},"44":{"title":"One variable name","titles":["Frequently Asked Questions (FAQ)","How do I assign variable names to YAXArrays in a Dataset"]},"45":{"title":"Multiple variable names","titles":["Frequently Asked Questions (FAQ)","How do I assign variable names to YAXArrays in a Dataset"]},"46":{"title":"Ho do I construct a Dataset from a TimeArray","titles":["Frequently Asked Questions (FAQ)"]},"47":{"title":"Create a YAXArray with unions containing Strings","titles":["Frequently Asked Questions (FAQ)"]},"48":{"title":"Group YAXArrays and Datasets","titles":[]},"49":{"title":"Seasonal Averages from Time Series of Monthly Means","titles":["Group YAXArrays and Datasets"]},"50":{"title":"Download the data","titles":["Group YAXArrays and Datasets"]},"51":{"title":"GroupBy: seasons","titles":["Group YAXArrays and Datasets"]},"52":{"title":"dropdims","titles":["Group YAXArrays and Datasets","GroupBy: seasons"]},"53":{"title":"seasons","titles":["Group YAXArrays and Datasets","GroupBy: seasons"]},"54":{"title":"GroupBy: weight","titles":["Group YAXArrays and Datasets"]},"55":{"title":"weights","titles":["Group YAXArrays and Datasets","GroupBy: weight"]},"56":{"title":"weighted seasons","titles":["Group YAXArrays and Datasets","GroupBy: weight"]},"57":{"title":"Read YAXArrays and Datasets","titles":[]},"58":{"title":"open_dataset","titles":["Read YAXArrays and Datasets"]},"59":{"title":"Read Zarr","titles":["Read YAXArrays and Datasets","open_dataset"]},"60":{"title":"Read NetCDF","titles":["Read YAXArrays and Datasets","open_dataset"]},"61":{"title":"Read GDAL (GeoTIFF, GeoJSON)","titles":["Read YAXArrays and Datasets","open_dataset"]},"62":{"title":"Load data into memory","titles":["Read YAXArrays and Datasets","open_dataset"]},"63":{"title":"readcubedata","titles":["Read YAXArrays and Datasets","open_dataset","Load data into memory"]},"64":{"title":"open_mfdataset","titles":["Read YAXArrays and Datasets"]},"65":{"title":"along a new dimension","titles":["Read YAXArrays and Datasets","open_mfdataset"]},"66":{"title":"along a existing dimension","titles":["Read YAXArrays and Datasets","open_mfdataset"]},"67":{"title":"Select YAXArrays and Datasets","titles":[]},"68":{"title":"Select a YAXArray","titles":["Select YAXArrays and Datasets"]},"69":{"title":"Select elements","titles":["Select YAXArrays and Datasets"]},"70":{"title":"Select ranges","titles":["Select YAXArrays and Datasets"]},"71":{"title":"Closed and open intervals","titles":["Select YAXArrays and Datasets"]},"72":{"title":"Get a dimension","titles":["Select YAXArrays and Datasets"]},"73":{"title":"Types","titles":[]},"74":{"title":"YAXArray","titles":["Types"]},"75":{"title":"Dataset","titles":["Types"]},"76":{"title":"(Data) Cube","titles":["Types"]},"77":{"title":"Dimensions","titles":["Types"]},"78":{"title":"Lon, Lat, time","titles":["Types","Dimensions"]},"79":{"title":"Write YAXArrays and Datasets","titles":[]},"80":{"title":"Write Zarr","titles":["Write YAXArrays and Datasets"]},"81":{"title":"zarr compression","titles":["Write YAXArrays and Datasets","Write Zarr"]},"82":{"title":"Write NetCDF","titles":["Write YAXArrays and Datasets"]},"83":{"title":"netcdf compression","titles":["Write YAXArrays and Datasets","Write NetCDF"]},"84":{"title":"Overwrite a Dataset","titles":["Write YAXArrays and Datasets"]},"85":{"title":"Append to a Dataset","titles":["Write YAXArrays and Datasets"]},"86":{"title":"Save Skeleton","titles":["Write YAXArrays and Datasets"]},"87":{"title":"Update values of dataset","titles":["Write YAXArrays and Datasets"]},"88":{"title":"API Reference","titles":[]},"89":{"title":"Public API","titles":["API Reference"]},"90":{"title":"Internal API","titles":["API Reference"]},"91":{"title":"Contribute to YAXArrays.jl","titles":[]},"92":{"title":"Contribute to Documentation","titles":["Contribute to YAXArrays.jl"]},"93":{"title":"Build docs locally","titles":["Contribute to YAXArrays.jl","Contribute to Documentation"]},"94":{"title":"Getting Started","titles":[]},"95":{"title":"Installation","titles":["Getting Started"]},"96":{"title":"Quickstart","titles":["Getting Started"]},"97":{"title":"Updates","titles":["Getting Started"]},"98":{"title":"How to Install YAXArrays.jl?","titles":[]},"99":{"title":"Want interoperability?","titles":[]},"100":{"title":"Mean Seasonal Cycle for a single pixel","titles":[]},"101":{"title":"Define the cube","titles":["Mean Seasonal Cycle for a single pixel"]},"102":{"title":"Plot results: mean seasonal cycle","titles":["Mean Seasonal Cycle for a single pixel"]},"103":{"title":"Other tutorials","titles":[]},"104":{"title":"General overview of the functionality of YAXArrays","titles":["Other tutorials"]},"105":{"title":"Table-style iteration over YAXArrays","titles":["Other tutorials"]},"106":{"title":"Combining multiple tiff files into a zarr based datacube","titles":["Other tutorials"]},"107":{"title":"Plotting maps","titles":[]},"108":{"title":"Heatmap plot","titles":["Plotting maps"]},"109":{"title":"Wintri Projection","titles":[]},"110":{"title":"Moll projection","titles":["Wintri Projection"]},"111":{"title":"3D sphere plot","titles":["Wintri Projection"]}},"dirtCount":0,"index":[["δlon",{"2":{"109":1}}],["✘",{"2":{"78":8}}],["✔",{"2":{"78":9}}],["├──────────────────────┴────────────────────────────────────────",{"2":{"47":1}}],["├──────────────────────────┴─────────────────────────",{"2":{"37":1}}],["├──────────────────────────┴────────────────────────────────────",{"2":{"96":1}}],["├──────────────────────────┴─────────────────────────────────────",{"2":{"33":1}}],["├──────────────────────────┴─────────────────────────────────────────────",{"2":{"34":1,"42":1}}],["├──────────────────────────┴────────────────────────────────────────",{"2":{"23":1}}],["├──────────────────────────┴─────────────────────────────────",{"2":{"13":2}}],["├──────────────────────────┴────────────────────────────────",{"2":{"9":1}}],["├─────────────────────────────┴──────────────────────────────────────────",{"2":{"37":2}}],["├──────────────────────────────┴─────────────────────────────────",{"2":{"29":1}}],["├──────────────────────────────┴─────────────────────────────────────────",{"2":{"20":1,"32":1}}],["├────────────────────────────────┴───────────────────────────────────────",{"2":{"55":1}}],["├───────────────────────────────────┴────────────────────────────────────",{"2":{"101":1}}],["├─────────────────────────────────────┴──────────────────────────────────",{"2":{"59":1}}],["├───────────────────────────────────────┴───────────────────────",{"2":{"47":1}}],["├────────────────────────────────────────",{"2":{"37":1}}],["├───────────────────────────────────────────┴────────────────────────────",{"2":{"26":1,"42":1}}],["├──────────────────────────────────────────────┴────────────────",{"2":{"69":1}}],["├───────────────────────────────────────────────┴────────────────────────",{"2":{"20":2,"41":1,"70":2}}],["├────────────────────────────────────────────────┴───────────────────────",{"2":{"42":1,"54":1,"70":1,"71":5}}],["├─────────────────────────────────────────────────",{"2":{"25":1}}],["├─────────────────────────────────────────────────┴──────────────────────",{"2":{"18":1,"60":1,"63":3,"68":2,"69":2}}],["├──────────────────────────────────────────────────┴─────────────────────",{"2":{"51":1}}],["├────────────────────────────────────────────────────",{"2":{"29":1,"33":1}}],["├────────────────────────────────────────────────────────",{"2":{"13":2}}],["├────────────────────────────────────────────────────────────",{"2":{"14":1,"16":1,"17":1,"18":2,"20":3,"21":1,"22":1,"25":2,"26":2,"29":2,"32":1,"33":3,"34":1,"37":4,"41":3,"42":3,"50":1,"54":1,"63":3,"86":1,"96":1,"101":1}}],["├─────────────────────────────────────────────────────────────────",{"2":{"69":1}}],["├──────────────────────────────────────────────────────────────────",{"2":{"51":1,"54":1}}],["├─────────────────────────────────────────────────────────────────────┴",{"2":{"69":1}}],["├────────────────────────────────────────────────────────────────────────",{"2":{"51":1,"52":1,"54":1,"55":1,"56":3}}],["├────────────────────────────────────────────────────────────────────",{"2":{"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"25":2,"26":3,"29":1,"32":1,"33":2,"34":1,"35":1,"37":4,"41":3,"42":3,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":2,"70":3,"71":5,"86":1,"96":1,"101":1}}],["├───────────────────────────────────────────────────────────────",{"2":{"20":2,"23":1,"35":1,"50":1,"59":1,"60":1,"64":1,"68":2,"69":2,"70":3,"71":5}}],["├─────────────────────────────────────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────────────────────────────────",{"2":{"11":1,"47":2,"96":1}}],["├───────────────────────────────────────────────────────",{"2":{"9":1,"23":1}}],["├─────────────────────────────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────────────────────────",{"2":{"11":1,"47":2,"96":1}}],["├──────────────────────────────────────────────────",{"2":{"9":1}}],["├────────────────────────────────────────────────",{"2":{"13":1,"37":1}}],["├────────────────────────────────────────────┴───────────────────────────",{"2":{"18":1,"22":1,"25":1,"86":1}}],["├─────────────────────────────────────────",{"2":{"25":1}}],["├──────────────────────────────────┴────────────────────────────",{"2":{"72":1}}],["├─────────────────────────────────┴──────────────────────────────────────",{"2":{"35":1,"50":2,"96":1}}],["├─────────────────────────────────┴───────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────┴────────────────────────────────────────",{"2":{"14":1,"16":1,"17":1,"20":2,"26":1,"29":1,"41":2,"54":1}}],["├────────────────────────────┴────────────────────────",{"2":{"25":1}}],["├────────────────────────────┴───────────────────────────────────────────",{"2":{"21":1,"25":1,"26":1,"33":2,"37":1,"64":1}}],["├───────────────────────────┴────────────────────────────────────────────",{"2":{"26":1,"37":1}}],["├───────────────────────────┴───────────────────────────────────",{"2":{"11":1}}],["π",{"2":{"41":2,"100":1,"102":1}}],[">var",{"2":{"101":1}}],[">dates",{"2":{"101":1}}],[">month",{"2":{"89":1}}],[">abs",{"2":{"89":1}}],[">=",{"2":{"40":4}}],[">",{"2":{"40":2,"41":2,"101":1}}],["└──────────────────────────────────────────────────────────┘",{"2":{"37":1}}],["└───────────────────────────────────────────────────────────┘",{"2":{"25":1}}],["└──────────────────────────────────────────────────────────────────┘",{"2":{"13":2}}],["└──────────────────────────────────────────────────────────────────────┘",{"2":{"29":1,"33":1}}],["└────────────────────────────────────────────────────────────────────────────────┘",{"2":{"69":1}}],["└──────────────────────────────────────────────────────────────────────────────┘",{"2":{"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"25":2,"26":4,"29":1,"32":1,"33":2,"34":1,"35":1,"37":4,"41":3,"42":3,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":2,"70":3,"71":5,"86":1,"96":1,"101":1}}],["└─────────────────────────────────────────────────────────────────────────┘",{"2":{"23":1}}],["└───────────────────────────────────────────────────────────────────────┘",{"2":{"8":1}}],["└─────────────────────────────────────────────────────────────────────┘",{"2":{"11":1,"47":2,"72":1,"96":1}}],["└─────────────────────────────────────────────────────────────────┘",{"2":{"9":1}}],["`diskarrays",{"2":{"90":1}}],["`a",{"2":{"37":1}}],["`layer`",{"2":{"22":1}}],["quickstart",{"0":{"96":1}}],["query",{"2":{"67":1}}],["querying",{"2":{"63":1}}],["questions",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["quot",{"2":{"20":2,"42":2,"86":4,"89":8,"90":12}}],["∘",{"2":{"27":1}}],["|>",{"2":{"26":2}}],["⋱",{"2":{"26":1}}],["⋮",{"2":{"26":2,"72":1,"101":1}}],["^2",{"2":{"25":1}}],["⬔",{"2":{"21":1,"22":1,"35":1,"65":1,"96":1}}],["uv",{"2":{"111":1}}],["u",{"2":{"101":1}}],["up",{"2":{"89":1}}],["updates",{"0":{"97":1}}],["updated",{"2":{"87":1}}],["update",{"0":{"87":1},"2":{"87":2,"89":1}}],["updating",{"2":{"48":1,"87":1}}],["ucar",{"2":{"60":1,"67":1,"75":1,"79":1}}],["urls",{"2":{"57":1}}],["url",{"2":{"50":1,"59":1}}],["unreleased",{"2":{"98":1}}],["unpermuted",{"2":{"90":2}}],["unpractical",{"2":{"50":1}}],["underlying",{"2":{"89":1,"90":1,"97":1}}],["unlike",{"2":{"76":1}}],["unweighted",{"2":{"51":1,"56":1}}],["unique",{"2":{"101":1}}],["unidata",{"2":{"60":1,"67":1,"75":1,"79":1}}],["unit",{"2":{"61":1}}],["unitrange",{"2":{"51":2,"52":2,"56":6}}],["units",{"2":{"50":2,"59":1,"60":2,"63":6,"68":4,"69":6,"70":6,"71":10}}],["unions",{"0":{"47":1}}],["union",{"2":{"18":2,"20":4,"22":2,"24":1,"25":1,"26":1,"41":1,"42":2,"47":2,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"86":2,"87":1}}],["unordered",{"2":{"46":4,"51":2,"52":1,"53":1,"54":2,"55":2,"56":3}}],["unnecessary",{"2":{"26":1}}],["unchanged",{"2":{"17":1}}],["usage",{"2":{"78":1}}],["usually",{"2":{"59":1,"74":2,"75":2}}],["usual",{"2":{"51":1,"58":1}}],["us",{"2":{"26":1,"66":1}}],["useable",{"2":{"58":1,"89":1}}],["used",{"2":{"26":1,"27":1,"37":1,"51":1,"67":1,"72":1,"73":1,"74":1,"77":1,"78":1,"89":6,"90":3}}],["uses",{"2":{"24":1,"42":1,"60":1}}],["userguide",{"2":{"92":2}}],["users",{"2":{"90":1}}],["user",{"2":{"14":2,"16":1,"17":1,"27":1,"29":3,"30":1,"90":1}}],["use",{"0":{"42":1},"2":{"0":1,"8":1,"9":1,"14":4,"17":1,"27":2,"32":2,"37":1,"39":1,"40":1,"41":1,"42":2,"46":2,"48":1,"50":1,"52":1,"62":1,"64":1,"66":1,"71":2,"76":1,"81":1,"86":1,"89":4,"90":1,"98":1,"103":1,"105":1,"107":2}}],["useful",{"2":{"0":1,"76":1}}],["using",{"2":{"0":1,"8":2,"9":2,"13":1,"14":2,"20":3,"21":4,"26":3,"27":8,"29":1,"32":1,"33":2,"35":2,"37":2,"39":2,"40":2,"41":1,"42":1,"46":3,"48":5,"58":1,"59":2,"60":3,"61":2,"62":1,"64":1,"65":1,"66":1,"67":2,"69":3,"70":2,"78":1,"79":2,"85":1,"86":3,"96":1,"97":1,"98":1,"100":2,"101":2,"107":3}}],["+proj=moll",{"2":{"110":1}}],["+",{"2":{"16":2,"17":1,"20":2,"22":2,"25":1,"64":2,"65":1,"100":1,"109":1}}],["kwargs",{"2":{"89":5,"90":2}}],["know",{"2":{"63":1}}],["k",{"2":{"46":5,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["keyword",{"2":{"58":1,"85":1,"89":7,"90":2}}],["key",{"2":{"48":1,"89":1}}],["keys=",{"2":{"58":1,"89":1}}],["keyset",{"2":{"46":1}}],["keys",{"2":{"46":7,"58":3,"89":4}}],["keylist",{"2":{"45":1}}],["keeps",{"2":{"17":1}}],["keep",{"2":{"0":1,"90":1}}],["kb",{"2":{"14":1,"16":1,"17":1,"18":1,"20":2,"26":1,"29":2,"32":1,"35":1,"37":4,"41":3,"42":1,"69":1,"70":3,"71":5,"96":1,"101":1}}],["↗",{"2":{"14":1,"16":1,"17":1,"20":2,"21":1,"22":1,"23":1,"24":1,"25":3,"26":1,"29":3,"30":1,"32":3,"35":1,"37":5,"39":2,"41":3,"50":2,"51":1,"59":2,"60":2,"63":3,"64":1,"65":3,"66":1,"67":1,"68":2,"70":3,"71":5,"79":1,"85":2,"86":2,"96":1,"107":1}}],["jj+1",{"2":{"60":1,"67":1,"79":1,"85":1}}],["jj",{"2":{"60":1,"67":1,"79":1,"85":1}}],["joinname",{"2":{"89":1}}],["joinname=",{"2":{"89":1}}],["job",{"2":{"78":1}}],["journal",{"2":{"60":1,"67":1,"79":1,"85":1}}],["joe",{"2":{"49":1,"56":1}}],["j",{"2":{"56":8}}],["jan",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["jussieu",{"2":{"60":1,"67":1,"79":1,"85":1}}],["just",{"2":{"26":1,"74":1,"76":1,"89":1,"90":2}}],["jul",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["juliaδlon",{"2":{"109":1}}],["juliax",{"2":{"100":1}}],["juliapkg>",{"2":{"95":1,"97":1,"98":1}}],["juliapermuteloopaxes",{"2":{"90":1}}],["juliaproperties",{"2":{"23":1}}],["juliacopydata",{"2":{"90":1}}],["juliacollect",{"2":{"34":1,"72":1}}],["juliaclean",{"2":{"90":1}}],["juliacube",{"2":{"89":1}}],["juliacubefittable",{"2":{"89":1}}],["juliacubetable",{"2":{"89":1}}],["juliacaxes",{"2":{"89":1}}],["julian",{"2":{"81":1,"83":1}}],["juliasavecube",{"2":{"89":1}}],["juliasavedataset",{"2":{"80":1,"82":1,"84":2,"89":1}}],["juliasetchunks",{"2":{"89":1,"90":1}}],["juliaseasons",{"2":{"53":1}}],["juliaglmakie",{"2":{"108":1}}],["juliagroupby",{"2":{"78":1}}],["juliagetloopchunks",{"2":{"90":1}}],["juliagetouttype",{"2":{"90":1}}],["juliagetoutaxis",{"2":{"90":1}}],["juliaget",{"2":{"90":1}}],["juliagetaxis",{"2":{"89":1}}],["juliagettarrayaxes",{"2":{"46":1}}],["juliagen",{"2":{"20":1}}],["julialon",{"2":{"107":1}}],["julialookup",{"2":{"72":1}}],["julialatitudes",{"2":{"40":1}}],["juliaoptifunc",{"2":{"90":1}}],["juliaopen",{"2":{"58":1,"89":2}}],["juliaoutdims",{"2":{"89":1}}],["juliaoffset",{"2":{"17":1}}],["juliawith",{"2":{"56":1}}],["julia>",{"2":{"56":1,"93":1,"98":2,"101":2}}],["juliaurl",{"2":{"50":1}}],["juliausing",{"2":{"0":1,"2":1,"4":1,"5":1,"6":1,"8":1,"9":1,"11":1,"12":1,"13":1,"14":1,"20":1,"21":1,"26":1,"27":2,"29":2,"32":1,"33":1,"35":1,"37":1,"39":1,"40":1,"42":2,"46":1,"48":1,"56":1,"59":1,"60":1,"61":1,"64":1,"65":1,"66":1,"67":1,"69":1,"71":1,"78":1,"79":1,"80":1,"82":1,"86":1,"96":1,"99":4,"100":1,"107":1,"111":1}}],["juliakeylist",{"2":{"45":1}}],["juliaylonlat",{"2":{"37":1}}],["juliaytime3",{"2":{"37":1}}],["juliaytime2",{"2":{"37":1}}],["juliaytime",{"2":{"37":1}}],["juliay",{"2":{"37":1}}],["juliayaxcolumn",{"2":{"90":1}}],["juliayaxarray",{"2":{"89":1}}],["juliayax",{"2":{"0":1,"46":2}}],["juliato",{"2":{"89":1}}],["juliatos",{"2":{"68":2,"69":2,"70":3,"71":1,"72":1}}],["juliatempo",{"2":{"54":1}}],["juliatest",{"2":{"47":2}}],["juliat",{"2":{"37":1,"42":1,"100":1}}],["juliatspan",{"2":{"20":1}}],["juliavector",{"2":{"26":1}}],["juliar",{"2":{"86":1}}],["juliareadcubedata",{"2":{"63":1,"89":1}}],["juliaregions",{"2":{"26":2}}],["juliarandom",{"2":{"25":2}}],["juliaras2",{"2":{"12":1}}],["juliadataset",{"2":{"89":1}}],["juliadata3",{"2":{"30":1}}],["juliads2",{"2":{"85":1}}],["juliads",{"2":{"22":2,"24":2,"25":1,"39":1,"40":1,"58":1,"59":1,"60":1,"63":2,"83":1,"86":2,"87":3,"89":1}}],["juliadimarray",{"2":{"26":1}}],["juliadim",{"2":{"13":1}}],["juliaindims",{"2":{"22":1,"24":1,"89":1}}],["juliaimport",{"2":{"18":1,"95":1}}],["juliajulia>",{"2":{"20":5,"32":3,"33":2,"34":1,"35":1,"41":3,"42":3,"44":1,"45":1,"46":2,"51":2,"52":1,"54":2,"55":2,"56":3,"66":1,"71":4,"85":1,"86":1,"98":1,"101":2,"107":3}}],["juliamutable",{"2":{"90":1}}],["juliamatch",{"2":{"90":1}}],["juliamapcube",{"2":{"89":2}}],["juliamapslices",{"2":{"18":1,"27":1}}],["juliamovingwindow",{"2":{"89":1}}],["juliamy",{"2":{"60":1}}],["juliamean",{"2":{"56":1}}],["juliam2",{"2":{"11":1}}],["julia",{"2":{"10":1,"50":1,"60":1,"90":1,"93":1,"95":2,"96":1,"97":2,"98":2}}],["juliaall",{"2":{"86":1}}],["juliaaxes",{"2":{"37":1}}],["juliaa2",{"2":{"16":2,"29":2,"96":1}}],["juliaa",{"2":{"2":1,"15":3}}],["juliafig",{"2":{"100":1,"102":1,"109":1,"110":1}}],["juliafindaxis",{"2":{"90":1}}],["juliafittable",{"2":{"89":2}}],["juliafiles",{"2":{"65":2,"89":2}}],["juliafunction",{"2":{"20":1,"22":1,"23":1,"25":1,"51":1,"89":1,"90":1,"101":1}}],["juliaf",{"2":{"2":1,"4":1,"5":1,"6":1,"20":1}}],["jun",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["jl",{"0":{"91":1,"98":1},"1":{"92":1,"93":1},"2":{"12":1,"13":1,"42":1,"46":2,"50":1,"51":1,"56":1,"74":1,"77":1,"78":1,"91":1,"93":2,"95":1,"96":2,"97":3,"98":2,"105":1}}],["8901",{"2":{"61":1}}],["89",{"2":{"59":4,"60":2,"61":1,"63":3,"67":1,"68":2,"69":1,"70":1,"71":5,"72":3,"79":1,"85":1,"107":2}}],["8984",{"2":{"56":1}}],["89237",{"2":{"56":1}}],["86",{"2":{"72":2}}],["86457",{"2":{"56":1}}],["862644",{"2":{"13":1}}],["85",{"2":{"72":2,"109":1,"110":1}}],["850",{"2":{"56":1}}],["85ºn",{"2":{"40":1}}],["85714",{"2":{"26":1}}],["88",{"2":{"35":1,"59":4,"72":2,"96":1,"107":2}}],["889583",{"2":{"26":1}}],["81",{"2":{"29":1}}],["828388",{"2":{"96":1}}],["825496",{"2":{"96":1}}],["827727",{"2":{"96":1}}],["82421875",{"2":{"61":2}}],["824354",{"2":{"26":1}}],["829062",{"2":{"26":1}}],["847062",{"2":{"87":2}}],["840",{"2":{"64":1}}],["840389",{"2":{"26":1}}],["84",{"2":{"61":2}}],["845983",{"2":{"11":1}}],["8",{"2":{"20":12,"26":2,"34":1,"37":1,"60":2,"63":3,"67":1,"68":2,"79":1,"85":1,"101":1}}],["80871",{"2":{"96":1}}],["80759",{"2":{"56":1}}],["800",{"2":{"33":3,"34":1,"37":1}}],["80",{"2":{"20":1,"40":2}}],["879677",{"2":{"96":1}}],["87",{"2":{"72":2}}],["87705",{"2":{"56":1}}],["875658",{"2":{"26":1}}],["872575",{"2":{"13":1}}],["870826",{"2":{"11":1}}],["833498",{"2":{"96":1}}],["831968",{"2":{"87":2}}],["830391",{"2":{"11":1}}],["83556",{"2":{"11":1}}],["921",{"2":{"87":2}}],["923876",{"2":{"87":2}}],["926096",{"2":{"13":1}}],["991508",{"2":{"87":2}}],["957463",{"2":{"96":1}}],["952795",{"2":{"96":1}}],["958973",{"2":{"96":1}}],["95",{"2":{"56":1}}],["959705",{"2":{"96":1}}],["95965",{"2":{"87":2}}],["959",{"2":{"56":1}}],["953391",{"2":{"13":1}}],["97643",{"2":{"96":1}}],["97649",{"2":{"56":1}}],["973442",{"2":{"96":1}}],["973332",{"2":{"13":1}}],["97047",{"2":{"56":1}}],["94534",{"2":{"56":1}}],["9404",{"2":{"51":1,"52":1}}],["9432",{"2":{"51":1,"52":1}}],["949935",{"2":{"11":1}}],["982108",{"2":{"96":1}}],["986",{"2":{"56":1}}],["98",{"2":{"40":6}}],["984803",{"2":{"26":1}}],["908084",{"2":{"96":1}}],["903079",{"2":{"96":1}}],["90365",{"2":{"56":1}}],["90712",{"2":{"56":1}}],["90",{"2":{"40":2,"61":1,"71":5}}],["9375",{"2":{"59":2,"107":1}}],["93743",{"2":{"56":1}}],["9362",{"2":{"56":1}}],["93986",{"2":{"26":1}}],["935631",{"2":{"11":1}}],["9",{"2":{"20":14,"26":2,"34":1,"37":1,"50":2,"54":4,"70":4,"81":2,"83":1,"90":1}}],["9122",{"2":{"61":1}}],["9192",{"2":{"56":1}}],["91",{"2":{"32":1,"71":5}}],["916686",{"2":{"13":1}}],["918555",{"2":{"11":1}}],["96x71x19",{"2":{"60":1,"67":1,"79":1,"85":1}}],["96f0",{"2":{"60":1,"67":1,"79":1}}],["9682",{"2":{"51":1,"52":1}}],["96921e36",{"2":{"50":2}}],["960",{"2":{"21":1,"22":1,"26":1}}],["96",{"2":{"8":1,"9":1,"40":6,"69":2,"85":1}}],["v",{"2":{"60":1,"67":1,"79":1,"85":1}}],["v1",{"2":{"60":2,"67":2,"79":2,"85":2,"95":1}}],["v20190710",{"2":{"59":1,"107":2}}],["vol",{"2":{"60":1,"67":1,"79":1,"85":1}}],["volume",{"2":{"46":4}}],["voilà",{"2":{"46":1}}],["video",{"2":{"103":1}}],["videos",{"2":{"103":1}}],["via",{"2":{"51":1}}],["visualization",{"2":{"42":1}}],["view",{"2":{"26":1,"96":1}}],["vice",{"2":{"10":1}}],["vector",{"0":{"26":1},"2":{"26":4,"34":1,"47":1,"51":1,"53":1,"54":3,"55":2,"56":1,"66":1,"74":1,"89":2,"90":3}}],["version",{"2":{"59":1,"60":1,"67":1,"79":1,"85":1,"89":1,"97":2,"98":1,"107":1}}],["versa",{"2":{"10":1}}],["verify",{"2":{"55":1,"87":1}}],["very",{"2":{"17":1,"42":1,"74":1}}],["val",{"2":{"34":2,"72":1}}],["vals",{"2":{"26":1}}],["value",{"2":{"16":1,"18":3,"20":2,"41":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"89":4,"90":1}}],["values=ds1",{"2":{"42":1}}],["values",{"0":{"34":1,"87":1},"2":{"9":1,"24":1,"25":1,"26":2,"28":1,"29":2,"32":2,"33":1,"34":1,"40":3,"42":4,"45":1,"46":2,"65":2,"66":1,"70":1,"72":2,"74":1,"75":1,"86":1,"87":3,"89":9,"96":1,"107":1}}],["varoables",{"2":{"89":1}}],["variant",{"2":{"59":1,"107":1}}],["variable",{"0":{"5":1,"43":1,"44":1,"45":1},"1":{"44":1,"45":1},"2":{"5":1,"9":1,"40":3,"59":1,"63":2,"86":2,"89":1,"90":6,"96":1,"100":1,"101":1,"102":1,"107":1}}],["variables=at",{"2":{"41":2,"96":1}}],["variables",{"0":{"6":1,"39":1,"40":1},"2":{"4":5,"5":4,"6":2,"9":4,"10":1,"21":2,"22":1,"23":1,"24":1,"25":1,"30":1,"35":2,"38":1,"39":2,"40":11,"44":1,"45":4,"46":11,"59":4,"60":1,"61":1,"62":1,"63":1,"65":3,"66":1,"67":1,"75":1,"76":1,"78":3,"79":1,"85":4,"86":1,"89":5,"90":1,"96":2,"107":4}}],["varlist",{"2":{"45":2}}],["var2=var2",{"2":{"39":1}}],["var2",{"2":{"35":2,"39":3,"41":1}}],["var1=var1",{"2":{"39":1}}],["var1",{"2":{"35":2,"39":3,"41":1}}],["var",{"2":{"9":2,"100":2,"101":2,"102":2}}],["0e8",{"2":{"89":1}}],["0436",{"2":{"96":1}}],["04t00",{"2":{"65":1,"66":1}}],["0465",{"2":{"56":1}}],["029247418895843032",{"2":{"101":1}}],["022312156353890087",{"2":{"101":1}}],["02345835017256051",{"2":{"101":1}}],["0247931",{"2":{"96":1}}],["02t00",{"2":{"65":1,"66":2}}],["02",{"2":{"59":1,"65":2}}],["0210077",{"2":{"11":1}}],["0214057",{"2":{"11":1}}],["0f20",{"2":{"59":1,"60":2,"63":6,"68":4,"69":6,"70":6,"71":10}}],["0f32",{"2":{"20":2}}],["039451611552802975",{"2":{"101":1}}],["03528277758302477",{"2":{"101":1}}],["0358348",{"2":{"11":1}}],["03t00",{"2":{"66":1}}],["03",{"2":{"65":2}}],["03361",{"2":{"56":1}}],["06417594925348342",{"2":{"101":1}}],["06159722707791853",{"2":{"101":1}}],["06t00",{"2":{"66":1}}],["062270000476910094",{"2":{"101":1}}],["0625",{"2":{"59":2,"107":1}}],["0620649",{"2":{"13":1}}],["06755",{"2":{"56":1}}],["08158557886952912",{"2":{"101":1}}],["08058305464254185",{"2":{"101":1}}],["0833026",{"2":{"96":1}}],["08",{"2":{"50":2,"54":1}}],["09689360224777122",{"2":{"101":1}}],["0962708",{"2":{"96":1}}],["0940127",{"2":{"87":2}}],["09",{"2":{"50":2,"54":1}}],["0ºe",{"2":{"40":1}}],["0750790675265741",{"2":{"101":1}}],["07t00",{"2":{"66":2}}],["07",{"2":{"59":2,"64":1,"107":1}}],["0723492",{"2":{"26":1}}],["0702532",{"2":{"13":1}}],["00722034",{"2":{"56":1}}],["00709111",{"2":{"56":1}}],["00684233",{"2":{"56":1}}],["00693713",{"2":{"56":1}}],["00990356",{"2":{"56":1}}],["0057",{"2":{"56":1}}],["00388",{"2":{"56":1}}],["00",{"2":{"24":4,"46":16,"50":8,"54":4,"59":9,"60":8,"63":12,"65":4,"66":16,"67":4,"68":8,"69":8,"70":12,"71":20,"79":4,"85":4,"107":5}}],["0174532925199433",{"2":{"61":1}}],["0178074",{"2":{"56":1}}],["01t03",{"2":{"59":2,"107":1}}],["01t00",{"2":{"24":1,"46":4,"59":2,"107":1}}],["0114824",{"2":{"96":1}}],["0117519",{"2":{"56":1}}],["0115514",{"2":{"56":1}}],["0127077",{"2":{"56":1}}],["0123091",{"2":{"56":1}}],["0121037",{"2":{"56":1}}],["019016",{"2":{"56":1}}],["018571",{"2":{"56":1}}],["0182373",{"2":{"56":1}}],["0180572",{"2":{"56":1}}],["0183003",{"2":{"56":1}}],["018",{"2":{"51":1,"52":1}}],["01",{"2":{"14":6,"16":3,"17":3,"18":3,"20":12,"21":6,"22":3,"24":2,"25":9,"26":9,"27":3,"29":9,"30":3,"37":22,"39":8,"40":11,"46":8,"59":5,"60":4,"63":6,"64":2,"65":6,"66":8,"67":2,"68":4,"69":6,"70":6,"71":10,"79":2,"85":2,"100":2,"101":4,"107":5}}],["05742042630154354",{"2":{"101":1}}],["0571978",{"2":{"96":1}}],["05611581504766607",{"2":{"101":1}}],["0566881",{"2":{"13":1}}],["05846",{"2":{"56":1}}],["0537",{"2":{"51":1,"52":1}}],["05t00",{"2":{"24":1,"66":1}}],["05",{"2":{"21":2,"22":1,"25":3,"37":3,"64":1}}],["052264",{"2":{"13":1}}],["0",{"2":{"8":1,"9":1,"11":36,"13":45,"14":6,"15":2,"16":6,"17":6,"18":7,"20":303,"21":7,"22":7,"23":7,"24":6,"25":10,"26":75,"29":12,"30":6,"33":3,"34":1,"35":9,"37":1,"40":4,"41":27,"42":11,"47":2,"54":2,"55":40,"56":19,"59":7,"60":10,"61":6,"63":12,"64":1,"67":6,"68":8,"69":6,"70":14,"71":20,"72":7,"79":6,"81":1,"83":1,"84":1,"85":6,"86":1,"87":40,"89":2,"90":1,"96":80,"97":1,"100":2,"101":19,"102":1,"107":4,"109":2,"110":2,"111":2}}],["┤",{"2":{"8":2,"9":2,"11":2,"13":3,"14":2,"16":2,"17":2,"18":4,"20":10,"21":2,"22":2,"23":2,"25":6,"26":5,"29":4,"32":2,"33":6,"34":2,"35":2,"37":10,"41":6,"42":6,"47":4,"50":4,"51":4,"52":2,"54":6,"55":3,"56":6,"59":2,"60":2,"63":6,"64":2,"68":4,"69":5,"70":6,"71":10,"86":2,"96":4,"101":2}}],["┐",{"2":{"8":2,"9":2,"11":2,"13":4,"14":2,"16":2,"17":2,"18":4,"20":10,"21":2,"22":2,"23":2,"25":6,"26":8,"29":4,"32":2,"33":6,"34":2,"35":2,"37":10,"41":6,"42":6,"47":4,"50":4,"51":3,"52":1,"54":5,"55":3,"56":3,"59":2,"60":2,"63":6,"64":2,"68":4,"69":7,"70":6,"71":10,"72":2,"86":2,"96":4,"101":2}}],["┌",{"2":{"8":1,"9":1,"11":1,"13":2,"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"23":1,"25":3,"26":4,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"47":2,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"72":1,"86":1,"96":2,"101":1}}],["76",{"2":{"72":2}}],["70",{"2":{"70":3}}],["7030",{"2":{"61":1}}],["701332",{"2":{"26":1}}],["730",{"2":{"102":1}}],["7341",{"2":{"56":1}}],["73",{"2":{"56":1}}],["731779",{"2":{"13":1}}],["790617",{"2":{"96":1}}],["79472",{"2":{"96":1}}],["79",{"2":{"60":2,"63":3,"67":1,"68":2,"69":2,"70":4,"71":5,"72":3,"79":1,"85":1}}],["79502",{"2":{"56":1}}],["796375",{"2":{"13":1}}],["757781",{"2":{"96":1}}],["75",{"2":{"72":2}}],["7593",{"2":{"56":1}}],["75891",{"2":{"56":1}}],["752417",{"2":{"26":1}}],["75269",{"2":{"11":1}}],["776172",{"2":{"96":1}}],["77687",{"2":{"56":1}}],["77",{"2":{"72":2}}],["77587",{"2":{"56":1}}],["770949",{"2":{"13":1}}],["743343",{"2":{"96":1}}],["748725",{"2":{"96":1}}],["746259",{"2":{"87":2}}],["74",{"2":{"72":2}}],["744521",{"2":{"13":1}}],["74732",{"2":{"11":1}}],["716721",{"2":{"96":1}}],["716952",{"2":{"87":2}}],["717",{"2":{"71":5}}],["71",{"2":{"70":1}}],["7158",{"2":{"51":1,"52":1}}],["7119",{"2":{"51":1,"52":1}}],["71429",{"2":{"26":2}}],["718667",{"2":{"13":1}}],["71314",{"2":{"13":1}}],["78064",{"2":{"96":1}}],["783779",{"2":{"96":1}}],["787476",{"2":{"96":1}}],["78",{"2":{"70":1,"72":2}}],["781773",{"2":{"26":1}}],["78467",{"2":{"11":1}}],["789891",{"2":{"11":1}}],["7",{"2":{"8":1,"20":10,"25":3,"26":1,"29":1,"34":1,"50":2,"59":1,"64":9,"65":3,"66":1,"83":1,"107":1}}],["→",{"2":{"4":1,"5":1,"6":1,"9":1,"11":1,"13":3,"14":1,"16":1,"17":1,"18":1,"20":2,"21":1,"22":1,"23":1,"24":1,"25":3,"26":6,"29":3,"30":1,"32":3,"33":3,"34":1,"35":1,"37":6,"39":2,"40":2,"41":3,"42":2,"45":2,"46":4,"47":2,"50":2,"51":1,"59":2,"60":2,"61":1,"63":3,"64":1,"65":3,"66":1,"67":1,"68":2,"69":1,"70":3,"71":5,"79":1,"85":2,"86":2,"96":2,"107":1}}],["↓",{"2":{"4":3,"5":3,"6":1,"8":1,"9":1,"11":1,"13":3,"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"23":1,"24":1,"25":3,"26":6,"29":3,"30":1,"32":3,"33":3,"34":1,"35":1,"37":6,"39":2,"40":8,"41":3,"42":3,"44":1,"45":3,"46":4,"47":2,"50":2,"51":3,"52":1,"54":4,"55":2,"56":3,"59":2,"60":2,"61":1,"63":3,"64":1,"65":3,"66":1,"67":1,"68":2,"69":3,"70":3,"71":5,"72":1,"79":1,"85":2,"86":2,"96":2,"101":2,"107":1}}],["45×170×24",{"2":{"71":5}}],["456765",{"2":{"11":1}}],["415137",{"2":{"96":1}}],["4198",{"2":{"56":1}}],["41241",{"2":{"56":1}}],["41049",{"2":{"56":1}}],["41634",{"2":{"56":1}}],["417937",{"2":{"26":1}}],["487093",{"2":{"96":1}}],["487315",{"2":{"96":1}}],["48367",{"2":{"56":1}}],["48",{"2":{"50":2,"96":1}}],["480",{"2":{"25":2,"42":1}}],["40",{"2":{"40":2}}],["400",{"2":{"11":1,"86":1,"100":1,"102":1}}],["44",{"2":{"37":1,"41":3}}],["4×30",{"2":{"26":1}}],["4×3×7",{"2":{"25":1}}],["4×3×2",{"2":{"23":1}}],["496429",{"2":{"96":1}}],["499743",{"2":{"96":1}}],["49909",{"2":{"56":1}}],["4947",{"2":{"56":1}}],["497189",{"2":{"26":1}}],["492817",{"2":{"13":1}}],["46506",{"2":{"56":1}}],["465103",{"2":{"26":1}}],["46",{"2":{"35":1,"96":1}}],["463503",{"2":{"26":1}}],["4326",{"2":{"61":1}}],["43254",{"2":{"56":1}}],["4325",{"2":{"51":1,"52":1}}],["432286",{"2":{"26":1}}],["435994",{"2":{"13":1}}],["472308",{"2":{"26":1}}],["475725",{"2":{"13":1}}],["42857",{"2":{"26":2}}],["42",{"2":{"15":3}}],["426519",{"2":{"11":1}}],["4",{"2":{"4":4,"5":4,"13":1,"20":4,"21":4,"22":2,"23":2,"24":1,"25":8,"26":9,"34":1,"35":1,"40":6,"51":2,"52":1,"53":1,"54":2,"55":2,"56":4,"64":1,"86":3,"87":2,"96":3,"100":1,"102":1}}],["3d",{"0":{"111":1}}],["3hr",{"2":{"59":2,"107":3}}],["34818",{"2":{"56":1}}],["34832",{"2":{"56":1}}],["348362",{"2":{"11":1}}],["34549",{"2":{"56":1}}],["34218",{"2":{"56":1}}],["337016",{"2":{"87":2}}],["337926",{"2":{"11":1}}],["33565",{"2":{"56":1}}],["320869",{"2":{"96":1}}],["320052",{"2":{"96":1}}],["32555",{"2":{"56":1}}],["3252",{"2":{"51":1,"52":1}}],["32149",{"2":{"56":1}}],["3×3",{"2":{"47":1}}],["3×20",{"2":{"42":1}}],["384×192×251288",{"2":{"59":1}}],["3866",{"2":{"56":1}}],["38364",{"2":{"56":1}}],["3835",{"2":{"51":1,"52":1}}],["38",{"2":{"37":1,"70":3}}],["312",{"2":{"56":1}}],["31753",{"2":{"56":1}}],["3169",{"2":{"56":1}}],["3188",{"2":{"56":1}}],["31",{"2":{"37":2,"39":1,"40":1,"100":1,"101":2}}],["374138",{"2":{"96":1}}],["37",{"2":{"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["372",{"2":{"56":1}}],["372761",{"2":{"26":1}}],["37878",{"2":{"56":1}}],["376135",{"2":{"26":1}}],["35762",{"2":{"87":2}}],["35700351866494",{"2":{"59":4,"107":2}}],["35432",{"2":{"56":1}}],["35483",{"2":{"56":1}}],["359",{"2":{"40":1,"59":2,"60":2,"63":3,"67":1,"68":2,"69":1,"72":2,"79":1,"85":1,"107":1}}],["35",{"2":{"14":1,"16":1,"17":1,"26":1,"29":1}}],["39",{"2":{"14":1,"20":3,"22":1,"23":1,"33":1,"35":1,"37":1,"39":1,"40":1,"41":2,"56":1,"58":1,"62":1,"63":1,"67":1,"77":1,"81":1,"89":2,"92":4,"101":3}}],["366",{"2":{"102":1}}],["366625",{"2":{"13":1}}],["365×1",{"2":{"101":1}}],["365",{"2":{"101":1,"102":4}}],["36126",{"2":{"56":1}}],["36142",{"2":{"56":1}}],["36836",{"2":{"56":1}}],["369",{"2":{"40":1}}],["36",{"2":{"37":1,"39":2,"40":1,"54":1}}],["3600",{"2":{"37":1,"39":2}}],["364288",{"2":{"11":1}}],["303359",{"2":{"96":1}}],["309666",{"2":{"96":1}}],["307f8f0e584a39a050c042849004e6a2bd674f99",{"2":{"61":1}}],["3069",{"2":{"56":1}}],["30018",{"2":{"56":1}}],["30142",{"2":{"56":1}}],["30113",{"2":{"56":1}}],["30×15×10",{"2":{"20":1}}],["30×10×15",{"2":{"14":1,"16":1,"17":1,"26":1,"29":1}}],["30",{"2":{"12":2,"14":3,"16":1,"17":1,"18":2,"20":5,"26":5,"27":2,"29":4,"30":2,"56":2,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"107":1}}],["3",{"2":{"4":8,"5":8,"6":10,"13":1,"14":1,"15":3,"16":3,"17":2,"20":4,"21":3,"22":1,"23":3,"24":1,"25":14,"26":6,"29":3,"32":5,"34":1,"37":4,"41":4,"42":5,"46":1,"47":2,"50":2,"51":2,"56":31,"59":1,"60":1,"63":3,"64":5,"68":2,"70":4,"71":5,"85":1,"86":3,"89":1,"96":3,"100":2}}],["zoom",{"2":{"111":1}}],["zopen",{"2":{"59":1,"87":1,"107":1}}],["zeros",{"2":{"86":3,"101":1}}],["z",{"2":{"4":2,"5":3,"6":2,"85":2}}],["zarray",{"2":{"87":1}}],["zarr",{"0":{"59":1,"80":1,"81":1,"106":1},"1":{"81":1},"2":{"0":1,"2":2,"4":2,"5":2,"6":2,"13":1,"20":5,"21":1,"24":2,"27":1,"47":1,"58":2,"59":3,"80":5,"81":5,"84":3,"85":4,"86":6,"87":2,"89":4,"90":2,"99":2,"107":1}}],["xticklabelalign",{"2":{"100":1,"102":1}}],["xticklabelrotation",{"2":{"100":1,"102":1}}],["xlabel=",{"2":{"100":1,"102":1}}],["xdim",{"2":{"78":3}}],["xx",{"2":{"60":1,"67":1,"79":1,"85":1}}],["xc",{"2":{"50":2}}],["xarray",{"2":{"49":1,"50":1}}],["x26",{"2":{"26":12,"40":12}}],["x3c",{"2":{"26":12,"40":4,"89":1}}],["xyz",{"2":{"25":2}}],["xy",{"2":{"23":2}}],["xyt",{"2":{"23":2,"25":2}}],["xin",{"2":{"22":8,"23":11,"25":8,"26":3,"41":3}}],["xout",{"2":{"20":2,"22":6,"23":6,"25":2,"26":3}}],["x",{"2":{"4":2,"5":3,"6":2,"12":1,"13":3,"17":2,"41":4,"47":2,"50":2,"51":2,"52":1,"56":3,"61":1,"74":1,"87":2,"90":1,"96":3,"100":1,"101":6}}],["ndata",{"2":{"109":2,"110":1,"111":1}}],["ndays",{"2":{"101":4}}],["nlon",{"2":{"109":2,"110":1}}],["npy",{"2":{"100":2,"101":2}}],["nin",{"2":{"90":2}}],["ntr",{"2":{"90":1}}],["ntuple",{"2":{"90":4}}],["nthreads",{"2":{"89":2}}],["nvalid",{"2":{"89":1}}],["n",{"2":{"73":1,"89":3}}],["n256",{"2":{"56":1}}],["nan",{"2":{"50":2,"51":48,"52":48,"56":384}}],["name=cube",{"2":{"89":1}}],["named",{"2":{"67":1,"69":1,"70":1,"74":1,"78":1,"89":2,"97":1}}],["namedtuple",{"2":{"22":1,"24":1,"89":1,"90":3}}],["names",{"0":{"25":1,"32":1,"43":1,"45":1},"1":{"33":1,"44":1,"45":1},"2":{"29":2,"46":1,"53":1,"74":2,"89":2,"90":1}}],["namely",{"2":{"20":1,"21":1}}],["name",{"0":{"44":1},"2":{"2":1,"22":4,"24":1,"45":1,"50":4,"51":1,"56":1,"59":3,"60":4,"63":12,"65":1,"68":8,"69":12,"70":12,"71":20,"77":1,"86":2,"89":6,"90":5,"96":1}}],["nc",{"2":{"50":2,"60":2,"64":4,"65":6,"66":2,"67":2,"79":2,"82":2,"83":3,"89":6}}],["number",{"2":{"49":1,"54":1,"81":1,"83":1,"89":2,"90":1,"101":1}}],["numbers",{"2":{"14":1,"96":1}}],["neighbour",{"2":{"89":1}}],["neighboring",{"2":{"17":1}}],["near",{"2":{"59":2,"71":1,"107":1}}],["needed",{"2":{"89":1}}],["need",{"2":{"45":1,"87":1,"89":1,"90":1,"92":1}}],["next",{"2":{"41":1,"42":1,"53":1,"78":1,"93":2}}],["necessary",{"2":{"20":1,"49":1,"50":1,"87":1,"90":4}}],["netcdf4",{"2":{"60":1}}],["netcdf",{"0":{"60":1,"82":1,"83":1},"1":{"83":1},"2":{"13":1,"47":1,"48":2,"58":1,"60":4,"62":1,"64":3,"65":1,"66":1,"67":2,"75":3,"79":2,"82":3,"83":2,"84":1,"89":3,"99":2}}],["newdim",{"2":{"78":2,"89":1}}],["new",{"0":{"9":1,"65":1},"2":{"14":1,"16":1,"20":1,"29":1,"32":1,"33":3,"48":1,"53":1,"64":1,"65":2,"76":1,"84":1,"85":1,"86":1,"89":5,"90":4,"92":6,"101":1}}],["nout",{"2":{"90":2}}],["normal",{"2":{"89":1,"111":1}}],["north",{"2":{"61":1}}],["nometadata",{"2":{"51":3,"52":2,"54":3,"55":1,"56":10}}],["november",{"2":{"60":1,"67":1,"79":1,"85":1}}],["nov",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["nonmissingtype",{"2":{"90":1}}],["none",{"2":{"40":2,"45":1,"46":1,"59":1,"85":1,"107":1}}],["non",{"2":{"27":1,"89":1,"90":1,"100":1}}],["now",{"2":{"20":3,"22":1,"26":1,"33":1,"35":1,"37":1,"42":1,"46":1,"51":1,"52":1,"54":1,"56":1,"58":1,"86":2,"87":1,"93":1}}],["no",{"2":{"13":1,"18":1,"25":1,"36":1,"81":1,"83":1,"86":1,"89":1,"90":1}}],["notice",{"2":{"81":1}}],["notation",{"2":{"37":1,"71":1}}],["nothing",{"2":{"22":1,"23":1,"25":1,"51":2,"54":4,"55":2,"56":5,"90":1}}],["note",{"2":{"9":1,"17":1,"20":4,"22":1,"25":1,"26":1,"33":1,"40":1,"47":1,"51":1,"52":1,"60":1,"63":1,"65":1,"86":1,"89":1,"90":1}}],["not",{"0":{"40":1},"2":{"0":1,"1":1,"17":1,"36":1,"40":3,"45":1,"46":2,"47":1,"50":1,"60":1,"78":1,"86":2,"89":3,"90":3}}],["bits",{"2":{"89":2}}],["big",{"2":{"74":1}}],["black",{"2":{"102":1}}],["blocks",{"2":{"89":1}}],["blosccompressor",{"2":{"81":1}}],["blue",{"2":{"61":1,"75":1}}],["bonito",{"2":{"111":1}}],["boundaries",{"2":{"90":1}}],["bounds",{"2":{"89":1}}],["both",{"2":{"66":1}}],["bold",{"2":{"56":1}}],["bool=true",{"2":{"90":1}}],["bool=false",{"2":{"89":1,"90":1}}],["boolean",{"2":{"89":3}}],["bool",{"2":{"47":3,"90":6}}],["bwr",{"2":{"56":1}}],["b`",{"2":{"37":1}}],["broad",{"2":{"104":1}}],["broadcasts",{"2":{"90":1}}],["broadcast",{"2":{"51":1,"56":1}}],["broadcasted",{"2":{"20":2,"89":1,"90":1}}],["brown",{"2":{"102":1}}],["browser",{"2":{"93":1}}],["brightness",{"2":{"74":1,"75":1}}],["brings",{"2":{"90":1}}],["bring",{"2":{"34":1}}],["branch",{"2":{"59":1,"107":1}}],["bug",{"2":{"91":1}}],["bundle",{"2":{"75":1}}],["build",{"0":{"93":1},"2":{"32":1,"93":1}}],["but",{"0":{"40":1},"2":{"8":1,"20":2,"32":1,"33":2,"40":2,"45":1,"46":2,"60":1,"69":1,"70":1,"78":1,"89":2}}],["b",{"2":{"21":2,"22":1,"23":1,"24":1,"26":13,"45":2,"58":1,"71":2,"89":3}}],["backgroundcolor=",{"2":{"111":1}}],["back",{"2":{"89":1}}],["backend",{"2":{"89":6}}],["backendlist",{"2":{"48":1,"89":1}}],["backend=",{"2":{"2":1,"20":2,"84":1,"85":1,"89":1}}],["based",{"0":{"106":1},"2":{"89":1,"90":1}}],["base",{"0":{"11":1},"2":{"4":4,"5":4,"6":2,"11":4,"22":1,"24":1,"29":3,"32":9,"33":6,"44":1,"45":5,"47":4,"51":1,"86":6,"90":1,"96":2}}],["by=",{"2":{"42":2,"89":2}}],["bytes",{"2":{"8":1,"9":1,"11":1,"13":1,"18":1,"20":3,"21":1,"22":1,"23":1,"25":3,"26":1,"33":3,"34":1,"37":1,"42":2,"47":2,"54":1,"64":1,"69":2,"83":4,"86":1,"96":1}}],["by",{"0":{"4":1,"5":1},"2":{"2":1,"14":2,"18":1,"20":1,"26":1,"28":1,"29":1,"33":1,"36":1,"37":6,"40":2,"42":1,"49":1,"50":1,"53":1,"54":1,"55":1,"56":1,"59":1,"60":1,"74":3,"76":1,"77":1,"78":2,"84":1,"87":2,"89":12,"90":6,"92":1,"93":1,"95":1,"101":1}}],["beware",{"2":{"103":1}}],["best",{"2":{"90":1,"105":1}}],["become",{"2":{"89":1}}],["because",{"2":{"1":1,"17":1,"18":1,"20":1}}],["before",{"2":{"86":1,"89":1,"93":1}}],["belonging",{"2":{"75":1}}],["belongs",{"2":{"26":1}}],["being",{"2":{"46":1}}],["been",{"2":{"40":1,"78":2,"87":1}}],["begin",{"2":{"27":1}}],["between",{"2":{"12":1,"13":1,"37":1,"39":1,"40":2,"71":1,"81":1,"83":1,"89":1}}],["be",{"2":{"0":5,"2":1,"3":1,"4":1,"10":1,"17":1,"19":1,"20":2,"26":1,"37":1,"40":1,"41":1,"42":2,"45":1,"46":1,"50":1,"59":2,"60":1,"61":1,"62":2,"63":1,"72":1,"74":1,"76":2,"78":2,"84":1,"85":1,"86":1,"89":23,"90":9,"92":1,"97":1,"98":1,"103":1,"107":1}}],["623962",{"2":{"96":1}}],["622774",{"2":{"96":1}}],["666534",{"2":{"96":1}}],["665274",{"2":{"96":1}}],["665723",{"2":{"11":1}}],["6326",{"2":{"61":1}}],["6378137",{"2":{"61":1}}],["63006",{"2":{"56":1}}],["69",{"2":{"59":1}}],["69085",{"2":{"56":1}}],["600",{"2":{"100":1,"102":1,"108":1,"109":1,"110":1}}],["60764",{"2":{"96":1}}],["60265",{"2":{"59":1,"107":1}}],["60918",{"2":{"56":1}}],["60175",{"2":{"56":1}}],["65105",{"2":{"56":1}}],["652339",{"2":{"11":1}}],["645512",{"2":{"96":1}}],["645758",{"2":{"11":1}}],["64976",{"2":{"56":1}}],["642",{"2":{"50":1}}],["683599",{"2":{"96":1}}],["684389",{"2":{"26":1}}],["685454",{"2":{"26":1}}],["687891",{"2":{"13":1}}],["671662",{"2":{"26":1}}],["672",{"2":{"25":1}}],["673373",{"2":{"11":1}}],["6122",{"2":{"56":1}}],["61197",{"2":{"56":1}}],["611084",{"2":{"11":1}}],["619",{"2":{"51":1,"52":1}}],["617023",{"2":{"13":1}}],["6×2",{"2":{"9":1}}],["6",{"2":{"2":6,"4":6,"5":6,"6":6,"8":4,"9":5,"20":8,"26":1,"34":1,"37":1,"59":1,"66":1,"107":1}}],["1e8",{"2":{"90":1}}],["1f2",{"2":{"47":1}}],["182371",{"2":{"87":2}}],["18583",{"2":{"56":1}}],["18892",{"2":{"56":1}}],["18434",{"2":{"56":1}}],["180×170",{"2":{"69":1}}],["180×170×24",{"2":{"60":1,"63":3,"68":2}}],["180",{"2":{"40":2,"61":1,"71":5,"109":1}}],["180ºe",{"2":{"40":1}}],["18",{"2":{"20":18}}],["170",{"2":{"72":1}}],["179919",{"2":{"96":1}}],["179",{"2":{"61":1,"71":5}}],["17578125",{"2":{"61":2}}],["17593",{"2":{"26":1}}],["17434",{"2":{"56":1}}],["174934",{"2":{"11":1}}],["17852",{"2":{"56":1}}],["17863",{"2":{"56":1}}],["178603",{"2":{"26":1}}],["17647",{"2":{"56":1}}],["1762",{"2":{"51":1,"52":1}}],["17t00",{"2":{"50":2,"54":1}}],["172",{"2":{"47":1}}],["17",{"2":{"18":1,"20":22,"42":1,"70":1}}],["191898",{"2":{"96":1}}],["1992",{"2":{"89":1}}],["1991",{"2":{"89":1}}],["1990",{"2":{"89":1}}],["198806",{"2":{"96":1}}],["1984",{"2":{"61":1}}],["1983",{"2":{"50":2,"54":1}}],["1980",{"2":{"50":2,"54":1}}],["19241",{"2":{"56":1}}],["192",{"2":{"23":1,"109":1}}],["19",{"2":{"20":16,"70":3,"71":5}}],["193109",{"2":{"13":1}}],["197238",{"2":{"11":1}}],["14715175267308206",{"2":{"101":1}}],["1437",{"2":{"56":1}}],["145747",{"2":{"26":1}}],["14286",{"2":{"26":1}}],["14",{"2":{"13":1,"20":20}}],["137114",{"2":{"96":1}}],["1372",{"2":{"51":1,"52":1}}],["136",{"2":{"60":1,"67":1,"79":1,"85":1}}],["1363",{"2":{"51":1,"52":1}}],["13z",{"2":{"59":2,"107":1}}],["13205",{"2":{"13":1}}],["13",{"2":{"13":1,"20":20,"60":1,"67":1,"79":1,"85":1}}],["16t00",{"2":{"60":4,"63":6,"67":2,"68":4,"69":4,"70":6,"71":10,"79":2,"85":2}}],["16t12",{"2":{"50":2,"54":1}}],["1644",{"2":{"56":1}}],["16824",{"2":{"56":1}}],["16581",{"2":{"56":1}}],["16631",{"2":{"56":1}}],["166212",{"2":{"11":1}}],["16713",{"2":{"56":1}}],["167676",{"2":{"26":1}}],["16258",{"2":{"56":1}}],["16",{"2":{"14":1,"16":1,"17":1,"20":20,"26":1,"29":1,"60":2,"63":3,"67":1,"68":2,"69":4,"70":3,"71":5,"79":1,"85":1}}],["169284",{"2":{"11":1}}],["155874",{"2":{"96":1}}],["15532",{"2":{"56":1}}],["158741",{"2":{"87":2}}],["159",{"2":{"70":1}}],["15644",{"2":{"56":1}}],["15394",{"2":{"26":1}}],["15×10×30",{"2":{"20":1}}],["15×10",{"2":{"20":2}}],["15",{"2":{"13":4,"14":1,"20":25,"26":6,"27":1,"29":1,"30":1,"35":2,"42":1,"50":2,"96":1}}],["151146",{"2":{"11":1}}],["152534",{"2":{"11":1}}],["128",{"2":{"111":1}}],["128204",{"2":{"11":1}}],["1242",{"2":{"56":1}}],["12575",{"2":{"56":1}}],["121",{"2":{"47":1}}],["121947",{"2":{"26":1}}],["12370988510072528",{"2":{"101":1}}],["123",{"2":{"21":1,"25":2}}],["1200",{"2":{"108":1,"109":1,"110":1}}],["120997",{"2":{"26":1}}],["120",{"2":{"20":1}}],["12",{"2":{"8":4,"13":1,"20":20,"37":10,"39":3,"40":4,"60":2,"63":3,"67":1,"68":2,"69":2,"70":3,"71":5,"79":1,"85":1,"100":1,"101":2}}],["1=5",{"2":{"2":1}}],["11391077060238619",{"2":{"101":1}}],["113553",{"2":{"55":3}}],["111379",{"2":{"96":1}}],["1159916",{"2":{"83":1}}],["119",{"2":{"69":1}}],["1181",{"2":{"56":1}}],["112319",{"2":{"55":12}}],["114815",{"2":{"55":6}}],["11",{"2":{"2":6,"4":6,"5":6,"6":6,"8":1,"13":1,"20":18,"51":4,"52":4,"56":4,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["1",{"2":{"2":12,"4":19,"5":20,"6":22,"8":5,"9":3,"11":1,"12":2,"13":6,"14":8,"15":3,"16":7,"17":5,"18":6,"20":24,"21":10,"22":9,"23":8,"24":5,"25":17,"26":34,"27":3,"29":15,"30":4,"32":3,"33":3,"34":8,"35":8,"37":23,"39":10,"40":8,"41":15,"42":14,"44":1,"45":3,"46":1,"47":5,"50":4,"51":4,"52":2,"54":6,"55":10,"56":54,"59":4,"60":12,"63":12,"64":17,"65":17,"66":4,"67":4,"68":8,"69":13,"70":18,"71":15,"72":4,"79":4,"85":11,"86":2,"87":2,"90":1,"96":11,"100":2,"101":5,"102":5,"107":3,"109":4,"110":2,"111":5}}],["10291543325743235",{"2":{"101":1}}],["1095",{"2":{"101":1}}],["10989",{"2":{"55":6}}],["10mb",{"2":{"89":2}}],["1083",{"2":{"56":1}}],["108696",{"2":{"55":6}}],["103704",{"2":{"55":3}}],["10×170×24",{"2":{"70":1}}],["10×10×24",{"2":{"70":2}}],["10×10×8",{"2":{"37":1}}],["10×10×12",{"2":{"37":1}}],["10×10×36",{"2":{"37":1}}],["10×10×5",{"2":{"32":1}}],["10×10",{"2":{"33":3,"34":1,"37":1}}],["10×15×20",{"2":{"41":1}}],["10×15",{"2":{"18":1,"26":2,"42":1,"96":1}}],["10×20×5",{"2":{"29":1}}],["10x15",{"2":{"26":1}}],["101524",{"2":{"26":1}}],["100",{"2":{"40":7}}],["100622",{"2":{"13":1}}],["1000",{"2":{"0":1,"109":1,"110":1}}],["10",{"2":{"2":14,"4":16,"5":18,"6":17,"11":2,"13":4,"14":3,"16":1,"17":1,"18":1,"20":21,"26":15,"27":3,"29":6,"30":2,"32":8,"33":12,"34":5,"35":4,"37":16,"39":10,"41":3,"42":2,"44":2,"45":4,"59":1,"60":2,"63":3,"68":2,"69":3,"70":6,"71":5,"85":2,"95":1,"96":3}}],["garbage",{"2":{"90":1}}],["gc",{"2":{"90":2}}],["gt",{"2":{"89":1,"90":3,"93":1}}],["gdalworkshop",{"2":{"61":1}}],["gdal",{"0":{"61":1},"2":{"61":1}}],["gb",{"2":{"59":1}}],["gn",{"2":{"59":1,"107":2}}],["gs",{"2":{"59":1,"107":2}}],["ggplot2",{"2":{"56":1}}],["github",{"2":{"50":2,"61":1,"91":1}}],["gives",{"2":{"26":1}}],["given",{"2":{"2":1,"26":2,"58":1,"74":1,"76":1,"84":1,"89":6,"90":3,"96":1}}],["glob",{"2":{"89":1}}],["globalproperties=dict",{"2":{"90":1}}],["global",{"2":{"89":1,"90":1}}],["glmakie",{"2":{"42":2,"99":1,"107":2}}],["glue",{"2":{"8":1}}],["gradient",{"2":{"108":1,"109":1,"110":1,"111":1}}],["gradually",{"2":{"86":1}}],["grey25",{"2":{"111":1}}],["grey15",{"2":{"42":1,"56":1}}],["greenwich",{"2":{"61":1}}],["green",{"2":{"61":1,"75":1}}],["grouped",{"2":{"89":1}}],["groups",{"2":{"55":1}}],["groupby",{"0":{"51":1,"54":1},"1":{"52":1,"53":1,"55":1,"56":1},"2":{"48":1,"50":1,"51":6,"52":1,"53":1,"54":3,"55":3,"56":3,"89":1,"101":1}}],["group",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1},"2":{"51":1,"53":1,"54":2,"75":1,"89":3}}],["grouping",{"2":{"42":2,"53":2}}],["grid=false",{"2":{"56":1}}],["grid",{"2":{"27":1,"74":1,"89":1}}],["gridchunks",{"2":{"2":3,"4":1,"5":1,"6":1,"89":1,"90":1}}],["go",{"2":{"93":2}}],["going",{"2":{"90":1}}],["good",{"2":{"56":1}}],["goal",{"2":{"25":1,"33":1,"49":1}}],["goes",{"2":{"20":2,"89":1,"90":1}}],["guide",{"2":{"14":2,"16":1,"17":1,"27":1,"29":3,"30":1}}],["gen",{"2":{"20":6}}],["general",{"0":{"104":1},"2":{"89":1,"98":1}}],["generated",{"2":{"60":1,"67":1,"79":1,"85":1,"90":1}}],["generate",{"2":{"20":2,"37":1,"39":1,"40":1,"89":1,"93":1}}],["generic",{"2":{"20":2,"22":1,"23":1,"25":1,"29":1,"89":1}}],["getting",{"0":{"94":1},"1":{"95":1,"96":1,"97":1}}],["gettarrayaxes",{"2":{"46":1}}],["getarrayinfo",{"2":{"90":1}}],["getaxis",{"2":{"34":1,"42":2,"89":1}}],["getloopchunks",{"2":{"90":1}}],["getloopcachesize",{"2":{"90":1}}],["getouttype",{"2":{"90":1}}],["getoutaxis",{"2":{"90":1}}],["getfrontperm",{"2":{"90":1}}],["gets",{"2":{"89":1,"90":1}}],["get",{"0":{"72":1},"2":{"14":1,"22":1,"32":1,"54":1,"68":1,"70":1,"72":1,"90":3,"96":1,"101":1,"107":1}}],["geoaxis",{"2":{"109":1,"110":1}}],["geometrybasics",{"2":{"107":1}}],["geomakie",{"2":{"99":1,"107":1,"109":2,"110":1}}],["geogcs",{"2":{"61":1}}],["geojson",{"0":{"61":1}}],["geotiff",{"0":{"61":1}}],["geo",{"2":{"1":1}}],["g",{"2":{"7":1,"14":1,"15":1,"17":1,"20":4,"27":1,"29":1,"51":26,"52":2,"53":2,"54":2,"55":1,"56":18,"58":2,"72":1,"74":1,"77":1,"89":5,"107":2}}],["2π",{"2":{"100":1}}],["2×3",{"2":{"96":1}}],["2×2×3",{"2":{"4":1,"5":1,"6":1}}],["2×2",{"2":{"2":3,"47":1}}],["2x2l31",{"2":{"60":1,"67":1,"79":1,"85":1}}],["2963860",{"2":{"83":1}}],["298617",{"2":{"87":2}}],["298",{"2":{"61":1}}],["29816",{"2":{"56":1}}],["29473",{"2":{"56":1}}],["29564",{"2":{"56":1}}],["274902",{"2":{"96":1}}],["2747",{"2":{"56":1}}],["273",{"2":{"54":1}}],["276",{"2":{"54":2}}],["270",{"2":{"54":1}}],["27",{"2":{"51":1,"52":1,"56":1}}],["275265",{"2":{"87":2}}],["275×205×9",{"2":{"51":4}}],["275×205×36",{"2":{"50":2}}],["275",{"2":{"50":2}}],["2f0",{"2":{"47":1}}],["28422753251364",{"2":{"59":4,"107":2}}],["28008",{"2":{"56":1}}],["2894",{"2":{"56":1}}],["288",{"2":{"54":1}}],["2818",{"2":{"51":1,"52":1}}],["28",{"2":{"37":1,"51":3,"52":3,"56":3}}],["28571",{"2":{"26":2}}],["2857142857142857",{"2":{"14":1,"16":1,"17":1,"18":1,"26":3,"29":2,"30":1,"35":1,"41":3,"42":1,"96":1}}],["2d",{"2":{"23":5,"24":3,"25":2}}],["233118",{"2":{"96":1}}],["23",{"2":{"20":8,"41":3,"56":1,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["22990067443344916",{"2":{"101":1}}],["224959",{"2":{"96":1}}],["22211",{"2":{"56":1}}],["22",{"2":{"20":10}}],["225542",{"2":{"13":1}}],["211397",{"2":{"96":1}}],["21t06",{"2":{"59":2,"107":1}}],["21t19",{"2":{"46":4}}],["2101",{"2":{"59":2,"107":1}}],["21699",{"2":{"56":1}}],["21209",{"2":{"56":1}}],["21",{"2":{"20":12,"51":8,"52":8,"56":8}}],["215973",{"2":{"13":1}}],["26274",{"2":{"56":1}}],["26",{"2":{"20":2,"59":2,"107":1}}],["2651438939533647",{"2":{"15":1}}],["265797",{"2":{"11":1}}],["268675",{"2":{"13":1}}],["24375",{"2":{"56":1}}],["2434",{"2":{"56":1}}],["24",{"2":{"20":6,"42":1,"69":2}}],["240",{"2":{"13":1,"18":1,"20":1}}],["241882",{"2":{"11":1}}],["253383",{"2":{"96":1}}],["259455",{"2":{"87":2}}],["257223563",{"2":{"61":1}}],["25153",{"2":{"56":1}}],["25",{"2":{"12":2,"20":4,"37":1,"100":1}}],["2=10",{"2":{"2":1}}],["2",{"2":{"2":3,"4":8,"5":9,"6":10,"8":1,"9":1,"11":2,"13":3,"15":3,"16":2,"17":1,"18":1,"21":1,"22":2,"23":2,"24":1,"26":9,"27":1,"29":1,"32":3,"33":6,"34":3,"37":1,"40":6,"42":6,"45":4,"46":1,"47":8,"51":1,"52":1,"56":40,"59":3,"60":3,"63":6,"64":2,"65":2,"67":1,"68":4,"69":2,"70":2,"71":5,"72":2,"79":1,"85":2,"86":2,"89":2,"96":5,"107":3,"109":2,"111":1}}],["207967",{"2":{"96":1}}],["209357",{"2":{"96":1}}],["2003",{"2":{"60":1,"67":1,"79":1,"85":1}}],["2004",{"2":{"60":1,"67":1,"79":1,"85":1}}],["2005",{"2":{"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1}}],["2002",{"2":{"60":3,"63":3,"67":2,"68":2,"69":2,"70":3,"71":5,"79":2,"85":1}}],["2001",{"2":{"60":3,"63":3,"67":2,"68":2,"69":3,"70":3,"71":5,"79":2,"85":1}}],["2000",{"2":{"12":1}}],["2019",{"2":{"59":2,"107":1}}],["2015",{"2":{"59":2,"60":1,"67":1,"79":1,"85":1,"107":2}}],["205",{"2":{"50":2}}],["20×10×15",{"2":{"41":2}}],["20×10×15×2",{"2":{"35":1,"96":1}}],["20ºn",{"2":{"40":1}}],["2023",{"2":{"100":1,"101":2}}],["2021",{"2":{"37":9,"100":1,"101":2,"102":1}}],["2020",{"2":{"37":5,"39":3,"40":4,"46":8,"64":4,"65":2,"66":8,"76":1}}],["2022",{"2":{"14":4,"16":2,"17":2,"18":2,"20":8,"21":4,"22":2,"24":2,"25":6,"26":6,"27":2,"29":6,"30":2,"37":5,"39":3,"40":4,"102":1}}],["2024",{"2":{"12":1,"65":5}}],["203714",{"2":{"13":1}}],["20",{"2":{"2":7,"4":10,"5":10,"6":10,"20":14,"29":2,"35":4,"40":2,"41":3,"42":1,"56":1,"85":2,"96":3}}],["55",{"2":{"101":1}}],["551487",{"2":{"96":1}}],["551732",{"2":{"26":1}}],["55245",{"2":{"96":1}}],["552582",{"2":{"96":1}}],["514759",{"2":{"96":1}}],["514979",{"2":{"26":1}}],["5173",{"2":{"93":1}}],["542756",{"2":{"96":1}}],["547668",{"2":{"96":1}}],["547738",{"2":{"87":2}}],["54942",{"2":{"87":2}}],["540514",{"2":{"13":1}}],["5743",{"2":{"56":1}}],["57873",{"2":{"56":1}}],["57695",{"2":{"56":1}}],["57143",{"2":{"26":2}}],["52419",{"2":{"56":1}}],["56632",{"2":{"56":1}}],["507229",{"2":{"96":1}}],["506947",{"2":{"87":2}}],["508557",{"2":{"26":1}}],["500909",{"2":{"96":1}}],["50089",{"2":{"56":1}}],["500",{"2":{"0":1,"56":1,"111":2}}],["500mb",{"2":{"0":2}}],["598769",{"2":{"96":1}}],["599987",{"2":{"87":2}}],["59212",{"2":{"56":1}}],["59085",{"2":{"56":1}}],["595405",{"2":{"26":1}}],["594514",{"2":{"11":1}}],["53",{"2":{"69":1}}],["538981",{"2":{"26":1}}],["536399",{"2":{"26":1}}],["5843",{"2":{"51":1,"52":1}}],["58",{"2":{"20":2}}],["581312",{"2":{"11":1}}],["5×4",{"2":{"87":2}}],["5×4×5",{"2":{"86":1}}],["5×4×3",{"2":{"25":2}}],["5×4×3×2",{"2":{"21":1,"22":1}}],["5×7×3",{"2":{"64":1}}],["5×6×36",{"2":{"37":1}}],["5×6",{"2":{"13":2}}],["5×10",{"2":{"11":2}}],["5",{"2":{"2":7,"4":16,"5":18,"6":7,"11":2,"13":4,"14":2,"16":3,"17":2,"18":1,"20":6,"21":2,"25":4,"26":10,"27":1,"29":5,"30":1,"32":4,"34":1,"35":2,"37":3,"39":4,"41":3,"42":2,"45":4,"56":5,"60":4,"63":6,"64":9,"65":3,"66":1,"67":2,"68":4,"69":3,"70":10,"71":10,"72":24,"79":2,"85":4,"86":6,"87":3,"96":2,"97":1,"102":2,"111":2}}],["rotate",{"2":{"111":1}}],["row",{"2":{"77":1,"89":1}}],["rowgap",{"2":{"56":1}}],["right",{"2":{"100":1,"102":1}}],["rights",{"2":{"87":1}}],["r",{"2":{"86":1}}],["rlon",{"2":{"78":2}}],["rlat",{"2":{"78":2}}],["r1i1p1f1",{"2":{"59":2,"107":3}}],["running",{"2":{"93":1}}],["run",{"2":{"27":1,"93":3,"98":2}}],["runs",{"2":{"17":1,"90":1}}],["ram",{"2":{"62":1}}],["race",{"2":{"60":1}}],["rafaqz",{"2":{"50":1}}],["raw",{"2":{"50":1,"61":1}}],["ranges",{"0":{"70":1},"2":{"34":1,"67":1}}],["range",{"2":{"14":2,"20":2,"21":2,"26":2,"27":2,"29":2,"35":3,"37":1,"66":1,"90":1,"96":3,"100":1}}],["randn",{"2":{"100":1}}],["random",{"2":{"21":2,"40":2,"46":3,"96":1}}],["rand",{"2":{"2":1,"4":3,"5":3,"6":3,"8":2,"9":2,"11":1,"12":1,"13":1,"14":1,"21":1,"23":1,"25":3,"26":1,"27":1,"29":2,"30":1,"32":1,"33":2,"35":2,"40":3,"42":1,"44":1,"45":3,"64":4,"85":1,"87":1,"96":2}}],["rasm",{"2":{"50":2}}],["ras",{"2":{"12":3}}],["rasters",{"2":{"12":2}}],["raster",{"0":{"12":1},"2":{"12":3,"26":11}}],["remaining",{"2":{"78":1}}],["removes",{"2":{"90":1}}],["remove",{"2":{"52":1}}],["removed",{"2":{"19":1,"90":1}}],["remote",{"2":{"0":1}}],["relational",{"2":{"74":1}}],["related",{"2":{"50":1}}],["recommend",{"2":{"97":1}}],["recommended",{"2":{"71":1}}],["rechunking",{"2":{"90":1}}],["recalculate",{"2":{"90":1}}],["recal",{"2":{"90":1}}],["recently",{"2":{"0":1}}],["reentrantlock",{"2":{"60":1}}],["rewrote",{"2":{"59":1,"60":1,"67":1,"79":1,"85":1,"107":1}}],["realization",{"2":{"60":1,"67":1,"79":1,"85":1}}],["realm",{"2":{"59":1,"107":1}}],["reading",{"2":{"58":1}}],["readcubedata",{"0":{"63":1},"2":{"40":2,"62":1,"63":1,"89":1}}],["read",{"0":{"57":1,"59":1,"60":1,"61":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"1":1,"40":1,"57":1,"61":1,"65":3,"70":1,"89":1}}],["red",{"2":{"56":1,"61":1,"75":1}}],["reduce",{"2":{"14":1,"18":1,"23":1}}],["reverse",{"2":{"56":1}}],["reverseordered",{"2":{"9":1,"61":1,"96":1}}],["rename",{"2":{"45":1}}],["resets",{"2":{"89":1,"90":1}}],["respectively",{"2":{"75":1}}],["reshape",{"2":{"37":1,"39":2}}],["result",{"2":{"34":1,"42":1}}],["resulting",{"2":{"8":1,"9":1,"18":1,"89":1,"90":1}}],["results",{"0":{"102":1},"2":{"2":1,"5":1,"56":2,"89":1,"90":1}}],["referencing",{"2":{"51":1}}],["references",{"2":{"60":1,"67":1,"79":1,"85":1}}],["reference",{"0":{"88":1},"1":{"89":1,"90":1},"2":{"46":1}}],["ref",{"2":{"35":1,"89":1,"90":1}}],["rebuild",{"0":{"33":1},"2":{"32":1,"33":2,"46":2,"50":1}}],["repeat",{"2":{"100":1}}],["repl",{"2":{"95":1,"98":1}}],["replace",{"2":{"27":1,"50":2,"111":1}}],["repository",{"2":{"91":1,"103":1}}],["reports",{"2":{"91":1}}],["rep",{"2":{"50":2}}],["reproduces",{"2":{"49":1}}],["represented",{"2":{"89":1,"105":1}}],["represents",{"2":{"75":1}}],["representing",{"2":{"26":2,"90":1}}],["representation",{"2":{"1":1,"89":2,"90":3}}],["re",{"2":{"26":1}}],["registry",{"2":{"98":1}}],["registration",{"2":{"90":2}}],["registered",{"2":{"90":1,"98":1}}],["regions",{"2":{"26":8}}],["region",{"2":{"26":12}}],["regular",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"11":2,"13":4,"14":3,"16":3,"17":3,"18":3,"20":9,"21":3,"22":3,"23":2,"24":2,"25":9,"26":8,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":4,"41":9,"42":3,"44":1,"45":5,"47":4,"50":4,"51":2,"52":2,"56":6,"59":2,"60":4,"61":2,"63":6,"64":2,"65":7,"66":2,"67":2,"68":4,"69":2,"70":3,"71":10,"72":3,"79":2,"85":5,"86":6,"96":5,"101":1,"107":1}}],["regularchunks",{"2":{"2":6,"4":3,"5":3,"6":3}}],["returned",{"2":{"89":1}}],["returns",{"2":{"89":5,"90":2}}],["return",{"2":{"22":1,"23":1,"25":2,"26":4,"51":1,"89":1,"90":1,"101":1}}],["requests",{"2":{"91":1}}],["requested",{"2":{"17":1}}],["requirements",{"2":{"60":1,"67":1,"79":1,"85":1}}],["required",{"2":{"37":1}}],["requires",{"2":{"20":1}}],["http",{"2":{"93":1}}],["https",{"2":{"50":2,"60":1,"61":1,"67":1,"75":1,"79":1}}],["html",{"2":{"75":1}}],["hdf5",{"2":{"60":1}}],["hr",{"2":{"59":1,"107":2}}],["history",{"2":{"59":2,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1,"107":1}}],["hidedecorations",{"2":{"56":1}}],["highclip",{"2":{"56":4}}],["high",{"2":{"46":4}}],["hm",{"2":{"56":8}}],["hold",{"2":{"89":1}}],["holds",{"2":{"89":1,"90":1}}],["ho",{"0":{"46":1}}],["however",{"2":{"10":1,"37":1,"65":1}}],["how",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"98":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"6":1,"7":1,"10":1,"14":1,"21":2,"22":1,"28":1,"31":1,"42":1,"51":1,"57":1,"63":3,"87":1,"89":1,"103":1,"105":1}}],["happens",{"2":{"90":1}}],["had",{"2":{"87":1,"89":1,"90":1}}],["hard",{"2":{"63":1}}],["hamman",{"2":{"49":1,"56":1}}],["handled",{"2":{"90":1}}],["handle",{"2":{"74":1,"90":1}}],["handling",{"2":{"9":1,"89":1}}],["handy",{"2":{"42":1}}],["has",{"2":{"8":1,"9":1,"12":1,"13":1,"26":1,"40":1,"49":1,"52":1,"90":1}}],["half",{"2":{"8":5}}],["have",{"2":{"6":1,"9":1,"26":1,"29":1,"38":1,"40":2,"51":1,"65":1,"76":1,"78":2,"89":3}}],["having",{"2":{"1":1,"26":1}}],["help",{"2":{"89":1,"90":2}}],["height",{"2":{"59":2,"78":2,"107":1}}],["heatmap",{"0":{"108":1},"2":{"42":1,"56":3,"108":1}}],["hereby",{"2":{"26":1}}],["here",{"2":{"8":1,"9":1,"17":1,"20":2,"21":1,"25":1,"26":1,"36":1,"42":1,"70":1,"86":1,"92":2}}],["hence",{"2":{"1":1}}],["yet",{"2":{"89":1}}],["yeesian",{"2":{"61":1}}],["years",{"2":{"37":1,"100":1,"101":1}}],["year",{"2":{"8":4,"102":1}}],["yyyy",{"2":{"60":2,"67":2,"79":2,"85":2}}],["ylabel=",{"2":{"100":1,"102":1}}],["ylabel",{"2":{"56":3}}],["yc",{"2":{"50":2}}],["yasxa",{"2":{"40":6}}],["yaxcolumn",{"2":{"90":1}}],["yaxconvert",{"2":{"13":2}}],["yaxdefaults",{"2":{"90":1}}],["yaxarraybase",{"2":{"13":1,"89":1,"90":1}}],["yaxarray",{"0":{"15":1,"21":1,"29":1,"36":1,"37":1,"47":1,"68":1,"74":1},"1":{"22":1,"23":1,"24":1,"37":1,"38":1,"39":1,"40":1},"2":{"2":1,"4":4,"5":4,"6":4,"7":1,"8":3,"9":3,"11":4,"12":2,"13":5,"14":2,"16":1,"17":1,"18":2,"20":8,"21":2,"22":1,"23":2,"24":1,"25":6,"26":3,"27":1,"29":5,"30":2,"32":3,"33":5,"34":1,"35":3,"36":1,"37":15,"39":4,"40":6,"41":3,"42":4,"44":2,"45":4,"46":4,"47":4,"50":2,"51":7,"52":1,"54":9,"55":1,"56":3,"59":2,"60":2,"61":1,"63":3,"64":5,"65":3,"66":1,"67":2,"68":2,"69":3,"70":3,"71":5,"74":1,"76":1,"79":1,"80":1,"82":1,"85":2,"86":4,"89":10,"90":3,"96":5,"101":2,"105":1,"107":1}}],["yaxarrays",{"0":{"0":1,"1":1,"2":1,"7":1,"10":1,"14":1,"20":1,"28":1,"43":1,"48":1,"57":1,"67":1,"79":1,"91":1,"98":1,"104":1,"105":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1,"8":1,"9":1,"11":1,"12":1,"13":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"29":1,"30":1,"44":1,"45":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"72":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"92":1,"93":1},"2":{"0":3,"2":1,"4":1,"5":1,"6":1,"8":3,"9":3,"10":2,"11":1,"14":4,"20":6,"21":3,"26":3,"27":4,"29":3,"32":1,"33":1,"35":3,"36":1,"37":1,"38":1,"39":2,"40":4,"44":1,"45":1,"46":4,"48":3,"51":2,"54":2,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":2,"64":3,"65":3,"66":3,"67":1,"73":1,"75":1,"78":3,"79":1,"84":1,"86":1,"89":28,"90":28,"91":1,"93":1,"95":3,"96":5,"97":2,"98":4,"101":3,"103":1,"104":1,"107":1}}],["yax",{"2":{"0":1,"8":3,"9":3,"14":2,"20":11,"21":3,"22":1,"23":1,"24":3,"25":5,"26":2,"27":2,"29":2,"33":1,"35":2,"37":1,"39":1,"40":1,"46":5,"47":2,"48":1,"51":4,"54":1,"64":3,"65":4,"66":2,"78":18,"89":1,"96":2,"101":2}}],["y",{"2":{"4":2,"5":3,"6":2,"12":1,"13":3,"37":4,"41":4,"50":2,"51":2,"52":1,"56":3,"61":1,"74":1,"96":3}}],["you",{"2":{"1":1,"27":1,"36":1,"40":3,"45":2,"62":1,"63":1,"78":4,"81":1,"89":1,"90":2,"92":1,"93":2,"95":2,"97":1,"98":3,"103":3,"105":2}}],["yourself",{"2":{"93":1}}],["your",{"2":{"1":2,"40":2,"60":1,"78":3,"84":2,"86":1,"89":1,"92":4,"93":4}}],["circshift",{"2":{"109":1}}],["ct1",{"2":{"107":4,"108":1}}],["cycle",{"0":{"100":1,"102":1},"1":{"101":1,"102":1},"2":{"101":4}}],["cycle=12",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["cdata",{"2":{"90":1}}],["center",{"2":{"89":1,"100":1,"102":1}}],["certain",{"2":{"64":1,"67":2,"90":1}}],["cell",{"2":{"59":2,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"89":1}}],["cf",{"2":{"59":2,"60":2,"67":2,"79":2,"85":2,"107":2}}],["cftime",{"2":{"50":6,"51":2,"54":7,"55":2,"56":2,"60":6,"63":9,"67":3,"68":6,"69":7,"70":9,"71":15,"79":3,"85":3}}],["cmpcachmisses",{"2":{"90":1}}],["cm4",{"2":{"60":4,"67":4,"79":4,"85":4}}],["cmip",{"2":{"59":1,"107":1}}],["cmip6",{"2":{"59":3,"107":6}}],["cmor",{"2":{"59":2,"60":3,"63":3,"67":2,"68":2,"69":3,"70":3,"71":5,"79":2,"85":2,"107":1}}],["c54",{"2":{"56":1}}],["cb",{"2":{"56":1}}],["cbar",{"2":{"42":1}}],["cgrad",{"2":{"42":1}}],["cl",{"2":{"109":1,"110":1}}],["cl=lines",{"2":{"109":1,"110":1}}],["clean",{"2":{"90":1}}],["cleanme",{"2":{"90":4}}],["cleaner",{"2":{"89":2}}],["clevel=n",{"2":{"81":1}}],["climate",{"2":{"60":1,"67":1,"79":1,"85":1}}],["clashes",{"2":{"51":1}}],["classes=classes",{"2":{"42":1}}],["classes",{"2":{"42":8}}],["classification",{"2":{"42":2}}],["class",{"2":{"42":3}}],["closedinterval",{"2":{"71":1}}],["closed",{"0":{"71":1},"2":{"71":3}}],["close",{"2":{"46":4}}],["cloud",{"2":{"15":1,"59":1}}],["clustermanagers",{"2":{"27":2}}],["cluster",{"2":{"27":1}}],["cpus",{"2":{"27":1}}],["cpu",{"2":{"27":1}}],["c",{"2":{"26":11,"32":5,"33":7,"34":3,"42":2,"45":2,"50":2,"58":1,"75":1,"78":4,"81":1,"83":4,"89":6,"90":3,"101":4,"107":2}}],["custom",{"2":{"29":1,"89":1}}],["current",{"2":{"26":2,"75":1,"89":1,"102":1}}],["currently",{"2":{"20":1,"46":1,"50":1,"103":1}}],["cubeaxis",{"2":{"90":1}}],["cubeaxes",{"2":{"89":1}}],["cubedir",{"2":{"90":1}}],["cube2",{"2":{"89":1}}],["cube1",{"2":{"89":1}}],["cubelist",{"2":{"89":1}}],["cubefittable",{"2":{"42":2,"89":1}}],["cubetable",{"0":{"42":1},"2":{"42":3,"89":3}}],["cubes",{"0":{"35":1},"2":{"9":2,"21":1,"25":1,"35":2,"40":1,"41":2,"42":1,"68":1,"76":1,"89":18,"90":9}}],["cube",{"0":{"32":1,"34":1,"36":1,"76":1,"101":1},"1":{"33":1,"37":1,"38":1,"39":1,"40":1},"2":{"2":1,"4":1,"5":1,"6":1,"20":11,"21":2,"23":2,"25":2,"32":1,"34":1,"36":2,"40":1,"41":1,"42":2,"50":1,"76":3,"86":1,"89":34,"90":19,"105":1}}],["chose",{"2":{"75":1}}],["child",{"2":{"59":1,"107":1}}],["check",{"2":{"20":1,"86":1,"97":1}}],["changed",{"2":{"97":1,"103":1}}],["changes",{"2":{"63":1}}],["change",{"2":{"14":1,"89":1,"90":1}}],["chunkoffset",{"2":{"90":1}}],["chunksize`",{"2":{"90":1}}],["chunksizes",{"2":{"89":2}}],["chunksize",{"2":{"89":1,"90":3}}],["chunks",{"0":{"4":1},"2":{"2":5,"4":1,"5":1,"6":2,"89":4,"90":11}}],["chunked",{"2":{"2":5}}],["chunking",{"0":{"2":1,"3":1,"5":1,"6":1},"1":{"4":1,"5":1,"6":1},"2":{"1":1,"5":1,"89":4,"90":3}}],["chunk",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"4":1,"5":1,"89":4,"90":4}}],["criteria",{"2":{"42":1}}],["creation",{"2":{"47":1,"64":1}}],["creating",{"0":{"26":1},"2":{"14":1,"33":1,"37":1,"86":1,"92":1}}],["createdataset",{"2":{"90":2}}],["created",{"2":{"90":2}}],["creates",{"2":{"42":1,"89":2,"90":1}}],["create",{"0":{"28":1,"29":1,"30":1,"47":1},"1":{"29":1,"30":1},"2":{"14":1,"20":1,"26":2,"28":1,"29":1,"33":1,"35":1,"37":2,"42":1,"46":1,"54":1,"79":1,"84":1,"86":3,"89":1,"90":1,"96":1,"100":1}}],["crucial",{"2":{"1":1}}],["coastlines",{"2":{"109":3,"110":1}}],["cosd",{"2":{"89":1}}],["country",{"2":{"89":4}}],["country=cube2",{"2":{"89":1}}],["could",{"2":{"33":1,"46":1,"62":1}}],["copies",{"2":{"90":1}}],["copied",{"2":{"86":1}}],["copybuf",{"2":{"90":2}}],["copydata",{"2":{"90":1}}],["copy",{"2":{"32":1,"89":1,"93":1}}],["coordinates",{"2":{"50":2,"59":1}}],["college",{"2":{"103":1}}],["collected",{"2":{"90":1}}],["collectfromhandle",{"2":{"90":1}}],["collection",{"2":{"31":1,"74":1}}],["collect",{"2":{"11":1,"34":3,"101":1}}],["colonperm",{"2":{"90":1}}],["color=",{"2":{"102":3}}],["color",{"2":{"100":1,"109":1,"110":1,"111":1}}],["colormap=",{"2":{"56":1}}],["colormap=makie",{"2":{"42":1}}],["colormap",{"2":{"56":3,"108":1,"109":1,"110":1,"111":1}}],["colorrange=",{"2":{"56":1}}],["colorrange",{"2":{"56":3}}],["colorbar",{"2":{"42":1,"56":2}}],["column",{"2":{"77":1,"90":1}}],["colgap",{"2":{"56":1}}],["colnames",{"2":{"46":1}}],["configuration",{"2":{"90":2}}],["concatenating",{"2":{"89":1}}],["concatenates",{"2":{"89":2}}],["concatenate",{"0":{"35":1},"2":{"35":2,"64":2,"66":1,"89":2}}],["concatenatecubes",{"0":{"9":1},"2":{"9":2,"35":2,"89":2}}],["concrete",{"2":{"89":2}}],["contributing",{"2":{"92":1}}],["contribute",{"0":{"91":1,"92":1},"1":{"92":1,"93":2}}],["contrast",{"2":{"89":1}}],["content",{"2":{"89":1}}],["contents",{"2":{"66":1}}],["contact",{"2":{"60":1,"67":1,"79":1,"85":1}}],["contains",{"2":{"71":1,"89":1,"90":1}}],["contain",{"2":{"59":1,"60":1,"90":1}}],["containing",{"0":{"47":1},"2":{"8":1,"42":1,"75":1,"76":1,"89":1}}],["continue",{"2":{"51":1}}],["consolidated=true",{"2":{"59":1,"107":1}}],["constructor",{"2":{"89":1}}],["constructs",{"2":{"89":1}}],["construct",{"0":{"46":1},"2":{"89":2}}],["consistent",{"2":{"59":1,"107":1}}],["consisting",{"2":{"8":1}}],["considering",{"2":{"49":1}}],["considered",{"2":{"42":1}}],["consider",{"2":{"21":1,"23":1,"25":1,"33":1}}],["convinient",{"2":{"31":1}}],["conventions",{"2":{"60":1,"67":1,"79":1,"85":1}}],["convenience",{"2":{"51":1,"78":1}}],["convenient",{"2":{"27":1}}],["conversion",{"2":{"10":1,"12":1,"13":1}}],["conversions",{"2":{"10":1}}],["converted",{"2":{"76":1}}],["convert",{"0":{"10":1,"11":1,"12":1,"13":1},"1":{"11":1,"12":1,"13":1},"2":{"10":1,"11":2,"13":2,"89":1,"90":1}}],["corresponding",{"2":{"7":1,"25":2,"26":2,"76":1,"89":1}}],["combining",{"0":{"106":1}}],["combined",{"2":{"9":2,"76":2}}],["combine",{"0":{"7":1},"1":{"8":1,"9":1},"2":{"7":1,"8":1,"9":1,"105":1}}],["command",{"2":{"98":2}}],["comment",{"2":{"59":1}}],["common",{"2":{"40":5,"58":1,"89":2}}],["com",{"2":{"50":2,"61":1}}],["compiler",{"2":{"97":1}}],["compuation",{"2":{"89":1}}],["computing",{"2":{"42":1}}],["computations",{"2":{"17":1,"41":1}}],["computation",{"0":{"27":1},"2":{"17":1,"74":1,"89":3,"90":3}}],["computed",{"2":{"90":1}}],["compute",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"101":1}}],["compares",{"2":{"90":1}}],["comparing",{"2":{"83":1}}],["compatible",{"2":{"61":1}}],["compress",{"2":{"83":2}}],["compress=n",{"2":{"83":1}}],["compressors",{"2":{"81":1}}],["compressor=compression",{"2":{"81":1}}],["compression",{"0":{"81":1,"83":1},"2":{"81":5,"83":4}}],["completely",{"2":{"62":1}}],["complexity",{"2":{"41":1}}],["complex",{"2":{"14":2,"96":1}}],["comply",{"2":{"60":1,"67":1,"79":1,"85":1}}],["comes",{"2":{"1":1}}],["code",{"2":{"6":1,"17":1,"27":2,"31":1,"46":1,"60":2}}],["captialisation",{"2":{"90":1}}],["cameracontrols",{"2":{"111":1}}],["came",{"2":{"76":1}}],["cairomakie",{"2":{"56":1,"100":2}}],["caxes",{"2":{"32":2,"89":2}}],["car",{"2":{"26":1}}],["cartesianindex",{"2":{"26":11}}],["caluclate",{"2":{"89":1}}],["calculations",{"2":{"56":1,"90":1}}],["calculating",{"2":{"18":1,"89":1}}],["calculates",{"2":{"89":1}}],["calculated",{"2":{"42":2,"51":1}}],["calculate",{"2":{"18":1,"26":1,"42":2,"48":1,"49":2,"51":1,"56":1,"90":2,"101":1}}],["calling",{"2":{"56":1,"78":1}}],["called",{"2":{"20":1,"51":1,"74":3,"90":1}}],["call",{"2":{"1":1,"27":1}}],["case",{"2":{"17":1,"23":1,"40":1,"53":1,"59":1,"63":1,"66":2}}],["cases",{"2":{"0":1,"62":1,"71":1,"103":1}}],["cataxis",{"2":{"89":2}}],["categoricalaxis",{"2":{"89":1}}],["categorical",{"2":{"9":1,"21":1,"22":1,"23":1,"26":1,"35":1,"42":1,"46":4,"51":2,"52":1,"53":1,"54":2,"55":2,"56":3,"89":1,"90":1,"96":1}}],["cat",{"0":{"8":1},"2":{"8":2}}],["cache=1gb",{"2":{"89":1}}],["cache=1e9",{"2":{"20":2}}],["cache=",{"2":{"89":1}}],["cache=5",{"2":{"89":1}}],["cache=5e8",{"2":{"84":1,"89":1}}],["cache=yaxdefaults",{"2":{"89":1}}],["caches",{"2":{"0":1}}],["cachesize",{"2":{"0":2,"90":1}}],["cache",{"2":{"0":6,"89":3,"90":7}}],["caching",{"0":{"0":1}}],["can",{"2":{"0":5,"2":1,"3":1,"17":2,"18":1,"20":3,"24":1,"26":1,"27":3,"29":2,"35":1,"36":1,"38":1,"40":1,"41":1,"42":2,"46":1,"52":1,"56":1,"59":2,"60":1,"61":1,"62":1,"64":1,"72":1,"74":3,"75":2,"76":1,"78":2,"85":1,"86":1,"87":1,"89":13,"90":6,"92":1,"95":2,"98":2,"103":2}}],["msc",{"2":{"101":3,"102":2}}],["mscarray",{"2":{"101":2}}],["md",{"2":{"92":2}}],["mfdataset",{"0":{"64":1},"1":{"65":1,"66":1},"2":{"65":3,"66":2,"89":5}}],["mpi",{"2":{"59":1,"107":2}}],["mm",{"2":{"24":3,"60":2,"67":2,"79":2,"85":2}}],["mymean",{"2":{"27":4}}],["my",{"2":{"20":2,"60":1}}],["miss",{"2":{"90":1}}],["missing",{"2":{"18":2,"20":6,"22":1,"25":1,"26":2,"41":1,"42":2,"60":12,"63":6,"68":4,"69":6,"70":6,"71":10,"86":3,"87":1,"89":2,"90":2,"111":1}}],["minimized",{"2":{"90":1}}],["minutes",{"2":{"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["mix",{"2":{"25":2}}],["might",{"2":{"10":1,"62":1,"103":1}}],["mahecha",{"2":{"76":1}}],["manager",{"2":{"95":1}}],["manual",{"2":{"60":1}}],["many",{"0":{"22":1,"23":2},"2":{"22":2,"23":2,"24":4,"63":1,"74":1,"90":1}}],["mar",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["marketdata",{"2":{"46":2}}],["master",{"2":{"50":1,"98":1}}],["mask",{"2":{"42":2}}],["makie",{"2":{"56":1,"111":1}}],["making",{"2":{"15":1,"60":1,"67":1}}],["make",{"2":{"39":1,"40":2,"86":1,"89":1,"90":2,"93":1,"111":1}}],["main",{"2":{"36":1,"90":1}}],["machine",{"2":{"27":1,"74":1}}],["matching",{"2":{"96":1}}],["match",{"2":{"90":2}}],["matched",{"2":{"89":1}}],["matches",{"2":{"24":1}}],["mat",{"2":{"26":4}}],["matrix",{"2":{"11":1,"20":2,"26":1,"46":1,"52":1,"56":2,"74":1,"87":2,"101":1}}],["maximal",{"2":{"90":1}}],["maximum",{"2":{"41":1,"89":1,"90":1}}],["maxbuf",{"2":{"90":1}}],["max",{"2":{"20":2,"81":1,"83":1,"84":1,"89":8,"90":2}}],["maxsize",{"2":{"0":2}}],["may",{"2":{"14":1,"19":1,"51":4,"52":2,"53":1,"54":4,"55":4,"56":6,"59":1,"60":1,"97":1}}],["maps",{"0":{"107":1},"1":{"108":1}}],["mapslice",{"2":{"27":1}}],["mapslices",{"0":{"18":1},"2":{"14":1,"17":1,"18":1,"27":1,"41":1,"101":1}}],["mapped",{"2":{"89":1}}],["mapping",{"2":{"89":1,"90":3}}],["mapcube",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1},"2":{"14":1,"17":1,"19":1,"20":4,"22":1,"24":1,"25":2,"26":2,"27":3,"89":5,"90":2}}],["map",{"0":{"17":1,"41":1},"2":{"14":1,"17":2,"25":1,"26":3,"27":3,"41":4,"42":1,"51":2,"55":1,"56":1,"89":2,"96":1,"101":2}}],["m",{"2":{"11":2}}],["moll",{"0":{"110":1}}],["mowingwindow",{"2":{"89":1}}],["module",{"2":{"89":1}}],["model",{"2":{"60":1,"67":1,"75":2,"79":1,"85":1}}],["modification",{"2":{"15":1,"27":1}}],["modify",{"0":{"15":1}}],["monthday",{"2":{"101":4}}],["monthly",{"0":{"49":1}}],["month",{"2":{"37":7,"39":3,"40":4,"49":1,"51":4,"52":1,"53":1,"54":5,"55":2,"56":3,"89":1,"101":2}}],["movingwindow",{"2":{"25":1,"89":4}}],["moment",{"2":{"13":1}}],["more",{"2":{"9":1,"14":1,"36":1,"41":1,"42":1,"58":1,"70":1,"71":1,"76":1,"81":1,"84":1,"89":3,"90":1,"96":1}}],["most",{"2":{"1":1,"10":1,"19":1}}],["mesh",{"2":{"111":2}}],["merely",{"2":{"86":1}}],["merged",{"2":{"66":1}}],["measured",{"2":{"75":1,"76":1}}],["measure",{"2":{"74":1}}],["measures",{"2":{"59":1}}],["means",{"0":{"49":1},"2":{"18":1,"89":1}}],["mean",{"0":{"100":1,"102":1},"1":{"101":1,"102":1},"2":{"14":1,"18":3,"27":4,"42":4,"51":10,"52":2,"53":1,"56":2,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"89":1,"101":5}}],["meter",{"2":{"59":1}}],["method",{"2":{"20":2,"22":1,"23":1,"25":1,"58":1,"89":1}}],["methods",{"2":{"7":1,"27":1,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["metadata",{"2":{"8":1,"9":1,"10":1,"11":1,"13":3,"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"23":1,"25":3,"26":3,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"47":2,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"86":2,"89":1,"96":3,"101":1}}],["members",{"2":{"90":1}}],["member",{"2":{"6":1}}],["memory",{"0":{"62":1},"1":{"63":1},"2":{"1":1,"8":1,"10":3,"11":1,"13":1,"14":1,"16":1,"17":1,"18":2,"20":3,"21":1,"22":1,"23":1,"25":3,"26":3,"29":2,"32":1,"33":3,"34":1,"37":5,"40":4,"41":3,"42":3,"47":2,"50":3,"54":1,"62":1,"63":4,"74":1,"86":2,"89":2,"90":1,"96":2,"101":1}}],["multi",{"2":{"21":2,"25":2}}],["multiplying",{"2":{"41":1}}],["multiply",{"2":{"14":1,"41":1}}],["multiple",{"0":{"45":1,"106":1},"2":{"7":1,"25":1,"27":1,"59":1,"60":1,"74":1,"89":1}}],["must",{"2":{"0":1,"76":1,"89":1,"90":1}}],["mb",{"2":{"0":1,"50":2,"60":1,"63":3,"68":2}}],["pkg",{"2":{"95":2,"98":2,"99":8}}],["pkg>",{"2":{"93":1,"98":1}}],["purple",{"2":{"100":1}}],["purpose",{"2":{"31":1,"41":1}}],["pull",{"2":{"91":1}}],["public",{"0":{"89":1}}],["published",{"2":{"56":1}}],["pydata",{"2":{"50":1}}],["p",{"2":{"40":10,"60":1,"67":1,"79":1,"85":1}}],["picture",{"2":{"74":1,"75":1}}],["pieces",{"2":{"31":1}}],["pixel",{"0":{"100":1},"1":{"101":1,"102":1},"2":{"25":1,"27":2}}],["plt",{"2":{"108":1}}],["place",{"2":{"90":1}}],["please",{"2":{"60":1,"81":1}}],["plots",{"2":{"111":1}}],["plot",{"0":{"102":1,"108":1,"111":1},"2":{"56":2}}],["plotting",{"0":{"107":1},"1":{"108":1},"2":{"0":1,"99":1}}],["plus",{"2":{"22":3,"50":1,"89":1}}],["post=getpostfunction",{"2":{"89":1}}],["positions",{"2":{"90":2}}],["position",{"2":{"74":1}}],["positional",{"2":{"69":1,"70":1}}],["pos",{"2":{"26":2}}],["possible",{"2":{"10":1,"27":2,"35":1,"47":1,"86":1,"89":3,"90":1}}],["point3f",{"2":{"111":1}}],["point",{"2":{"26":3,"59":1,"96":1}}],["points",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"11":2,"13":4,"14":3,"16":3,"17":3,"18":4,"20":9,"21":3,"22":3,"23":2,"24":3,"25":9,"26":16,"27":1,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":21,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"59":6,"60":6,"61":2,"63":9,"64":3,"65":10,"66":4,"67":3,"68":6,"69":4,"70":9,"71":16,"72":3,"74":2,"75":1,"79":3,"85":6,"86":6,"96":5,"101":1,"107":3}}],["page",{"2":{"111":1}}],["paste",{"2":{"93":1}}],["pass",{"2":{"89":1}}],["passed",{"2":{"58":1,"89":5}}],["passing",{"2":{"25":1,"89":3}}],["pair",{"2":{"90":1}}],["pairs",{"2":{"22":1,"24":1}}],["partitioned",{"2":{"90":1}}],["participate",{"2":{"89":1}}],["particular",{"2":{"77":1}}],["parts",{"2":{"89":1}}],["parent",{"2":{"59":1,"107":1}}],["parallelized",{"2":{"90":1}}],["parallelisation",{"2":{"89":1}}],["parallel",{"2":{"27":1,"74":1}}],["package",{"2":{"27":1,"70":1,"72":1,"88":1,"95":1,"99":1}}],["packages",{"2":{"10":1,"20":1}}],["paths",{"2":{"64":1,"66":1,"89":1,"90":2}}],["path=",{"2":{"20":2,"59":1,"80":1,"81":1,"82":1,"83":1,"84":2,"85":1,"86":1,"89":1,"90":1}}],["path=f",{"2":{"4":1,"5":1,"6":1}}],["path",{"0":{"24":1},"2":{"0":1,"24":1,"50":2,"59":3,"60":2,"61":2,"67":2,"79":2,"84":2,"89":3,"93":1}}],["pr",{"2":{"93":1}}],["println",{"2":{"83":1}}],["printed",{"2":{"46":2}}],["primem",{"2":{"61":1}}],["prior",{"2":{"1":1}}],["props",{"2":{"96":2}}],["properly",{"2":{"49":1}}],["properties=dict",{"2":{"90":1}}],["properties=properties",{"2":{"22":2}}],["properties",{"0":{"21":1},"1":{"22":1,"23":1,"24":1},"2":{"14":2,"21":2,"22":2,"23":1,"24":2,"25":2,"27":2,"29":3,"30":3,"50":1,"56":1,"59":1,"60":1,"61":1,"67":1,"79":1,"85":1,"89":5,"90":1,"107":1}}],["probably",{"2":{"90":1}}],["process",{"2":{"74":1,"90":2}}],["processed",{"2":{"17":1}}],["provide",{"2":{"89":1}}],["provides",{"2":{"74":1,"104":1}}],["provided",{"2":{"36":1,"86":1,"89":2}}],["providing",{"2":{"66":1}}],["projection",{"0":{"109":1,"110":1},"1":{"110":1,"111":1},"2":{"61":1}}],["progressmeter",{"2":{"89":1}}],["progress",{"2":{"50":1,"103":1,"105":1}}],["product",{"2":{"26":1}}],["pressed",{"2":{"98":1}}],["pressing",{"2":{"95":1}}],["pre",{"2":{"89":2}}],["previous",{"2":{"56":1,"84":1,"86":1,"89":1}}],["previously",{"2":{"42":1}}],["preferred",{"2":{"50":2}}],["prepared",{"2":{"60":1,"67":1,"79":1,"85":1}}],["prep",{"2":{"9":2}}],["precipitation",{"2":{"9":2,"75":1,"76":1,"96":2}}],["permute",{"2":{"90":1}}],["permuteloopaxes",{"2":{"90":1}}],["permutation",{"2":{"90":1}}],["persist",{"2":{"90":1}}],["persistend",{"2":{"90":1}}],["persistency",{"2":{"90":1}}],["persistent",{"2":{"89":1,"90":2}}],["persist=nothing",{"2":{"84":1,"89":1}}],["perform",{"2":{"90":1}}],["performed",{"2":{"17":2}}],["performing",{"2":{"14":1}}],["per",{"2":{"7":1,"18":1,"51":1,"54":1,"55":1}}],["=interval",{"2":{"71":2}}],["===",{"2":{"46":1}}],["==",{"2":{"16":1,"46":1,"101":1}}],["=>nan",{"2":{"111":1}}],["=>",{"2":{"14":2,"16":1,"17":1,"20":2,"21":2,"22":3,"23":2,"24":1,"25":2,"26":5,"27":1,"29":3,"30":3,"44":1,"45":1,"46":5,"50":15,"51":5,"52":1,"54":3,"55":2,"56":3,"59":20,"60":20,"61":1,"63":30,"67":10,"68":20,"69":30,"70":30,"71":50,"78":1,"79":10,"85":10,"96":6,"107":10}}],["=>2",{"2":{"4":1}}],["=>10",{"2":{"4":1}}],["=>5",{"2":{"4":1,"5":1}}],["=",{"2":{"0":5,"2":4,"4":9,"5":15,"6":9,"8":5,"9":5,"11":3,"12":5,"13":4,"14":4,"15":1,"16":1,"17":1,"20":14,"21":4,"22":14,"23":7,"24":11,"25":12,"26":16,"27":5,"29":5,"30":4,"32":1,"33":3,"35":6,"37":7,"39":6,"40":17,"42":7,"44":1,"45":3,"46":7,"47":4,"50":5,"51":16,"52":1,"53":1,"54":4,"55":1,"56":22,"58":3,"59":2,"60":3,"61":2,"63":1,"64":6,"65":7,"66":2,"67":2,"68":2,"69":6,"70":6,"71":3,"79":2,"81":2,"83":3,"85":2,"86":4,"87":5,"89":8,"90":7,"96":5,"100":10,"101":11,"102":5,"107":8,"108":5,"109":7,"110":5,"111":6}}],["dc",{"2":{"90":2}}],["dkrz",{"2":{"59":1,"107":2}}],["dufresne",{"2":{"60":1,"67":1,"79":1,"85":1}}],["due",{"2":{"53":1}}],["dummy",{"2":{"35":1,"37":1,"100":1,"101":1}}],["during",{"2":{"10":1,"26":1,"27":1}}],["dd",{"2":{"32":1,"65":4,"66":2,"89":4,"101":1}}],["d",{"2":{"26":5,"46":5,"56":3,"101":1}}],["drop",{"2":{"56":1}}],["dropdims",{"0":{"52":1},"2":{"51":2,"52":2,"56":1}}],["drivers",{"2":{"58":1,"89":1}}],["driver",{"2":{"48":1,"58":3,"84":1,"89":5}}],["driver=backend",{"2":{"84":1,"89":1}}],["driver=",{"2":{"4":1,"5":1,"6":1,"58":3,"80":2,"81":1,"82":2,"83":1,"84":3,"85":1,"86":2,"89":5}}],["drei",{"2":{"23":2}}],["dash",{"2":{"102":1}}],["danger",{"2":{"84":1}}],["daysinmonth",{"2":{"51":1,"54":1}}],["days",{"2":{"49":1,"51":2,"53":1,"54":2,"55":2}}],["dayofyear",{"2":{"20":1}}],["day",{"2":{"14":2,"16":1,"17":1,"18":1,"20":4,"21":2,"22":1,"25":3,"26":3,"27":1,"29":3,"30":1,"64":2,"65":1,"100":1,"101":4,"102":1}}],["datconfig",{"2":{"90":2}}],["datset",{"2":{"89":1}}],["dat",{"2":{"89":8,"90":16}}],["datum",{"2":{"61":1}}],["datetime360day",{"2":{"60":6,"63":9,"67":3,"68":6,"69":7,"70":9,"71":15,"79":3,"85":3}}],["datetimenoleap",{"2":{"50":6,"51":2,"54":7,"55":2,"56":2}}],["datetime",{"2":{"24":1,"46":5,"59":2,"65":1,"66":3,"107":1}}],["date",{"2":{"14":5,"16":3,"17":3,"18":3,"20":12,"21":5,"22":3,"25":8,"26":11,"27":3,"29":8,"30":3,"37":24,"39":8,"40":11,"64":3,"65":7,"74":1,"78":2,"100":2,"101":5,"107":1}}],["datesid",{"2":{"101":2}}],["dates",{"2":{"14":2,"16":1,"17":1,"18":1,"20":5,"21":2,"22":1,"25":2,"26":3,"27":1,"29":3,"30":1,"37":8,"39":4,"40":5,"48":1,"51":1,"64":7,"65":5,"66":1,"76":1,"100":1,"101":2,"107":1}}],["data=cube1",{"2":{"89":1}}],["databases",{"2":{"74":1}}],["dataframe",{"2":{"42":1,"89":1}}],["dataframes",{"2":{"42":1}}],["datacubes",{"2":{"89":1}}],["datacube",{"0":{"106":1},"2":{"42":2,"86":1,"89":1}}],["datatypes",{"2":{"36":1}}],["data1",{"2":{"35":2}}],["data3",{"2":{"30":1}}],["data2",{"2":{"29":2,"35":2}}],["datasetaxis",{"2":{"89":2,"90":1}}],["datasetaxis=",{"2":{"89":1,"90":1}}],["dataset",{"0":{"30":1,"36":1,"38":1,"39":1,"40":1,"43":1,"46":1,"58":1,"75":1,"84":1,"85":1,"87":1},"1":{"37":1,"38":1,"39":2,"40":2,"44":1,"45":1,"59":1,"60":1,"61":1,"62":1,"63":1},"2":{"0":3,"3":1,"4":4,"5":2,"6":3,"9":1,"10":1,"14":1,"22":1,"24":2,"30":2,"38":1,"39":3,"40":5,"44":2,"45":3,"46":5,"58":4,"59":3,"60":3,"61":3,"64":1,"65":3,"66":1,"67":3,"68":1,"75":3,"76":2,"78":1,"79":3,"80":1,"81":1,"82":1,"83":1,"84":3,"85":4,"86":2,"87":2,"89":20,"90":9,"107":2}}],["datasets",{"0":{"3":1,"28":1,"48":1,"57":1,"67":1,"79":1},"1":{"4":1,"5":1,"6":1,"29":1,"30":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"72":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"2":{"0":2,"10":1,"28":1,"40":1,"57":1,"58":1,"62":1,"84":1,"89":9,"90":4,"105":1}}],["data",{"0":{"34":1,"50":1,"62":1,"76":1},"1":{"63":1},"2":{"0":3,"1":2,"7":1,"8":2,"9":1,"11":2,"12":1,"13":1,"14":3,"15":1,"16":1,"17":1,"18":2,"20":9,"21":3,"22":1,"23":1,"25":6,"26":4,"27":2,"29":2,"32":1,"33":3,"34":2,"35":1,"37":6,"39":1,"40":2,"41":3,"42":5,"50":4,"54":1,"59":3,"60":7,"63":6,"64":1,"67":3,"68":4,"69":6,"70":6,"71":10,"73":1,"74":3,"75":2,"76":3,"79":3,"84":2,"85":3,"86":4,"87":1,"89":20,"90":12,"96":6,"97":1,"100":2,"101":2,"105":4,"107":5,"109":1}}],["dev",{"2":{"93":1}}],["dependencies",{"2":{"93":1}}],["depth",{"2":{"25":8,"78":2}}],["deletes",{"2":{"84":1,"89":1}}],["delete",{"2":{"84":2,"86":1}}],["denoting",{"2":{"89":1}}],["dense",{"2":{"74":1}}],["denvil",{"2":{"60":2,"67":2,"79":2,"85":2}}],["degree",{"2":{"61":1}}],["degc",{"2":{"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["detect",{"2":{"58":1,"89":1,"90":1}}],["determined",{"2":{"90":1}}],["determines",{"2":{"89":1}}],["determine",{"2":{"1":1,"63":1,"89":1}}],["dec",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["defaultfillval",{"2":{"90":1}}],["defaults",{"2":{"65":1,"89":7}}],["default",{"2":{"22":1,"58":1,"83":3,"86":1,"89":1,"90":4}}],["definition",{"2":{"76":1}}],["definitions",{"2":{"21":1,"23":1}}],["defining",{"2":{"27":1}}],["defines",{"2":{"89":1}}],["define",{"0":{"101":1},"2":{"20":2,"22":1,"37":1,"42":1,"56":1,"78":1,"89":2,"100":1}}],["defined",{"2":{"12":1,"13":1,"22":1,"42":1,"51":1,"56":1,"72":1,"74":1,"77":1,"78":1,"86":1,"96":1}}],["deal",{"2":{"21":1}}],["demand",{"2":{"17":1}}],["dest",{"2":{"110":1}}],["desc",{"2":{"89":3,"90":3}}],["descriptor",{"2":{"90":4}}],["descriptors",{"2":{"89":2}}],["descriptions",{"2":{"89":1}}],["description",{"2":{"21":2,"23":2,"25":2,"36":1,"89":4,"90":11}}],["described",{"2":{"105":1}}],["describe",{"2":{"89":2}}],["describes",{"2":{"7":1,"10":1,"14":1,"28":1,"57":1,"71":1,"73":1,"88":1,"90":1}}],["describing",{"2":{"89":1}}],["desired",{"2":{"20":1,"90":4}}],["designed",{"2":{"10":2,"74":1}}],["diverging",{"2":{"56":1}}],["divided",{"2":{"41":1}}],["differing",{"2":{"89":1}}],["difference",{"2":{"56":1}}],["differences",{"2":{"46":1,"51":1,"56":1,"90":1}}],["different",{"0":{"25":1},"2":{"9":2,"20":1,"21":2,"27":1,"32":1,"33":1,"45":1,"49":1,"58":1,"75":1,"89":3,"90":2,"103":1}}],["diff",{"2":{"51":2,"56":3}}],["directory",{"2":{"59":1,"80":2,"82":2}}],["directories",{"2":{"57":1,"90":1}}],["direct",{"2":{"46":1}}],["directly",{"2":{"13":1,"20":1,"24":1,"28":1,"29":1,"87":2}}],["dictionary",{"2":{"75":1,"89":3}}],["dict",{"2":{"4":1,"5":1,"8":1,"9":1,"11":1,"13":3,"14":2,"16":1,"17":1,"18":2,"20":5,"21":2,"22":3,"23":2,"24":1,"25":4,"26":4,"27":1,"29":4,"30":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"46":2,"47":2,"50":2,"51":3,"52":2,"54":4,"55":3,"56":3,"59":2,"60":2,"61":1,"63":3,"64":1,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1,"86":1,"89":3,"96":3,"101":1,"107":1}}],["dime",{"2":{"59":1}}],["dimensional",{"2":{"21":2,"23":2,"25":2,"73":1,"74":2,"89":1}}],["dimensionaldata",{"2":{"13":2,"26":1,"32":1,"33":1,"37":1,"39":1,"40":1,"46":1,"48":1,"50":1,"51":15,"52":10,"54":12,"55":5,"56":38,"65":1,"66":2,"70":1,"71":2,"72":3,"74":1,"77":1,"78":1,"97":3,"99":1,"101":1,"107":1}}],["dimensions",{"0":{"39":1,"40":1,"77":1},"1":{"78":1},"2":{"9":1,"14":1,"17":1,"19":1,"20":2,"24":1,"25":1,"26":2,"27":1,"29":2,"33":1,"35":1,"38":1,"40":3,"41":2,"45":1,"51":16,"52":10,"54":11,"55":5,"56":38,"63":1,"66":1,"67":1,"72":2,"74":3,"75":1,"78":2,"89":8,"90":3,"96":3,"97":1}}],["dimension",{"0":{"8":1,"9":1,"65":1,"66":1,"72":1},"2":{"2":1,"8":2,"9":1,"14":1,"18":2,"20":3,"22":1,"23":1,"26":3,"37":1,"40":1,"51":1,"52":1,"53":1,"56":1,"64":2,"65":4,"66":3,"70":1,"72":1,"74":1,"76":1,"77":1,"78":4,"89":7,"90":3,"96":1}}],["dimvector",{"2":{"54":1,"89":1}}],["dimgroupbyarray",{"2":{"51":1,"54":1}}],["dimarray",{"0":{"13":1},"2":{"13":6,"26":3,"51":1,"52":1,"54":1,"55":2,"56":3,"65":3,"66":1,"72":1,"74":1,"89":2}}],["dims=2",{"2":{"101":1}}],["dims=",{"2":{"18":2,"27":1,"41":1,"51":5,"52":1,"54":1,"56":1}}],["dims",{"2":{"8":3,"9":1,"11":1,"12":1,"13":2,"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"23":1,"25":3,"26":4,"29":2,"32":3,"33":4,"34":1,"35":1,"37":5,"41":3,"42":3,"46":1,"47":2,"50":2,"51":6,"52":1,"54":5,"55":2,"56":5,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"72":1,"86":1,"96":2,"101":1}}],["dim",{"2":{"2":2,"4":7,"5":8,"6":2,"11":2,"13":2,"25":1,"26":1,"29":4,"32":9,"33":6,"34":3,"35":1,"40":1,"44":1,"45":5,"47":4,"51":2,"52":2,"56":6,"78":3,"85":3,"86":6,"89":1,"96":2}}],["disregard",{"2":{"90":1}}],["dispatch",{"2":{"90":1}}],["displayed",{"2":{"63":1}}],["discribe",{"2":{"89":2}}],["discussion",{"2":{"81":1}}],["distribute",{"2":{"27":1}}],["distributed",{"0":{"27":1},"2":{"0":1,"27":2}}],["diskarray",{"2":{"89":1}}],["diskarrays",{"2":{"2":9,"4":4,"5":4,"6":4,"89":2,"90":1}}],["disk",{"2":{"1":1,"13":1,"20":1,"24":1,"74":1,"86":3,"87":2,"89":1,"90":2}}],["dodgerblue",{"2":{"102":1}}],["documenter",{"2":{"111":1}}],["documentation",{"0":{"92":1},"1":{"93":1}}],["doc",{"2":{"84":1}}],["docs",{"0":{"93":1},"2":{"75":1,"92":2,"93":6,"97":1}}],["docstring",{"2":{"58":1,"89":1}}],["don",{"2":{"81":1}}],["done",{"2":{"33":1,"41":1,"56":1,"62":1,"92":2}}],["double",{"2":{"50":2}}],["download",{"0":{"50":1},"2":{"50":1,"60":2,"61":2,"67":2,"79":2}}],["downloads",{"2":{"48":1,"50":1,"60":1,"61":1,"67":1,"79":1}}],["doing",{"2":{"27":1,"32":1,"34":1,"78":2,"93":1}}],["does",{"2":{"27":1,"86":1,"89":2,"90":1}}],["dot",{"2":{"25":1,"102":1}}],["do",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"46":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"1":1,"17":1,"20":1,"26":3,"27":1,"31":2,"41":1,"49":1,"56":1,"78":1,"86":1,"87":1,"90":1,"93":1,"95":1}}],["dsw",{"2":{"51":2,"56":2}}],["dsfinal",{"2":{"35":1,"41":2,"42":2}}],["ds2",{"2":{"35":3,"41":1,"85":1}}],["ds1",{"2":{"35":3,"41":3,"42":1}}],["dschunked",{"2":{"4":3,"5":3,"6":3}}],["ds",{"2":{"0":3,"4":2,"5":2,"6":2,"30":1,"39":2,"40":12,"44":1,"45":1,"46":2,"50":4,"51":10,"54":1,"56":3,"59":1,"60":2,"61":1,"63":3,"65":3,"66":2,"67":1,"68":2,"78":1,"79":1,"80":3,"81":2,"82":3,"83":7,"84":3,"85":2,"86":1,"87":5,"89":4,"90":1,"111":2}}],["wglmakie",{"2":{"111":2}}],["wgs",{"2":{"61":3}}],["written",{"2":{"89":1,"90":1}}],["writing",{"2":{"87":1}}],["writefac",{"2":{"90":1}}],["writefac=4",{"2":{"84":1,"89":1}}],["writes",{"2":{"89":1}}],["write",{"0":{"79":1,"80":1,"82":1},"1":{"80":1,"81":2,"82":1,"83":2,"84":1,"85":1,"86":1,"87":1},"2":{"86":1,"89":2}}],["wrapping",{"2":{"53":1,"66":1,"72":2}}],["wrapped",{"2":{"20":1}}],["wrap",{"2":{"0":1,"89":1}}],["would",{"2":{"64":1,"89":2}}],["world",{"2":{"61":2}}],["workdir",{"2":{"90":1}}],["worker",{"2":{"89":1}}],["workers",{"2":{"89":1}}],["workflow",{"2":{"62":1}}],["workflows",{"2":{"1":1}}],["workload",{"2":{"27":1}}],["working",{"2":{"20":1,"87":1}}],["work",{"2":{"10":2,"50":1,"66":1,"73":1,"89":1,"103":2,"105":1}}],["works",{"2":{"6":1,"34":1,"39":1,"40":1,"65":1,"86":1}}],["www",{"2":{"60":1,"67":1,"79":1}}],["w",{"2":{"56":2,"87":2}}],["was",{"2":{"24":1,"26":1,"27":1,"90":1}}],["way",{"2":{"10":1,"19":1,"32":1}}],["warning",{"2":{"10":1,"15":1,"32":1,"40":1,"45":1,"47":1,"50":1,"84":1,"86":1,"89":1}}],["wanted",{"2":{"90":1}}],["wants",{"2":{"86":1}}],["want",{"0":{"99":1},"2":{"0":1,"1":1,"62":1,"66":1,"76":1,"78":2,"90":1,"93":1,"98":1,"105":1}}],["white",{"2":{"109":1,"110":1}}],["while",{"2":{"86":1}}],["which",{"2":{"9":1,"20":1,"26":2,"33":1,"40":2,"51":1,"56":1,"60":1,"63":1,"68":1,"71":1,"72":1,"76":3,"89":5,"90":4,"105":1}}],["what",{"2":{"51":1}}],["whose",{"0":{"39":1,"40":1}}],["whole",{"2":{"8":3}}],["whether",{"2":{"90":2}}],["when",{"2":{"1":1,"6":1,"17":1,"51":1,"63":1,"64":1,"66":1,"76":1,"78":1,"89":3,"90":1}}],["whereas",{"2":{"74":1}}],["where",{"2":{"0":1,"27":1,"40":4,"49":1,"66":1,"71":1,"87":1,"89":1,"90":4}}],["wintri",{"0":{"109":1},"1":{"110":1,"111":1}}],["windowloopinds",{"2":{"90":1}}],["window",{"2":{"89":1,"90":1}}],["wide",{"2":{"66":1}}],["within",{"2":{"70":1}}],["without",{"2":{"65":1,"90":1}}],["with",{"0":{"47":1},"2":{"4":1,"5":1,"8":1,"10":1,"14":1,"16":1,"17":1,"20":7,"21":3,"22":2,"23":2,"25":3,"26":4,"27":2,"29":3,"32":1,"33":1,"40":6,"41":2,"42":3,"45":2,"46":3,"47":1,"50":2,"51":4,"52":1,"54":2,"55":2,"56":5,"58":1,"59":3,"60":2,"63":3,"66":2,"67":1,"68":2,"69":3,"70":3,"71":5,"73":1,"75":1,"79":1,"81":1,"83":1,"84":1,"85":2,"86":2,"87":1,"89":11,"90":1,"92":1,"96":4,"97":3,"103":1,"105":1,"107":2,"109":1}}],["will",{"2":{"0":1,"1":1,"4":1,"5":1,"17":1,"20":3,"21":2,"22":1,"23":1,"26":1,"36":1,"40":1,"41":2,"42":2,"45":2,"46":1,"48":1,"53":2,"58":1,"60":1,"66":1,"84":3,"86":3,"87":1,"89":12,"90":3,"105":1}}],["wether",{"2":{"89":1}}],["weight=",{"2":{"89":1}}],["weight=nothing",{"2":{"89":1}}],["weight",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"53":1,"55":1,"56":1}}],["weights",{"0":{"55":1},"2":{"51":3,"55":2,"56":1}}],["weightedmean",{"2":{"89":1}}],["weighted",{"0":{"56":1},"2":{"42":1,"49":1,"51":8,"56":8,"89":3}}],["well",{"2":{"42":1,"46":1,"86":1,"89":1}}],["welcome",{"2":{"6":1,"91":1}}],["were",{"2":{"17":2,"71":1,"90":1,"100":1}}],["we",{"2":{"0":1,"8":2,"9":1,"17":2,"18":1,"20":5,"21":3,"22":1,"23":1,"24":1,"26":5,"27":2,"29":2,"33":1,"35":1,"36":1,"37":1,"38":1,"40":2,"41":2,"42":5,"46":4,"51":3,"52":1,"53":2,"56":1,"59":1,"64":1,"66":1,"70":1,"76":1,"86":3,"87":4,"97":2,"100":1,"107":1}}],["oob",{"2":{"89":1}}],["o1",{"2":{"60":2,"67":2,"79":2,"85":1}}],["ocean",{"2":{"60":1,"67":1,"79":1,"85":1}}],["oct",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["occuring",{"2":{"4":1}}],["o",{"2":{"50":3,"56":4,"89":5}}],["ohlcv",{"2":{"46":3}}],["ouput",{"2":{"93":1}}],["our",{"2":{"41":1,"42":1,"101":1}}],["outcube",{"2":{"90":1}}],["outcubes",{"2":{"90":1}}],["outcs",{"2":{"90":1}}],["outsize",{"2":{"90":1}}],["outar",{"2":{"90":2}}],["out",{"2":{"50":1,"89":2,"90":1}}],["outtype",{"2":{"20":2,"89":1,"90":2}}],["outdims=outdims",{"2":{"26":1,"27":1}}],["outdims",{"0":{"21":1,"22":1,"23":1,"24":1},"1":{"22":1,"23":1,"24":1},"2":{"20":4,"22":12,"23":2,"24":11,"25":3,"89":6}}],["outputcube",{"2":{"90":3}}],["outputs",{"2":{"20":1,"22":2,"25":1}}],["output",{"2":{"6":1,"20":3,"21":1,"22":1,"26":1,"27":3,"60":1,"67":1,"79":1,"85":1,"89":11,"90":9,"111":1}}],["optimal",{"2":{"90":1}}],["optifunc",{"2":{"90":1}}],["optionally",{"2":{"89":1}}],["option",{"2":{"37":1,"39":1,"81":1}}],["options",{"2":{"34":1,"58":1,"66":1,"89":1}}],["operates",{"2":{"89":1}}],["operate",{"2":{"25":1,"78":1}}],["operation",{"2":{"25":1,"90":1}}],["operations",{"0":{"20":1},"2":{"14":1,"51":1,"89":2,"90":3}}],["operating",{"2":{"23":1}}],["opens",{"2":{"89":1}}],["openinterval",{"2":{"71":1}}],["opening",{"2":{"65":2}}],["open",{"0":{"58":1,"64":1,"71":1},"1":{"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"66":1},"2":{"0":2,"22":1,"24":2,"46":4,"58":3,"59":2,"60":2,"61":1,"64":1,"65":3,"66":3,"67":2,"71":2,"79":1,"81":1,"85":1,"87":6,"89":7,"107":1}}],["obj",{"2":{"42":2,"100":1,"102":1}}],["objects",{"2":{"89":2}}],["object",{"2":{"15":1,"59":1,"89":5,"90":3}}],["obtain",{"0":{"34":1},"2":{"46":1,"53":1}}],["omit",{"2":{"27":1}}],["overwrite=false",{"2":{"84":1,"89":1}}],["overwrite=true",{"2":{"20":2,"84":3,"86":3,"89":1}}],["overwrite",{"0":{"84":1},"2":{"84":1,"89":2,"90":2}}],["overview",{"0":{"104":1},"2":{"78":1,"103":1,"104":1}}],["over",{"0":{"20":1,"105":1},"2":{"14":1,"19":1,"25":1,"27":1,"56":1,"89":8,"90":1,"105":1}}],["otherwise",{"2":{"89":1}}],["others",{"2":{"25":1,"46":1}}],["other",{"0":{"103":1},"1":{"104":1,"105":1,"106":1},"2":{"10":1,"24":1,"62":1,"103":1,"105":1}}],["orca2",{"2":{"60":1,"67":1,"79":1,"85":1}}],["orangered",{"2":{"42":1}}],["ordered",{"2":{"74":1,"75":1}}],["ordereddict",{"2":{"26":1,"89":1}}],["orderedcollections",{"2":{"26":1}}],["order",{"2":{"20":1,"49":1,"87":1}}],["original",{"2":{"60":2,"63":6,"68":4,"69":6,"70":6,"71":10}}],["originates",{"2":{"9":1}}],["origin",{"2":{"14":2,"16":1,"17":1,"27":1,"29":3,"30":1,"96":2}}],["or",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1},"2":{"1":2,"6":1,"13":1,"14":1,"17":2,"19":1,"33":1,"38":1,"47":2,"58":1,"59":1,"62":1,"67":2,"74":3,"77":2,"78":9,"81":1,"84":1,"89":24,"90":7,"95":1,"96":2,"98":1}}],["once",{"2":{"56":1,"76":1,"90":1,"92":1}}],["onlinestat",{"2":{"89":2}}],["onlinestats",{"2":{"42":2}}],["only",{"2":{"6":1,"10":1,"17":1,"18":1,"20":1,"24":1,"26":1,"29":2,"41":1,"51":1,"60":1,"78":1,"86":1,"89":2}}],["on",{"2":{"1":2,"6":1,"7":1,"14":2,"17":2,"20":1,"27":2,"31":1,"60":2,"63":3,"67":1,"68":2,"69":3,"70":3,"71":5,"74":1,"78":1,"79":1,"81":1,"85":1,"86":1,"89":5,"90":4}}],["ones",{"2":{"21":1,"33":1}}],["oneto",{"2":{"4":4,"5":4,"6":2,"11":2,"29":3,"32":9,"33":6,"44":1,"45":5,"47":4,"86":6,"96":2}}],["one",{"0":{"22":1,"44":1},"2":{"0":1,"7":1,"8":2,"18":2,"22":15,"23":5,"24":6,"25":2,"26":2,"42":1,"46":1,"52":1,"60":1,"64":1,"74":2,"75":1,"86":2,"89":9,"90":3,"103":1}}],["own",{"2":{"0":1,"60":1,"78":1}}],["offline=true",{"2":{"111":1}}],["offsets",{"2":{"90":1}}],["offset",{"2":{"17":1}}],["often",{"2":{"7":1}}],["of",{"0":{"15":1,"40":1,"49":1,"87":1,"104":2},"2":{"0":2,"1":1,"6":1,"8":3,"9":1,"10":1,"12":1,"13":1,"14":2,"15":1,"16":1,"17":2,"18":1,"19":1,"26":7,"27":3,"31":3,"32":3,"36":1,"37":2,"38":1,"39":1,"40":2,"41":1,"42":1,"49":1,"50":1,"54":1,"60":1,"63":1,"64":3,"66":2,"67":3,"68":1,"70":1,"72":1,"74":7,"75":1,"76":2,"77":2,"78":1,"79":1,"85":1,"86":1,"87":1,"88":1,"89":53,"90":42,"96":1,"97":2,"101":2,"102":1,"103":1,"104":1}}],["eo",{"2":{"103":1}}],["esdltutorials",{"2":{"103":1}}],["esm1",{"2":{"59":1,"107":2}}],["eltype",{"2":{"96":1}}],["elementtype",{"2":{"90":1}}],["element",{"2":{"8":1,"9":1,"14":2,"17":2,"18":1,"20":3,"26":2,"34":1,"42":1,"51":2,"52":1,"53":1,"54":7,"55":2,"56":3,"66":1,"69":2,"72":1,"75":1,"76":2,"89":1,"90":1,"101":1}}],["elements",{"0":{"15":1,"69":1},"2":{"8":1,"16":1,"17":2,"27":1,"67":1,"74":1,"89":1,"90":1}}],["empty",{"2":{"90":1}}],["embeds",{"2":{"89":1}}],["either",{"2":{"89":2}}],["error",{"2":{"84":1}}],["even",{"2":{"65":1}}],["everywhere",{"2":{"27":2}}],["every",{"2":{"0":1,"14":1,"17":1,"89":1}}],["epsg",{"2":{"61":5}}],["et",{"2":{"60":1,"67":1,"76":1,"79":1,"85":1}}],["edu",{"2":{"60":1,"67":1,"75":1,"79":1}}],["equivalent",{"2":{"56":1,"72":1}}],["equally",{"2":{"0":1}}],["effectively",{"2":{"41":1}}],["env",{"2":{"93":1}}],["ensure",{"2":{"60":1}}],["enabling",{"2":{"29":1}}],["enumerate",{"2":{"26":2,"56":2}}],["end",{"2":{"17":1,"20":1,"22":1,"23":2,"25":2,"26":4,"27":2,"41":1,"51":2,"56":2,"60":1,"101":2,"111":1}}],["enter",{"2":{"95":1}}],["entries",{"2":{"26":1,"46":1,"50":2,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"87":1,"89":1,"96":1}}],["entry",{"2":{"14":1,"16":1,"17":1,"20":2,"21":1,"22":1,"23":1,"25":1,"29":2,"51":2,"52":1,"54":2,"55":2,"56":3,"89":1,"92":3}}],["entire",{"2":{"10":1,"26":1,"80":1,"82":1}}],["exist",{"2":{"89":1}}],["exists",{"2":{"84":1,"89":1,"90":1}}],["existing",{"0":{"8":1,"66":1},"2":{"66":1,"84":1,"85":1}}],["exportable=true",{"2":{"111":1}}],["exported",{"2":{"78":2}}],["expression",{"2":{"89":1}}],["experiment",{"2":{"60":3,"67":3,"79":3,"85":3}}],["explore",{"2":{"58":1}}],["explicitly",{"2":{"17":1,"33":1,"36":1,"51":1,"78":1,"90":1}}],["executes",{"2":{"89":1}}],["execute",{"2":{"27":1}}],["external",{"2":{"59":1,"107":1}}],["extension",{"2":{"58":1,"89":2}}],["extended",{"2":{"20":1,"89":1,"90":2}}],["extracts",{"2":{"90":1}}],["extract",{"0":{"32":1},"1":{"33":1},"2":{"90":1}}],["extracted",{"2":{"25":1}}],["extra",{"2":{"27":1}}],["exactly",{"2":{"5":1,"34":1,"46":1}}],["examples",{"2":{"6":1,"34":2,"48":1,"58":1,"60":1,"67":1,"79":1,"92":1}}],["example",{"2":{"0":1,"1":1,"5":1,"14":1,"21":1,"25":1,"27":2,"33":1,"39":1,"40":1,"41":1,"42":1,"49":1,"58":1,"60":1,"62":1,"64":1,"67":2,"74":2,"75":1,"76":1,"78":1,"79":2,"89":5,"90":1,"92":2,"96":2}}],["e",{"2":{"7":1,"8":1,"12":1,"13":1,"14":1,"15":1,"17":1,"26":2,"27":1,"29":1,"37":1,"58":1,"60":1,"72":1,"74":1,"77":1,"84":1,"89":7,"90":1,"93":1,"96":1}}],["east",{"2":{"61":1}}],["easier",{"2":{"29":1,"67":1}}],["easily",{"2":{"0":1,"27":1}}],["easy",{"2":{"12":1,"13":1}}],["each",{"2":{"4":1,"5":1,"14":1,"17":1,"24":1,"26":5,"27":2,"41":2,"42":2,"49":1,"53":1,"63":1,"75":1,"77":1,"89":3,"90":3,"96":1}}],["features",{"2":{"104":1}}],["feel",{"2":{"81":1}}],["few",{"2":{"78":1}}],["feb",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["frame",{"2":{"105":1}}],["frames",{"2":{"74":1}}],["front",{"2":{"90":1}}],["from",{"0":{"32":1,"34":2,"46":1,"49":1},"1":{"33":1},"2":{"0":1,"8":1,"9":1,"10":1,"32":1,"33":1,"34":4,"40":3,"46":2,"51":1,"58":1,"63":1,"66":1,"71":1,"76":2,"87":1,"89":6,"90":6,"96":1,"101":1}}],["free",{"2":{"81":1}}],["frequently",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["fr",{"2":{"60":1,"67":1,"79":1,"85":1}}],["fallback",{"2":{"90":1}}],["falls",{"2":{"89":1}}],["false",{"2":{"22":1,"24":1,"47":1,"89":1,"90":1}}],["fails",{"2":{"89":1}}],["faq",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["faster",{"2":{"90":1}}],["fastest",{"2":{"1":1}}],["fast",{"2":{"1":1,"17":1}}],["f2mix",{"2":{"23":3}}],["f2",{"2":{"22":3}}],["f1",{"2":{"22":2,"23":1}}],["fu",{"2":{"90":1}}],["funtion",{"2":{"101":1}}],["fun",{"2":{"89":5}}],["functionality",{"0":{"104":1}}],["functions",{"2":{"14":2,"25":1,"74":2,"88":1,"89":1,"90":1}}],["function",{"0":{"42":1},"2":{"0":1,"1":1,"17":2,"19":1,"20":6,"21":1,"22":2,"23":2,"25":5,"27":6,"32":2,"35":1,"41":1,"42":1,"46":1,"48":1,"51":1,"53":1,"56":1,"58":1,"62":1,"71":1,"86":1,"89":22,"90":12}}],["future",{"2":{"50":1}}],["further",{"2":{"17":1,"103":1}}],["flag",{"2":{"90":3}}],["flat",{"2":{"22":4,"23":2,"24":2}}],["float32",{"2":{"20":6,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5,"86":2,"87":4,"90":1}}],["float64",{"2":{"8":1,"9":1,"11":2,"13":4,"14":3,"16":3,"17":3,"18":4,"21":2,"22":2,"23":2,"24":2,"25":3,"26":9,"29":6,"30":2,"32":1,"33":3,"35":4,"41":12,"42":5,"46":2,"50":2,"51":3,"52":2,"55":3,"56":6,"59":4,"60":4,"61":2,"63":6,"64":1,"67":2,"68":4,"69":2,"70":6,"71":10,"72":4,"79":2,"85":2,"89":1,"90":1,"96":7,"101":2,"107":2}}],["flexible",{"2":{"9":1,"19":1}}],["folder",{"2":{"93":1}}],["follow",{"2":{"93":1,"103":1}}],["follows",{"2":{"20":2,"23":1,"25":1,"51":2,"56":1,"87":1}}],["following",{"2":{"2":1,"5":1,"6":1,"20":1,"21":1,"22":1,"25":1,"27":1,"33":1,"48":1,"49":1,"50":1,"89":2,"90":4,"98":2,"99":1,"103":1}}],["found",{"2":{"89":1,"90":1}}],["fourth",{"2":{"60":2,"67":2,"79":2,"85":2}}],["fontsize=24",{"2":{"108":1}}],["fontsize=18",{"2":{"56":1}}],["font=",{"2":{"56":1}}],["forwarded",{"2":{"89":1}}],["forwardordered",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"11":2,"13":4,"14":3,"16":3,"17":3,"18":3,"20":9,"21":4,"22":4,"23":3,"24":3,"25":9,"26":9,"29":9,"30":3,"32":9,"33":6,"34":2,"35":4,"37":14,"39":6,"40":10,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"59":6,"60":6,"61":1,"63":9,"64":3,"65":10,"66":4,"67":3,"68":6,"69":4,"70":9,"71":15,"72":3,"79":3,"85":6,"86":6,"96":5,"101":1,"107":3}}],["force",{"2":{"89":1}}],["forcing",{"2":{"59":1,"107":1}}],["forms",{"2":{"89":1,"90":2}}],["formal",{"2":{"76":1}}],["format",{"2":{"58":1,"81":1,"83":1,"84":1,"89":1,"101":1}}],["former",{"2":{"32":1}}],["for",{"0":{"6":1,"100":1},"1":{"101":1,"102":1},"2":{"0":2,"1":3,"4":1,"5":1,"6":1,"24":1,"26":4,"27":1,"37":1,"39":2,"40":2,"41":4,"42":6,"46":5,"50":1,"51":1,"54":1,"56":3,"58":3,"60":2,"62":2,"63":1,"64":3,"65":2,"67":1,"71":1,"72":1,"74":4,"75":3,"76":1,"78":4,"79":1,"84":1,"85":1,"86":2,"89":20,"90":16,"99":1,"100":1,"101":2,"103":1}}],["f",{"2":{"2":2,"20":3,"58":1,"89":1}}],["field",{"2":{"89":1}}],["fields",{"2":{"42":1,"89":1,"90":4}}],["figure=",{"2":{"102":1}}],["figure",{"2":{"56":2,"100":1,"102":1,"108":1,"109":1,"110":1,"111":1}}],["fig",{"2":{"42":3,"56":8,"100":1,"102":1,"108":2,"109":2,"110":2,"111":3}}],["filterig",{"2":{"101":1}}],["filter",{"2":{"89":2}}],["fillarrays",{"2":{"86":3}}],["fill",{"2":{"86":1,"89":1,"90":1}}],["fillvalue=",{"2":{"90":1}}],["fillvalue",{"2":{"50":6,"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["filling",{"2":{"28":1,"29":1}}],["filename",{"2":{"50":2,"58":1,"89":1}}],["files",{"0":{"106":1},"2":{"7":1,"57":1,"61":1,"64":2,"65":6,"66":4,"89":5,"90":2,"93":1}}],["file",{"2":{"2":1,"7":1,"13":1,"40":1,"60":2,"83":3,"84":2,"86":1,"89":2,"92":4}}],["findaxis",{"2":{"90":1}}],["findall",{"2":{"26":1,"101":1}}],["find",{"2":{"36":1,"90":1,"103":1}}],["finalizer",{"2":{"90":1}}],["finalize",{"2":{"90":1}}],["finally",{"2":{"26":1,"89":1}}],["final",{"2":{"25":1,"26":1}}],["firstly",{"2":{"37":1}}],["first",{"2":{"8":4,"20":3,"22":1,"26":1,"42":1,"45":1,"56":1,"87":1,"89":4,"90":1,"92":1,"96":1,"107":1}}],["fitting",{"2":{"89":1}}],["fittable",{"2":{"89":2}}],["fitcube",{"2":{"42":2}}],["fitsym",{"2":{"89":4}}],["fits",{"2":{"10":1}}],["fit",{"2":{"1":1,"62":1,"74":1}}],["t=union",{"2":{"90":1}}],["typing",{"2":{"95":1}}],["typically",{"2":{"89":1}}],["type",{"2":{"33":1,"47":1,"50":2,"74":1,"76":1,"89":8,"90":3,"96":1,"97":1}}],["types",{"0":{"73":1},"1":{"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"10":2,"12":1,"13":1,"47":1,"69":1,"75":1,"89":2,"97":1}}],["tutorial",{"2":{"103":2,"104":1,"105":1}}],["tutorials",{"0":{"103":1},"1":{"104":1,"105":1,"106":1},"2":{"71":1,"103":3}}],["turn",{"2":{"89":1}}],["tuple",{"2":{"2":3,"4":1,"5":1,"6":1,"22":1,"24":1,"51":2,"52":1,"54":5,"55":2,"56":4,"89":5,"90":1}}],["tbl",{"2":{"42":2}}],["target",{"2":{"90":1}}],["tab",{"2":{"89":4}}],["tables",{"2":{"105":1}}],["tableaggregator",{"2":{"89":1}}],["table",{"0":{"105":1},"2":{"42":2,"59":1,"60":2,"67":2,"78":2,"79":2,"85":2,"89":4,"90":1,"107":1}}],["tas",{"2":{"59":5,"107":5}}],["tair",{"2":{"50":2,"56":1,"89":1}}],["ta",{"2":{"46":3}}],["takes",{"2":{"89":4}}],["taken",{"2":{"40":2}}],["take",{"2":{"20":1,"89":1,"90":2,"93":1}}],["treat",{"2":{"89":1}}],["treatment",{"2":{"89":1,"90":1}}],["treated",{"2":{"59":1}}],["translate",{"2":{"109":1,"110":1}}],["transformed",{"2":{"60":1,"67":1,"79":1,"85":1}}],["transformations",{"2":{"109":1}}],["transformation",{"2":{"26":1}}],["transform",{"2":{"26":2}}],["track",{"2":{"89":1}}],["tries",{"2":{"58":1,"89":1}}],["true",{"2":{"16":1,"47":1,"62":1,"86":1,"89":3,"90":1,"111":1}}],["tesselation",{"2":{"111":1}}],["testrange",{"2":{"90":1}}],["test1",{"2":{"47":1}}],["test2",{"2":{"47":2}}],["test",{"2":{"21":4,"22":1,"23":3,"24":4,"25":4,"47":3,"90":1,"107":1}}],["terminal",{"2":{"93":1}}],["text",{"2":{"92":1}}],["tensors",{"2":{"74":1}}],["tell",{"2":{"36":1}}],["temporary",{"2":{"90":1}}],["temporal",{"2":{"41":1,"48":1,"74":1}}],["tempo",{"2":{"51":6,"54":4,"55":1}}],["temp",{"2":{"9":2}}],["temperature=temperature",{"2":{"40":1}}],["temperature",{"2":{"9":2,"40":4,"50":2,"56":2,"59":3,"60":2,"63":6,"68":5,"69":6,"70":6,"71":10,"74":1,"75":1,"76":1,"96":4}}],["tempname",{"2":{"2":1,"4":1,"5":1,"6":1}}],["tspan",{"2":{"20":1}}],["t",{"2":{"20":4,"37":1,"39":2,"40":2,"42":3,"60":1,"63":4,"68":2,"69":3,"70":3,"71":5,"81":1,"89":1,"90":2,"100":1,"101":1}}],["tip",{"2":{"97":1}}],["tidy",{"2":{"89":1}}],["ticks",{"2":{"74":1}}],["ticks=false",{"2":{"56":1}}],["tick",{"2":{"72":1,"77":1,"96":1}}],["tiff",{"0":{"106":1}}],["tif",{"2":{"61":2,"99":1}}],["title",{"2":{"56":1,"60":1,"67":1,"79":1,"85":1,"92":1}}],["ti",{"2":{"12":1}}],["time1",{"2":{"69":2}}],["timearray",{"0":{"46":1},"2":{"46":3}}],["time=1",{"2":{"96":1}}],["time=>cyclicbins",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["time=date",{"2":{"37":1}}],["time=at",{"2":{"37":1,"56":3}}],["time=between",{"2":{"37":1}}],["time",{"0":{"49":1,"78":1},"2":{"1":1,"7":1,"8":4,"9":3,"12":2,"14":3,"16":1,"17":1,"18":7,"20":14,"21":2,"22":4,"23":1,"24":5,"25":10,"26":8,"27":5,"29":3,"30":1,"35":2,"37":8,"39":4,"40":7,"41":4,"42":3,"46":5,"50":4,"51":21,"52":3,"53":2,"54":9,"55":3,"56":7,"59":4,"60":4,"63":6,"64":4,"65":9,"66":5,"67":1,"68":4,"69":6,"70":6,"71":10,"74":2,"75":1,"78":4,"79":1,"85":1,"89":6,"96":4,"100":1,"101":4,"107":4}}],["timestamp",{"2":{"46":1}}],["timestep",{"2":{"42":1}}],["timeseries",{"2":{"46":3}}],["times",{"2":{"0":1}}],["two",{"2":{"8":1,"9":1,"22":8,"23":4,"24":3,"25":2,"34":2,"35":1,"74":1,"90":1}}],["toghether",{"2":{"90":1}}],["together",{"2":{"46":1,"76":1}}],["touches",{"2":{"71":1}}],["tolerances",{"2":{"70":1}}],["tos",{"2":{"60":5,"63":6,"67":2,"68":4,"69":4,"70":3,"71":9,"72":2,"79":2,"80":2,"82":2,"85":1}}],["top",{"2":{"56":1}}],["too",{"2":{"40":1,"74":1,"89":1}}],["todo",{"2":{"25":1,"101":1}}],["toy",{"2":{"25":1,"86":1}}],["to",{"0":{"9":1,"22":1,"23":1,"43":1,"85":1,"91":1,"92":1,"98":1},"1":{"44":1,"45":1,"92":1,"93":2},"2":{"0":4,"1":4,"3":1,"4":1,"6":2,"7":1,"8":1,"9":1,"10":3,"11":2,"13":3,"14":8,"16":1,"19":1,"20":2,"21":1,"22":2,"23":1,"24":4,"25":3,"26":2,"27":6,"28":1,"31":2,"32":2,"34":3,"35":1,"37":2,"39":2,"40":6,"41":1,"42":1,"45":2,"46":2,"47":1,"48":1,"49":3,"50":2,"51":1,"52":1,"53":1,"56":1,"57":1,"58":1,"59":3,"60":2,"62":1,"63":2,"64":2,"65":1,"66":2,"67":3,"71":1,"72":1,"73":1,"74":5,"75":3,"76":2,"77":2,"78":2,"79":1,"80":2,"81":2,"82":2,"83":2,"84":1,"85":2,"86":4,"87":3,"89":48,"90":19,"92":2,"93":3,"97":2,"98":1,"103":1,"105":3,"107":2,"111":1}}],["though",{"2":{"86":1}}],["those",{"2":{"10":1,"12":1,"13":1,"15":1,"45":1,"75":1,"87":1}}],["through",{"2":{"89":5,"90":5,"95":1}}],["thrown",{"2":{"84":1}}],["three",{"2":{"36":1,"75":1,"100":1}}],["threaded",{"2":{"60":1}}],["threads",{"2":{"60":2,"89":2}}],["thread",{"2":{"27":1,"60":3}}],["than",{"2":{"10":1,"36":1,"41":1,"42":1}}],["that",{"2":{"0":1,"9":2,"10":1,"14":1,"17":1,"20":5,"24":1,"25":1,"26":2,"27":1,"33":1,"35":1,"38":1,"40":2,"42":1,"46":1,"47":1,"49":1,"52":1,"55":1,"60":2,"62":1,"65":2,"72":1,"74":1,"75":2,"77":1,"78":1,"86":2,"89":13,"90":13,"103":1,"105":1}}],["things",{"2":{"31":1}}],["think",{"2":{"1":1}}],["thinking",{"2":{"1":1}}],["this",{"2":{"0":1,"1":1,"4":1,"7":1,"10":1,"14":1,"17":2,"20":4,"21":1,"23":2,"26":3,"27":1,"28":1,"31":1,"34":1,"39":1,"40":2,"41":2,"42":2,"45":1,"46":1,"49":1,"51":1,"53":2,"57":1,"58":1,"59":1,"60":1,"62":1,"63":2,"66":1,"71":1,"73":1,"76":1,"81":1,"87":2,"88":2,"89":7,"90":10,"92":1,"93":2,"104":1,"105":1}}],["they",{"2":{"46":4,"63":1}}],["their",{"0":{"39":1,"40":1},"2":{"38":1,"40":1,"47":1,"74":1,"89":3,"90":2}}],["then",{"2":{"25":2,"26":2,"33":1,"41":1,"46":1,"78":1,"86":1,"87":1,"93":2,"95":1}}],["thereby",{"2":{"89":1}}],["therefore",{"2":{"42":1,"97":1}}],["there",{"2":{"13":1,"18":2,"25":1,"34":1,"46":2,"63":1,"64":1,"89":1}}],["theme",{"2":{"56":2}}],["them",{"2":{"7":1,"14":1,"36":1,"62":1,"78":1,"87":1,"89":1}}],["these",{"2":{"0":1,"6":1,"34":1,"36":1,"47":1,"72":1,"74":1}}],["the",{"0":{"32":1,"34":1,"42":1,"50":1,"101":1,"104":1},"1":{"33":1},"2":{"0":5,"1":4,"2":3,"4":1,"5":4,"6":4,"8":6,"9":3,"10":2,"13":1,"14":1,"15":1,"17":3,"18":2,"19":1,"20":12,"21":3,"22":5,"23":2,"24":3,"25":10,"26":14,"27":7,"29":3,"31":1,"32":3,"33":5,"34":3,"35":2,"36":2,"37":9,"39":3,"40":10,"41":3,"42":10,"45":1,"46":7,"48":2,"49":5,"50":2,"51":4,"52":1,"53":2,"54":2,"55":2,"56":9,"58":6,"60":2,"62":3,"63":6,"65":1,"66":5,"67":1,"68":5,"69":3,"70":5,"71":6,"72":1,"73":1,"74":5,"75":4,"76":4,"78":4,"83":1,"84":3,"85":1,"86":10,"87":2,"89":122,"90":83,"91":1,"92":1,"93":6,"95":2,"96":6,"97":8,"98":5,"99":1,"100":1,"101":4,"103":6,"104":1,"105":5,"107":1}}],["switched",{"2":{"97":1}}],["syntax",{"2":{"97":1,"103":1}}],["system",{"2":{"93":1}}],["symbols",{"2":{"58":1,"89":1}}],["symbol",{"2":{"14":1,"16":1,"17":1,"22":1,"24":1,"29":2,"46":5,"51":4,"52":2,"53":2,"54":5,"55":4,"56":6,"89":3,"90":1}}],["src",{"2":{"92":1}}],["sres",{"2":{"60":2,"67":2,"79":2,"85":2}}],["skeleton=a",{"2":{"86":1}}],["skeleton=true",{"2":{"86":2}}],["skeleton=false",{"2":{"84":1,"89":1}}],["skeleton",{"0":{"86":1},"2":{"86":8,"87":4}}],["skipped",{"2":{"89":1}}],["skip",{"2":{"58":4,"89":5}}],["skipmissing",{"2":{"27":1,"41":1}}],["ssp585",{"2":{"59":1,"107":2}}],["snow3",{"2":{"42":1}}],["snippet",{"2":{"6":1}}],["small",{"2":{"31":1,"46":1}}],["slightly",{"2":{"103":1}}],["slicing",{"2":{"20":1}}],["slices",{"2":{"89":3}}],["slice",{"2":{"20":1,"107":4,"108":1}}],["slow",{"2":{"40":1,"89":1}}],["slurmmanager",{"2":{"27":1}}],["shinclude",{"2":{"93":1}}],["shdocs>",{"2":{"93":1}}],["shnpm",{"2":{"93":2}}],["shouldn",{"2":{"63":1}}],["should",{"2":{"37":1,"46":1,"50":1,"62":1,"63":1,"78":1,"89":3,"90":1,"92":1,"93":1,"98":1}}],["showprog",{"2":{"89":1}}],["shown",{"2":{"63":1,"89":1}}],["shows",{"2":{"56":1}}],["showing",{"2":{"46":1}}],["show",{"2":{"27":1,"87":1,"111":1}}],["shading=false",{"2":{"109":1,"110":1,"111":1}}],["shall",{"2":{"89":5,"90":1}}],["shares",{"2":{"40":1}}],["share",{"0":{"39":1,"40":1},"2":{"38":1,"40":1,"75":1,"89":1}}],["shared",{"2":{"4":1,"5":1,"6":1,"24":1,"30":1,"35":1,"39":2,"40":3,"44":1,"45":1,"46":2,"59":1,"60":1,"61":1,"65":3,"66":1,"67":1,"79":1,"85":1,"86":1,"107":1}}],["shape",{"2":{"6":1}}],["scene",{"2":{"111":3}}],["scenariomip",{"2":{"59":1,"107":2}}],["scenarios",{"2":{"21":1,"107":1}}],["scripts",{"2":{"93":1}}],["scope",{"2":{"89":1,"90":1}}],["scalar",{"2":{"59":1}}],["scattered",{"2":{"7":1}}],["s",{"2":{"14":1,"20":3,"22":1,"23":1,"25":2,"33":1,"35":1,"37":1,"39":1,"40":2,"56":7,"58":1,"62":1,"67":1,"77":1,"86":1,"89":2,"90":1,"99":1,"101":1}}],["sure",{"2":{"111":1}}],["surface",{"2":{"50":2,"56":2,"59":2,"60":2,"63":6,"68":5,"69":6,"70":6,"71":10,"109":1,"110":1}}],["such",{"2":{"63":1,"71":1,"89":1,"97":1}}],["subcubes",{"2":{"89":1}}],["subtype",{"2":{"74":1,"78":1,"90":1,"97":1}}],["subtables",{"2":{"42":1}}],["subsetextensions",{"2":{"90":1}}],["subsetcube",{"2":{"89":1}}],["subseting",{"2":{"72":1}}],["subsetting",{"0":{"37":1,"38":1,"39":1,"40":1},"1":{"39":1,"40":1},"2":{"59":1,"60":1,"90":1,"101":1}}],["subset",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1},"2":{"37":5,"40":4,"67":1,"70":1,"89":1,"90":1,"107":1}}],["subsets",{"2":{"19":1,"77":1}}],["subsequent",{"2":{"21":1}}],["summarysize",{"2":{"47":2}}],["sum",{"2":{"22":1,"23":1,"25":1,"26":2,"41":1,"51":4,"54":2,"55":4,"56":2}}],["supposed",{"2":{"89":1}}],["support",{"2":{"13":1,"46":1}}],["supertype",{"2":{"12":1,"13":1}}],["suggestions",{"2":{"6":1}}],["style",{"0":{"105":1}}],["st",{"2":{"97":1}}],["stdzero",{"2":{"89":1}}],["stock3",{"2":{"46":4}}],["stock2",{"2":{"46":4}}],["stock1",{"2":{"46":4}}],["stocks",{"2":{"46":7}}],["storing",{"2":{"75":1}}],["storage",{"2":{"15":1,"59":1}}],["stored",{"2":{"74":3,"90":2}}],["stores",{"2":{"74":1,"89":1}}],["store",{"2":{"0":1,"59":4,"74":1,"75":1,"107":2}}],["struct",{"2":{"89":1,"90":4}}],["structures",{"2":{"73":1}}],["structure",{"2":{"33":2,"46":1,"76":1}}],["strings",{"0":{"47":1}}],["string",{"2":{"8":1,"9":2,"11":1,"13":3,"14":1,"16":1,"17":1,"18":2,"20":5,"21":3,"22":4,"23":3,"24":1,"25":4,"26":6,"29":3,"32":1,"33":3,"34":1,"35":2,"37":5,"41":3,"42":3,"47":5,"50":2,"51":1,"52":1,"54":2,"55":1,"56":1,"59":2,"60":2,"61":1,"63":3,"64":1,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"84":1,"85":1,"86":1,"89":6,"90":4,"96":4,"101":1,"107":1}}],["stable",{"2":{"97":1}}],["stat",{"2":{"83":2}}],["status",{"2":{"63":2}}],["statistics",{"2":{"18":1,"27":1,"42":3,"48":1,"100":1}}],["standard",{"2":{"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["standards",{"2":{"59":1,"60":1,"67":1,"79":1,"85":1,"107":1}}],["stack",{"2":{"47":1}}],["started",{"0":{"94":1},"1":{"95":1,"96":1,"97":1}}],["start=12",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["start=december",{"2":{"51":3,"54":1}}],["start",{"2":{"14":1,"37":1,"81":1,"87":1}}],["still",{"2":{"8":1,"26":1,"75":1,"103":1}}],["step=3",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["steps",{"2":{"14":1,"18":1,"56":1,"89":1,"93":1}}],["step",{"2":{"7":1,"18":1,"24":1,"41":2,"89":1,"90":2,"107":1}}],["sphere",{"0":{"111":1},"2":{"111":3}}],["spheroid",{"2":{"61":1}}],["split",{"2":{"89":1}}],["splitted",{"2":{"2":1}}],["special",{"2":{"69":1,"89":1,"90":1}}],["specifiers",{"2":{"90":1}}],["specifier",{"2":{"89":1}}],["specifies",{"2":{"89":3}}],["specified",{"2":{"66":1,"89":8,"90":1}}],["specific",{"2":{"37":1,"78":1,"89":2}}],["specifying",{"2":{"65":1,"89":2,"90":1}}],["specify",{"0":{"24":1},"2":{"21":1,"29":1,"89":1}}],["specs",{"2":{"59":1,"107":1}}],["spectral",{"2":{"56":1}}],["sparse",{"2":{"74":1}}],["spatio",{"2":{"41":1}}],["spatial",{"2":{"1":1,"18":1,"26":5,"27":1,"48":1,"74":1}}],["span",{"2":{"37":1,"100":1}}],["space",{"2":{"1":1,"20":1}}],["safe",{"2":{"60":2}}],["sampled",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"11":2,"13":4,"14":3,"16":3,"17":3,"18":3,"20":9,"21":3,"22":3,"23":2,"24":3,"25":9,"26":8,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":10,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"59":6,"60":6,"61":2,"63":9,"64":3,"65":10,"66":4,"67":3,"68":6,"69":4,"70":9,"71":15,"72":3,"79":3,"85":6,"86":6,"96":5,"101":1,"107":3}}],["same",{"2":{"0":1,"2":1,"5":1,"6":1,"9":1,"12":1,"13":1,"20":1,"24":1,"25":1,"26":2,"33":2,"34":2,"35":1,"40":1,"45":1,"46":2,"62":1,"68":1,"69":1,"70":1,"74":1,"75":3,"76":2,"89":1,"90":1,"93":1}}],["saves",{"2":{"84":1,"89":1}}],["save",{"0":{"86":1},"2":{"13":1,"16":1,"45":1,"47":1,"80":2,"81":1,"82":2,"83":1,"86":1,"89":2}}],["savecube",{"2":{"2":1,"64":4,"80":1,"82":1,"86":1,"89":2}}],["savedataset",{"2":{"4":1,"5":1,"6":1,"81":1,"83":1,"84":1,"85":1,"86":2,"89":1,"90":1}}],["saved",{"2":{"2":1,"15":1,"24":1,"83":1,"84":1}}],["saving",{"2":{"1":1,"4":1,"5":1,"6":1,"20":1}}],["serve",{"2":{"90":1}}],["series",{"0":{"49":1},"2":{"27":1}}],["sequence",{"2":{"74":1}}],["sebastien",{"2":{"60":2,"67":2,"79":2,"85":2}}],["seaborn",{"2":{"108":1,"109":1,"110":1,"111":1}}],["sea",{"2":{"60":3,"63":6,"67":1,"68":5,"69":6,"70":6,"71":10,"79":1,"85":1}}],["searching",{"2":{"89":1}}],["search",{"2":{"58":1,"89":1}}],["season",{"2":{"51":1,"54":2,"55":1}}],["seasons",{"0":{"51":1,"53":1,"56":1},"1":{"52":1,"53":1},"2":{"51":9,"54":1,"56":5,"78":1}}],["seasonal",{"0":{"49":1,"100":1,"102":1},"1":{"101":1,"102":1},"2":{"49":1,"55":1,"56":1,"100":1,"101":4}}],["separate",{"2":{"89":1,"90":1}}],["separated",{"2":{"75":1}}],["separately",{"2":{"5":1,"26":1,"27":1}}],["sep",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["selected",{"2":{"90":1,"100":1}}],["select",{"0":{"67":1,"68":1,"69":1,"70":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1},"2":{"40":1,"67":1}}],["selectors",{"2":{"71":1}}],["selector",{"2":{"40":1,"70":1}}],["selection",{"2":{"40":2}}],["selecting",{"2":{"37":1,"39":1,"40":1}}],["seed",{"2":{"21":1,"25":2}}],["see",{"2":{"20":1,"22":1,"58":1,"71":1,"78":1,"89":1,"97":1}}],["second",{"2":{"8":3,"22":1,"23":1,"89":1}}],["section",{"2":{"7":1,"10":1,"14":1,"28":1,"31":1,"46":1,"57":1,"73":1,"88":1}}],["setting",{"2":{"84":1,"89":1,"90":1}}],["sets",{"2":{"6":1,"50":1}}],["set",{"0":{"4":1,"5":1,"6":1},"2":{"4":1,"5":1,"23":2,"26":1,"59":1,"84":1,"89":1,"90":2,"93":1}}],["setchunks",{"2":{"1":1,"2":2,"3":1,"4":1,"5":1,"6":1,"89":1,"90":1}}],["several",{"0":{"20":1},"2":{"0":1,"20":1,"35":1,"38":1,"78":1}}],["significant",{"2":{"81":1}}],["sin",{"2":{"100":1}}],["sink",{"2":{"90":1}}],["since",{"2":{"63":1,"98":1}}],["single",{"0":{"100":1},"1":{"101":1,"102":1},"2":{"0":1,"7":1,"8":1,"60":1,"76":1,"80":1,"82":1,"89":6,"90":1}}],["simulate",{"2":{"46":1}}],["simplicity",{"2":{"100":1}}],["simply",{"2":{"27":1,"47":1,"87":1,"93":1,"98":1}}],["simple",{"2":{"20":1,"31":1,"96":1}}],["situations",{"2":{"1":1,"64":1}}],["size=",{"2":{"109":1,"110":1,"111":1}}],["sizes",{"2":{"2":1,"89":2,"90":2}}],["size",{"2":{"0":1,"1":1,"4":1,"5":1,"8":1,"9":1,"11":1,"13":1,"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"23":1,"25":3,"26":2,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"50":2,"54":1,"56":1,"59":1,"60":1,"63":3,"64":1,"68":2,"69":3,"70":3,"71":5,"83":4,"86":1,"87":1,"89":3,"90":4,"96":3,"100":1,"101":2,"102":1,"108":1}}],["sosstsst",{"2":{"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["software",{"2":{"60":1,"67":1,"79":1}}],["sort",{"2":{"26":1}}],["so",{"2":{"2":1,"27":1,"36":1,"40":1,"89":1,"90":1}}],["source",{"2":{"0":2,"58":1,"60":1,"67":1,"79":1,"84":1,"85":1,"89":25,"90":24}}],["sometimes",{"2":{"78":1,"86":1,"105":1}}],["some",{"0":{"40":1},"2":{"0":1,"15":1,"38":1,"40":1,"41":1,"46":2,"56":1,"89":1,"100":1,"109":1}}],["a4",{"2":{"64":3,"65":1,"66":1}}],["advance",{"2":{"63":1}}],["addargs",{"2":{"89":3,"90":1}}],["adds",{"2":{"74":2,"77":1}}],["addprocs",{"2":{"27":2}}],["added",{"2":{"19":1,"85":1,"89":1,"90":1}}],["addition",{"2":{"10":1,"26":1,"74":1}}],["additional",{"2":{"4":3,"5":3,"9":1,"20":1,"25":1,"40":10,"45":4,"46":4,"59":2,"85":3,"89":4,"90":3,"107":2}}],["add",{"2":{"6":1,"14":1,"16":1,"41":1,"60":1,"92":2,"95":2,"98":3,"99":4,"109":1}}],["again",{"2":{"84":1,"87":1}}],["agreement",{"2":{"56":1}}],["aggregation",{"2":{"27":1}}],["aggregate",{"2":{"26":1}}],["authority",{"2":{"61":5}}],["auto",{"2":{"22":1,"24":1,"89":1}}],["aug",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["api",{"0":{"88":1,"89":1,"90":1},"1":{"89":1,"90":1}}],["apr",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["appropriate",{"2":{"92":1}}],["approximated",{"2":{"90":1}}],["approx",{"2":{"89":1,"90":1}}],["approach",{"2":{"9":1,"51":1}}],["append=true",{"2":{"85":2}}],["append=false",{"2":{"84":1,"89":1}}],["append",{"0":{"85":1}}],["apply",{"0":{"41":1},"2":{"14":2,"17":1,"19":1,"25":1,"27":1,"56":1,"101":1}}],["application",{"2":{"25":1}}],["applications",{"2":{"0":1}}],["applies",{"2":{"17":1}}],["applied",{"2":{"0":1,"3":1,"4":1,"26":1,"89":2,"90":1}}],["air",{"2":{"50":2,"56":2,"59":3}}],["a3",{"2":{"30":4,"64":3,"65":1,"66":1}}],["a2",{"2":{"29":1,"30":3,"60":2,"64":3,"65":2,"67":2,"79":2,"85":2,"96":1}}],["a1",{"2":{"29":1,"64":3,"65":2}}],["after",{"2":{"18":1,"20":1,"61":1,"89":3}}],["atol",{"2":{"70":1}}],["atmosphere",{"2":{"60":1,"67":1,"79":1,"85":1}}],["atmos",{"2":{"59":1,"107":1}}],["attributes",{"2":{"56":1,"89":1,"90":1}}],["at",{"2":{"13":1,"25":1,"26":4,"40":1,"46":3,"56":1,"58":1,"60":3,"63":3,"67":1,"68":2,"69":6,"70":7,"71":5,"75":1,"76":2,"79":1,"84":2,"85":1,"89":3,"90":2,"91":1,"92":2,"93":2,"96":1,"103":2}}],["able",{"2":{"45":1}}],["abstractstring",{"2":{"89":1}}],["abstractdict",{"2":{"89":1,"90":3}}],["abstractdimarray",{"2":{"12":1,"13":1,"74":1}}],["abs",{"2":{"25":1}}],["about",{"2":{"1":2,"36":1,"70":1,"96":1,"104":1}}],["above",{"2":{"0":1,"5":1,"20":1,"86":1,"95":1}}],["asaxisarray",{"2":{"89":1}}],["assemble",{"2":{"96":1}}],["assessment",{"2":{"60":2,"67":2,"79":2,"85":2}}],["associated",{"2":{"89":1}}],["assign",{"0":{"43":1},"1":{"44":1,"45":1}}],["aspect=dataaspect",{"2":{"56":1,"108":1}}],["asked",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["as",{"2":{"5":1,"8":1,"9":1,"12":1,"13":2,"14":1,"16":1,"20":6,"21":1,"22":1,"23":1,"25":1,"26":2,"27":2,"29":1,"33":2,"34":1,"35":1,"40":1,"42":1,"46":3,"48":1,"51":2,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":2,"66":2,"68":1,"71":1,"72":1,"74":1,"77":1,"78":1,"86":1,"87":1,"89":12,"90":3,"96":1,"97":1,"101":1,"105":1,"107":1}}],["axs",{"2":{"56":9}}],["ax",{"2":{"42":1,"100":3,"102":3,"108":1,"109":3,"110":3,"111":5}}],["axlist",{"2":{"14":2,"21":2,"23":1,"25":4,"26":2,"27":2,"29":2,"30":1,"35":3,"90":5,"96":3}}],["axessmall",{"2":{"90":2}}],["axes",{"0":{"32":1,"34":1},"1":{"33":1},"2":{"4":4,"5":4,"6":1,"24":1,"29":1,"30":1,"32":2,"33":1,"34":2,"37":2,"39":5,"40":13,"44":1,"45":5,"46":8,"59":3,"60":1,"61":1,"65":3,"66":1,"67":2,"74":2,"79":1,"85":4,"86":1,"89":15,"90":11,"96":1,"101":2,"107":3}}],["axislegend",{"2":{"102":1}}],["axis=false",{"2":{"111":1}}],["axis=",{"2":{"100":1}}],["axisdescriptor",{"2":{"90":1}}],["axisdesc",{"2":{"89":3}}],["axis",{"0":{"4":1},"2":{"4":1,"9":2,"20":3,"34":1,"37":1,"39":1,"40":7,"46":1,"56":1,"61":2,"72":1,"77":1,"86":1,"89":16,"90":14,"96":1,"102":1,"107":1,"108":1}}],["always",{"2":{"89":2,"90":1,"91":1,"97":1}}],["already",{"2":{"63":1,"65":1,"84":1,"89":1,"90":1}}],["al",{"2":{"60":1,"67":1,"76":1,"79":1,"85":1}}],["alternatives",{"2":{"89":1}}],["alternatively",{"2":{"0":1,"2":1,"89":2,"95":1}}],["altered",{"2":{"59":1,"60":1,"63":3,"68":2,"69":3,"70":3,"71":5}}],["although",{"2":{"46":1,"47":1,"71":1}}],["algebraofgraphics",{"2":{"99":1}}],["algebra",{"0":{"41":1},"2":{"41":1}}],["along",{"0":{"8":1,"65":1,"66":1},"2":{"8":1,"20":1,"64":2,"65":2,"66":2,"89":6,"90":2,"103":1}}],["allaxes",{"2":{"90":1}}],["allinaxes",{"2":{"90":1}}],["allmissing",{"2":{"89":1}}],["allocate",{"2":{"86":1}}],["allocation",{"2":{"26":1}}],["allow",{"2":{"90":1}}],["allowed",{"2":{"47":1}}],["allows",{"2":{"27":1}}],["allowing",{"2":{"12":1,"13":1,"75":1}}],["all",{"0":{"6":1,"39":1,"40":1},"2":{"4":1,"6":2,"14":1,"16":1,"17":1,"18":2,"26":1,"27":4,"38":1,"40":2,"46":3,"56":2,"58":2,"61":1,"71":1,"74":1,"76":2,"84":3,"86":1,"88":1,"89":7,"90":7,"93":1}}],["also",{"2":{"2":1,"3":1,"18":1,"25":1,"27":1,"29":1,"32":1,"40":1,"42":1,"65":1,"74":2,"75":1,"81":1,"86":2,"89":1,"95":1}}],["annual",{"2":{"89":1}}],["analog",{"2":{"75":1}}],["analyzing",{"2":{"1":1}}],["anchor",{"2":{"25":1}}],["another",{"2":{"20":1,"40":1,"66":1}}],["anynymous",{"2":{"89":1}}],["anyocean",{"2":{"89":1}}],["anymissing",{"2":{"89":1}}],["anymore",{"2":{"25":1}}],["any",{"2":{"8":1,"9":1,"11":1,"13":3,"14":1,"15":1,"18":2,"20":5,"22":3,"24":1,"25":2,"26":4,"29":1,"32":1,"33":3,"34":1,"35":1,"37":6,"41":3,"42":3,"47":4,"50":2,"51":3,"52":2,"54":4,"55":3,"56":3,"58":1,"59":2,"60":3,"61":1,"63":3,"64":1,"67":1,"68":2,"69":3,"70":3,"71":5,"79":1,"85":1,"86":1,"89":4,"90":9,"96":1,"101":1,"107":1}}],["an",{"0":{"8":1},"2":{"9":1,"14":4,"16":1,"17":1,"19":1,"27":2,"33":1,"34":1,"39":1,"40":1,"42":1,"47":1,"62":1,"66":1,"67":3,"70":1,"74":1,"75":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"85":1,"89":19,"90":8}}],["and",{"0":{"21":1,"28":1,"34":1,"48":1,"57":1,"67":1,"71":1,"79":1},"1":{"22":1,"23":1,"24":1,"29":1,"30":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"72":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"2":{"0":1,"2":1,"5":1,"6":1,"7":1,"8":1,"10":1,"16":1,"20":4,"21":2,"22":2,"24":2,"25":4,"26":2,"28":1,"29":1,"32":1,"35":1,"37":1,"40":6,"41":1,"42":6,"46":5,"48":1,"49":1,"50":1,"51":2,"56":1,"57":2,"58":1,"59":1,"60":1,"63":1,"64":1,"65":1,"67":1,"71":1,"74":5,"75":3,"76":2,"79":1,"81":2,"83":1,"84":1,"85":1,"86":3,"87":1,"89":19,"90":6,"91":1,"93":4,"95":1,"96":2,"100":1,"107":1,"109":1}}],["available",{"2":{"58":1,"71":2,"86":1,"88":1,"89":2,"95":1}}],["avariable",{"2":{"0":1}}],["avoid",{"2":{"51":1,"60":1}}],["avoids",{"2":{"26":1}}],["avoided",{"2":{"0":1}}],["averaging",{"2":{"18":1}}],["averages",{"0":{"49":1},"2":{"48":1}}],["average",{"2":{"18":1,"49":2}}],["arg",{"2":{"89":1}}],["argument",{"2":{"27":1,"86":1,"89":4,"90":2}}],["arguments",{"2":{"25":1,"56":1,"58":1,"89":12,"90":3}}],["artype",{"2":{"89":2}}],["archgdaldatasets",{"2":{"61":1}}],["archgdal",{"2":{"61":2,"99":1}}],["arbitrary",{"2":{"20":1}}],["arithmetics",{"0":{"16":1},"2":{"14":1}}],["arr2",{"2":{"13":1}}],["arr",{"2":{"13":2,"26":7}}],["arrayinfo",{"2":{"90":1}}],["arrays",{"2":{"6":1,"7":1,"8":2,"9":1,"15":1,"28":1,"30":2,"59":2,"60":2,"73":1,"74":4,"75":3,"76":3,"89":2,"90":1}}],["array",{"0":{"11":1,"26":1},"2":{"0":1,"1":1,"8":2,"9":2,"11":2,"14":3,"16":2,"17":2,"19":1,"22":1,"24":1,"26":8,"34":1,"51":1,"56":1,"67":1,"74":4,"75":1,"76":1,"77":2,"86":5,"87":5,"89":10,"90":4,"96":3}}],["areas",{"2":{"89":1}}],["area",{"2":{"59":2,"89":1}}],["areacella",{"2":{"59":2,"107":1}}],["are",{"2":{"0":1,"10":3,"15":1,"22":1,"23":1,"34":1,"36":1,"40":1,"46":3,"51":2,"56":2,"58":2,"63":2,"64":1,"66":1,"67":1,"71":1,"72":1,"74":3,"75":2,"76":3,"78":1,"86":1,"89":13,"90":6,"91":1,"93":1,"103":2,"105":1}}],["according",{"2":{"89":1}}],["accessible",{"2":{"51":1}}],["access",{"2":{"1":2,"17":1,"29":1,"74":1,"77":1}}],["accessed",{"2":{"0":2,"59":1,"60":2}}],["activate",{"2":{"42":1,"93":2,"100":1,"108":1,"111":1}}],["actually",{"2":{"90":1}}],["actual",{"2":{"17":1,"60":1,"86":1,"90":1,"96":1}}],["achieves",{"2":{"33":1}}],["achieved",{"2":{"0":1}}],["across",{"2":{"0":1,"7":1,"20":1,"74":3}}],["a",{"0":{"9":1,"15":1,"26":1,"29":1,"30":1,"32":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"46":2,"47":1,"65":1,"66":1,"68":1,"72":1,"84":1,"85":1,"100":1,"106":1},"1":{"33":1,"37":1,"38":1,"39":2,"40":2,"44":1,"45":1,"101":1,"102":1},"2":{"0":4,"2":7,"3":1,"4":1,"7":1,"8":1,"9":2,"11":2,"12":5,"13":8,"14":3,"15":1,"16":4,"17":2,"18":2,"19":1,"20":5,"21":2,"22":1,"23":2,"24":1,"26":75,"27":11,"29":1,"31":1,"32":2,"33":2,"34":1,"36":4,"37":3,"38":1,"40":2,"42":3,"44":2,"45":2,"46":4,"49":1,"54":1,"56":2,"58":1,"59":6,"60":4,"61":1,"64":4,"65":3,"66":1,"70":2,"71":4,"72":1,"74":12,"75":4,"76":8,"77":1,"78":4,"80":3,"81":3,"82":3,"83":1,"84":4,"86":5,"89":65,"90":31,"92":2,"93":2,"96":4,"97":1,"104":1,"105":1}}],["iall",{"2":{"90":1}}],["iwindow",{"2":{"90":1}}],["icolon",{"2":{"90":1}}],["icefire",{"2":{"108":1,"109":1,"110":1,"111":1}}],["ice",{"2":{"60":1,"67":1,"79":1,"85":1}}],["ipcc",{"2":{"60":3,"67":3,"79":3,"85":3}}],["ipsl",{"2":{"60":6,"67":6,"79":6,"85":6}}],["idx",{"2":{"101":3}}],["identical",{"2":{"89":1}}],["id",{"2":{"59":2,"60":2,"67":2,"79":2,"85":2,"107":2}}],["irregular",{"2":{"24":1,"40":6,"42":2,"46":4,"50":2,"51":1,"54":3,"55":1,"56":1,"59":4,"60":2,"63":3,"64":1,"65":3,"66":2,"67":1,"68":2,"69":2,"70":6,"71":5,"79":1,"85":1,"90":1,"107":2}}],["illustrate",{"2":{"21":1}}],["immutable",{"2":{"15":1}}],["improving",{"2":{"97":1}}],["improvement",{"2":{"81":1}}],["improve",{"2":{"6":1}}],["implementing",{"2":{"89":1}}],["importance",{"2":{"90":1}}],["important",{"2":{"1":1}}],["import",{"2":{"65":1,"66":1}}],["impossible",{"2":{"15":1}}],["i",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"46":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"8":1,"12":1,"13":1,"26":3,"37":1,"56":2,"58":1,"60":2,"64":4,"65":2,"84":1,"89":8,"90":4,"93":2,"96":1,"101":3}}],["ispar",{"2":{"89":1,"90":1}}],["ismissing",{"2":{"86":1}}],["issue",{"2":{"81":1}}],["issues",{"2":{"50":1}}],["isequal",{"2":{"26":1}}],["is",{"2":{"1":2,"2":1,"6":1,"7":1,"9":1,"10":1,"13":1,"17":1,"18":2,"19":1,"20":4,"25":2,"26":2,"27":3,"31":1,"33":2,"35":1,"36":1,"40":2,"41":1,"42":4,"46":2,"47":2,"49":2,"50":2,"51":2,"55":1,"58":1,"60":2,"63":2,"66":1,"68":1,"71":2,"72":1,"74":4,"75":1,"76":2,"77":1,"78":1,"86":4,"87":1,"89":12,"90":10,"92":1,"95":1,"97":1,"98":1,"103":1,"105":1}}],["if",{"2":{"0":1,"10":1,"22":1,"23":1,"40":3,"78":2,"81":1,"84":1,"86":2,"89":12,"90":6,"93":1,"98":1,"103":1}}],["inline",{"2":{"111":2}}],["incubes",{"2":{"90":1}}],["incs",{"2":{"90":1}}],["include",{"2":{"89":2,"90":1}}],["included",{"2":{"71":1}}],["inarbc",{"2":{"90":1}}],["inar",{"2":{"90":2}}],["inplace",{"2":{"89":3,"90":1}}],["inputcube",{"2":{"90":2}}],["inputs",{"2":{"22":1}}],["input",{"2":{"20":1,"21":1,"22":1,"24":1,"27":2,"42":1,"89":13,"90":8}}],["innerchunks",{"2":{"90":1}}],["inner",{"2":{"89":9,"90":3}}],["insize",{"2":{"90":1}}],["inside",{"2":{"89":3}}],["installed",{"2":{"97":1}}],["installation",{"0":{"95":1}}],["install",{"0":{"98":1},"2":{"93":1,"95":1,"99":1}}],["instantaneous",{"2":{"50":2}}],["instead",{"2":{"8":1,"9":1,"17":1,"32":1,"37":1,"71":1,"74":1}}],["initialization",{"2":{"59":1,"107":1}}],["initially",{"2":{"26":1}}],["inds",{"2":{"90":1}}],["indeed",{"2":{"87":1}}],["indexing",{"2":{"69":2,"70":2,"87":1,"97":1}}],["index",{"2":{"59":2,"90":2,"107":2}}],["independently",{"2":{"46":1}}],["indices",{"2":{"90":1,"101":1}}],["indicate",{"2":{"89":1}}],["indicating",{"2":{"9":1,"26":1,"89":1}}],["indims=indims",{"2":{"26":1,"27":1}}],["indims",{"0":{"22":1,"23":1,"25":1},"2":{"20":8,"22":4,"24":7,"25":3,"89":7}}],["individually",{"2":{"17":2}}],["individual",{"2":{"0":1,"59":1,"60":1}}],["information",{"2":{"58":1,"63":1,"84":1,"90":2}}],["info",{"2":{"13":1,"20":2,"32":1,"48":1,"60":11,"78":1,"83":4,"86":1,"97":1}}],["introducing",{"2":{"76":1}}],["int",{"2":{"33":1,"47":1,"101":3}}],["interoperability",{"0":{"99":1}}],["internal",{"0":{"90":1},"2":{"90":9}}],["internally",{"2":{"75":1}}],["interface",{"2":{"89":2,"105":1}}],["interested",{"2":{"103":1}}],["interest",{"2":{"63":1}}],["interval",{"2":{"60":1,"63":3,"68":2,"69":3,"70":4,"71":6}}],["intervalsets",{"2":{"71":1}}],["intervals",{"0":{"71":1},"2":{"37":1}}],["interactive",{"2":{"0":1}}],["integer",{"2":{"29":1,"69":1,"70":1,"74":1}}],["int64",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"11":2,"13":2,"20":8,"21":1,"22":1,"23":1,"25":7,"29":3,"32":9,"33":7,"34":4,"37":15,"39":4,"40":7,"42":3,"44":1,"45":5,"47":5,"50":4,"51":6,"52":6,"54":5,"56":18,"64":2,"65":7,"66":2,"85":3,"86":6,"90":1,"96":2}}],["into",{"0":{"62":1,"106":1},"1":{"63":1},"2":{"0":1,"1":1,"2":1,"7":1,"8":1,"10":2,"13":1,"20":1,"26":1,"40":4,"47":1,"50":1,"57":1,"62":1,"76":2,"84":1,"87":1,"89":6,"90":3,"93":1,"111":1}}],["in",{"0":{"24":1,"43":1},"1":{"44":1,"45":1},"2":{"0":5,"1":1,"2":1,"4":2,"5":1,"8":1,"9":1,"10":2,"11":1,"12":1,"13":2,"14":1,"15":1,"16":1,"17":2,"18":4,"20":5,"21":1,"22":2,"23":2,"25":5,"26":8,"27":3,"29":2,"32":1,"33":3,"34":2,"37":5,"38":1,"40":1,"41":3,"42":5,"46":4,"47":2,"49":2,"50":3,"51":2,"53":3,"54":1,"56":4,"59":2,"60":4,"62":1,"63":9,"64":2,"65":1,"66":1,"68":2,"69":3,"70":4,"71":7,"72":1,"73":1,"74":5,"75":1,"76":2,"78":3,"86":2,"87":1,"89":15,"90":9,"93":2,"95":1,"96":4,"98":2,"101":2,"103":3,"105":4,"107":1}}],["iter",{"2":{"89":1}}],["iterate",{"2":{"105":1}}],["iteration",{"0":{"105":1}}],["iterator",{"2":{"42":1}}],["iterators",{"2":{"26":1}}],["iterable",{"2":{"42":2,"89":2}}],["itself",{"2":{"89":1,"90":1}}],["its",{"2":{"0":1,"58":1}}],["it",{"2":{"0":2,"1":3,"16":1,"20":1,"22":1,"24":1,"27":2,"32":1,"34":1,"35":1,"40":2,"42":2,"46":2,"47":1,"52":1,"54":1,"56":1,"60":1,"65":1,"67":1,"74":2,"75":1,"77":1,"78":1,"83":1,"84":1,"86":2,"87":1,"89":10,"90":5,"93":1,"95":1}}],["lscene",{"2":{"111":1}}],["lmdz",{"2":{"60":1,"67":1,"79":1,"85":1}}],["link",{"2":{"92":1}}],["linewidth=0",{"2":{"109":1,"110":1}}],["linewidth=2",{"2":{"102":2}}],["linewidth=1",{"2":{"100":1,"102":1}}],["linestyle=",{"2":{"102":2}}],["lines",{"2":{"100":1,"102":3}}],["line",{"2":{"42":1}}],["lim",{"2":{"60":1,"67":1,"79":1,"85":1}}],["libraries",{"2":{"37":1,"74":1}}],["libray",{"2":{"36":1}}],["little",{"2":{"27":1}}],["list",{"2":{"26":1,"46":5,"64":2,"89":7,"90":6}}],["like",{"2":{"0":1,"42":1,"46":1,"64":1,"89":2,"90":1,"92":1}}],["learn",{"2":{"105":1}}],["learning",{"2":{"74":1,"103":1}}],["leap",{"2":{"100":1}}],["least",{"2":{"40":1,"46":1,"89":1}}],["length",{"2":{"51":2,"52":1,"54":3,"65":1,"89":1,"90":3}}],["length=20",{"2":{"35":1,"96":1}}],["length=365",{"2":{"100":1}}],["length=3",{"2":{"21":1}}],["length=4",{"2":{"21":1}}],["length=15",{"2":{"14":1,"26":1,"27":1,"29":1,"35":1,"96":1}}],["length=10",{"2":{"14":1,"26":1,"27":1,"29":1,"35":1,"96":1}}],["level",{"2":{"25":1,"46":1,"81":1,"83":1,"92":1,"93":1}}],["left",{"2":{"18":2}}],["let",{"2":{"14":1,"20":2,"22":1,"23":1,"33":1,"35":1,"37":1,"39":1,"40":1,"56":1,"58":1,"62":1,"67":1,"101":1}}],["loopinds",{"2":{"90":2}}],["looping",{"2":{"89":1,"90":1}}],["loopcachesize",{"2":{"90":1}}],["loopchunksize",{"2":{"89":1}}],["loopaxes",{"2":{"90":1}}],["loopvars",{"2":{"89":1,"90":1}}],["loops",{"2":{"89":1}}],["loop",{"2":{"89":1,"90":2}}],["looped",{"2":{"89":3,"90":3}}],["look",{"2":{"84":1,"89":1,"90":1,"92":1,"93":1}}],["looking",{"2":{"78":1}}],["lookups",{"2":{"51":15,"52":10,"54":11,"55":5,"56":38,"66":1,"72":3}}],["lookup",{"2":{"51":1,"53":1,"107":3}}],["looks",{"2":{"42":1,"46":1}}],["located",{"2":{"103":1}}],["locate",{"2":{"93":1}}],["location",{"2":{"90":3}}],["locations",{"2":{"75":1,"76":1}}],["localhost",{"2":{"93":1}}],["locally",{"0":{"93":1},"2":{"93":1}}],["local",{"2":{"27":1,"59":1}}],["lock",{"2":{"60":3}}],["locks",{"2":{"60":1}}],["lowclip",{"2":{"56":4}}],["low",{"2":{"46":4}}],["lo",{"2":{"20":4}}],["loadorgenerate",{"2":{"90":1}}],["loading",{"2":{"61":1,"63":1,"87":1}}],["load",{"0":{"62":1},"1":{"63":1},"2":{"20":1,"37":1,"40":2,"50":1,"62":1,"63":1,"74":1}}],["loaded",{"2":{"8":1,"9":1,"11":1,"13":1,"14":1,"16":1,"17":1,"18":2,"20":5,"21":1,"22":1,"23":1,"25":3,"26":2,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"40":2,"41":3,"42":3,"47":2,"50":2,"54":1,"59":1,"60":1,"63":8,"64":1,"68":2,"69":3,"70":3,"71":5,"86":1,"96":2,"101":1}}],["long",{"2":{"50":2,"56":1,"59":1,"60":1,"63":4,"68":2,"69":3,"70":3,"71":5}}],["longitudes=longitudes",{"2":{"40":1}}],["longitudes",{"2":{"40":12}}],["longitude",{"2":{"25":1,"37":1,"61":1,"78":6,"96":2}}],["lonlat",{"2":{"39":1}}],["lon=1",{"2":{"37":1,"39":1}}],["lon",{"0":{"78":1},"2":{"12":2,"14":2,"16":1,"17":1,"18":2,"20":10,"21":2,"22":1,"23":1,"24":1,"25":5,"26":12,"27":1,"29":3,"30":1,"35":2,"37":7,"39":3,"41":4,"42":3,"59":2,"60":2,"63":3,"64":5,"65":3,"66":1,"67":1,"68":2,"69":3,"70":6,"71":10,"72":2,"78":8,"79":1,"85":1,"96":2,"107":2,"109":3}}],["lost",{"2":{"10":1}}],["lazy",{"2":{"89":1}}],["lazily",{"2":{"9":1,"17":1,"20":2,"35":1,"50":1,"59":1,"60":1,"63":1,"64":1,"68":2,"69":3,"70":3,"71":5}}],["layername",{"2":{"89":2}}],["layername=",{"2":{"86":2,"90":1}}],["layer",{"2":{"65":3,"66":1,"86":1,"89":1,"90":1}}],["layout",{"2":{"56":2}}],["labelled",{"2":{"89":1}}],["labels",{"2":{"56":1,"72":1,"76":1,"77":1}}],["label=false",{"2":{"56":1}}],["label=",{"2":{"56":1,"102":3}}],["label=cb",{"2":{"56":1}}],["label",{"2":{"56":3,"59":1,"78":1,"107":1}}],["last",{"2":{"20":1,"27":1}}],["la",{"2":{"20":4}}],["latest",{"2":{"97":1,"98":1}}],["later",{"2":{"22":1}}],["lat=5",{"2":{"37":1,"39":1}}],["latitudes=latitudes",{"2":{"40":1}}],["latitudes",{"2":{"40":11}}],["latitude",{"2":{"25":1,"37":1,"61":1,"78":6,"96":2}}],["lat",{"0":{"78":1},"2":{"12":2,"14":2,"16":1,"17":1,"18":2,"20":7,"21":2,"22":1,"23":1,"24":1,"25":5,"26":12,"27":1,"29":3,"30":1,"35":2,"37":7,"39":3,"41":4,"42":3,"59":2,"60":2,"63":3,"64":5,"65":3,"66":1,"67":1,"68":2,"69":3,"70":5,"71":5,"72":2,"78":8,"79":1,"85":1,"89":1,"96":2,"107":3,"109":1,"110":1}}],["larger",{"2":{"10":1}}],["large",{"2":{"0":2,"10":1,"50":1,"74":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR481/assets/chunks/@localSearchIndexroot.CnnmGcC2.js b/previews/PR481/assets/chunks/@localSearchIndexroot.CnnmGcC2.js deleted file mode 100644 index 27db2899..00000000 --- a/previews/PR481/assets/chunks/@localSearchIndexroot.CnnmGcC2.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":108,"nextId":108,"documentIds":{"0":"/YAXArrays.jl/previews/PR481/UserGuide/cache.html#Caching-YAXArrays","1":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Chunk-YAXArrays","2":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Chunking-YAXArrays","3":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Chunking-Datasets","4":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Set-Chunks-by-Axis","5":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Set-chunking-by-Variable","6":"/YAXArrays.jl/previews/PR481/UserGuide/chunk.html#Set-chunking-for-all-variables","7":"/YAXArrays.jl/previews/PR481/UserGuide/combine.html#Combine-YAXArrays","8":"/YAXArrays.jl/previews/PR481/UserGuide/combine.html#cat-along-an-existing-dimension","9":"/YAXArrays.jl/previews/PR481/UserGuide/combine.html#concatenatecubes-to-a-new-dimension","10":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Compute-YAXArrays","11":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Modify-elements-of-a-YAXArray","12":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#arithmetics","13":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#map","14":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#mapslices","15":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#mapCube","16":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Operations-over-several-YAXArrays","17":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#OutDims-and-YAXArray-Properties","18":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#One-InDims-to-many-OutDims","19":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Many-InDims-to-many-OutDims","20":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Specify-path-in-OutDims","21":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Different-InDims-names","22":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Creating-a-vector-array","23":"/YAXArrays.jl/previews/PR481/UserGuide/compute.html#Distributed-Computation","24":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-YAXArrays","25":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-Base.Array","26":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-Raster","27":"/YAXArrays.jl/previews/PR481/UserGuide/convert.html#Convert-DimArray","28":"/YAXArrays.jl/previews/PR481/UserGuide/create.html#Create-YAXArrays-and-Datasets","29":"/YAXArrays.jl/previews/PR481/UserGuide/create.html#Create-a-YAXArray","30":"/YAXArrays.jl/previews/PR481/UserGuide/create.html#Create-a-Dataset","31":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Frequently-Asked-Questions-(FAQ)","32":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Extract-the-axes-names-from-a-Cube","33":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#rebuild","34":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Obtain-values-from-axes-and-data-from-the-cube","35":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-concatenate-cubes","36":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-subset-a-YAXArray-(-Cube-)-or-Dataset?","37":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-YAXArray","38":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-Dataset","39":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-Dataset-whose-variables-share-all-their-dimensions","40":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Subsetting-a-Dataset-whose-variables-share-some-but-not-all-of-their-dimensions","41":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-apply-map-algebra?","42":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-use-the-CubeTable-function?","43":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#How-do-I-assign-variable-names-to-YAXArrays-in-a-Dataset","44":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#One-variable-name","45":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Multiple-variable-names","46":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Ho-do-I-construct-a-Dataset-from-a-TimeArray","47":"/YAXArrays.jl/previews/PR481/UserGuide/faq.html#Create-a-YAXArray-with-unions-containing-Strings","48":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#Group-YAXArrays-and-Datasets","49":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#Seasonal-Averages-from-Time-Series-of-Monthly-Means","50":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#Download-the-data","51":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#GroupBy:-seasons","52":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#dropdims","53":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#seasons","54":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#GroupBy:-weight","55":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#weights","56":"/YAXArrays.jl/previews/PR481/UserGuide/group.html#weighted-seasons","57":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-YAXArrays-and-Datasets","58":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-Zarr","59":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-NetCDF","60":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Read-GDAL-(GeoTIFF,-GeoJSON)","61":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#Load-data-into-memory","62":"/YAXArrays.jl/previews/PR481/UserGuide/read.html#readcubedata","63":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-YAXArrays-and-Datasets","64":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-a-YAXArray","65":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-elements","66":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Select-ranges","67":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Closed-and-open-intervals","68":"/YAXArrays.jl/previews/PR481/UserGuide/select.html#Get-a-dimension","69":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#types","70":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#yaxarray","71":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#dataset","72":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#(Data)-Cube","73":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#dimensions","74":"/YAXArrays.jl/previews/PR481/UserGuide/types.html#Lon,-Lat,-time","75":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Write-YAXArrays-and-Datasets","76":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Write-Zarr","77":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#zarr-compression","78":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Write-NetCDF","79":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#netcdf-compression","80":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Overwrite-a-Dataset","81":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Append-to-a-Dataset","82":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Save-Skeleton","83":"/YAXArrays.jl/previews/PR481/UserGuide/write.html#Update-values-of-dataset","84":"/YAXArrays.jl/previews/PR481/api.html#API-Reference","85":"/YAXArrays.jl/previews/PR481/api.html#Public-API","86":"/YAXArrays.jl/previews/PR481/api.html#Internal-API","87":"/YAXArrays.jl/previews/PR481/development/contribute.html#Contribute-to-YAXArrays.jl","88":"/YAXArrays.jl/previews/PR481/development/contribute.html#Contribute-to-Documentation","89":"/YAXArrays.jl/previews/PR481/development/contribute.html#Build-docs-locally","90":"/YAXArrays.jl/previews/PR481/get_started.html#Getting-Started","91":"/YAXArrays.jl/previews/PR481/get_started.html#installation","92":"/YAXArrays.jl/previews/PR481/get_started.html#quickstart","93":"/YAXArrays.jl/previews/PR481/get_started.html#updates","94":"/YAXArrays.jl/previews/PR481/#How-to-Install-YAXArrays.jl?","95":"/YAXArrays.jl/previews/PR481/#Want-interoperability?","96":"/YAXArrays.jl/previews/PR481/tutorials/mean_seasonal_cycle.html#Mean-Seasonal-Cycle-for-a-single-pixel","97":"/YAXArrays.jl/previews/PR481/tutorials/mean_seasonal_cycle.html#Define-the-cube","98":"/YAXArrays.jl/previews/PR481/tutorials/mean_seasonal_cycle.html#Plot-results:-mean-seasonal-cycle","99":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#Other-tutorials","100":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#General-overview-of-the-functionality-of-YAXArrays","101":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#Table-style-iteration-over-YAXArrays","102":"/YAXArrays.jl/previews/PR481/tutorials/other_tutorials.html#Combining-multiple-tiff-files-into-a-zarr-based-datacube","103":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Plotting-maps","104":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Heatmap-plot","105":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Wintri-Projection","106":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#Moll-projection","107":"/YAXArrays.jl/previews/PR481/tutorials/plottingmaps.html#3D-sphere-plot"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,86],"1":[2,1,58],"2":[2,2,57],"3":[2,2,9],"4":[4,4,76],"5":[4,4,76],"6":[5,4,81],"7":[2,1,31],"8":[5,2,82],"9":[5,2,92],"10":[2,1,119],"11":[5,2,30],"12":[1,2,72],"13":[1,2,120],"14":[1,2,88],"15":[1,2,22],"16":[4,3,211],"17":[4,3,100],"18":[5,7,128],"19":[5,7,98],"20":[4,7,90],"21":[3,3,150],"22":[4,3,245],"23":[2,2,138],"24":[2,1,52],"25":[3,2,85],"26":[2,2,41],"27":[2,2,122],"28":[4,1,14],"29":[3,4,109],"30":[3,4,45],"31":[5,1,19],"32":[7,5,77],"33":[1,11,90],"34":[8,5,76],"35":[5,5,90],"36":[10,5,33],"37":[3,14,142],"38":[3,14,18],"39":[9,14,69],"40":[13,14,158],"41":[7,5,113],"42":[8,5,168],"43":[11,5,1],"44":[3,15,24],"45":[3,15,59],"46":[8,5,139],"47":[7,5,79],"48":[4,1,32],"49":[8,4,35],"50":[3,4,131],"51":[2,4,169],"52":[1,6,101],"53":[1,6,48],"54":[2,4,111],"55":[1,6,84],"56":[2,6,348],"57":[4,1,14],"58":[2,4,187],"59":[2,4,251],"60":[5,4,90],"61":[4,4,42],"62":[1,8,142],"63":[4,1,165],"64":[3,4,105],"65":[2,4,115],"66":[2,4,129],"67":[4,4,143],"68":[3,4,71],"69":[1,1,16],"70":[1,1,113],"71":[1,1,78],"72":[3,1,70],"73":[1,1,32],"74":[3,2,100],"75":[4,1,146],"76":[2,4,19],"77":[2,5,52],"78":[2,4,20],"79":[2,5,44],"80":[3,4,73],"81":[4,4,157],"82":[2,4,154],"83":[4,4,93],"84":[2,1,10],"85":[2,2,597],"86":[2,2,463],"87":[4,1,15],"88":[3,4,40],"89":[3,5,75],"90":[2,1,1],"91":[1,2,34],"92":[1,2,199],"93":[1,2,49],"94":[6,1,37],"95":[3,1,21],"96":[7,1,73],"97":[3,7,133],"98":[5,7,48],"99":[2,1,49],"100":[6,2,12],"101":[5,2,38],"102":[9,2,1],"103":[2,1,135],"104":[2,2,21],"105":[2,1,46],"106":[2,2,33],"107":[3,2,57]},"averageFieldLength":[3.500000000000001,3.805555555555558,92.12037037037037],"storedFields":{"0":{"title":"Caching YAXArrays","titles":[]},"1":{"title":"Chunk YAXArrays","titles":[]},"2":{"title":"Chunking YAXArrays","titles":["Chunk YAXArrays"]},"3":{"title":"Chunking Datasets","titles":["Chunk YAXArrays"]},"4":{"title":"Set Chunks by Axis","titles":["Chunk YAXArrays","Chunking Datasets"]},"5":{"title":"Set chunking by Variable","titles":["Chunk YAXArrays","Chunking Datasets"]},"6":{"title":"Set chunking for all variables","titles":["Chunk YAXArrays","Chunking Datasets"]},"7":{"title":"Combine YAXArrays","titles":[]},"8":{"title":"cat along an existing dimension","titles":["Combine YAXArrays"]},"9":{"title":"concatenatecubes to a new dimension","titles":["Combine YAXArrays"]},"10":{"title":"Compute YAXArrays","titles":[]},"11":{"title":"Modify elements of a YAXArray","titles":["Compute YAXArrays"]},"12":{"title":"Arithmetics","titles":["Compute YAXArrays"]},"13":{"title":"map","titles":["Compute YAXArrays"]},"14":{"title":"mapslices","titles":["Compute YAXArrays"]},"15":{"title":"mapCube","titles":["Compute YAXArrays"]},"16":{"title":"Operations over several YAXArrays","titles":["Compute YAXArrays","mapCube"]},"17":{"title":"OutDims and YAXArray Properties","titles":["Compute YAXArrays","mapCube"]},"18":{"title":"One InDims to many OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"19":{"title":"Many InDims to many OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"20":{"title":"Specify path in OutDims","titles":["Compute YAXArrays","mapCube","OutDims and YAXArray Properties"]},"21":{"title":"Different InDims names","titles":["Compute YAXArrays","mapCube"]},"22":{"title":"Creating a vector array","titles":["Compute YAXArrays","mapCube"]},"23":{"title":"Distributed Computation","titles":["Compute YAXArrays"]},"24":{"title":"Convert YAXArrays","titles":[]},"25":{"title":"Convert Base.Array","titles":["Convert YAXArrays"]},"26":{"title":"Convert Raster","titles":["Convert YAXArrays"]},"27":{"title":"Convert DimArray","titles":["Convert YAXArrays"]},"28":{"title":"Create YAXArrays and Datasets","titles":[]},"29":{"title":"Create a YAXArray","titles":["Create YAXArrays and Datasets"]},"30":{"title":"Create a Dataset","titles":["Create YAXArrays and Datasets"]},"31":{"title":"Frequently Asked Questions (FAQ)","titles":[]},"32":{"title":"Extract the axes names from a Cube","titles":["Frequently Asked Questions (FAQ)"]},"33":{"title":"rebuild","titles":["Frequently Asked Questions (FAQ)","Extract the axes names from a Cube"]},"34":{"title":"Obtain values from axes and data from the cube","titles":["Frequently Asked Questions (FAQ)"]},"35":{"title":"How do I concatenate cubes","titles":["Frequently Asked Questions (FAQ)"]},"36":{"title":"How do I subset a YAXArray ( Cube ) or Dataset?","titles":["Frequently Asked Questions (FAQ)"]},"37":{"title":"Subsetting a YAXArray","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?"]},"38":{"title":"Subsetting a Dataset","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?"]},"39":{"title":"Subsetting a Dataset whose variables share all their dimensions","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?","Subsetting a Dataset"]},"40":{"title":"Subsetting a Dataset whose variables share some but not all of their dimensions","titles":["Frequently Asked Questions (FAQ)","How do I subset a YAXArray ( Cube ) or Dataset?","Subsetting a Dataset"]},"41":{"title":"How do I apply map algebra?","titles":["Frequently Asked Questions (FAQ)"]},"42":{"title":"How do I use the CubeTable function?","titles":["Frequently Asked Questions (FAQ)"]},"43":{"title":"How do I assign variable names to YAXArrays in a Dataset","titles":["Frequently Asked Questions (FAQ)"]},"44":{"title":"One variable name","titles":["Frequently Asked Questions (FAQ)","How do I assign variable names to YAXArrays in a Dataset"]},"45":{"title":"Multiple variable names","titles":["Frequently Asked Questions (FAQ)","How do I assign variable names to YAXArrays in a Dataset"]},"46":{"title":"Ho do I construct a Dataset from a TimeArray","titles":["Frequently Asked Questions (FAQ)"]},"47":{"title":"Create a YAXArray with unions containing Strings","titles":["Frequently Asked Questions (FAQ)"]},"48":{"title":"Group YAXArrays and Datasets","titles":[]},"49":{"title":"Seasonal Averages from Time Series of Monthly Means","titles":["Group YAXArrays and Datasets"]},"50":{"title":"Download the data","titles":["Group YAXArrays and Datasets"]},"51":{"title":"GroupBy: seasons","titles":["Group YAXArrays and Datasets"]},"52":{"title":"dropdims","titles":["Group YAXArrays and Datasets","GroupBy: seasons"]},"53":{"title":"seasons","titles":["Group YAXArrays and Datasets","GroupBy: seasons"]},"54":{"title":"GroupBy: weight","titles":["Group YAXArrays and Datasets"]},"55":{"title":"weights","titles":["Group YAXArrays and Datasets","GroupBy: weight"]},"56":{"title":"weighted seasons","titles":["Group YAXArrays and Datasets","GroupBy: weight"]},"57":{"title":"Read YAXArrays and Datasets","titles":[]},"58":{"title":"Read Zarr","titles":["Read YAXArrays and Datasets"]},"59":{"title":"Read NetCDF","titles":["Read YAXArrays and Datasets"]},"60":{"title":"Read GDAL (GeoTIFF, GeoJSON)","titles":["Read YAXArrays and Datasets"]},"61":{"title":"Load data into memory","titles":["Read YAXArrays and Datasets"]},"62":{"title":"readcubedata","titles":["Read YAXArrays and Datasets","Load data into memory"]},"63":{"title":"Select YAXArrays and Datasets","titles":[]},"64":{"title":"Select a YAXArray","titles":["Select YAXArrays and Datasets"]},"65":{"title":"Select elements","titles":["Select YAXArrays and Datasets"]},"66":{"title":"Select ranges","titles":["Select YAXArrays and Datasets"]},"67":{"title":"Closed and open intervals","titles":["Select YAXArrays and Datasets"]},"68":{"title":"Get a dimension","titles":["Select YAXArrays and Datasets"]},"69":{"title":"Types","titles":[]},"70":{"title":"YAXArray","titles":["Types"]},"71":{"title":"Dataset","titles":["Types"]},"72":{"title":"(Data) Cube","titles":["Types"]},"73":{"title":"Dimensions","titles":["Types"]},"74":{"title":"Lon, Lat, time","titles":["Types","Dimensions"]},"75":{"title":"Write YAXArrays and Datasets","titles":[]},"76":{"title":"Write Zarr","titles":["Write YAXArrays and Datasets"]},"77":{"title":"zarr compression","titles":["Write YAXArrays and Datasets","Write Zarr"]},"78":{"title":"Write NetCDF","titles":["Write YAXArrays and Datasets"]},"79":{"title":"netcdf compression","titles":["Write YAXArrays and Datasets","Write NetCDF"]},"80":{"title":"Overwrite a Dataset","titles":["Write YAXArrays and Datasets"]},"81":{"title":"Append to a Dataset","titles":["Write YAXArrays and Datasets"]},"82":{"title":"Save Skeleton","titles":["Write YAXArrays and Datasets"]},"83":{"title":"Update values of dataset","titles":["Write YAXArrays and Datasets"]},"84":{"title":"API Reference","titles":[]},"85":{"title":"Public API","titles":["API Reference"]},"86":{"title":"Internal API","titles":["API Reference"]},"87":{"title":"Contribute to YAXArrays.jl","titles":[]},"88":{"title":"Contribute to Documentation","titles":["Contribute to YAXArrays.jl"]},"89":{"title":"Build docs locally","titles":["Contribute to YAXArrays.jl","Contribute to Documentation"]},"90":{"title":"Getting Started","titles":[]},"91":{"title":"Installation","titles":["Getting Started"]},"92":{"title":"Quickstart","titles":["Getting Started"]},"93":{"title":"Updates","titles":["Getting Started"]},"94":{"title":"How to Install YAXArrays.jl?","titles":[]},"95":{"title":"Want interoperability?","titles":[]},"96":{"title":"Mean Seasonal Cycle for a single pixel","titles":[]},"97":{"title":"Define the cube","titles":["Mean Seasonal Cycle for a single pixel"]},"98":{"title":"Plot results: mean seasonal cycle","titles":["Mean Seasonal Cycle for a single pixel"]},"99":{"title":"Other tutorials","titles":[]},"100":{"title":"General overview of the functionality of YAXArrays","titles":["Other tutorials"]},"101":{"title":"Table-style iteration over YAXArrays","titles":["Other tutorials"]},"102":{"title":"Combining multiple tiff files into a zarr based datacube","titles":["Other tutorials"]},"103":{"title":"Plotting maps","titles":[]},"104":{"title":"Heatmap plot","titles":["Plotting maps"]},"105":{"title":"Wintri Projection","titles":[]},"106":{"title":"Moll projection","titles":["Wintri Projection"]},"107":{"title":"3D sphere plot","titles":["Wintri Projection"]}},"dirtCount":0,"index":[["δlon",{"2":{"105":1}}],["✘",{"2":{"74":8}}],["✔",{"2":{"74":9}}],["├──────────────────────┴────────────────────────────────────────",{"2":{"47":1}}],["├──────────────────────────┴─────────────────────────",{"2":{"37":1}}],["├──────────────────────────┴────────────────────────────────────",{"2":{"92":1}}],["├──────────────────────────┴─────────────────────────────────────",{"2":{"33":1}}],["├──────────────────────────┴─────────────────────────────────────────────",{"2":{"34":1,"42":1}}],["├──────────────────────────┴────────────────────────────────────────",{"2":{"19":1}}],["├──────────────────────────┴─────────────────────────────────",{"2":{"27":2}}],["├──────────────────────────┴────────────────────────────────",{"2":{"9":1}}],["├───────────────────────────┴───────────────────────────────────",{"2":{"25":1}}],["├───────────────────────────┴────────────────────────────────────────────",{"2":{"22":1,"37":1}}],["├─────────────────────────────┴──────────────────────────────────────────",{"2":{"37":2}}],["├──────────────────────────────┴─────────────────────────────────",{"2":{"29":1}}],["├──────────────────────────────┴─────────────────────────────────────────",{"2":{"16":1,"32":1}}],["├────────────────────────────────┴───────────────────────────────────────",{"2":{"55":1}}],["├───────────────────────────────────┴────────────────────────────────────",{"2":{"97":1}}],["├─────────────────────────────────────┴──────────────────────────────────",{"2":{"58":1}}],["├───────────────────────────────────────┴───────────────────────",{"2":{"47":1}}],["├────────────────────────────────────────",{"2":{"37":1}}],["├───────────────────────────────────────────┴────────────────────────────",{"2":{"22":1,"42":1}}],["├──────────────────────────────────────────────┴────────────────",{"2":{"65":1}}],["├────────────────────────────────────────────────┴───────────────────────",{"2":{"42":1,"54":1,"66":1,"67":5}}],["├────────────────────────────────────────────────",{"2":{"27":1,"37":1}}],["├─────────────────────────────────────────────────",{"2":{"21":1}}],["├─────────────────────────────────────────────────┴──────────────────────",{"2":{"14":1,"59":1,"62":3,"64":2,"65":2}}],["├──────────────────────────────────────────────────┴─────────────────────",{"2":{"51":1}}],["├────────────────────────────────────────────────────",{"2":{"29":1,"33":1}}],["├────────────────────────────────────────────────────────",{"2":{"27":2}}],["├───────────────────────────────────────────────────────────",{"2":{"25":1,"47":2,"92":1}}],["├────────────────────────────────────────────────────────────",{"2":{"10":1,"12":1,"13":1,"14":2,"16":3,"17":1,"18":1,"21":2,"22":2,"29":2,"32":1,"33":3,"34":1,"37":4,"41":3,"42":3,"50":1,"54":1,"62":3,"82":1,"92":1,"97":1}}],["├─────────────────────────────────────────────────────────────────",{"2":{"65":1}}],["├──────────────────────────────────────────────────────────────────",{"2":{"51":1,"54":1}}],["├─────────────────────────────────────────────────────────────────────┴",{"2":{"65":1}}],["├────────────────────────────────────────────────────────────────────────",{"2":{"51":1,"52":1,"54":1,"55":1,"56":3}}],["├────────────────────────────────────────────────────────────────────",{"2":{"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"21":2,"22":3,"29":1,"32":1,"33":2,"34":1,"35":1,"37":4,"41":3,"42":3,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"58":1,"59":1,"62":3,"64":2,"65":2,"66":3,"67":5,"82":1,"92":1,"97":1}}],["├───────────────────────────────────────────────────────────────",{"2":{"16":2,"19":1,"35":1,"50":1,"58":1,"59":1,"64":2,"65":2,"66":3,"67":5}}],["├─────────────────────────────────────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────────────────────────────",{"2":{"9":1,"19":1}}],["├─────────────────────────────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────────────────────────",{"2":{"25":1,"47":2,"92":1}}],["├──────────────────────────────────────────────────",{"2":{"9":1}}],["├───────────────────────────────────────────────┴────────────────────────",{"2":{"16":2,"41":1,"66":2}}],["├────────────────────────────────────────────┴───────────────────────────",{"2":{"14":1,"18":1,"21":1,"82":1}}],["├─────────────────────────────────────────",{"2":{"21":1}}],["├──────────────────────────────────┴────────────────────────────",{"2":{"68":1}}],["├─────────────────────────────────┴──────────────────────────────────────",{"2":{"35":1,"50":2,"92":1}}],["├─────────────────────────────────┴───────────────────────────────",{"2":{"8":1}}],["├───────────────────────────────┴────────────────────────────────────────",{"2":{"10":1,"12":1,"13":1,"16":2,"22":1,"29":1,"41":2,"54":1}}],["├────────────────────────────┴────────────────────────",{"2":{"21":1}}],["├────────────────────────────┴───────────────────────────────────────────",{"2":{"17":1,"21":1,"22":1,"33":2,"37":1}}],["π",{"2":{"41":2,"96":1,"98":1}}],[">var",{"2":{"97":1}}],[">dates",{"2":{"97":1}}],[">month",{"2":{"85":1}}],[">abs",{"2":{"85":1}}],[">=",{"2":{"40":4}}],[">",{"2":{"40":2,"41":2,"97":1}}],["└──────────────────────────────────────────────────────────┘",{"2":{"37":1}}],["└───────────────────────────────────────────────────────────┘",{"2":{"21":1}}],["└──────────────────────────────────────────────────────────────────┘",{"2":{"27":2}}],["└──────────────────────────────────────────────────────────────────────┘",{"2":{"29":1,"33":1}}],["└────────────────────────────────────────────────────────────────────────────────┘",{"2":{"65":1}}],["└──────────────────────────────────────────────────────────────────────────────┘",{"2":{"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"21":2,"22":4,"29":1,"32":1,"33":2,"34":1,"35":1,"37":4,"41":3,"42":3,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"58":1,"59":1,"62":3,"64":2,"65":2,"66":3,"67":5,"82":1,"92":1,"97":1}}],["└─────────────────────────────────────────────────────────────────────────┘",{"2":{"19":1}}],["└───────────────────────────────────────────────────────────────────────┘",{"2":{"8":1}}],["└─────────────────────────────────────────────────────────────────────┘",{"2":{"25":1,"47":2,"68":1,"92":1}}],["└─────────────────────────────────────────────────────────────────┘",{"2":{"9":1}}],["`diskarrays",{"2":{"86":1}}],["`a",{"2":{"37":1}}],["`layer`",{"2":{"18":1}}],["quickstart",{"0":{"92":1}}],["query",{"2":{"63":1}}],["querying",{"2":{"62":1}}],["questions",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["quot",{"2":{"16":2,"42":2,"82":4,"85":8,"86":12}}],["jj+1",{"2":{"59":1,"63":1,"75":1,"81":1}}],["jj",{"2":{"59":1,"63":1,"75":1,"81":1}}],["joinname",{"2":{"85":1}}],["joinname=",{"2":{"85":1}}],["job",{"2":{"74":1}}],["journal",{"2":{"59":1,"63":1,"75":1,"81":1}}],["joe",{"2":{"49":1,"56":1}}],["j",{"2":{"56":8}}],["jan",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["jl",{"0":{"87":1,"94":1},"1":{"88":1,"89":1},"2":{"26":1,"27":1,"42":1,"46":2,"50":1,"51":1,"56":1,"70":1,"73":1,"74":1,"87":1,"89":2,"91":1,"92":2,"93":3,"94":2,"101":1}}],["jussieu",{"2":{"59":1,"63":1,"75":1,"81":1}}],["just",{"2":{"22":1,"70":1,"72":1,"85":1,"86":2}}],["jul",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["juliaδlon",{"2":{"105":1}}],["juliax",{"2":{"96":1}}],["juliapkg>",{"2":{"91":1,"93":1,"94":1}}],["juliapermuteloopaxes",{"2":{"86":1}}],["juliaproperties",{"2":{"19":1}}],["juliaoptifunc",{"2":{"86":1}}],["juliaopen",{"2":{"85":2}}],["juliaoutdims",{"2":{"85":1}}],["juliaoffset",{"2":{"13":1}}],["juliacopydata",{"2":{"86":1}}],["juliacollect",{"2":{"34":1,"68":1}}],["juliaclean",{"2":{"86":1}}],["juliacube",{"2":{"85":1}}],["juliacubefittable",{"2":{"85":1}}],["juliacubetable",{"2":{"85":1}}],["juliacaxes",{"2":{"85":1}}],["julian",{"2":{"77":1,"79":1}}],["juliasavecube",{"2":{"85":1}}],["juliasavedataset",{"2":{"76":1,"78":1,"80":2,"85":1}}],["juliasetchunks",{"2":{"85":1,"86":1}}],["juliaseasons",{"2":{"53":1}}],["juliaglmakie",{"2":{"104":1}}],["juliagroupby",{"2":{"74":1}}],["juliagetloopchunks",{"2":{"86":1}}],["juliagetouttype",{"2":{"86":1}}],["juliagetoutaxis",{"2":{"86":1}}],["juliaget",{"2":{"86":1}}],["juliagetaxis",{"2":{"85":1}}],["juliagettarrayaxes",{"2":{"46":1}}],["juliagen",{"2":{"16":1}}],["julialon",{"2":{"103":1}}],["julialookup",{"2":{"68":1}}],["julialatitudes",{"2":{"40":1}}],["juliawith",{"2":{"56":1}}],["julia>",{"2":{"56":1,"89":1,"94":2,"97":2}}],["juliaurl",{"2":{"50":1}}],["juliausing",{"2":{"0":1,"2":1,"4":1,"5":1,"6":1,"8":1,"9":1,"10":1,"16":1,"17":1,"22":1,"23":2,"25":1,"26":1,"27":1,"29":2,"32":1,"33":1,"35":1,"37":1,"39":1,"40":1,"42":2,"46":1,"48":1,"56":1,"58":1,"59":1,"60":1,"63":1,"65":1,"67":1,"74":1,"75":1,"76":1,"78":1,"82":1,"92":1,"95":4,"96":1,"103":1,"107":1}}],["juliakeylist",{"2":{"45":1}}],["juliaylonlat",{"2":{"37":1}}],["juliaytime3",{"2":{"37":1}}],["juliaytime2",{"2":{"37":1}}],["juliaytime",{"2":{"37":1}}],["juliay",{"2":{"37":1}}],["juliayaxcolumn",{"2":{"86":1}}],["juliayaxarray",{"2":{"85":1}}],["juliayax",{"2":{"0":1,"46":2}}],["juliato",{"2":{"85":1}}],["juliatos",{"2":{"64":2,"65":2,"66":3,"67":1,"68":1}}],["juliatempo",{"2":{"54":1}}],["juliatest",{"2":{"47":2}}],["juliat",{"2":{"37":1,"42":1,"96":1}}],["juliatspan",{"2":{"16":1}}],["juliamutable",{"2":{"86":1}}],["juliamatch",{"2":{"86":1}}],["juliamapcube",{"2":{"85":2}}],["juliamapslices",{"2":{"14":1,"23":1}}],["juliamovingwindow",{"2":{"85":1}}],["juliamy",{"2":{"59":1}}],["juliamean",{"2":{"56":1}}],["juliam2",{"2":{"25":1}}],["julia",{"2":{"24":1,"50":1,"59":1,"86":1,"89":1,"91":2,"92":1,"93":2,"94":2}}],["juliavector",{"2":{"22":1}}],["juliadataset",{"2":{"85":1}}],["juliadata3",{"2":{"30":1}}],["juliadim",{"2":{"27":1}}],["juliadimarray",{"2":{"22":1}}],["juliads2",{"2":{"81":1}}],["juliads",{"2":{"18":2,"20":2,"21":1,"39":1,"40":1,"58":1,"59":1,"62":2,"79":1,"82":2,"83":3,"85":1}}],["juliar",{"2":{"82":1}}],["juliareadcubedata",{"2":{"62":1,"85":1}}],["juliaregions",{"2":{"22":2}}],["juliaras2",{"2":{"26":1}}],["juliarandom",{"2":{"21":2}}],["juliaindims",{"2":{"18":1,"20":1,"85":1}}],["juliaimport",{"2":{"14":1,"91":1}}],["juliajulia>",{"2":{"16":5,"32":3,"33":2,"34":1,"35":1,"41":3,"42":3,"44":1,"45":1,"46":2,"51":2,"52":1,"54":2,"55":2,"56":3,"67":4,"81":1,"82":1,"94":1,"97":2,"103":3}}],["juliaall",{"2":{"82":1}}],["juliaaxes",{"2":{"37":1}}],["juliaa2",{"2":{"12":2,"29":2,"92":1}}],["juliaa",{"2":{"2":1,"11":3}}],["juliafig",{"2":{"96":1,"98":1,"105":1,"106":1}}],["juliafindaxis",{"2":{"86":1}}],["juliafiles",{"2":{"85":2}}],["juliafittable",{"2":{"85":2}}],["juliafunction",{"2":{"16":1,"18":1,"19":1,"21":1,"51":1,"85":1,"86":1,"97":1}}],["juliaf",{"2":{"2":1,"4":1,"5":1,"6":1,"16":1}}],["jun",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["∘",{"2":{"23":1}}],["|>",{"2":{"22":2}}],["⋱",{"2":{"22":1}}],["⋮",{"2":{"22":2,"68":1,"97":1}}],["^2",{"2":{"21":1}}],["⬔",{"2":{"17":1,"18":1,"35":1,"92":1}}],["991786",{"2":{"92":1}}],["990276",{"2":{"92":1}}],["922125",{"2":{"92":1}}],["926096",{"2":{"27":1}}],["9538",{"2":{"92":1}}],["953391",{"2":{"27":1}}],["95",{"2":{"56":1}}],["959",{"2":{"56":1}}],["971131",{"2":{"92":1}}],["97649",{"2":{"56":1}}],["97047",{"2":{"56":1}}],["973332",{"2":{"27":1}}],["948244",{"2":{"83":2}}],["94534",{"2":{"56":1}}],["9404",{"2":{"51":1,"52":1}}],["9432",{"2":{"51":1,"52":1}}],["949935",{"2":{"25":1}}],["986",{"2":{"56":1}}],["98",{"2":{"40":6}}],["984803",{"2":{"22":1}}],["90712",{"2":{"56":1}}],["90365",{"2":{"56":1}}],["90",{"2":{"40":2,"60":1,"67":5}}],["9122",{"2":{"60":1}}],["9192",{"2":{"56":1}}],["91",{"2":{"32":1,"67":5}}],["916686",{"2":{"27":1}}],["918555",{"2":{"25":1}}],["935884",{"2":{"92":1}}],["935631",{"2":{"25":1}}],["939296",{"2":{"92":1}}],["93986",{"2":{"22":1}}],["9375",{"2":{"58":2,"103":1}}],["93743",{"2":{"56":1}}],["9362",{"2":{"56":1}}],["9",{"2":{"16":14,"22":2,"34":1,"37":1,"50":2,"54":4,"66":4,"77":2,"79":1,"86":1}}],["961913",{"2":{"92":1}}],["96x71x19",{"2":{"59":1,"63":1,"75":1,"81":1}}],["96f0",{"2":{"59":1,"63":1,"75":1}}],["9682",{"2":{"51":1,"52":1}}],["96921e36",{"2":{"50":2}}],["960",{"2":{"17":1,"18":1,"22":1}}],["96",{"2":{"8":1,"9":1,"40":6,"65":2,"81":1}}],["891257",{"2":{"83":2}}],["8901",{"2":{"60":1}}],["89",{"2":{"58":4,"59":2,"60":1,"62":3,"63":1,"64":2,"65":1,"66":1,"67":5,"68":3,"75":1,"81":1,"103":2}}],["8984",{"2":{"56":1}}],["89237",{"2":{"56":1}}],["860688",{"2":{"83":2}}],["86",{"2":{"68":2}}],["86457",{"2":{"56":1}}],["862644",{"2":{"27":1}}],["855984",{"2":{"92":1}}],["85",{"2":{"68":2,"105":1,"106":1}}],["850",{"2":{"56":1}}],["85ºn",{"2":{"40":1}}],["85714",{"2":{"22":1}}],["88",{"2":{"35":1,"58":4,"68":2,"92":1,"103":2}}],["889583",{"2":{"22":1}}],["816865",{"2":{"92":1}}],["81",{"2":{"29":1}}],["839919",{"2":{"92":1}}],["830391",{"2":{"25":1}}],["83556",{"2":{"25":1}}],["87",{"2":{"68":2}}],["87705",{"2":{"56":1}}],["872575",{"2":{"27":1}}],["870826",{"2":{"25":1}}],["875658",{"2":{"22":1}}],["84",{"2":{"60":2}}],["845983",{"2":{"25":1}}],["840389",{"2":{"22":1}}],["8256",{"2":{"92":1}}],["82421875",{"2":{"60":2}}],["824354",{"2":{"22":1}}],["829062",{"2":{"22":1}}],["8",{"2":{"16":12,"22":2,"34":1,"37":1,"59":2,"62":3,"63":1,"64":2,"75":1,"81":1,"97":1}}],["80759",{"2":{"56":1}}],["800",{"2":{"33":3,"34":1,"37":1}}],["80",{"2":{"16":1,"40":2}}],["v",{"2":{"59":1,"63":1,"75":1,"81":1}}],["v1",{"2":{"59":2,"63":2,"75":2,"81":2,"91":1}}],["v20190710",{"2":{"58":1,"103":2}}],["vol",{"2":{"59":1,"63":1,"75":1,"81":1}}],["volume",{"2":{"46":4}}],["voilà",{"2":{"46":1}}],["video",{"2":{"99":1}}],["videos",{"2":{"99":1}}],["via",{"2":{"51":1}}],["visualization",{"2":{"42":1}}],["vice",{"2":{"24":1}}],["view",{"2":{"22":1,"92":1}}],["version",{"2":{"58":1,"59":1,"63":1,"75":1,"81":1,"85":1,"93":2,"94":1,"103":1}}],["versa",{"2":{"24":1}}],["verify",{"2":{"55":1,"83":1}}],["very",{"2":{"13":1,"42":1,"70":1}}],["vector",{"0":{"22":1},"2":{"22":4,"34":1,"47":1,"51":1,"53":1,"54":3,"55":2,"56":1,"70":1,"85":2,"86":3}}],["val",{"2":{"34":2,"68":1}}],["vals",{"2":{"22":1}}],["value",{"2":{"12":1,"14":3,"16":2,"41":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"85":4,"86":1}}],["values=ds1",{"2":{"42":1}}],["values",{"0":{"34":1,"83":1},"2":{"9":1,"20":1,"21":1,"22":2,"28":1,"29":2,"32":2,"33":1,"34":1,"40":3,"42":4,"45":1,"46":2,"66":1,"68":2,"70":1,"71":1,"82":1,"83":3,"85":9,"92":1,"103":1}}],["varoables",{"2":{"85":1}}],["variant",{"2":{"58":1,"103":1}}],["variable",{"0":{"5":1,"43":1,"44":1,"45":1},"1":{"44":1,"45":1},"2":{"5":1,"9":1,"40":3,"58":1,"62":2,"82":2,"85":1,"86":6,"92":1,"96":1,"97":1,"98":1,"103":1}}],["variables=at",{"2":{"41":2,"92":1}}],["variables",{"0":{"6":1,"39":1,"40":1},"2":{"4":5,"5":4,"6":2,"9":4,"17":2,"18":1,"19":1,"20":1,"21":1,"24":1,"30":1,"35":2,"38":1,"39":2,"40":11,"44":1,"45":4,"46":11,"58":4,"59":1,"60":1,"61":1,"62":1,"63":1,"71":1,"72":1,"74":3,"75":1,"81":4,"82":1,"85":5,"86":1,"92":2,"103":4}}],["varlist",{"2":{"45":2}}],["var2=var2",{"2":{"39":1}}],["var2",{"2":{"35":2,"39":3,"41":1}}],["var1=var1",{"2":{"39":1}}],["var1",{"2":{"35":2,"39":3,"41":1}}],["var",{"2":{"9":2,"96":2,"97":2,"98":2}}],["uv",{"2":{"107":1}}],["u",{"2":{"97":1}}],["up",{"2":{"85":1}}],["updates",{"0":{"93":1}}],["updated",{"2":{"83":1}}],["update",{"0":{"83":1},"2":{"83":2,"85":1}}],["updating",{"2":{"48":1,"83":1}}],["ucar",{"2":{"59":1,"63":1,"71":1,"75":1}}],["urls",{"2":{"57":1}}],["url",{"2":{"50":1,"58":1}}],["unreleased",{"2":{"94":1}}],["unpermuted",{"2":{"86":2}}],["unpractical",{"2":{"50":1}}],["underlying",{"2":{"85":1,"86":1,"93":1}}],["unlike",{"2":{"72":1}}],["unweighted",{"2":{"51":1,"56":1}}],["unique",{"2":{"97":1}}],["unidata",{"2":{"59":1,"63":1,"71":1,"75":1}}],["unit",{"2":{"60":1}}],["unitrange",{"2":{"51":2,"52":2,"56":6}}],["units",{"2":{"50":2,"58":1,"59":2,"62":6,"64":4,"65":6,"66":6,"67":10}}],["unions",{"0":{"47":1}}],["union",{"2":{"14":2,"16":4,"18":2,"20":1,"21":1,"22":1,"41":1,"42":2,"47":2,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"82":2,"83":1}}],["unordered",{"2":{"46":4,"51":2,"52":1,"53":1,"54":2,"55":2,"56":3}}],["unnecessary",{"2":{"22":1}}],["unchanged",{"2":{"13":1}}],["usage",{"2":{"74":1}}],["usually",{"2":{"58":1,"70":2,"71":2}}],["usual",{"2":{"51":1}}],["us",{"2":{"22":1}}],["useable",{"2":{"85":1}}],["used",{"2":{"22":1,"23":1,"37":1,"51":1,"63":1,"68":1,"69":1,"70":1,"73":1,"74":1,"85":6,"86":3}}],["uses",{"2":{"20":1,"42":1,"59":1}}],["userguide",{"2":{"88":2}}],["users",{"2":{"86":1}}],["user",{"2":{"10":2,"12":1,"13":1,"23":1,"29":3,"30":1,"86":1}}],["use",{"0":{"42":1},"2":{"0":1,"8":1,"9":1,"10":4,"13":1,"23":2,"32":2,"37":1,"39":1,"40":1,"41":1,"42":2,"46":2,"48":1,"50":1,"52":1,"61":1,"67":2,"72":1,"77":1,"82":1,"85":4,"86":1,"94":1,"99":1,"101":1,"103":2}}],["useful",{"2":{"0":1,"72":1}}],["using",{"2":{"0":1,"8":2,"9":2,"10":2,"16":3,"17":4,"22":3,"23":8,"27":1,"29":1,"32":1,"33":2,"35":2,"37":2,"39":2,"40":2,"41":1,"42":1,"46":3,"48":5,"58":2,"59":3,"60":2,"61":1,"63":2,"65":3,"66":2,"74":1,"75":2,"81":1,"82":3,"92":1,"93":1,"94":1,"96":2,"97":2,"103":3}}],["+proj=moll",{"2":{"106":1}}],["+",{"2":{"12":2,"13":1,"16":2,"18":2,"21":1,"96":1,"105":1}}],["kwargs",{"2":{"85":5,"86":2}}],["know",{"2":{"62":1}}],["k",{"2":{"46":5,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["keyword",{"2":{"81":1,"85":7,"86":2}}],["key",{"2":{"48":1,"85":1}}],["keys=",{"2":{"85":1}}],["keyset",{"2":{"46":1}}],["keys",{"2":{"46":7,"85":4}}],["keylist",{"2":{"45":1}}],["keeps",{"2":{"13":1}}],["keep",{"2":{"0":1,"86":1}}],["kb",{"2":{"10":1,"12":1,"13":1,"14":1,"16":2,"22":1,"29":2,"32":1,"35":1,"37":4,"41":3,"42":1,"65":1,"66":3,"67":5,"92":1,"97":1}}],["↗",{"2":{"10":1,"12":1,"13":1,"16":2,"17":1,"18":1,"19":1,"20":1,"21":3,"22":1,"29":3,"30":1,"32":3,"35":1,"37":5,"39":2,"41":3,"50":2,"51":1,"58":2,"59":2,"62":3,"63":1,"64":2,"66":3,"67":5,"75":1,"81":2,"82":2,"92":1,"103":1}}],["046745",{"2":{"92":1}}],["0465",{"2":{"56":1}}],["0e8",{"2":{"85":1}}],["02",{"2":{"58":1}}],["0210077",{"2":{"25":1}}],["0214057",{"2":{"25":1}}],["0f20",{"2":{"58":1,"59":2,"62":6,"64":4,"65":6,"66":6,"67":10}}],["0f32",{"2":{"16":2}}],["030090414984429516",{"2":{"97":1}}],["03361",{"2":{"56":1}}],["0358348",{"2":{"25":1}}],["0617443331324013",{"2":{"97":1}}],["0625",{"2":{"58":2,"103":1}}],["0620649",{"2":{"27":1}}],["06755",{"2":{"56":1}}],["08536931940151503",{"2":{"97":1}}],["0893687",{"2":{"92":1}}],["0887544",{"2":{"83":2}}],["08",{"2":{"50":2,"54":1}}],["09779224328472132",{"2":{"97":1}}],["0900259",{"2":{"92":1}}],["09",{"2":{"50":2,"54":1}}],["0ºe",{"2":{"40":1}}],["07565180270644235",{"2":{"97":1}}],["0766027",{"2":{"92":1}}],["07",{"2":{"58":2,"103":1}}],["0702532",{"2":{"27":1}}],["0723492",{"2":{"22":1}}],["0012862484521267356",{"2":{"97":1}}],["00372526",{"2":{"92":1}}],["00388",{"2":{"56":1}}],["00277787",{"2":{"83":2}}],["00722034",{"2":{"56":1}}],["00709111",{"2":{"56":1}}],["006364171431821925",{"2":{"97":1}}],["00684233",{"2":{"56":1}}],["00693713",{"2":{"56":1}}],["00990356",{"2":{"56":1}}],["0057",{"2":{"56":1}}],["00",{"2":{"20":4,"46":16,"50":8,"54":4,"58":9,"59":8,"62":12,"63":4,"64":8,"65":8,"66":12,"67":20,"75":4,"81":4,"103":5}}],["05203842202056678",{"2":{"97":1}}],["052264",{"2":{"27":1}}],["0586963181904983",{"2":{"97":1}}],["05846",{"2":{"56":1}}],["0537",{"2":{"51":1,"52":1}}],["0566881",{"2":{"27":1}}],["05t00",{"2":{"20":1}}],["05",{"2":{"17":2,"18":1,"21":3,"37":3}}],["019199882044045064",{"2":{"97":1}}],["019016",{"2":{"56":1}}],["0174532925199433",{"2":{"60":1}}],["0178074",{"2":{"56":1}}],["01t03",{"2":{"58":2,"103":1}}],["01t00",{"2":{"20":1,"46":4,"58":2,"103":1}}],["0118366",{"2":{"92":1}}],["0117519",{"2":{"56":1}}],["0115514",{"2":{"56":1}}],["0127077",{"2":{"56":1}}],["0123091",{"2":{"56":1}}],["0121037",{"2":{"56":1}}],["018571",{"2":{"56":1}}],["0182373",{"2":{"56":1}}],["0180572",{"2":{"56":1}}],["0183003",{"2":{"56":1}}],["018",{"2":{"51":1,"52":1}}],["01",{"2":{"10":6,"12":3,"13":3,"14":3,"16":12,"17":6,"18":3,"20":2,"21":9,"22":9,"23":3,"29":9,"30":3,"37":22,"39":8,"40":11,"46":8,"58":5,"59":4,"62":6,"63":2,"64":4,"65":6,"66":6,"67":10,"75":2,"81":2,"96":2,"97":4,"103":5}}],["0",{"2":{"8":1,"9":1,"10":6,"11":2,"12":6,"13":6,"14":7,"16":303,"17":7,"18":7,"19":7,"20":6,"21":10,"22":75,"25":36,"27":45,"29":12,"30":6,"33":3,"34":1,"35":9,"37":1,"40":4,"41":27,"42":11,"47":2,"54":2,"55":40,"56":19,"58":7,"59":10,"60":6,"62":12,"63":6,"64":8,"65":6,"66":14,"67":20,"68":7,"75":6,"77":1,"79":1,"80":1,"81":6,"82":1,"83":40,"85":2,"86":1,"92":80,"93":1,"96":2,"97":19,"98":1,"103":4,"105":2,"106":2,"107":2}}],["┤",{"2":{"8":2,"9":2,"10":2,"12":2,"13":2,"14":4,"16":10,"17":2,"18":2,"19":2,"21":6,"22":5,"25":2,"27":3,"29":4,"32":2,"33":6,"34":2,"35":2,"37":10,"41":6,"42":6,"47":4,"50":4,"51":4,"52":2,"54":6,"55":3,"56":6,"58":2,"59":2,"62":6,"64":4,"65":5,"66":6,"67":10,"82":2,"92":4,"97":2}}],["┐",{"2":{"8":2,"9":2,"10":2,"12":2,"13":2,"14":4,"16":10,"17":2,"18":2,"19":2,"21":6,"22":8,"25":2,"27":4,"29":4,"32":2,"33":6,"34":2,"35":2,"37":10,"41":6,"42":6,"47":4,"50":4,"51":3,"52":1,"54":5,"55":3,"56":3,"58":2,"59":2,"62":6,"64":4,"65":7,"66":6,"67":10,"68":2,"82":2,"92":4,"97":2}}],["┌",{"2":{"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":4,"25":1,"27":2,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"47":2,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"68":1,"82":1,"92":2,"97":1}}],["76",{"2":{"68":2}}],["709999",{"2":{"92":1}}],["70",{"2":{"66":3}}],["7030",{"2":{"60":1}}],["701332",{"2":{"22":1}}],["730",{"2":{"98":1}}],["735264",{"2":{"92":1}}],["733172",{"2":{"92":1}}],["738327",{"2":{"92":1}}],["7341",{"2":{"56":1}}],["73",{"2":{"56":1}}],["731779",{"2":{"27":1}}],["75",{"2":{"68":2}}],["7593",{"2":{"56":1}}],["75891",{"2":{"56":1}}],["75269",{"2":{"25":1}}],["752417",{"2":{"22":1}}],["771179",{"2":{"92":1}}],["771583",{"2":{"92":1}}],["778954",{"2":{"92":1}}],["77",{"2":{"68":2}}],["77687",{"2":{"56":1}}],["77587",{"2":{"56":1}}],["770949",{"2":{"27":1}}],["79",{"2":{"59":2,"62":3,"63":1,"64":2,"65":2,"66":4,"67":5,"68":3,"75":1,"81":1}}],["79502",{"2":{"56":1}}],["796375",{"2":{"27":1}}],["799412415821963",{"2":{"11":1}}],["749822",{"2":{"92":1}}],["74",{"2":{"68":2}}],["744521",{"2":{"27":1}}],["74732",{"2":{"25":1}}],["711506",{"2":{"92":1}}],["7119",{"2":{"51":1,"52":1}}],["719692",{"2":{"83":2}}],["717",{"2":{"67":5}}],["71",{"2":{"66":1}}],["7158",{"2":{"51":1,"52":1}}],["718667",{"2":{"27":1}}],["71314",{"2":{"27":1}}],["71429",{"2":{"22":2}}],["783581",{"2":{"92":1}}],["781572",{"2":{"83":2}}],["781773",{"2":{"22":1}}],["782494",{"2":{"83":2}}],["78",{"2":{"66":1,"68":2}}],["78467",{"2":{"25":1}}],["789891",{"2":{"25":1}}],["7",{"2":{"8":1,"16":10,"21":3,"22":1,"29":1,"34":1,"50":2,"58":1,"79":1,"103":1}}],["→",{"2":{"4":1,"5":1,"6":1,"9":1,"10":1,"12":1,"13":1,"14":1,"16":2,"17":1,"18":1,"19":1,"20":1,"21":3,"22":6,"25":1,"27":3,"29":3,"30":1,"32":3,"33":3,"34":1,"35":1,"37":6,"39":2,"40":2,"41":3,"42":2,"45":2,"46":4,"47":2,"50":2,"51":1,"58":2,"59":2,"60":1,"62":3,"63":1,"64":2,"65":1,"66":3,"67":5,"75":1,"81":2,"82":2,"92":2,"103":1}}],["↓",{"2":{"4":3,"5":3,"6":1,"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"20":1,"21":3,"22":6,"25":1,"27":3,"29":3,"30":1,"32":3,"33":3,"34":1,"35":1,"37":6,"39":2,"40":8,"41":3,"42":3,"44":1,"45":3,"46":4,"47":2,"50":2,"51":3,"52":1,"54":4,"55":2,"56":3,"58":2,"59":2,"60":1,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"68":1,"75":1,"81":2,"82":2,"92":2,"97":2,"103":1}}],["457345",{"2":{"92":1}}],["45015",{"2":{"92":1}}],["45354",{"2":{"92":1}}],["45×170×24",{"2":{"67":5}}],["456765",{"2":{"25":1}}],["414006",{"2":{"83":2}}],["4198",{"2":{"56":1}}],["41241",{"2":{"56":1}}],["41049",{"2":{"56":1}}],["41634",{"2":{"56":1}}],["417937",{"2":{"22":1}}],["48367",{"2":{"56":1}}],["48",{"2":{"50":2,"92":1}}],["480",{"2":{"21":2,"42":1}}],["405317",{"2":{"92":1}}],["409244",{"2":{"92":1}}],["40",{"2":{"40":2}}],["400731",{"2":{"92":1}}],["400",{"2":{"25":1,"82":1,"96":1,"98":1}}],["44",{"2":{"37":1,"41":3}}],["49909",{"2":{"56":1}}],["4947",{"2":{"56":1}}],["492817",{"2":{"27":1}}],["497189",{"2":{"22":1}}],["4326",{"2":{"60":1}}],["43254",{"2":{"56":1}}],["4325",{"2":{"51":1,"52":1}}],["432286",{"2":{"22":1}}],["435994",{"2":{"27":1}}],["475594",{"2":{"92":1}}],["475725",{"2":{"27":1}}],["472308",{"2":{"22":1}}],["4×30",{"2":{"22":1}}],["4×3×7",{"2":{"21":1}}],["4×3×2",{"2":{"19":1}}],["46506",{"2":{"56":1}}],["465103",{"2":{"22":1}}],["46",{"2":{"35":1,"92":1}}],["463503",{"2":{"22":1}}],["427021",{"2":{"92":1}}],["426519",{"2":{"25":1}}],["42857",{"2":{"22":2}}],["42",{"2":{"11":3}}],["4",{"2":{"4":4,"5":4,"16":4,"17":4,"18":2,"19":2,"20":1,"21":8,"22":9,"27":1,"34":1,"35":1,"40":6,"51":2,"52":1,"53":1,"54":2,"55":2,"56":4,"82":3,"83":2,"92":3,"96":1,"98":1}}],["3d",{"0":{"107":1}}],["3hr",{"2":{"58":2,"103":3}}],["34818",{"2":{"56":1}}],["34832",{"2":{"56":1}}],["348362",{"2":{"25":1}}],["34549",{"2":{"56":1}}],["34218",{"2":{"56":1}}],["33565",{"2":{"56":1}}],["337926",{"2":{"25":1}}],["32876",{"2":{"92":1}}],["32555",{"2":{"56":1}}],["3252",{"2":{"51":1,"52":1}}],["32149",{"2":{"56":1}}],["3×3",{"2":{"47":1}}],["3×20",{"2":{"42":1}}],["384×192×251288",{"2":{"58":1}}],["3866",{"2":{"56":1}}],["38364",{"2":{"56":1}}],["3835",{"2":{"51":1,"52":1}}],["38",{"2":{"37":1,"66":3}}],["319698",{"2":{"92":1}}],["312",{"2":{"56":1}}],["31753",{"2":{"56":1}}],["3169",{"2":{"56":1}}],["3188",{"2":{"56":1}}],["31",{"2":{"37":2,"39":1,"40":1,"96":1,"97":2}}],["366",{"2":{"98":1}}],["366625",{"2":{"27":1}}],["365×1",{"2":{"97":1}}],["365",{"2":{"97":1,"98":4}}],["360748",{"2":{"92":1}}],["3600",{"2":{"37":1,"39":2}}],["363668",{"2":{"83":2}}],["36126",{"2":{"56":1}}],["36142",{"2":{"56":1}}],["36836",{"2":{"56":1}}],["369",{"2":{"40":1}}],["36",{"2":{"37":1,"39":2,"40":1,"54":1}}],["364288",{"2":{"25":1}}],["37",{"2":{"59":2,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"81":1}}],["372",{"2":{"56":1}}],["372761",{"2":{"22":1}}],["37878",{"2":{"56":1}}],["376135",{"2":{"22":1}}],["35700351866494",{"2":{"58":4,"103":2}}],["35432",{"2":{"56":1}}],["35483",{"2":{"56":1}}],["359",{"2":{"40":1,"58":2,"59":2,"62":3,"63":1,"64":2,"65":1,"68":2,"75":1,"81":1,"103":1}}],["35",{"2":{"10":1,"12":1,"13":1,"22":1,"29":1}}],["307f8f0e584a39a050c042849004e6a2bd674f99",{"2":{"60":1}}],["3069",{"2":{"56":1}}],["30018",{"2":{"56":1}}],["30142",{"2":{"56":1}}],["30113",{"2":{"56":1}}],["30×15×10",{"2":{"16":1}}],["30×10×15",{"2":{"10":1,"12":1,"13":1,"22":1,"29":1}}],["30",{"2":{"10":3,"12":1,"13":1,"14":2,"16":5,"22":5,"23":2,"26":2,"29":4,"30":2,"56":2,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"103":1}}],["395451",{"2":{"92":1}}],["391546",{"2":{"92":1}}],["39",{"2":{"10":1,"16":3,"18":1,"19":1,"33":1,"35":1,"37":1,"39":1,"40":1,"41":2,"56":1,"61":1,"62":1,"63":1,"73":1,"77":1,"85":2,"88":4,"97":3}}],["3",{"2":{"4":8,"5":8,"6":10,"10":1,"11":3,"12":3,"13":2,"16":4,"17":3,"18":1,"19":3,"20":1,"21":14,"22":6,"27":1,"29":3,"32":5,"34":1,"37":4,"41":4,"42":5,"46":1,"47":2,"50":2,"51":2,"56":31,"58":1,"59":1,"62":3,"64":2,"66":4,"67":5,"81":1,"82":3,"85":1,"92":3,"96":2}}],["zoom",{"2":{"107":1}}],["zopen",{"2":{"58":1,"83":1,"103":1}}],["zeros",{"2":{"82":3,"97":1}}],["z",{"2":{"4":2,"5":3,"6":2,"81":2}}],["zarray",{"2":{"83":1}}],["zarr",{"0":{"58":1,"76":1,"77":1,"102":1},"1":{"77":1},"2":{"0":1,"2":2,"4":2,"5":2,"6":2,"16":5,"17":1,"20":2,"23":1,"27":1,"47":1,"58":3,"76":5,"77":5,"80":3,"81":4,"82":6,"83":2,"85":4,"86":2,"95":2,"103":1}}],["xticklabelalign",{"2":{"96":1,"98":1}}],["xticklabelrotation",{"2":{"96":1,"98":1}}],["xlabel=",{"2":{"96":1,"98":1}}],["xdim",{"2":{"74":3}}],["xx",{"2":{"59":1,"63":1,"75":1,"81":1}}],["xc",{"2":{"50":2}}],["xarray",{"2":{"49":1,"50":1}}],["x26",{"2":{"22":12,"40":12}}],["x3c",{"2":{"22":12,"40":4,"85":1}}],["xyz",{"2":{"21":2}}],["xy",{"2":{"19":2}}],["xyt",{"2":{"19":2,"21":2}}],["xin",{"2":{"18":8,"19":11,"21":8,"22":3,"41":3}}],["xout",{"2":{"16":2,"18":6,"19":6,"21":2,"22":3}}],["x",{"2":{"4":2,"5":3,"6":2,"13":2,"26":1,"27":3,"41":4,"47":2,"50":2,"51":2,"52":1,"56":3,"60":1,"70":1,"83":2,"86":1,"92":3,"96":1,"97":6}}],["ndata",{"2":{"105":2,"106":1,"107":1}}],["ndays",{"2":{"97":4}}],["nlon",{"2":{"105":2,"106":1}}],["npy",{"2":{"96":2,"97":2}}],["nin",{"2":{"86":2}}],["ntr",{"2":{"86":1}}],["ntuple",{"2":{"86":4}}],["nthreads",{"2":{"85":2}}],["nvalid",{"2":{"85":1}}],["n",{"2":{"69":1,"85":3}}],["n256",{"2":{"56":1}}],["nan",{"2":{"50":2,"51":48,"52":48,"56":384}}],["name=cube",{"2":{"85":1}}],["named",{"2":{"63":1,"65":1,"66":1,"70":1,"74":1,"85":2,"93":1}}],["namedtuple",{"2":{"18":1,"20":1,"85":1,"86":3}}],["names",{"0":{"21":1,"32":1,"43":1,"45":1},"1":{"33":1,"44":1,"45":1},"2":{"29":2,"46":1,"53":1,"70":2,"85":2,"86":1}}],["namely",{"2":{"16":1,"17":1}}],["name",{"0":{"44":1},"2":{"2":1,"18":4,"20":1,"45":1,"50":4,"51":1,"56":1,"58":3,"59":4,"62":12,"64":8,"65":12,"66":12,"67":20,"73":1,"82":2,"85":6,"86":5,"92":1}}],["nc",{"2":{"50":2,"59":2,"63":2,"75":2,"78":2,"79":3,"85":6}}],["number",{"2":{"49":1,"54":1,"77":1,"79":1,"85":2,"86":1,"97":1}}],["numbers",{"2":{"10":1,"92":1}}],["nout",{"2":{"86":2}}],["normal",{"2":{"85":1,"107":1}}],["north",{"2":{"60":1}}],["nometadata",{"2":{"51":3,"52":2,"54":3,"55":1,"56":10}}],["november",{"2":{"59":1,"63":1,"75":1,"81":1}}],["nov",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["nonmissingtype",{"2":{"86":1}}],["none",{"2":{"40":2,"45":1,"46":1,"58":1,"81":1,"103":1}}],["non",{"2":{"23":1,"85":1,"86":1,"96":1}}],["now",{"2":{"16":3,"18":1,"22":1,"33":1,"35":1,"37":1,"42":1,"46":1,"51":1,"52":1,"54":1,"56":1,"82":2,"83":1,"89":1}}],["no",{"2":{"14":1,"21":1,"27":1,"36":1,"77":1,"79":1,"82":1,"85":1,"86":1}}],["notice",{"2":{"77":1}}],["notation",{"2":{"37":1,"67":1}}],["nothing",{"2":{"18":1,"19":1,"21":1,"51":2,"54":4,"55":2,"56":5,"86":1}}],["note",{"2":{"9":1,"13":1,"16":4,"18":1,"21":1,"22":1,"33":1,"40":1,"47":1,"51":1,"52":1,"59":1,"62":1,"82":1,"85":1,"86":1}}],["not",{"0":{"40":1},"2":{"0":1,"1":1,"13":1,"36":1,"40":3,"45":1,"46":2,"47":1,"50":1,"59":1,"74":1,"82":2,"85":3,"86":3}}],["neighbour",{"2":{"85":1}}],["neighboring",{"2":{"13":1}}],["near",{"2":{"58":2,"67":1,"103":1}}],["needed",{"2":{"85":1}}],["need",{"2":{"45":1,"83":1,"85":1,"86":1,"88":1}}],["next",{"2":{"41":1,"42":1,"53":1,"74":1,"89":2}}],["netcdf4",{"2":{"59":1}}],["netcdf",{"0":{"59":1,"78":1,"79":1},"1":{"79":1},"2":{"27":1,"47":1,"48":2,"59":4,"61":1,"63":2,"71":3,"75":2,"78":3,"79":2,"80":1,"85":3,"95":2}}],["necessary",{"2":{"16":1,"49":1,"50":1,"83":1,"86":4}}],["newdim",{"2":{"74":2,"85":1}}],["new",{"0":{"9":1},"2":{"10":1,"12":1,"16":1,"29":1,"32":1,"33":3,"48":1,"53":1,"72":1,"80":1,"81":1,"82":1,"85":5,"86":4,"88":6,"97":1}}],["bits",{"2":{"85":2}}],["big",{"2":{"70":1}}],["black",{"2":{"98":1}}],["blocks",{"2":{"85":1}}],["blosccompressor",{"2":{"77":1}}],["blue",{"2":{"60":1,"71":1}}],["bonito",{"2":{"107":1}}],["boundaries",{"2":{"86":1}}],["bounds",{"2":{"85":1}}],["bold",{"2":{"56":1}}],["bool=true",{"2":{"86":1}}],["bool=false",{"2":{"85":1,"86":1}}],["boolean",{"2":{"85":3}}],["bool",{"2":{"47":3,"86":6}}],["bwr",{"2":{"56":1}}],["b`",{"2":{"37":1}}],["broad",{"2":{"100":1}}],["broadcasts",{"2":{"86":1}}],["broadcast",{"2":{"51":1,"56":1}}],["broadcasted",{"2":{"16":2,"85":1,"86":1}}],["brown",{"2":{"98":1}}],["browser",{"2":{"89":1}}],["brightness",{"2":{"70":1,"71":1}}],["brings",{"2":{"86":1}}],["bring",{"2":{"34":1}}],["branch",{"2":{"58":1,"103":1}}],["bug",{"2":{"87":1}}],["bundle",{"2":{"71":1}}],["build",{"0":{"89":1},"2":{"32":1,"89":1}}],["but",{"0":{"40":1},"2":{"8":1,"16":2,"32":1,"33":2,"40":2,"45":1,"46":2,"59":1,"65":1,"66":1,"74":1,"85":2}}],["b",{"2":{"17":2,"18":1,"19":1,"20":1,"22":13,"45":2,"67":2,"85":3}}],["backgroundcolor=",{"2":{"107":1}}],["back",{"2":{"85":1}}],["backend",{"2":{"85":6}}],["backendlist",{"2":{"48":1,"85":1}}],["backend=",{"2":{"2":1,"16":2,"80":1,"81":1,"85":1}}],["based",{"0":{"102":1},"2":{"85":1,"86":1}}],["base",{"0":{"25":1},"2":{"4":4,"5":4,"6":2,"18":1,"20":1,"25":4,"29":3,"32":9,"33":6,"44":1,"45":5,"47":4,"51":1,"82":6,"86":1,"92":2}}],["by=",{"2":{"42":2,"85":2}}],["bytes",{"2":{"8":1,"9":1,"14":1,"16":3,"17":1,"18":1,"19":1,"21":3,"22":1,"25":1,"27":1,"33":3,"34":1,"37":1,"42":2,"47":2,"54":1,"65":2,"79":4,"82":1,"92":1}}],["by",{"0":{"4":1,"5":1},"2":{"2":1,"10":2,"14":1,"16":1,"22":1,"28":1,"29":1,"33":1,"36":1,"37":6,"40":2,"42":1,"49":1,"50":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"70":3,"72":1,"73":1,"74":2,"80":1,"83":2,"85":12,"86":6,"88":1,"89":1,"91":1,"97":1}}],["beware",{"2":{"99":1}}],["best",{"2":{"86":1,"101":1}}],["become",{"2":{"85":1}}],["because",{"2":{"1":1,"13":1,"14":1,"16":1}}],["before",{"2":{"82":1,"85":1,"89":1}}],["belonging",{"2":{"71":1}}],["belongs",{"2":{"22":1}}],["being",{"2":{"46":1}}],["been",{"2":{"40":1,"74":2,"83":1}}],["between",{"2":{"26":1,"27":1,"37":1,"39":1,"40":2,"67":1,"77":1,"79":1,"85":1}}],["begin",{"2":{"23":1}}],["be",{"2":{"0":5,"2":1,"3":1,"4":1,"13":1,"15":1,"16":2,"22":1,"24":1,"37":1,"40":1,"41":1,"42":2,"45":1,"46":1,"50":1,"58":2,"59":1,"60":1,"61":2,"62":1,"68":1,"70":1,"72":2,"74":2,"80":1,"81":1,"82":1,"85":23,"86":9,"88":1,"93":1,"94":1,"99":1,"103":1}}],["629872",{"2":{"92":1}}],["62639",{"2":{"83":2}}],["663392",{"2":{"92":1}}],["669125",{"2":{"83":2}}],["66729",{"2":{"83":2}}],["665723",{"2":{"25":1}}],["63291",{"2":{"92":1}}],["6326",{"2":{"60":1}}],["630988",{"2":{"92":1}}],["630526",{"2":{"83":2}}],["63006",{"2":{"56":1}}],["6378137",{"2":{"60":1}}],["69",{"2":{"58":1}}],["69085",{"2":{"56":1}}],["600",{"2":{"96":1,"98":1,"104":1,"105":1,"106":1}}],["607943",{"2":{"92":1}}],["60265",{"2":{"58":1,"103":1}}],["60918",{"2":{"56":1}}],["60175",{"2":{"56":1}}],["657324",{"2":{"92":1}}],["65105",{"2":{"56":1}}],["652339",{"2":{"25":1}}],["641411",{"2":{"92":1}}],["647058",{"2":{"92":1}}],["64976",{"2":{"56":1}}],["642",{"2":{"50":1}}],["645758",{"2":{"25":1}}],["6122",{"2":{"56":1}}],["61197",{"2":{"56":1}}],["611084",{"2":{"25":1}}],["619",{"2":{"51":1,"52":1}}],["617023",{"2":{"27":1}}],["671473",{"2":{"92":1}}],["671662",{"2":{"22":1}}],["678562",{"2":{"92":1}}],["673373",{"2":{"25":1}}],["672",{"2":{"21":1}}],["687891",{"2":{"27":1}}],["684389",{"2":{"22":1}}],["685454",{"2":{"22":1}}],["6×2",{"2":{"9":1}}],["6",{"2":{"2":6,"4":6,"5":6,"6":6,"8":4,"9":5,"16":8,"22":1,"34":1,"37":1,"58":1,"103":1}}],["1e8",{"2":{"86":1}}],["1f2",{"2":{"47":1}}],["191654",{"2":{"92":1}}],["1992",{"2":{"85":1}}],["1991",{"2":{"85":1}}],["1990",{"2":{"85":1}}],["195437",{"2":{"83":2}}],["1984",{"2":{"60":1}}],["1983",{"2":{"50":2,"54":1}}],["1980",{"2":{"50":2,"54":1}}],["193109",{"2":{"27":1}}],["197238",{"2":{"25":1}}],["19241",{"2":{"56":1}}],["192",{"2":{"19":1,"105":1}}],["19",{"2":{"16":16,"66":3,"67":5}}],["182827",{"2":{"92":1}}],["1851357399351781",{"2":{"97":1}}],["1850454989838767",{"2":{"97":1}}],["18507",{"2":{"92":1}}],["18583",{"2":{"56":1}}],["18892",{"2":{"56":1}}],["18434",{"2":{"56":1}}],["180×170",{"2":{"65":1}}],["180×170×24",{"2":{"59":1,"62":3,"64":2}}],["180",{"2":{"40":2,"60":1,"67":5,"105":1}}],["180ºe",{"2":{"40":1}}],["18",{"2":{"16":18}}],["148753",{"2":{"92":1}}],["1437",{"2":{"56":1}}],["145747",{"2":{"22":1}}],["14286",{"2":{"22":1}}],["14",{"2":{"16":20,"27":1}}],["13102300858571433",{"2":{"97":1}}],["1373199053065047",{"2":{"97":1}}],["1372",{"2":{"51":1,"52":1}}],["13068",{"2":{"92":1}}],["136",{"2":{"59":1,"63":1,"75":1,"81":1}}],["1363",{"2":{"51":1,"52":1}}],["13z",{"2":{"58":2,"103":1}}],["13205",{"2":{"27":1}}],["13",{"2":{"16":20,"27":1,"59":1,"63":1,"75":1,"81":1}}],["170",{"2":{"68":1}}],["179",{"2":{"60":1,"67":5}}],["17578125",{"2":{"60":2}}],["17593",{"2":{"22":1}}],["17434",{"2":{"56":1}}],["174934",{"2":{"25":1}}],["17852",{"2":{"56":1}}],["17863",{"2":{"56":1}}],["178603",{"2":{"22":1}}],["17647",{"2":{"56":1}}],["1762",{"2":{"51":1,"52":1}}],["17t00",{"2":{"50":2,"54":1}}],["172",{"2":{"47":1}}],["17",{"2":{"14":1,"16":22,"42":1,"66":1}}],["16t00",{"2":{"59":4,"62":6,"63":2,"64":4,"65":4,"66":6,"67":10,"75":2,"81":2}}],["16t12",{"2":{"50":2,"54":1}}],["1644",{"2":{"56":1}}],["16824",{"2":{"56":1}}],["16581",{"2":{"56":1}}],["166982",{"2":{"92":1}}],["16631",{"2":{"56":1}}],["166212",{"2":{"25":1}}],["16713",{"2":{"56":1}}],["167676",{"2":{"22":1}}],["16258",{"2":{"56":1}}],["169284",{"2":{"25":1}}],["16",{"2":{"10":1,"12":1,"13":1,"16":20,"22":1,"29":1,"59":2,"62":3,"63":1,"64":2,"65":4,"66":3,"67":5,"75":1,"81":1}}],["1578236499134987",{"2":{"97":1}}],["159",{"2":{"66":1}}],["15644",{"2":{"56":1}}],["15532",{"2":{"56":1}}],["151146",{"2":{"25":1}}],["152534",{"2":{"25":1}}],["15394",{"2":{"22":1}}],["15×10×30",{"2":{"16":1}}],["15×10",{"2":{"16":2}}],["15",{"2":{"10":1,"16":25,"22":6,"23":1,"27":4,"29":1,"30":1,"35":2,"42":1,"50":2,"92":1}}],["128",{"2":{"107":1}}],["128204",{"2":{"25":1}}],["12673714160438732",{"2":{"97":1}}],["125769",{"2":{"83":2}}],["12575",{"2":{"56":1}}],["1242",{"2":{"56":1}}],["121",{"2":{"47":1}}],["121947",{"2":{"22":1}}],["123",{"2":{"17":1,"21":2}}],["1200",{"2":{"104":1,"105":1,"106":1}}],["120997",{"2":{"22":1}}],["120",{"2":{"16":1}}],["12",{"2":{"8":4,"16":20,"27":1,"37":10,"39":3,"40":4,"59":2,"62":3,"63":1,"64":2,"65":2,"66":3,"67":5,"75":1,"81":1,"96":1,"97":2}}],["1=5",{"2":{"2":1}}],["11037641658890784",{"2":{"97":1}}],["1159916",{"2":{"79":1}}],["119937",{"2":{"92":1}}],["119",{"2":{"65":1}}],["1181",{"2":{"56":1}}],["113553",{"2":{"55":3}}],["112319",{"2":{"55":12}}],["114815",{"2":{"55":6}}],["11",{"2":{"2":6,"4":6,"5":6,"6":6,"8":1,"16":18,"27":1,"51":4,"52":4,"56":4,"59":2,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"81":1}}],["1",{"2":{"2":12,"4":19,"5":20,"6":22,"8":5,"9":3,"10":8,"11":3,"12":7,"13":5,"14":6,"16":24,"17":10,"18":9,"19":8,"20":5,"21":17,"22":34,"23":3,"25":1,"26":2,"27":6,"29":15,"30":4,"32":3,"33":3,"34":8,"35":8,"37":23,"39":10,"40":8,"41":15,"42":14,"44":1,"45":3,"46":1,"47":5,"50":4,"51":4,"52":2,"54":6,"55":10,"56":54,"58":4,"59":12,"62":12,"63":4,"64":8,"65":13,"66":18,"67":15,"68":4,"75":4,"81":11,"82":2,"83":2,"86":1,"92":11,"96":2,"97":5,"98":5,"103":3,"105":4,"106":2,"107":5}}],["10986528577255357",{"2":{"97":1}}],["10989",{"2":{"55":6}}],["1095",{"2":{"97":1}}],["10mb",{"2":{"85":2}}],["102816",{"2":{"83":2}}],["102333",{"2":{"83":2}}],["10850864324777372",{"2":{"97":1}}],["1083",{"2":{"56":1}}],["108696",{"2":{"55":6}}],["103704",{"2":{"55":3}}],["10×170×24",{"2":{"66":1}}],["10×10×24",{"2":{"66":2}}],["10×10×8",{"2":{"37":1}}],["10×10×12",{"2":{"37":1}}],["10×10×36",{"2":{"37":1}}],["10×10×5",{"2":{"32":1}}],["10×10",{"2":{"33":3,"34":1,"37":1}}],["10×15×20",{"2":{"41":1}}],["10×15",{"2":{"14":1,"22":2,"42":1,"92":1}}],["10×20×5",{"2":{"29":1}}],["100",{"2":{"40":7}}],["100622",{"2":{"27":1}}],["1000",{"2":{"0":1,"105":1,"106":1}}],["10x15",{"2":{"22":1}}],["101524",{"2":{"22":1}}],["10",{"2":{"2":14,"4":16,"5":18,"6":17,"10":3,"12":1,"13":1,"14":1,"16":21,"22":15,"23":3,"25":2,"27":4,"29":6,"30":2,"32":8,"33":12,"34":5,"35":4,"37":16,"39":10,"41":3,"42":2,"44":2,"45":4,"58":1,"59":2,"62":3,"64":2,"65":3,"66":6,"67":5,"81":2,"91":1,"92":3}}],["garbage",{"2":{"86":1}}],["gc",{"2":{"86":2}}],["gt",{"2":{"85":1,"86":3,"89":1}}],["gdalworkshop",{"2":{"60":1}}],["gdal",{"0":{"60":1},"2":{"60":1}}],["gb",{"2":{"58":1}}],["gn",{"2":{"58":1,"103":2}}],["gs",{"2":{"58":1,"103":2}}],["ggplot2",{"2":{"56":1}}],["github",{"2":{"50":2,"60":1,"87":1}}],["gives",{"2":{"22":1}}],["given",{"2":{"2":1,"22":2,"70":1,"72":1,"80":1,"85":6,"86":3,"92":1}}],["glob",{"2":{"85":1}}],["globalproperties=dict",{"2":{"86":1}}],["global",{"2":{"85":1,"86":1}}],["glmakie",{"2":{"42":2,"95":1,"103":2}}],["glue",{"2":{"8":1}}],["gradient",{"2":{"104":1,"105":1,"106":1,"107":1}}],["gradually",{"2":{"82":1}}],["grey25",{"2":{"107":1}}],["grey15",{"2":{"42":1,"56":1}}],["greenwich",{"2":{"60":1}}],["green",{"2":{"60":1,"71":1}}],["grouped",{"2":{"85":1}}],["groups",{"2":{"55":1}}],["groupby",{"0":{"51":1,"54":1},"1":{"52":1,"53":1,"55":1,"56":1},"2":{"48":1,"50":1,"51":6,"52":1,"53":1,"54":3,"55":3,"56":3,"85":1,"97":1}}],["group",{"0":{"48":1},"1":{"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1},"2":{"51":1,"53":1,"54":2,"71":1,"85":3}}],["grouping",{"2":{"42":2,"53":2}}],["grid=false",{"2":{"56":1}}],["grid",{"2":{"23":1,"70":1,"85":1}}],["gridchunks",{"2":{"2":3,"4":1,"5":1,"6":1,"85":1,"86":1}}],["go",{"2":{"89":2}}],["going",{"2":{"86":1}}],["good",{"2":{"56":1}}],["goal",{"2":{"21":1,"33":1,"49":1}}],["goes",{"2":{"16":2,"85":1,"86":1}}],["guide",{"2":{"10":2,"12":1,"13":1,"23":1,"29":3,"30":1}}],["gen",{"2":{"16":6}}],["general",{"0":{"100":1},"2":{"85":1,"94":1}}],["generated",{"2":{"59":1,"63":1,"75":1,"81":1,"86":1}}],["generate",{"2":{"16":2,"37":1,"39":1,"40":1,"85":1,"89":1}}],["generic",{"2":{"16":2,"18":1,"19":1,"21":1,"29":1,"85":1}}],["getting",{"0":{"90":1},"1":{"91":1,"92":1,"93":1}}],["gettarrayaxes",{"2":{"46":1}}],["getarrayinfo",{"2":{"86":1}}],["getaxis",{"2":{"34":1,"42":2,"85":1}}],["getloopchunks",{"2":{"86":1}}],["getloopcachesize",{"2":{"86":1}}],["getouttype",{"2":{"86":1}}],["getoutaxis",{"2":{"86":1}}],["getfrontperm",{"2":{"86":1}}],["gets",{"2":{"85":1,"86":1}}],["get",{"0":{"68":1},"2":{"10":1,"18":1,"32":1,"54":1,"64":1,"66":1,"68":1,"86":3,"92":1,"97":1,"103":1}}],["geoaxis",{"2":{"105":1,"106":1}}],["geometrybasics",{"2":{"103":1}}],["geomakie",{"2":{"95":1,"103":1,"105":2,"106":1}}],["geogcs",{"2":{"60":1}}],["geojson",{"0":{"60":1}}],["geotiff",{"0":{"60":1}}],["geo",{"2":{"1":1}}],["g",{"2":{"7":1,"10":1,"11":1,"13":1,"16":4,"23":1,"29":1,"51":26,"52":2,"53":2,"54":2,"55":1,"56":18,"68":1,"70":1,"73":1,"85":5,"103":2}}],["2π",{"2":{"96":1}}],["2×3",{"2":{"92":1}}],["2×2×3",{"2":{"4":1,"5":1,"6":1}}],["2×2",{"2":{"2":3,"47":1}}],["2x2l31",{"2":{"59":1,"63":1,"75":1,"81":1}}],["2963860",{"2":{"79":1}}],["298",{"2":{"60":1}}],["29816",{"2":{"56":1}}],["29473",{"2":{"56":1}}],["29564",{"2":{"56":1}}],["271921",{"2":{"92":1}}],["2747",{"2":{"56":1}}],["273",{"2":{"54":1}}],["276",{"2":{"54":2}}],["270",{"2":{"54":1}}],["27",{"2":{"51":1,"52":1,"56":1}}],["275×205×9",{"2":{"51":4}}],["275×205×36",{"2":{"50":2}}],["275",{"2":{"50":2}}],["2f0",{"2":{"47":1}}],["284649",{"2":{"92":1}}],["28422753251364",{"2":{"58":4,"103":2}}],["28008",{"2":{"56":1}}],["2894",{"2":{"56":1}}],["288",{"2":{"54":1}}],["2818",{"2":{"51":1,"52":1}}],["28",{"2":{"37":1,"51":3,"52":3,"56":3}}],["28571",{"2":{"22":2}}],["2857142857142857",{"2":{"10":1,"12":1,"13":1,"14":1,"22":3,"29":2,"30":1,"35":1,"41":3,"42":1,"92":1}}],["2d",{"2":{"19":5,"20":3,"21":2}}],["263789",{"2":{"92":1}}],["26274",{"2":{"56":1}}],["268675",{"2":{"27":1}}],["265797",{"2":{"25":1}}],["26",{"2":{"16":2,"58":2,"103":1}}],["253963",{"2":{"92":1}}],["257223563",{"2":{"60":1}}],["25153",{"2":{"56":1}}],["25",{"2":{"16":4,"26":2,"37":1,"96":1}}],["24375",{"2":{"56":1}}],["2434",{"2":{"56":1}}],["241882",{"2":{"25":1}}],["24",{"2":{"16":6,"42":1,"65":2}}],["240",{"2":{"14":1,"16":1,"27":1}}],["230869",{"2":{"92":1}}],["23",{"2":{"16":8,"41":3,"56":1,"59":2,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"81":1}}],["223412",{"2":{"92":1}}],["22211",{"2":{"56":1}}],["225542",{"2":{"27":1}}],["22",{"2":{"16":10}}],["21t06",{"2":{"58":2,"103":1}}],["21t19",{"2":{"46":4}}],["2101",{"2":{"58":2,"103":1}}],["21699",{"2":{"56":1}}],["21209",{"2":{"56":1}}],["215973",{"2":{"27":1}}],["21",{"2":{"16":12,"51":8,"52":8,"56":8}}],["2=10",{"2":{"2":1}}],["2",{"2":{"2":3,"4":8,"5":9,"6":10,"8":1,"9":1,"11":3,"12":2,"13":1,"14":1,"17":1,"18":2,"19":2,"20":1,"22":9,"23":1,"25":2,"27":3,"29":1,"32":3,"33":6,"34":3,"37":1,"40":6,"42":6,"45":4,"46":1,"47":8,"51":1,"52":1,"56":40,"58":3,"59":3,"62":6,"63":1,"64":4,"65":2,"66":2,"67":5,"68":2,"75":1,"81":2,"82":2,"85":2,"92":5,"103":3,"105":2,"107":1}}],["2003",{"2":{"59":1,"63":1,"75":1,"81":1}}],["2004",{"2":{"59":1,"63":1,"75":1,"81":1}}],["2005",{"2":{"59":2,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"81":1}}],["2002",{"2":{"59":3,"62":3,"63":2,"64":2,"65":2,"66":3,"67":5,"75":2,"81":1}}],["2001",{"2":{"59":3,"62":3,"63":2,"64":2,"65":3,"66":3,"67":5,"75":2,"81":1}}],["2000",{"2":{"26":1}}],["2019",{"2":{"58":2,"103":1}}],["2015",{"2":{"58":2,"59":1,"63":1,"75":1,"81":1,"103":2}}],["205",{"2":{"50":2}}],["20×10×15",{"2":{"41":2}}],["20×10×15×2",{"2":{"35":1,"92":1}}],["20ºn",{"2":{"40":1}}],["203714",{"2":{"27":1}}],["2023",{"2":{"96":1,"97":2}}],["2021",{"2":{"37":9,"96":1,"97":2,"98":1}}],["2020",{"2":{"37":5,"39":3,"40":4,"46":8,"72":1}}],["2024",{"2":{"26":1}}],["2022",{"2":{"10":4,"12":2,"13":2,"14":2,"16":8,"17":4,"18":2,"20":2,"21":6,"22":6,"23":2,"29":6,"30":2,"37":5,"39":3,"40":4,"98":1}}],["20",{"2":{"2":7,"4":10,"5":10,"6":10,"16":14,"29":2,"35":4,"40":2,"41":3,"42":1,"56":1,"81":2,"92":3}}],["5173",{"2":{"89":1}}],["514979",{"2":{"22":1}}],["527401",{"2":{"83":2}}],["52419",{"2":{"56":1}}],["55",{"2":{"97":1}}],["553602",{"2":{"92":1}}],["558193",{"2":{"83":2}}],["551732",{"2":{"22":1}}],["5743",{"2":{"56":1}}],["57873",{"2":{"56":1}}],["57695",{"2":{"56":1}}],["57143",{"2":{"22":2}}],["56632",{"2":{"56":1}}],["540514",{"2":{"27":1}}],["59212",{"2":{"56":1}}],["59085",{"2":{"56":1}}],["594514",{"2":{"25":1}}],["595405",{"2":{"22":1}}],["5×4",{"2":{"83":2}}],["5×4×5",{"2":{"82":1}}],["5×4×3",{"2":{"21":2}}],["5×4×3×2",{"2":{"17":1,"18":1}}],["5×6×36",{"2":{"37":1}}],["5×6",{"2":{"27":2}}],["5×10",{"2":{"25":2}}],["508557",{"2":{"22":1}}],["50089",{"2":{"56":1}}],["500",{"2":{"0":1,"56":1,"107":2}}],["500mb",{"2":{"0":2}}],["536094",{"2":{"92":1}}],["536399",{"2":{"22":1}}],["531649",{"2":{"92":1}}],["53",{"2":{"65":1}}],["538981",{"2":{"22":1}}],["582329",{"2":{"92":1}}],["58548",{"2":{"92":1}}],["580668",{"2":{"92":1}}],["5843",{"2":{"51":1,"52":1}}],["581312",{"2":{"25":1}}],["58",{"2":{"16":2}}],["5",{"2":{"2":7,"4":16,"5":18,"6":7,"10":2,"12":3,"13":2,"14":1,"16":6,"17":2,"21":4,"22":10,"23":1,"25":2,"27":4,"29":5,"30":1,"32":4,"34":1,"35":2,"37":3,"39":4,"41":3,"42":2,"45":4,"56":5,"59":4,"62":6,"63":2,"64":4,"65":3,"66":10,"67":10,"68":24,"75":2,"81":4,"82":6,"83":3,"92":2,"93":1,"98":2,"107":2}}],["rotate",{"2":{"107":1}}],["row",{"2":{"73":1,"85":1}}],["rowgap",{"2":{"56":1}}],["right",{"2":{"96":1,"98":1}}],["rights",{"2":{"83":1}}],["r",{"2":{"82":1}}],["rlon",{"2":{"74":2}}],["rlat",{"2":{"74":2}}],["r1i1p1f1",{"2":{"58":2,"103":3}}],["running",{"2":{"89":1}}],["run",{"2":{"23":1,"89":3,"94":2}}],["runs",{"2":{"13":1,"86":1}}],["ram",{"2":{"61":1}}],["race",{"2":{"59":1}}],["rafaqz",{"2":{"50":1}}],["raw",{"2":{"50":1,"60":1}}],["rasm",{"2":{"50":2}}],["ras",{"2":{"26":3}}],["rasters",{"2":{"26":2}}],["raster",{"0":{"26":1},"2":{"22":11,"26":3}}],["ranges",{"0":{"66":1},"2":{"34":1,"63":1}}],["range",{"2":{"10":2,"16":2,"17":2,"22":2,"23":2,"29":2,"35":3,"37":1,"86":1,"92":3,"96":1}}],["randn",{"2":{"96":1}}],["random",{"2":{"17":2,"40":2,"46":3,"92":1}}],["rand",{"2":{"2":1,"4":3,"5":3,"6":3,"8":2,"9":2,"10":1,"17":1,"19":1,"21":3,"22":1,"23":1,"25":1,"26":1,"27":1,"29":2,"30":1,"32":1,"33":2,"35":2,"40":3,"42":1,"44":1,"45":3,"81":1,"83":1,"92":2}}],["remaining",{"2":{"74":1}}],["removes",{"2":{"86":1}}],["remove",{"2":{"52":1}}],["removed",{"2":{"15":1,"86":1}}],["remote",{"2":{"0":1}}],["relational",{"2":{"70":1}}],["related",{"2":{"50":1}}],["recommend",{"2":{"93":1}}],["recommended",{"2":{"67":1}}],["rechunking",{"2":{"86":1}}],["recalculate",{"2":{"86":1}}],["recal",{"2":{"86":1}}],["recently",{"2":{"0":1}}],["reentrantlock",{"2":{"59":1}}],["rewrote",{"2":{"58":1,"59":1,"63":1,"75":1,"81":1,"103":1}}],["realization",{"2":{"59":1,"63":1,"75":1,"81":1}}],["realm",{"2":{"58":1,"103":1}}],["readcubedata",{"0":{"62":1},"2":{"40":2,"61":1,"62":1,"85":1}}],["read",{"0":{"57":1,"58":1,"59":1,"60":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1},"2":{"1":1,"40":1,"57":1,"60":1,"66":1,"85":1}}],["red",{"2":{"56":1,"60":1,"71":1}}],["reduce",{"2":{"10":1,"14":1,"19":1}}],["reverse",{"2":{"56":1}}],["reverseordered",{"2":{"9":1,"60":1,"92":1}}],["rename",{"2":{"45":1}}],["resets",{"2":{"85":1,"86":1}}],["respectively",{"2":{"71":1}}],["reshape",{"2":{"37":1,"39":2}}],["result",{"2":{"34":1,"42":1}}],["resulting",{"2":{"8":1,"9":1,"14":1,"85":1,"86":1}}],["results",{"0":{"98":1},"2":{"2":1,"5":1,"56":2,"85":1,"86":1}}],["referencing",{"2":{"51":1}}],["references",{"2":{"59":1,"63":1,"75":1,"81":1}}],["reference",{"0":{"84":1},"1":{"85":1,"86":1},"2":{"46":1}}],["ref",{"2":{"35":1,"85":1,"86":1}}],["rebuild",{"0":{"33":1},"2":{"32":1,"33":2,"46":2,"50":1}}],["repeat",{"2":{"96":1}}],["repl",{"2":{"91":1,"94":1}}],["replace",{"2":{"23":1,"50":2,"107":1}}],["repository",{"2":{"87":1,"99":1}}],["reports",{"2":{"87":1}}],["rep",{"2":{"50":2}}],["reproduces",{"2":{"49":1}}],["represented",{"2":{"85":1,"101":1}}],["represents",{"2":{"71":1}}],["representing",{"2":{"22":2,"86":1}}],["representation",{"2":{"1":1,"85":2,"86":3}}],["re",{"2":{"22":1}}],["registry",{"2":{"94":1}}],["registration",{"2":{"86":2}}],["registered",{"2":{"86":1,"94":1}}],["regions",{"2":{"22":8}}],["region",{"2":{"22":12}}],["regular",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":3,"16":9,"17":3,"18":3,"19":2,"20":2,"21":9,"22":8,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":4,"41":9,"42":3,"44":1,"45":5,"47":4,"50":4,"51":2,"52":2,"56":6,"58":2,"59":4,"60":2,"62":6,"63":2,"64":4,"65":2,"66":3,"67":10,"68":3,"75":2,"81":5,"82":6,"92":5,"97":1,"103":1}}],["regularchunks",{"2":{"2":6,"4":3,"5":3,"6":3}}],["returned",{"2":{"85":1}}],["returns",{"2":{"85":5,"86":2}}],["return",{"2":{"18":1,"19":1,"21":2,"22":4,"51":1,"85":1,"86":1,"97":1}}],["requests",{"2":{"87":1}}],["requested",{"2":{"13":1}}],["requirements",{"2":{"59":1,"63":1,"75":1,"81":1}}],["required",{"2":{"37":1}}],["requires",{"2":{"16":1}}],["http",{"2":{"89":1}}],["https",{"2":{"50":2,"59":1,"60":1,"63":1,"71":1,"75":1}}],["html",{"2":{"71":1}}],["hdf5",{"2":{"59":1}}],["hr",{"2":{"58":1,"103":2}}],["history",{"2":{"58":2,"59":2,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"81":1,"103":1}}],["hidedecorations",{"2":{"56":1}}],["highclip",{"2":{"56":4}}],["high",{"2":{"46":4}}],["hm",{"2":{"56":8}}],["hold",{"2":{"85":1}}],["holds",{"2":{"85":1,"86":1}}],["ho",{"0":{"46":1}}],["however",{"2":{"24":1,"37":1}}],["how",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"94":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"6":1,"7":1,"10":1,"17":2,"18":1,"24":1,"28":1,"31":1,"42":1,"51":1,"57":1,"62":3,"83":1,"85":1,"99":1,"101":1}}],["happens",{"2":{"86":1}}],["had",{"2":{"83":1,"85":1,"86":1}}],["hard",{"2":{"62":1}}],["hamman",{"2":{"49":1,"56":1}}],["handled",{"2":{"86":1}}],["handle",{"2":{"70":1,"86":1}}],["handling",{"2":{"9":1,"85":1}}],["handy",{"2":{"42":1}}],["has",{"2":{"8":1,"9":1,"22":1,"26":1,"27":1,"40":1,"49":1,"52":1,"86":1}}],["half",{"2":{"8":5}}],["have",{"2":{"6":1,"9":1,"22":1,"29":1,"38":1,"40":2,"51":1,"72":1,"74":2,"85":3}}],["having",{"2":{"1":1,"22":1}}],["help",{"2":{"85":1,"86":2}}],["height",{"2":{"58":2,"74":2,"103":1}}],["heatmap",{"0":{"104":1},"2":{"42":1,"56":3,"104":1}}],["hereby",{"2":{"22":1}}],["here",{"2":{"8":1,"9":1,"13":1,"16":2,"17":1,"21":1,"22":1,"36":1,"42":1,"66":1,"82":1,"88":2}}],["hence",{"2":{"1":1}}],["yet",{"2":{"85":1}}],["yeesian",{"2":{"60":1}}],["years",{"2":{"37":1,"96":1,"97":1}}],["year",{"2":{"8":4,"98":1}}],["yyyy",{"2":{"59":2,"63":2,"75":2,"81":2}}],["ylabel=",{"2":{"96":1,"98":1}}],["ylabel",{"2":{"56":3}}],["yc",{"2":{"50":2}}],["yasxa",{"2":{"40":6}}],["yaxcolumn",{"2":{"86":1}}],["yaxconvert",{"2":{"27":2}}],["yaxdefaults",{"2":{"86":1}}],["yaxarraybase",{"2":{"27":1,"85":1,"86":1}}],["yaxarray",{"0":{"11":1,"17":1,"29":1,"36":1,"37":1,"47":1,"64":1,"70":1},"1":{"18":1,"19":1,"20":1,"37":1,"38":1,"39":1,"40":1},"2":{"2":1,"4":4,"5":4,"6":4,"7":1,"8":3,"9":3,"10":2,"12":1,"13":1,"14":2,"16":8,"17":2,"18":1,"19":2,"20":1,"21":6,"22":3,"23":1,"25":4,"26":2,"27":5,"29":5,"30":2,"32":3,"33":5,"34":1,"35":3,"36":1,"37":15,"39":4,"40":6,"41":3,"42":4,"44":2,"45":4,"46":4,"47":4,"50":2,"51":7,"52":1,"54":9,"55":1,"56":3,"58":2,"59":2,"60":1,"62":3,"63":2,"64":2,"65":3,"66":3,"67":5,"70":1,"72":1,"75":1,"76":1,"78":1,"81":2,"82":4,"85":10,"86":3,"92":5,"97":2,"101":1,"103":1}}],["yaxarrays",{"0":{"0":1,"1":1,"2":1,"7":1,"10":1,"16":1,"24":1,"28":1,"43":1,"48":1,"57":1,"63":1,"75":1,"87":1,"94":1,"100":1,"101":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1,"8":1,"9":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"25":1,"26":1,"27":1,"29":1,"30":1,"44":1,"45":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"68":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"88":1,"89":1},"2":{"0":3,"2":1,"4":1,"5":1,"6":1,"8":3,"9":3,"10":4,"16":6,"17":3,"22":3,"23":4,"24":2,"25":1,"29":3,"32":1,"33":1,"35":3,"36":1,"37":1,"38":1,"39":2,"40":4,"44":1,"45":1,"46":4,"48":3,"51":2,"54":2,"55":1,"56":1,"57":1,"58":1,"59":1,"60":2,"63":1,"69":1,"71":1,"74":3,"75":1,"80":1,"82":1,"85":28,"86":28,"87":1,"89":1,"91":3,"92":5,"93":2,"94":4,"97":3,"99":1,"100":1,"103":1}}],["yax",{"2":{"0":1,"8":3,"9":3,"10":2,"16":11,"17":3,"18":1,"19":1,"20":3,"21":5,"22":2,"23":2,"29":2,"33":1,"35":2,"37":1,"39":1,"40":1,"46":5,"47":2,"48":1,"51":4,"54":1,"74":18,"85":1,"92":2,"97":2}}],["y",{"2":{"4":2,"5":3,"6":2,"26":1,"27":3,"37":4,"41":4,"50":2,"51":2,"52":1,"56":3,"60":1,"70":1,"92":3}}],["you",{"2":{"1":1,"23":1,"36":1,"40":3,"45":2,"61":1,"62":1,"74":4,"77":1,"85":1,"86":2,"88":1,"89":2,"91":2,"93":1,"94":3,"99":3,"101":2}}],["yourself",{"2":{"89":1}}],["your",{"2":{"1":2,"40":2,"59":1,"74":3,"80":2,"82":1,"85":1,"88":4,"89":4}}],["circshift",{"2":{"105":1}}],["ct1",{"2":{"103":4,"104":1}}],["cycle",{"0":{"96":1,"98":1},"1":{"97":1,"98":1},"2":{"97":4}}],["cycle=12",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["cdata",{"2":{"86":1}}],["center",{"2":{"85":1,"96":1,"98":1}}],["certain",{"2":{"63":2,"86":1}}],["cell",{"2":{"58":2,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"85":1}}],["cf",{"2":{"58":2,"59":2,"63":2,"75":2,"81":2,"103":2}}],["cftime",{"2":{"50":6,"51":2,"54":7,"55":2,"56":2,"59":6,"62":9,"63":3,"64":6,"65":7,"66":9,"67":15,"75":3,"81":3}}],["cmpcachmisses",{"2":{"86":1}}],["cm4",{"2":{"59":4,"63":4,"75":4,"81":4}}],["cmip",{"2":{"58":1,"103":1}}],["cmip6",{"2":{"58":3,"103":6}}],["cmor",{"2":{"58":2,"59":3,"62":3,"63":2,"64":2,"65":3,"66":3,"67":5,"75":2,"81":2,"103":1}}],["c54",{"2":{"56":1}}],["cb",{"2":{"56":1}}],["cbar",{"2":{"42":1}}],["cgrad",{"2":{"42":1}}],["cl",{"2":{"105":1,"106":1}}],["cl=lines",{"2":{"105":1,"106":1}}],["clean",{"2":{"86":1}}],["cleanme",{"2":{"86":4}}],["cleaner",{"2":{"85":2}}],["clevel=n",{"2":{"77":1}}],["climate",{"2":{"59":1,"63":1,"75":1,"81":1}}],["clashes",{"2":{"51":1}}],["classes=classes",{"2":{"42":1}}],["classes",{"2":{"42":8}}],["classification",{"2":{"42":2}}],["class",{"2":{"42":3}}],["closedinterval",{"2":{"67":1}}],["closed",{"0":{"67":1},"2":{"67":3}}],["close",{"2":{"46":4}}],["cloud",{"2":{"11":1,"58":1}}],["clustermanagers",{"2":{"23":2}}],["cluster",{"2":{"23":1}}],["cpus",{"2":{"23":1}}],["cpu",{"2":{"23":1}}],["c",{"2":{"22":11,"32":5,"33":7,"34":3,"42":2,"45":2,"50":2,"71":1,"74":4,"77":1,"79":4,"85":6,"86":3,"97":4,"103":2}}],["custom",{"2":{"29":1,"85":1}}],["current",{"2":{"22":2,"71":1,"85":1,"98":1}}],["currently",{"2":{"16":1,"46":1,"50":1,"99":1}}],["cubeaxis",{"2":{"86":1}}],["cubeaxes",{"2":{"85":1}}],["cubedir",{"2":{"86":1}}],["cube2",{"2":{"85":1}}],["cube1",{"2":{"85":1}}],["cubelist",{"2":{"85":1}}],["cubefittable",{"2":{"42":2,"85":1}}],["cubetable",{"0":{"42":1},"2":{"42":3,"85":3}}],["cubes",{"0":{"35":1},"2":{"9":2,"17":1,"21":1,"35":2,"40":1,"41":2,"42":1,"64":1,"72":1,"85":18,"86":9}}],["cube",{"0":{"32":1,"34":1,"36":1,"72":1,"97":1},"1":{"33":1,"37":1,"38":1,"39":1,"40":1},"2":{"2":1,"4":1,"5":1,"6":1,"16":11,"17":2,"19":2,"21":2,"32":1,"34":1,"36":2,"40":1,"41":1,"42":2,"50":1,"72":3,"82":1,"85":34,"86":19,"101":1}}],["chose",{"2":{"71":1}}],["child",{"2":{"58":1,"103":1}}],["check",{"2":{"16":1,"82":1,"93":1}}],["changed",{"2":{"93":1,"99":1}}],["changes",{"2":{"62":1}}],["change",{"2":{"10":1,"85":1,"86":1}}],["chunkoffset",{"2":{"86":1}}],["chunksize`",{"2":{"86":1}}],["chunksizes",{"2":{"85":2}}],["chunksize",{"2":{"85":1,"86":3}}],["chunks",{"0":{"4":1},"2":{"2":5,"4":1,"5":1,"6":2,"85":4,"86":11}}],["chunked",{"2":{"2":5}}],["chunking",{"0":{"2":1,"3":1,"5":1,"6":1},"1":{"4":1,"5":1,"6":1},"2":{"1":1,"5":1,"85":4,"86":3}}],["chunk",{"0":{"1":1},"1":{"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"1":1,"2":1,"4":1,"5":1,"85":4,"86":4}}],["criteria",{"2":{"42":1}}],["creation",{"2":{"47":1}}],["creating",{"0":{"22":1},"2":{"10":1,"33":1,"37":1,"82":1,"88":1}}],["createdataset",{"2":{"86":2}}],["created",{"2":{"86":2}}],["creates",{"2":{"42":1,"85":2,"86":1}}],["create",{"0":{"28":1,"29":1,"30":1,"47":1},"1":{"29":1,"30":1},"2":{"10":1,"16":1,"22":2,"28":1,"29":1,"33":1,"35":1,"37":2,"42":1,"46":1,"54":1,"75":1,"80":1,"82":3,"85":1,"86":1,"92":1,"96":1}}],["crucial",{"2":{"1":1}}],["coastlines",{"2":{"105":3,"106":1}}],["cosd",{"2":{"85":1}}],["country",{"2":{"85":4}}],["country=cube2",{"2":{"85":1}}],["could",{"2":{"33":1,"46":1,"61":1}}],["copies",{"2":{"86":1}}],["copied",{"2":{"82":1}}],["copybuf",{"2":{"86":2}}],["copydata",{"2":{"86":1}}],["copy",{"2":{"32":1,"85":1,"89":1}}],["coordinates",{"2":{"50":2,"58":1}}],["college",{"2":{"99":1}}],["collected",{"2":{"86":1}}],["collectfromhandle",{"2":{"86":1}}],["collection",{"2":{"31":1,"70":1}}],["collect",{"2":{"25":1,"34":3,"97":1}}],["colonperm",{"2":{"86":1}}],["color=",{"2":{"98":3}}],["color",{"2":{"96":1,"105":1,"106":1,"107":1}}],["colormap=",{"2":{"56":1}}],["colormap=makie",{"2":{"42":1}}],["colormap",{"2":{"56":3,"104":1,"105":1,"106":1,"107":1}}],["colorrange=",{"2":{"56":1}}],["colorrange",{"2":{"56":3}}],["colorbar",{"2":{"42":1,"56":2}}],["column",{"2":{"73":1,"86":1}}],["colgap",{"2":{"56":1}}],["colnames",{"2":{"46":1}}],["configuration",{"2":{"86":2}}],["concatenating",{"2":{"85":1}}],["concatenates",{"2":{"85":2}}],["concatenate",{"0":{"35":1},"2":{"35":2,"85":2}}],["concatenatecubes",{"0":{"9":1},"2":{"9":2,"35":2,"85":2}}],["concrete",{"2":{"85":2}}],["contributing",{"2":{"88":1}}],["contribute",{"0":{"87":1,"88":1},"1":{"88":1,"89":2}}],["contrast",{"2":{"85":1}}],["content",{"2":{"85":1}}],["contact",{"2":{"59":1,"63":1,"75":1,"81":1}}],["contains",{"2":{"67":1,"85":1,"86":1}}],["contain",{"2":{"58":1,"59":1,"86":1}}],["containing",{"0":{"47":1},"2":{"8":1,"42":1,"71":1,"72":1,"85":1}}],["continue",{"2":{"51":1}}],["consolidated=true",{"2":{"58":1,"103":1}}],["constructor",{"2":{"85":1}}],["constructs",{"2":{"85":1}}],["construct",{"0":{"46":1},"2":{"85":2}}],["consistent",{"2":{"58":1,"103":1}}],["consisting",{"2":{"8":1}}],["considering",{"2":{"49":1}}],["considered",{"2":{"42":1}}],["consider",{"2":{"17":1,"19":1,"21":1,"33":1}}],["convinient",{"2":{"31":1}}],["conventions",{"2":{"59":1,"63":1,"75":1,"81":1}}],["convenience",{"2":{"51":1,"74":1}}],["convenient",{"2":{"23":1}}],["conversion",{"2":{"24":1,"26":1,"27":1}}],["conversions",{"2":{"24":1}}],["converted",{"2":{"72":1}}],["convert",{"0":{"24":1,"25":1,"26":1,"27":1},"1":{"25":1,"26":1,"27":1},"2":{"24":1,"25":2,"27":2,"85":1,"86":1}}],["corresponding",{"2":{"7":1,"21":2,"22":2,"72":1,"85":1}}],["combining",{"0":{"102":1}}],["combined",{"2":{"9":2,"72":2}}],["combine",{"0":{"7":1},"1":{"8":1,"9":1},"2":{"7":1,"8":1,"9":1,"101":1}}],["command",{"2":{"94":2}}],["comment",{"2":{"58":1}}],["common",{"2":{"40":5,"85":2}}],["com",{"2":{"50":2,"60":1}}],["compiler",{"2":{"93":1}}],["compuation",{"2":{"85":1}}],["computing",{"2":{"42":1}}],["computations",{"2":{"13":1,"41":1}}],["computation",{"0":{"23":1},"2":{"13":1,"70":1,"85":3,"86":3}}],["computed",{"2":{"86":1}}],["compute",{"0":{"10":1},"1":{"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"2":{"97":1}}],["compares",{"2":{"86":1}}],["comparing",{"2":{"79":1}}],["compatible",{"2":{"60":1}}],["compress",{"2":{"79":2}}],["compress=n",{"2":{"79":1}}],["compressors",{"2":{"77":1}}],["compressor=compression",{"2":{"77":1}}],["compression",{"0":{"77":1,"79":1},"2":{"77":5,"79":4}}],["completely",{"2":{"61":1}}],["complexity",{"2":{"41":1}}],["complex",{"2":{"10":2,"92":1}}],["comply",{"2":{"59":1,"63":1,"75":1,"81":1}}],["comes",{"2":{"1":1}}],["code",{"2":{"6":1,"13":1,"23":2,"31":1,"46":1,"59":2}}],["captialisation",{"2":{"86":1}}],["cameracontrols",{"2":{"107":1}}],["came",{"2":{"72":1}}],["cairomakie",{"2":{"56":1,"96":2}}],["caxes",{"2":{"32":2,"85":2}}],["car",{"2":{"22":1}}],["cartesianindex",{"2":{"22":11}}],["caluclate",{"2":{"85":1}}],["calculations",{"2":{"56":1,"86":1}}],["calculating",{"2":{"14":1,"85":1}}],["calculates",{"2":{"85":1}}],["calculated",{"2":{"42":2,"51":1}}],["calculate",{"2":{"14":1,"22":1,"42":2,"48":1,"49":2,"51":1,"56":1,"86":2,"97":1}}],["calling",{"2":{"56":1,"74":1}}],["called",{"2":{"16":1,"51":1,"70":3,"86":1}}],["call",{"2":{"1":1,"23":1}}],["case",{"2":{"13":1,"19":1,"40":1,"53":1,"58":1,"62":1}}],["cases",{"2":{"0":1,"61":1,"67":1,"99":1}}],["cataxis",{"2":{"85":2}}],["categoricalaxis",{"2":{"85":1}}],["categorical",{"2":{"9":1,"17":1,"18":1,"19":1,"22":1,"35":1,"42":1,"46":4,"51":2,"52":1,"53":1,"54":2,"55":2,"56":3,"85":1,"86":1,"92":1}}],["cat",{"0":{"8":1},"2":{"8":2}}],["cache=1gb",{"2":{"85":1}}],["cache=1e9",{"2":{"16":2}}],["cache=",{"2":{"85":1}}],["cache=5",{"2":{"85":1}}],["cache=5e8",{"2":{"80":1,"85":1}}],["cache=yaxdefaults",{"2":{"85":1}}],["caches",{"2":{"0":1}}],["cachesize",{"2":{"0":2,"86":1}}],["cache",{"2":{"0":6,"85":3,"86":7}}],["caching",{"0":{"0":1}}],["can",{"2":{"0":5,"2":1,"3":1,"13":2,"14":1,"16":3,"20":1,"22":1,"23":3,"29":2,"35":1,"36":1,"38":1,"40":1,"41":1,"42":2,"46":1,"52":1,"56":1,"58":2,"59":1,"60":1,"61":1,"68":1,"70":3,"71":2,"72":1,"74":2,"81":1,"82":1,"83":1,"85":13,"86":6,"88":1,"91":2,"94":2,"99":2}}],["msc",{"2":{"97":3,"98":2}}],["mscarray",{"2":{"97":2}}],["md",{"2":{"88":2}}],["mfdataset",{"2":{"85":5}}],["mpi",{"2":{"58":1,"103":2}}],["m",{"2":{"25":2}}],["miss",{"2":{"86":1}}],["missing",{"2":{"14":2,"16":6,"18":1,"21":1,"22":2,"41":1,"42":2,"59":12,"62":6,"64":4,"65":6,"66":6,"67":10,"82":3,"83":1,"85":2,"86":2,"107":1}}],["minimized",{"2":{"86":1}}],["minutes",{"2":{"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["might",{"2":{"24":1,"61":1,"99":1}}],["mix",{"2":{"21":2}}],["mm",{"2":{"20":3,"59":2,"63":2,"75":2,"81":2}}],["mymean",{"2":{"23":4}}],["my",{"2":{"16":2,"59":1}}],["mahecha",{"2":{"72":1}}],["manager",{"2":{"91":1}}],["manual",{"2":{"59":1}}],["many",{"0":{"18":1,"19":2},"2":{"18":2,"19":2,"20":4,"62":1,"70":1,"86":1}}],["mar",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["marketdata",{"2":{"46":2}}],["master",{"2":{"50":1,"94":1}}],["mask",{"2":{"42":2}}],["makie",{"2":{"56":1,"107":1}}],["making",{"2":{"11":1,"59":1,"63":1}}],["make",{"2":{"39":1,"40":2,"82":1,"85":1,"86":2,"89":1,"107":1}}],["main",{"2":{"36":1,"86":1}}],["machine",{"2":{"23":1,"70":1}}],["matching",{"2":{"92":1}}],["match",{"2":{"86":2}}],["matched",{"2":{"85":1}}],["matches",{"2":{"20":1}}],["mat",{"2":{"22":4}}],["matrix",{"2":{"16":2,"22":1,"25":1,"46":1,"52":1,"56":2,"70":1,"83":2,"97":1}}],["maximal",{"2":{"86":1}}],["maximum",{"2":{"41":1,"85":1,"86":1}}],["maxbuf",{"2":{"86":1}}],["max",{"2":{"16":2,"77":1,"79":1,"80":1,"85":8,"86":2}}],["maxsize",{"2":{"0":2}}],["may",{"2":{"10":1,"15":1,"51":4,"52":2,"53":1,"54":4,"55":4,"56":6,"58":1,"59":1,"93":1}}],["maps",{"0":{"103":1},"1":{"104":1}}],["mapslice",{"2":{"23":1}}],["mapslices",{"0":{"14":1},"2":{"10":1,"13":1,"14":1,"23":1,"41":1,"97":1}}],["mapped",{"2":{"85":1}}],["mapping",{"2":{"85":1,"86":3}}],["mapcube",{"0":{"15":1},"1":{"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1},"2":{"10":1,"13":1,"15":1,"16":4,"18":1,"20":1,"21":2,"22":2,"23":3,"85":5,"86":2}}],["map",{"0":{"13":1,"41":1},"2":{"10":1,"13":2,"21":1,"22":3,"23":3,"41":4,"42":1,"51":2,"55":1,"56":1,"85":2,"92":1,"97":2}}],["moll",{"0":{"106":1}}],["mowingwindow",{"2":{"85":1}}],["module",{"2":{"85":1}}],["model",{"2":{"59":1,"63":1,"71":2,"75":1,"81":1}}],["modification",{"2":{"11":1,"23":1}}],["modify",{"0":{"11":1}}],["monthday",{"2":{"97":4}}],["monthly",{"0":{"49":1}}],["month",{"2":{"37":7,"39":3,"40":4,"49":1,"51":4,"52":1,"53":1,"54":5,"55":2,"56":3,"85":1,"97":2}}],["moment",{"2":{"27":1}}],["movingwindow",{"2":{"21":1,"85":4}}],["more",{"2":{"9":1,"10":1,"36":1,"41":1,"42":1,"66":1,"67":1,"72":1,"77":1,"80":1,"85":3,"86":1,"92":1}}],["most",{"2":{"1":1,"15":1,"24":1}}],["mesh",{"2":{"107":2}}],["merely",{"2":{"82":1}}],["measured",{"2":{"71":1,"72":1}}],["measure",{"2":{"70":1}}],["measures",{"2":{"58":1}}],["means",{"0":{"49":1},"2":{"14":1,"85":1}}],["mean",{"0":{"96":1,"98":1},"1":{"97":1,"98":1},"2":{"10":1,"14":3,"23":4,"42":4,"51":10,"52":2,"53":1,"56":2,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"85":1,"97":5}}],["meter",{"2":{"58":1}}],["method",{"2":{"16":2,"18":1,"19":1,"21":1,"85":1}}],["methods",{"2":{"7":1,"23":1,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["metadata",{"2":{"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":3,"24":1,"25":1,"27":3,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"47":2,"50":2,"51":2,"52":1,"54":3,"55":2,"56":3,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"82":2,"85":1,"92":3,"97":1}}],["members",{"2":{"86":1}}],["member",{"2":{"6":1}}],["memory",{"0":{"61":1},"1":{"62":1},"2":{"1":1,"8":1,"10":1,"12":1,"13":1,"14":2,"16":3,"17":1,"18":1,"19":1,"21":3,"22":3,"24":3,"25":1,"27":1,"29":2,"32":1,"33":3,"34":1,"37":5,"40":4,"41":3,"42":3,"47":2,"50":3,"54":1,"61":1,"62":4,"70":1,"82":2,"85":2,"86":1,"92":2,"97":1}}],["multi",{"2":{"17":2,"21":2}}],["multiplying",{"2":{"41":1}}],["multiply",{"2":{"10":1,"41":1}}],["multiple",{"0":{"45":1,"102":1},"2":{"7":1,"21":1,"23":1,"58":1,"59":1,"70":1,"85":1}}],["must",{"2":{"0":1,"72":1,"85":1,"86":1}}],["mb",{"2":{"0":1,"50":2,"59":1,"62":3,"64":2}}],["pkg",{"2":{"91":2,"94":2,"95":8}}],["pkg>",{"2":{"89":1,"94":1}}],["purple",{"2":{"96":1}}],["purpose",{"2":{"31":1,"41":1}}],["pull",{"2":{"87":1}}],["public",{"0":{"85":1}}],["published",{"2":{"56":1}}],["pydata",{"2":{"50":1}}],["p",{"2":{"40":10,"59":1,"63":1,"75":1,"81":1}}],["picture",{"2":{"70":1,"71":1}}],["pieces",{"2":{"31":1}}],["pixel",{"0":{"96":1},"1":{"97":1,"98":1},"2":{"21":1,"23":2}}],["post=getpostfunction",{"2":{"85":1}}],["positions",{"2":{"86":2}}],["position",{"2":{"70":1}}],["positional",{"2":{"65":1,"66":1}}],["possible",{"2":{"23":2,"24":1,"35":1,"47":1,"82":1,"85":3,"86":1}}],["pos",{"2":{"22":2}}],["point3f",{"2":{"107":1}}],["point",{"2":{"22":3,"58":1,"92":1}}],["points",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":4,"16":9,"17":3,"18":3,"19":2,"20":3,"21":9,"22":16,"23":1,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":21,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"58":6,"59":6,"60":2,"62":9,"63":3,"64":6,"65":4,"66":9,"67":16,"68":3,"70":2,"71":1,"75":3,"81":6,"82":6,"92":5,"97":1,"103":3}}],["plt",{"2":{"104":1}}],["place",{"2":{"86":1}}],["please",{"2":{"59":1,"77":1}}],["plots",{"2":{"107":1}}],["plot",{"0":{"98":1,"104":1,"107":1},"2":{"56":2}}],["plotting",{"0":{"103":1},"1":{"104":1},"2":{"0":1,"95":1}}],["plus",{"2":{"18":3,"50":1,"85":1}}],["page",{"2":{"107":1}}],["paste",{"2":{"89":1}}],["pass",{"2":{"85":1}}],["passed",{"2":{"85":5}}],["passing",{"2":{"21":1,"85":3}}],["pair",{"2":{"86":1}}],["pairs",{"2":{"18":1,"20":1}}],["partitioned",{"2":{"86":1}}],["participate",{"2":{"85":1}}],["particular",{"2":{"73":1}}],["parts",{"2":{"85":1}}],["parent",{"2":{"58":1,"103":1}}],["parallelized",{"2":{"86":1}}],["parallelisation",{"2":{"85":1}}],["parallel",{"2":{"23":1,"70":1}}],["package",{"2":{"23":1,"66":1,"68":1,"84":1,"91":1,"95":1}}],["packages",{"2":{"16":1,"24":1}}],["paths",{"2":{"85":1,"86":2}}],["path=",{"2":{"16":2,"58":1,"76":1,"77":1,"78":1,"79":1,"80":2,"81":1,"82":1,"85":1,"86":1}}],["path=f",{"2":{"4":1,"5":1,"6":1}}],["path",{"0":{"20":1},"2":{"0":1,"20":1,"50":2,"58":3,"59":2,"60":2,"63":2,"75":2,"80":2,"85":3,"89":1}}],["pr",{"2":{"89":1}}],["println",{"2":{"79":1}}],["printed",{"2":{"46":2}}],["primem",{"2":{"60":1}}],["prior",{"2":{"1":1}}],["props",{"2":{"92":2}}],["properly",{"2":{"49":1}}],["properties=dict",{"2":{"86":1}}],["properties=properties",{"2":{"18":2}}],["properties",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"10":2,"17":2,"18":2,"19":1,"20":2,"21":2,"23":2,"29":3,"30":3,"50":1,"56":1,"58":1,"59":1,"60":1,"63":1,"75":1,"81":1,"85":5,"86":1,"103":1}}],["probably",{"2":{"86":1}}],["provide",{"2":{"85":1}}],["provides",{"2":{"70":1,"100":1}}],["provided",{"2":{"36":1,"82":1,"85":2}}],["process",{"2":{"70":1,"86":2}}],["processed",{"2":{"13":1}}],["projection",{"0":{"105":1,"106":1},"1":{"106":1,"107":1},"2":{"60":1}}],["progressmeter",{"2":{"85":1}}],["progress",{"2":{"50":1,"99":1,"101":1}}],["product",{"2":{"22":1}}],["pressed",{"2":{"94":1}}],["pressing",{"2":{"91":1}}],["pre",{"2":{"85":2}}],["previous",{"2":{"56":1,"80":1,"82":1,"85":1}}],["previously",{"2":{"42":1}}],["preferred",{"2":{"50":2}}],["prepared",{"2":{"59":1,"63":1,"75":1,"81":1}}],["prep",{"2":{"9":2}}],["precipitation",{"2":{"9":2,"71":1,"72":1,"92":2}}],["permute",{"2":{"86":1}}],["permuteloopaxes",{"2":{"86":1}}],["permutation",{"2":{"86":1}}],["persist",{"2":{"86":1}}],["persistend",{"2":{"86":1}}],["persistency",{"2":{"86":1}}],["persistent",{"2":{"85":1,"86":2}}],["persist=nothing",{"2":{"80":1,"85":1}}],["perform",{"2":{"86":1}}],["performed",{"2":{"13":2}}],["performing",{"2":{"10":1}}],["per",{"2":{"7":1,"14":1,"51":1,"54":1,"55":1}}],["=interval",{"2":{"67":2}}],["===",{"2":{"46":1}}],["==",{"2":{"12":1,"46":1,"97":1}}],["=>nan",{"2":{"107":1}}],["=>",{"2":{"10":2,"12":1,"13":1,"16":2,"17":2,"18":3,"19":2,"20":1,"21":2,"22":5,"23":1,"29":3,"30":3,"44":1,"45":1,"46":5,"50":15,"51":5,"52":1,"54":3,"55":2,"56":3,"58":20,"59":20,"60":1,"62":30,"63":10,"64":20,"65":30,"66":30,"67":50,"74":1,"75":10,"81":10,"92":6,"103":10}}],["=>2",{"2":{"4":1}}],["=>10",{"2":{"4":1}}],["=>5",{"2":{"4":1,"5":1}}],["=",{"2":{"0":5,"2":4,"4":9,"5":15,"6":9,"8":5,"9":5,"10":4,"11":1,"12":1,"13":1,"16":14,"17":4,"18":14,"19":7,"20":11,"21":12,"22":16,"23":5,"25":3,"26":5,"27":4,"29":5,"30":4,"32":1,"33":3,"35":6,"37":7,"39":6,"40":17,"42":7,"44":1,"45":3,"46":7,"47":4,"50":5,"51":16,"52":1,"53":1,"54":4,"55":1,"56":22,"58":2,"59":3,"60":2,"62":1,"63":2,"64":2,"65":6,"66":6,"67":3,"75":2,"77":2,"79":3,"81":2,"82":4,"83":5,"85":8,"86":7,"92":5,"96":10,"97":11,"98":5,"103":8,"104":5,"105":7,"106":5,"107":6}}],["dc",{"2":{"86":2}}],["dkrz",{"2":{"58":1,"103":2}}],["dufresne",{"2":{"59":1,"63":1,"75":1,"81":1}}],["due",{"2":{"53":1}}],["dummy",{"2":{"35":1,"37":1,"96":1,"97":1}}],["during",{"2":{"22":1,"23":1,"24":1}}],["dd",{"2":{"32":1,"85":4,"97":1}}],["d",{"2":{"22":5,"46":5,"56":3,"97":1}}],["drop",{"2":{"56":1}}],["dropdims",{"0":{"52":1},"2":{"51":2,"52":2,"56":1}}],["drivers",{"2":{"85":1}}],["driver",{"2":{"48":1,"80":1,"85":5}}],["driver=backend",{"2":{"80":1,"85":1}}],["driver=",{"2":{"4":1,"5":1,"6":1,"76":2,"77":1,"78":2,"79":1,"80":3,"81":1,"82":2,"85":5}}],["drei",{"2":{"19":2}}],["dash",{"2":{"98":1}}],["danger",{"2":{"80":1}}],["daysinmonth",{"2":{"51":1,"54":1}}],["days",{"2":{"49":1,"51":2,"53":1,"54":2,"55":2}}],["dayofyear",{"2":{"16":1}}],["day",{"2":{"10":2,"12":1,"13":1,"14":1,"16":4,"17":2,"18":1,"21":3,"22":3,"23":1,"29":3,"30":1,"96":1,"97":4,"98":1}}],["datconfig",{"2":{"86":2}}],["datset",{"2":{"85":1}}],["dat",{"2":{"85":8,"86":16}}],["datum",{"2":{"60":1}}],["datetime360day",{"2":{"59":6,"62":9,"63":3,"64":6,"65":7,"66":9,"67":15,"75":3,"81":3}}],["datetimenoleap",{"2":{"50":6,"51":2,"54":7,"55":2,"56":2}}],["datetime",{"2":{"20":1,"46":5,"58":2,"103":1}}],["date",{"2":{"10":5,"12":3,"13":3,"14":3,"16":12,"17":5,"18":3,"21":8,"22":11,"23":3,"29":8,"30":3,"37":24,"39":8,"40":11,"70":1,"74":2,"96":2,"97":5,"103":1}}],["datesid",{"2":{"97":2}}],["dates",{"2":{"10":2,"12":1,"13":1,"14":1,"16":5,"17":2,"18":1,"21":2,"22":3,"23":1,"29":3,"30":1,"37":8,"39":4,"40":5,"48":1,"51":1,"72":1,"96":1,"97":2,"103":1}}],["data=cube1",{"2":{"85":1}}],["databases",{"2":{"70":1}}],["dataframe",{"2":{"42":1,"85":1}}],["dataframes",{"2":{"42":1}}],["datacubes",{"2":{"85":1}}],["datacube",{"0":{"102":1},"2":{"42":2,"82":1,"85":1}}],["datatypes",{"2":{"36":1}}],["data1",{"2":{"35":2}}],["data3",{"2":{"30":1}}],["data2",{"2":{"29":2,"35":2}}],["datasetaxis",{"2":{"85":2,"86":1}}],["datasetaxis=",{"2":{"85":1,"86":1}}],["dataset",{"0":{"30":1,"36":1,"38":1,"39":1,"40":1,"43":1,"46":1,"71":1,"80":1,"81":1,"83":1},"1":{"37":1,"38":1,"39":2,"40":2,"44":1,"45":1},"2":{"0":3,"3":1,"4":4,"5":2,"6":3,"9":1,"10":1,"18":1,"20":2,"24":1,"30":2,"38":1,"39":3,"40":5,"44":2,"45":3,"46":5,"58":3,"59":3,"60":3,"63":3,"64":1,"71":3,"72":2,"74":1,"75":3,"76":1,"77":1,"78":1,"79":1,"80":3,"81":4,"82":2,"83":2,"85":20,"86":9,"103":2}}],["datasets",{"0":{"3":1,"28":1,"48":1,"57":1,"63":1,"75":1},"1":{"4":1,"5":1,"6":1,"29":1,"30":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"68":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1},"2":{"0":2,"24":1,"28":1,"40":1,"57":1,"61":1,"80":1,"85":9,"86":4,"101":1}}],["data",{"0":{"34":1,"50":1,"61":1,"72":1},"1":{"62":1},"2":{"0":3,"1":2,"7":1,"8":2,"9":1,"10":3,"11":1,"12":1,"13":1,"14":2,"16":9,"17":3,"18":1,"19":1,"21":6,"22":4,"23":2,"25":2,"26":1,"27":1,"29":2,"32":1,"33":3,"34":2,"35":1,"37":6,"39":1,"40":2,"41":3,"42":5,"50":4,"54":1,"58":3,"59":7,"62":6,"63":3,"64":4,"65":6,"66":6,"67":10,"69":1,"70":3,"71":2,"72":3,"75":3,"80":2,"81":3,"82":4,"83":1,"85":20,"86":12,"92":6,"93":1,"96":2,"97":2,"101":4,"103":5,"105":1}}],["dev",{"2":{"89":1}}],["dependencies",{"2":{"89":1}}],["depth",{"2":{"21":8,"74":2}}],["detect",{"2":{"85":1,"86":1}}],["determined",{"2":{"86":1}}],["determines",{"2":{"85":1}}],["determine",{"2":{"1":1,"62":1,"85":1}}],["deletes",{"2":{"80":1,"85":1}}],["delete",{"2":{"80":2,"82":1}}],["denoting",{"2":{"85":1}}],["dense",{"2":{"70":1}}],["denvil",{"2":{"59":2,"63":2,"75":2,"81":2}}],["degree",{"2":{"60":1}}],["degc",{"2":{"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["dec",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["defaultfillval",{"2":{"86":1}}],["defaults",{"2":{"85":7}}],["default",{"2":{"18":1,"79":3,"82":1,"85":1,"86":4}}],["definition",{"2":{"72":1}}],["definitions",{"2":{"17":1,"19":1}}],["defining",{"2":{"23":1}}],["defines",{"2":{"85":1}}],["defined",{"2":{"18":1,"26":1,"27":1,"42":1,"51":1,"56":1,"68":1,"70":1,"73":1,"74":1,"82":1,"92":1}}],["define",{"0":{"97":1},"2":{"16":2,"18":1,"37":1,"42":1,"56":1,"74":1,"85":2,"96":1}}],["deal",{"2":{"17":1}}],["dest",{"2":{"106":1}}],["desc",{"2":{"85":3,"86":3}}],["descriptor",{"2":{"86":4}}],["descriptors",{"2":{"85":2}}],["descriptions",{"2":{"85":1}}],["description",{"2":{"17":2,"19":2,"21":2,"36":1,"85":4,"86":11}}],["described",{"2":{"101":1}}],["describe",{"2":{"85":2}}],["describes",{"2":{"7":1,"10":1,"24":1,"28":1,"57":1,"67":1,"69":1,"84":1,"86":1}}],["describing",{"2":{"85":1}}],["designed",{"2":{"24":2,"70":1}}],["desired",{"2":{"16":1,"86":4}}],["demand",{"2":{"13":1}}],["diverging",{"2":{"56":1}}],["divided",{"2":{"41":1}}],["differing",{"2":{"85":1}}],["difference",{"2":{"56":1}}],["differences",{"2":{"46":1,"51":1,"56":1,"86":1}}],["different",{"0":{"21":1},"2":{"9":2,"16":1,"17":2,"23":1,"32":1,"33":1,"45":1,"49":1,"71":1,"85":3,"86":2,"99":1}}],["diff",{"2":{"51":2,"56":3}}],["directory",{"2":{"58":1,"76":2,"78":2}}],["directories",{"2":{"57":1,"86":1}}],["direct",{"2":{"46":1}}],["directly",{"2":{"16":1,"20":1,"27":1,"28":1,"29":1,"83":2}}],["dictionary",{"2":{"71":1,"85":3}}],["dict",{"2":{"4":1,"5":1,"8":1,"9":1,"10":2,"12":1,"13":1,"14":2,"16":5,"17":2,"18":3,"19":2,"20":1,"21":4,"22":4,"23":1,"25":1,"27":3,"29":4,"30":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"46":2,"47":2,"50":2,"51":3,"52":2,"54":4,"55":3,"56":3,"58":2,"59":2,"60":1,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"81":1,"82":1,"85":3,"92":3,"97":1,"103":1}}],["dime",{"2":{"58":1}}],["dimensionaldata",{"2":{"22":1,"27":2,"32":1,"33":1,"37":1,"39":1,"40":1,"46":1,"48":1,"50":1,"51":15,"52":10,"54":12,"55":5,"56":38,"66":1,"67":2,"68":3,"70":1,"73":1,"74":1,"93":3,"95":1,"97":1,"103":1}}],["dimensional",{"2":{"17":2,"19":2,"21":2,"69":1,"70":2,"85":1}}],["dimensions",{"0":{"39":1,"40":1,"73":1},"1":{"74":1},"2":{"9":1,"10":1,"13":1,"15":1,"16":2,"20":1,"21":1,"22":2,"23":1,"29":2,"33":1,"35":1,"38":1,"40":3,"41":2,"45":1,"51":16,"52":10,"54":11,"55":5,"56":38,"62":1,"63":1,"68":2,"70":3,"71":1,"74":2,"85":8,"86":3,"92":3,"93":1}}],["dimension",{"0":{"8":1,"9":1,"68":1},"2":{"2":1,"8":2,"9":1,"10":1,"14":2,"16":3,"18":1,"19":1,"22":3,"37":1,"40":1,"51":1,"52":1,"53":1,"56":1,"66":1,"68":1,"70":1,"72":1,"73":1,"74":4,"85":7,"86":3,"92":1}}],["dimvector",{"2":{"54":1,"85":1}}],["dimgroupbyarray",{"2":{"51":1,"54":1}}],["dimarray",{"0":{"27":1},"2":{"22":3,"27":6,"51":1,"52":1,"54":1,"55":2,"56":3,"68":1,"70":1,"85":2}}],["dims=2",{"2":{"97":1}}],["dims=",{"2":{"14":2,"23":1,"41":1,"51":5,"52":1,"54":1,"56":1}}],["dims",{"2":{"8":3,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":4,"25":1,"26":1,"27":2,"29":2,"32":3,"33":4,"34":1,"35":1,"37":5,"41":3,"42":3,"46":1,"47":2,"50":2,"51":6,"52":1,"54":5,"55":2,"56":5,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"68":1,"82":1,"92":2,"97":1}}],["dim",{"2":{"2":2,"4":7,"5":8,"6":2,"21":1,"22":1,"25":2,"27":2,"29":4,"32":9,"33":6,"34":3,"35":1,"40":1,"44":1,"45":5,"47":4,"51":2,"52":2,"56":6,"74":3,"81":3,"82":6,"85":1,"92":2}}],["disregard",{"2":{"86":1}}],["dispatch",{"2":{"86":1}}],["displayed",{"2":{"62":1}}],["discribe",{"2":{"85":2}}],["discussion",{"2":{"77":1}}],["distribute",{"2":{"23":1}}],["distributed",{"0":{"23":1},"2":{"0":1,"23":2}}],["diskarray",{"2":{"85":1}}],["diskarrays",{"2":{"2":9,"4":4,"5":4,"6":4,"85":2,"86":1}}],["disk",{"2":{"1":1,"16":1,"20":1,"27":1,"70":1,"82":3,"83":2,"85":1,"86":2}}],["dodgerblue",{"2":{"98":1}}],["documenter",{"2":{"107":1}}],["documentation",{"0":{"88":1},"1":{"89":1}}],["doc",{"2":{"80":1}}],["docstring",{"2":{"85":1}}],["docs",{"0":{"89":1},"2":{"71":1,"88":2,"89":6,"93":1}}],["don",{"2":{"77":1}}],["done",{"2":{"33":1,"41":1,"56":1,"61":1,"88":2}}],["double",{"2":{"50":2}}],["download",{"0":{"50":1},"2":{"50":1,"59":2,"60":2,"63":2,"75":2}}],["downloads",{"2":{"48":1,"50":1,"59":1,"60":1,"63":1,"75":1}}],["doing",{"2":{"23":1,"32":1,"34":1,"74":2,"89":1}}],["does",{"2":{"23":1,"82":1,"85":2,"86":1}}],["dot",{"2":{"21":1,"98":1}}],["do",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"46":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"1":1,"13":1,"16":1,"22":3,"23":1,"31":2,"41":1,"49":1,"56":1,"74":1,"82":1,"83":1,"86":1,"89":1,"91":1}}],["dsw",{"2":{"51":2,"56":2}}],["dsfinal",{"2":{"35":1,"41":2,"42":2}}],["ds2",{"2":{"35":3,"41":1,"81":1}}],["ds1",{"2":{"35":3,"41":3,"42":1}}],["dschunked",{"2":{"4":3,"5":3,"6":3}}],["ds",{"2":{"0":3,"4":2,"5":2,"6":2,"30":1,"39":2,"40":12,"44":1,"45":1,"46":2,"50":4,"51":10,"54":1,"56":3,"58":1,"59":2,"60":1,"62":3,"63":1,"64":2,"74":1,"75":1,"76":3,"77":2,"78":3,"79":7,"80":3,"81":2,"82":1,"83":5,"85":4,"86":1,"107":2}}],["wglmakie",{"2":{"107":2}}],["wgs",{"2":{"60":3}}],["would",{"2":{"85":2}}],["world",{"2":{"60":2}}],["workdir",{"2":{"86":1}}],["worker",{"2":{"85":1}}],["workers",{"2":{"85":1}}],["workflow",{"2":{"61":1}}],["workflows",{"2":{"1":1}}],["work",{"2":{"24":2,"50":1,"69":1,"85":1,"99":2,"101":1}}],["workload",{"2":{"23":1}}],["working",{"2":{"16":1,"83":1}}],["works",{"2":{"6":1,"34":1,"39":1,"40":1,"82":1}}],["written",{"2":{"85":1,"86":1}}],["writing",{"2":{"83":1}}],["writefac",{"2":{"86":1}}],["writefac=4",{"2":{"80":1,"85":1}}],["writes",{"2":{"85":1}}],["write",{"0":{"75":1,"76":1,"78":1},"1":{"76":1,"77":2,"78":1,"79":2,"80":1,"81":1,"82":1,"83":1},"2":{"82":1,"85":2}}],["wrapping",{"2":{"53":1,"68":2}}],["wrapped",{"2":{"16":1}}],["wrap",{"2":{"0":1,"85":1}}],["www",{"2":{"59":1,"63":1,"75":1}}],["w",{"2":{"56":2,"83":2}}],["was",{"2":{"20":1,"22":1,"23":1,"86":1}}],["way",{"2":{"15":1,"24":1,"32":1}}],["warning",{"2":{"11":1,"24":1,"32":1,"40":1,"45":1,"47":1,"50":1,"80":1,"82":1,"85":1}}],["wanted",{"2":{"86":1}}],["wants",{"2":{"82":1}}],["want",{"0":{"95":1},"2":{"0":1,"1":1,"61":1,"72":1,"74":2,"86":1,"89":1,"94":1,"101":1}}],["white",{"2":{"105":1,"106":1}}],["while",{"2":{"82":1}}],["which",{"2":{"9":1,"16":1,"22":2,"33":1,"40":2,"51":1,"56":1,"59":1,"62":1,"64":1,"67":1,"68":1,"72":3,"85":5,"86":4,"101":1}}],["what",{"2":{"51":1}}],["whose",{"0":{"39":1,"40":1}}],["whole",{"2":{"8":3}}],["whether",{"2":{"86":2}}],["when",{"2":{"1":1,"6":1,"13":1,"51":1,"62":1,"72":1,"74":1,"85":3,"86":1}}],["whereas",{"2":{"70":1}}],["where",{"2":{"0":1,"23":1,"40":4,"49":1,"67":1,"83":1,"85":1,"86":4}}],["wintri",{"0":{"105":1},"1":{"106":1,"107":1}}],["windowloopinds",{"2":{"86":1}}],["window",{"2":{"85":1,"86":1}}],["without",{"2":{"86":1}}],["within",{"2":{"66":1}}],["with",{"0":{"47":1},"2":{"4":1,"5":1,"8":1,"10":1,"12":1,"13":1,"16":7,"17":3,"18":2,"19":2,"21":3,"22":4,"23":2,"24":1,"29":3,"32":1,"33":1,"40":6,"41":2,"42":3,"45":2,"46":3,"47":1,"50":2,"51":4,"52":1,"54":2,"55":2,"56":5,"58":3,"59":2,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"69":1,"71":1,"75":1,"77":1,"79":1,"80":1,"81":2,"82":2,"83":1,"85":11,"86":1,"88":1,"92":4,"93":3,"99":1,"101":1,"103":2,"105":1}}],["will",{"2":{"0":1,"1":1,"4":1,"5":1,"13":1,"16":3,"17":2,"18":1,"19":1,"22":1,"36":1,"40":1,"41":2,"42":2,"45":2,"46":1,"48":1,"53":2,"59":1,"80":3,"82":3,"83":1,"85":12,"86":3,"101":1}}],["wether",{"2":{"85":1}}],["weight=",{"2":{"85":1}}],["weight=nothing",{"2":{"85":1}}],["weight",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"53":1,"55":1,"56":1}}],["weights",{"0":{"55":1},"2":{"51":3,"55":2,"56":1}}],["weightedmean",{"2":{"85":1}}],["weighted",{"0":{"56":1},"2":{"42":1,"49":1,"51":8,"56":8,"85":3}}],["well",{"2":{"42":1,"46":1,"82":1,"85":1}}],["welcome",{"2":{"6":1,"87":1}}],["were",{"2":{"13":2,"67":1,"86":1,"96":1}}],["we",{"2":{"0":1,"8":2,"9":1,"13":2,"14":1,"16":5,"17":3,"18":1,"19":1,"20":1,"22":5,"23":2,"29":2,"33":1,"35":1,"36":1,"37":1,"38":1,"40":2,"41":2,"42":5,"46":4,"51":3,"52":1,"53":2,"56":1,"58":1,"66":1,"72":1,"82":3,"83":4,"93":2,"96":1,"103":1}}],["oob",{"2":{"85":1}}],["o1",{"2":{"59":2,"63":2,"75":2,"81":1}}],["ocean",{"2":{"59":1,"63":1,"75":1,"81":1}}],["oct",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["occuring",{"2":{"4":1}}],["o",{"2":{"50":3,"56":4,"85":5}}],["ohlcv",{"2":{"46":3}}],["ouput",{"2":{"89":1}}],["our",{"2":{"41":1,"42":1,"97":1}}],["outcube",{"2":{"86":1}}],["outcubes",{"2":{"86":1}}],["outcs",{"2":{"86":1}}],["outsize",{"2":{"86":1}}],["outar",{"2":{"86":2}}],["out",{"2":{"50":1,"85":2,"86":1}}],["outtype",{"2":{"16":2,"85":1,"86":2}}],["outdims=outdims",{"2":{"22":1,"23":1}}],["outdims",{"0":{"17":1,"18":1,"19":1,"20":1},"1":{"18":1,"19":1,"20":1},"2":{"16":4,"18":12,"19":2,"20":11,"21":3,"85":6}}],["outputcube",{"2":{"86":3}}],["outputs",{"2":{"16":1,"18":2,"21":1}}],["output",{"2":{"6":1,"16":3,"17":1,"18":1,"22":1,"23":3,"59":1,"63":1,"75":1,"81":1,"85":11,"86":9,"107":1}}],["optimal",{"2":{"86":1}}],["optifunc",{"2":{"86":1}}],["optionally",{"2":{"85":1}}],["option",{"2":{"37":1,"39":1,"77":1}}],["options",{"2":{"34":1,"85":1}}],["operates",{"2":{"85":1}}],["operate",{"2":{"21":1,"74":1}}],["operation",{"2":{"21":1,"86":1}}],["operations",{"0":{"16":1},"2":{"10":1,"51":1,"85":2,"86":3}}],["operating",{"2":{"19":1}}],["opens",{"2":{"85":1}}],["openinterval",{"2":{"67":1}}],["open",{"0":{"67":1},"2":{"0":2,"18":1,"20":2,"46":4,"58":2,"59":2,"60":1,"63":2,"67":2,"75":1,"77":1,"81":1,"83":6,"85":7,"103":1}}],["obj",{"2":{"42":2,"96":1,"98":1}}],["objects",{"2":{"85":2}}],["object",{"2":{"11":1,"58":1,"85":5,"86":3}}],["obtain",{"0":{"34":1},"2":{"46":1,"53":1}}],["omit",{"2":{"23":1}}],["otherwise",{"2":{"85":1}}],["others",{"2":{"21":1,"46":1}}],["other",{"0":{"99":1},"1":{"100":1,"101":1,"102":1},"2":{"20":1,"24":1,"61":1,"99":1,"101":1}}],["overwrite=false",{"2":{"80":1,"85":1}}],["overwrite=true",{"2":{"16":2,"80":3,"82":3,"85":1}}],["overwrite",{"0":{"80":1},"2":{"80":1,"85":2,"86":2}}],["overview",{"0":{"100":1},"2":{"74":1,"99":1,"100":1}}],["over",{"0":{"16":1,"101":1},"2":{"10":1,"15":1,"21":1,"23":1,"56":1,"85":8,"86":1,"101":1}}],["orca2",{"2":{"59":1,"63":1,"75":1,"81":1}}],["orangered",{"2":{"42":1}}],["ordered",{"2":{"70":1,"71":1}}],["ordereddict",{"2":{"22":1,"85":1}}],["orderedcollections",{"2":{"22":1}}],["order",{"2":{"16":1,"49":1,"83":1}}],["original",{"2":{"59":2,"62":6,"64":4,"65":6,"66":6,"67":10}}],["originates",{"2":{"9":1}}],["origin",{"2":{"10":2,"12":1,"13":1,"23":1,"29":3,"30":1,"92":2}}],["or",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1},"2":{"1":2,"6":1,"10":1,"13":2,"15":1,"27":1,"33":1,"38":1,"47":2,"58":1,"61":1,"63":2,"70":3,"73":2,"74":9,"77":1,"80":1,"85":24,"86":7,"91":1,"92":2,"94":1}}],["once",{"2":{"56":1,"72":1,"86":1,"88":1}}],["onlinestat",{"2":{"85":2}}],["onlinestats",{"2":{"42":2}}],["only",{"2":{"6":1,"13":1,"14":1,"16":1,"20":1,"22":1,"24":1,"29":2,"41":1,"51":1,"59":1,"74":1,"82":1,"85":2}}],["on",{"2":{"1":2,"6":1,"7":1,"10":2,"13":2,"16":1,"23":2,"31":1,"59":2,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"70":1,"74":1,"75":1,"77":1,"81":1,"82":1,"85":5,"86":4}}],["ones",{"2":{"17":1,"33":1}}],["oneto",{"2":{"4":4,"5":4,"6":2,"25":2,"29":3,"32":9,"33":6,"44":1,"45":5,"47":4,"82":6,"92":2}}],["one",{"0":{"18":1,"44":1},"2":{"0":1,"7":1,"8":2,"14":2,"18":15,"19":5,"20":6,"21":2,"22":2,"42":1,"46":1,"52":1,"59":1,"70":2,"71":1,"82":2,"85":9,"86":3,"99":1}}],["own",{"2":{"0":1,"59":1,"74":1}}],["offline=true",{"2":{"107":1}}],["offsets",{"2":{"86":1}}],["offset",{"2":{"13":1}}],["often",{"2":{"7":1}}],["of",{"0":{"11":1,"40":1,"49":1,"83":1,"100":2},"2":{"0":2,"1":1,"6":1,"8":3,"9":1,"10":2,"11":1,"12":1,"13":2,"14":1,"15":1,"22":7,"23":3,"24":1,"26":1,"27":1,"31":3,"32":3,"36":1,"37":2,"38":1,"39":1,"40":2,"41":1,"42":1,"49":1,"50":1,"54":1,"59":1,"62":1,"63":3,"64":1,"66":1,"68":1,"70":7,"71":1,"72":2,"73":2,"74":1,"75":1,"81":1,"82":1,"83":1,"84":1,"85":53,"86":42,"92":1,"93":2,"97":2,"98":1,"99":1,"100":1}}],["eo",{"2":{"99":1}}],["esdltutorials",{"2":{"99":1}}],["esm1",{"2":{"58":1,"103":2}}],["eltype",{"2":{"92":1}}],["elementtype",{"2":{"86":1}}],["element",{"2":{"8":1,"9":1,"10":2,"13":2,"14":1,"16":3,"22":2,"34":1,"42":1,"51":2,"52":1,"53":1,"54":7,"55":2,"56":3,"65":2,"68":1,"71":1,"72":2,"85":1,"86":1,"97":1}}],["elements",{"0":{"11":1,"65":1},"2":{"8":1,"12":1,"13":2,"23":1,"63":1,"70":1,"85":1,"86":1}}],["empty",{"2":{"86":1}}],["embeds",{"2":{"85":1}}],["either",{"2":{"85":2}}],["error",{"2":{"80":1}}],["epsg",{"2":{"60":5}}],["et",{"2":{"59":1,"63":1,"72":1,"75":1,"81":1}}],["edu",{"2":{"59":1,"63":1,"71":1,"75":1}}],["equivalent",{"2":{"56":1,"68":1}}],["equally",{"2":{"0":1}}],["effectively",{"2":{"41":1}}],["env",{"2":{"89":1}}],["ensure",{"2":{"59":1}}],["enabling",{"2":{"29":1}}],["enter",{"2":{"91":1}}],["entire",{"2":{"22":1,"24":1,"76":1,"78":1}}],["entries",{"2":{"22":1,"46":1,"50":2,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"83":1,"85":1,"92":1}}],["entry",{"2":{"10":1,"12":1,"13":1,"16":2,"17":1,"18":1,"19":1,"21":1,"29":2,"51":2,"52":1,"54":2,"55":2,"56":3,"85":1,"88":3}}],["enumerate",{"2":{"22":2,"56":2}}],["end",{"2":{"13":1,"16":1,"18":1,"19":2,"21":2,"22":4,"23":2,"41":1,"51":2,"56":2,"59":1,"97":2,"107":1}}],["exist",{"2":{"85":1}}],["exists",{"2":{"80":1,"85":1,"86":1}}],["existing",{"0":{"8":1},"2":{"80":1,"81":1}}],["exportable=true",{"2":{"107":1}}],["exported",{"2":{"74":2}}],["expression",{"2":{"85":1}}],["experiment",{"2":{"59":3,"63":3,"75":3,"81":3}}],["explicitly",{"2":{"13":1,"33":1,"36":1,"51":1,"74":1,"86":1}}],["executes",{"2":{"85":1}}],["execute",{"2":{"23":1}}],["extension",{"2":{"85":2}}],["extended",{"2":{"16":1,"85":1,"86":2}}],["external",{"2":{"58":1,"103":1}}],["extracts",{"2":{"86":1}}],["extract",{"0":{"32":1},"1":{"33":1},"2":{"86":1}}],["extracted",{"2":{"21":1}}],["extra",{"2":{"23":1}}],["exactly",{"2":{"5":1,"34":1,"46":1}}],["examples",{"2":{"6":1,"34":2,"48":1,"59":1,"63":1,"75":1,"88":1}}],["example",{"2":{"0":1,"1":1,"5":1,"10":1,"17":1,"21":1,"23":2,"33":1,"39":1,"40":1,"41":1,"42":1,"49":1,"59":1,"61":1,"63":2,"70":2,"71":1,"72":1,"74":1,"75":2,"85":5,"86":1,"88":2,"92":2}}],["e",{"2":{"7":1,"8":1,"10":1,"11":1,"13":1,"22":2,"23":1,"26":1,"27":1,"29":1,"37":1,"59":1,"68":1,"70":1,"73":1,"80":1,"85":7,"86":1,"89":1,"92":1}}],["east",{"2":{"60":1}}],["easier",{"2":{"29":1,"63":1}}],["easily",{"2":{"0":1,"23":1}}],["easy",{"2":{"26":1,"27":1}}],["each",{"2":{"4":1,"5":1,"10":1,"13":1,"20":1,"22":5,"23":2,"41":2,"42":2,"49":1,"53":1,"62":1,"71":1,"73":1,"85":3,"86":3,"92":1}}],["everywhere",{"2":{"23":2}}],["every",{"2":{"0":1,"10":1,"13":1,"85":1}}],["features",{"2":{"100":1}}],["feel",{"2":{"77":1}}],["few",{"2":{"74":1}}],["feb",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["frame",{"2":{"101":1}}],["frames",{"2":{"70":1}}],["front",{"2":{"86":1}}],["from",{"0":{"32":1,"34":2,"46":1,"49":1},"1":{"33":1},"2":{"0":1,"8":1,"9":1,"24":1,"32":1,"33":1,"34":4,"40":3,"46":2,"51":1,"62":1,"67":1,"72":2,"83":1,"85":6,"86":6,"92":1,"97":1}}],["free",{"2":{"77":1}}],["frequently",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["fr",{"2":{"59":1,"63":1,"75":1,"81":1}}],["fallback",{"2":{"86":1}}],["falls",{"2":{"85":1}}],["false",{"2":{"18":1,"20":1,"47":1,"85":1,"86":1}}],["fails",{"2":{"85":1}}],["faq",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["faster",{"2":{"86":1}}],["fastest",{"2":{"1":1}}],["fast",{"2":{"1":1,"13":1}}],["f2mix",{"2":{"19":3}}],["f2",{"2":{"18":3}}],["f1",{"2":{"18":2,"19":1}}],["fu",{"2":{"86":1}}],["funtion",{"2":{"97":1}}],["fun",{"2":{"85":5}}],["functionality",{"0":{"100":1}}],["functions",{"2":{"10":2,"21":1,"70":2,"84":1,"85":1,"86":1}}],["function",{"0":{"42":1},"2":{"0":1,"1":1,"13":2,"15":1,"16":6,"17":1,"18":2,"19":2,"21":5,"23":6,"32":2,"35":1,"41":1,"42":1,"46":1,"48":1,"51":1,"53":1,"56":1,"61":1,"67":1,"82":1,"85":22,"86":12}}],["future",{"2":{"50":1}}],["further",{"2":{"13":1,"99":1}}],["flag",{"2":{"86":3}}],["flat",{"2":{"18":4,"19":2,"20":2}}],["float32",{"2":{"16":6,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"82":2,"83":4,"86":1}}],["float64",{"2":{"8":1,"9":1,"10":3,"12":3,"13":3,"14":4,"17":2,"18":2,"19":2,"20":2,"21":3,"22":9,"25":2,"27":4,"29":6,"30":2,"32":1,"33":3,"35":4,"41":12,"42":5,"46":2,"50":2,"51":3,"52":2,"55":3,"56":6,"58":4,"59":4,"60":2,"62":6,"63":2,"64":4,"65":2,"66":6,"67":10,"68":4,"75":2,"81":2,"85":1,"86":1,"92":7,"97":2,"103":2}}],["flexible",{"2":{"9":1,"15":1}}],["folder",{"2":{"89":1}}],["follow",{"2":{"89":1,"99":1}}],["follows",{"2":{"16":2,"19":1,"21":1,"51":2,"56":1,"83":1}}],["following",{"2":{"2":1,"5":1,"6":1,"16":1,"17":1,"18":1,"21":1,"23":1,"33":1,"48":1,"49":1,"50":1,"85":2,"86":4,"94":2,"95":1,"99":1}}],["found",{"2":{"85":1,"86":1}}],["fourth",{"2":{"59":2,"63":2,"75":2,"81":2}}],["fontsize=24",{"2":{"104":1}}],["fontsize=18",{"2":{"56":1}}],["font=",{"2":{"56":1}}],["forwarded",{"2":{"85":1}}],["forwardordered",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":3,"16":9,"17":4,"18":4,"19":3,"20":3,"21":9,"22":9,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":4,"37":14,"39":6,"40":10,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"58":6,"59":6,"60":1,"62":9,"63":3,"64":6,"65":4,"66":9,"67":15,"68":3,"75":3,"81":6,"82":6,"92":5,"97":1,"103":3}}],["force",{"2":{"85":1}}],["forcing",{"2":{"58":1,"103":1}}],["forms",{"2":{"85":1,"86":2}}],["format",{"2":{"77":1,"79":1,"80":1,"85":1,"97":1}}],["formal",{"2":{"72":1}}],["former",{"2":{"32":1}}],["for",{"0":{"6":1,"96":1},"1":{"97":1,"98":1},"2":{"0":2,"1":3,"4":1,"5":1,"6":1,"20":1,"22":4,"23":1,"37":1,"39":2,"40":2,"41":4,"42":6,"46":5,"50":1,"51":1,"54":1,"56":3,"59":2,"61":2,"62":1,"63":1,"67":1,"68":1,"70":4,"71":3,"72":1,"74":4,"75":1,"80":1,"81":1,"82":2,"85":20,"86":16,"95":1,"96":1,"97":2,"99":1}}],["f",{"2":{"2":2,"16":3,"85":1}}],["field",{"2":{"85":1}}],["fields",{"2":{"42":1,"85":1,"86":4}}],["figure=",{"2":{"98":1}}],["figure",{"2":{"56":2,"96":1,"98":1,"104":1,"105":1,"106":1,"107":1}}],["fig",{"2":{"42":3,"56":8,"96":1,"98":1,"104":2,"105":2,"106":2,"107":3}}],["filterig",{"2":{"97":1}}],["filter",{"2":{"85":2}}],["fillarrays",{"2":{"82":3}}],["fill",{"2":{"82":1,"85":1,"86":1}}],["fillvalue=",{"2":{"86":1}}],["fillvalue",{"2":{"50":6,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["filling",{"2":{"28":1,"29":1}}],["filename",{"2":{"50":2,"85":1}}],["files",{"0":{"102":1},"2":{"7":1,"57":1,"60":1,"85":5,"86":2,"89":1}}],["file",{"2":{"2":1,"7":1,"27":1,"40":1,"59":2,"79":3,"80":2,"82":1,"85":2,"88":4}}],["findaxis",{"2":{"86":1}}],["findall",{"2":{"22":1,"97":1}}],["find",{"2":{"36":1,"86":1,"99":1}}],["finalizer",{"2":{"86":1}}],["finalize",{"2":{"86":1}}],["finally",{"2":{"22":1,"85":1}}],["final",{"2":{"21":1,"22":1}}],["firstly",{"2":{"37":1}}],["first",{"2":{"8":4,"16":3,"18":1,"22":1,"42":1,"45":1,"56":1,"83":1,"85":4,"86":1,"88":1,"92":1,"103":1}}],["fitting",{"2":{"85":1}}],["fittable",{"2":{"85":2}}],["fitcube",{"2":{"42":2}}],["fitsym",{"2":{"85":4}}],["fits",{"2":{"24":1}}],["fit",{"2":{"1":1,"61":1,"70":1}}],["t=union",{"2":{"86":1}}],["typing",{"2":{"91":1}}],["typically",{"2":{"85":1}}],["type",{"2":{"33":1,"47":1,"50":2,"70":1,"72":1,"85":8,"86":3,"92":1,"93":1}}],["types",{"0":{"69":1},"1":{"70":1,"71":1,"72":1,"73":1,"74":1},"2":{"24":2,"26":1,"27":1,"47":1,"65":1,"71":1,"85":2,"93":1}}],["tutorial",{"2":{"99":2,"100":1,"101":1}}],["tutorials",{"0":{"99":1},"1":{"100":1,"101":1,"102":1},"2":{"67":1,"99":3}}],["turn",{"2":{"85":1}}],["tuple",{"2":{"2":3,"4":1,"5":1,"6":1,"18":1,"20":1,"51":2,"52":1,"54":5,"55":2,"56":4,"85":5,"86":1}}],["tbl",{"2":{"42":2}}],["target",{"2":{"86":1}}],["tab",{"2":{"85":4}}],["tables",{"2":{"101":1}}],["tableaggregator",{"2":{"85":1}}],["table",{"0":{"101":1},"2":{"42":2,"58":1,"59":2,"63":2,"74":2,"75":2,"81":2,"85":4,"86":1,"103":1}}],["tas",{"2":{"58":5,"103":5}}],["tair",{"2":{"50":2,"56":1,"85":1}}],["ta",{"2":{"46":3}}],["takes",{"2":{"85":4}}],["taken",{"2":{"40":2}}],["take",{"2":{"16":1,"85":1,"86":2,"89":1}}],["tip",{"2":{"93":1}}],["tidy",{"2":{"85":1}}],["ticks",{"2":{"70":1}}],["ticks=false",{"2":{"56":1}}],["tick",{"2":{"68":1,"73":1,"92":1}}],["tiff",{"0":{"102":1}}],["tif",{"2":{"60":2,"95":1}}],["title",{"2":{"56":1,"59":1,"63":1,"75":1,"81":1,"88":1}}],["ti",{"2":{"26":1}}],["time1",{"2":{"65":2}}],["timearray",{"0":{"46":1},"2":{"46":3}}],["time=1",{"2":{"92":1}}],["time=>cyclicbins",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["time=date",{"2":{"37":1}}],["time=at",{"2":{"37":1,"56":3}}],["time=between",{"2":{"37":1}}],["time",{"0":{"49":1,"74":1},"2":{"1":1,"7":1,"8":4,"9":3,"10":3,"12":1,"13":1,"14":7,"16":14,"17":2,"18":4,"19":1,"20":5,"21":10,"22":8,"23":5,"26":2,"29":3,"30":1,"35":2,"37":8,"39":4,"40":7,"41":4,"42":3,"46":5,"50":4,"51":21,"52":3,"53":2,"54":9,"55":3,"56":7,"58":4,"59":4,"62":6,"63":1,"64":4,"65":6,"66":6,"67":10,"70":2,"71":1,"74":4,"75":1,"81":1,"85":6,"92":4,"96":1,"97":4,"103":4}}],["timestamp",{"2":{"46":1}}],["timestep",{"2":{"42":1}}],["timeseries",{"2":{"46":3}}],["times",{"2":{"0":1}}],["treat",{"2":{"85":1}}],["treatment",{"2":{"85":1,"86":1}}],["treated",{"2":{"58":1}}],["tries",{"2":{"85":1}}],["translate",{"2":{"105":1,"106":1}}],["transformed",{"2":{"59":1,"63":1,"75":1,"81":1}}],["transformations",{"2":{"105":1}}],["transformation",{"2":{"22":1}}],["transform",{"2":{"22":2}}],["track",{"2":{"85":1}}],["true",{"2":{"12":1,"47":1,"61":1,"82":1,"85":3,"86":1,"107":1}}],["tesselation",{"2":{"107":1}}],["testrange",{"2":{"86":1}}],["test1",{"2":{"47":1}}],["test2",{"2":{"47":2}}],["test",{"2":{"17":4,"18":1,"19":3,"20":4,"21":4,"47":3,"86":1,"103":1}}],["terminal",{"2":{"89":1}}],["text",{"2":{"88":1}}],["tensors",{"2":{"70":1}}],["tell",{"2":{"36":1}}],["temporary",{"2":{"86":1}}],["temporal",{"2":{"41":1,"48":1,"70":1}}],["tempo",{"2":{"51":6,"54":4,"55":1}}],["temp",{"2":{"9":2}}],["temperature=temperature",{"2":{"40":1}}],["temperature",{"2":{"9":2,"40":4,"50":2,"56":2,"58":3,"59":2,"62":6,"64":5,"65":6,"66":6,"67":10,"70":1,"71":1,"72":1,"92":4}}],["tempname",{"2":{"2":1,"4":1,"5":1,"6":1}}],["tspan",{"2":{"16":1}}],["t",{"2":{"16":4,"37":1,"39":2,"40":2,"42":3,"59":1,"62":4,"64":2,"65":3,"66":3,"67":5,"77":1,"85":1,"86":2,"96":1,"97":1}}],["two",{"2":{"8":1,"9":1,"18":8,"19":4,"20":3,"21":2,"34":2,"35":1,"70":1,"86":1}}],["toghether",{"2":{"86":1}}],["together",{"2":{"46":1,"72":1}}],["touches",{"2":{"67":1}}],["tolerances",{"2":{"66":1}}],["tos",{"2":{"59":5,"62":6,"63":2,"64":4,"65":4,"66":3,"67":9,"68":2,"75":2,"76":2,"78":2,"81":1}}],["top",{"2":{"56":1}}],["too",{"2":{"40":1,"70":1,"85":1}}],["todo",{"2":{"21":1,"97":1}}],["toy",{"2":{"21":1,"82":1}}],["to",{"0":{"9":1,"18":1,"19":1,"43":1,"81":1,"87":1,"88":1,"94":1},"1":{"44":1,"45":1,"88":1,"89":2},"2":{"0":4,"1":4,"3":1,"4":1,"6":2,"7":1,"8":1,"9":1,"10":8,"12":1,"15":1,"16":2,"17":1,"18":2,"19":1,"20":4,"21":3,"22":2,"23":6,"24":3,"25":2,"27":3,"28":1,"31":2,"32":2,"34":3,"35":1,"37":2,"39":2,"40":6,"41":1,"42":1,"45":2,"46":2,"47":1,"48":1,"49":3,"50":2,"51":1,"52":1,"53":1,"56":1,"57":1,"58":3,"59":2,"61":1,"62":2,"63":3,"67":1,"68":1,"69":1,"70":5,"71":3,"72":2,"73":2,"74":2,"75":1,"76":2,"77":2,"78":2,"79":2,"80":1,"81":2,"82":4,"83":3,"85":48,"86":19,"88":2,"89":3,"93":2,"94":1,"99":1,"101":3,"103":2,"107":1}}],["though",{"2":{"82":1}}],["those",{"2":{"11":1,"24":1,"26":1,"27":1,"45":1,"71":1,"83":1}}],["through",{"2":{"85":5,"86":5,"91":1}}],["thrown",{"2":{"80":1}}],["three",{"2":{"36":1,"71":1,"96":1}}],["threaded",{"2":{"59":1}}],["threads",{"2":{"59":2,"85":2}}],["thread",{"2":{"23":1,"59":3}}],["than",{"2":{"24":1,"36":1,"41":1,"42":1}}],["that",{"2":{"0":1,"9":2,"10":1,"13":1,"16":5,"20":1,"21":1,"22":2,"23":1,"24":1,"33":1,"35":1,"38":1,"40":2,"42":1,"46":1,"47":1,"49":1,"52":1,"55":1,"59":2,"61":1,"68":1,"70":1,"71":2,"73":1,"74":1,"82":2,"85":13,"86":13,"99":1,"101":1}}],["things",{"2":{"31":1}}],["think",{"2":{"1":1}}],["thinking",{"2":{"1":1}}],["this",{"2":{"0":1,"1":1,"4":1,"7":1,"10":1,"13":2,"16":4,"17":1,"19":2,"22":3,"23":1,"24":1,"28":1,"31":1,"34":1,"39":1,"40":2,"41":2,"42":2,"45":1,"46":1,"49":1,"51":1,"53":2,"57":1,"58":1,"59":1,"61":1,"62":2,"67":1,"69":1,"72":1,"77":1,"83":2,"84":2,"85":7,"86":10,"88":1,"89":2,"100":1,"101":1}}],["they",{"2":{"46":4,"62":1}}],["their",{"0":{"39":1,"40":1},"2":{"38":1,"40":1,"47":1,"70":1,"85":3,"86":2}}],["then",{"2":{"21":2,"22":2,"33":1,"41":1,"46":1,"74":1,"82":1,"83":1,"89":2,"91":1}}],["thereby",{"2":{"85":1}}],["therefore",{"2":{"42":1,"93":1}}],["there",{"2":{"14":2,"21":1,"27":1,"34":1,"46":2,"62":1,"85":1}}],["theme",{"2":{"56":2}}],["them",{"2":{"7":1,"10":1,"36":1,"61":1,"74":1,"83":1,"85":1}}],["these",{"2":{"0":1,"6":1,"34":1,"36":1,"47":1,"68":1,"70":1}}],["the",{"0":{"32":1,"34":1,"42":1,"50":1,"97":1,"100":1},"1":{"33":1},"2":{"0":5,"1":4,"2":3,"4":1,"5":4,"6":4,"8":6,"9":3,"10":1,"11":1,"13":3,"14":2,"15":1,"16":12,"17":3,"18":5,"19":2,"20":3,"21":10,"22":14,"23":7,"24":2,"27":1,"29":3,"31":1,"32":3,"33":5,"34":3,"35":2,"36":2,"37":9,"39":3,"40":10,"41":3,"42":10,"45":1,"46":7,"48":2,"49":5,"50":2,"51":4,"52":1,"53":2,"54":2,"55":2,"56":9,"59":2,"61":3,"62":6,"63":1,"64":5,"65":3,"66":5,"67":6,"68":1,"69":1,"70":5,"71":4,"72":4,"74":4,"79":1,"80":3,"81":1,"82":10,"83":2,"85":122,"86":83,"87":1,"88":1,"89":6,"91":2,"92":6,"93":8,"94":5,"95":1,"96":1,"97":4,"99":6,"100":1,"101":5,"103":1}}],["switched",{"2":{"93":1}}],["syntax",{"2":{"93":1,"99":1}}],["system",{"2":{"89":1}}],["symbols",{"2":{"85":1}}],["symbol",{"2":{"10":1,"12":1,"13":1,"18":1,"20":1,"29":2,"46":5,"51":4,"52":2,"53":2,"54":5,"55":4,"56":6,"85":3,"86":1}}],["src",{"2":{"88":1}}],["sres",{"2":{"59":2,"63":2,"75":2,"81":2}}],["skipped",{"2":{"85":1}}],["skip",{"2":{"85":5}}],["skipmissing",{"2":{"23":1,"41":1}}],["skeleton=a",{"2":{"82":1}}],["skeleton=true",{"2":{"82":2}}],["skeleton=false",{"2":{"80":1,"85":1}}],["skeleton",{"0":{"82":1},"2":{"82":8,"83":4}}],["ssp585",{"2":{"58":1,"103":2}}],["snow3",{"2":{"42":1}}],["snippet",{"2":{"6":1}}],["small",{"2":{"31":1,"46":1}}],["slightly",{"2":{"99":1}}],["slicing",{"2":{"16":1}}],["slices",{"2":{"85":3}}],["slice",{"2":{"16":1,"103":4,"104":1}}],["slow",{"2":{"40":1,"85":1}}],["slurmmanager",{"2":{"23":1}}],["shinclude",{"2":{"89":1}}],["shdocs>",{"2":{"89":1}}],["shnpm",{"2":{"89":2}}],["shouldn",{"2":{"62":1}}],["should",{"2":{"37":1,"46":1,"50":1,"61":1,"62":1,"74":1,"85":3,"86":1,"88":1,"89":1,"94":1}}],["showprog",{"2":{"85":1}}],["shown",{"2":{"62":1,"85":1}}],["shows",{"2":{"56":1}}],["showing",{"2":{"46":1}}],["show",{"2":{"23":1,"83":1,"107":1}}],["shading=false",{"2":{"105":1,"106":1,"107":1}}],["shall",{"2":{"85":5,"86":1}}],["shares",{"2":{"40":1}}],["share",{"0":{"39":1,"40":1},"2":{"38":1,"40":1,"71":1,"85":1}}],["shared",{"2":{"4":1,"5":1,"6":1,"20":1,"30":1,"35":1,"39":2,"40":3,"44":1,"45":1,"46":2,"58":1,"59":1,"60":1,"63":1,"75":1,"81":1,"82":1,"103":1}}],["shape",{"2":{"6":1}}],["scene",{"2":{"107":3}}],["scenariomip",{"2":{"58":1,"103":2}}],["scenarios",{"2":{"17":1,"103":1}}],["scripts",{"2":{"89":1}}],["scope",{"2":{"85":1,"86":1}}],["scalar",{"2":{"58":1}}],["scattered",{"2":{"7":1}}],["sure",{"2":{"107":1}}],["surface",{"2":{"50":2,"56":2,"58":2,"59":2,"62":6,"64":5,"65":6,"66":6,"67":10,"105":1,"106":1}}],["such",{"2":{"62":1,"67":1,"85":1,"93":1}}],["subcubes",{"2":{"85":1}}],["subtype",{"2":{"70":1,"74":1,"86":1,"93":1}}],["subtables",{"2":{"42":1}}],["subsetextensions",{"2":{"86":1}}],["subsetcube",{"2":{"85":1}}],["subseting",{"2":{"68":1}}],["subsetting",{"0":{"37":1,"38":1,"39":1,"40":1},"1":{"39":1,"40":1},"2":{"58":1,"59":1,"86":1,"97":1}}],["subset",{"0":{"36":1},"1":{"37":1,"38":1,"39":1,"40":1},"2":{"37":5,"40":4,"63":1,"66":1,"85":1,"86":1,"103":1}}],["subsets",{"2":{"15":1,"73":1}}],["subsequent",{"2":{"17":1}}],["supposed",{"2":{"85":1}}],["support",{"2":{"27":1,"46":1}}],["supertype",{"2":{"26":1,"27":1}}],["summarysize",{"2":{"47":2}}],["sum",{"2":{"18":1,"19":1,"21":1,"22":2,"41":1,"51":4,"54":2,"55":4,"56":2}}],["suggestions",{"2":{"6":1}}],["s",{"2":{"10":1,"16":3,"18":1,"19":1,"21":2,"33":1,"35":1,"37":1,"39":1,"40":2,"56":7,"61":1,"63":1,"73":1,"82":1,"85":2,"86":1,"95":1,"97":1}}],["style",{"0":{"101":1}}],["st",{"2":{"93":1}}],["stdzero",{"2":{"85":1}}],["stock3",{"2":{"46":4}}],["stock2",{"2":{"46":4}}],["stock1",{"2":{"46":4}}],["stocks",{"2":{"46":7}}],["storing",{"2":{"71":1}}],["storage",{"2":{"11":1,"58":1}}],["stored",{"2":{"70":3,"86":2}}],["stores",{"2":{"70":1,"85":1}}],["store",{"2":{"0":1,"58":4,"70":1,"71":1,"103":2}}],["struct",{"2":{"85":1,"86":4}}],["structures",{"2":{"69":1}}],["structure",{"2":{"33":2,"46":1,"72":1}}],["strings",{"0":{"47":1}}],["string",{"2":{"8":1,"9":2,"10":1,"12":1,"13":1,"14":2,"16":5,"17":3,"18":4,"19":3,"20":1,"21":4,"22":6,"25":1,"27":3,"29":3,"32":1,"33":3,"34":1,"35":2,"37":5,"41":3,"42":3,"47":5,"50":2,"51":1,"52":1,"54":2,"55":1,"56":1,"58":2,"59":2,"60":1,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"80":1,"81":1,"82":1,"85":6,"86":4,"92":4,"97":1,"103":1}}],["stable",{"2":{"93":1}}],["stat",{"2":{"79":2}}],["status",{"2":{"62":2}}],["statistics",{"2":{"14":1,"23":1,"42":3,"48":1,"96":1}}],["standard",{"2":{"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["standards",{"2":{"58":1,"59":1,"63":1,"75":1,"81":1,"103":1}}],["stack",{"2":{"47":1}}],["started",{"0":{"90":1},"1":{"91":1,"92":1,"93":1}}],["start=12",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["start=december",{"2":{"51":3,"54":1}}],["start",{"2":{"10":1,"37":1,"77":1,"83":1}}],["still",{"2":{"8":1,"22":1,"71":1,"99":1}}],["step=3",{"2":{"51":2,"52":1,"54":2,"55":2,"56":3}}],["steps",{"2":{"10":1,"14":1,"56":1,"85":1,"89":1}}],["step",{"2":{"7":1,"14":1,"20":1,"41":2,"85":1,"86":2,"103":1}}],["sphere",{"0":{"107":1},"2":{"107":3}}],["spheroid",{"2":{"60":1}}],["split",{"2":{"85":1}}],["splitted",{"2":{"2":1}}],["special",{"2":{"65":1,"85":1,"86":1}}],["specifiers",{"2":{"86":1}}],["specifier",{"2":{"85":1}}],["specifies",{"2":{"85":3}}],["specified",{"2":{"85":8,"86":1}}],["specific",{"2":{"37":1,"74":1,"85":2}}],["specifying",{"2":{"85":2,"86":1}}],["specify",{"0":{"20":1},"2":{"17":1,"29":1,"85":1}}],["specs",{"2":{"58":1,"103":1}}],["spectral",{"2":{"56":1}}],["sparse",{"2":{"70":1}}],["spatio",{"2":{"41":1}}],["spatial",{"2":{"1":1,"14":1,"22":5,"23":1,"48":1,"70":1}}],["span",{"2":{"37":1,"96":1}}],["space",{"2":{"1":1,"16":1}}],["safe",{"2":{"59":2}}],["sampled",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"10":3,"12":3,"13":3,"14":3,"16":9,"17":3,"18":3,"19":2,"20":3,"21":9,"22":8,"25":2,"27":4,"29":9,"30":3,"32":9,"33":6,"34":2,"35":3,"37":14,"39":6,"40":10,"41":9,"42":5,"44":1,"45":5,"46":4,"47":4,"50":6,"51":3,"52":2,"54":3,"55":1,"56":7,"58":6,"59":6,"60":2,"62":9,"63":3,"64":6,"65":4,"66":9,"67":15,"68":3,"75":3,"81":6,"82":6,"92":5,"97":1,"103":3}}],["same",{"2":{"0":1,"2":1,"5":1,"6":1,"9":1,"16":1,"20":1,"21":1,"22":2,"26":1,"27":1,"33":2,"34":2,"35":1,"40":1,"45":1,"46":2,"61":1,"64":1,"65":1,"66":1,"70":1,"71":3,"72":2,"85":1,"86":1,"89":1}}],["saves",{"2":{"80":1,"85":1}}],["save",{"0":{"82":1},"2":{"12":1,"27":1,"45":1,"47":1,"76":2,"77":1,"78":2,"79":1,"82":1,"85":2}}],["savecube",{"2":{"2":1,"76":1,"78":1,"82":1,"85":2}}],["savedataset",{"2":{"4":1,"5":1,"6":1,"77":1,"79":1,"80":1,"81":1,"82":2,"85":1,"86":1}}],["saved",{"2":{"2":1,"11":1,"20":1,"79":1,"80":1}}],["saving",{"2":{"1":1,"4":1,"5":1,"6":1,"16":1}}],["serve",{"2":{"86":1}}],["series",{"0":{"49":1},"2":{"23":1}}],["sequence",{"2":{"70":1}}],["seaborn",{"2":{"104":1,"105":1,"106":1,"107":1}}],["searching",{"2":{"85":1}}],["search",{"2":{"85":1}}],["sea",{"2":{"59":3,"62":6,"63":1,"64":5,"65":6,"66":6,"67":10,"75":1,"81":1}}],["season",{"2":{"51":1,"54":2,"55":1}}],["seasons",{"0":{"51":1,"53":1,"56":1},"1":{"52":1,"53":1},"2":{"51":9,"54":1,"56":5,"74":1}}],["seasonal",{"0":{"49":1,"96":1,"98":1},"1":{"97":1,"98":1},"2":{"49":1,"55":1,"56":1,"96":1,"97":4}}],["sebastien",{"2":{"59":2,"63":2,"75":2,"81":2}}],["separate",{"2":{"85":1,"86":1}}],["separated",{"2":{"71":1}}],["separately",{"2":{"5":1,"22":1,"23":1}}],["sep",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["selected",{"2":{"86":1,"96":1}}],["select",{"0":{"63":1,"64":1,"65":1,"66":1},"1":{"64":1,"65":1,"66":1,"67":1,"68":1},"2":{"40":1,"63":1}}],["selectors",{"2":{"67":1}}],["selector",{"2":{"40":1,"66":1}}],["selection",{"2":{"40":2}}],["selecting",{"2":{"37":1,"39":1,"40":1}}],["seed",{"2":{"17":1,"21":2}}],["see",{"2":{"16":1,"18":1,"67":1,"74":1,"85":1,"93":1}}],["second",{"2":{"8":3,"18":1,"19":1,"85":1}}],["section",{"2":{"7":1,"10":1,"24":1,"28":1,"31":1,"46":1,"57":1,"69":1,"84":1}}],["setting",{"2":{"80":1,"85":1,"86":1}}],["sets",{"2":{"6":1,"50":1}}],["set",{"0":{"4":1,"5":1,"6":1},"2":{"4":1,"5":1,"19":2,"22":1,"58":1,"80":1,"85":1,"86":2,"89":1}}],["setchunks",{"2":{"1":1,"2":2,"3":1,"4":1,"5":1,"6":1,"85":1,"86":1}}],["several",{"0":{"16":1},"2":{"0":1,"16":1,"35":1,"38":1,"74":1}}],["significant",{"2":{"77":1}}],["sin",{"2":{"96":1}}],["sink",{"2":{"86":1}}],["since",{"2":{"62":1,"94":1}}],["single",{"0":{"96":1},"1":{"97":1,"98":1},"2":{"0":1,"7":1,"8":1,"59":1,"72":1,"76":1,"78":1,"85":6,"86":1}}],["simulate",{"2":{"46":1}}],["simplicity",{"2":{"96":1}}],["simply",{"2":{"23":1,"47":1,"83":1,"89":1,"94":1}}],["simple",{"2":{"16":1,"31":1,"92":1}}],["situations",{"2":{"1":1}}],["size=",{"2":{"105":1,"106":1,"107":1}}],["sizes",{"2":{"2":1,"85":2,"86":2}}],["size",{"2":{"0":1,"1":1,"4":1,"5":1,"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":2,"25":1,"27":1,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"41":3,"42":3,"50":2,"54":1,"56":1,"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5,"79":4,"82":1,"83":1,"85":3,"86":4,"92":3,"96":1,"97":2,"98":1,"104":1}}],["sosstsst",{"2":{"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["software",{"2":{"59":1,"63":1,"75":1}}],["sort",{"2":{"22":1}}],["so",{"2":{"2":1,"23":1,"36":1,"40":1,"85":1,"86":1}}],["source",{"2":{"0":2,"59":1,"63":1,"75":1,"80":1,"81":1,"85":25,"86":24}}],["sometimes",{"2":{"74":1,"82":1,"101":1}}],["some",{"0":{"40":1},"2":{"0":1,"11":1,"38":1,"40":1,"41":1,"46":2,"56":1,"85":1,"96":1,"105":1}}],["advance",{"2":{"62":1}}],["addargs",{"2":{"85":3,"86":1}}],["adds",{"2":{"70":2,"73":1}}],["addprocs",{"2":{"23":2}}],["addition",{"2":{"22":1,"24":1,"70":1}}],["additional",{"2":{"4":3,"5":3,"9":1,"16":1,"21":1,"40":10,"45":4,"46":4,"58":2,"81":3,"85":4,"86":3,"103":2}}],["added",{"2":{"15":1,"81":1,"85":1,"86":1}}],["add",{"2":{"6":1,"10":1,"12":1,"41":1,"59":1,"88":2,"91":2,"94":3,"95":4,"105":1}}],["again",{"2":{"80":1,"83":1}}],["agreement",{"2":{"56":1}}],["aggregation",{"2":{"23":1}}],["aggregate",{"2":{"22":1}}],["authority",{"2":{"60":5}}],["auto",{"2":{"18":1,"20":1,"85":1}}],["aug",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["api",{"0":{"84":1,"85":1,"86":1},"1":{"85":1,"86":1}}],["apr",{"2":{"51":4,"52":2,"53":1,"54":4,"55":4,"56":6}}],["appropriate",{"2":{"88":1}}],["approximated",{"2":{"86":1}}],["approx",{"2":{"85":1,"86":1}}],["approach",{"2":{"9":1,"51":1}}],["append=true",{"2":{"81":2}}],["append=false",{"2":{"80":1,"85":1}}],["append",{"0":{"81":1}}],["apply",{"0":{"41":1},"2":{"10":2,"13":1,"15":1,"21":1,"23":1,"56":1,"97":1}}],["application",{"2":{"21":1}}],["applications",{"2":{"0":1}}],["applies",{"2":{"13":1}}],["applied",{"2":{"0":1,"3":1,"4":1,"22":1,"85":2,"86":1}}],["air",{"2":{"50":2,"56":2,"58":3}}],["a3",{"2":{"30":4}}],["a2",{"2":{"29":1,"30":3,"59":2,"63":2,"75":2,"81":2,"92":1}}],["a1",{"2":{"29":1}}],["able",{"2":{"45":1}}],["abstractstring",{"2":{"85":1}}],["abstractdict",{"2":{"85":1,"86":3}}],["abstractdimarray",{"2":{"26":1,"27":1,"70":1}}],["abs",{"2":{"21":1}}],["about",{"2":{"1":2,"36":1,"66":1,"92":1,"100":1}}],["above",{"2":{"0":1,"5":1,"16":1,"82":1,"91":1}}],["atol",{"2":{"66":1}}],["atmosphere",{"2":{"59":1,"63":1,"75":1,"81":1}}],["atmos",{"2":{"58":1,"103":1}}],["attributes",{"2":{"56":1,"85":1,"86":1}}],["at",{"2":{"21":1,"22":4,"27":1,"40":1,"46":3,"56":1,"59":3,"62":3,"63":1,"64":2,"65":6,"66":7,"67":5,"71":1,"72":2,"75":1,"80":2,"81":1,"85":3,"86":2,"87":1,"88":2,"89":2,"92":1,"99":2}}],["after",{"2":{"14":1,"16":1,"60":1,"85":3}}],["asaxisarray",{"2":{"85":1}}],["assemble",{"2":{"92":1}}],["assessment",{"2":{"59":2,"63":2,"75":2,"81":2}}],["associated",{"2":{"85":1}}],["assign",{"0":{"43":1},"1":{"44":1,"45":1}}],["aspect=dataaspect",{"2":{"56":1,"104":1}}],["asked",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1}}],["as",{"2":{"5":1,"8":1,"9":1,"10":1,"12":1,"16":6,"17":1,"18":1,"19":1,"21":1,"22":2,"23":2,"26":1,"27":2,"29":1,"33":2,"34":1,"35":1,"40":1,"42":1,"46":3,"48":1,"51":2,"56":1,"58":1,"59":1,"60":1,"61":1,"64":1,"67":1,"68":1,"70":1,"73":1,"74":1,"82":1,"83":1,"85":12,"86":3,"92":1,"93":1,"97":1,"101":1,"103":1}}],["axs",{"2":{"56":9}}],["ax",{"2":{"42":1,"96":3,"98":3,"104":1,"105":3,"106":3,"107":5}}],["axlist",{"2":{"10":2,"17":2,"19":1,"21":4,"22":2,"23":2,"29":2,"30":1,"35":3,"86":5,"92":3}}],["axessmall",{"2":{"86":2}}],["axes",{"0":{"32":1,"34":1},"1":{"33":1},"2":{"4":4,"5":4,"6":1,"20":1,"29":1,"30":1,"32":2,"33":1,"34":2,"37":2,"39":5,"40":13,"44":1,"45":5,"46":8,"58":3,"59":1,"60":1,"63":2,"70":2,"75":1,"81":4,"82":1,"85":15,"86":11,"92":1,"97":2,"103":3}}],["axislegend",{"2":{"98":1}}],["axis=false",{"2":{"107":1}}],["axis=",{"2":{"96":1}}],["axisdescriptor",{"2":{"86":1}}],["axisdesc",{"2":{"85":3}}],["axis",{"0":{"4":1},"2":{"4":1,"9":2,"16":3,"34":1,"37":1,"39":1,"40":7,"46":1,"56":1,"60":2,"68":1,"73":1,"82":1,"85":16,"86":14,"92":1,"98":1,"103":1,"104":1}}],["always",{"2":{"85":2,"86":1,"87":1,"93":1}}],["already",{"2":{"62":1,"80":1,"85":1,"86":1}}],["al",{"2":{"59":1,"63":1,"72":1,"75":1,"81":1}}],["alternatives",{"2":{"85":1}}],["alternatively",{"2":{"0":1,"2":1,"85":2,"91":1}}],["altered",{"2":{"58":1,"59":1,"62":3,"64":2,"65":3,"66":3,"67":5}}],["although",{"2":{"46":1,"47":1,"67":1}}],["algebraofgraphics",{"2":{"95":1}}],["algebra",{"0":{"41":1},"2":{"41":1}}],["along",{"0":{"8":1},"2":{"8":1,"16":1,"85":6,"86":2,"99":1}}],["allaxes",{"2":{"86":1}}],["allinaxes",{"2":{"86":1}}],["allmissing",{"2":{"85":1}}],["allocate",{"2":{"82":1}}],["allocation",{"2":{"22":1}}],["allow",{"2":{"86":1}}],["allowed",{"2":{"47":1}}],["allowing",{"2":{"26":1,"27":1,"71":1}}],["allows",{"2":{"23":1}}],["all",{"0":{"6":1,"39":1,"40":1},"2":{"4":1,"6":2,"10":1,"12":1,"13":1,"14":2,"22":1,"23":4,"38":1,"40":2,"46":3,"56":2,"60":1,"67":1,"70":1,"72":2,"80":3,"82":1,"84":1,"85":7,"86":7,"89":1}}],["also",{"2":{"2":1,"3":1,"14":1,"21":1,"23":1,"29":1,"32":1,"40":1,"42":1,"70":2,"71":1,"77":1,"82":2,"85":1,"91":1}}],["annual",{"2":{"85":1}}],["analog",{"2":{"71":1}}],["analyzing",{"2":{"1":1}}],["anchor",{"2":{"21":1}}],["another",{"2":{"16":1,"40":1}}],["anynymous",{"2":{"85":1}}],["anyocean",{"2":{"85":1}}],["anymissing",{"2":{"85":1}}],["anymore",{"2":{"21":1}}],["any",{"2":{"8":1,"9":1,"10":1,"11":1,"14":2,"16":5,"18":3,"20":1,"21":2,"22":4,"25":1,"27":3,"29":1,"32":1,"33":3,"34":1,"35":1,"37":6,"41":3,"42":3,"47":4,"50":2,"51":3,"52":2,"54":4,"55":3,"56":3,"58":2,"59":3,"60":1,"62":3,"63":1,"64":2,"65":3,"66":3,"67":5,"75":1,"81":1,"82":1,"85":4,"86":9,"92":1,"97":1,"103":1}}],["an",{"0":{"8":1},"2":{"9":1,"10":4,"12":1,"13":1,"15":1,"23":2,"33":1,"34":1,"39":1,"40":1,"42":1,"47":1,"61":1,"63":3,"66":1,"70":1,"71":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"80":1,"81":1,"85":19,"86":8}}],["and",{"0":{"17":1,"28":1,"34":1,"48":1,"57":1,"63":1,"67":1,"75":1},"1":{"18":1,"19":1,"20":1,"29":1,"30":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"58":1,"59":1,"60":1,"61":1,"62":1,"64":1,"65":1,"66":1,"67":1,"68":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1},"2":{"0":1,"2":1,"5":1,"6":1,"7":1,"8":1,"12":1,"16":4,"17":2,"18":2,"20":2,"21":4,"22":2,"24":1,"28":1,"29":1,"32":1,"35":1,"37":1,"40":6,"41":1,"42":6,"46":5,"48":1,"49":1,"50":1,"51":2,"56":1,"57":2,"58":1,"59":1,"62":1,"63":1,"67":1,"70":5,"71":3,"72":2,"75":1,"77":2,"79":1,"80":1,"81":1,"82":3,"83":1,"85":19,"86":6,"87":1,"89":4,"91":1,"92":2,"96":1,"103":1,"105":1}}],["available",{"2":{"67":2,"82":1,"84":1,"85":2,"91":1}}],["avariable",{"2":{"0":1}}],["avoid",{"2":{"51":1,"59":1}}],["avoids",{"2":{"22":1}}],["avoided",{"2":{"0":1}}],["averaging",{"2":{"14":1}}],["averages",{"0":{"49":1},"2":{"48":1}}],["average",{"2":{"14":1,"49":2}}],["arg",{"2":{"85":1}}],["argument",{"2":{"23":1,"82":1,"85":4,"86":2}}],["arguments",{"2":{"21":1,"56":1,"85":12,"86":3}}],["artype",{"2":{"85":2}}],["archgdaldatasets",{"2":{"60":1}}],["archgdal",{"2":{"60":2,"95":1}}],["arr2",{"2":{"27":1}}],["arr",{"2":{"22":7,"27":2}}],["arrayinfo",{"2":{"86":1}}],["arrays",{"2":{"6":1,"7":1,"8":2,"9":1,"11":1,"28":1,"30":2,"58":2,"59":2,"69":1,"70":4,"71":3,"72":3,"85":2,"86":1}}],["array",{"0":{"22":1,"25":1},"2":{"0":1,"1":1,"8":2,"9":2,"10":3,"12":2,"13":2,"15":1,"18":1,"20":1,"22":8,"25":2,"34":1,"51":1,"56":1,"63":1,"70":4,"71":1,"72":1,"73":2,"82":5,"83":5,"85":10,"86":4,"92":3}}],["arbitrary",{"2":{"16":1}}],["arithmetics",{"0":{"12":1},"2":{"10":1}}],["areas",{"2":{"85":1}}],["area",{"2":{"58":2,"85":1}}],["areacella",{"2":{"58":2,"103":1}}],["are",{"2":{"0":1,"11":1,"18":1,"19":1,"24":3,"34":1,"36":1,"40":1,"46":3,"51":2,"56":2,"62":2,"63":1,"67":1,"68":1,"70":3,"71":2,"72":3,"74":1,"82":1,"85":13,"86":6,"87":1,"89":1,"99":2,"101":1}}],["according",{"2":{"85":1}}],["accessible",{"2":{"51":1}}],["access",{"2":{"1":2,"13":1,"29":1,"70":1,"73":1}}],["accessed",{"2":{"0":2,"58":1,"59":2}}],["activate",{"2":{"42":1,"89":2,"96":1,"104":1,"107":1}}],["actually",{"2":{"86":1}}],["actual",{"2":{"13":1,"59":1,"82":1,"86":1,"92":1}}],["achieves",{"2":{"33":1}}],["achieved",{"2":{"0":1}}],["across",{"2":{"0":1,"7":1,"16":1,"70":3}}],["a",{"0":{"9":1,"11":1,"22":1,"29":1,"30":1,"32":1,"36":1,"37":1,"38":1,"39":1,"40":1,"43":1,"46":2,"47":1,"64":1,"68":1,"80":1,"81":1,"96":1,"102":1},"1":{"33":1,"37":1,"38":1,"39":2,"40":2,"44":1,"45":1,"97":1,"98":1},"2":{"0":4,"2":7,"3":1,"4":1,"7":1,"8":1,"9":2,"10":3,"11":1,"12":4,"13":2,"14":2,"15":1,"16":5,"17":2,"18":1,"19":2,"20":1,"22":75,"23":11,"25":2,"26":5,"27":8,"29":1,"31":1,"32":2,"33":2,"34":1,"36":4,"37":3,"38":1,"40":2,"42":3,"44":2,"45":2,"46":4,"49":1,"54":1,"56":2,"58":6,"59":4,"60":1,"66":2,"67":4,"68":1,"70":12,"71":4,"72":8,"73":1,"74":4,"76":3,"77":3,"78":3,"79":1,"80":4,"82":5,"85":65,"86":31,"88":2,"89":2,"92":4,"93":1,"100":1,"101":1}}],["iall",{"2":{"86":1}}],["iwindow",{"2":{"86":1}}],["icolon",{"2":{"86":1}}],["icefire",{"2":{"104":1,"105":1,"106":1,"107":1}}],["ice",{"2":{"59":1,"63":1,"75":1,"81":1}}],["ipcc",{"2":{"59":3,"63":3,"75":3,"81":3}}],["ipsl",{"2":{"59":6,"63":6,"75":6,"81":6}}],["idx",{"2":{"97":3}}],["identical",{"2":{"85":1}}],["id",{"2":{"58":2,"59":2,"63":2,"75":2,"81":2,"103":2}}],["irregular",{"2":{"20":1,"40":6,"42":2,"46":4,"50":2,"51":1,"54":3,"55":1,"56":1,"58":4,"59":2,"62":3,"63":1,"64":2,"65":2,"66":6,"67":5,"75":1,"81":1,"86":1,"103":2}}],["illustrate",{"2":{"17":1}}],["immutable",{"2":{"11":1}}],["improving",{"2":{"93":1}}],["improvement",{"2":{"77":1}}],["improve",{"2":{"6":1}}],["implementing",{"2":{"85":1}}],["importance",{"2":{"86":1}}],["important",{"2":{"1":1}}],["impossible",{"2":{"11":1}}],["i",{"0":{"35":1,"36":1,"41":1,"42":1,"43":1,"46":1},"1":{"37":1,"38":1,"39":1,"40":1,"44":1,"45":1},"2":{"8":1,"22":3,"26":1,"27":1,"37":1,"56":2,"59":2,"80":1,"85":8,"86":4,"89":2,"92":1,"97":3}}],["ispar",{"2":{"85":1,"86":1}}],["ismissing",{"2":{"82":1}}],["issue",{"2":{"77":1}}],["issues",{"2":{"50":1}}],["isequal",{"2":{"22":1}}],["is",{"2":{"1":2,"2":1,"6":1,"7":1,"9":1,"13":1,"14":2,"15":1,"16":4,"21":2,"22":2,"23":3,"24":1,"27":1,"31":1,"33":2,"35":1,"36":1,"40":2,"41":1,"42":4,"46":2,"47":2,"49":2,"50":2,"51":2,"55":1,"59":2,"62":2,"64":1,"67":2,"68":1,"70":4,"71":1,"72":2,"73":1,"74":1,"82":4,"83":1,"85":12,"86":10,"88":1,"91":1,"93":1,"94":1,"99":1,"101":1}}],["if",{"2":{"0":1,"18":1,"19":1,"24":1,"40":3,"74":2,"77":1,"80":1,"82":2,"85":12,"86":6,"89":1,"94":1,"99":1}}],["inline",{"2":{"107":2}}],["incubes",{"2":{"86":1}}],["incs",{"2":{"86":1}}],["include",{"2":{"85":2,"86":1}}],["included",{"2":{"67":1}}],["inarbc",{"2":{"86":1}}],["inar",{"2":{"86":2}}],["inplace",{"2":{"85":3,"86":1}}],["inputcube",{"2":{"86":2}}],["inputs",{"2":{"18":1}}],["input",{"2":{"16":1,"17":1,"18":1,"20":1,"23":2,"42":1,"85":13,"86":8}}],["innerchunks",{"2":{"86":1}}],["inner",{"2":{"85":9,"86":3}}],["insize",{"2":{"86":1}}],["inside",{"2":{"85":3}}],["installed",{"2":{"93":1}}],["installation",{"0":{"91":1}}],["install",{"0":{"94":1},"2":{"89":1,"91":1,"95":1}}],["instantaneous",{"2":{"50":2}}],["instead",{"2":{"8":1,"9":1,"13":1,"32":1,"37":1,"67":1,"70":1}}],["initialization",{"2":{"58":1,"103":1}}],["initially",{"2":{"22":1}}],["inds",{"2":{"86":1}}],["indeed",{"2":{"83":1}}],["indexing",{"2":{"65":2,"66":2,"83":1,"93":1}}],["index",{"2":{"58":2,"86":2,"103":2}}],["independently",{"2":{"46":1}}],["indices",{"2":{"86":1,"97":1}}],["indicate",{"2":{"85":1}}],["indicating",{"2":{"9":1,"22":1,"85":1}}],["indims=indims",{"2":{"22":1,"23":1}}],["indims",{"0":{"18":1,"19":1,"21":1},"2":{"16":8,"18":4,"20":7,"21":3,"85":7}}],["individually",{"2":{"13":2}}],["individual",{"2":{"0":1,"58":1,"59":1}}],["information",{"2":{"62":1,"80":1,"86":2}}],["info",{"2":{"16":2,"27":1,"32":1,"48":1,"59":11,"74":1,"79":4,"82":1,"93":1}}],["introducing",{"2":{"72":1}}],["int",{"2":{"33":1,"47":1,"97":3}}],["interoperability",{"0":{"95":1}}],["internal",{"0":{"86":1},"2":{"86":9}}],["internally",{"2":{"71":1}}],["interface",{"2":{"85":2,"101":1}}],["interested",{"2":{"99":1}}],["interest",{"2":{"62":1}}],["interval",{"2":{"59":1,"62":3,"64":2,"65":3,"66":4,"67":6}}],["intervalsets",{"2":{"67":1}}],["intervals",{"0":{"67":1},"2":{"37":1}}],["interactive",{"2":{"0":1}}],["integer",{"2":{"29":1,"65":1,"66":1,"70":1}}],["int64",{"2":{"4":4,"5":4,"6":2,"8":1,"9":1,"16":8,"17":1,"18":1,"19":1,"21":7,"25":2,"27":2,"29":3,"32":9,"33":7,"34":4,"37":15,"39":4,"40":7,"42":3,"44":1,"45":5,"47":5,"50":4,"51":6,"52":6,"54":5,"56":18,"81":3,"82":6,"86":1,"92":2}}],["into",{"0":{"61":1,"102":1},"1":{"62":1},"2":{"0":1,"1":1,"2":1,"7":1,"8":1,"16":1,"22":1,"24":2,"27":1,"40":4,"47":1,"50":1,"57":1,"61":1,"72":2,"80":1,"83":1,"85":6,"86":3,"89":1,"107":1}}],["in",{"0":{"20":1,"43":1},"1":{"44":1,"45":1},"2":{"0":5,"1":1,"2":1,"4":2,"5":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":4,"16":5,"17":1,"18":2,"19":2,"21":5,"22":8,"23":3,"24":2,"25":1,"26":1,"27":2,"29":2,"32":1,"33":3,"34":2,"37":5,"38":1,"40":1,"41":3,"42":5,"46":4,"47":2,"49":2,"50":3,"51":2,"53":3,"54":1,"56":4,"58":2,"59":4,"61":1,"62":9,"64":2,"65":3,"66":4,"67":7,"68":1,"69":1,"70":5,"71":1,"72":2,"74":3,"82":2,"83":1,"85":15,"86":9,"89":2,"91":1,"92":4,"94":2,"97":2,"99":3,"101":4,"103":1}}],["iter",{"2":{"85":1}}],["iterate",{"2":{"101":1}}],["iteration",{"0":{"101":1}}],["iterator",{"2":{"42":1}}],["iterators",{"2":{"22":1}}],["iterable",{"2":{"42":2,"85":2}}],["itself",{"2":{"85":1,"86":1}}],["its",{"2":{"0":1}}],["it",{"2":{"0":2,"1":3,"12":1,"16":1,"18":1,"20":1,"23":2,"32":1,"34":1,"35":1,"40":2,"42":2,"46":2,"47":1,"52":1,"54":1,"56":1,"59":1,"63":1,"70":2,"71":1,"73":1,"74":1,"79":1,"80":1,"82":2,"83":1,"85":10,"86":5,"89":1,"91":1}}],["lscene",{"2":{"107":1}}],["lmdz",{"2":{"59":1,"63":1,"75":1,"81":1}}],["link",{"2":{"88":1}}],["linewidth=0",{"2":{"105":1,"106":1}}],["linewidth=2",{"2":{"98":2}}],["linewidth=1",{"2":{"96":1,"98":1}}],["linestyle=",{"2":{"98":2}}],["lines",{"2":{"96":1,"98":3}}],["line",{"2":{"42":1}}],["lim",{"2":{"59":1,"63":1,"75":1,"81":1}}],["libraries",{"2":{"37":1,"70":1}}],["libray",{"2":{"36":1}}],["little",{"2":{"23":1}}],["list",{"2":{"22":1,"46":5,"85":7,"86":6}}],["like",{"2":{"0":1,"42":1,"46":1,"85":2,"86":1,"88":1}}],["learn",{"2":{"101":1}}],["learning",{"2":{"70":1,"99":1}}],["leap",{"2":{"96":1}}],["least",{"2":{"40":1,"46":1,"85":1}}],["length",{"2":{"51":2,"52":1,"54":3,"85":1,"86":3}}],["length=20",{"2":{"35":1,"92":1}}],["length=365",{"2":{"96":1}}],["length=3",{"2":{"17":1}}],["length=4",{"2":{"17":1}}],["length=15",{"2":{"10":1,"22":1,"23":1,"29":1,"35":1,"92":1}}],["length=10",{"2":{"10":1,"22":1,"23":1,"29":1,"35":1,"92":1}}],["level",{"2":{"21":1,"46":1,"77":1,"79":1,"88":1,"89":1}}],["left",{"2":{"14":2}}],["let",{"2":{"10":1,"16":2,"18":1,"19":1,"33":1,"35":1,"37":1,"39":1,"40":1,"56":1,"61":1,"63":1,"97":1}}],["loopinds",{"2":{"86":2}}],["looping",{"2":{"85":1,"86":1}}],["loopcachesize",{"2":{"86":1}}],["loopchunksize",{"2":{"85":1}}],["loopaxes",{"2":{"86":1}}],["loopvars",{"2":{"85":1,"86":1}}],["loops",{"2":{"85":1}}],["loop",{"2":{"85":1,"86":2}}],["looped",{"2":{"85":3,"86":3}}],["look",{"2":{"80":1,"85":1,"86":1,"88":1,"89":1}}],["looking",{"2":{"74":1}}],["lookups",{"2":{"51":15,"52":10,"54":11,"55":5,"56":38,"68":3}}],["lookup",{"2":{"51":1,"53":1,"103":3}}],["looks",{"2":{"42":1,"46":1}}],["located",{"2":{"99":1}}],["locate",{"2":{"89":1}}],["location",{"2":{"86":3}}],["locations",{"2":{"71":1,"72":1}}],["localhost",{"2":{"89":1}}],["locally",{"0":{"89":1},"2":{"89":1}}],["local",{"2":{"23":1,"58":1}}],["lock",{"2":{"59":3}}],["locks",{"2":{"59":1}}],["lowclip",{"2":{"56":4}}],["low",{"2":{"46":4}}],["lost",{"2":{"24":1}}],["lo",{"2":{"16":4}}],["loadorgenerate",{"2":{"86":1}}],["loading",{"2":{"60":1,"62":1,"83":1}}],["load",{"0":{"61":1},"1":{"62":1},"2":{"16":1,"37":1,"40":2,"50":1,"61":1,"62":1,"70":1}}],["loaded",{"2":{"8":1,"9":1,"10":1,"12":1,"13":1,"14":2,"16":5,"17":1,"18":1,"19":1,"21":3,"22":2,"25":1,"27":1,"29":2,"32":1,"33":3,"34":1,"35":1,"37":5,"40":2,"41":3,"42":3,"47":2,"50":2,"54":1,"58":1,"59":1,"62":8,"64":2,"65":3,"66":3,"67":5,"82":1,"92":2,"97":1}}],["long",{"2":{"50":2,"56":1,"58":1,"59":1,"62":4,"64":2,"65":3,"66":3,"67":5}}],["longitudes=longitudes",{"2":{"40":1}}],["longitudes",{"2":{"40":12}}],["longitude",{"2":{"21":1,"37":1,"60":1,"74":6,"92":2}}],["lonlat",{"2":{"39":1}}],["lon=1",{"2":{"37":1,"39":1}}],["lon",{"0":{"74":1},"2":{"10":2,"12":1,"13":1,"14":2,"16":10,"17":2,"18":1,"19":1,"20":1,"21":5,"22":12,"23":1,"26":2,"29":3,"30":1,"35":2,"37":7,"39":3,"41":4,"42":3,"58":2,"59":2,"62":3,"63":1,"64":2,"65":3,"66":6,"67":10,"68":2,"74":8,"75":1,"81":1,"92":2,"103":2,"105":3}}],["lazy",{"2":{"85":1}}],["lazily",{"2":{"9":1,"13":1,"16":2,"35":1,"50":1,"58":1,"59":1,"62":1,"64":2,"65":3,"66":3,"67":5}}],["layername",{"2":{"85":2}}],["layername=",{"2":{"82":2,"86":1}}],["layer",{"2":{"82":1,"85":1,"86":1}}],["layout",{"2":{"56":2}}],["labelled",{"2":{"85":1}}],["labels",{"2":{"56":1,"68":1,"72":1,"73":1}}],["label=false",{"2":{"56":1}}],["label=",{"2":{"56":1,"98":3}}],["label=cb",{"2":{"56":1}}],["label",{"2":{"56":3,"58":1,"74":1,"103":1}}],["last",{"2":{"16":1,"23":1}}],["la",{"2":{"16":4}}],["latest",{"2":{"93":1,"94":1}}],["later",{"2":{"18":1}}],["lat=5",{"2":{"37":1,"39":1}}],["latitudes=latitudes",{"2":{"40":1}}],["latitudes",{"2":{"40":11}}],["latitude",{"2":{"21":1,"37":1,"60":1,"74":6,"92":2}}],["lat",{"0":{"74":1},"2":{"10":2,"12":1,"13":1,"14":2,"16":7,"17":2,"18":1,"19":1,"20":1,"21":5,"22":12,"23":1,"26":2,"29":3,"30":1,"35":2,"37":7,"39":3,"41":4,"42":3,"58":2,"59":2,"62":3,"63":1,"64":2,"65":3,"66":5,"67":5,"68":2,"74":8,"75":1,"81":1,"85":1,"92":2,"103":3,"105":1,"106":1}}],["larger",{"2":{"24":1}}],["large",{"2":{"0":2,"24":1,"50":1,"70":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR481/assets/chunks/VPLocalSearchBox.DwJcLahT.js b/previews/PR481/assets/chunks/VPLocalSearchBox.DPA6Cfil.js similarity index 99% rename from previews/PR481/assets/chunks/VPLocalSearchBox.DwJcLahT.js rename to previews/PR481/assets/chunks/VPLocalSearchBox.DPA6Cfil.js index f33f987e..865020a8 100644 --- a/previews/PR481/assets/chunks/VPLocalSearchBox.DwJcLahT.js +++ b/previews/PR481/assets/chunks/VPLocalSearchBox.DPA6Cfil.js @@ -1,4 +1,4 @@ -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,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.CmUrV9pg.js";import{u as ss,d as ns}from"./theme.vl07g5LM.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.CnnmGcC2.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,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.CmUrV9pg.js";import{u as ss,d as ns}from"./theme.CaJ052h0.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.C8t7r5x6.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)};/*! diff --git a/previews/PR481/assets/chunks/theme.vl07g5LM.js b/previews/PR481/assets/chunks/theme.CaJ052h0.js similarity index 99% rename from previews/PR481/assets/chunks/theme.vl07g5LM.js rename to previews/PR481/assets/chunks/theme.CaJ052h0.js index 41e34be5..8678f194 100644 --- a/previews/PR481/assets/chunks/theme.vl07g5LM.js +++ b/previews/PR481/assets/chunks/theme.CaJ052h0.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DwJcLahT.js","assets/chunks/framework.CmUrV9pg.js"])))=>i.map(i=>d[i]); -import{d as b,o,c as l,r as u,n as T,a as F,t as I,b as $,w as f,e as m,T as pe,_ as k,u as Se,i as Je,f as Ke,g as ve,h as y,j as p,k as i,l as J,m as ie,p as S,q as W,s as q,v as O,x as fe,y as me,z as je,A as ze,B as G,F as C,C as B,D as Ie,E as x,G as g,H,I as Ne,J as ee,K as R,L as j,M as Ze,N as Te,O as le,P as he,Q as Ce,R as te,S as Ye,U as Xe,V as qe,W as we,X as _e,Y as xe,Z as et,$ as tt,a0 as st,a1 as Me,a2 as nt,a3 as at,a4 as ot,a5 as Ae}from"./framework.CmUrV9pg.js";const rt=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(a){return(e,t)=>(o(),l("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[F(I(e.text),1)])],2))}}),it={key:0,class:"VPBackdrop"},lt=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(a){return(e,t)=>(o(),$(pe,{name:"fade"},{default:f(()=>[e.show?(o(),l("div",it)):m("",!0)]),_:1}))}}),ct=k(lt,[["__scopeId","data-v-b06cdb19"]]),V=Se;function ut(a,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(a,e):(a(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ce(a){return/^\//.test(a)?a:`/${a}`}function be(a){const{pathname:e,search:t,hash:n,protocol:s}=new URL(a,"http://a.com");if(Je(a)||a.startsWith("#")||!s.startsWith("http")||!Ke(e))return a;const{site:r}=V(),c=e.endsWith("/")||e.endsWith(".html")?a:a.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return ve(c)}function Z({correspondingLink:a=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:r}=V(),c=y(()=>{var d,h;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((h=e.value.locales[t.value])==null?void 0:h.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([d,h])=>c.value.label===h.label?[]:{text:h.label,link:dt(h.link||(d==="root"?"/":`/${d}/`),s.value.i18nRouting!==!1&&a,n.value.relativePath.slice(c.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:c}}function dt(a,e,t,n){return e?a.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):a}const pt={class:"NotFound"},vt={class:"code"},ft={class:"title"},mt={class:"quote"},ht={class:"action"},_t=["href","aria-label"],bt=b({__name:"NotFound",setup(a){const{theme:e}=V(),{currentLang:t}=Z();return(n,s)=>{var r,c,v,d,h;return o(),l("div",pt,[p("p",vt,I(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",ft,I(((c=i(e).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),s[0]||(s[0]=p("div",{class:"divider"},null,-1)),p("blockquote",mt,I(((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",ht,[p("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((d=i(e).notFound)==null?void 0:d.linkLabel)??"go to home"},I(((h=i(e).notFound)==null?void 0:h.linkText)??"Take me home"),9,_t)])])}}}),gt=k(bt,[["__scopeId","data-v-951cab6c"]]);function Be(a,e){if(Array.isArray(a))return Y(a);if(a==null)return[];e=ce(e);const t=Object.keys(a).sort((s,r)=>r.split("/").length-s.split("/").length).find(s=>e.startsWith(ce(s))),n=t?a[t]:[];return Array.isArray(n)?Y(n):Y(n.items,n.base)}function kt(a){const e=[];let t=0;for(const n in a){const s=a[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function $t(a){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(a),e}function ue(a,e){return Array.isArray(e)?e.some(t=>ue(a,t)):J(a,e.link)?!0:e.items?ue(a,e.items):!1}function Y(a,e){return[...a].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Y(n.items,s)),n})}function D(){const{frontmatter:a,page:e,theme:t}=V(),n=ie("(min-width: 960px)"),s=S(!1),r=y(()=>{const M=t.value.sidebar,N=e.value.relativePath;return M?Be(M,N):[]}),c=S(r.value);W(r,(M,N)=>{JSON.stringify(M)!==JSON.stringify(N)&&(c.value=r.value)});const v=y(()=>a.value.sidebar!==!1&&c.value.length>0&&a.value.layout!=="home"),d=y(()=>h?a.value.aside==null?t.value.aside==="left":a.value.aside==="left":!1),h=y(()=>a.value.layout==="home"?!1:a.value.aside!=null?!!a.value.aside:t.value.aside!==!1),A=y(()=>v.value&&n.value),_=y(()=>v.value?kt(c.value):[]);function P(){s.value=!0}function L(){s.value=!1}function w(){s.value?L():P()}return{isOpen:s,sidebar:c,sidebarGroups:_,hasSidebar:v,hasAside:h,leftAside:d,isSidebarEnabled:A,open:P,close:L,toggle:w}}function yt(a,e){let t;q(()=>{t=a.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",n)}),fe(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&a.value&&(e(),t==null||t.focus())}}function At(a){const{page:e,hash:t}=V(),n=S(!1),s=y(()=>a.value.collapsed!=null),r=y(()=>!!a.value.link),c=S(!1),v=()=>{c.value=J(e.value.relativePath,a.value.link)};W([e,a,t],v),O(v);const d=y(()=>c.value?!0:a.value.items?ue(e.value.relativePath,a.value.items):!1),h=y(()=>!!(a.value.items&&a.value.items.length));q(()=>{n.value=!!(s.value&&a.value.collapsed)}),me(()=>{(c.value||d.value)&&(n.value=!1)});function A(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:r,isActiveLink:c,hasActiveLink:d,hasChildren:h,toggle:A}}function Pt(){const{hasSidebar:a}=D(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:a.value?t.value:e.value)}}const de=[];function Ee(a){return typeof a.outline=="object"&&!Array.isArray(a.outline)&&a.outline.label||a.outlineTitle||"On this page"}function ge(a){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:Lt(t),link:"#"+t.id,level:n}});return Vt(e,a)}function Lt(a){let e="";for(const t of a.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 Vt(a,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Nt(a,n,s)}function St(a,e){const{isAsideEnabled:t}=Pt(),n=ut(r,100);let s=null;O(()=>{requestAnimationFrame(r),window.addEventListener("scroll",n)}),je(()=>{c(location.hash)}),fe(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const v=window.scrollY,d=window.innerHeight,h=document.body.offsetHeight,A=Math.abs(v+d-h)<1,_=de.map(({element:L,link:w})=>({link:w,top:It(L)})).filter(({top:L})=>!Number.isNaN(L)).sort((L,w)=>L.top-w.top);if(!_.length){c(null);return}if(v<1){c(null);return}if(A){c(_[_.length-1].link);return}let P=null;for(const{link:L,top:w}of _){if(w>v+ze()+4)break;P=L}c(P)}function c(v){s&&s.classList.remove("active"),v==null?s=null:s=a.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const d=s;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function It(a){let e=0;for(;a!==document.body;){if(a===null)return NaN;e+=a.offsetTop,a=a.offsetParent}return e}function Nt(a,e,t){de.length=0;const n=[],s=[];return a.forEach(r=>{const c={...r,children:[]};let v=s[s.length-1];for(;v&&v.level>=c.level;)s.pop(),v=s[s.length-1];if(c.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){s.push({level:c.level,shouldIgnore:!0});return}c.level>t||c.level{const s=G("VPDocOutlineItem",!0);return o(),l("ul",{class:T(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),l(C,null,B(t.headers,({children:r,link:c,title:v})=>(o(),l("li",null,[p("a",{class:"outline-link",href:c,onClick:e,title:v},I(v),9,Tt),r!=null&&r.length?(o(),$(s,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),Qe=k(Ct,[["__scopeId","data-v-3f927ebe"]]),wt={class:"content"},Mt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Bt=b({__name:"VPDocAsideOutline",setup(a){const{frontmatter:e,theme:t}=V(),n=Ie([]);x(()=>{n.value=ge(e.value.outline??t.value.outline)});const s=S(),r=S();return St(s,r),(c,v)=>(o(),l("nav",{"aria-labelledby":"doc-outline-aria-label",class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[p("div",wt,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",Mt,I(i(Ee)(i(t))),1),g(Qe,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Et=k(Bt,[["__scopeId","data-v-b38bf2ff"]]),Qt={class:"VPDocAsideCarbonAds"},Ht=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(a){const e=()=>null;return(t,n)=>(o(),l("div",Qt,[g(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft={class:"VPDocAside"},Wt=b({__name:"VPDocAside",setup(a){const{theme:e}=V();return(t,n)=>(o(),l("div",Ft,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),g(Et),u(t.$slots,"aside-outline-after",{},void 0,!0),n[0]||(n[0]=p("div",{class:"spacer"},null,-1)),u(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(o(),$(Ht,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):m("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ot=k(Wt,[["__scopeId","data-v-6d7b3c46"]]);function Dt(){const{theme:a,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:n=""}=a.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Ut(){const{page:a,theme:e,frontmatter:t}=V();return y(()=>{var h,A,_,P,L,w,M,N;const n=Be(e.value.sidebar,a.value.relativePath),s=$t(n),r=Rt(s,E=>E.link.replace(/[?#].*$/,"")),c=r.findIndex(E=>J(a.value.relativePath,E.link)),v=((h=e.value.docFooter)==null?void 0:h.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((A=e.value.docFooter)==null?void 0:A.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)??((_=r[c-1])==null?void 0:_.docFooterText)??((P=r[c-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((L=r[c-1])==null?void 0:L.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((w=r[c+1])==null?void 0:w.docFooterText)??((M=r[c+1])==null?void 0:M.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[c+1])==null?void 0:N.link)}}})}function Rt(a,e){const t=new Set;return a.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const Q=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Ne.test(e.href)||e.target==="_blank");return(s,r)=>(o(),$(H(t.value),{class:T(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?i(be)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:f(()=>[u(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},Jt=["datetime"],Kt=b({__name:"VPDocFooterLastUpdated",setup(a){const{theme:e,page:t,lang:n}=V(),s=y(()=>new Date(t.value.lastUpdated)),r=y(()=>s.value.toISOString()),c=S("");return O(()=>{q(()=>{var v,d,h;c.value=new Intl.DateTimeFormat((d=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&d.forceLocale?n.value:void 0,((h=e.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(s.value)})}),(v,d)=>{var h;return o(),l("p",Gt,[F(I(((h=i(e).lastUpdated)==null?void 0:h.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},I(c.value),9,Jt)])}}}),jt=k(Kt,[["__scopeId","data-v-475f71b8"]]),zt={key:0,class:"VPDocFooter"},Zt={key:0,class:"edit-info"},Yt={key:0,class:"edit-link"},Xt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},xt={class:"pager"},es=["innerHTML"],ts=["innerHTML"],ss={class:"pager"},ns=["innerHTML"],as=["innerHTML"],os=b({__name:"VPDocFooter",setup(a){const{theme:e,page:t,frontmatter:n}=V(),s=Dt(),r=Ut(),c=y(()=>e.value.editLink&&n.value.editLink!==!1),v=y(()=>t.value.lastUpdated),d=y(()=>c.value||v.value||r.value.prev||r.value.next);return(h,A)=>{var _,P,L,w;return d.value?(o(),l("footer",zt,[u(h.$slots,"doc-footer-before",{},void 0,!0),c.value||v.value?(o(),l("div",Zt,[c.value?(o(),l("div",Yt,[g(Q,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:f(()=>[A[0]||(A[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),F(" "+I(i(s).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(o(),l("div",Xt,[g(jt)])):m("",!0)])):m("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(o(),l("nav",qt,[A[1]||(A[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",xt,[(L=i(r).prev)!=null&&L.link?(o(),$(Q,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var M;return[p("span",{class:"desc",innerHTML:((M=i(e).docFooter)==null?void 0:M.prev)||"Previous page"},null,8,es),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,ts)]}),_:1},8,["href"])):m("",!0)]),p("div",ss,[(w=i(r).next)!=null&&w.link?(o(),$(Q,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var M;return[p("span",{class:"desc",innerHTML:((M=i(e).docFooter)==null?void 0:M.next)||"Next page"},null,8,ns),p("span",{class:"title",innerHTML:i(r).next.text},null,8,as)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),rs=k(os,[["__scopeId","data-v-4f9813fa"]]),is={class:"container"},ls={class:"aside-container"},cs={class:"aside-content"},us={class:"content"},ds={class:"content-container"},ps={class:"main"},vs=b({__name:"VPDoc",setup(a){const{theme:e}=V(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:r}=D(),c=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,d)=>{const h=G("Content");return o(),l("div",{class:T(["VPDoc",{"has-sidebar":i(n),"has-aside":i(s)}])},[u(v.$slots,"doc-top",{},void 0,!0),p("div",is,[i(s)?(o(),l("div",{key:0,class:T(["aside",{"left-aside":i(r)}])},[d[0]||(d[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",ls,[p("div",cs,[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)):m("",!0),p("div",us,[p("div",ds,[u(v.$slots,"doc-before",{},void 0,!0),p("main",ps,[g(h,{class:T(["vp-doc",[c.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(rs,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)}}}),fs=k(vs,[["__scopeId","data-v-83890dd9"]]),ms=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.href&&Ne.test(e.href)),n=y(()=>e.tag||(e.href?"a":"button"));return(s,r)=>(o(),$(H(n.value),{class:T(["VPButton",[s.size,s.theme]]),href:s.href?i(be)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[F(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),hs=k(ms,[["__scopeId","data-v-906d7fb4"]]),_s=["src","alt"],bs=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(a){return(e,t)=>{const n=G("VPImage",!0);return e.image?(o(),l(C,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),l("img",R({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,_s)):(o(),l(C,{key:1},[g(n,R({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(n,R({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),X=k(bs,[["__scopeId","data-v-35a7d0b8"]]),gs={class:"container"},ks={class:"main"},$s={key:0,class:"name"},ys=["innerHTML"],As=["innerHTML"],Ps=["innerHTML"],Ls={key:0,class:"actions"},Vs={key:0,class:"image"},Ss={class:"image-container"},Is=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(a){const e=j("hero-image-slot-exists");return(t,n)=>(o(),l("div",{class:T(["VPHero",{"has-image":t.image||i(e)}])},[p("div",gs,[p("div",ks,[u(t.$slots,"home-hero-info-before",{},void 0,!0),u(t.$slots,"home-hero-info",{},()=>[t.name?(o(),l("h1",$s,[p("span",{innerHTML:t.name,class:"clip"},null,8,ys)])):m("",!0),t.text?(o(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,As)):m("",!0),t.tagline?(o(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Ps)):m("",!0)],!0),u(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(o(),l("div",Ls,[(o(!0),l(C,null,B(t.actions,s=>(o(),l("div",{key:s.link,class:"action"},[g(hs,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(o(),l("div",Vs,[p("div",Ss,[n[0]||(n[0]=p("div",{class:"image-bg"},null,-1)),u(t.$slots,"home-hero-image",{},()=>[t.image?(o(),$(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),Ns=k(Is,[["__scopeId","data-v-955009fc"]]),Ts=b({__name:"VPHomeHero",setup(a){const{frontmatter:e}=V();return(t,n)=>i(e).hero?(o(),$(Ns,{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"])):m("",!0)}}),Cs={class:"box"},ws={key:0,class:"icon"},Ms=["innerHTML"],Bs=["innerHTML"],Es=["innerHTML"],Qs={key:4,class:"link-text"},Hs={class:"link-text-value"},Fs=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(a){return(e,t)=>(o(),$(Q,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Cs,[typeof e.icon=="object"&&e.icon.wrap?(o(),l("div",ws,[g(X,{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"?(o(),$(X,{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?(o(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Ms)):m("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Bs),e.details?(o(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,Es)):m("",!0),e.linkText?(o(),l("div",Qs,[p("p",Hs,[F(I(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Ws=k(Fs,[["__scopeId","data-v-f5e9645b"]]),Os={key:0,class:"VPFeatures"},Ds={class:"container"},Us={class:"items"},Rs=b({__name:"VPFeatures",props:{features:{}},setup(a){const e=a,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(o(),l("div",Os,[p("div",Ds,[p("div",Us,[(o(!0),l(C,null,B(n.features,r=>(o(),l("div",{key:r.title,class:T(["item",[t.value]])},[g(Ws,{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))])])])):m("",!0)}}),Gs=k(Rs,[["__scopeId","data-v-d0a190d7"]]),Js=b({__name:"VPHomeFeatures",setup(a){const{frontmatter:e}=V();return(t,n)=>i(e).features?(o(),$(Gs,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):m("",!0)}}),Ks=b({__name:"VPHomeContent",setup(a){const{width:e}=Ze({initialWidth:0,includeScrollbar:!1});return(t,n)=>(o(),l("div",{class:"vp-doc container",style:Te(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[u(t.$slots,"default",{},void 0,!0)],4))}}),js=k(Ks,[["__scopeId","data-v-7a48a447"]]),zs={class:"VPHome"},Zs=b({__name:"VPHome",setup(a){const{frontmatter:e}=V();return(t,n)=>{const s=G("Content");return o(),l("div",zs,[u(t.$slots,"home-hero-before",{},void 0,!0),g(Ts,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(Js),u(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(o(),$(js,{key:0},{default:f(()=>[g(s)]),_:1})):(o(),$(s,{key:1}))])}}}),Ys=k(Zs,[["__scopeId","data-v-cbb6ec48"]]),Xs={},qs={class:"VPPage"};function xs(a,e){const t=G("Content");return o(),l("div",qs,[u(a.$slots,"page-top"),g(t),u(a.$slots,"page-bottom")])}const en=k(Xs,[["render",xs]]),tn=b({__name:"VPContent",setup(a){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=D();return(s,r)=>(o(),l("div",{class:T(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?u(s.$slots,"not-found",{key:0},()=>[g(gt)],!0):i(t).layout==="page"?(o(),$(en,{key:1},{"page-top":f(()=>[u(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(o(),$(Ys,{key:2},{"home-hero-before":f(()=>[u(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(o(),$(H(i(t).layout),{key:3})):(o(),$(fs,{key:4},{"doc-top":f(()=>[u(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[u(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[u(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[u(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[u(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),sn=k(tn,[["__scopeId","data-v-91765379"]]),nn={class:"container"},an=["innerHTML"],on=["innerHTML"],rn=b({__name:"VPFooter",setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=D();return(s,r)=>i(e).footer&&i(t).footer!==!1?(o(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(n)}])},[p("div",nn,[i(e).footer.message?(o(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,an)):m("",!0),i(e).footer.copyright?(o(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,on)):m("",!0)])],2)):m("",!0)}}),ln=k(rn,[["__scopeId","data-v-c970a860"]]);function cn(){const{theme:a,frontmatter:e}=V(),t=Ie([]),n=y(()=>t.value.length>0);return x(()=>{t.value=ge(e.value.outline??a.value.outline)}),{headers:t,hasLocalNav:n}}const un={class:"menu-text"},dn={class:"header"},pn={class:"outline"},vn=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(a){const e=a,{theme:t}=V(),n=S(!1),s=S(0),r=S(),c=S();function v(_){var P;(P=r.value)!=null&&P.contains(_.target)||(n.value=!1)}W(n,_=>{if(_){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),le("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function d(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function h(_){_.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),he(()=>{n.value=!1}))}function A(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(o(),l("div",{class:"VPLocalNavOutlineDropdown",style:Te({"--vp-vh":s.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(o(),l("button",{key:0,onClick:d,class:T({open:n.value})},[p("span",un,I(i(Ee)(i(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),l("button",{key:1,onClick:A},I(i(t).returnToTopLabel||"Return to top"),1)),g(pe,{name:"flyout"},{default:f(()=>[n.value?(o(),l("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:h},[p("div",dn,[p("a",{class:"top-link",href:"#",onClick:A},I(i(t).returnToTopLabel||"Return to top"),1)]),p("div",pn,[g(Qe,{headers:_.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),fn=k(vn,[["__scopeId","data-v-bc9dc845"]]),mn={class:"container"},hn=["aria-expanded"],_n={class:"menu-text"},bn=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=D(),{headers:s}=cn(),{y:r}=Ce(),c=S(0);O(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=ge(t.value.outline??e.value.outline)});const v=y(()=>s.value.length===0),d=y(()=>v.value&&!n.value),h=y(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:v.value,fixed:d.value}));return(A,_)=>i(t).layout!=="home"&&(!d.value||i(r)>=c.value)?(o(),l("div",{key:0,class:T(h.value)},[p("div",mn,[i(n)?(o(),l("button",{key:0,class:"menu","aria-expanded":A.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>A.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",_n,I(i(e).sidebarMenuLabel||"Menu"),1)],8,hn)):m("",!0),g(fn,{headers:i(s),navHeight:c.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),gn=k(bn,[["__scopeId","data-v-070ab83d"]]);function kn(){const a=S(!1);function e(){a.value=!0,window.addEventListener("resize",s)}function t(){a.value=!1,window.removeEventListener("resize",s)}function n(){a.value?t():e()}function s(){window.outerWidth>=768&&t()}const r=ee();return W(()=>r.path,t),{isScreenOpen:a,openScreen:e,closeScreen:t,toggleScreen:n}}const $n={},yn={class:"VPSwitch",type:"button",role:"switch"},An={class:"check"},Pn={key:0,class:"icon"};function Ln(a,e){return o(),l("button",yn,[p("span",An,[a.$slots.default?(o(),l("span",Pn,[u(a.$slots,"default",{},void 0,!0)])):m("",!0)])])}const Vn=k($n,[["render",Ln],["__scopeId","data-v-4a1c76db"]]),Sn=b({__name:"VPSwitchAppearance",setup(a){const{isDark:e,theme:t}=V(),n=j("toggle-appearance",()=>{e.value=!e.value}),s=S("");return me(()=>{s.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,c)=>(o(),$(Vn,{title:s.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(n)},{default:f(()=>c[0]||(c[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=k(Sn,[["__scopeId","data-v-e40a8bb6"]]),In={key:0,class:"VPNavBarAppearance"},Nn=b({__name:"VPNavBarAppearance",setup(a){const{site:e}=V();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",In,[g(ke)])):m("",!0)}}),Tn=k(Nn,[["__scopeId","data-v-af096f4a"]]),$e=S();let He=!1,re=0;function Cn(a){const e=S(!1);if(te){!He&&wn(),re++;const t=W($e,n=>{var s,r,c;n===a.el.value||(s=a.el.value)!=null&&s.contains(n)?(e.value=!0,(r=a.onFocus)==null||r.call(a)):(e.value=!1,(c=a.onBlur)==null||c.call(a))});fe(()=>{t(),re--,re||Mn()})}return Ye(e)}function wn(){document.addEventListener("focusin",Fe),He=!0,$e.value=document.activeElement}function Mn(){document.removeEventListener("focusin",Fe)}function Fe(){$e.value=document.activeElement}const Bn={class:"VPMenuLink"},En=["innerHTML"],Qn=b({__name:"VPMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,n)=>(o(),l("div",Bn,[g(Q,{class:T({active:i(J)(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,En)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),se=k(Qn,[["__scopeId","data-v-acbfed09"]]),Hn={class:"VPMenuGroup"},Fn={key:0,class:"title"},Wn=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",Hn,[e.text?(o(),l("p",Fn,I(e.text),1)):m("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),l(C,null,["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):m("",!0)],64))),256))]))}}),On=k(Wn,[["__scopeId","data-v-48c802d0"]]),Dn={class:"VPMenu"},Un={key:0,class:"items"},Rn=b({__name:"VPMenu",props:{items:{}},setup(a){return(e,t)=>(o(),l("div",Dn,[e.items?(o(),l("div",Un,[(o(!0),l(C,null,B(e.items,n=>(o(),l(C,{key:JSON.stringify(n)},["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):"component"in n?(o(),$(H(n.component),R({key:1,ref_for:!0},n.props),null,16)):(o(),$(On,{key:2,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):m("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Gn=k(Rn,[["__scopeId","data-v-7dd3104a"]]),Jn=["aria-expanded","aria-label"],Kn={key:0,class:"text"},jn=["innerHTML"],zn={key:1,class:"vpi-more-horizontal icon"},Zn={class:"menu"},Yn=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(a){const e=S(!1),t=S();Cn({el:t,onBlur:n});function n(){e.value=!1}return(s,r)=>(o(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(o(),l("span",Kn,[s.icon?(o(),l("span",{key:0,class:T([s.icon,"option-icon"])},null,2)):m("",!0),s.button?(o(),l("span",{key:1,innerHTML:s.button},null,8,jn)):m("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),l("span",zn))],8,Jn),p("div",Zn,[g(Gn,{items:s.items},{default:f(()=>[u(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=k(Yn,[["__scopeId","data-v-04f5c5e9"]]),Xn=["href","aria-label","innerHTML"],qn=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(a){const e=a,t=S();O(async()=>{var r;await he();const s=(r=t.value)==null?void 0:r.children[0];s instanceof HTMLElement&&s.className.startsWith("vpi-social-")&&(getComputedStyle(s).maskImage||getComputedStyle(s).webkitMaskImage)==="none"&&s.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const n=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,r)=>(o(),l("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:n.value},null,8,Xn))}}),xn=k(qn,[["__scopeId","data-v-d26d30cb"]]),ea={class:"VPSocialLinks"},ta=b({__name:"VPSocialLinks",props:{links:{}},setup(a){return(e,t)=>(o(),l("div",ea,[(o(!0),l(C,null,B(e.links,({link:n,icon:s,ariaLabel:r})=>(o(),$(xn,{key:n,icon:s,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ne=k(ta,[["__scopeId","data-v-ee7a9424"]]),sa={key:0,class:"group translations"},na={class:"trans-title"},aa={key:1,class:"group"},oa={class:"item appearance"},ra={class:"label"},ia={class:"appearance-action"},la={key:2,class:"group"},ca={class:"item social-links"},ua=b({__name:"VPNavBarExtra",setup(a){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:s}=Z({correspondingLink:!0}),r=y(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(c,v)=>r.value?(o(),$(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(n).length&&i(s).label?(o(),l("div",sa,[p("p",na,I(i(s).label),1),(o(!0),l(C,null,B(i(n),d=>(o(),$(se,{key:d.link,item:d},null,8,["item"]))),128))])):m("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",aa,[p("div",oa,[p("p",ra,I(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",ia,[g(ke)])])])):m("",!0),i(t).socialLinks?(o(),l("div",la,[p("div",ca,[g(ne,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),da=k(ua,[["__scopeId","data-v-925effce"]]),pa=["aria-expanded"],va=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(a){return(e,t)=>(o(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>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,pa))}}),fa=k(va,[["__scopeId","data-v-5dea55bf"]]),ma=["innerHTML"],ha=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,n)=>(o(),$(Q,{class:T({VPNavBarMenuLink:!0,active:i(J)(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,ma)]),_:1},8,["class","href","target","rel","no-icon"]))}}),_a=k(ha,[["__scopeId","data-v-956ec74c"]]),We=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(a){const e=a,{page:t}=V(),n=r=>"component"in r?!1:"link"in r?J(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),s=y(()=>n(e.item));return(r,c)=>(o(),$(ye,{class:T({VPNavBarMenuGroup:!0,active:i(J)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||s.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ba={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ga=b({__name:"VPNavBarMenu",setup(a){const{theme:e}=V();return(t,n)=>i(e).nav?(o(),l("nav",ba,[n[0]||(n[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),l(C,null,B(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(_a,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),R({key:1,ref_for:!0},s.props),null,16)):(o(),$(We,{key:2,item:s},null,8,["item"]))],64))),128))])):m("",!0)}}),ka=k(ga,[["__scopeId","data-v-e6d46098"]]);function $a(a){const{localeIndex:e,theme:t}=V();function n(s){var w,M,N;const r=s.split("."),c=(w=t.value.search)==null?void 0:w.options,v=c&&typeof c=="object",d=v&&((N=(M=c.locales)==null?void 0:M[e.value])==null?void 0:N.translations)||null,h=v&&c.translations||null;let A=d,_=h,P=a;const L=r.pop();for(const E of r){let U=null;const K=P==null?void 0:P[E];K&&(U=P=K);const ae=_==null?void 0:_[E];ae&&(U=_=ae);const oe=A==null?void 0:A[E];oe&&(U=A=oe),K||(P=U),ae||(_=U),oe||(A=U)}return(A==null?void 0:A[L])??(_==null?void 0:_[L])??(P==null?void 0:P[L])??""}return n}const ya=["aria-label"],Aa={class:"DocSearch-Button-Container"},Pa={class:"DocSearch-Button-Placeholder"},Pe=b({__name:"VPNavBarSearchButton",setup(a){const t=$a({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(o(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",Aa,[s[0]||(s[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Pa,I(i(t)("button.buttonText")),1)]),s[1]||(s[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ya))}}),La={class:"VPNavBarSearch"},Va={id:"local-search"},Sa={key:1,id:"docsearch"},Ia=b({__name:"VPNavBarSearch",setup(a){const e=Xe(()=>qe(()=>import("./VPLocalSearchBox.DwJcLahT.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=V(),s=S(!1),r=S(!1);O(()=>{});function c(){s.value||(s.value=!0,setTimeout(v,16))}function v(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function d(_){const P=_.target,L=P.tagName;return P.isContentEditable||L==="INPUT"||L==="SELECT"||L==="TEXTAREA"}const h=S(!1);le("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),h.value=!0)}),le("/",_=>{d(_)||(_.preventDefault(),h.value=!0)});const A="local";return(_,P)=>{var L;return o(),l("div",La,[i(A)==="local"?(o(),l(C,{key:0},[h.value?(o(),$(i(e),{key:0,onClose:P[0]||(P[0]=w=>h.value=!1)})):m("",!0),p("div",Va,[g(Pe,{onClick:P[1]||(P[1]=w=>h.value=!0)})])],64)):i(A)==="algolia"?(o(),l(C,{key:1},[s.value?(o(),$(i(t),{key:0,algolia:((L=i(n).search)==null?void 0:L.options)??i(n).algolia,onVnodeBeforeMount:P[2]||(P[2]=w=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(o(),l("div",Sa,[g(Pe,{onClick:c})]))],64)):m("",!0)])}}}),Na=b({__name:"VPNavBarSocialLinks",setup(a){const{theme:e}=V();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),Ta=k(Na,[["__scopeId","data-v-164c457f"]]),Ca=["href","rel","target"],wa=["innerHTML"],Ma={key:2},Ba=b({__name:"VPNavBarTitle",setup(a){const{site:e,theme:t}=V(),{hasSidebar:n}=D(),{currentLang:s}=Z(),r=y(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),c=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),v=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,h)=>(o(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(n)}])},[p("a",{class:"title",href:r.value??i(be)(i(s).link),rel:c.value,target:v.value},[u(d.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(o(),$(X,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):m("",!0),i(t).siteTitle?(o(),l("span",{key:1,innerHTML:i(t).siteTitle},null,8,wa)):i(t).siteTitle===void 0?(o(),l("span",Ma,I(i(e).title),1)):m("",!0),u(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ca)],2))}}),Ea=k(Ba,[["__scopeId","data-v-0f4f798b"]]),Qa={class:"items"},Ha={class:"title"},Fa=b({__name:"VPNavBarTranslations",setup(a){const{theme:e}=V(),{localeLinks:t,currentLang:n}=Z({correspondingLink:!0});return(s,r)=>i(t).length&&i(n).label?(o(),$(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Qa,[p("p",Ha,I(i(n).label),1),(o(!0),l(C,null,B(i(t),c=>(o(),$(se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Wa=k(Fa,[["__scopeId","data-v-c80d9ad0"]]),Oa={class:"wrapper"},Da={class:"container"},Ua={class:"title"},Ra={class:"content"},Ga={class:"content-body"},Ja=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(a){const e=a,{y:t}=Ce(),{hasSidebar:n}=D(),{frontmatter:s}=V(),r=S({});return me(()=>{r.value={"has-sidebar":n.value,home:s.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(c,v)=>(o(),l("div",{class:T(["VPNavBar",r.value])},[p("div",Oa,[p("div",Da,[p("div",Ua,[g(Ea,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)]),_:3})]),p("div",Ra,[p("div",Ga,[u(c.$slots,"nav-bar-content-before",{},void 0,!0),g(Ia,{class:"search"}),g(ka,{class:"menu"}),g(Wa,{class:"translations"}),g(Tn,{class:"appearance"}),g(Ta,{class:"social-links"}),g(da,{class:"extra"}),u(c.$slots,"nav-bar-content-after",{},void 0,!0),g(fa,{class:"hamburger",active:c.isScreenOpen,onClick:v[0]||(v[0]=d=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ka=k(Ja,[["__scopeId","data-v-822684d1"]]),ja={key:0,class:"VPNavScreenAppearance"},za={class:"text"},Za=b({__name:"VPNavScreenAppearance",setup(a){const{site:e,theme:t}=V();return(n,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",ja,[p("p",za,I(i(t).darkModeSwitchLabel||"Appearance"),1),g(ke)])):m("",!0)}}),Ya=k(Za,[["__scopeId","data-v-ffb44008"]]),Xa=["innerHTML"],qa=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(a){const e=j("close-screen");return(t,n)=>(o(),$(Q,{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,Xa)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),xa=k(qa,[["__scopeId","data-v-735512b8"]]),eo=["innerHTML"],to=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(a){const e=j("close-screen");return(t,n)=>(o(),$(Q,{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,eo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Oe=k(to,[["__scopeId","data-v-372ae7c0"]]),so={class:"VPNavScreenMenuGroupSection"},no={key:0,class:"title"},ao=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",so,[e.text?(o(),l("p",no,I(e.text),1)):m("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),$(Oe,{key:n.text,item:n},null,8,["item"]))),128))]))}}),oo=k(ao,[["__scopeId","data-v-4b8941ac"]]),ro=["aria-controls","aria-expanded"],io=["innerHTML"],lo=["id"],co={key:0,class:"item"},uo={key:1,class:"item"},po={key:2,class:"group"},vo=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(a){const e=a,t=S(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(r,c)=>(o(),l("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[p("span",{class:"button-text",innerHTML:r.text},null,8,io),c[0]||(c[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,ro),p("div",{id:n.value,class:"items"},[(o(!0),l(C,null,B(r.items,v=>(o(),l(C,{key:JSON.stringify(v)},["link"in v?(o(),l("div",co,[g(Oe,{item:v},null,8,["item"])])):"component"in v?(o(),l("div",uo,[(o(),$(H(v.component),R({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(o(),l("div",po,[g(oo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,lo)],2))}}),De=k(vo,[["__scopeId","data-v-875057a5"]]),fo={key:0,class:"VPNavScreenMenu"},mo=b({__name:"VPNavScreenMenu",setup(a){const{theme:e}=V();return(t,n)=>i(e).nav?(o(),l("nav",fo,[(o(!0),l(C,null,B(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(xa,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),R({key:1,ref_for:!0},s.props,{"screen-menu":""}),null,16)):(o(),$(De,{key:2,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),ho=b({__name:"VPNavScreenSocialLinks",setup(a){const{theme:e}=V();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),_o={class:"list"},bo=b({__name:"VPNavScreenTranslations",setup(a){const{localeLinks:e,currentLang:t}=Z({correspondingLink:!0}),n=S(!1);function s(){n.value=!n.value}return(r,c)=>i(e).length&&i(t).label?(o(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[p("button",{class:"title",onClick:s},[c[0]||(c[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),F(" "+I(i(t).label)+" ",1),c[1]||(c[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",_o,[(o(!0),l(C,null,B(i(e),v=>(o(),l("li",{key:v.link,class:"item"},[g(Q,{class:"link",href:v.link},{default:f(()=>[F(I(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),go=k(bo,[["__scopeId","data-v-362991c2"]]),ko={class:"container"},$o=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(a){const e=S(null),t=we(te?document.body:null);return(n,s)=>(o(),$(pe,{name:"fade",onEnter:s[0]||(s[0]=r=>t.value=!0),onAfterLeave:s[1]||(s[1]=r=>t.value=!1)},{default:f(()=>[n.open?(o(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ko,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),g(mo,{class:"menu"}),g(go,{class:"translations"}),g(Ya,{class:"appearance"}),g(ho,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),yo=k($o,[["__scopeId","data-v-833aabba"]]),Ao={key:0,class:"VPNav"},Po=b({__name:"VPNav",setup(a){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=kn(),{frontmatter:s}=V(),r=y(()=>s.value.navbar!==!1);return _e("close-screen",t),q(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(c,v)=>r.value?(o(),l("header",Ao,[g(Ka,{"is-screen-open":i(e),onToggleScreen:i(n)},{"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)]),_:3},8,["is-screen-open","onToggleScreen"]),g(yo,{open:i(e)},{"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},8,["open"])])):m("",!0)}}),Lo=k(Po,[["__scopeId","data-v-f1e365da"]]),Vo=["role","tabindex"],So={key:1,class:"items"},Io=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(a){const e=a,{collapsed:t,collapsible:n,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:d}=At(y(()=>e.item)),h=y(()=>v.value?"section":"div"),A=y(()=>s.value?"a":"div"),_=y(()=>v.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>s.value?void 0:"button"),L=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":r.value},{"has-active":c.value}]);function w(N){"key"in N&&N.key!=="Enter"||!e.item.link&&d()}function M(){e.item.link&&d()}return(N,E)=>{const U=G("VPSidebarItem",!0);return o(),$(H(h.value),{class:T(["VPSidebarItem",L.value])},{default:f(()=>[N.item.text?(o(),l("div",R({key:0,class:"item",role:P.value},xe(N.item.items?{click:w,keydown:w}:{},!0),{tabindex:N.item.items&&0}),[E[1]||(E[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(o(),$(Q,{key:0,tag:A.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(o(),$(H(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),$(H(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(o(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:M,onKeydown:et(M,["enter"]),tabindex:"0"},E[0]||(E[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):m("",!0)],16,Vo)):m("",!0),N.item.items&&N.item.items.length?(o(),l("div",So,[N.depth<5?(o(!0),l(C,{key:0},B(N.item.items,K=>(o(),$(U,{key:K.text,item:K,depth:N.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),No=k(Io,[["__scopeId","data-v-196b2e5f"]]),To=b({__name:"VPSidebarGroup",props:{items:{}},setup(a){const e=S(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),tt(()=>{t!=null&&(clearTimeout(t),t=null)}),(n,s)=>(o(!0),l(C,null,B(n.items,r=>(o(),l("div",{key:r.text,class:T(["group",{"no-transition":e.value}])},[g(No,{item:r,depth:0},null,8,["item"])],2))),128))}}),Co=k(To,[["__scopeId","data-v-9e426adc"]]),wo={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Mo=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(a){const{sidebarGroups:e,hasSidebar:t}=D(),n=a,s=S(null),r=we(te?document.body:null);W([n,s],()=>{var v;n.open?(r.value=!0,(v=s.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const c=S(0);return W(e,()=>{c.value+=1},{deep:!0}),(v,d)=>i(t)?(o(),l("aside",{key:0,class:T(["VPSidebar",{open:v.open}]),ref_key:"navEl",ref:s,onClick:d[0]||(d[0]=st(()=>{},["stop"]))},[d[2]||(d[2]=p("div",{class:"curtain"},null,-1)),p("nav",wo,[d[1]||(d[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(v.$slots,"sidebar-nav-before",{},void 0,!0),(o(),$(Co,{items:i(e),key:c.value},null,8,["items"])),u(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Bo=k(Mo,[["__scopeId","data-v-18756405"]]),Eo=b({__name:"VPSkipLink",setup(a){const e=ee(),t=S();W(()=>e.path,()=>t.value.focus());function n({target:s}){const r=document.getElementById(decodeURIComponent(s.hash).slice(1));if(r){const c=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",c)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",c),r.focus(),window.scrollTo(0,0)}}return(s,r)=>(o(),l(C,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),Qo=k(Eo,[["__scopeId","data-v-c3508ec8"]]),Ho=b({__name:"Layout",setup(a){const{isOpen:e,open:t,close:n}=D(),s=ee();W(()=>s.path,n),yt(e,n);const{frontmatter:r}=V(),c=Me(),v=y(()=>!!c["home-hero-image"]);return _e("hero-image-slot-exists",v),(d,h)=>{const A=G("Content");return i(r).layout!==!1?(o(),l("div",{key:0,class:T(["Layout",i(r).pageClass])},[u(d.$slots,"layout-top",{},void 0,!0),g(Qo),g(ct,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),g(Lo,null,{"nav-bar-title-before":f(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(gn,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),g(Bo,{open:i(e)},{"sidebar-nav-before":f(()=>[u(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[u(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(sn,null,{"page-top":f(()=>[u(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[u(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[u(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[u(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[u(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[u(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(ln),u(d.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),$(A,{key:1}))}}}),Fo=k(Ho,[["__scopeId","data-v-a9a9e638"]]),Wo={},Oo={class:"VPTeamPage"};function Do(a,e){return o(),l("div",Oo,[u(a.$slots,"default")])}const Fr=k(Wo,[["render",Do],["__scopeId","data-v-c2f8e101"]]),Uo={},Ro={class:"VPTeamPageTitle"},Go={key:0,class:"title"},Jo={key:1,class:"lead"};function Ko(a,e){return o(),l("div",Ro,[a.$slots.title?(o(),l("h1",Go,[u(a.$slots,"title",{},void 0,!0)])):m("",!0),a.$slots.lead?(o(),l("p",Jo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0)])}const Wr=k(Uo,[["render",Ko],["__scopeId","data-v-e277e15c"]]),jo={},zo={class:"VPTeamPageSection"},Zo={class:"title"},Yo={key:0,class:"title-text"},Xo={key:0,class:"lead"},qo={key:1,class:"members"};function xo(a,e){return o(),l("section",zo,[p("div",Zo,[e[0]||(e[0]=p("div",{class:"title-line"},null,-1)),a.$slots.title?(o(),l("h2",Yo,[u(a.$slots,"title",{},void 0,!0)])):m("",!0)]),a.$slots.lead?(o(),l("p",Xo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0),a.$slots.members?(o(),l("div",qo,[u(a.$slots,"members",{},void 0,!0)])):m("",!0)])}const Or=k(jo,[["render",xo],["__scopeId","data-v-d43bc49d"]]),er={class:"profile"},tr={class:"avatar"},sr=["src","alt"],nr={class:"data"},ar={class:"name"},or={key:0,class:"affiliation"},rr={key:0,class:"title"},ir={key:1,class:"at"},lr=["innerHTML"],cr={key:2,class:"links"},ur={key:0,class:"sp"},dr=b({__name:"VPTeamMembersItem",props:{size:{default:"medium"},member:{}},setup(a){return(e,t)=>(o(),l("article",{class:T(["VPTeamMembersItem",[e.size]])},[p("div",er,[p("figure",tr,[p("img",{class:"avatar-img",src:e.member.avatar,alt:e.member.name},null,8,sr)]),p("div",nr,[p("h1",ar,I(e.member.name),1),e.member.title||e.member.org?(o(),l("p",or,[e.member.title?(o(),l("span",rr,I(e.member.title),1)):m("",!0),e.member.title&&e.member.org?(o(),l("span",ir," @ ")):m("",!0),e.member.org?(o(),$(Q,{key:2,class:T(["org",{link:e.member.orgLink}]),href:e.member.orgLink,"no-icon":""},{default:f(()=>[F(I(e.member.org),1)]),_:1},8,["class","href"])):m("",!0)])):m("",!0),e.member.desc?(o(),l("p",{key:1,class:"desc",innerHTML:e.member.desc},null,8,lr)):m("",!0),e.member.links?(o(),l("div",cr,[g(ne,{links:e.member.links},null,8,["links"])])):m("",!0)])]),e.member.sponsor?(o(),l("div",ur,[g(Q,{class:"sp-link",href:e.member.sponsor,"no-icon":""},{default:f(()=>[t[0]||(t[0]=p("span",{class:"vpi-heart sp-icon"},null,-1)),F(" "+I(e.member.actionText||"Sponsor"),1)]),_:1},8,["href"])])):m("",!0)],2))}}),pr=k(dr,[["__scopeId","data-v-f9987cb6"]]),vr={class:"container"},fr=b({__name:"VPTeamMembers",props:{size:{default:"medium"},members:{}},setup(a){const e=a,t=y(()=>[e.size,`count-${e.members.length}`]);return(n,s)=>(o(),l("div",{class:T(["VPTeamMembers",t.value])},[p("div",vr,[(o(!0),l(C,null,B(n.members,r=>(o(),l("div",{key:r.name,class:"item"},[g(pr,{size:n.size,member:r},null,8,["size","member"])]))),128))])],2))}}),Dr=k(fr,[["__scopeId","data-v-fba19bad"]]),Le={Layout:Fo,enhanceApp:({app:a})=>{a.component("Badge",rt)}},mr={},hr={style:{"text-align":"center"}};function _r(a,e){const t=G("font");return o(),l(C,null,[e[1]||(e[1]=p("br",null,null,-1)),p("h1",hr,[p("strong",null,[g(t,{color:"orange"},{default:f(()=>e[0]||(e[0]=[F(" Package Ecosystem")])),_:1})])]),e[2]||(e[2]=nt('

Read n-d array like-data

DiskArrays.jl

Get your chunks!

Named Dimensions

DimensionalData.jl

Select & Index!

Out of memory data

Zarr.jl

Chunkerd, compressed !

Rasterized spatial data

Rasters.jl

Read and manipulate !

Array-oriented data

NetCDF.jl

Scientific binary data.

Raster and vector data

ArchGDAL.jl

GDAL in Julia.

An interface for

GeoInterface.jl

geospatial data in Julia.

A higher level interface

GRIBDatasets.jl

for reading GRIB files.

Array-oriented data

NCDatasets.jl

Scientific binary data.

',9))],64)}const br=k(mr,[["render",_r]]),gr=b({__name:"VersionPicker",props:{screenMenu:{type:Boolean}},setup(a){const e=S([]),t=S("Versions"),n=S(!1);Se();const s=()=>typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),r=()=>{if(typeof window>"u")return"";const{origin:d,pathname:h}=window.location;if(d.includes("github.io")){const A=h.split("/").filter(Boolean),_=A.length>0?`/${A[0]}/`:"/";return`${d}${_}`}else return d},c=()=>new Promise(d=>{if(s()){d(!1);return}const h=setInterval(()=>{window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION&&(clearInterval(h),d(!0))},100);setTimeout(()=>{clearInterval(h),d(!1)},5e3)});return O(async()=>{if(!(typeof window>"u")){try{if(s()){const d=["dev"];e.value=d.map(h=>({text:h,link:"/"})),t.value="dev"}else{const d=await c(),h=y(()=>r());if(d&&window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION)e.value=window.DOC_VERSIONS.map(A=>({text:A,link:`${h.value}/${A}/`})),t.value=window.DOCUMENTER_CURRENT_VERSION;else{const A=["dev"];e.value=A.map(_=>({text:_,link:`${h.value}/${_}/`})),t.value="dev"}}}catch(d){console.warn("Error loading versions:",d);const h=["dev"],A=y(()=>r());e.value=h.map(_=>({text:_,link:`${A.value}/${_}/`})),t.value="dev"}n.value=!0}}),(d,h)=>n.value?(o(),l(C,{key:0},[!d.screenMenu&&e.value.length>0?(o(),$(We,{key:0,item:{text:t.value,items:e.value},class:"VPVersionPicker"},null,8,["item"])):d.screenMenu&&e.value.length>0?(o(),$(De,{key:1,text:t.value,items:e.value,class:"VPVersionPicker"},null,8,["text","items"])):m("",!0)],64)):m("",!0)}}),kr=k(gr,[["__scopeId","data-v-f465cb49"]]),$r=a=>{if(typeof document>"u")return{stabilizeScrollPosition:s=>async(...r)=>s(...r)};const e=document.documentElement;return{stabilizeScrollPosition:n=>async(...s)=>{const r=n(...s),c=a.value;if(!c)return r;const v=c.offsetTop-e.scrollTop;return await he(),e.scrollTop=c.offsetTop-v,r}}},Ue="vitepress:tabSharedState",z=typeof localStorage<"u"?localStorage:null,Re="vitepress:tabsSharedState",yr=()=>{const a=z==null?void 0:z.getItem(Re);if(a)try{return JSON.parse(a)}catch{}return{}},Ar=a=>{z&&z.setItem(Re,JSON.stringify(a))},Pr=a=>{const e=at({});W(()=>e.content,(t,n)=>{t&&n&&Ar(t)},{deep:!0}),a.provide(Ue,e)},Lr=(a,e)=>{const t=j(Ue);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");O(()=>{t.content||(t.content=yr())});const n=S(),s=y({get(){var d;const c=e.value,v=a.value;if(c){const h=(d=t.content)==null?void 0:d[c];if(h&&v.includes(h))return h}else{const h=n.value;if(h)return h}return v[0]},set(c){const v=e.value;v?t.content&&(t.content[v]=c):n.value=c}});return{selected:s,select:c=>{s.value=c}}};let Ve=0;const Vr=()=>(Ve++,""+Ve);function Sr(){const a=Me();return y(()=>{var n;const t=(n=a.default)==null?void 0:n.call(a);return t?t.filter(s=>typeof s.type=="object"&&"__name"in s.type&&s.type.__name==="PluginTabsTab"&&s.props).map(s=>{var r;return(r=s.props)==null?void 0:r.label}):[]})}const Ge="vitepress:tabSingleState",Ir=a=>{_e(Ge,a)},Nr=()=>{const a=j(Ge);if(!a)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return a},Tr={class:"plugin-tabs"},Cr=["id","aria-selected","aria-controls","tabindex","onClick"],wr=b({__name:"PluginTabs",props:{sharedStateKey:{}},setup(a){const e=a,t=Sr(),{selected:n,select:s}=Lr(t,ot(e,"sharedStateKey")),r=S(),{stabilizeScrollPosition:c}=$r(r),v=c(s),d=S([]),h=_=>{var w;const P=t.value.indexOf(n.value);let L;_.key==="ArrowLeft"?L=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(L=P(o(),l("div",Tr,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:h},[(o(!0),l(C,null,B(i(t),L=>(o(),l("button",{id:`tab-${L}-${i(A)}`,ref_for:!0,ref_key:"buttonRefs",ref:d,key:L,role:"tab",class:"plugin-tabs--tab","aria-selected":L===i(n),"aria-controls":`panel-${L}-${i(A)}`,tabindex:L===i(n)?0:-1,onClick:()=>i(v)(L)},I(L),9,Cr))),128))],544),u(_.$slots,"default")]))}}),Mr=["id","aria-labelledby"],Br=b({__name:"PluginTabsTab",props:{label:{}},setup(a){const{uid:e,selected:t}=Nr();return(n,s)=>i(t)===n.label?(o(),l("div",{key:0,id:`panel-${n.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${n.label}-${i(e)}`},[u(n.$slots,"default",{},void 0,!0)],8,Mr)):m("",!0)}}),Er=k(Br,[["__scopeId","data-v-9b0d03d2"]]),Qr=a=>{Pr(a),a.component("PluginTabs",wr),a.component("PluginTabsTab",Er)},Ur={extends:Le,Layout(){return Ae(Le.Layout,null,{"aside-ads-before":()=>Ae(br)})},enhanceApp({app:a,router:e,siteData:t}){Qr(a),a.component("VersionPicker",kr)}};export{Ur as R,Wr as V,Dr as a,Or as b,Fr as c,$a as d,V as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DPA6Cfil.js","assets/chunks/framework.CmUrV9pg.js"])))=>i.map(i=>d[i]); +import{d as b,o,c as l,r as u,n as T,a as F,t as I,b as $,w as f,e as m,T as pe,_ as k,u as Se,i as Je,f as Ke,g as ve,h as y,j as p,k as i,l as J,m as ie,p as S,q as W,s as q,v as O,x as fe,y as me,z as je,A as ze,B as G,F as C,C as B,D as Ie,E as x,G as g,H,I as Ne,J as ee,K as R,L as j,M as Ze,N as Te,O as le,P as he,Q as Ce,R as te,S as Ye,U as Xe,V as qe,W as we,X as _e,Y as xe,Z as et,$ as tt,a0 as st,a1 as Me,a2 as nt,a3 as at,a4 as ot,a5 as Ae}from"./framework.CmUrV9pg.js";const rt=b({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(a){return(e,t)=>(o(),l("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[F(I(e.text),1)])],2))}}),it={key:0,class:"VPBackdrop"},lt=b({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(a){return(e,t)=>(o(),$(pe,{name:"fade"},{default:f(()=>[e.show?(o(),l("div",it)):m("",!0)]),_:1}))}}),ct=k(lt,[["__scopeId","data-v-b06cdb19"]]),V=Se;function ut(a,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(a,e):(a(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ce(a){return/^\//.test(a)?a:`/${a}`}function be(a){const{pathname:e,search:t,hash:n,protocol:s}=new URL(a,"http://a.com");if(Je(a)||a.startsWith("#")||!s.startsWith("http")||!Ke(e))return a;const{site:r}=V(),c=e.endsWith("/")||e.endsWith(".html")?a:a.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return ve(c)}function Z({correspondingLink:a=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:r}=V(),c=y(()=>{var d,h;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:((h=e.value.locales[t.value])==null?void 0:h.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([d,h])=>c.value.label===h.label?[]:{text:h.label,link:dt(h.link||(d==="root"?"/":`/${d}/`),s.value.i18nRouting!==!1&&a,n.value.relativePath.slice(c.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:c}}function dt(a,e,t,n){return e?a.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):a}const pt={class:"NotFound"},vt={class:"code"},ft={class:"title"},mt={class:"quote"},ht={class:"action"},_t=["href","aria-label"],bt=b({__name:"NotFound",setup(a){const{theme:e}=V(),{currentLang:t}=Z();return(n,s)=>{var r,c,v,d,h;return o(),l("div",pt,[p("p",vt,I(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",ft,I(((c=i(e).notFound)==null?void 0:c.title)??"PAGE NOT FOUND"),1),s[0]||(s[0]=p("div",{class:"divider"},null,-1)),p("blockquote",mt,I(((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",ht,[p("a",{class:"link",href:i(ve)(i(t).link),"aria-label":((d=i(e).notFound)==null?void 0:d.linkLabel)??"go to home"},I(((h=i(e).notFound)==null?void 0:h.linkText)??"Take me home"),9,_t)])])}}}),gt=k(bt,[["__scopeId","data-v-951cab6c"]]);function Be(a,e){if(Array.isArray(a))return Y(a);if(a==null)return[];e=ce(e);const t=Object.keys(a).sort((s,r)=>r.split("/").length-s.split("/").length).find(s=>e.startsWith(ce(s))),n=t?a[t]:[];return Array.isArray(n)?Y(n):Y(n.items,n.base)}function kt(a){const e=[];let t=0;for(const n in a){const s=a[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function $t(a){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(a),e}function ue(a,e){return Array.isArray(e)?e.some(t=>ue(a,t)):J(a,e.link)?!0:e.items?ue(a,e.items):!1}function Y(a,e){return[...a].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Y(n.items,s)),n})}function D(){const{frontmatter:a,page:e,theme:t}=V(),n=ie("(min-width: 960px)"),s=S(!1),r=y(()=>{const M=t.value.sidebar,N=e.value.relativePath;return M?Be(M,N):[]}),c=S(r.value);W(r,(M,N)=>{JSON.stringify(M)!==JSON.stringify(N)&&(c.value=r.value)});const v=y(()=>a.value.sidebar!==!1&&c.value.length>0&&a.value.layout!=="home"),d=y(()=>h?a.value.aside==null?t.value.aside==="left":a.value.aside==="left":!1),h=y(()=>a.value.layout==="home"?!1:a.value.aside!=null?!!a.value.aside:t.value.aside!==!1),A=y(()=>v.value&&n.value),_=y(()=>v.value?kt(c.value):[]);function P(){s.value=!0}function L(){s.value=!1}function w(){s.value?L():P()}return{isOpen:s,sidebar:c,sidebarGroups:_,hasSidebar:v,hasAside:h,leftAside:d,isSidebarEnabled:A,open:P,close:L,toggle:w}}function yt(a,e){let t;q(()=>{t=a.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",n)}),fe(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&a.value&&(e(),t==null||t.focus())}}function At(a){const{page:e,hash:t}=V(),n=S(!1),s=y(()=>a.value.collapsed!=null),r=y(()=>!!a.value.link),c=S(!1),v=()=>{c.value=J(e.value.relativePath,a.value.link)};W([e,a,t],v),O(v);const d=y(()=>c.value?!0:a.value.items?ue(e.value.relativePath,a.value.items):!1),h=y(()=>!!(a.value.items&&a.value.items.length));q(()=>{n.value=!!(s.value&&a.value.collapsed)}),me(()=>{(c.value||d.value)&&(n.value=!1)});function A(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:r,isActiveLink:c,hasActiveLink:d,hasChildren:h,toggle:A}}function Pt(){const{hasSidebar:a}=D(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:a.value?t.value:e.value)}}const de=[];function Ee(a){return typeof a.outline=="object"&&!Array.isArray(a.outline)&&a.outline.label||a.outlineTitle||"On this page"}function ge(a){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:Lt(t),link:"#"+t.id,level:n}});return Vt(e,a)}function Lt(a){let e="";for(const t of a.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 Vt(a,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Nt(a,n,s)}function St(a,e){const{isAsideEnabled:t}=Pt(),n=ut(r,100);let s=null;O(()=>{requestAnimationFrame(r),window.addEventListener("scroll",n)}),je(()=>{c(location.hash)}),fe(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const v=window.scrollY,d=window.innerHeight,h=document.body.offsetHeight,A=Math.abs(v+d-h)<1,_=de.map(({element:L,link:w})=>({link:w,top:It(L)})).filter(({top:L})=>!Number.isNaN(L)).sort((L,w)=>L.top-w.top);if(!_.length){c(null);return}if(v<1){c(null);return}if(A){c(_[_.length-1].link);return}let P=null;for(const{link:L,top:w}of _){if(w>v+ze()+4)break;P=L}c(P)}function c(v){s&&s.classList.remove("active"),v==null?s=null:s=a.value.querySelector(`a[href="${decodeURIComponent(v)}"]`);const d=s;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function It(a){let e=0;for(;a!==document.body;){if(a===null)return NaN;e+=a.offsetTop,a=a.offsetParent}return e}function Nt(a,e,t){de.length=0;const n=[],s=[];return a.forEach(r=>{const c={...r,children:[]};let v=s[s.length-1];for(;v&&v.level>=c.level;)s.pop(),v=s[s.length-1];if(c.element.classList.contains("ignore-header")||v&&"shouldIgnore"in v){s.push({level:c.level,shouldIgnore:!0});return}c.level>t||c.level{const s=G("VPDocOutlineItem",!0);return o(),l("ul",{class:T(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),l(C,null,B(t.headers,({children:r,link:c,title:v})=>(o(),l("li",null,[p("a",{class:"outline-link",href:c,onClick:e,title:v},I(v),9,Tt),r!=null&&r.length?(o(),$(s,{key:0,headers:r},null,8,["headers"])):m("",!0)]))),256))],2)}}}),Qe=k(Ct,[["__scopeId","data-v-3f927ebe"]]),wt={class:"content"},Mt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Bt=b({__name:"VPDocAsideOutline",setup(a){const{frontmatter:e,theme:t}=V(),n=Ie([]);x(()=>{n.value=ge(e.value.outline??t.value.outline)});const s=S(),r=S();return St(s,r),(c,v)=>(o(),l("nav",{"aria-labelledby":"doc-outline-aria-label",class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[p("div",wt,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",Mt,I(i(Ee)(i(t))),1),g(Qe,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Et=k(Bt,[["__scopeId","data-v-b38bf2ff"]]),Qt={class:"VPDocAsideCarbonAds"},Ht=b({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(a){const e=()=>null;return(t,n)=>(o(),l("div",Qt,[g(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft={class:"VPDocAside"},Wt=b({__name:"VPDocAside",setup(a){const{theme:e}=V();return(t,n)=>(o(),l("div",Ft,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),g(Et),u(t.$slots,"aside-outline-after",{},void 0,!0),n[0]||(n[0]=p("div",{class:"spacer"},null,-1)),u(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(o(),$(Ht,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):m("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ot=k(Wt,[["__scopeId","data-v-6d7b3c46"]]);function Dt(){const{theme:a,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:n=""}=a.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Ut(){const{page:a,theme:e,frontmatter:t}=V();return y(()=>{var h,A,_,P,L,w,M,N;const n=Be(e.value.sidebar,a.value.relativePath),s=$t(n),r=Rt(s,E=>E.link.replace(/[?#].*$/,"")),c=r.findIndex(E=>J(a.value.relativePath,E.link)),v=((h=e.value.docFooter)==null?void 0:h.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((A=e.value.docFooter)==null?void 0:A.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)??((_=r[c-1])==null?void 0:_.docFooterText)??((P=r[c-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((L=r[c-1])==null?void 0:L.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((w=r[c+1])==null?void 0:w.docFooterText)??((M=r[c+1])==null?void 0:M.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[c+1])==null?void 0:N.link)}}})}function Rt(a,e){const t=new Set;return a.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const Q=b({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Ne.test(e.href)||e.target==="_blank");return(s,r)=>(o(),$(H(t.value),{class:T(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?i(be)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:f(()=>[u(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},Jt=["datetime"],Kt=b({__name:"VPDocFooterLastUpdated",setup(a){const{theme:e,page:t,lang:n}=V(),s=y(()=>new Date(t.value.lastUpdated)),r=y(()=>s.value.toISOString()),c=S("");return O(()=>{q(()=>{var v,d,h;c.value=new Intl.DateTimeFormat((d=(v=e.value.lastUpdated)==null?void 0:v.formatOptions)!=null&&d.forceLocale?n.value:void 0,((h=e.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(s.value)})}),(v,d)=>{var h;return o(),l("p",Gt,[F(I(((h=i(e).lastUpdated)==null?void 0:h.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},I(c.value),9,Jt)])}}}),jt=k(Kt,[["__scopeId","data-v-475f71b8"]]),zt={key:0,class:"VPDocFooter"},Zt={key:0,class:"edit-info"},Yt={key:0,class:"edit-link"},Xt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},xt={class:"pager"},es=["innerHTML"],ts=["innerHTML"],ss={class:"pager"},ns=["innerHTML"],as=["innerHTML"],os=b({__name:"VPDocFooter",setup(a){const{theme:e,page:t,frontmatter:n}=V(),s=Dt(),r=Ut(),c=y(()=>e.value.editLink&&n.value.editLink!==!1),v=y(()=>t.value.lastUpdated),d=y(()=>c.value||v.value||r.value.prev||r.value.next);return(h,A)=>{var _,P,L,w;return d.value?(o(),l("footer",zt,[u(h.$slots,"doc-footer-before",{},void 0,!0),c.value||v.value?(o(),l("div",Zt,[c.value?(o(),l("div",Yt,[g(Q,{class:"edit-link-button",href:i(s).url,"no-icon":!0},{default:f(()=>[A[0]||(A[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),F(" "+I(i(s).text),1)]),_:1},8,["href"])])):m("",!0),v.value?(o(),l("div",Xt,[g(jt)])):m("",!0)])):m("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(o(),l("nav",qt,[A[1]||(A[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",xt,[(L=i(r).prev)!=null&&L.link?(o(),$(Q,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var M;return[p("span",{class:"desc",innerHTML:((M=i(e).docFooter)==null?void 0:M.prev)||"Previous page"},null,8,es),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,ts)]}),_:1},8,["href"])):m("",!0)]),p("div",ss,[(w=i(r).next)!=null&&w.link?(o(),$(Q,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var M;return[p("span",{class:"desc",innerHTML:((M=i(e).docFooter)==null?void 0:M.next)||"Next page"},null,8,ns),p("span",{class:"title",innerHTML:i(r).next.text},null,8,as)]}),_:1},8,["href"])):m("",!0)])])):m("",!0)])):m("",!0)}}}),rs=k(os,[["__scopeId","data-v-4f9813fa"]]),is={class:"container"},ls={class:"aside-container"},cs={class:"aside-content"},us={class:"content"},ds={class:"content-container"},ps={class:"main"},vs=b({__name:"VPDoc",setup(a){const{theme:e}=V(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:r}=D(),c=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(v,d)=>{const h=G("Content");return o(),l("div",{class:T(["VPDoc",{"has-sidebar":i(n),"has-aside":i(s)}])},[u(v.$slots,"doc-top",{},void 0,!0),p("div",is,[i(s)?(o(),l("div",{key:0,class:T(["aside",{"left-aside":i(r)}])},[d[0]||(d[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",ls,[p("div",cs,[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)):m("",!0),p("div",us,[p("div",ds,[u(v.$slots,"doc-before",{},void 0,!0),p("main",ps,[g(h,{class:T(["vp-doc",[c.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),g(rs,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)}}}),fs=k(vs,[["__scopeId","data-v-83890dd9"]]),ms=b({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.href&&Ne.test(e.href)),n=y(()=>e.tag||(e.href?"a":"button"));return(s,r)=>(o(),$(H(n.value),{class:T(["VPButton",[s.size,s.theme]]),href:s.href?i(be)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[F(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),hs=k(ms,[["__scopeId","data-v-906d7fb4"]]),_s=["src","alt"],bs=b({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(a){return(e,t)=>{const n=G("VPImage",!0);return e.image?(o(),l(C,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),l("img",R({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,_s)):(o(),l(C,{key:1},[g(n,R({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),g(n,R({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):m("",!0)}}}),X=k(bs,[["__scopeId","data-v-35a7d0b8"]]),gs={class:"container"},ks={class:"main"},$s={key:0,class:"name"},ys=["innerHTML"],As=["innerHTML"],Ps=["innerHTML"],Ls={key:0,class:"actions"},Vs={key:0,class:"image"},Ss={class:"image-container"},Is=b({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(a){const e=j("hero-image-slot-exists");return(t,n)=>(o(),l("div",{class:T(["VPHero",{"has-image":t.image||i(e)}])},[p("div",gs,[p("div",ks,[u(t.$slots,"home-hero-info-before",{},void 0,!0),u(t.$slots,"home-hero-info",{},()=>[t.name?(o(),l("h1",$s,[p("span",{innerHTML:t.name,class:"clip"},null,8,ys)])):m("",!0),t.text?(o(),l("p",{key:1,innerHTML:t.text,class:"text"},null,8,As)):m("",!0),t.tagline?(o(),l("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Ps)):m("",!0)],!0),u(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(o(),l("div",Ls,[(o(!0),l(C,null,B(t.actions,s=>(o(),l("div",{key:s.link,class:"action"},[g(hs,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):m("",!0),u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(o(),l("div",Vs,[p("div",Ss,[n[0]||(n[0]=p("div",{class:"image-bg"},null,-1)),u(t.$slots,"home-hero-image",{},()=>[t.image?(o(),$(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):m("",!0)],!0)])])):m("",!0)])],2))}}),Ns=k(Is,[["__scopeId","data-v-955009fc"]]),Ts=b({__name:"VPHomeHero",setup(a){const{frontmatter:e}=V();return(t,n)=>i(e).hero?(o(),$(Ns,{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"])):m("",!0)}}),Cs={class:"box"},ws={key:0,class:"icon"},Ms=["innerHTML"],Bs=["innerHTML"],Es=["innerHTML"],Qs={key:4,class:"link-text"},Hs={class:"link-text-value"},Fs=b({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(a){return(e,t)=>(o(),$(Q,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",Cs,[typeof e.icon=="object"&&e.icon.wrap?(o(),l("div",ws,[g(X,{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"?(o(),$(X,{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?(o(),l("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Ms)):m("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Bs),e.details?(o(),l("p",{key:3,class:"details",innerHTML:e.details},null,8,Es)):m("",!0),e.linkText?(o(),l("div",Qs,[p("p",Hs,[F(I(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):m("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Ws=k(Fs,[["__scopeId","data-v-f5e9645b"]]),Os={key:0,class:"VPFeatures"},Ds={class:"container"},Us={class:"items"},Rs=b({__name:"VPFeatures",props:{features:{}},setup(a){const e=a,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(o(),l("div",Os,[p("div",Ds,[p("div",Us,[(o(!0),l(C,null,B(n.features,r=>(o(),l("div",{key:r.title,class:T(["item",[t.value]])},[g(Ws,{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))])])])):m("",!0)}}),Gs=k(Rs,[["__scopeId","data-v-d0a190d7"]]),Js=b({__name:"VPHomeFeatures",setup(a){const{frontmatter:e}=V();return(t,n)=>i(e).features?(o(),$(Gs,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):m("",!0)}}),Ks=b({__name:"VPHomeContent",setup(a){const{width:e}=Ze({initialWidth:0,includeScrollbar:!1});return(t,n)=>(o(),l("div",{class:"vp-doc container",style:Te(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[u(t.$slots,"default",{},void 0,!0)],4))}}),js=k(Ks,[["__scopeId","data-v-7a48a447"]]),zs={class:"VPHome"},Zs=b({__name:"VPHome",setup(a){const{frontmatter:e}=V();return(t,n)=>{const s=G("Content");return o(),l("div",zs,[u(t.$slots,"home-hero-before",{},void 0,!0),g(Ts,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(Js),u(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(o(),$(js,{key:0},{default:f(()=>[g(s)]),_:1})):(o(),$(s,{key:1}))])}}}),Ys=k(Zs,[["__scopeId","data-v-cbb6ec48"]]),Xs={},qs={class:"VPPage"};function xs(a,e){const t=G("Content");return o(),l("div",qs,[u(a.$slots,"page-top"),g(t),u(a.$slots,"page-bottom")])}const en=k(Xs,[["render",xs]]),tn=b({__name:"VPContent",setup(a){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=D();return(s,r)=>(o(),l("div",{class:T(["VPContent",{"has-sidebar":i(n),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?u(s.$slots,"not-found",{key:0},()=>[g(gt)],!0):i(t).layout==="page"?(o(),$(en,{key:1},{"page-top":f(()=>[u(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(o(),$(Ys,{key:2},{"home-hero-before":f(()=>[u(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(o(),$(H(i(t).layout),{key:3})):(o(),$(fs,{key:4},{"doc-top":f(()=>[u(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[u(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[u(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[u(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[u(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),sn=k(tn,[["__scopeId","data-v-91765379"]]),nn={class:"container"},an=["innerHTML"],on=["innerHTML"],rn=b({__name:"VPFooter",setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=D();return(s,r)=>i(e).footer&&i(t).footer!==!1?(o(),l("footer",{key:0,class:T(["VPFooter",{"has-sidebar":i(n)}])},[p("div",nn,[i(e).footer.message?(o(),l("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,an)):m("",!0),i(e).footer.copyright?(o(),l("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,on)):m("",!0)])],2)):m("",!0)}}),ln=k(rn,[["__scopeId","data-v-c970a860"]]);function cn(){const{theme:a,frontmatter:e}=V(),t=Ie([]),n=y(()=>t.value.length>0);return x(()=>{t.value=ge(e.value.outline??a.value.outline)}),{headers:t,hasLocalNav:n}}const un={class:"menu-text"},dn={class:"header"},pn={class:"outline"},vn=b({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(a){const e=a,{theme:t}=V(),n=S(!1),s=S(0),r=S(),c=S();function v(_){var P;(P=r.value)!=null&&P.contains(_.target)||(n.value=!1)}W(n,_=>{if(_){document.addEventListener("click",v);return}document.removeEventListener("click",v)}),le("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function d(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function h(_){_.target.classList.contains("outline-link")&&(c.value&&(c.value.style.transition="none"),he(()=>{n.value=!1}))}function A(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(o(),l("div",{class:"VPLocalNavOutlineDropdown",style:Te({"--vp-vh":s.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(o(),l("button",{key:0,onClick:d,class:T({open:n.value})},[p("span",un,I(i(Ee)(i(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),l("button",{key:1,onClick:A},I(i(t).returnToTopLabel||"Return to top"),1)),g(pe,{name:"flyout"},{default:f(()=>[n.value?(o(),l("div",{key:0,ref_key:"items",ref:c,class:"items",onClick:h},[p("div",dn,[p("a",{class:"top-link",href:"#",onClick:A},I(i(t).returnToTopLabel||"Return to top"),1)]),p("div",pn,[g(Qe,{headers:_.headers},null,8,["headers"])])],512)):m("",!0)]),_:1})],4))}}),fn=k(vn,[["__scopeId","data-v-bc9dc845"]]),mn={class:"container"},hn=["aria-expanded"],_n={class:"menu-text"},bn=b({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=D(),{headers:s}=cn(),{y:r}=Ce(),c=S(0);O(()=>{c.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=ge(t.value.outline??e.value.outline)});const v=y(()=>s.value.length===0),d=y(()=>v.value&&!n.value),h=y(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:v.value,fixed:d.value}));return(A,_)=>i(t).layout!=="home"&&(!d.value||i(r)>=c.value)?(o(),l("div",{key:0,class:T(h.value)},[p("div",mn,[i(n)?(o(),l("button",{key:0,class:"menu","aria-expanded":A.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>A.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",_n,I(i(e).sidebarMenuLabel||"Menu"),1)],8,hn)):m("",!0),g(fn,{headers:i(s),navHeight:c.value},null,8,["headers","navHeight"])])],2)):m("",!0)}}),gn=k(bn,[["__scopeId","data-v-070ab83d"]]);function kn(){const a=S(!1);function e(){a.value=!0,window.addEventListener("resize",s)}function t(){a.value=!1,window.removeEventListener("resize",s)}function n(){a.value?t():e()}function s(){window.outerWidth>=768&&t()}const r=ee();return W(()=>r.path,t),{isScreenOpen:a,openScreen:e,closeScreen:t,toggleScreen:n}}const $n={},yn={class:"VPSwitch",type:"button",role:"switch"},An={class:"check"},Pn={key:0,class:"icon"};function Ln(a,e){return o(),l("button",yn,[p("span",An,[a.$slots.default?(o(),l("span",Pn,[u(a.$slots,"default",{},void 0,!0)])):m("",!0)])])}const Vn=k($n,[["render",Ln],["__scopeId","data-v-4a1c76db"]]),Sn=b({__name:"VPSwitchAppearance",setup(a){const{isDark:e,theme:t}=V(),n=j("toggle-appearance",()=>{e.value=!e.value}),s=S("");return me(()=>{s.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,c)=>(o(),$(Vn,{title:s.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(n)},{default:f(()=>c[0]||(c[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=k(Sn,[["__scopeId","data-v-e40a8bb6"]]),In={key:0,class:"VPNavBarAppearance"},Nn=b({__name:"VPNavBarAppearance",setup(a){const{site:e}=V();return(t,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",In,[g(ke)])):m("",!0)}}),Tn=k(Nn,[["__scopeId","data-v-af096f4a"]]),$e=S();let He=!1,re=0;function Cn(a){const e=S(!1);if(te){!He&&wn(),re++;const t=W($e,n=>{var s,r,c;n===a.el.value||(s=a.el.value)!=null&&s.contains(n)?(e.value=!0,(r=a.onFocus)==null||r.call(a)):(e.value=!1,(c=a.onBlur)==null||c.call(a))});fe(()=>{t(),re--,re||Mn()})}return Ye(e)}function wn(){document.addEventListener("focusin",Fe),He=!0,$e.value=document.activeElement}function Mn(){document.removeEventListener("focusin",Fe)}function Fe(){$e.value=document.activeElement}const Bn={class:"VPMenuLink"},En=["innerHTML"],Qn=b({__name:"VPMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,n)=>(o(),l("div",Bn,[g(Q,{class:T({active:i(J)(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,En)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),se=k(Qn,[["__scopeId","data-v-acbfed09"]]),Hn={class:"VPMenuGroup"},Fn={key:0,class:"title"},Wn=b({__name:"VPMenuGroup",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",Hn,[e.text?(o(),l("p",Fn,I(e.text),1)):m("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),l(C,null,["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):m("",!0)],64))),256))]))}}),On=k(Wn,[["__scopeId","data-v-48c802d0"]]),Dn={class:"VPMenu"},Un={key:0,class:"items"},Rn=b({__name:"VPMenu",props:{items:{}},setup(a){return(e,t)=>(o(),l("div",Dn,[e.items?(o(),l("div",Un,[(o(!0),l(C,null,B(e.items,n=>(o(),l(C,{key:JSON.stringify(n)},["link"in n?(o(),$(se,{key:0,item:n},null,8,["item"])):"component"in n?(o(),$(H(n.component),R({key:1,ref_for:!0},n.props),null,16)):(o(),$(On,{key:2,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):m("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Gn=k(Rn,[["__scopeId","data-v-7dd3104a"]]),Jn=["aria-expanded","aria-label"],Kn={key:0,class:"text"},jn=["innerHTML"],zn={key:1,class:"vpi-more-horizontal icon"},Zn={class:"menu"},Yn=b({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(a){const e=S(!1),t=S();Cn({el:t,onBlur:n});function n(){e.value=!1}return(s,r)=>(o(),l("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=c=>e.value=!0),onMouseleave:r[2]||(r[2]=c=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:r[0]||(r[0]=c=>e.value=!e.value)},[s.button||s.icon?(o(),l("span",Kn,[s.icon?(o(),l("span",{key:0,class:T([s.icon,"option-icon"])},null,2)):m("",!0),s.button?(o(),l("span",{key:1,innerHTML:s.button},null,8,jn)):m("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),l("span",zn))],8,Jn),p("div",Zn,[g(Gn,{items:s.items},{default:f(()=>[u(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=k(Yn,[["__scopeId","data-v-04f5c5e9"]]),Xn=["href","aria-label","innerHTML"],qn=b({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(a){const e=a,t=S();O(async()=>{var r;await he();const s=(r=t.value)==null?void 0:r.children[0];s instanceof HTMLElement&&s.className.startsWith("vpi-social-")&&(getComputedStyle(s).maskImage||getComputedStyle(s).webkitMaskImage)==="none"&&s.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const n=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,r)=>(o(),l("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:n.value},null,8,Xn))}}),xn=k(qn,[["__scopeId","data-v-d26d30cb"]]),ea={class:"VPSocialLinks"},ta=b({__name:"VPSocialLinks",props:{links:{}},setup(a){return(e,t)=>(o(),l("div",ea,[(o(!0),l(C,null,B(e.links,({link:n,icon:s,ariaLabel:r})=>(o(),$(xn,{key:n,icon:s,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ne=k(ta,[["__scopeId","data-v-ee7a9424"]]),sa={key:0,class:"group translations"},na={class:"trans-title"},aa={key:1,class:"group"},oa={class:"item appearance"},ra={class:"label"},ia={class:"appearance-action"},la={key:2,class:"group"},ca={class:"item social-links"},ua=b({__name:"VPNavBarExtra",setup(a){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:s}=Z({correspondingLink:!0}),r=y(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(c,v)=>r.value?(o(),$(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(n).length&&i(s).label?(o(),l("div",sa,[p("p",na,I(i(s).label),1),(o(!0),l(C,null,B(i(n),d=>(o(),$(se,{key:d.link,item:d},null,8,["item"]))),128))])):m("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",aa,[p("div",oa,[p("p",ra,I(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",ia,[g(ke)])])])):m("",!0),i(t).socialLinks?(o(),l("div",la,[p("div",ca,[g(ne,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):m("",!0)]),_:1})):m("",!0)}}),da=k(ua,[["__scopeId","data-v-925effce"]]),pa=["aria-expanded"],va=b({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(a){return(e,t)=>(o(),l("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>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,pa))}}),fa=k(va,[["__scopeId","data-v-5dea55bf"]]),ma=["innerHTML"],ha=b({__name:"VPNavBarMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,n)=>(o(),$(Q,{class:T({VPNavBarMenuLink:!0,active:i(J)(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,ma)]),_:1},8,["class","href","target","rel","no-icon"]))}}),_a=k(ha,[["__scopeId","data-v-956ec74c"]]),We=b({__name:"VPNavBarMenuGroup",props:{item:{}},setup(a){const e=a,{page:t}=V(),n=r=>"component"in r?!1:"link"in r?J(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),s=y(()=>n(e.item));return(r,c)=>(o(),$(ye,{class:T({VPNavBarMenuGroup:!0,active:i(J)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||s.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ba={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ga=b({__name:"VPNavBarMenu",setup(a){const{theme:e}=V();return(t,n)=>i(e).nav?(o(),l("nav",ba,[n[0]||(n[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),l(C,null,B(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(_a,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),R({key:1,ref_for:!0},s.props),null,16)):(o(),$(We,{key:2,item:s},null,8,["item"]))],64))),128))])):m("",!0)}}),ka=k(ga,[["__scopeId","data-v-e6d46098"]]);function $a(a){const{localeIndex:e,theme:t}=V();function n(s){var w,M,N;const r=s.split("."),c=(w=t.value.search)==null?void 0:w.options,v=c&&typeof c=="object",d=v&&((N=(M=c.locales)==null?void 0:M[e.value])==null?void 0:N.translations)||null,h=v&&c.translations||null;let A=d,_=h,P=a;const L=r.pop();for(const E of r){let U=null;const K=P==null?void 0:P[E];K&&(U=P=K);const ae=_==null?void 0:_[E];ae&&(U=_=ae);const oe=A==null?void 0:A[E];oe&&(U=A=oe),K||(P=U),ae||(_=U),oe||(A=U)}return(A==null?void 0:A[L])??(_==null?void 0:_[L])??(P==null?void 0:P[L])??""}return n}const ya=["aria-label"],Aa={class:"DocSearch-Button-Container"},Pa={class:"DocSearch-Button-Placeholder"},Pe=b({__name:"VPNavBarSearchButton",setup(a){const t=$a({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(o(),l("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",Aa,[s[0]||(s[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",Pa,I(i(t)("button.buttonText")),1)]),s[1]||(s[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ya))}}),La={class:"VPNavBarSearch"},Va={id:"local-search"},Sa={key:1,id:"docsearch"},Ia=b({__name:"VPNavBarSearch",setup(a){const e=Xe(()=>qe(()=>import("./VPLocalSearchBox.DPA6Cfil.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=V(),s=S(!1),r=S(!1);O(()=>{});function c(){s.value||(s.value=!0,setTimeout(v,16))}function v(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||v()},16)}function d(_){const P=_.target,L=P.tagName;return P.isContentEditable||L==="INPUT"||L==="SELECT"||L==="TEXTAREA"}const h=S(!1);le("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),h.value=!0)}),le("/",_=>{d(_)||(_.preventDefault(),h.value=!0)});const A="local";return(_,P)=>{var L;return o(),l("div",La,[i(A)==="local"?(o(),l(C,{key:0},[h.value?(o(),$(i(e),{key:0,onClose:P[0]||(P[0]=w=>h.value=!1)})):m("",!0),p("div",Va,[g(Pe,{onClick:P[1]||(P[1]=w=>h.value=!0)})])],64)):i(A)==="algolia"?(o(),l(C,{key:1},[s.value?(o(),$(i(t),{key:0,algolia:((L=i(n).search)==null?void 0:L.options)??i(n).algolia,onVnodeBeforeMount:P[2]||(P[2]=w=>r.value=!0)},null,8,["algolia"])):m("",!0),r.value?m("",!0):(o(),l("div",Sa,[g(Pe,{onClick:c})]))],64)):m("",!0)])}}}),Na=b({__name:"VPNavBarSocialLinks",setup(a){const{theme:e}=V();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),Ta=k(Na,[["__scopeId","data-v-164c457f"]]),Ca=["href","rel","target"],wa=["innerHTML"],Ma={key:2},Ba=b({__name:"VPNavBarTitle",setup(a){const{site:e,theme:t}=V(),{hasSidebar:n}=D(),{currentLang:s}=Z(),r=y(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),c=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),v=y(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,h)=>(o(),l("div",{class:T(["VPNavBarTitle",{"has-sidebar":i(n)}])},[p("a",{class:"title",href:r.value??i(be)(i(s).link),rel:c.value,target:v.value},[u(d.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(o(),$(X,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):m("",!0),i(t).siteTitle?(o(),l("span",{key:1,innerHTML:i(t).siteTitle},null,8,wa)):i(t).siteTitle===void 0?(o(),l("span",Ma,I(i(e).title),1)):m("",!0),u(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ca)],2))}}),Ea=k(Ba,[["__scopeId","data-v-0f4f798b"]]),Qa={class:"items"},Ha={class:"title"},Fa=b({__name:"VPNavBarTranslations",setup(a){const{theme:e}=V(),{localeLinks:t,currentLang:n}=Z({correspondingLink:!0});return(s,r)=>i(t).length&&i(n).label?(o(),$(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",Qa,[p("p",Ha,I(i(n).label),1),(o(!0),l(C,null,B(i(t),c=>(o(),$(se,{key:c.link,item:c},null,8,["item"]))),128))])]),_:1},8,["label"])):m("",!0)}}),Wa=k(Fa,[["__scopeId","data-v-c80d9ad0"]]),Oa={class:"wrapper"},Da={class:"container"},Ua={class:"title"},Ra={class:"content"},Ga={class:"content-body"},Ja=b({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(a){const e=a,{y:t}=Ce(),{hasSidebar:n}=D(),{frontmatter:s}=V(),r=S({});return me(()=>{r.value={"has-sidebar":n.value,home:s.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(c,v)=>(o(),l("div",{class:T(["VPNavBar",r.value])},[p("div",Oa,[p("div",Da,[p("div",Ua,[g(Ea,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)]),_:3})]),p("div",Ra,[p("div",Ga,[u(c.$slots,"nav-bar-content-before",{},void 0,!0),g(Ia,{class:"search"}),g(ka,{class:"menu"}),g(Wa,{class:"translations"}),g(Tn,{class:"appearance"}),g(Ta,{class:"social-links"}),g(da,{class:"extra"}),u(c.$slots,"nav-bar-content-after",{},void 0,!0),g(fa,{class:"hamburger",active:c.isScreenOpen,onClick:v[0]||(v[0]=d=>c.$emit("toggle-screen"))},null,8,["active"])])])])]),v[1]||(v[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ka=k(Ja,[["__scopeId","data-v-822684d1"]]),ja={key:0,class:"VPNavScreenAppearance"},za={class:"text"},Za=b({__name:"VPNavScreenAppearance",setup(a){const{site:e,theme:t}=V();return(n,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),l("div",ja,[p("p",za,I(i(t).darkModeSwitchLabel||"Appearance"),1),g(ke)])):m("",!0)}}),Ya=k(Za,[["__scopeId","data-v-ffb44008"]]),Xa=["innerHTML"],qa=b({__name:"VPNavScreenMenuLink",props:{item:{}},setup(a){const e=j("close-screen");return(t,n)=>(o(),$(Q,{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,Xa)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),xa=k(qa,[["__scopeId","data-v-735512b8"]]),eo=["innerHTML"],to=b({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(a){const e=j("close-screen");return(t,n)=>(o(),$(Q,{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,eo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Oe=k(to,[["__scopeId","data-v-372ae7c0"]]),so={class:"VPNavScreenMenuGroupSection"},no={key:0,class:"title"},ao=b({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),l("div",so,[e.text?(o(),l("p",no,I(e.text),1)):m("",!0),(o(!0),l(C,null,B(e.items,n=>(o(),$(Oe,{key:n.text,item:n},null,8,["item"]))),128))]))}}),oo=k(ao,[["__scopeId","data-v-4b8941ac"]]),ro=["aria-controls","aria-expanded"],io=["innerHTML"],lo=["id"],co={key:0,class:"item"},uo={key:1,class:"item"},po={key:2,class:"group"},vo=b({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(a){const e=a,t=S(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(r,c)=>(o(),l("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[p("span",{class:"button-text",innerHTML:r.text},null,8,io),c[0]||(c[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,ro),p("div",{id:n.value,class:"items"},[(o(!0),l(C,null,B(r.items,v=>(o(),l(C,{key:JSON.stringify(v)},["link"in v?(o(),l("div",co,[g(Oe,{item:v},null,8,["item"])])):"component"in v?(o(),l("div",uo,[(o(),$(H(v.component),R({ref_for:!0},v.props,{"screen-menu":""}),null,16))])):(o(),l("div",po,[g(oo,{text:v.text,items:v.items},null,8,["text","items"])]))],64))),128))],8,lo)],2))}}),De=k(vo,[["__scopeId","data-v-875057a5"]]),fo={key:0,class:"VPNavScreenMenu"},mo=b({__name:"VPNavScreenMenu",setup(a){const{theme:e}=V();return(t,n)=>i(e).nav?(o(),l("nav",fo,[(o(!0),l(C,null,B(i(e).nav,s=>(o(),l(C,{key:JSON.stringify(s)},["link"in s?(o(),$(xa,{key:0,item:s},null,8,["item"])):"component"in s?(o(),$(H(s.component),R({key:1,ref_for:!0},s.props,{"screen-menu":""}),null,16)):(o(),$(De,{key:2,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):m("",!0)}}),ho=b({__name:"VPNavScreenSocialLinks",setup(a){const{theme:e}=V();return(t,n)=>i(e).socialLinks?(o(),$(ne,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):m("",!0)}}),_o={class:"list"},bo=b({__name:"VPNavScreenTranslations",setup(a){const{localeLinks:e,currentLang:t}=Z({correspondingLink:!0}),n=S(!1);function s(){n.value=!n.value}return(r,c)=>i(e).length&&i(t).label?(o(),l("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[p("button",{class:"title",onClick:s},[c[0]||(c[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),F(" "+I(i(t).label)+" ",1),c[1]||(c[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",_o,[(o(!0),l(C,null,B(i(e),v=>(o(),l("li",{key:v.link,class:"item"},[g(Q,{class:"link",href:v.link},{default:f(()=>[F(I(v.text),1)]),_:2},1032,["href"])]))),128))])],2)):m("",!0)}}),go=k(bo,[["__scopeId","data-v-362991c2"]]),ko={class:"container"},$o=b({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(a){const e=S(null),t=we(te?document.body:null);return(n,s)=>(o(),$(pe,{name:"fade",onEnter:s[0]||(s[0]=r=>t.value=!0),onAfterLeave:s[1]||(s[1]=r=>t.value=!1)},{default:f(()=>[n.open?(o(),l("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ko,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),g(mo,{class:"menu"}),g(go,{class:"translations"}),g(Ya,{class:"appearance"}),g(ho,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):m("",!0)]),_:3}))}}),yo=k($o,[["__scopeId","data-v-833aabba"]]),Ao={key:0,class:"VPNav"},Po=b({__name:"VPNav",setup(a){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=kn(),{frontmatter:s}=V(),r=y(()=>s.value.navbar!==!1);return _e("close-screen",t),q(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(c,v)=>r.value?(o(),l("header",Ao,[g(Ka,{"is-screen-open":i(e),onToggleScreen:i(n)},{"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)]),_:3},8,["is-screen-open","onToggleScreen"]),g(yo,{open:i(e)},{"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},8,["open"])])):m("",!0)}}),Lo=k(Po,[["__scopeId","data-v-f1e365da"]]),Vo=["role","tabindex"],So={key:1,class:"items"},Io=b({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(a){const e=a,{collapsed:t,collapsible:n,isLink:s,isActiveLink:r,hasActiveLink:c,hasChildren:v,toggle:d}=At(y(()=>e.item)),h=y(()=>v.value?"section":"div"),A=y(()=>s.value?"a":"div"),_=y(()=>v.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>s.value?void 0:"button"),L=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":r.value},{"has-active":c.value}]);function w(N){"key"in N&&N.key!=="Enter"||!e.item.link&&d()}function M(){e.item.link&&d()}return(N,E)=>{const U=G("VPSidebarItem",!0);return o(),$(H(h.value),{class:T(["VPSidebarItem",L.value])},{default:f(()=>[N.item.text?(o(),l("div",R({key:0,class:"item",role:P.value},xe(N.item.items?{click:w,keydown:w}:{},!0),{tabindex:N.item.items&&0}),[E[1]||(E[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(o(),$(Q,{key:0,tag:A.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(o(),$(H(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),$(H(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(o(),l("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:M,onKeydown:et(M,["enter"]),tabindex:"0"},E[0]||(E[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):m("",!0)],16,Vo)):m("",!0),N.item.items&&N.item.items.length?(o(),l("div",So,[N.depth<5?(o(!0),l(C,{key:0},B(N.item.items,K=>(o(),$(U,{key:K.text,item:K,depth:N.depth+1},null,8,["item","depth"]))),128)):m("",!0)])):m("",!0)]),_:1},8,["class"])}}}),No=k(Io,[["__scopeId","data-v-196b2e5f"]]),To=b({__name:"VPSidebarGroup",props:{items:{}},setup(a){const e=S(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),tt(()=>{t!=null&&(clearTimeout(t),t=null)}),(n,s)=>(o(!0),l(C,null,B(n.items,r=>(o(),l("div",{key:r.text,class:T(["group",{"no-transition":e.value}])},[g(No,{item:r,depth:0},null,8,["item"])],2))),128))}}),Co=k(To,[["__scopeId","data-v-9e426adc"]]),wo={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Mo=b({__name:"VPSidebar",props:{open:{type:Boolean}},setup(a){const{sidebarGroups:e,hasSidebar:t}=D(),n=a,s=S(null),r=we(te?document.body:null);W([n,s],()=>{var v;n.open?(r.value=!0,(v=s.value)==null||v.focus()):r.value=!1},{immediate:!0,flush:"post"});const c=S(0);return W(e,()=>{c.value+=1},{deep:!0}),(v,d)=>i(t)?(o(),l("aside",{key:0,class:T(["VPSidebar",{open:v.open}]),ref_key:"navEl",ref:s,onClick:d[0]||(d[0]=st(()=>{},["stop"]))},[d[2]||(d[2]=p("div",{class:"curtain"},null,-1)),p("nav",wo,[d[1]||(d[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(v.$slots,"sidebar-nav-before",{},void 0,!0),(o(),$(Co,{items:i(e),key:c.value},null,8,["items"])),u(v.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):m("",!0)}}),Bo=k(Mo,[["__scopeId","data-v-18756405"]]),Eo=b({__name:"VPSkipLink",setup(a){const e=ee(),t=S();W(()=>e.path,()=>t.value.focus());function n({target:s}){const r=document.getElementById(decodeURIComponent(s.hash).slice(1));if(r){const c=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",c)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",c),r.focus(),window.scrollTo(0,0)}}return(s,r)=>(o(),l(C,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),Qo=k(Eo,[["__scopeId","data-v-c3508ec8"]]),Ho=b({__name:"Layout",setup(a){const{isOpen:e,open:t,close:n}=D(),s=ee();W(()=>s.path,n),yt(e,n);const{frontmatter:r}=V(),c=Me(),v=y(()=>!!c["home-hero-image"]);return _e("hero-image-slot-exists",v),(d,h)=>{const A=G("Content");return i(r).layout!==!1?(o(),l("div",{key:0,class:T(["Layout",i(r).pageClass])},[u(d.$slots,"layout-top",{},void 0,!0),g(Qo),g(ct,{class:"backdrop",show:i(e),onClick:i(n)},null,8,["show","onClick"]),g(Lo,null,{"nav-bar-title-before":f(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),g(gn,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),g(Bo,{open:i(e)},{"sidebar-nav-before":f(()=>[u(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[u(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),g(sn,null,{"page-top":f(()=>[u(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[u(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[u(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[u(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[u(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[u(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[u(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[u(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[u(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[u(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[u(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[u(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[u(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[u(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[u(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[u(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[u(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[u(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[u(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[u(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[u(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[u(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[u(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),g(ln),u(d.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),$(A,{key:1}))}}}),Fo=k(Ho,[["__scopeId","data-v-a9a9e638"]]),Wo={},Oo={class:"VPTeamPage"};function Do(a,e){return o(),l("div",Oo,[u(a.$slots,"default")])}const Fr=k(Wo,[["render",Do],["__scopeId","data-v-c2f8e101"]]),Uo={},Ro={class:"VPTeamPageTitle"},Go={key:0,class:"title"},Jo={key:1,class:"lead"};function Ko(a,e){return o(),l("div",Ro,[a.$slots.title?(o(),l("h1",Go,[u(a.$slots,"title",{},void 0,!0)])):m("",!0),a.$slots.lead?(o(),l("p",Jo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0)])}const Wr=k(Uo,[["render",Ko],["__scopeId","data-v-e277e15c"]]),jo={},zo={class:"VPTeamPageSection"},Zo={class:"title"},Yo={key:0,class:"title-text"},Xo={key:0,class:"lead"},qo={key:1,class:"members"};function xo(a,e){return o(),l("section",zo,[p("div",Zo,[e[0]||(e[0]=p("div",{class:"title-line"},null,-1)),a.$slots.title?(o(),l("h2",Yo,[u(a.$slots,"title",{},void 0,!0)])):m("",!0)]),a.$slots.lead?(o(),l("p",Xo,[u(a.$slots,"lead",{},void 0,!0)])):m("",!0),a.$slots.members?(o(),l("div",qo,[u(a.$slots,"members",{},void 0,!0)])):m("",!0)])}const Or=k(jo,[["render",xo],["__scopeId","data-v-d43bc49d"]]),er={class:"profile"},tr={class:"avatar"},sr=["src","alt"],nr={class:"data"},ar={class:"name"},or={key:0,class:"affiliation"},rr={key:0,class:"title"},ir={key:1,class:"at"},lr=["innerHTML"],cr={key:2,class:"links"},ur={key:0,class:"sp"},dr=b({__name:"VPTeamMembersItem",props:{size:{default:"medium"},member:{}},setup(a){return(e,t)=>(o(),l("article",{class:T(["VPTeamMembersItem",[e.size]])},[p("div",er,[p("figure",tr,[p("img",{class:"avatar-img",src:e.member.avatar,alt:e.member.name},null,8,sr)]),p("div",nr,[p("h1",ar,I(e.member.name),1),e.member.title||e.member.org?(o(),l("p",or,[e.member.title?(o(),l("span",rr,I(e.member.title),1)):m("",!0),e.member.title&&e.member.org?(o(),l("span",ir," @ ")):m("",!0),e.member.org?(o(),$(Q,{key:2,class:T(["org",{link:e.member.orgLink}]),href:e.member.orgLink,"no-icon":""},{default:f(()=>[F(I(e.member.org),1)]),_:1},8,["class","href"])):m("",!0)])):m("",!0),e.member.desc?(o(),l("p",{key:1,class:"desc",innerHTML:e.member.desc},null,8,lr)):m("",!0),e.member.links?(o(),l("div",cr,[g(ne,{links:e.member.links},null,8,["links"])])):m("",!0)])]),e.member.sponsor?(o(),l("div",ur,[g(Q,{class:"sp-link",href:e.member.sponsor,"no-icon":""},{default:f(()=>[t[0]||(t[0]=p("span",{class:"vpi-heart sp-icon"},null,-1)),F(" "+I(e.member.actionText||"Sponsor"),1)]),_:1},8,["href"])])):m("",!0)],2))}}),pr=k(dr,[["__scopeId","data-v-f9987cb6"]]),vr={class:"container"},fr=b({__name:"VPTeamMembers",props:{size:{default:"medium"},members:{}},setup(a){const e=a,t=y(()=>[e.size,`count-${e.members.length}`]);return(n,s)=>(o(),l("div",{class:T(["VPTeamMembers",t.value])},[p("div",vr,[(o(!0),l(C,null,B(n.members,r=>(o(),l("div",{key:r.name,class:"item"},[g(pr,{size:n.size,member:r},null,8,["size","member"])]))),128))])],2))}}),Dr=k(fr,[["__scopeId","data-v-fba19bad"]]),Le={Layout:Fo,enhanceApp:({app:a})=>{a.component("Badge",rt)}},mr={},hr={style:{"text-align":"center"}};function _r(a,e){const t=G("font");return o(),l(C,null,[e[1]||(e[1]=p("br",null,null,-1)),p("h1",hr,[p("strong",null,[g(t,{color:"orange"},{default:f(()=>e[0]||(e[0]=[F(" Package Ecosystem")])),_:1})])]),e[2]||(e[2]=nt('

Read n-d array like-data

DiskArrays.jl

Get your chunks!

Named Dimensions

DimensionalData.jl

Select & Index!

Out of memory data

Zarr.jl

Chunkerd, compressed !

Rasterized spatial data

Rasters.jl

Read and manipulate !

Array-oriented data

NetCDF.jl

Scientific binary data.

Raster and vector data

ArchGDAL.jl

GDAL in Julia.

An interface for

GeoInterface.jl

geospatial data in Julia.

A higher level interface

GRIBDatasets.jl

for reading GRIB files.

Array-oriented data

NCDatasets.jl

Scientific binary data.

',9))],64)}const br=k(mr,[["render",_r]]),gr=b({__name:"VersionPicker",props:{screenMenu:{type:Boolean}},setup(a){const e=S([]),t=S("Versions"),n=S(!1);Se();const s=()=>typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),r=()=>{if(typeof window>"u")return"";const{origin:d,pathname:h}=window.location;if(d.includes("github.io")){const A=h.split("/").filter(Boolean),_=A.length>0?`/${A[0]}/`:"/";return`${d}${_}`}else return d},c=()=>new Promise(d=>{if(s()){d(!1);return}const h=setInterval(()=>{window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION&&(clearInterval(h),d(!0))},100);setTimeout(()=>{clearInterval(h),d(!1)},5e3)});return O(async()=>{if(!(typeof window>"u")){try{if(s()){const d=["dev"];e.value=d.map(h=>({text:h,link:"/"})),t.value="dev"}else{const d=await c(),h=y(()=>r());if(d&&window.DOC_VERSIONS&&window.DOCUMENTER_CURRENT_VERSION)e.value=window.DOC_VERSIONS.map(A=>({text:A,link:`${h.value}/${A}/`})),t.value=window.DOCUMENTER_CURRENT_VERSION;else{const A=["dev"];e.value=A.map(_=>({text:_,link:`${h.value}/${_}/`})),t.value="dev"}}}catch(d){console.warn("Error loading versions:",d);const h=["dev"],A=y(()=>r());e.value=h.map(_=>({text:_,link:`${A.value}/${_}/`})),t.value="dev"}n.value=!0}}),(d,h)=>n.value?(o(),l(C,{key:0},[!d.screenMenu&&e.value.length>0?(o(),$(We,{key:0,item:{text:t.value,items:e.value},class:"VPVersionPicker"},null,8,["item"])):d.screenMenu&&e.value.length>0?(o(),$(De,{key:1,text:t.value,items:e.value,class:"VPVersionPicker"},null,8,["text","items"])):m("",!0)],64)):m("",!0)}}),kr=k(gr,[["__scopeId","data-v-f465cb49"]]),$r=a=>{if(typeof document>"u")return{stabilizeScrollPosition:s=>async(...r)=>s(...r)};const e=document.documentElement;return{stabilizeScrollPosition:n=>async(...s)=>{const r=n(...s),c=a.value;if(!c)return r;const v=c.offsetTop-e.scrollTop;return await he(),e.scrollTop=c.offsetTop-v,r}}},Ue="vitepress:tabSharedState",z=typeof localStorage<"u"?localStorage:null,Re="vitepress:tabsSharedState",yr=()=>{const a=z==null?void 0:z.getItem(Re);if(a)try{return JSON.parse(a)}catch{}return{}},Ar=a=>{z&&z.setItem(Re,JSON.stringify(a))},Pr=a=>{const e=at({});W(()=>e.content,(t,n)=>{t&&n&&Ar(t)},{deep:!0}),a.provide(Ue,e)},Lr=(a,e)=>{const t=j(Ue);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");O(()=>{t.content||(t.content=yr())});const n=S(),s=y({get(){var d;const c=e.value,v=a.value;if(c){const h=(d=t.content)==null?void 0:d[c];if(h&&v.includes(h))return h}else{const h=n.value;if(h)return h}return v[0]},set(c){const v=e.value;v?t.content&&(t.content[v]=c):n.value=c}});return{selected:s,select:c=>{s.value=c}}};let Ve=0;const Vr=()=>(Ve++,""+Ve);function Sr(){const a=Me();return y(()=>{var n;const t=(n=a.default)==null?void 0:n.call(a);return t?t.filter(s=>typeof s.type=="object"&&"__name"in s.type&&s.type.__name==="PluginTabsTab"&&s.props).map(s=>{var r;return(r=s.props)==null?void 0:r.label}):[]})}const Ge="vitepress:tabSingleState",Ir=a=>{_e(Ge,a)},Nr=()=>{const a=j(Ge);if(!a)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return a},Tr={class:"plugin-tabs"},Cr=["id","aria-selected","aria-controls","tabindex","onClick"],wr=b({__name:"PluginTabs",props:{sharedStateKey:{}},setup(a){const e=a,t=Sr(),{selected:n,select:s}=Lr(t,ot(e,"sharedStateKey")),r=S(),{stabilizeScrollPosition:c}=$r(r),v=c(s),d=S([]),h=_=>{var w;const P=t.value.indexOf(n.value);let L;_.key==="ArrowLeft"?L=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(L=P(o(),l("div",Tr,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:h},[(o(!0),l(C,null,B(i(t),L=>(o(),l("button",{id:`tab-${L}-${i(A)}`,ref_for:!0,ref_key:"buttonRefs",ref:d,key:L,role:"tab",class:"plugin-tabs--tab","aria-selected":L===i(n),"aria-controls":`panel-${L}-${i(A)}`,tabindex:L===i(n)?0:-1,onClick:()=>i(v)(L)},I(L),9,Cr))),128))],544),u(_.$slots,"default")]))}}),Mr=["id","aria-labelledby"],Br=b({__name:"PluginTabsTab",props:{label:{}},setup(a){const{uid:e,selected:t}=Nr();return(n,s)=>i(t)===n.label?(o(),l("div",{key:0,id:`panel-${n.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${n.label}-${i(e)}`},[u(n.$slots,"default",{},void 0,!0)],8,Mr)):m("",!0)}}),Er=k(Br,[["__scopeId","data-v-9b0d03d2"]]),Qr=a=>{Pr(a),a.component("PluginTabs",wr),a.component("PluginTabsTab",Er)},Ur={extends:Le,Layout(){return Ae(Le.Layout,null,{"aside-ads-before":()=>Ae(br)})},enhanceApp({app:a,router:e,siteData:t}){Qr(a),a.component("VersionPicker",kr)}};export{Ur as R,Wr as V,Dr as a,Or as b,Fr as c,$a as d,V as u}; diff --git a/previews/PR481/assets/ltjmjei.B7KFIfDV.jpeg b/previews/PR481/assets/cyhvrkj.B7KFIfDV.jpeg similarity index 100% rename from previews/PR481/assets/ltjmjei.B7KFIfDV.jpeg rename to previews/PR481/assets/cyhvrkj.B7KFIfDV.jpeg diff --git a/previews/PR481/assets/development_contributors.md.BPZV1DF3.js b/previews/PR481/assets/development_contributors.md.B-Ls9c13.js similarity index 98% rename from previews/PR481/assets/development_contributors.md.BPZV1DF3.js rename to previews/PR481/assets/development_contributors.md.B-Ls9c13.js index ae93f0ea..47d1319d 100644 --- a/previews/PR481/assets/development_contributors.md.BPZV1DF3.js +++ b/previews/PR481/assets/development_contributors.md.B-Ls9c13.js @@ -1 +1 @@ -import{V as u,a as l,b as m,c as g}from"./chunks/theme.vl07g5LM.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.CmUrV9pg.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; +import{V as u,a as l,b as m,c as g}from"./chunks/theme.CaJ052h0.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.CmUrV9pg.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; diff --git a/previews/PR481/assets/development_contributors.md.BPZV1DF3.lean.js b/previews/PR481/assets/development_contributors.md.B-Ls9c13.lean.js similarity index 98% rename from previews/PR481/assets/development_contributors.md.BPZV1DF3.lean.js rename to previews/PR481/assets/development_contributors.md.B-Ls9c13.lean.js index ae93f0ea..47d1319d 100644 --- a/previews/PR481/assets/development_contributors.md.BPZV1DF3.lean.js +++ b/previews/PR481/assets/development_contributors.md.B-Ls9c13.lean.js @@ -1 +1 @@ -import{V as u,a as l,b as m,c as g}from"./chunks/theme.vl07g5LM.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.CmUrV9pg.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; +import{V as u,a as l,b as m,c as g}from"./chunks/theme.CaJ052h0.js";import{c as h,G as r,w as s,k as n,B as c,o as b,a as e,j as t}from"./chunks/framework.CmUrV9pg.js";const p={align:"justify"},z=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"page"},"headers":[],"relativePath":"development/contributors.md","filePath":"development/contributors.md","lastUpdated":null}'),v={name:"development/contributors.md"},j=Object.assign(v,{setup(f){const o=[{avatar:"https://www.bgc-jena.mpg.de/employee_images/121366-1667825290?t=eyJ3aWR0aCI6MjEzLCJoZWlnaHQiOjI3NCwiZml0IjoiY3JvcCIsImZpbGVfZXh0ZW5zaW9uIjoid2VicCIsInF1YWxpdHkiOjg2fQ%3D%3D--3e1d41ff4b1ea8928e6734bc473242a90f797dea",name:"Fabian Gans",title:"Geoscientific Programmer",links:[{icon:"github",link:"https://github.com/meggart"}]},{avatar:"https://avatars.githubusercontent.com/u/17124431?v=4",name:"Felix Cremer",title:"PhD Candidate in Remote Sensing",links:[{icon:"github",link:"https://github.com/felixcremer"}]},{avatar:"https://avatars.githubusercontent.com/u/2534009?v=4",name:"Rafael Schouten",title:"Spatial/ecological modelling",links:[{icon:"github",link:"https://github.com/rafaqz"}]},{avatar:"https://avatars.githubusercontent.com/u/19525261?v=4",name:"Lazaro Alonso",title:"Scientist. Data Visualization",links:[{icon:"github",link:"https://github.com/lazarusA"},{icon:"x",link:"https://twitter.com/LazarusAlon"},{icon:"linkedin",link:"https://www.linkedin.com/in/lazaro-alonso/"},{icon:"mastodon",link:"https://julialang.social/@LazaroAlonso"}]}];return(d,a)=>{const i=c("font");return b(),h("div",null,[r(n(g),null,{default:s(()=>[r(n(u),null,{title:s(()=>a[0]||(a[0]=[e("Contributors")])),lead:s(()=>[a[8]||(a[8]=t("strong",null,"Current core contributors ",-1)),a[9]||(a[9]=e()),a[10]||(a[10]=t("br",null,null,-1)),t("div",p,[a[4]||(a[4]=e(" They have taking the lead for the ongoing organizational maintenance and technical direction of ")),r(i,{color:"orange"},{default:s(()=>a[1]||(a[1]=[e("YAXArrays.jl")])),_:1}),a[5]||(a[5]=e(", ")),r(i,{color:"orange"},{default:s(()=>a[2]||(a[2]=[e("DiskArrays.jl")])),_:1}),a[6]||(a[6]=e(" and ")),r(i,{color:"orange"},{default:s(()=>a[3]||(a[3]=[e("DimensionalData.jl")])),_:1}),a[7]||(a[7]=e(". "))])]),_:1}),r(n(l),{size:"small",members:o}),r(n(m),null,{title:s(()=>a[11]||(a[11]=[e("Our valuable contributors")])),lead:s(()=>a[12]||(a[12]=[e(" We appreciate all contributions from the Julia community so that this ecosystem can thrive."),t("br",null,null,-1)])),members:s(()=>a[13]||(a[13]=[t("div",{class:"row"},[t("a",{href:"https://github.com/meggart",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2539563?v=4"})]),t("a",{href:"https://github.com/felixcremer",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/17124431?v=4"})]),t("a",{href:"https://github.com/lazarusA",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19525261?v=4"})]),t("a",{href:"https://github.com/gdkrmr",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/12512930?v=4"})]),t("a",{href:"https://github.com/apps/github-actions",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/15368?v=4"})]),t("a",{href:"https://github.com/pdimens",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/19176506?v=4"})]),t("a",{href:"https://github.com/twinGu",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/29449917?v=4"})]),t("a",{href:"https://github.com/dpabon",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/13040959?v=4"})]),t("a",{href:"https://github.com/Qfl3x",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/20775896?v=4"})]),t("a",{href:"https://github.com/kongdd",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/9815742?v=4"})]),t("a",{href:"https://github.com/MartinuzziFrancesco",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10376688?v=4"})]),t("a",{href:"https://github.com/Sonicious",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/16307399?v=4"})]),t("a",{href:"https://github.com/rafaqz",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/2534009?v=4"})]),t("a",{href:"https://github.com/danlooo",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/5780565?v=4"})]),t("a",{href:"https://github.com/MarkusZehner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/56972144?v=4"})]),t("a",{href:"https://github.com/Balinus",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/3630311?v=4"})]),t("a",{href:"https://github.com/singularitti",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/25192197?v=4"})]),t("a",{href:"https://github.com/ckrich",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/28727495?v=4"})]),t("a",{href:"https://github.com/apps/femtocleaner",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/in/4123?v=4"})]),t("a",{href:"https://github.com/ikselven",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/10441332?v=4"})]),t("a",{href:"https://github.com/linamaes",target:"_blank"},[t("img",{src:"https://avatars.githubusercontent.com/u/7131773?v=4"})])],-1)])),_:1})]),_:1})])}}});export{z as __pageData,j as default}; diff --git a/previews/PR481/assets/deycsiw.m9Tg4llE.png b/previews/PR481/assets/deycsiw.m9Tg4llE.png deleted file mode 100644 index 5e261c52789d3203b27acff31818f409ec1e7660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110641 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

-w{e_gXEEkW=e#NjHrh7 zzl%HHe#o{)CYgV+MyfX#|<{MYm)0 zXzZVaeyN>vpWIv)zi684qMds`C5c^~nnf+L#tE@#`UVD`18J=;^^*k|$zxin)i1Mr z*RIhhN@0eP2wLJHS~MbZqmM$%-Aw=c?n#pr%ieB4$;}R`@Oa6bZjaA_a{+^}bUeBLPA7z18nq_!LybnsiLZcmDVh)_ z#K6vj)Mp0Y?Ai;NizC9{J6~z__ZfoOmF%-T_qLS zYAJr6s-M6uROXI_#Vzg9vNEUUDS&7gj(>!vKfCYBhk(tO2GJ{u3Y_%7y-Xn~8;=wE zi8oltyy}0K2x>G|=2|Zb?q@3*2DQKeS(K7dC^e`3Q^i_x8YNQz@PVqCL&8@=KK@Jv zGpwIeQ;$_(gtc|X9hnLvl>{7rG*d_~pW}fJwFMe3)>l!O0sd#}CNfZE*vKKhUBTA> z*_Z2Oq^-A^nT4#Zgbuo-L;}$YUm3pg8D_A3#oL<+aRl~Rp{{-?nsZ2ijYh{PI?GF8{yf{|T%ck2 zysxl-%FgcIfCS;=lM1qoMVW-I?d!R%;bmP}_ryp!Y-hZs0?<&Ye!)ID`T6p4a%1D; z4@<`2wt~~e@*enH^VCwhA@&FDV+Fa7n&~&GuUH967Or9h!k5sI74lV>oU|&vc*%0w z7s~Y%!h$-j^}bf^ey`|l>z<)*|9>q&TNL^y?Ux-ZP)Q%Qytp|1;^DoOv`jXZZl86I zVx2x59P;C{L&2xF9gK}t-35>;upFezM6&hP{b3e;usSMvuV7V81R0syL>V^KM&-ks z(4||+rCsCyU5Mzp{4dUGm%AWuhM{nR;>kYdH3R7PvgM-`d$0 z@$jNaQqlScz4_3P_c!f)9;4Jy{BLpDbXdXNU| zdl)u(ZZsc$+gk55!@FgO(aDPc(c4*${eC+!u1!^^+vS;?3NqPQIk#K-M(KhbQ`*fk zaoY+CD4SlZ7U$x+z2UrH=C+~MJ^pctLWtk=*&8g*v(haamPN_TbQc*rinxm)TF*zG zdU_D$Dn-Oj%BDuVK?!`*{d7^l?7yXXvA&m&rreO&1w0;gTO`SoMe@r>Yg#0}U3cO8 zav&_>^__b(LkcjuFFidAG@^CZLs@E1g4DGIEU)zwN=#)3ZFkI|(Z_c+;`qvA2ev18 zw*D5Qd|w&>npM)i)&RG!9XH&@2TOmqoZd4JBXLZwuGdyKi-t-ojg*b(1BiAP+%6zOBr{M@C_JljPDT=YEzyFBiPD7d^TtT!a4Ir($#q;&?L#R*xoTn;Xv(5SKAldIL+}S8*9PB2p;}S=U@i#@3#2(TRQV{)e z`c70J0dET!fxmiMlhdCKyB6}`t!E_(^!qA=n!N`(bBSqfb}p7q{yd)zRecvjLeT@3 zoyamZ$QE4_?b2}$w{b^a{5LFQL(3)T9bM`TBV>00g*>9l9a?3NW#PCzmTzpYSqV=m zU^~!j<+oWq4*q#bI=w3E`ySfutXE$%a8T_<;3$4ebuQ{(|QkbE?#hV)UBQ`Y$}MKWnFY*{+jJH}KH)sJZ-NRDDOxYjz1JS*k*< zUUQzz`hb`S^0s6g6etYpqu36!+Z-IZy&#wJn+jF}uP5Feor>T>Eq#`2EeB%{QO4b8 zyE#g^=m7*uLivvNP0oZHp4Ws*(ahXmhPVnBerUI?e#ou@1!wPd*t&l9Bskw9Dd;Al zcU4u0Gk@6;JmeW9Bj-CiN#^;KB53J?l3!Qp&8)nzeI*IWGkXCp-PylGR(N`~1k{l8A1Qaz`BOff=MZW>C>LuTPO{UUdv-TFM1}6E`;5Ud7ew96} z&Gc}}Z@-#zr$OiKKc``hY*6ZnLv#c~Yt8 zIABAuM{Hv8>ASgtHi8VU?0+B1-gDo0B$A3~nB2ebRDnn~A9nM#J#L8IS{tRDQ^u!v zr3M9vf*AvXEiI#JVPRlew|qZ=Xp$|!`8nR2L}OiKQB{NHSzfPF9p@GvJ^W8sVG^0Q zW5E{=|6JMo;L7vjt1W5_$3Q0~iwKQYD{dKn9G|qXhe+b(qhx-6eAd zr;nihkPr=VW{hjuZuNH^FU8I$L4r#=FnuwkvtwCDpa}5%CD(D&;cWFBmGq&obXl43 zvk&6TVLi*W{u>pP^;!@k;~<I$CaKFOP7BlRU+K?EcepH5Dkwb zp3(OW4Ul^x2KI08$AC)$$aws7qck-7o7S9Hjj;ZmAYC1_r0f3TApz|R1tTjZI-qbm zuIlOS^@3V6=v9H&J%+3I-R{-eDRvhK&fx#K-jgDue^LoD0;$!kj$5Bq>EZ{wo*1L|bmZI0eU(7@G~A-1rTX{rA7|u-RDA z4f~RZtBF_f9g_o-{yQg+hth?EsQE#%QgZ(wtHS>NUCXmnU4 z8qffbUB$&kK57_v`J$OR%r_%!Pt~ta=Jp$d;t|TpJ8Y|KAPO3cObgE3hL1Zip44Fg zy70g2=)>7!XD^ z`5}&2=3_gJPN^XvrvB3UUy5 zT++7B^FOcG*K{tK+7opDshu$OEHl=UN`1HLS|TX(m|IVp9*I%Q?|&Rg9;{J`4K)$N zXvlE21Q(Jba*tC&u3cIpTj=XR=`rD_a#;!Jy3T1 z(!ZFP5pPr%A5Ag;$Df%JaYV)j3p4{sJYtAsJ&l0j^P|QLLqf>Kc|j~Ej}b6qUL@u{ zHuIL6So*s22#fT%`M{TVlwOC%@rikjUI|6@X?XOC=fdYhl2}V>FiNIwEH$?#)HJ(ZyM}8j{YF?=sQacZ%k7Htd-+ku6cg2K zZdz2d1M|+`&F-wa)_g0Wb5(b)W8f>b%g9@nR^^Z-!&^HJ;0lml&HMcM4-%7*Fp8oZ z1_xnUgooc30&4s??-4=rxMgL1Y3WvyUs#4t*pn!Kh`E7Q=ZT8PVIT}0UWFQaFNmqL z97vmSjgqAU_xbVC8xwTu$mnPogbyDUR>B1yEa^1o0oM1cW#wgbDWEe@SqQcIQc|D5 z9MS;UI6x19NDp)dd6IN@JXJ{>%=QibiZ>>neOu0#PyHKCdld~C{T5ssZZk99o_OqXLM09gg~s7=!AuY z966+JfjxVGrkQGkT zfl;%7oRNMzl{>7jPx|5AP#V^@ z_XneUzdDAKX(C>_bmqtM8Cc#mPi&_=G1X#FSwqCKGjh4CuL7L*$io5~R;mUa5lWD9!m$81`a3Cn_rrFVsR7!hxjr z7L6dox#?@`>+4(cabT#;Yfzv5Qf2LXoe?SNfWUOvyisxtAX|Xihg`9x z%5$rO!Us~JuZj%O79bC&0px+e|7T?}42Z2bT^c^{{?*{oCmHxiawWH=#Sa`z2)EO$ zC@V!y`NRgucB^2sx2!yZ@G1zExu851)+tWtO~}v5nI0iP{pt>8kebG*2)8EWN0`g6 zE~j}z{)JTb(0BV97_=b0%zmmS(v^rWJLy^|)&*`?%w?~=1%t|q>`^&9?4jmTh;!&A zq(TD112M8Ov6LI%*ru*~wd!yv79=vVpQceW1>96eAD$C=2gjF)Ni$c-)1Zh9?R`#k zDRaoW%D~~%Y;$Nq7lyBLa6ttmE5L05ud=<_q({4yW2qmKF-|ol$FJ0;?tFm9leH0I zb7a$HKnh`^qJoEjbS!&f{o1u_LaA#1KnjCKk?ji#xtbMvR0W>^=Rhg2K{5=Pt#>&& zw-R)X7xs>vKpZok^Q&u8Qh_m6xR6PbhfYIG`Y>wk{rl5{^}X@3@f)O=PVe%WK4^B{ z2y+u~`HW~-1pA_Wb#@{pggq*h)dv<8V8&7(Jc!gSy#z2L4bS988p${sZ?GVtC3ds9 zl@$h*4jeSD^g%|1Zi#{0*ki#Q$pV~UU{8UmwXFt`zP64I)2&-T7uR^DqnJIBdmzCC zsnj*x4u20xose`)*ZdhpCm*3BQ4%xhQxm1gf#8)i&{5vOAe_ouQ6WfAn&bRfeo2BO zJ3AX@W=I2kg_o+voT{e#VL~|U<{*{y9jrW6PgqOAzpetgZ|sSQ_JVUyx9}F+HWCA$ zw+9Sfx!!$GUjBso>|3dk2m+-Gg6~v(#wCJ>^D$-sAK4S z{y$G^Ju1u;vP6(ad=#iG4tkl;svX%7X*493;X)qE(!aKBkNq2eb9v`AZjx|-!LW5p z-%kV#e%|rjJNlp}HoNa@7_dPvT@ra*ZDL}goe8Oj1vcV#BO+H6Y6%_2wgLmWOv}8gNL`1j&pEh7y ziHyh#IvfxpmbNElS(f&k+Nzg>ksWY!a_W_50MrR87SOYxLT^D^iHnPi;*MLn9*Kg; z>-_{lqf2xxjT8}PP+*4{Ah%omkn;72JBIPuLorf1*DEUrUd5xmmX!_y$;+)54Gj%; zXWopNzfUoPpBgFp97QBv3Vsu9+4`>D10Fpv*^lp!VjE#WQ({~W*jP*a_8uM_hoUQD zUXZ^Z3gbJAIN=!P6W3HGY-+EWQDhse*sa=__R>j9oY6LYM`n~+8(LTElZi30*B^47 zQqb^xmDyb(T(dA|?VXAxEQKIRbDJ}G&^Fr~((L_UNx%nbVKbFn2{F*VJ^0XnjRn!T zGH~fCB_%401s1CoaHnte1_uY5_#NG2Cq=P3sDx8UKe!n!O1#Jbwh70WY^`$*hS*En zJ^c`{1V`wX9k%V_bR$e}RhSgxq%(;werJ0}&N$ZUv4cNLlt!K9TElwTfs@qC(cWpF zZNL-p10M?d@{x$hwM4_uA7lM?7j{QRv<9?4U2TBu+W6ts*9wfa+LG9pq|U6urLUe^ z#blg3^EK&-xv{cg!>R|lGUcZ2FmC*C@n|(PZ}o2a{dw9;?NucrnihXcG<@T&`$EUX zFqOpDL>GcMxo|JLy}=3wnKq}9bgV;CRQ3?*|XSS@IDksFQ#-WI` ztet|B-T6=XLkhU`<~)#a1(pfOA1jD-2OAwU4=Y@Iq?sXcxhuNZUk`)V7o$y~h8+2v z_s?R=d@>HQd~>x=1`zx zWaPk2CK{b6K>k*Lb;rO=s}rM*-#)>Y!zpCYVTqFv8+j!y1&;zj}0kNKFGtJ?+2 zeg>%pHO%c`iA9szC9ejgU|ls1aeQSpIeKq|;!wgqI#$RlntkPako-B#zw z9|N`F{Ed3oRZVwyAoSCPo@C9fhJ)`JWho!qje;Lg+5Qe>+ikm!4&p^WVDftfBD>ywO1;xeChTd8cb<;JOzGtq%%|)+7GF!F( zYu?cme`FRR5z*MnCRm7GM78%~mR<@7>DbwNL&U*2yBU{XT*mf({W8%`(mV-K&012{ zicUjnsMH)L%8rYV5C5xpAaiYP4VV|?byx{TyGg?*^88*9LbvRFDOf1^FbZbF8xWZcn?A-z2<7lO zxA%eh?vfNtSfFk795Vq!2?|W(GI1B8(o%&92ksE$5saa#q+9Nwkh{eF$F!q66GU`sRsi8g6`52)K9 zKq7|ULl`|#^w9W}MX=)oc3pz$t=Jx+{nI_llRq=yU|5}PM&=nmEt(&R z8Ch9zN^Iq)QOACL%}-0@ML=$`0O5>dM&e;R!mcpCLE8Z2Nlt(%0dfa&HE;7DA_yiS z&2(J<541-RiU2)BV77+?VHeyxThGGP@-JZA^@gzZhpp?V!(VE^Z6YK73r+_}%1fG$}# zcoDIA-IzAj@Th;AUAmS(k&SLYMMh|6Z=mq9C2KV8`1Na-49u<}_G%J+wCIw0T~dVo z*5clu#$LZGDnjU<4rY|UdS$mN)DZb7bg&g#3ZSn9I+S#@w8A@nz`0zKL$}PBdSwtM zYq>~@dvWIX?p==W!FzfYbz97SO6c)oH;_%>^4r7Lc4ihv=u`&x8Igc%+emrC<*Dlo zt{#sYLSK1VVqZU;xxsI)&{Jw88CP#Nwv+C6V8HdTG|a`eEXmqM5of@oAwES}lk$e< zGe6g`Hc@SE^gy~hcYb4H+@**ly?Qlp2!e0uM_!-Y{pMoj(27Qn-@Pf}x1sN{YqkK! zNEa6u45OyHI!_p2i*-ui5htnkxF+qv*Vth;yb8*NVM`Z1_Rw#d5U7?k9_+qdrq;ardY32D>3slfw*H!<_0{aY~eCgdfvD&GN z`0u+Os!|E(J7KgC<|A?U?!SSi1@&S%!fWtHj~z8ylg`<@;U{dEc|+= zkg0LWHgqucIW4K&b@=8dR?L=*-GIt>O6)R^YGmZq9Vf^Kfg z+~3D9W#qQ4|3lmd?<>k^Ikhn>{lPI#85M%}?@g8R*P zh=q~;s8EcK$OIlv?rAjB_|)1V>i^KN>Oe@cva+yfCZe9vW<=i(L*=KFro{7_d3o2| z(BosU2@kg!7cuPf8eS>mJo4<0NegU&Gvs6F5ExNw17E`th|U2eIkA5B>Vk*-Q8wR4Rj=2ktMhynSxwzl{#bsA-#zY{0zzAY$M2`EqXp{RVu5es=vXD>jR z+&{MJ3Ik{w2b4tsXyq5bbuDwO&E4VL5o%c1>!1X{BdAilC0~pDqtz4+4apaGi5u#~ z`bs5jUjBvRx4LjYM#O(?ZS)$|Z3GQK*p6E0zx?H7fM(&P0BVZJM$06-_*p1U4BL9H z?wwgUw&DEN_C*~H+CuKli72Z^d3!*d1*UUX1U*1g=bHiu)8+gAWt-%JB;h zz@c>p5Y31K;Hja>5EX4zS5ui+ZbU9EUFKw%Iet^dbIiL88!50SCNd~`Dz#-rop{=T)*SJRS~W~x8xwAdNSWQ?ls^3$+o_a_|yshm4?dsES`Vh*ir1}mR6OTDysn- z9GtD*ot@BY>9Pz@towY`uIjDnNoUGzC!h`OEiV6%r&3K;`er@H!gSK_y$^>UfL_3M zL@D7X3exLAJ~~l2AK=fCNSEZzAI@EPEylW$lVhbFOj4(9dUO|bolfPEw}E=;fy?Oj znHif?kTaNo1KN1c|I z`2V#4YsY|(?G#oRP^Nob$L%Q6E=C2^^%uT>?=v5Wh2mpa5_%ylt#)4SY6H!$HCqG- z0bj)kD=`tqU|O25ppE|ho1hi-4NT+j28$+7ZsT%qwCzRVAH@iitQXqW+g4 z9W2RP8xH$wi3-)4Nbz60CddcnmVM?tYb;Ppk6)p3-7Pag(c7TC<;)W0W2(dzV?f*kTegM^$x7*HS=m>-rD|62RDZxcQiyj5XoK&pSq}D)Zh- z1>y8>`b4U)kZ#^p@U#&mib^~P?0Kz}%kc^mO%hTeb2W=p;>;Z!9C(>ya#{)$QWLa4 zczaxFMW@GoFt~#u30Qbq1BcUn%5gbRV^VtKE93Pb^LFu)57lTtIkNIz|y{ru%lg| z!K)=My3_M;zq7GDchcxj3knY&&?<+;Zhq8!uy^t?5c!zU^OSVk;n==R01XQ}pwr*) zutVw8Z*`^ihL&Gb!LKjx_SyW!gi9Y-9#;*hRoM0ujehfBT2Tx6ZyAtW%#dQ9dxnJ+ zsil-BtB5Dt?dg|0u*T5vgT49B^hD*-_3I2rGRJ?SG3$4inN6Qkl$Y>BH(`V!r!LDi z7-b*ycb!>L`@LZ(Ki1Sjjr;! zyZ9IWiE6SDxxc^JW7PCV-#Q@~k5|u4{Ac=9$+ui?x1n9~Y<{H?5zvkldoZM8#(cYV z`|OR0k~o`|gt1m{>~XF67NHH;DbG9uc6^D9pKi+wJaMwd9f?-LWgC z?LHK)cn8OS+nid#@_q$D#w0FW-r$dJ2L8IU7s41Qm;E9b1F&P`s^aaYJp%1v*i}I1 zKAS^{^E_WGY19@e*V26~8D5H`OjkZ>k4U~%(UP?O@T~vxmy(ca10+Mn+zE*xW1Se9 zNor=tprXQ*>D|NMleK3Klfnvs_s_y4^eP^WYmc3`uZ=5I(uF2kmlG<^> zEeVCk+*zRnZvHvL2GcgKR&C($f(3R`E+8wt zckT1;uR`Va)LdM05HGE-R*e&_c8!+qToTtk541*-4YhD;{@(oAMWc=kU5cLd zonfOhgwq;?kN}|#+yfjP;**jl4Lp|1`M1t3|0w7(T$^4X_WV-ab1VI_QJZPMC&-M4 zaBt{_e@E!-;^?mpCE4o*Zjt{hb}n#WF}lf$HVAuU<`sHrLv#opjp*O{56G0&@Eti0d^y8E@#H3^E01Jp*DdRPo|5VJI{uB0GeGf7*w;wX4Xz)! zd&~TSIw7_|^tO$S4X~(m!KE9y68~|dh`B_xj({ltI@;ceKfkYr-La& z#&kjhuZV%^MqW7nJeLd^=Wc^1q(}ns0%bKJ(xy;X4b?f3{`?IN0Q{kb$C}>|?+H0@ z5sW?HJ^`nXH_h(!2mpguFAaSWAY`2Q-8=X2xXH|d|GkdwukhBdRwq@OGSWw%g0u>3 z07s%x6h&bl1g=N$?Dzp$r}Yd*?bg#>?`>lysgU{M=)JzhB4 z;~h?a?il&ZK6Sk#yrZY?_g2JRh$GS|I}M)Lel~D?2cyy3?-U3zsIvBK<^jVCifQR= zrI@MtPvtX3cE?OMLq_Xw7b+9C2Q*SAlXhkLqQs7>I1D!@^!06YJyMnYx{dU=_o>O= z&<-h2E8ErkOc=F4;--oUz5Ew0J-ShAdHJBxEaakidU`^)GNd^_ckM}~f9U~N^O3$W1Yz-XRnNHxluFp>s)Qe!-ch)U1qEp{8k-~-!8pz0ogE#w z7#Tqq64o9Y7x(n%+)GERe{YnP8eV`R0oFlToQQqXHjbBVq?bRt=7_n#Lo7< zajkA*F2^?!1riO}OIO0pq#l1%dKI_J+o?D7nfSWhZjtOA;*G0pEV!~s-@L6n^lP@& zw&6(pe^h-{Se0AX_5!3sx*MbgB&AEbyFnzSLAs@sQW^p2l9ul7M!J#i?*1ox@Avwy ze;s(>fv%X(m}A`Ij-&4tpIkt-pIx1sx%<>K?U~}f$zwju9J9XQDKz4}wFQIku-|d* z$4Wq@d2npr(-RL!^FP>3Wk9%U4d`j~Zp!t5O)drmA!*RFpoJ zr1?dilrD>XEk)PvEttO(v`%zJTG#EP4Copb$4xaDgmIAfkwLJU{qpy`EIPn^I8%K2 zs-u_X1#BR=3=wW-mGjj|l15+y1*}|6B&|`)ow}~3Q#;E+R0Z&PKzMQQ(;|^2O=jun z18@T14t@;=T;Onq#632lk%BKs9!np@sM)7oR9QIzq?!DrUpkDqlKGsNu|PVR2?A8D z|0o^0l&&d9s?L&10Y{>8*Mo00kAq$$1@$7*e{Z2{4O&z>Hbt%Gu*siseDJ=W7zMcw z8!Thdk$6)SfYKj3Y&jRWSpitdg5wsPA_sAcf9^QUl);sR@cuar`{)W_iqZII=MzB- z89lUUMLi7a>KQ5mYw@JTssq$Ym?Cq^lfzy*${)Gc&P4mozupKuw*o#VPOz{GZO1T2 zbYt;L_HZXQ&U*v7wIA*j1uiB!Oif2n2~PXh`}mAszgUx|js_lgKn_}(n@fX_k{bet zp{XV@)n-k*Q%(6n*%QDz>e#Oz8w)r$@`up z^i86_Xdx|K2NZ*UjBYxCadPu3iwdY8-gkMz^+8kX`x0Od0JqHjsx%IgyhglUF;{%7 zo;GE*8uM^Z59^^}?S|_85yuQ&{89Jn$O>ZMvvX8L<;EWiJz&+L6EbYj{>tqTTox} zluR)J3L)a0K58=d*X|3GZLhKlVj7BJZlSu`_he_G#Rk&&@ry5ugW;;w`rl<4rua6G z@9gjE#~AV>As~Vu{PYtx+Ls$R3&M!*t+Sl8QdWFiCaq(jw}Vzn(El|^Hh61YG~zO} z5H_;I=R8}Mx}zxcUe&k4`6&0JF+@s@K~pMIU06XjUkd&JlwyFn`m`)>I7R><2)HrZ zKGnsSvn>v?c`*{Zy4d&qnpI6Mj%bf#{q=4;QMyFbcz{f%5#`LGNX6EnjMeG?jz13} z>wAdr0$_qbnwoQ>CI0r#$$t3(%HQQdVV#%B(!zY{aI=+ea-O0O6{UV{auhujNS$r; zq0fzVTJ6RP6d=7@>1e+7NYv4Hdc0Y_a$GlOK}P^C6LEaQeHhwLi3Y`zCcm=?L}T(? zEK^5V(T|8tT&HBR{L}+*5*XmODszX{RQ+jU^0Tg_hiS0UF~O-=-;!ds^OpIz1!Dz( zXy1iW!S{lr$=n`)Qf$WJJ7XUCm590WNH4wLPkgtxt;@c{GE11p6ycOz$FJ~857_8 z`$2ImAbDdbgDRyqL>m6TfF)3rOGLnvu^^mxqap~79tc{RsBiW4Z*SzUpj z-8M~a+<~eRYn`R4W_QmU4Sh|L6{21Pe-{Iy|o;`JTqzYhv`%W%6SSLdnXR35HGEgTa}yIz zXQLUa=eKkN@dhrl>0M#4dCxgTKwFj|P0e_Fl>iY*eoYusS+Tke;7Sme-Ae)>ixlYg zw18)ZGVtO;g$oc&vjaSpXQAmSaZLkfYQuJB7>G-_P}4-NTMVCOoVGNT$&oAG?6G>6 z5Du4VYlol|)|k+_pAYrdShsvJ!j`-659FAeOT+8-V;^w2J@@dY#$2IsYcfb1nI2Z3 zT`zhEMe$Ev{k8=5V&4R_b9b>@fIRliKo{OxjuH1o_zUO=!4*|E)6sQaZ$b#r19w2R zE{{ff)$0_)p@&GMpcuywWHIg8S&miPscL&kOsv>D?Kex~xvxcVFL__-M@YcD2kjbW zhzUTM7j%ImI-bBQL2|(B4l(Q?X2EV7=3Wx4^y2aRgv(6qF+dqX4B@A6>$-*K4Zutj zS~&FkjqAsP36-vrpRUx)N!Wb^k51+e0vl3zJ_YmHT3Tk-vn>+*cP;Vk&cz0aFRu8F zW(_e3{cd@~CdFF9WIJn*b9tAc1Ytejrub3e`EZ-q;HvnV(F!4m`1##Kz2F5T86m$k z85^4e+BC0r5`c}#gAUGjz_unV^+TB!fMqvMfEHRYDU|JLE}-R2n0*H&r{ya)ZF%FYKPJ(ACJ+rndl6Y-{42Z|;Cqsrn+yH~FZ)_5PPsnq zFVO$g@}CbyNy9&#_hXwVRNww$BAj*XWYrV?#fmgAs5U)YSONDdfZ2|9Ta&IFzlHfd zvb}ffJOv-$oo35z99S?U%7I{+l)4LM%-^$uKi*>ajlHk^pgSL@GeQGKc_FkQQ9%9j z0d_Ay!VfsoOib7U8|4Gc4g2K-bB*Ox4vK~BGmhi{y!K;6uxl6y|JGu5dEOwQvwAsN zz=UfjkBZ422v#TRh4XQa)aC;J)?~-aJw4&thvWy&HAzVQwMbo#+g3)XV9?ZqYyvoF z^bq&4fQxFgjusZ*FTS%49((PIctLY1d-H&X4G4mDGg(;0$o1%0R!{i0g)i4<^U~Ab z0~ZpBEDT|=($dhFdR{W*S0a0;&cQ+%?Qfg}#QCw#qqLIvbNAAG58G8wic?PNA^|k! z!?GUI0YEU^O6B`_y8iP|*3Cz3R7}!;PXmu&4UmCA02HaK7YH(ox3QC&qG=FXd6h=7&~gD`6NeV%3YBQdPQl~mEA*p0tj)|^ z1^lAbZ&Xa4i_X)|yFPu|-~RjI1;9|JY4H4d1ST9nmhSE)Y_X%pOUs{1aEzqu4j z)zg1I0k#Y!qb{9gbxw{oci%u$&j?^~0%TzMv4-3SpwMqiE_feSF$1FBD=AdbHTbiO z2mjXoAeB1!5hdHpf}7z-Z~)P%vss-eNo1dlXJ!1CkmbGWai6H(k^i0=9#4?8lO{yU z@vDkdZi_7twVO2J1E=8C6ijQNc`71LigLXAD?!T&CM#pi-IQQ?ZR5vdB|f2v4aYZf z1Ho@VDJgK;{Z566)Hi8KgWgLh$j^fz!`p))=eC3L4hj*H%w*akpVyyMkZi^x{_r`0 z`B*B)C%(yTst9GT=U(>&%E-%DQFK*V_@8#8;!DpO0k6}qfsIo)e&7+d1qb}hh!|3Y zwIxek+Tpku*qUo-pnI`-Q$(lhn|^}?2@u19jsW@bprU{8<*MWs#DO22$Y~W1$UE}~ zdLsd8O2gZKG!GXL{Z4ME^~=0V__WGR`nZ?9)|_}Be4fBa2=;SKKgj7A)=*{faUJP@ zIvP1s8Z@zNL@P&7Ybhy>&dlJW2EB-2wgo;-U^O{&;L@-t2%>$5?^&~n()}VqPflU} zy@%9u9~?(46kutznlU|Py4=j{-pthhj+&nA%eyQQ$dHJ31kp{%-kqhDRhn)KQi1J^&w?5fG*b`8Bzlm+D~&HstvV zOe`#0e7K?2QP}$w;n2h6Y#hgZPJJ;v%@Yw6!D*`XyMqLW71u6jKkx6oz#OlV|Lcff zI^c0k?75w*0O?xBP4by`al4&_pKCfEvklG-N)v>t#RCf&7gO$uPh)n#78r!SSyll; zC=h7b)}%f6@%gG?Z*}U{N%YPdh)_T+&rsSEa=EYZUo%G!N9fk6#_+(oRanU5xzuM* z9s*P8!im1?Vvb5aP@_#+>H`}&T4ve$m;L`XD@=LgJCvj+e)dXbm)B9ldS}@r5Er2b zr?aIdiUg|(n3ur5j++>*Vet^1F+UuM`>`&dcULOf3_N{cJH4iyn0a{U<-Lxq6QpbP(%EN%H{OZE;V z4FTe1U`KHw7a(VOu680G&gg5qdmQLMN=_YX=7&aRfg3dl1lQ1r|J#pNHpe=g{+q|> zE<|H=a!)rV;>1;4icN>@*`g$}VgUdn+&1?*v>L?~OcgQHCQj}s9d5==JECRgwwmZT zAA+RyN%Yt(*{X1VI(0i&E??cB?SZCfvCQ}(BI3hVR0-hg)yAJg+E+`Z~f@Eo7F;dh4aHzofOf5gqMz#~C9YVa69h7}wjQKHq3=>@@M9>GvmE z$b4G>>{iNjSy;5oKyNRwkCX&{F?9(m_A?e7@v*VTSYWs&zMDq$Y{JSjuuzS23yAt9 zce5j%sOGQj9jK{*gI@nbA=t*O4D5?Q<=jefrTLN-NS*cX)41rb9>Acv`jv2&SLzjg zVMs1T&AH#Z)d<)?)HbfvdYk_GXb^?oBs*kTR00ebC>aCl4Ya~tA3%xN0+x02&OBoeO8*va+qR@wsWPxfk)#C{w?`q9 zlHw(id6M_+9x&mS)AWb6Amwp{pSYesy0*;PEIZy z8rt|~BmG1Zhh`*9mr8+x0Mq^fO9eJi<=rqN3Xp~I5PwTz&ts{zBJ~Ro4+jxM9w5^9 zz7m)U0g&3U2L=uW6!L6QaZ~Vwp^v>bp^iJ}E+d8TNH;ArE9h*(3sZEo?gwHtP^1Y} zQ<%y+C21vy+2qTf3M$1 z>J_5Z;mEbp$UfYoK@jLJNF(AxXzpJx<&{Bxfrm_K;eFE9wSb}!i6d`LnRs?}0KD_f z&34g{?==iHW{?8+YO1FRef7^b;9~wA5advwwoV$bA^plcg`O>NxO3T7d6y+N78SVC zDlx=$(>||KZ%WRIzhqrh(34Yt{O>eWEQ7o!BE^BvJ|_V%xe+kw1w3e~R>D7uV=UJ3 ze?$m4BWm_eWw5>>UoiAoc^pHYcZY$>Y0DqNK=DvFgACnWiu;QQQYQmQO5C>N4M%atF;7kIYJ9&ZD#+fV|ah2wcMo``Dvo!%L!2>%k#pa{Lh@sZoqB>3sEBIe#2 z3qy{H!gVm8z;21neO>DNz&I%`>hM5I&8B@n@a+TiXA5d*;S!C!9fxHbFs(s@gw)O& z$``D*3va7*P=)ixZI+u;Sk^!c5a1PqKx=k3wxnPIrt9Eq^^m=A)tVG^6Etq`nvfWrtINR9fxo_%0&(8(?7 zMS$*RXMVC2L!S=ZDlM=sMPm@RKb*OajI1*7A~-#r-B;D z?zarZYret<-pp!1Y8G8|@6+EaTd?8}_VyloG(prD)XB*&^8+FOwOorL5)$2ISrPss zs9uo%qWy5YG`P{c^Ihe&FEBHpXWC%j#N`JDA?^bSWCrO6e{TGgGF-OovCoV1sb27KZD0z@*lx6M^UX)pNpq2yhzTUG1N4tqZbK1C;t+mo5=)K(&*I9 zn|9q2R!s#3^cTPitkNVlTjXD4r5-l%#nT;5W|`mUhT}zF9i|@xE&CX30!<)|k|$bTx_NqZloy4i zlv2AL8ymZ?6(n!e+@e1)3}MR-2{X z7r(X}k}iuM_`R-wD@;px%83g9_p!bQO8Do-;}vL8GNU6Su(PvgDVKRX3FDq==Ls#w zPsBj{j84Npg?4QL-uMPEvjFsZ09e{BH)mwMUisWVAu-Z%`E>*x8i9+O7Cx}Cf}HS0 zYx%xB_oB%&nL4?#IITCX(r^q5+7Bp*^zGYVpZkuo*tj^@%fk&?H_lZkql)~V?*8o( zm@if})*pYLi=MdKEEQ-60cDXsH=}u#7f&>5frCwI+WmKWEwX(&7? z_5S`Y20u}QvSp&g!y%5{;fWw_&NIz>>e>9=_Y-?f?g^6_EB-%^zk&-bY+#Y-5lZIO z@!2VS8(y~`6P?N1zsKt4sPA)5)Ae){sSI}V`n2vv0zMMy`cpj2-|U!ig0M%HwD=Z} zs@?`d4Hj?rGfyW z^oC7I$Or-S)fg_ieGjAtMa0J+^xoEO>YR^sx-=XH4J=Fh(t|@!pzQqXbB;DD0_L0p zp_L*G{aAmX)6es~W~hI@*)-CYJcTHi4E-n(FZz##bVP42)&I`$K0Us?IIe!fLoa4g zGoND_vy=G+yvr7C-jfl-wJXE)sn^28K?W_~TN|QDG1=K^hBiuijzQMB21EJFN}4gb#e&+&pLZ71U!+=m15U zc*WigWUP|#0`^WSuX8Bh<=5`9`@G7@PbUMKLfd?!O|~(p9jzjHhRZ0D0WJb zcwd=1Noi*O2ObE;o3?=2ar60QmN)L+L*m-mGH~ss91lxAZTV`bPNZmQ|@#;iA5&&y-6bayXnZ zVFTQwkZc&MH*1Vxw;%LzT{UW5N%Q-MhUoh$WT>M>shBLI1OlOPplmkGk7nQ=F25in zKw%SfL5t$R24*wzowu`*B&}6EnD5O6z_#VZ3hlV)uQEY37{DA8xXr`2vmG2bsP!W#q##~2T(LTH; zB~A3Vf-jf1g+njx>G)U~>*1mihZmH7wEgl=wfvso&01Xr1UvCJJN>|Xo;kdaiRj#a zF!`_#W(YMERaSE|sW1m2NB}aca0kqEAdG~xAI9r@AbIbNHv#DC#_K!(=~shNfJYEU zY=WJ{=CZ!;z-wTdWPjMvn}+!$f+1O@!S|VuD;t?k2LZZ0SHRQdXaE{>_bZJ#!p$&N zCV^;(TEWopCCCbC)zmcKpT!dPvT_7@=a(r^a^&c!U!c6)A1=a2K(E5$@$_){^ST50 z3MBEnmyc`_0SipPfkw^OHT_zDJ|?S}%HQ{3b-KlMYkKl&ABuy6qiE4hZqiC6NtTn) z^IHE9sqZB^8niBVQQJdBWM+w+w9)X(lZ@>7|IX*4sF@iJ9y;__i7aq+WLWGR4<(qb zz_eSH)R_Sa$w?jvb_Jc1MFp%im+_*qi0}-R?7)?;RS7-3M{WyaGMVI(SB3kLfv@q} zvCw1L>bRn!6fVUZ#hax(!%3g=8?fBjk_7G?dc|hYP+Y`jUcf`{yR(e}DIU59z{>na zkL*wxL73+vhy%Gf+sbRHN%6g#@4H%BGwh$olXx5ze7s&8PPqm!D!4lSaoYuWZ*L8y zlla7mDei$!?V@c6uXxA^zC=m+-WgR=cq~?uLNB|g>!HTQDS{tx%0Au;mOH4GF`X5d#{;j`PFHHpLfvZ1DrN!zA$T;go>BD{r0_ew5Dsq8VLiC2(d+Sj zH`ymk#O24!8rMZ~)QoM<{3AA1LIicsUn3shA*L+rS*Vpmo}cpr!_aIKFqP?t{dbAr zJ|2OB><6&D`GW-nGW5-G0(SGY?%&e`nz7Po2vs54Z|Mi1f7gy6-;9OYJ}(y&Sj8u8-E!J#Y6#gK>O^hW{KLlGC?dSPGBsSm#t$o(Zu8O3*X1 zry0jg(YBs?V2%MY1oWz{39iabt`6m8<9n;-Fs>G|q;8FP!nre2r8zK-I*jr~*U@|t z_NI#0o^n7snpu@j%NDGSLlf>zA?Gc+y!GMeI*K?OWx30XK=X3Aa+wqPJUE=gw=EVM zA2|@Kf7I_$RfjHNxca0^W7!vx`4n#Nv^1NcL9+hz&bZLF6y8KV!b-XRuOq`?W&nPo z%n4zoj8t(0lZlDDgK|De2Bn~Y1Icdb^mmX}3D~aweoFLl{-&>`3EGKC3Z{zhHi!9g zWOAIZtx-}ZA3Y0S_F{+k%7`a&b?iB++btlFlSdsxQCyXzmxK#VDgVBT)BM)_ zvOir)=BtN|lKQxc4550w-%`7x>IIL}ivS@V;cKu<1i2^iGAv-92~^r1?M-FB;nOu~ zvIoFu2l^onpcMfu8Z;s6o)Q=urB5p|ce0MwX zu_X?ED9cVf1``m7hw12Bv!+|OvUq>*W6FWlx}6U*AUt;~99L{bzuX=y%A=!wiZf<` zROm5e7_QoWvL9Uzr#+D4Wi1QyF0SuI$h(gmkI+)Kh73{f&T(swW2SJwSlv2QavM80(VnVA7YuVe&a7kuF4xn)l=SrUw6zI*H=YIX)zwqaCd$>}GtqOm*|})tp ze1tEQbUBdd=akJXp#CO(zV1P@5M?fI5ZS7^BGY4AsgnfO1`jQJC7)8?Lbd)fu@Q-4 zL7aB^07wD}dX9a@sB&Vfc3`5-w)*!LLmxAczq=}Jc=UiQs5XL4ombX7uyL2*F0f~q z8S5xv74xFc)niziZl*7o*V%v#loqWMlqEw(Xo^B`Wj#FUq3w=u>|TQr^&z5AWQcQ2 zp=~D}X<*cVL|RozE%qpKi2blUy#i=C?rWV&%Snb3&R!s1^93b2Ca|8FY z5#}g`FJNHR;Ig5#if0<~wUeQF^A}YgRE7>(9129@*=6T^`{iR;@HiqCXq@VCy)&MX zFwr?#rH`rwO4vz3FVDSBaGFG^hq9xM^eDL0Xj)(r7G_M4`=WX2--@Yt7b(fp;S%(B zWr}pd2Rbmmhh4p6PBmz#He2iVTU_#7YHZI}UCTRx%8<)h6&1OJM+U|!438j1?u-TC zUC;R6ylsR0+u|v-%3K%MSC`xK0ORxJx19KO>1FE}%t}4IuU~@`T@BODQJLBuLz_ht z)AxaOJ%Vf`xFbqQDtTOm`76*;dMo_>t{XHYJs9%z+kY4f^PT!>>}NWPl>f#SDNjUb z(LcY!N1nFhB89ay%)H*5s-BmGNtv((NQLnPcNLa4I^3^#Ldm7@us@LG_MxAy&Rfp_ z+l49*PQN0fju%iFw1KX90{JNJ8-%E9R|8aSi9%W#%HL@z)TgoM5$WHbiLcIgrMaw@ zc*Zl|&3i8l=-Srh7`FI48#VxM4GZDk^5>);|F-mztuvqnZE0De!qg+-R|*nIc?1cR zMF`6v92}HF0E|By3j!VX$=(i+d9;-!5l;UmjM!3 ziMM>B7!$_{2u8IJo`8b}7L^+LYBWttgXMD8TgiGk6ZASR4JRIDJ%)xSI4ZFTa$P-@ z{1x;OHs?Laouc_1P!xuOY9-_OA2!sX9XK_0B;@KmJ*v9X*bwEKC`sz}(Cix)@5>~z z-gL=qA_SVYYgr66!#%oz=*a!kb zcEBzcGqz?0Ml?uepJoA+0#t+6m^SRSFvU;UVB?`M1>v2lrFOI~j$2 zHRHyLFC-euA?T)*guvmLWDdY({R#Ff;xV_-Dw*ByNAa{*!1YLi`Wwnv0^BAgvXp6J z9-RMB+SZGfPIsqK%*orLQdb^E80?4<9I)R+@?7cbt?|hpfC*c86#1`2xrS?R$`dGQrIPnNgzK zKM8DFiWl#~43W#J|6A~;@bSS$e+B#>)OCoLJIR=^k?k#wO4a~*{diJ za_9*c7`{yAYkHW@>kyWrmcz!NG@f)T`nmFOJN0#uCcZ~i-)02yzQA69^h>DLC#cqI z%6s!~_JmjnUII6%#dWGsOolL!Gx*h$kC0=4P@UO4kk;Q?9tvkn7JPs*VxcBem5wTAYK(8F*C7BTPl`NuNl)1PxO(!?M}Za8kd; zecAX~vo$FvSr>i6_@gy@FAvQ7iyMx0i-%IwnM!mJV&AP4(7O>qf(%O8lBwFrsiW^R zGmXgx37uxwnv&44x%S1fyIqP}IXCUPwHU5{GBtYUyG~C<_-Iy8V@_;AX-$O8Q&Hpm z?^^--@;bd?oHD06z2}-ON#-4E)(lX_-NI6kosjnjKp_tR4FzUbYWboRaRb`HMg+k} zV*t)H$Al5BlTlCa_>((j6X?0@>o^{qH~C=hbiT=%MVs;_^+P}a0>#1MxjyuK zTYPSGhXR4h3JU0qIY8WafmxSmi`b+A-Mp%(h&!VHmW*uO zNGWQttG&3mSQxN>`_s%(OiWBcLDV}z=wU}u&tJLZPvC+rBz(D4jSl?K0C26EHUQJt zf{SNmwFYK{O!gQL5qEITSo9WY^B7sVq?0b1T57fA{TCq^`;NxhG}q%zs}1djdqk>c zR)v{S7MR2SenqpPF<|BaL}QyLwBKpX$P^oL3Ur2 z+F#(6^ytvA`+O?`eAlrDPtP6-?>WQa5il_|o(F{IJg7ZU_c7+j9iyOYwC;11N1!;~ z)=(5AN1@diz3CBp%uu2$X*lFP1TEiKk6AOAqn5qSh5)b(#09&1dlklovH$lyHsA|- zU2mn;bbbJ7BSUflA~W}&OOZb?y+*BD#K^DoU2Zntzf__FiAUY)=upRf`?Dpgd6`Um z#l>-WI0DD5FnxGrV|nkx;D^6C*}GjuO6|3KUu@@`a30OW1G*J@<@^8%0!^IvEKcvw zS5ZYEO^O)pDXa15TkWPlD(U6%-Ut}TME^z5k*aFfgF6$Zl z4peRv1Ah1?oW#aL+=n&HgooRUweM*l#nJvPKQKnBS@PHe_D-8{hD|q{JhJgxAWzGh zLfHDuXm=?*{}+Zvu&!#6*FK&iMxhk7RQKbqW($CaR}IZN)nRmi{{k>k>LKw3D{(;b zIoyuG7^C^`8P#V36lP$ww1A}O94hET93ep!(?=OKwJk&BnUwaJ_5=ae13cEZXOV!LQ2Rlr`CAO$R)|^e0lv^ zeC#(bay$B2W3dhgoHXP~>_s@{;V%(h0_y{S#w>shvlo9_ zo|+|a!SWiXk=0K0-D%Kw?!eWSJ=X&q&IjKIt4|9;0xasm=)yoC0JuG%t4YR^y#u*_ z@zA2DV*guBcl`tlp20*Iau8NCXPKXnm`H&31&~!V3IU^S6BH|=CtI)mSakHuL;Z`5 z1c)9jXclDz3&JI`Uh*IN>7^cTo2nTpg>w3xN_~y0Qsx;qqpKu9sxyYg!oQo_F5UGo z`o&7l|ADmjaj!H_E(IxlEb%yAsNnRsTYfz+aYR2#ux`%SwX1JCiV-y?2q|ZpPr@nA z&;OJ2tF$f;jivFp9dy{Ic}trNsTAsZqfb#WDpeUCi^$(NU&6fCjyI&>XPz1rHPq5t zi3v3L_ckt$c`xgJ_$fNK75}%y- z{QX~L0tbSzM(`v8w_$R0)hM+s=cQ z7VF3C?I-QsFgSH2+wvITZZGn-EcT9BcHBLCyqU{V%~iMv9$lApV?^qc+^Z=onFDCr zwUfm_h%{8j(U%c)uyF%_gJ5fPfVEPX_@FAbpg9CAWVq*V^};e z0uQtO8ZrUH(vkE9N~?J4nN|vlGf?m}Qc0qt!5mLcAKjY>Fsbr-e96I8t3y|~x7qly z-n2CoV^uZvX;|7hlmC+BeKd5t8py?M1lCs(07sblZM1{OgEjW?zkbbW@T6vG4!F_U zg%fMDnGgSZCA+%JcD0xA#v-!LZW(l&kOlBu*%-Xm{OEM{TwGo~(_lfZo~oxe{7DB1qi9gqjy zf^;rNDj?q`1nsClEHX&Z1%NXMIyjLJMakg%I(OUss8d{NVxsr`<*%^d*AI8dX^nSB zP%v-{&eQskeaY`Wg63$DI*DSS*&_uW@??VPtQc|g-4eSn72kRvwD!}<3^ z0<+}#>jrmnztC(&sN?;@C+(Bb(z>;l$BRtzsdu-F_)16B=gKEs}AaFD2!H0AVeQr3^>7gK>7<<{68EZX-8 z%PgDGX+(?;SDNB&h11ZH`IF+D4SKu79FDAX%GQ{0f!cG}6>D^rI&rf_qkA}TFqwZY z6H0CXJMsBA5I$$FbAm^ifSq@tIxv#s-_{jj=Z93$aypZZX_8C7JcAUyX-6089j`~q zgND%>Un;jRM>H3@g%DrZ|OP9j+tHQci%$C$3+Q~Lp8e;$>O6XM2FV$nik;Xa}}b+aKTy73&QBW z1+FJHV0z%I#Ov=_LKBnS-s~kSMXcgh#ZxTpJmzn#rZr-%Ac3Nwj;>4Q{^TovJT>vF zNW;BoLf!*VtDen`U9GEh{y~lYePAQM8Qs4YfU5I54tOaD9#W*Bc55y$G0xFV1u!qE zYwA}S_n>|6!9ofGJy${@7M!DpVFbgvGVABxdiYOT6TkDccnC!LErtqNJ;i=u51@C$ z2Ywdb%OOY`DaEZ`JCmIEapE8S+QU`T%rs!FDZKsr8-k(p)m`W>-u(+$y;oBPd(L>p zPvsknJ_J8zC9`+wS;qdB%&G_VwVw>B*EaWd_F1jqG&E-7sx`QIt>ia zK4?~%1lt48rw53~P$Ik8jta!K=2-;*qP@V2X#h;mQud+C%X0zIr7p5kni>BB^4Z4M zC>eS=(DuNcgpA)Ul4uqfNdWs7l~hDOD{Y5eY}fs>8^@s6FQaH(p+|#$eglkyw)gy3 z`sRo3-8kGFsCCGR9WU0tU{i(qUPVx^M^UK6je9Ucedqo`5$@=PVT8o2E%u=eTM}}K zUplP|;(9=Wh*!Mr_QK}EM?RHjHr$=TO+v>T5@~5!g<>kD80C0=gTvNA&Zf{u#|gtG zMeSI&fH?}dS4b$me=?SkAz(nWTn{@Z!Nv=TtBLCh?X=)XdTxDQspqJCd`pb0#=lCK za~#uh^io)g^52_Tl$U(n5%$B-stF+~CLq~hy#)}X3NT+adVZ}0B4Vv>xiu{nftMAJo2s?rzc^ z$sakR{y$_kSsaXh-JO1;hu;OS{|1Z*ToGS60s^5w1O3w6+^x<0c@BFr7Grw1v6i*= zU9owu(;u!=2%&&=fj=(_vb33@O|I0#)Cb?*o7GeBLgbhb` zK$;U1gMq}GD*k-?9KL+5Y73TOpq2yfpfEY>$FXeYYXXE2v47W=UlD?h4x6qFf{kjc z(gEDcSA%=r*>L2T0*B$5YsXIR1&n#8N)1OyO7$DKe7=or?Ip(Q?IyfZPaKNRR*S@0 zGQeFN>L{xrZDwsW`suP7u63XU5&KkDQGJm!s6)w(m-7_0Hjl!^6{(hs(r-ZL1k_TQ ztUtddEo1uB(qakrjA0>GDi5(41rowF_V{2M^aKVf1!6(HN%OHqK2MruuVA=+WhE}FRi|$RRPvCnDhxTRtzOc240|91XnjV9@2Il} z{zKp>MN1WX7fw8DRvE>XypNjfe6L74SRv1P(?-wd>hyO{%n|r1%jX8lX~yGDqrB*7 zCz9Z8MtS=`E&%rN3*`@RkWVVX_St2xOlE%@!PFqAW{%+rZHCJPTJhz@QS!a<*k#|C zo5PM+bWhd7P&U+0QKTqm98Rn2HgpkagSd?`~kCC3?)mR35x6U~iY&&bGl zHg{O76(zuN)3Z(z`E_5`TIl1i@27dA_}>KgSb0#G3gj~hWbe;mZ41ukZEX~)*y z%q~#e{&Yz|k-|GV-qj5r7ZEf4_cmQ_IPyn!s#ZH@qh zz}IUa7g3ux ze?=&XRCGZ^07?CvR&^X|jbED=>@e?99bT7HQF}*Sm!Cw8gs);EeN)vLI^iuz+4lZz zbyzf8;JUg0zc(B@21uVpUz`QVGe%2GwxJLNeC?nkl~Q@zH@`oX6DWMc|xYhjUNPp5#c|U--GRKf%}`0zd#bX7M7OE4j-Y((`zh)(@P{ z$W;q*>J=W4F~%n8$gRcbuyp{}-46=J7AOG~ejc9PXp|awAO96e8`0F$;|C0CAc}Ln zk^e_OCfPyj|3moiH@?H`#Ur1DT+Rh?JbkA>;&?fAIvj+>g@uJhMGL?@4zMtEiUDTu zY-;MKf-LhIgv#T-NJ@HidGaML+sFq98Tig{{Xo;Zu~Ai7yuH|P1=dW0cKB~WGT$5H zZj-&a5`?6177hl&F7ZqR*3oP?AO1@32Fc_^{zIuU*Ehs%v<)e`aC+k*cTAjlC|OHKX`!^|aO$(D?%?LF zsE-9UdiBaPh`y7P07~hq!i&IX^CuuevEd>T0$)vZvTgkin7LHPDW6#k>j@zv=xl;% zZ!T6_FP}Zw=;;yRu%KxI+WtD$LC6VFIk>+FknZ_GL9By-5$j)O%3YS?D=K$nRAJ@OXZyoYZMP0oM6%BuM>>|VPv%5L` zTFKO_tbDe>mDnvA7${dhwm{96@9(pXUE>Bb;|NJUOMHD1D4FP z(hy^`?&#h-TYh|Qrzm)7@|M^iS~!(d(ZDaH3z9B-U!14IGN*uz9-T&kgb-wDX=z)# z5*z^ka%#%ukwudcSi_c-Y@*eI>q9g{tIBc`@I-;lD)1YT{-*He-DK8kSr&U(M{(sI55xjYUO1yZGfM z6j)IR)vQ*Ql{o;9Wq2Sr2YrQM6AhpEBxW&mGq!_%GJ&X_lov6C2+h+;92|WJ(1imv z9RNfZu@EGNW!*zuDlD>b-SIzsHgyb+?77yB_7(xe7h~-b#&o&jW)M@L*%-{uJV@Um zw$+ATNKB7TwzYodF*4B> z6%_$4d=Nu#?*hNbWw{@5an7KQAU!VpEEwJH<-b3wyw<%ZZC5ZskX-a_aYnUQdwcl& z|1%Mz!9*q^Ba;?|`nrC2Gt45+g6yGvJkL2}5OaEa5?U^ggG%~UTwO1i6%$2f!!bl| z>Q;h-FysQV4&C0aMJt@B0H0oibEVj>n++vh3q)Rg5Q?CJcr&rnOzNyH??stIR|Ym za7F-HmeT37C>1sv7cSSo-;oifi?q*1d><=(pB@2u0RZwF+~OD#Iuh7_4%xNPWBxa|@&?ttSUpTf^to9^(i?uY?mt|GVFbBQw69)dui zq6WEACiQ{U7xA52MPBL%A?o%joax;8?{TayDWHmm`+-RTBz4zP_Gv2q>fS>+NTYCk z2l}%xM9V<8P>sP*zx;)tC>(XJ7oc@2;QG4v&U8j+kz|kVacXNjrYO9cs)~+G0~Qhb z-@zj==^nsd)BIQE9SbOFRV5y$y?`A@6{fX`Kk5 z78PpFH{t5A2ci~}U^G8m&OaY5gC@dOU^ANv0(3cmJ_J2U{ZILzTGPe~TAQjmjuK%e z<_Ql)5ZCC0)AeXZ(9<=%A2L&XDp2|I_%tT;sPcQ)TLh0{i9SIE44PFa$SUC(nkjF#o6MHfQvXm6Kk>@2$H*Enp5UAV>qYKZk zL6(LM1eN9tGrspLlGxUvO>qZ+zrnKnd*x2=b0o7Ql+pBArwd}cpxPl zjO&8^{*O0@S8K&Z>u8xsLDPGH2>8_Bg7aiGvEu|njIoh!9(+ot8|)7DQgu?^#|?GwX3m~O+nO@XXJM2Beu}6dBQ^1_?8UyiqB?=^R|=+C_qco|h$Rgv<|s-C zS!X?~G7>McNUN#$=sBnXw%krRIk2C$f9qsjYiuNGYRnv!J{CWU z>|}6~7~=ZhvjV+swKKuVMQQTrw3Vd6g;To%IzPzSS8pyCu-(AigXdGeK~6tg3gqK7QqWXLhupZOK-5 z2{iGRwk1{Y%H%%rV?R>Th+tbasEbA>rZhL@_Xeh+50VSx)Wp{`3olt%zx8T7oW1Cf z(M{8-lEKDV52~buGSW`Xm0~|efV6%(em}E!K`eAA;AnE5;_C4V^Jr4DA|sNQo&5%J z7jQK5OG++1npW(ufn1e^nR&CjZkbgwN97^#yFuW+@bIahJ=pb(@Sn*gkEgnCCIZK1 zm&q@uRoSYOsB4Y^AGxAF)pEVt>Dv&RZ6O~hKmC!mONwwK-Me-_aV6UOJ+%2=zmTok zA43=zl@}~CEb|ByO1|`oG@ZR#_Dy3{KASa9)Au^*TDS&%86XG@O75G*(61K6nN#zx zo6IXh@FPOuefV%%Khie4HC^bt`oaFy%wclJRNKu)>bkr;JmcgzSE2iPclBxQk5r(M z>SInTNxXwl8v9A+Z{=sqVjjPbC!Ml$oegnWLl>g>(lf7-Fw$v>;84uU3ab9KdtAHb3UKEyKkrA)T%q>L7*Yb0o< zR9Q%J2l*=aF#P%Ycm%@2d*sX;hMmmU^q(YE>xHWxO_~*OVNr-=G&_-r$*FQ#;GzRj=O}hm1MQkF&G3rrAS%X)0wQvg52J%3Y=; zyw@OIEB2OA$drShrTWh)g%|p}HE+K1-yjmGl-VMA)x+`f%6z$ta!_Qs%S$QegB<1i z9vOamum4xDD6lU2(A%8!i=_&RUc!V%&l0rn$wes^!qj4hj(}B$hX8rLJ~wp;;r>J3^We#j)Z8K znoB|^X$IOt4R(Yd8M#fW^JejRYo)M*u~9j z$UGu90=6m5@Ls>~^Yu*X^C@@I88SIxBh8)XH&nJf*yO9BxWO+h!a`FZ!cE?~ebc^& zBwvedj>~d~>+3qMOm;oo_in)|qg3~PyV2g=N2%3G?o?y%-+QHNS)APi^+zYduX?RK z>z&f7*Y!APpuC*ka>B>|(C+!$hmu>?DpCKWYM+#M)BN`1Lg7k4e83Y%+WNk8%sZ)c;Fz>QX zkqBvN7j&V~D=az>NVF|Id#eDR+IXR&(?Z%VEr=(G!`{j!s zKR>^^dOZXnIp!37a+2=RDOzES0$Ao6@G*GP%lkI}##EWW6VPPZLD|^L%1$DMUBZNK zt*6_?tQ*#3yZd}jD@fB*qPbgMXT8UmUs<+TePK2B=&IVJll0(|t`#nRp6QQIC&y+& zAKtecI+NygBj2U;liHHPlOJb?zU}$=^2zHlbP7ruoqj1eRX@LRCJcB5I?ovWP-@xrB7Xvd#(2p;TiL_~GoP0Uylqmj=<=kGAoJDaRC*^@3WoBjz%IAOFVrbp} zBy;ljz_)Ml2LuEJE?8N4czDbYHNbf~j3ILw~X@+ zoykAc@DFXxQIoIn)5~xLTTR%w*(|rxzrE7pKEE)CrqC9038|K8pT>^sr$(+W-q~Va z*uU`RaH+|mtd)Lm=+F_*7s$SQW#Zvum*K`lA0LvPo!#toCxiwDYoj<=So$U=M}{Yin!LvgD-0V`9cff3T-E-71KxAC}U3 zEM8MnNuOo#;ll+~X4m&-%>>q+Qd>P7AgC|EwXisPyvK7@aVRG9cAst4d;{C8zLb>6 z$fw&(Bad~iwDBFd6zc51P5R;N5kv~$;6O5yyt_X zN1D=(-Q1^Y$r3G`l49>JcLo})qt(9LKw19%Yeyh^;#jYQ?hZd+U*E;ij}G5X-)wbL zU+#VH9>g`8XXTUQtKhl?Y|BY?_577nX6KP@tLC2@JNwcNy73;fBeT#?;zcW?tgI|X za0mz}FXy6D&tAXPLn-W)z^OIpdW_2Ax8NFnZ!rpj z`m-{wG&HUQT-2Qk-g_G_Y~>C5AaS@$;_#p9o>G-~$!N5}z>@Xs%eJS79F=W$vOFK#&eB7TSANZ`)+r>@r<1OC_0yBRE_oCZ z$)}Trh2>|(G3MoL_q>2GN2%Fn0hW%jv9<%6a$U>n+gL;DYL0jslx$nCN#m07J<3k= z$x3yha*(@-$7u|ahcLIH`m^d&>hnM6nNzg{XMdVy>*+!RR$Zyc^3<`+z)2!N@MzkM1jJMroDzQgngI{4`Aq0G?KZ(VZ zmpdGoT-^A4Zsf?aQ)yDH!}QeRrFQ|U<;wz;iJn{Ry%-CZt6TG>GU(V1l-wKlu?p?` z&x3)GT<&)1RdRPL)r!B(x|!Z4cKfRrhw{%aOih>Z1@}(O?;hOICg~8Q*=%r7CO6xt z&_P&Om@?I@rH%<9sYz40xeN{t)OXRV^PeqheMp6_XAYG)4To-~FRck@NHsPb9JDG` zzR#3DdPjV9(bj*{Ix{09qRis)!-o%JV!D&mpCXT@cqxCAA9A5e<(K=ssM}~rB%$0e za)wh=Z`xHEMnAqsMx&)`GPW+Re53OlSmpDgnd72XlR_v zF1RG+=I(jaHnTHGG=6M(+3M=#*FN*WU4!ph$A`UUI}`7I5sy9lYMaCc`+d7O7NX6T zxy>3H%;4hh1_Wp{ottY(!|!)wpRaxlFVwO$Lk_V*b=d2TSxK~t{vNKb`uhzeL=AE; z)Pg~WWNMZ50e^r0UNfeOBLV+D$$s#qsBM*#lUooxT`=(D?)y;B+0@>ke?ENd{xv1> zLY0nzvFhx*WZ4o^icC-IJkwOD0&}iKZ$fZ@cA9Q&(bd8773W`VrY#aj#&xgehuBG7 zh?dKk{?)Ls;C41yLtEY1?{kA3f2-CpM+b*7S&}82FAIqj_lcmgFfh)I+`clBHoRfO zVpCFnFwfaSo6e!frn*Zsu6Mu76tv2YS7L?%9V6#w*GA@8vUGIypKtq`-j}B`M~B#6 zE2&h;dVDX{-RzrSE>q9Ir@ZI+k4CLuf0^6hAa$zcf?QHkODxMKOJFJ{J~7I(h6dyE zm7;)HC3P+oB98-!jez!zDH(el&@T_Zv`gycFTzWuKwp%&|4`=BO<9?s~kt>KZ+jLlq!rJ zPxbt5FmHfOXj*#Q}UxuA0}LI7>qfYudcT=qp~=D z2zu|ru~FPw)>Kp+H9c)7V=1-jzRgL(-S4w`%KWE&d@C!Fqw+NVCa(Rr@QWfJ(L82c z?zK$)4(%+!KAif9oE%R{YnALLtXw^XOtQ`ET59p?_AP6 znsDR9j>KIHT}OWf=ae7*{y{&&?0&2iWrb3K}x*vDl8aNi4tH zKpxI@%QdA^&AO>OM;E)P@8%boGB~!*&N!9G)7h_5{(XH&WY=MCH*R%Qk<+D>o>FsZ z#i7CN+~lbJrrbIX_GxH#1NjK0ZBZei6I@58TMzc6bzk%Q-23|G>uvSNz6qGink3P_ zxiL0I`Ef0EN>VcHCS~n28IdPedsscC<9|K9lOfk8_;T_0ZyH+Ky8-B(b$DgD-rjV_ zzu%8chxRpxRm<^?o#bo=KU?l!t#^KXxOJYpbN!p&zkg#=C`3QWmw>4neD{2@txjgj zACr>KzdOf~>igN^mB-NMkWUO8D`iiE;Rg&p zBIh^abw?rM=)WfPp7J-0PqdKYZbB#e=~!)U8}@KA*_*jjK~Kp;C!xeyHHdpZW81nG zeMGLu*&D!cc4y$5j^k((3T(m%670M@J2-8aNYUBG=J| zUHPIx4O<<3a9qL1!M=(725tPk)&KoIMmP^tdxge*{I6PoaFbGZ;g7i^tr^KJcLV&p zRd##vh5o5;aty^StSaBsmeJ8!q&_>+0#FI|PKUgglM#qI4ZR#o>_PdfmmT*tL(^OWr?=G726o=^LWbh6X=EJG4zsGhD3`&0~8&$G+tT@$0m1g~;*SJOY6y}Wm%DBVYN+ux(5 z4@tWt9&_5QRWrYSW$TH}$qwV4jh9V(rAPK}U`&59%$AeyUixR_;zl-+FTJ$_Om|Pj z#Vbi)(cO@DDWy48N2A(uRDtuW%QPExlHJ*FkLBu0*g86t8J*bXSM#6igMt>JqML|+ zchwI)E7xcb6QM|~x;R~&Ny~S2^xxs9qiF5InT`+Z%c(gzz^84TNQ4VY-nr=7S;qlnL8ZMv0^aQ%Gbsqm%>d@yle|vbN?RFOKpjGRjq0v!~{IdP_!RM=m{yqWRfwfxGqMx2L z-YvcL)$orGL9<7X7J7LFUkT)XSn%f~fAvw}U=|2^rhJsURWG)_nv-yzczD#ZMte5A zXy~VZ_VQ`(Z;A4faE~Gn4^bZ4o>~Q0&zYA2R`mP1PZ0)#_LzwY-wr?ft$&}l68TyT zq#pkEZ3`=_Ho`50gT2){0482Cjy*v^i=u-G*DbO|?{M!|al7|fKIgY|c8Is(%vsY}c#b&X7U%%8H!!$7YT;?WS@2h%@s|CH8&MUt>(?p|KKu@fRPa2Pm(-0aE znkDQcSbBcHi#s$L>C)dMIcaHPvRV?_)nz28yEaVV-+!B1r-*R*QhUxohAEHzH~VuI zw|wH_JZ$}b>bknGXkDwDwc6w>8BAcezLE5G{m=~nf#NdS)}hA5#60Uz6#QdlQ1! zPz#JUUa!$11>KJJ{c#5&(;0B^mv>o7NeS#J0Ht=Sc9s5q(rL3joP;jP^775e9$Nhh z&wlu5OdiANw{rETEbH#>{x7h3CC|XBZEc(8#-|Hh+kwaxenDVd1V6QqM7n{1J}TiN zb(!=PHh=9<-0v4^5jp1XHxB$JSa|@D7(-^C&Ns=@#PO>C`0@CW1KdHU(`gj;vJe7^teXLx}08~y0-4wZ2V1YtqonKPb4?~-7764 zEWLt4g^h6!cn;+I3DpQID>_=*p79Y<*tUQ7fBNT7jbH?QUd2sv%YXiGOI@_j4_vFk z{ny!KitpT+099K)KEATDGECjA6Q@%c{tL_sitxx-*y?s2lKt9$@1lgL=oJ6~AUr(w zwrz13823M~^XAQ)J6_wQ@g6^Zod2MGMd2)|V7Ij_mel9#^sirMg2C5C>uvBc|IfCh zCYs;d-o1~@JONU z!x02_Lx~DX{0nje*Q&flzs=IzxM7NB;)4edpwNrqN&EKiZ)sOrv#ZWL`#Of!!WeGA z;9dp>u!Eh@E`;rkG3LiPD3c@E&oFJ;=;8?6XWL+joFgdv+?}}`qNL(`ueSZa#X1GsL4RION0JLRb9XdyckT+lc!J1-KKy1 z{_Q$o4Xsi1d>CXJ9ZG7Y55q8Vx=bYf;v0yLKm@L*PMlXSsm8kIzYS9O;F3t?w z+S=BMZz-sOO~$C>M-LwKO-{QuQOhcUQaR+Fey^zqk!O z^QV4Cdr4hor3MeWFZj1?i7&B%{d{fR{`K8P-%$I3YBtKP9p%1scWynyg9M^kEOMNOwA{pH0vUYr6B_R=Iz@Z5)zXj$5%m6 zsOHPW(FohEU~-JRn_GMI)ZE+(@@|4^PqtAw#EphJ@F!Crx)5 zzbET7w2eZH0tfG-cY)SY*}x!Da({DwR5^k}WYn0MnK?pG(QStWTcR<)h6uf1R-!oP z!zWLMvW`KT26NH}CMIH`0)-n4C5|wYs|qJId;TbuB=+JUx0!kyQ#Wtfa^BorO+YK9 zg*HrRpw{%uOHXg_)gT^ekqCQmp%{B@kit$E#wjl^Z<&(yrsoe1^)k8zMb2i5Q6Tn@ z%jlfaN*A_q?RM+^wq0MkyN#*DkoY%?7#w#6^CBssNK@f5Ag0w6WfnSA8@Yc=2w;F+ zcTrxJ9EPW0^o(D?SWoE^MB{}@zxsqGlq^VFe|ZoaJCOyH--cz2l)6Nr!1FAFRZ-28 zi?hH;7)$G{fcnFzQ(48Pu3fiI={stgFo!{;bkRri=r+F$B(D(e->n22ha+jKmyZp{ zaGsM?uhnIjUA$}Oi}7QT;6SxVsgwYD$Lli<$8j;(LI8!c4+&P^#sKz!6ObfFR)S&l z+u&e6s-G~GHn8%^-t(N>kGIE_ETCuX%)22|^iw|GZTO<$qNbKsxEn=5UvZn?y48hx zZ*=fpxbWklx}5&ITnZ9U7_y|hX!xa^W?o)hUET8YWWD^V*w^z&^&1vBrM!G;cl78# zP(W49R)|ZGg4M!Q0Lm0z&$c}$G0T=rCRcZ;f}~u5Y_G~oxwv;F=uAb!21OF{_!v0E zSz9xJw3?pF*Oei7^z==zimVI_f|z5eyu72}+ZdfkuVbm*xI4*ioHU zE>nz-kFqP%*UQId=%(wPp`zu$)cyS$mkTiJs3_0SPSJ$TM3*l*RU;xJQ==i|iQ~ge zPY;#17hDFNX4J~c3hv-mG|$5JCdZEVmajq`SP3FF z-Fx@$1s2+52jJ6K>|)nn8=Uj8s?(&8?;2{0fkTBSA8yzpz}k9B|L!?dRwnB6XjoU@ zyBO8$cl78{#cUPuZzD+7jo z{ra`pc0_FG=g*(G@P|smr~E@JDk>UNw-)R`#Y(zie&%viIj+UXiyY|dVe3^q0KFM$ zZ@x7=6@Bmw)!f`%CHs2ZJ9yAAB-({kcL!FY&lSl5YZ=a<4{>qZ$gt^wS|T*IHQ@Eb z<{jZj;P#i%5u1-v&=LQe$PZ&0v(7M)5P`iRUv+duOV#|i-7GBl9gGFeU3FR0b(5Bn za~lPt&!I<(a{4DS&X?i7!d%Lf<0GUlX?l5;HEOlnX;BrA9fNtj?41US9dH6JS7n}! z^gbjq(jZNDH~H86JioMU7g`gs3-Q*u#Nl{IVD;Ji6rbFSEp^KdVKs2<7MG@@3B zDA2UT^~@zHPDUJjofp9d9+=#@(c{g=f;J&Tnp3fd+xzuPO?salqjTQVWg#g%o^(1! z^U>$52HZ&G-0u#od!HcA`5JoJ{#!8<6|qj{O!lTApn~(-+F`Y_rhq&#GI?PtbSfbq z-ppMsu*B8JRRFVe(DBE;^77Rk5cq(PKAWQXzTJ6E{&!?9qao0gs1h!2T%@h{6vF^O z;>uE{Ae)5t;A2Tm!sEovfn~;YIHZ$Mg53pEjZO*7XG+31O{l>bAuuHK@DyKPaPZ%X z^@s4zuO@Z*JC&j@ONhkwEbv`1(03Y8$MEbTDm@OPavfGM&op8~0bPWe0Nh64`zZhm z(PH`zRW&v1rWdvE138qwqtOc|^l78*fv7fwhOk7a_Vq4Z8v{WZU~F(hMFLo2R^D&fi)xg@DnSSBc}8|d-N%a`M4Lcz4a=N~L2!%aLD z?wslQLohVJ8)lv(Z5Tq_E{RknjQHZ{%g5%<6-WLVM|HEqH71efC+KGaDw2U@lg`xe{uoIY9IM8_t2Q_fmQ0x(U8*I7?va_OK;EbqK?nj>Ekln?r3S{7b`$UKHw+TVo(LS1#*%sY`FrD! zGY^>h9qIXFe+n#xr3%dEk;8`x|3VdjOv^W5K>Rn#(`cEvXa1q%|1y7OMKQf;xH)Lp z*P|Wg7g;8#8<={G=fUZI|Nb4{b-dm9C#qLq+fy5D;JK>3qVRCII`@Nv^UK4het7@< zhfWo~`U%WSGtOgovCGo$-+xfsy9mtN>%Hn}X_EkQldz{M(k?FZNR_{am7q+)e&pG7 zw)Ss3Wam{Nlr(XJp5*eh$jD1gO$}tcSvOF`bx+Um*#B~DDlgllZ9256x0(4(xY^dZ z{0NjN)99%(^_&fNE^fD;=qW7@!2CucjWZ6&s}47eC??wWo}3jqYx_q=_z80 zDE8|xCYqoPjEVLb;2Z*txE9GE`uSHVmJsnS$#wGxtb{vJ5U5M+NSZO0GkkYqQQ4=1A?N#o=3 z2CrBjBP&S3oD_lt#WBFqCxoWa8!p2uI5RyRg-i{2o^sTUA?t^Oih(%Twn4;E;O>NH zr+hnKOx#2GX6xN*o-MS_bIyAfY|#gJ5In>z#+2bvRA06cA$*nK(=kk2%n@L+57uhE zjjB{|zduf;eOf&XDF&PpOf{gsYin~sV-D{5y#S}7&t}+Z002}bwt(FEbiomP3v5o} zm?}*H_ltXLg=ArsdlF7=iElWFUT)NBNDB%Iq9zW@PHBX5eIvQuzC17>;Dn0GWgG+~ z4sGPv1$XX*Nj9Y3-zqy-v5xs*ib5Qf5a5IkH94f9pa2&vc^szR29k@Ct`pvW%FhV1>KMuPuWV4d_y@Jh)|&4@|DF=h=BpoViz8X zo;^)9K{*&&^<;7{_VpawMx$}f&)@02`T|W^Crdtkz?$xnVccY_uOHJ&`m1l5V;Me*F z1}vqx-89%Wz}gnjNN%q_49UjaGw*O0fc27EE~DlC#h7@qM&mhzKS@c0$P_n&5!RGo zx4(gG09woRsE{@QP=Yv*rv7dZp`Dx7qi?{*n& zNt;Jw;w}M!yOsET7_?QGs(?ywboUMoU9{q$?=l3@&a3iPXlamq`7YAqv)=8smC(|3H zXw>M#r=c78j3JJvRc+)fIwfVYMgBfLDr^Ykk4^NGqHlAA>>WJT1q%xTr6SrK%iq8X z?~Q7g128L0JO==3ZV%F~AO_(iKD~*1ct=xeRMaU4eho52U{5U#<~sG0BMa zZ<_7@$=|=*D19Unv&u>8QSJY0&!RyKq5a&@9U&nhAW%FoLK4W_>OfSC@rAtzM+eZ* zK;Xf1=lU>tP*X1->Mf_-T7VhE7H^||0(1|eIJD7MfBIC?IlGoLVLVYM4w}8V{@k9O zf`YP#35j|D1quC}1l(2CM`FZDRxNxji?P{@^OK+nHx1Ox%*=p-i9PHFE)K{9#RILt zD1<14UOk}xu3fwCRKm}I;BslZLQCq(#Wwlmj1hV-^z<6#&7-q$dBjoE)NI6^;B)&P zf>Uq+RNo!8o=gz&qL+RqJ~nY5&uatEvT;-&pc(j&32`%q`yovTo0kT_Hu)MIx%l#c zN+PyG$zHf#KdR9~{>?=oZIgqV14r0SiUVqbVR+i3YwPOxP(2GGSeybU0i0is()1V& z%WP|e<~V_r(CBERXNtF?=7^fR>(@&H#7s)Q$W2D5y+HmAvE#5)5gG>CfFWsA@NUJf zw^>Mi4)~DAV)|3~yucHfQw@9;W87ea&_rWX`f<6ypQx=Cx$4rGaB^;1b+G=a_t=-c zWH-FuiJPRp8=S~Lh8oOlDACGJ(_;Lq~B}WX4RV2hE7+%Q42#8=U>dC1sd?gr%TWO2CdOC@4^=@31|Z@ybk5wvQ!D zPoF%w0Zl0k3@Aj>L%smW6v(Ine?_f?kw`8P>q$P6gCK4-R`wC4+?1kI5t2&7uknbZ zbA-17R+?LFz;+G8);HS%P;Mc^6W#phocAZvfP7Y;<(8Q4SA7nu#4GGl~^@cWr_ z3)qG+Rd>wyvUPXF2;y|1_?F9H!`1Va@e^I!oU7lI{W)yAi(2GP=VP6UL|X8P=JL0o z&5pztUbUuZ5Uhog1y&8B1!#rPb|-opr9HRf65SV$Cz0A(z#$Br1H``!8l1q7P<=~i zxQHAK(b36_pfuuiAp(2Q+~^1uK0?RDy_14P10pZ2jX|wD+9Y>VKtnnfgazgyH|#V@ zl*6^x)TDvi!~Z8J-#3PMr)FMGUf!-0EkWn(&*%Vy_BJdlZVPn>3=3O*M23)!paw{O4#Vb-e)ff11W{dXbi+wZVqJtovKzVQ2Z zzzJY~0H5YLpveahSjd;qUNFl^loo^&5dnv%6%VN8Gva?hFTxBWK`l-J(+X#lHA#%r zM7&3KLwu9reH${*8nMRLi8H!!WAimjg*@zYRaMpH^Cl)eThtG4r^v+A6&YCiX>gq$ zLplvbpqHe$?MCxpN7#wPVWudBqIl?ps;U;x>hEvNWH$^#wT|UP{}=~kE|tC`c)uJk zc>>N+83UKP-9Y|O8lNi#0$Xz!zg-0b$`zy>b2=Y(6{)b)apb><$Nrn)*DJg3cGaXO z2r*`6NzciL0-#F_xmXc*8(^WwWz{1jcS%c2OG-|Gl*x_Vzlf+7H%^^8H_@GTKaiX8 zHmI3^N{BSrjq1nC#MmN}M8OEB=CO<-hkW&V8@11-1UL9iF zvSk{8IG_^gUfXXvY;Wr8)%DK^?AoQo74LzS4x7DX&C1Gp9YT(jDde#_Cbi_DKmPNl zJ^9RFj=QTXFLZ;jZrJ7A;dFrd5B!mraf)50?!pq>2N19~Mt%^L;FQgroXH1(?DKK` ztIx%~G0!GSCSXv(+~yP>1Cbkfz(#}u^QFxLc@o2iRo_v-#KU9gvU`@;zD(MVvmqQ#T%7d zh|Q%gey*sgQ7t`*BLf=yV-U|-y}f|Na|{pGl2qDj&;CP8ic2S|s~t43qodby+y9_1 z!x~k+2-P=i*Z?2gdMw}o?#w(~1PBwr+FfMm2Aridrk#}-*j_;a@r>C+WMONYCop8y z-3)#dNsl?}UBwU?J#i;z4t_U<*9o;E0fvbQ33}cU5fQ}R!g^pnWjq|KjQ2`Ok>&Ga zo03xTP+UMneMQL0g|D-;;d~F{4NmED>0P2W3*lcotN?}}h#E2&@Zjwr(Z{hjKjl}9A$vNb-l`ya3+W`}ukmgei8U6}3$xCg-*|^}Ldx(@?8V(vEU9Wrq$wld4X|*o+cN_%8 z?wsHF%&Qo6nxf2m*=_Ix#1;VGFq@u8Iw5Dt&&HN`*e)V0Oj{2(po@XPj~vcOF(5m6 z_XLho^DQa(sLaDcoE#iUFR0{wHN3}oBp>X>PzKE#EGzz;%`|dDtae~s@U7){B+@)Rd-xhs!E>1B!-#AM z%WUE?zCUjn+5r^JXNv2Wq@Fx@aIQT0-dBu&ZMrB0FN1j!{~*!$z4b?+$ltW(Q_s1G zoRXkCK!Oh+Kh^~8Gf+K>nwKfHZ;1NG>oFTzH$`(7>U_Hyk1agQyVUf-i+cndp=M4V zARi-fA`H|7nqZisq%P%H)$@^wZW_oMC&cO;&@MnZ^K6|TB{U{x8JJ4=<6IRWhtY-y zcBQkA0-7@n=aD`vd+$!Dtp`?uxPiq^7TXhlLS3EzkV8Vd^(G_^=EEfRS2O6By65F6 z+^;szhHmK`HXWM*(nym#oWBFHowaS~g9ks+RxR{#PF{*sQR)K+>XVZW=h&(x%|!ba zQ6r9HxC9ZqfS@*XZ`^XnMHcD@dduv|!0@R7+^aU4M%39J4nL8^R&{T3{_5nc-c>{IuV6cl@*L}Uuz5fm6` zn03zgy?Mi5PYfW69V-hT6j?(`tX@k}h=|{$#zq9hI1N%!wR3GNgYv7{ll<)L>>M0c zrR{x_<*T-yE#T;gayMx3Au-pjn}-{ZVD{Cr^z6(`G>R%tg%F9PIuvbjd=o^|NrsUe zbnc&fyhum@#`|)1puhhYm?gt`F(DyWIKy!d6a)T2bcd(WHND^HjjF`zcJpRtQbF;* zP!unO64sx+7-V-A5RI^Wc0EQ_c5_h8^v<*E^#bff?Xs$>Dg!g~B#I4CdY;bMwA-Y_ z6>to#T!>Fv&+23vEfC}wlrq3-?4VF=)1a`?i=~?#?W&73x8~6 zh~gHw0Ls^&>wChAi;ErH&?Rzrf{UA*&rm3AHG^3?eEXMp~FejG*qVK0Sfo*@4g-6>YLtzrG_f z_7sDRIWYDDOt_#DMD3Ht_0HEefq{Wd!%o3R=Jb$b0!=~coBLbKh7zXiWJV&&ED-uz hg!cd6-^r`YFB7u17&I)ROp!!7sdSo}sd(t@9 diff --git a/previews/PR481/assets/dzarsbx.C-WFBMfk.png b/previews/PR481/assets/dzarsbx.C-WFBMfk.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb3fc16bed60b60654a8d4020cc783076e1ff20 GIT binary patch literal 81291 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 literal 0 HcmV?d00001 diff --git a/previews/PR481/assets/frwqpez.D9rvatPm.png b/previews/PR481/assets/frwqpez.D9rvatPm.png new file mode 100644 index 0000000000000000000000000000000000000000..8eccd1328ee6b8e90d13557ef31954b1c3c3e833 GIT binary patch literal 112073 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 a6U15Fpkf>)c#m{Tj;m-B?├──────────────────────────────────────────────────────────── loaded in memory ┤ data size: 46.88 KB └──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const g=a(p,[["render",l]]);export{E as __pageData,g as default}; + 0.320052 0.500909 0.827727 0.415137 … 0.825496 0.487315 0.0962708 + 0.209357 0.0833026 0.207967 0.224959 0.309666 0.211397 0.552582 + 0.507229 0.757781 0.514759 0.973442 0.111379 0.787476 0.0247931 + 0.879677 0.374138 0.97643 0.748725 0.665274 0.776172 0.666534 + 0.79472 0.958973 0.0114824 0.274902 0.499743 0.645512 0.622774 + 0.320869 0.952795 0.547668 0.982108 … 0.80871 0.253383 0.743343 + 0.496429 0.0436 0.790617 0.233118 0.137114 0.55245 0.716721 + 0.683599 0.598769 0.0571978 0.155874 0.623962 0.959705 0.957463 + 0.179919 0.551487 0.783779 0.828388 0.303359 0.542756 0.903079 + 0.487093 0.78064 0.191898 0.908084 0.60764 0.833498 0.198806

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const g=a(p,[["render",l]]);export{E as __pageData,g as default}; diff --git a/previews/PR481/assets/get_started.md.BLwRYmKy.lean.js b/previews/PR481/assets/get_started.md.C4hyZ71i.lean.js similarity index 86% rename from previews/PR481/assets/get_started.md.BLwRYmKy.lean.js rename to previews/PR481/assets/get_started.md.C4hyZ71i.lean.js index 3cbf71be..fefb87d9 100644 --- a/previews/PR481/assets/get_started.md.BLwRYmKy.lean.js +++ b/previews/PR481/assets/get_started.md.C4hyZ71i.lean.js @@ -41,13 +41,13 @@ import{_ as a,c as i,a2 as n,o as t}from"./chunks/framework.CmUrV9pg.js";const E ├──────────────────────────────────────────────────────────── loaded in memory ┤ data size: 46.88 KB └──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

julia
a2[Variables=At("temperature"), time=1].data
10×15 view(::Array{Float64, 4}, 1, :, :, 1) with eltype Float64:
- 0.839919  0.166982  0.148753   0.553602  …  0.678562  0.939296   0.046745
- 0.32876   0.400731  0.738327   0.531649     0.391546  0.961913   0.709999
- 0.18507   0.409244  0.0893687  0.671473     0.395451  0.935884   0.816865
- 0.990276  0.778954  0.0118366  0.580668     0.783581  0.0766027  0.191654
- 0.271921  0.733172  0.9538     0.58548      0.582329  0.922125   0.360748
- 0.536094  0.630988  0.8256     0.284649  …  0.855984  0.230869   0.971131
- 0.749822  0.427021  0.182827   0.735264     0.253963  0.45354    0.00372526
- 0.647058  0.657324  0.475594   0.63291      0.405317  0.263789   0.641411
- 0.223412  0.771583  0.119937   0.771179     0.45015   0.991786   0.663392
- 0.607943  0.13068   0.711506   0.629872     0.457345  0.319698   0.0900259

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const g=a(p,[["render",l]]);export{E as __pageData,g as default}; + 0.320052 0.500909 0.827727 0.415137 … 0.825496 0.487315 0.0962708 + 0.209357 0.0833026 0.207967 0.224959 0.309666 0.211397 0.552582 + 0.507229 0.757781 0.514759 0.973442 0.111379 0.787476 0.0247931 + 0.879677 0.374138 0.97643 0.748725 0.665274 0.776172 0.666534 + 0.79472 0.958973 0.0114824 0.274902 0.499743 0.645512 0.622774 + 0.320869 0.952795 0.547668 0.982108 … 0.80871 0.253383 0.743343 + 0.496429 0.0436 0.790617 0.233118 0.137114 0.55245 0.716721 + 0.683599 0.598769 0.0571978 0.155874 0.623962 0.959705 0.957463 + 0.179919 0.551487 0.783779 0.828388 0.303359 0.542756 0.903079 + 0.487093 0.78064 0.191898 0.908084 0.60764 0.833498 0.198806

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

`,21)]))}const g=a(p,[["render",l]]);export{E as __pageData,g as default}; diff --git a/previews/PR481/assets/index.md.DzORC5-U.js b/previews/PR481/assets/index.md.CY7kWBGJ.js similarity index 94% rename from previews/PR481/assets/index.md.DzORC5-U.js rename to previews/PR481/assets/index.md.CY7kWBGJ.js index 0ef6f61a..8915b9c5 100644 --- a/previews/PR481/assets/index.md.DzORC5-U.js +++ b/previews/PR481/assets/index.md.CY7kWBGJ.js @@ -2,7 +2,7 @@ import{_ as s,c as a,a2 as t,o as e}from"./chunks/framework.CmUrV9pg.js";const g julia> Pkg.add("YAXArrays.jl") # or julia> ] # ']' should be pressed -pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
+pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
 Pkg.add("ArchGDAL")
julia
using Pkg
 Pkg.add("NetCDF")
julia
using Pkg
 Pkg.add("Zarr")
julia
using Pkg
diff --git a/previews/PR481/assets/index.md.DzORC5-U.lean.js b/previews/PR481/assets/index.md.CY7kWBGJ.lean.js
similarity index 94%
rename from previews/PR481/assets/index.md.DzORC5-U.lean.js
rename to previews/PR481/assets/index.md.CY7kWBGJ.lean.js
index 0ef6f61a..8915b9c5 100644
--- a/previews/PR481/assets/index.md.DzORC5-U.lean.js
+++ b/previews/PR481/assets/index.md.CY7kWBGJ.lean.js
@@ -2,7 +2,7 @@ import{_ as s,c as a,a2 as t,o as e}from"./chunks/framework.CmUrV9pg.js";const g
 julia> Pkg.add("YAXArrays.jl")
 # or
 julia> ] # ']' should be pressed
-pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
+pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
 Pkg.add("ArchGDAL")
julia
using Pkg
 Pkg.add("NetCDF")
julia
using Pkg
 Pkg.add("Zarr")
julia
using Pkg
diff --git a/previews/PR481/assets/msrdcxv.96k_BqPR.jpeg b/previews/PR481/assets/mbalbzx.96k_BqPR.jpeg
similarity index 100%
rename from previews/PR481/assets/msrdcxv.96k_BqPR.jpeg
rename to previews/PR481/assets/mbalbzx.96k_BqPR.jpeg
diff --git a/previews/PR481/assets/nrllxra.Dugsq64i.png b/previews/PR481/assets/nrllxra.Dugsq64i.png
deleted file mode 100644
index 7c051fa8d09d8076cf9a94f0ea84e20437d6821a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 81850
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 Seasonal Cycle for a single pixel
julia
using CairoMakie
+import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.CmUrV9pg.js";const l="/YAXArrays.jl/previews/PR481/assets/dzarsbx.C-WFBMfk.png",k="/YAXArrays.jl/previews/PR481/assets/frwqpez.D9rvatPm.png",c=JSON.parse('{"title":"Mean Seasonal Cycle for a single pixel","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/mean_seasonal_cycle.md","filePath":"tutorials/mean_seasonal_cycle.md","lastUpdated":null}'),p={name:"tutorials/mean_seasonal_cycle.md"};function t(e,s,E,d,r,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Mean Seasonal Cycle for a single pixel

julia
using CairoMakie
 CairoMakie.activate!()
 using Dates
 using Statistics

We define the data span. For simplicity, three non-leap years were selected.

julia
t =  Date("2021-01-01"):Day(1):Date("2023-12-31")
@@ -38,26 +38,26 @@ import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.CmUrV9pg.js";const l
 end
 
 msc = mean_seasonal_cycle(c);
365×1 Matrix{Float64}:
-  0.006364171431821925
-  0.10986528577255357
- -0.030090414984429516
-  0.11037641658890784
- -0.0012862484521267356
-  0.1373199053065047
-  0.07565180270644235
-  0.1850454989838767
-  0.10850864324777372
-  0.12673714160438732
+  0.03528277758302477
+  0.02345835017256051
+  0.039451611552802975
+  0.09689360224777122
+  0.022312156353890087
+  0.11391077060238619
+  0.08058305464254185
+  0.06159722707791853
+  0.08158557886952912
+  0.14715175267308206
 
- -0.1578236499134987
- -0.1851357399351781
- -0.08536931940151503
- -0.13102300858571433
- -0.0617443331324013
-  0.09779224328472132
- -0.0586963181904983
- -0.019199882044045064
- -0.05203842202056678

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
+ -0.10291543325743235
+ -0.22990067443344916
+ -0.12370988510072528
+ -0.0750790675265741
+ -0.05611581504766607
+ -0.06417594925348342
+ -0.062270000476910094
+ -0.029247418895843032
+ -0.05742042630154354

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
     linewidth=2.0, linestyle=:dot,
     axis = (;  xlabel="Day of Year", ylabel="Variable"),
     figure=(; size = (600,400))
diff --git a/previews/PR481/assets/tutorials_mean_seasonal_cycle.md.BS_HoVlU.lean.js b/previews/PR481/assets/tutorials_mean_seasonal_cycle.md.BuEmiFk0.lean.js
similarity index 95%
rename from previews/PR481/assets/tutorials_mean_seasonal_cycle.md.BS_HoVlU.lean.js
rename to previews/PR481/assets/tutorials_mean_seasonal_cycle.md.BuEmiFk0.lean.js
index f72861d9..92ddada6 100644
--- a/previews/PR481/assets/tutorials_mean_seasonal_cycle.md.BS_HoVlU.lean.js
+++ b/previews/PR481/assets/tutorials_mean_seasonal_cycle.md.BuEmiFk0.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.CmUrV9pg.js";const l="/YAXArrays.jl/previews/PR481/assets/nrllxra.Dugsq64i.png",k="/YAXArrays.jl/previews/PR481/assets/deycsiw.m9Tg4llE.png",c=JSON.parse('{"title":"Mean Seasonal Cycle for a single pixel","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/mean_seasonal_cycle.md","filePath":"tutorials/mean_seasonal_cycle.md","lastUpdated":null}'),p={name:"tutorials/mean_seasonal_cycle.md"};function t(e,s,E,d,r,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Mean Seasonal Cycle for a single pixel

julia
using CairoMakie
+import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.CmUrV9pg.js";const l="/YAXArrays.jl/previews/PR481/assets/dzarsbx.C-WFBMfk.png",k="/YAXArrays.jl/previews/PR481/assets/frwqpez.D9rvatPm.png",c=JSON.parse('{"title":"Mean Seasonal Cycle for a single pixel","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/mean_seasonal_cycle.md","filePath":"tutorials/mean_seasonal_cycle.md","lastUpdated":null}'),p={name:"tutorials/mean_seasonal_cycle.md"};function t(e,s,E,d,r,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Mean Seasonal Cycle for a single pixel

julia
using CairoMakie
 CairoMakie.activate!()
 using Dates
 using Statistics

We define the data span. For simplicity, three non-leap years were selected.

julia
t =  Date("2021-01-01"):Day(1):Date("2023-12-31")
@@ -38,26 +38,26 @@ import{_ as i,c as a,a2 as n,o as h}from"./chunks/framework.CmUrV9pg.js";const l
 end
 
 msc = mean_seasonal_cycle(c);
365×1 Matrix{Float64}:
-  0.006364171431821925
-  0.10986528577255357
- -0.030090414984429516
-  0.11037641658890784
- -0.0012862484521267356
-  0.1373199053065047
-  0.07565180270644235
-  0.1850454989838767
-  0.10850864324777372
-  0.12673714160438732
+  0.03528277758302477
+  0.02345835017256051
+  0.039451611552802975
+  0.09689360224777122
+  0.022312156353890087
+  0.11391077060238619
+  0.08058305464254185
+  0.06159722707791853
+  0.08158557886952912
+  0.14715175267308206
 
- -0.1578236499134987
- -0.1851357399351781
- -0.08536931940151503
- -0.13102300858571433
- -0.0617443331324013
-  0.09779224328472132
- -0.0586963181904983
- -0.019199882044045064
- -0.05203842202056678

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
+ -0.10291543325743235
+ -0.22990067443344916
+ -0.12370988510072528
+ -0.0750790675265741
+ -0.05611581504766607
+ -0.06417594925348342
+ -0.062270000476910094
+ -0.029247418895843032
+ -0.05742042630154354

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
     linewidth=2.0, linestyle=:dot,
     axis = (;  xlabel="Day of Year", ylabel="Variable"),
     figure=(; size = (600,400))
diff --git a/previews/PR481/assets/tutorials_plottingmaps.md.BW7Rdia9.js b/previews/PR481/assets/tutorials_plottingmaps.md.BT-klemp.js
similarity index 99%
rename from previews/PR481/assets/tutorials_plottingmaps.md.BW7Rdia9.js
rename to previews/PR481/assets/tutorials_plottingmaps.md.BT-klemp.js
index 08b71661..0a481f82 100644
--- a/previews/PR481/assets/tutorials_plottingmaps.md.BW7Rdia9.js
+++ b/previews/PR481/assets/tutorials_plottingmaps.md.BT-klemp.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/poommqw.CQ9uchq9.jpeg",k="/YAXArrays.jl/previews/PR481/assets/ltjmjei.B7KFIfDV.jpeg",l="/YAXArrays.jl/previews/PR481/assets/msrdcxv.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
+import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/taklqov.CQ9uchq9.jpeg",k="/YAXArrays.jl/previews/PR481/assets/cyhvrkj.B7KFIfDV.jpeg",l="/YAXArrays.jl/previews/PR481/assets/mbalbzx.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
 using DimensionalData
 using GLMakie, GeoMakie
 using GLMakie.GeometryBasics
diff --git a/previews/PR481/assets/tutorials_plottingmaps.md.BW7Rdia9.lean.js b/previews/PR481/assets/tutorials_plottingmaps.md.BT-klemp.lean.js
similarity index 99%
rename from previews/PR481/assets/tutorials_plottingmaps.md.BW7Rdia9.lean.js
rename to previews/PR481/assets/tutorials_plottingmaps.md.BT-klemp.lean.js
index 08b71661..0a481f82 100644
--- a/previews/PR481/assets/tutorials_plottingmaps.md.BW7Rdia9.lean.js
+++ b/previews/PR481/assets/tutorials_plottingmaps.md.BT-klemp.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/poommqw.CQ9uchq9.jpeg",k="/YAXArrays.jl/previews/PR481/assets/ltjmjei.B7KFIfDV.jpeg",l="/YAXArrays.jl/previews/PR481/assets/msrdcxv.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
+import{_ as i,c as a,a2 as h,o as n}from"./chunks/framework.CmUrV9pg.js";const t="/YAXArrays.jl/previews/PR481/assets/taklqov.CQ9uchq9.jpeg",k="/YAXArrays.jl/previews/PR481/assets/cyhvrkj.B7KFIfDV.jpeg",l="/YAXArrays.jl/previews/PR481/assets/mbalbzx.96k_BqPR.jpeg",F=JSON.parse('{"title":"Plotting maps","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/plottingmaps.md","filePath":"tutorials/plottingmaps.md","lastUpdated":null}'),p={name:"tutorials/plottingmaps.md"};function e(E,s,r,d,g,y){return n(),a("div",null,s[0]||(s[0]=[h(`

Plotting maps

As test data we use the CMIP6 Scenarios.

julia
using Zarr, YAXArrays, Dates
 using DimensionalData
 using GLMakie, GeoMakie
 using GLMakie.GeometryBasics
diff --git a/previews/PR481/assets/utzwahn.DldUI1n7.jpeg b/previews/PR481/assets/zvezrog.DldUI1n7.jpeg
similarity index 100%
rename from previews/PR481/assets/utzwahn.DldUI1n7.jpeg
rename to previews/PR481/assets/zvezrog.DldUI1n7.jpeg
diff --git a/previews/PR481/development/contribute.html b/previews/PR481/development/contribute.html
index b0273a52..edfa306c 100644
--- a/previews/PR481/development/contribute.html
+++ b/previews/PR481/development/contribute.html
@@ -9,9 +9,9 @@
     
     
     
-    
+    
     
-    
+    
     
     
     
@@ -24,7 +24,7 @@
     
Skip to content

Contribute to YAXArrays.jl

Pull requests and bug reports are always welcome at the YAXArrays.jl GitHub repository.

Contribute to Documentation

Contributing with examples can be done by first creating a new file example here

new file

  • your_new_file.md at docs/src/UserGuide/

Once this is done you need to add a new entry here at the appropriate level.

add entry to docs

Your new entry should look like:

  • { text: 'Your title example', link: '/UserGuide/your_new_file.md' }

Build docs locally

If you want to take a look at the docs locally before doing a PR follow the next steps:

Install the dependencies in your system, locate yourself at the docs level folder, then do

sh
npm i

Then simply go to your docs env and activate it, i.e.

sh
docs> julia
 julia> ]
 pkg> activate .

Next, run the scripts. Generate files and build docs by running:

sh
include("make.jl")

Now go to your terminal in the same path docs> and run:

sh
npm run docs:dev

This should ouput http://localhost:5173/YAXArrays.jl/, copy/paste this into your browser and you are all set.

- + \ No newline at end of file diff --git a/previews/PR481/development/contributors.html b/previews/PR481/development/contributors.html index 3c6143b1..00d46614 100644 --- a/previews/PR481/development/contributors.html +++ b/previews/PR481/development/contributors.html @@ -9,11 +9,11 @@ - + - + - + @@ -22,7 +22,7 @@
Skip to content

Contributors

Current core contributors

They have taking the lead for the ongoing organizational maintenance and technical direction of , and .

Fabian Gans

Fabian Gans

Geoscientific Programmer

Felix Cremer

Felix Cremer

PhD Candidate in Remote Sensing

Rafael Schouten

Rafael Schouten

Spatial/ecological modelling

Lazaro Alonso

Lazaro Alonso

Scientist. Data Visualization

Our valuable contributors

We appreciate all contributions from the Julia community so that this ecosystem can thrive.

- + \ No newline at end of file diff --git a/previews/PR481/get_started.html b/previews/PR481/get_started.html index 214bd7da..80897d68 100644 --- a/previews/PR481/get_started.html +++ b/previews/PR481/get_started.html @@ -9,11 +9,11 @@ - + - + - + @@ -64,17 +64,17 @@ ├──────────────────────────────────────────────────────────── loaded in memory ┤ data size: 46.88 KB └──────────────────────────────────────────────────────────────────────────────┘

Get the temperature map at the first point in time:

julia
a2[Variables=At("temperature"), time=1].data
10×15 view(::Array{Float64, 4}, 1, :, :, 1) with eltype Float64:
- 0.839919  0.166982  0.148753   0.553602  …  0.678562  0.939296   0.046745
- 0.32876   0.400731  0.738327   0.531649     0.391546  0.961913   0.709999
- 0.18507   0.409244  0.0893687  0.671473     0.395451  0.935884   0.816865
- 0.990276  0.778954  0.0118366  0.580668     0.783581  0.0766027  0.191654
- 0.271921  0.733172  0.9538     0.58548      0.582329  0.922125   0.360748
- 0.536094  0.630988  0.8256     0.284649  …  0.855984  0.230869   0.971131
- 0.749822  0.427021  0.182827   0.735264     0.253963  0.45354    0.00372526
- 0.647058  0.657324  0.475594   0.63291      0.405317  0.263789   0.641411
- 0.223412  0.771583  0.119937   0.771179     0.45015   0.991786   0.663392
- 0.607943  0.13068   0.711506   0.629872     0.457345  0.319698   0.0900259

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

- + 0.320052 0.500909 0.827727 0.415137 … 0.825496 0.487315 0.0962708 + 0.209357 0.0833026 0.207967 0.224959 0.309666 0.211397 0.552582 + 0.507229 0.757781 0.514759 0.973442 0.111379 0.787476 0.0247931 + 0.879677 0.374138 0.97643 0.748725 0.665274 0.776172 0.666534 + 0.79472 0.958973 0.0114824 0.274902 0.499743 0.645512 0.622774 + 0.320869 0.952795 0.547668 0.982108 … 0.80871 0.253383 0.743343 + 0.496429 0.0436 0.790617 0.233118 0.137114 0.55245 0.716721 + 0.683599 0.598769 0.0571978 0.155874 0.623962 0.959705 0.957463 + 0.179919 0.551487 0.783779 0.828388 0.303359 0.542756 0.903079 + 0.487093 0.78064 0.191898 0.908084 0.60764 0.833498 0.198806

Updates

TIP

The Julia Compiler is always improving. As such, we recommend using the latest stable version of Julia.

You may check the installed version with:

julia
pkg> st YAXArrays

INFO

With YAXArrays.jl 0.5 we switched the underlying data type to be a subtype of the DimensionalData.jl types. Therefore the indexing with named dimensions changed to the DimensionalData syntax. See the DimensionalData.jl docs.

+ \ No newline at end of file diff --git a/previews/PR481/hashmap.json b/previews/PR481/hashmap.json index b7459fa4..e2900403 100644 --- a/previews/PR481/hashmap.json +++ b/previews/PR481/hashmap.json @@ -1 +1 @@ -{"api.md":"lNaPRPE1","development_contribute.md":"9tddrdod","development_contributors.md":"BPZV1DF3","get_started.md":"BLwRYmKy","index.md":"DzORC5-U","tutorials_mean_seasonal_cycle.md":"BS_HoVlU","tutorials_other_tutorials.md":"B-0MIJ7D","tutorials_plottingmaps.md":"BW7Rdia9","userguide_cache.md":"4Mhv8IRa","userguide_chunk.md":"DY0iU4Jq","userguide_combine.md":"B3yxwVX2","userguide_compute.md":"8aFlrRke","userguide_convert.md":"JZwhW5d8","userguide_create.md":"B32NKgpT","userguide_faq.md":"Do-eNQY1","userguide_group.md":"CxogNYm5","userguide_read.md":"BTfWZ5v4","userguide_select.md":"Bguw82FJ","userguide_types.md":"Cw4pg-Uo","userguide_write.md":"CoRkmBBx"} +{"api.md":"powSNzVx","development_contribute.md":"9tddrdod","development_contributors.md":"B-Ls9c13","get_started.md":"C4hyZ71i","index.md":"CY7kWBGJ","tutorials_mean_seasonal_cycle.md":"BuEmiFk0","tutorials_other_tutorials.md":"B-0MIJ7D","tutorials_plottingmaps.md":"BT-klemp","userguide_cache.md":"4Mhv8IRa","userguide_chunk.md":"DY0iU4Jq","userguide_combine.md":"B3yxwVX2","userguide_compute.md":"CWZTpUy8","userguide_convert.md":"JZwhW5d8","userguide_create.md":"B32NKgpT","userguide_faq.md":"BuLJTuK9","userguide_group.md":"BcDRPBeu","userguide_read.md":"BXOmI-6j","userguide_select.md":"Bguw82FJ","userguide_types.md":"Cw4pg-Uo","userguide_write.md":"mv5yJBqP"} diff --git a/previews/PR481/index.html b/previews/PR481/index.html index e301cc9d..7b621e8a 100644 --- a/previews/PR481/index.html +++ b/previews/PR481/index.html @@ -9,11 +9,11 @@ - + - + - + @@ -25,12 +25,12 @@ julia> Pkg.add("YAXArrays.jl") # or julia> ] # ']' should be pressed -pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
+pkg> add YAXArrays

If you want to use the latest unreleased version, you can run the following command:

julia
pkg> add YAXArrays#master

Want interoperability?

Install the following package(s) for:

julia
using Pkg
 Pkg.add("ArchGDAL")
julia
using Pkg
 Pkg.add("NetCDF")
julia
using Pkg
 Pkg.add("Zarr")
julia
using Pkg
 Pkg.add(["GLMakie", "GeoMakie", "AlgebraOfGraphics", "DimensionalData"])
- + \ No newline at end of file diff --git a/previews/PR481/tutorials/mean_seasonal_cycle.html b/previews/PR481/tutorials/mean_seasonal_cycle.html index aeb4327b..c629a245 100644 --- a/previews/PR481/tutorials/mean_seasonal_cycle.html +++ b/previews/PR481/tutorials/mean_seasonal_cycle.html @@ -9,11 +9,11 @@ - + - + - + @@ -32,7 +32,7 @@ ) ax.xticklabelrotation = π / 4 ax.xticklabelalign = (:right, :center) -fig

Define the cube

julia
julia> using YAXArrays, DimensionalData
+fig

Define the cube

julia
julia> using YAXArrays, DimensionalData
 
 julia> using YAXArrays: YAXArrays as YAX
 
@@ -61,26 +61,26 @@
 end
 
 msc = mean_seasonal_cycle(c);
365×1 Matrix{Float64}:
-  0.006364171431821925
-  0.10986528577255357
- -0.030090414984429516
-  0.11037641658890784
- -0.0012862484521267356
-  0.1373199053065047
-  0.07565180270644235
-  0.1850454989838767
-  0.10850864324777372
-  0.12673714160438732
+  0.03528277758302477
+  0.02345835017256051
+  0.039451611552802975
+  0.09689360224777122
+  0.022312156353890087
+  0.11391077060238619
+  0.08058305464254185
+  0.06159722707791853
+  0.08158557886952912
+  0.14715175267308206
 
- -0.1578236499134987
- -0.1851357399351781
- -0.08536931940151503
- -0.13102300858571433
- -0.0617443331324013
-  0.09779224328472132
- -0.0586963181904983
- -0.019199882044045064
- -0.05203842202056678

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
+ -0.10291543325743235
+ -0.22990067443344916
+ -0.12370988510072528
+ -0.0750790675265741
+ -0.05611581504766607
+ -0.06417594925348342
+ -0.062270000476910094
+ -0.029247418895843032
+ -0.05742042630154354

TODO: Apply the new groupby funtion from DD

Plot results: mean seasonal cycle

julia
fig, ax, obj = lines(1:365, var[1:365]; label="2021", color=:black,
     linewidth=2.0, linestyle=:dot,
     axis = (;  xlabel="Day of Year", ylabel="Variable"),
     figure=(; size = (600,400))
@@ -93,8 +93,8 @@
 ax.xticklabelrotation = π / 4
 ax.xticklabelalign = (:right, :center)
 fig
-current_figure()

- +current_figure()

+ \ No newline at end of file diff --git a/previews/PR481/tutorials/other_tutorials.html b/previews/PR481/tutorials/other_tutorials.html index 0e55317b..6164ee76 100644 --- a/previews/PR481/tutorials/other_tutorials.html +++ b/previews/PR481/tutorials/other_tutorials.html @@ -9,9 +9,9 @@ - + - + @@ -22,7 +22,7 @@
Skip to content

Other tutorials

If you are interested in learning how to work with YAXArrays for different use cases you can follow along one of the following tutorials.

  • Currently the overview tutorial is located at ESDLTutorials Repository

  • You can find further tutorial videos at the EO College. Beware that the syntax in the video tutorials might be slightly changed.

  • the other tutorials are still work in progress.

General overview of the functionality of YAXArrays

This tutorial provides a broad overview about the features of YAXArrays.

Table-style iteration over YAXArrays

Work in progress

Sometimes you want to combine the data that is represented in the data cube with other datasets, which are best described as a data frame. In this tutorial you will learn how to use the Tables.jl interface to iterate over the data in the YAXArray.

Combining multiple tiff files into a zarr based datacube

- + \ No newline at end of file diff --git a/previews/PR481/tutorials/plottingmaps.html b/previews/PR481/tutorials/plottingmaps.html index 26dbcb55..ec2fc297 100644 --- a/previews/PR481/tutorials/plottingmaps.html +++ b/previews/PR481/tutorials/plottingmaps.html @@ -9,11 +9,11 @@ - + - + - + @@ -47,19 +47,19 @@ fig, ax, plt = heatmap(ct1_slice; colormap = :seaborn_icefire_gradient, axis = (; aspect=DataAspect()), figure = (; size = (1200,600), fontsize=24)) -fig

Wintri Projection

Some transformations

julia
δlon = (lon[2]-lon[1])/2
+fig

Wintri Projection

Some transformations

julia
δlon = (lon[2]-lon[1])/2
 nlon = lon .- 180 .+ δlon
 ndata = circshift(data, (192,1))

and add Coastlines with GeoMakie.coastlines(),

julia
fig = Figure(;size=(1200,600))
 ax = GeoAxis(fig[1,1])
 surface!(ax, nlon, lat, ndata; colormap = :seaborn_icefire_gradient, shading=false)
 cl=lines!(ax, GeoMakie.coastlines(), color = :white, linewidth=0.85)
 translate!(cl, 0, 0, 1000)
-fig

Moll projection

julia
fig = Figure(; size=(1200,600))
+fig

Moll projection

julia
fig = Figure(; size=(1200,600))
 ax = GeoAxis(fig[1,1]; dest = "+proj=moll")
 surface!(ax, nlon, lat, ndata; colormap = :seaborn_icefire_gradient, shading=false)
 cl=lines!(ax, GeoMakie.coastlines(), color = :white, linewidth=0.85)
 translate!(cl, 0, 0, 1000)
-fig

3D sphere plot

julia
using Bonito, WGLMakie
+fig

3D sphere plot

julia
using Bonito, WGLMakie
 Page(exportable=true, offline=true)
 
 WGLMakie.activate!()
@@ -75,7 +75,7 @@
 zoom!(ax.scene, cameracontrols(ax.scene), 0.5)
 rotate!(ax.scene, 2.5)
 fig
- + \ No newline at end of file