Skip to content

ArgoCanada/argodata

Repository files navigation

argodata

R build status Codecov test coverage

The goal of argodata is to provide a data frame-based interface to data generated by the Argo floats program (doi:10.17882/42182). This package provides low-level access to all variables contained within Argo NetCDF files; for a higher-level interface with built-in visualization and quality control, see the argoFloats package.

Installation

You can install the development version from GitHub using:

# install.packages("remotes")
remotes::install_github("ArgoCanada/argodata")

The argodata package downloads files from the FTP and HTTPS mirrors, caches them, and loads them into R. You can set the mirror using argo_set_mirror() and the cache directory using argo_set_cache_dir():

argo_set_mirror("https://data-argo.ifremer.fr/")
argo_set_cache_dir("my/argo/cache")

Optionally, you can set options(argodata.cache_dir = "my/argo/cache") in your .Rprofile to persist this value between R sessions (see usethis::edit_r_profile()). Cached files are used indefinitely by default because of the considerable time it takes to refresh them. If you do use a persistent cache, you should update the index files regularly using argo_update_global() (data files are also updated occasionally; update these using argo_update_data()).

Example

The main workflow supported by argodata is:

  • Start with argo_global_prof(), argo_global_traj(), argo_global_meta(), argo_global_bio_prof(), argo_global_bio_prof(), or argo_global_synthetic_prof(). These functions return data frames that contain meta information about each data file in Argo.
  • Use argo_filter_radius(), other argo_filter_*() functions, or dplyr::filter() to subset the index using search criteria.
  • Use extractor functions like argo_prof_levels(), argo_traj_measurement(), argo_meta_config_param(), and argo_tech_tech_param() to read information for all files in the index subset.
library(tidyverse)
library(argodata)

# filter profile index using search criteria
prof_lab_may_2020 <- argo_global_prof() %>%
  argo_filter_rect(50, 60, -60, -50) %>% 
  filter(
    lubridate::year(date) == 2020, 
    lubridate::month(date) == 5
  )

# download, cache, and load NetCDF files
levels_lab_may_2020 <- prof_lab_may_2020 %>% 
  argo_prof_levels()
#> Downloading 55 files from 'https://data-argo.ifremer.fr'
#> Extracting from 55 files
# plot!
levels_lab_may_2020 %>% 
  filter(psal_qc == 1) %>% 
  ggplot(aes(x = psal, y = pres, col = temp)) +
  geom_point() +
  scale_y_reverse() +
  theme_bw()

See the reference for argo_prof_levels() for more ways to load Argo profiles from argo_global_prof(), argo_global_bio_prof() and argo_global_synthetic_prof(); see argo_traj_measurement() for ways to load Argo trajectories from argo_global_traj() or argo_global_bio_traj(); see argo_meta_missions() for ways to load float meta from argo_global_meta(); see argo_tech_tech_param() for ways to load float technical information from argo_global_tech(); and see argo_info() and argo_vars() for ways to load global metadata from Argo NetCDF files.

Advanced

The argodata package also exports the low-level readers it uses to produce tables from Argo NetCDF files. You can access these using argo_read_*() functions.

prof_file <- system.file(
  "cache-test/dac/csio/2900313/profiles/D2900313_000.nc",
  package = "argodata"
)

argo_read_prof_levels(prof_file)
#> # A tibble: 70 × 17
#>    N_LEVELS N_PROF   PRES PRES_QC PRES_ADJUSTED PRES_ADJUSTED_QC
#>  *    <int>  <int>  <dbl> <chr>           <dbl> <chr>           
#>  1        1      1   9.80 1                9.80 1               
#>  2        2      1  20.1  1               20.1  1               
#>  3        3      1  29.9  1               29.9  1               
#>  4        4      1  39.7  1               39.7  1               
#>  5        5      1  49.9  1               49.9  1               
#>  6        6      1  60.3  1               60.3  1               
#>  7        7      1  69.7  1               69.7  1               
#>  8        8      1  80.3  1               80.3  1               
#>  9        9      1  90.2  1               90.2  1               
#> 10       10      1 100.   1              100.   1               
#> # … with 60 more rows, and 11 more variables: PRES_ADJUSTED_ERROR <dbl>,
#> #   TEMP <dbl>, TEMP_QC <chr>, TEMP_ADJUSTED <dbl>, TEMP_ADJUSTED_QC <chr>,
#> #   TEMP_ADJUSTED_ERROR <dbl>, PSAL <dbl>, PSAL_QC <chr>, PSAL_ADJUSTED <dbl>,
#> #   PSAL_ADJUSTED_QC <chr>, PSAL_ADJUSTED_ERROR <dbl>

Code of Conduct

Please note that argodata is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

About

Download Argo Ocean Float Data

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Code of conduct

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •