The One Argo Float notebook demonstrates various functionalities of the ArgoData.jl package, which are further documented below.

👉 One Argo Float 👈 (code)

Download From Argo Data Center

Downloading and accessing an Argo file (wmo=13857 from folder="aoml") is done like this.

using ArgoData
input_file=GDAC.download_file("aoml",13857)
"/tmp/Argo_DAC_files/aoml/13857/13857_prof.nc"

You can then simply access the file content using NCDatasets.jl.

using NCDatasets
ds=Dataset(input_file)
keys(ds)
58-element Vector{String}:
 "DATA_TYPE"
 "FORMAT_VERSION"
 "HANDBOOK_VERSION"
 "REFERENCE_DATE_TIME"
 "DATE_CREATION"
 "DATE_UPDATE"
 "PLATFORM_NUMBER"
 "PROJECT_NAME"
 "PI_NAME"
 "STATION_PARAMETERS"
 ⋮
 "HISTORY_SOFTWARE_RELEASE"
 "HISTORY_REFERENCE"
 "HISTORY_DATE"
 "HISTORY_ACTION"
 "HISTORY_PARAMETER"
 "HISTORY_START_PRES"
 "HISTORY_STOP_PRES"
 "HISTORY_PREVIOUS_VALUE"
 "HISTORY_QCTEST"

A list of all folder,wmo pairs can be obtained using files_list=GDAC.files_list(). And a method to download files in bulk & parallel is presented in examples/Argo_distributed_download.jl.

Argo on Standard Depth Levels

A more complete version of the workflow presented below is in this notebook:

👉 from Argo to MITprof 👈 (code)

The MITprof Format

The MITprof format is a simple to use version of Argo where profiles have been converted to potential temperature and interpolated to standard depth levels.

Turning an Argo file (input_file) into an MITprof file (output_file) proceeds as follows.

  1. gridded fields are retrieved. These climatologies enable quality control of the data and scientific applications in step 2.
  2. read the Argo file and process it. The observed profiles are interpolated to standard depth levels, converted to potential temperature, quality controled, and appended climatological profiles.
Note

For more detail on the use of climatologies, representation error estimation, and model-data cost functions, see Forget et al 2015, Forget 2011, Forget and Wunsch 2007.

gridded_fields=GriddedFields.load()
output_file=MITprof.format(gridded_fields,input_file)
ds2=Dataset(output_file)
keys(ds2)
13-element Vector{String}:
 "prof_depth"
 "prof_ID"
 "prof_lon"
 "prof_lat"
 "prof_date"
 "prof_YYYYMMDD"
 "prof_HHMMSS"
 "prof_T"
 "prof_Tweight"
 "prof_Testim"
 "prof_S"
 "prof_Sweight"
 "prof_Sestim"

Associated Data Structure

The generated file can be accessed normally as a NetCDF file (e.g., Dataset(output_file)) or using the convenient MITprofStandard data structure.

mp=MITprofStandard(output_file)
File name is 13857_MITprof.nc 
List of variables : 
  lon   is (140,) 
  lat   is (140,) 
  date  is (140,) 
  depth is (55,) 
  ID    is (140,) 
  T     is (140, 55) 
  Te    is (140, 55) 
  Tw    is (140, 55) 
  S     is (140, 55) 
  Se    is (140, 55) 
  Sw    is (140, 55)

Sample MITprof Files

The full set of MITprof profiles processed in 2023 from the Argo data base is available in this Dataverse. This dataset can be explored and retrieved using Dataverse.jl.

using Dataverse
doi="https://doi.org/10.7910/DVN/7HLV09"
lst=Dataverse.file_list(doi)
Dataverse.file_download(lst,lst.filename[2],tempdir())
Downloading file : /tmp/MITprof_Argo_1999.nc

Another example is the original collection of MITprof files from Forget, et al 2015 is archived in this Dataverse. This contains an earlier versio of Argo along with complementary datasets.

using Dataverse
doi="https://doi.org/10.7910/DVN/EE3C40"
lst=Dataverse.file_list(doi)
12×4 DataFrame
Rowfilenamefilesizeidurl
StringInt64Int64String
1MITprof_mar2016_argo0708.nc8158487602845790https://dataverse.harvard.edu/api/access/datafile/2845790
2MITprof_mar2016_argo0910.nc8808169322845789https://dataverse.harvard.edu/api/access/datafile/2845789
3MITprof_mar2016_argo1112.nc9641983522845791https://dataverse.harvard.edu/api/access/datafile/2845791
4MITprof_mar2016_argo1314.nc10974835362845793https://dataverse.harvard.edu/api/access/datafile/2845793
5MITprof_mar2016_argo1515.nc6386748602845788https://dataverse.harvard.edu/api/access/datafile/2845788
6MITprof_mar2016_argo9506.nc9811534082845792https://dataverse.harvard.edu/api/access/datafile/2845792
7MITprof_mar2016_climode.nc377888922845786https://dataverse.harvard.edu/api/access/datafile/2845786
8MITprof_mar2016_ctd.nc13371622642845794https://dataverse.harvard.edu/api/access/datafile/2845794
9MITprof_mar2016_itp.nc482968562845787https://dataverse.harvard.edu/api/access/datafile/2845787
10MITprof_mar2016_seals.nc3720544282845785https://dataverse.harvard.edu/api/access/datafile/2845785
11MITprof_mar2016_xbt.nc3952522642845783https://dataverse.harvard.edu/api/access/datafile/2845783
12README.pdf561372863426https://dataverse.harvard.edu/api/access/datafile/2863426

Argo via Python API

The python library called argopy provides more ways to access, manipulate, and visualize Argo data.

using ArgoData, CondaPkg, PythonCall
ArgoData.conda(:argopy)
argopy=ArgoData.pyimport(:argopy)
println(argopy.status())
    CondaPkg Found dependencies: /home/runner/work/ArgoData.jl/ArgoData.jl/docs/CondaPkg.toml
    CondaPkg Found dependencies: /home/runner/.julia/packages/PythonCall/WMWY0/CondaPkg.toml
    CondaPkg Dependencies already up to date
src argovis is: ok | src erddap is: ok | src gdac is: ok
ds_fetcher=argopy.DataFetcher().float(pylist([6902746, 6902747, 6902757, 6902766]))
ds_points = ds_fetcher.to_xarray()
<xarray.Dataset> Size: 30MB
Dimensions:          (N_POINTS: 248145)
Coordinates:
    LATITUDE         (N_POINTS) float64 2MB 20.33 20.33 20.33 ... 23.2 23.2 23.2
    LONGITUDE        (N_POINTS) float64 2MB -49.45 -49.45 ... -55.21 -55.21
    TIME             (N_POINTS) datetime64[ns] 2MB 2017-03-28T11:55:00 ... 20...
  * N_POINTS         (N_POINTS) int64 2MB 0 1 2 3 ... 248142 248143 248144
Data variables: (12/15)
    CYCLE_NUMBER     (N_POINTS) int64 2MB 1 1 1 1 1 1 ... 247 247 247 247 247
    DATA_MODE        (N_POINTS) <U1 993kB 'D' 'D' 'D' 'D' ... 'D' 'D' 'D' 'D'
    DIRECTION        (N_POINTS) <U1 993kB 'D' 'D' 'D' 'D' ... 'A' 'A' 'A' 'A'
    PLATFORM_NUMBER  (N_POINTS) int64 2MB 6902766 6902766 ... 6902766 6902766
    POSITION_QC      (N_POINTS) int64 2MB 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
    PRES             (N_POINTS) float32 993kB 12.2 17.0 ... 2.013e+03 2.018e+03
    ...               ...
    PSAL_ERROR       (N_POINTS) float32 993kB 0.01 0.01 0.01 ... 0.01 0.01 0.01
    PSAL_QC          (N_POINTS) int64 2MB 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
    TEMP             (N_POINTS) float32 993kB 24.38 24.38 24.38 ... 3.716 3.709
    TEMP_ERROR       (N_POINTS) float32 993kB 0.002 0.002 0.002 ... 0.002 0.002
    TEMP_QC          (N_POINTS) int64 2MB 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
    TIME_QC          (N_POINTS) int64 2MB 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
Attributes:
    DATA_ID:              ARGO
    DOI:                  http://doi.org/10.17882/42182
    Fetched_from:         erddap.ifremer.fr
    Fetched_by:           runner
    Fetched_date:         2025/02/02
    Fetched_constraints:  WMO6902746;WMO6902747;WMO6902757;WMO6902766
    Fetched_uri:          https://erddap.ifremer.fr/erddap/tabledap/ArgoFloat...
    Processing_history:   [PRES,TEMP,PSAL] real-time and adjusted/delayed var...

👉 Notebook 👈 (code)