Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

01. Acceso a los datos con argopy

Suyana

argopy es la librería oficial para acceder a datos del programa Argo desde Python. Te abstrae el lío del GDAC (FTP, NetCDF crudos) y te entrega un xarray.Dataset ordenado.

Tres métodos de fetch:

MétodoCaso de uso
fetch_float(WMO)Una boya específica, toda su historia.
fetch_box([...])Cualquier perfil en una caja espacio-temporal.
fetch_region([...])Igual que fetch_box pero pensado para regiones grandes con descarga paralela.

Tres modos de datos: R (real-time), A (adjusted en tiempo real) y D (delayed-mode, calibrado por un PI). Más sobre esto en el capítulo 02.

%run _style.py
from argopy import DataFetcher
import argopy
print('argopy', argopy.__version__)
argopy 1.4.0

Bajar una boya por WMO

Cada boya Argo tiene un identificador único: el WMO number. Lo encontrás en el catálogo oficial o en el mapa de OceanOPS.

Vamos a trabajar con la boya 5905141, desplegada en el Atlántico Sur (sector entre 32° y 36° S, ~25° a 47° O), con más de 300 perfiles. Es una boya con buena cobertura para mostrar la confluencia Brasil-Malvinas.

ds = DataFetcher(src='erddap', mode='standard').float(5905141).to_xarray()
ds
Loading...

Lo que devuelve es un xarray.Dataset con todos los perfiles concatenados a lo largo de una dimensión N_POINTS (default de argopy). En el próximo capítulo lo reformateamos a la estructura clásica N_PROF × N_LEVELS.

Bajar una caja espacio-temporal

Para análisis regionales, conviene pedir todos los perfiles que cayeron en una caja. La sintaxis es:

[lon_min, lon_max, lat_min, lat_max, pres_min, pres_max, date_min, date_max]

Ejemplo: sector del Atlántico Sur abierto, primer trimestre de 2020, hasta 2000 dbar:

box = [-45, -25, -40, -30, 0, 2000, '2020-01-01', '2020-03-31']
ds_box = DataFetcher(src='erddap', mode='standard').region(box).to_xarray()
print(f'{ds_box.dims["N_POINTS"]:,} puntos descargados')
ds_box
127,274 puntos descargados
/var/folders/8j/y_l8frxs2n19mq92k5pv4y100000gn/T/ipykernel_26024/2010855607.py:3: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
  print(f'{ds_box.dims["N_POINTS"]:,} puntos descargados')
Loading...

Modo expert vs standard

DataFetcher tiene dos modos:

  • standard (default): devuelve TEMP, PSAL, PRES ya ajustadas si están disponibles. Útil para análisis científico directo.

  • expert: devuelve TODAS las variables incluyendo _ADJUSTED, _QC, _ADJUSTED_QC, _ERROR. Útil para entender el control de calidad y para tareas avanzadas.

Para investigación recomendamos expert y elegir uno mismo qué variables usar (lo discutimos en el cap. 02).

ds_expert = DataFetcher(src='erddap', mode='expert').float(5905141).to_xarray()
list(ds_expert.data_vars)
[np.str_('CONFIG_MISSION_NUMBER'), np.str_('CYCLE_NUMBER'), np.str_('DATA_MODE'), np.str_('DIRECTION'), np.str_('PLATFORM_NUMBER'), np.str_('POSITION_QC'), np.str_('PRES'), np.str_('PRES_ADJUSTED'), np.str_('PRES_ADJUSTED_ERROR'), np.str_('PRES_ADJUSTED_QC'), np.str_('PRES_QC'), np.str_('PSAL'), np.str_('PSAL_ADJUSTED'), np.str_('PSAL_ADJUSTED_ERROR'), np.str_('PSAL_ADJUSTED_QC'), np.str_('PSAL_QC'), np.str_('TEMP'), np.str_('TEMP_ADJUSTED'), np.str_('TEMP_ADJUSTED_ERROR'), np.str_('TEMP_ADJUSTED_QC'), np.str_('TEMP_QC'), np.str_('TIME_QC'), np.str_('VERTICAL_SAMPLING_SCHEME')]

Cache local

Por defecto argopy cachea las descargas en ~/.argopy_cache. Si vas a iterar mucho sobre el mismo dataset conviene activarlo:

from argopy import set_options
set_options(cachedir='./.argopy_cache')
ds_cached = DataFetcher(src='erddap', cache=True).float(5905141).to_xarray()
dict(ds_cached.dims)
/var/folders/8j/y_l8frxs2n19mq92k5pv4y100000gn/T/ipykernel_26024/19577681.py:4: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
  dict(ds_cached.dims)
{'N_POINTS': 174628}

Resumen

  • DataFetcher(src='erddap') es el punto de entrada.

  • .float(WMO), .region(box), .profile(WMO, CYC) son los tres principales métodos de selección.

  • .to_xarray() materializa la descarga.

  • mode='expert' te da acceso a las variables ajustadas y QC para análisis serios.

  • Activá el caché si vas a iterar.

En el próximo capítulo vemos cómo está armado el Dataset por dentro.