Skip to content

Commit cc60ff3

Browse files
Ensure consistent download_dataset for Copernicus data (#522)
* fix a couple of errors * correction * bugfix * disambiguate * make sure we download individual files * comment * comment * cleanup unused grid * add metadatum --------- Co-authored-by: Navid C. Constantinou <[email protected]>
1 parent d7e32dd commit cc60ff3

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

ext/ClimaOceanPythonCallExt.jl

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ using Oceananigans
77
using Oceananigans.DistributedComputations: @root
88

99
using Dates: DateTime
10-
using ClimaOcean.DataWrangling.Copernicus: CopernicusMetadata
10+
using ClimaOcean.DataWrangling.Copernicus: CopernicusMetadata, CopernicusMetadatum
1111

1212
import ClimaOcean.DataWrangling: download_dataset
1313

@@ -25,7 +25,17 @@ function install_copernicusmarine()
2525
return cli
2626
end
2727

28-
function download_dataset(meta::CopernicusMetadata, grid=nothing; skip_existing = true, additional_kw...)
28+
# Download each date individually, instead of downloading the entire dataset at once.
29+
# This is useful for a possible extension of the temporal horizon of the dataset.
30+
function download_dataset(metadata::CopernicusMetadata; kwargs...)
31+
paths = Array{String}(undef, length(metadata))
32+
for (m, metadatum) in enumerate(metadata)
33+
paths[m] = download_dataset(metadatum; kwargs...)
34+
end
35+
return paths
36+
end
37+
38+
function download_dataset(meta::CopernicusMetadatum; skip_existing = true, additional_kw...)
2939
output_directory = meta.dir
3040
output_filename = ClimaOcean.DataWrangling.metadata_filename(meta)
3141
output_path = joinpath(output_directory, output_filename)

src/DataWrangling/Copernicus/Copernicus.jl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ using NCDatasets
66
using Printf
77

88
using Oceananigans.Fields: Center
9-
using ClimaOcean.DataWrangling: Metadata, Metadatum, metadata_path
9+
using ClimaOcean.DataWrangling: Metadata, Metadatum
1010
using Dates: DateTime, Day, Month
1111

1212
import Oceananigans.Fields:
@@ -45,6 +45,8 @@ dataset_name(::GLORYSStatic) = "GLORYSStatic"
4545
dataset_name(::GLORYSDaily) = "GLORYSDaily"
4646
dataset_name(::GLORYSMonthly) = "GLORYSMonthly"
4747

48+
Base.size(::CopernicusDataset, variable) = (4320, 2040, 50)
49+
4850
all_dates(::GLORYSStatic, var) = [nothing]
4951
all_dates(::GLORYSDaily, var) = range(DateTime("1993-01-01"), stop=DateTime("2021-06-30"), step=Day(1))
5052
all_dates(::GLORYSMonthly, var) = range(DateTime("1993-01-01"), stop=DateTime("2024-12-01"), step=Month(1))
@@ -57,10 +59,11 @@ copernicusmarine_dataset_id(::GLORYSMonthly) = "cmems_mod_glo_phy_my_0.083deg_P1
5759
struct CMEMSHourlyAnalysis <: CopernicusDataset end
5860
copernicusmarine_dataset_id(::CMEMSHourlyAnalysis) = "cmems_mod_glo_phy_anfc_0.083deg_PT1H-m"
5961

60-
CopernicusMetadata{D} = Metadata{<:CopernicusDataset, D}
61-
CopernicusMetadatum = Metadatum{<:CopernicusDataset}
62+
const CopernicusMetadata{D} = Metadata{<:CopernicusDataset, D}
63+
const CopernicusMetadatum = Metadatum{<:CopernicusDataset}
6264

6365
Base.size(::CopernicusMetadatum) = (4320, 2040, 50, 1)
66+
6467
reversed_vertical_axis(::CopernicusDataset) = true
6568

6669
available_variables(::CopernicusDataset) = copernicus_dataset_variable_names

0 commit comments

Comments
 (0)