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étodo | Caso 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()
dsLo 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_box127,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')
Modo expert vs standard¶
DataFetcher tiene dos modos:
standard(default): devuelveTEMP,PSAL,PRESya 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.