Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pruebas con Docker #1

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@ __pycache__/
*$py.class
docs/build/
docs/source/generated
*.nc
54 changes: 27 additions & 27 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,37 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "/work/ALT/odatis/briolf/anaconda3/bin/python",
"args": ["/home/fbriol/Documents/workspace/lagrangian/tests/test_integration.py"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [
{
"name": "PYTHONPATH",
"value": "/home/fbriol/Documents/workspace/lagrangian/build/lib.linux-x86_64-3.7/"
}
],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"env": {"PYTHONPATH": "/home/fbriol/Documents/workspace/lagrangian/build/lib.linux-x86_64-3.7"},
"console": "integratedTerminal"
"program": "map_of_fle.py",
"args": [
"sds.ini",
"fsle1.nc",
"2023-02-08",
"--advection_time",
"20",
"--resolution",
"0.08333588",
"--final_separation",
"0.2",
"--x_min",
"-180",
"--x_max",
"180",
"--y_min",
"-60",
"--y_max",
"60",
"--verbose",
"--time_direction",
"forward"
],
"console": "integratedTerminal",
"env": {
"UDUNITS2_XML_PATH": "/home/atorres/miniconda3/envs/RTD/share/udunits/udunits2.xml"
}
}
]
}
10 changes: 10 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM mambaorg/micromamba:1.3.1

COPY --chown=$MAMBA_USER:$MAMBA_USER env.yml /tmp/env.yml
RUN micromamba install -y -n base -f /tmp/env.yml && \
micromamba clean --all --yes

WORKDIR /home/mambauser
RUN mkdir ./data
COPY --chown=$MAMBA_USER:$MAMBA_USER docker.ini docker.ini
COPY --chown=$MAMBA_USER:$MAMBA_USER map_of_fle.py map_of_fle.py
133 changes: 132 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,135 @@ Documentation
-------------

