Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ext/NumericalEarthCopernicusMarineExt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ function Downloads.download(meta::GLORYSMetadatum;

toolbox = CopernicusMarine.copernicusmarine

variable_name = GLORYS.GLORYS_dataset_variable_names[meta.name]
variable_name = GLORYS.dataset_variable_name(meta)
variables = CopernicusMarine.pylist([variable_name])

dataset_id = GLORYS.copernicusmarine_dataset_id(meta.dataset)
Expand Down
5 changes: 3 additions & 2 deletions src/DataWrangling/ECCO/ECCO.jl
Original file line number Diff line number Diff line change
Expand Up @@ -254,11 +254,12 @@ function DataWrangling.metadata_filename(dataset::Union{ECCO2Daily, ECCO2Monthly
end

# Convenience functions

DataWrangling.dataset_variable_name(data::Metadata{<:ECCO2Daily}) = ECCO2_dataset_variable_names[data.name]
DataWrangling.dataset_variable_name(data::Metadata{<:ECCO2Monthly}) = ECCO2_dataset_variable_names[data.name]
DataWrangling.dataset_variable_name(data::Metadata{<:ECCO4Monthly}) = ECCO4_dataset_variable_names[data.name]
DataWrangling.dataset_location(::ECCODataset, name) = ECCO_location[name]

DataWrangling.dataset_location(::ECCODataset, name) = name in keys(ECCO_location) ? ECCO_location[name] : (Center, Center, Center)
DataWrangling.is_three_dimensional(data::ECCOMetadata) =
data.name == :temperature ||
data.name == :salinity ||
Expand Down
2 changes: 1 addition & 1 deletion src/DataWrangling/ECCO/ECCO_darwin.jl
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ function DataWrangling.conversion_units(metadatum::Metadatum{<:Union{ECCO2Darwin
elseif dataset_variable_name(metadatum) != "THETA"
return MicromolePerLiter()
else
return nothing
return MolePerLiter()
end
end

Expand Down
2 changes: 2 additions & 0 deletions src/DataWrangling/GLORYS/GLORYS.jl
Original file line number Diff line number Diff line change
Expand Up @@ -154,5 +154,7 @@ function z_interfaces(metadata::GLORYSMetadata)
return zf
end

include("GLORYS_bgc.jl")

end # module GLORYS

69 changes: 69 additions & 0 deletions src/DataWrangling/GLORYS/GLORYS_bgc.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
struct GLORYSBGCDaily <: GLORYSDataset end
struct GLORYSBGCMonthly <: GLORYSDataset end

dataset_name(::GLORYSBGCDaily) = "GLORYSBGCDaily"
dataset_name(::GLORYSBGCMonthly) = "GLORYSBGCMonthly"

const GLORYSBGC = Union{GLORYSBGCDaily, GLORYSBGCMonthly}

const GLORYSBGCMetadatum =
Union{Metadatum{<:GLORYSBGCDaily}, Metadatum{<:GLORYSBGCMonthly}}

Base.size(::GLORYSBGC, variable) = (1140, 680, 75)
Base.size(::GLORYSBGCMetadatum) = (1140, 680, 75, 1)

all_dates(::GLORYSBGCDaily, var) = range(DateTime("1993-01-01"), stop=DateTime("2026-03-31"), step=Day(1))
all_dates(::GLORYSBGCMonthly, var) = range(DateTime("1993-01-01"), stop=DateTime("2026-03-31"), step=Month(1))

copernicusmarine_dataset_id(::GLORYSBGCDaily) = "cmems_mod_glo_bgc_my_0.25deg_P1D-m"
copernicusmarine_dataset_id(::GLORYSBGCMonthly) = "cmems_mod_glo_bgc_my_0.25deg_P1M-m"

available_variables(::GLORYSBGCDaily) =
Dict(:chlorophyll => "chl",
:nitrate => "no3",
:primary_production => "nppv",
:oxygen => "o2",
:phosphate => "po4",
:silicate => "si")

available_variables(::GLORYSBGCMonthly) =
Dict(:chlorophyll => "chl",
:iron => "fe",
:nitrate => "no3",
:primary_production => "nppv",
:oxygen => "o2",
:pH => "ph",
:phytoplankton => "phyc",
:phosphate => "po4",
:silicate => "si",
:pCO₂ => "spco2")

dataset_variable_name(metadata::GLORYSBGCMetadatum) = available_variables(metadata.dataset)[metadata.name]

function metadata_prefix(dataset::GLORYSBGC, name, date, region)
var = available_variables(dataset)[name]
ds = dataset_name(dataset)
start_date = start_date_str(date)
end_date = end_date_str(date)
suffix = region_suffix(region)
return string(var, "_",
ds, "_",
start_date, "_",
end_date, suffix) |> colon2dash
end

is_three_dimensional(metadata::GLORYSBGCMetadatum) = metadata.name != :pCO₂

function z_interfaces(metadata::GLORYSBGCMetadatum)
metadata.name == :pCO₂ && return (-1.0, 0.0)
paths = metadata_path(metadata)
path = paths isa AbstractVector ? first(paths) : paths
ds = Dataset(path)
zc = - reverse(ds["depth"][:])
close(ds)
dz = zc[2] - zc[1]
zf = (zc[1:end-1] .+ zc[2:end]) / 2
push!(zf, 0)
pushfirst!(zf, zf[1] - dz)
return zf
end
7 changes: 2 additions & 5 deletions src/DataWrangling/restoring.jl
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,8 @@ function DatasetRestoring(metadata::Metadata,
time_indices_in_memory = default_time_indices_in_memory(metadata),
time_indexing = Cyclical(),
inpainting = NearestNeighborInpainting(Inf),
cache_inpainted_data = true)
cache_inpainted_data = true,
field_name = oceananigans_fieldnames[metadata.name])

Downloads.download(metadata)

Expand All @@ -205,10 +206,6 @@ function DatasetRestoring(metadata::Metadata,
arch = architecture(fts)
mask = on_architecture(arch, mask)

# Grab the correct Oceananigans field to restore
variable_name = metadata.name
field_name = oceananigans_fieldnames[variable_name]

# If we pass the grid we do not need to interpolate
# so we can save parameter space by setting the native grid to nothing
on_native_grid = arch_or_grid isa AbstractArchitecture
Expand Down
Loading