Tutorial
Find datasets and parameters
Each provider (Speasy.amda, Speasy.cda, Speasy.csa, Speasy.ssc, Speasy.archive) indexes datasets by id; a dataset indexes its parameters.
using Speasy
filter(contains(r"OMNI.*HRO"), keys(Speasy.cda))4-element Vector{String}:
"OMNI_HRO_1MIN"
"OMNI_HRO2_1MIN"
"OMNI_HRO_5MIN"
"OMNI_HRO2_5MIN"ds = Speasy.cda["SOHO_ERNE-HED_L2-1MIN"]
keys(ds)5-element Vector{String}:
"est"
"PH"
"AH"
"PHC"
"AHC"getmeta(ds)Dict{String, Any} with 18 entries:
"description" => "SOHO ERNE-HED Level2 1 minute data - Rami Vaini…
"start_date" => "1996-05-07 17:19:56"
"subdividedby" => "%Y"
"spase_DatasetResourceID" => "spase://ESA/NumericalData/SOHO/ERNE/HED/CDF/PT1…
"Time_resolution" => "1 minute"
"__spz_provider__" => "cda"
"__spz_uid__" => "SOHO_ERNE-HED_L2-1MIN"
"nssdc_ID" => "(None) "
"HTTP_LINK" => "https://export.srl.utu.fi/"
"Data_type" => "L2-1MIN>Level2 1 minute resolution"
"serviceprovider_ID" => "SOHO_ERNE-HED_L2-1MIN"
"stop_date" => "2026-09-22 23:59:39"
"filenaming" => "soho_erne-hed_l2-1min_%Y%m%d_%Q.cdf"
"url" => "https://cdaweb.gsfc.nasa.gov/pub/data/soho/erne…
"mastercdf" => "https://cdaweb.gsfc.nasa.gov/pub/software/cdawl…
"__spz_name__" => "SOHO_ERNE_HED_L2_1MIN"
"ID" => "soho_erne-hed_l2-1min_cdaweb"
"__spz_type__" => "DatasetIndex"Get data
ds[parameter] and spz"provider/dataset/parameter" both give a SpeasyProduct. getdata(product, t0, t1) fetches it, as does calling the product:
getdata(ds["PH"], "2016-6-2", "2016-6-3")SpeasyVariable{Float32, 2, PythonCall.PyArray{Float32, 2, true, true, Float32}, Tuple{VariableAxis{Float32, 1, PythonCall.PyArray{Float32, 1, true, true, Float32}}, VariableAxis{Durations.Timestamp{Dates.Nanosecond}, 1, Base.ReinterpretArray{Durations.Timestamp{Dates.Nanosecond}, 1, Int64, PythonCall.PyArray{Int64, 1, true, true, Int64}, false}}}, String, SpaceDataModel.OverlayDict{Union{String, Symbol}, Any, PythonCall.PyDict{String, Any}, Dict{Union{String, Symbol}, Any}}}: PH
Time Range: 2016-06-02T00:00:34.503 to 2016-06-02T23:32:28.269
Units: (cm^2 s sr MeV)^-1
Size: (10, 906)
Memory Usage: 44.206 KiB
Metadata:
CATDESC: Proton intensity in 10 energy ranges (nominal 13-130 MeV)
FIELDNAM: Proton intensity in 10 energy ranges
LABLAXIS: Proton intensity
FILLVAL: Any[-9.999999848243207e30]
VALIDMIN: Any[0.0]
VALIDMAX: Any[100000.0]
UNITS: (cm^2 s sr MeV)^-1
VAR_TYPE: data
DEPEND_0: Epoch
DEPEND_1: P_energy
FORMAT: E9.2
DISPLAY_TYPE: stack_plot>NOBAR>y=PH,z=P_energy
SCALETYP: logimf = spz"amda/imf"
imf("2016-6-2", "2016-6-3")SpeasyVariable{Float32, 2, PythonCall.PyArray{Float32, 2, true, true, Float32}, Tuple{UnitRange{Int64}, VariableAxis{Durations.Timestamp{Dates.Nanosecond}, 1, Base.ReinterpretArray{Durations.Timestamp{Dates.Nanosecond}, 1, Int64, PythonCall.PyArray{Int64, 1, true, true, Int64}, false}}}, String, SpaceDataModel.OverlayDict{Union{String, Symbol}, Any, PythonCall.PyDict{String, Any}, Dict{Union{String, Symbol}, Any}}}: imf
Time Range: 2016-06-02T00:00:15 to 2016-06-02T23:59:59
Units: nT
Size: (3, 5400)
Memory Usage: 106.605 KiB
Metadata:
CATDESC: imf
FIELDNAM: b_gse
FORMAT: F11.4
VAR_TYPE: data
FILLVAL: Any[NaN]
SI_CONVERSION: 1e-9>T
VALIDMIN: Any[-3.4028234663852886e38]
VALIDMAX: Any[3.4028234663852886e38]
DATA: N/A
DISPLAY_TYPE: time_series
TENSOR_FRAME: GSE
TENSOR_ORDER: 0
UNITS: nT
VAR_NOTES:
DEPEND_0: AMDA_TIME
LABL_PTR_1: Any["bx", "by", "bz"]Several parameters: broadcast, or getdata(ds, t0, t1) for all of a dataset's.
omni = Speasy.cda["OMNI_HRO_1MIN"]
flow_speed, pressure = getdata.((omni["flow_speed"], omni["Pressure"]), "2016-6-2", "2016-6-3")
times(pressure), parent(pressure)(time [ Units: ns, Size: (1440,)], Float32[1.41 1.46 … NaN NaN])SSCWeb trajectories take the coordinate system as a last path segment (default gse):
spz"ssc/wind/gsm"("2016-6-2", "2016-6-3")SpeasyVariable{Float64, 2, PythonCall.PyArray{Float64, 2, true, true, Float64}, Tuple{UnitRange{Int64}, VariableAxis{Durations.Timestamp{Dates.Nanosecond}, 1, Base.ReinterpretArray{Durations.Timestamp{Dates.Nanosecond}, 1, Int64, PythonCall.PyArray{Int64, 1, true, true, Int64}, false}}}, String, SpaceDataModel.OverlayDict{Union{String, Symbol}, Any, PythonCall.PyDict{String, Any}, Dict{Union{String, Symbol}, Any}}}: Position
Time Range: 2016-06-02T00:00:00 to 2016-06-02T23:48:00
Units: km
Size: (3, 120)
Memory Usage: 4.420 KiB
Metadata:
CoordinateSystem: GSM
UNITS: kmPython-style get_data
get_data takes the same arguments as Python speasy.get_data, including its dynamic inventory:
ace_imf = speasy.inventories.data_tree.amda.Parameters.ACE.MFI.ace_imf_all.imf
get_data(ace_imf, "2016-6-2", "2016-6-3")SpeasyVariable{Float32, 2, PythonCall.PyArray{Float32, 2, true, true, Float32}, Tuple{UnitRange{Int64}, VariableAxis{Durations.Timestamp{Dates.Nanosecond}, 1, Base.ReinterpretArray{Durations.Timestamp{Dates.Nanosecond}, 1, Int64, PythonCall.PyArray{Int64, 1, true, true, Int64}, false}}}, String, SpaceDataModel.OverlayDict{Union{String, Symbol}, Any, PythonCall.PyDict{String, Any}, Dict{Union{String, Symbol}, Any}}}: imf
Time Range: 2016-06-02T00:00:15 to 2016-06-02T23:59:59
Units: nT
Size: (3, 5400)
Memory Usage: 106.605 KiB
Metadata:
CATDESC: imf
FIELDNAM: b_gse
FORMAT: F11.4
VAR_TYPE: data
FILLVAL: Any[NaN]
SI_CONVERSION: 1e-9>T
VALIDMIN: Any[-3.4028234663852886e38]
VALIDMAX: Any[3.4028234663852886e38]
DATA: N/A
DISPLAY_TYPE: time_series
TENSOR_FRAME: GSE
TENSOR_ORDER: 0
UNITS: nT
VAR_NOTES:
DEPEND_0: AMDA_TIME
LABL_PTR_1: Any["bx", "by", "bz"]