For full documentation visit the [Documentation
Page](http://lagrangian.readthedocs.io/en/latest/index.html).
Page](http://lagrangian.readthedocs.io/en/latest/index.html).

Instalar a partir de código fuente
----------------------------------

1. Crear entorno con dependencias:

```{bash}
conda install -c conda-forge boost udunits2 netcdf4
```

2. Obtener submodulos:

```{bash}
git submodule update --init --recursive
```

3. Instalar:

```{bash}
pip install .
```

```{bash}
export UDUNITS2_XML_PATH=/home/atorres/miniconda3/envs/RTD/share/udunits/udunits2.xml
```

4. Ejecutar:

```{bash}
time -v map_of_fle sds.ini 2023_07_18.nc "2023-07-18" --advection_time 10 --resolution=0.04 --final_separation 0.2 --x_min -180 --x_max 180 --y_min -60 --y_max 60 --verbose --time_direction forward
```

Instalar versión de Conda
-------------------------

1. Instalar entorno del proyecto y activar:

```{bash}
conda env create -f env.yml
conda activate aviso-lagrangian
```

2. Ver localización paquete

```{bash}
python -c "import lagrangian; print(lagrangian.__file__)"
```

3. Entrar en el directorio (quitar `__init__.py` del path anterior) y a continuación comentar parte de la línea 545 del fichero `console_scripts/map_of_fle.py`:

```{python}
if HAVE_DASK and args.scheduler_file is not None: #or args.local_cluster:
```

4. Copiar los ficheros necesarios usando el script `convert_nc.py` (usar cualquier entorno de conda con `xarray` y `pandas`):

```{bash}
python convert_nc.py /home/atorres/data/uv OUTPUT_DIR
```

5. Editar el fichero `sds.ini` y escribir una línea por cada una de las fechas necesarias

6. Ejecutar:

```{bash}
map_of_fle sds.ini 2023_08_07.nc "2023-08-07" --advection_time 20 --resolution=0.04 --final_separation 0.6 --initial_separation 0.2 --x_min -179.98 --x_max 179.98 --y_min -59.98 --y_max 59.98 --verbose --time_direction backward
```

Docker
------

1. Construir imágen

```{bash}
docker build -t lagrangian .
```

2. Ejecutar contenedor

```{bash}
docker run --user=root -it -v /home/SHARED/SATLINK/fsle:/home/mambauser/data lagrangian bash
```

3. Correr script del cálculo del FSLE

```{bash}
python map_of_fle.py ./data/uv ./data/fsle "2023-02-28 12:00" --advection_time 20 --final_separation 0.2 --x_min -180 --nx 4320 --y_min -60 --ny 1441 --resolution 1/12 --time_direction backward
```

Descargar datos de FSLE
-----------------------

1. Instalar motuclient con

```{bash}
pip install motuclient
```

2. Ejecutar cambiando la fecha (`-t` y `-T`) y el fichero de salida (`-f`):

```{bash}
motuclient -u [email protected] -p 2BFeqk -m https://motu.aviso.altimetry.fr/motu-web/Motu -s AvisoFSLE -d dataset-duacs-nrt-global-allsat-madt-fsle -x -180 -X 180 -y -60 -Y 60 -t "2022-07-15" -T "2022-07-15" --outputWritten netcdf -v fsle_max -v theta_max -o "." -f "2022_07_15_fsle.nc"
```

3. Otro ejemplo:

```{bash}
motuclient -u [email protected] -p 2BFeqk -m https://motu.aviso.altimetry.fr/motu-web/Motu -s AvisoFSLE -d dataset-duacs-nrt-global-allsat-madt-fsle -x -180 -X 180 -y -90 -Y 90 -t "2022-08-07" -T "2022-08-07" --outputWritten netcdf -v fsle_max -v theta_max -o "." -f "fsle_2022_08_07.nc"
```

Otra forma alternativa, desde la web:

1. Entrar en [https://www.aviso.altimetry.fr/en/home.html](https://www.aviso.altimetry.fr/en/home.html)
2. Identificarse con usuario (`[email protected]`) y contraseña (`2BFeqk`)
3. Ir a `MY AVISO+ > My products > Lyapunov Exponents and Orientations (grids) > Extraction > DATASET-DUACS-NRT-GLOBAL-ALLSAT-MADT-FSLE`. Seleccionar `Full region` y editar la latitud a (-60, 60). Editar la fecha en el desplegable (importante destacar que la fecha que aparece es la última disponible)

NOTA: Los ficheros descargados de AVISO tienen 9000 longitudes y 3000 latitudes. Para conseguir algo similar con el script, habría que usar `--resolution 0.04`. Sin embargo, no es idéntico.
Además, los ficheros descargados tienen las siguientes longitudes:

```{text}
* lon (lon) float64 180.0 180.0 180.1 180.1 ... 539.8 539.9 539.9 539.9
```

Esto no se corresponde con el formato habitual (-180, 180), habría que ver como transformarlo

Pruebas AVISO
-------------

```{bash}
map_of_fle duacs.ini 2023_08_07.nc "2023-08-07" --advection_time 20 --resolution=0.04 --final_separation 0.6 --initial_separation 0.2 --x_min -179.98 --x_max 179.98 --y_min -59.98 --y_max 59.98 --verbose --time_direction backward
```
3 changes: 3 additions & 0 deletions conda/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@ dependencies:
- lagrangian
- python=3.7
- netcdf4
# Evita error: ImportError: libnetcdf.so.13: cannot open shared object file: No such file or directory
# Referencia: https://github.com/conda-forge/vtk-feedstock/issues/85
- libnetcdf=4.6.2
channels:
- fbriol
32 changes: 32 additions & 0 deletions convert_nc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env python

import sys
from pathlib import Path

import pandas as pd
import xarray as xr

if len(sys.argv) != 3:
print(f"usage: {sys.argv[0]} INPUT_PATH OUTPUT_PATH")
sys.exit(1)

input_path = Path(sys.argv[1])
output_path = Path(sys.argv[2])

if input_path == output_path:
raise ValueError("files are going to be overwritten")

output_path.mkdir(parents=True, exist_ok=True)

for input_nc in input_path.glob("*.nc"):
with xr.open_dataset(input_nc) as ds:
ds_subset = ds.isel(time=0)
ts = (
pd.to_datetime(ds.time.values)
.tz_localize("UTC")
.strftime("%Y-%m-%d %H:%M:%S.%f %Z")
.item()
)
ds_subset["ugos"].attrs["date"] = ts
ds_subset["vgos"].attrs["date"] = ts
ds_subset.to_netcdf(output_path / input_nc.name)
47 changes: 47 additions & 0 deletions docker.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
U = /home/mambauser/data/uv/2023-02-07.nc
U = /home/mambauser/data/uv/2023-02-08.nc
U = /home/mambauser/data/uv/2023-02-09.nc
U = /home/mambauser/data/uv/2023-02-10.nc
U = /home/mambauser/data/uv/2023-02-11.nc
U = /home/mambauser/data/uv/2023-02-12.nc
U = /home/mambauser/data/uv/2023-02-13.nc
U = /home/mambauser/data/uv/2023-02-14.nc
U = /home/mambauser/data/uv/2023-02-15.nc
U = /home/mambauser/data/uv/2023-02-16.nc
U = /home/mambauser/data/uv/2023-02-17.nc
U = /home/mambauser/data/uv/2023-02-18.nc
U = /home/mambauser/data/uv/2023-02-19.nc
U = /home/mambauser/data/uv/2023-02-20.nc
U = /home/mambauser/data/uv/2023-02-21.nc
U = /home/mambauser/data/uv/2023-02-22.nc
U = /home/mambauser/data/uv/2023-02-23.nc
U = /home/mambauser/data/uv/2023-02-24.nc
U = /home/mambauser/data/uv/2023-02-25.nc
U = /home/mambauser/data/uv/2023-02-26.nc
U = /home/mambauser/data/uv/2023-02-27.nc
U = /home/mambauser/data/uv/2023-02-28.nc
V = /home/mambauser/data/uv/2023-02-07.nc
V = /home/mambauser/data/uv/2023-02-08.nc
V = /home/mambauser/data/uv/2023-02-09.nc
V = /home/mambauser/data/uv/2023-02-10.nc
V = /home/mambauser/data/uv/2023-02-11.nc
V = /home/mambauser/data/uv/2023-02-12.nc
V = /home/mambauser/data/uv/2023-02-13.nc
V = /home/mambauser/data/uv/2023-02-14.nc
V = /home/mambauser/data/uv/2023-02-15.nc
V = /home/mambauser/data/uv/2023-02-16.nc
V = /home/mambauser/data/uv/2023-02-17.nc
V = /home/mambauser/data/uv/2023-02-18.nc
V = /home/mambauser/data/uv/2023-02-19.nc
V = /home/mambauser/data/uv/2023-02-20.nc
V = /home/mambauser/data/uv/2023-02-21.nc
V = /home/mambauser/data/uv/2023-02-22.nc
V = /home/mambauser/data/uv/2023-02-23.nc
V = /home/mambauser/data/uv/2023-02-24.nc
V = /home/mambauser/data/uv/2023-02-25.nc
V = /home/mambauser/data/uv/2023-02-26.nc
V = /home/mambauser/data/uv/2023-02-27.nc
V = /home/mambauser/data/uv/2023-02-28.nc
U_NAME = uo
V_NAME = vo
FILL_VALUE = 0
47 changes: 47 additions & 0 deletions duacs.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230717_20230723.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230718_20230724.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230719_20230725.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230720_20230726.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230721_20230727.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230722_20230728.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230723_20230729.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230724_20230730.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230725_20230731.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230726_20230801.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230727_20230802.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230728_20230803.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230729_20230804.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230730_20230805.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230731_20230806.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230801_20230807.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230802_20230808.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230803_20230809.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230804_20230810.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230805_20230811.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230806_20230812.nc
U = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230807_20230813.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230717_20230723.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230718_20230724.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230719_20230725.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230720_20230726.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230721_20230727.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230722_20230728.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230723_20230729.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230724_20230730.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230725_20230731.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230726_20230801.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230727_20230802.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230728_20230803.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230729_20230804.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230730_20230805.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230731_20230806.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230801_20230807.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230802_20230808.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230803_20230809.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230804_20230810.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230805_20230811.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230806_20230812.nc
V = /home/SHARED/SATLINK/fsle/duacs_converted/nrt_global_allsat_phy_l4_20230807_20230813.nc
U_NAME = ugos
V_NAME = vgos
FILL_VALUE = 0
16 changes: 16 additions & 0 deletions env.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: aviso-lagrangian
channels:
- fbriol
- conda-forge
dependencies:
- python=3.7
# https://github.com/CNES/aviso-lagrangian
- lagrangian==3.0.0
- netcdf4==1.5.1.2
- boost==1.71.0
- udunits2==2.2.28
# Evita error: ImportError: libnetcdf.so.13: cannot open shared object file: No such file or directory
# Referencia: https://github.com/conda-forge/vtk-feedstock/issues/85
- libnetcdf==4.6.2
- pip:
- python-dateutil==2.8.2
Loading