-
Notifications
You must be signed in to change notification settings - Fork 2
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
Hackathon 24: py-eddy-tracker installation #2
Comments
Hola @ctroupin . Tenés un archivo environment o requirements para crear este entorno, o la lista de paquetes y sus versiones que especificaste explícitamente al crear el entorno? Gracias por esta información, y por crear este issue separado. Seguiré probando con un par de ideas. Añado aquí el enlace a pyeddytracker, para tenerlo a mano: https://github.com/AntSimi/py-eddy-tracker |
Es curioso porque a partir de esta lista de paquetes, intenté crear un nuevo entorno virtual, instalando los paquetes con import py_eddy_tracker
import datetime
from py_eddy_tracker.dataset.grid import RegularGridDataset
# Test file can be obtained from https://dox.ulg.ac.be/index.php/s/N24PF6T8LyB3lsx
testfile = "cmems_obs-sl_glo_phy-ssh_my_allsat-l4-duacs-0.25deg_P1D_1731685959908.nc"
h = RegularGridDataset(testfile, "longitude", "latitude")
h.bessel_high_filter("adt", 500, order=3)
a, c = h.eddy_identification(
"adt",
"ugos",
"vgos", # Variables used for identification
datetime.datetime(2023, 1, 5), # Date of identification
0.001, # step between two isolines of detection (m)
pixel_limit=(5, 500), # Min and max pixel count for valid contour
shape_error=55, # Error max (%) between ratio of circle fit and contour
)
if len(a) == 0:
print("There is a problem somewhere")
else:
print(f"Found {len(a)} eddies") tengo un nuevo error: numba.core.errors.NumbaTypeError: Unsupported array type: numpy.ma.MaskedArray. Sigo investigando. |
Gracias por esa información. No se ve prometedor. Lo que yo pensaba (pienso) hacer es crear un entorno de conda en mi computadora, con pyeddytracker y nada más, a ver que pasa. Supongo que eso es lo que hiciste en tu última prueba. Nada más que quiero evitar tener que clonar el repositorio, porque creo que eso no es algo que puedo reproducir en el sistema de creación de entornos del hub. |
Sí, así empece, solo con Hice tantas pruebas que no apunte correctamente los pasos para tener un entorno que funciona, solo tengo la lista de paquetes + versiones obtenidos con |
Good news: ahora sí tengo un entorno que funciona sin problema: asciitree==0.3.3
asttokens==2.4.1
certifi==2024.8.30
cftime
charset-normalizer==3.4.0
comm==0.2.2
contourpy
cycler==0.12.1
debugpy==1.8.8
decorator==5.1.1
exceptiongroup==1.2.2
executing==2.1.0
fasteners==0.19
flexcache==0.3
flexparser==0.4
fonttools==4.55.0
idna==3.10
ipykernel==6.29.5
ipython==8.29.0
jedi==0.19.2
jupyter_client==8.6.3
jupyter_core==5.7.2
kiwisolver==1.4.7
llvmlite
matplotlib==3.7.1
matplotlib-inline==0.1.7
nest-asyncio==1.6.0
netCDF4
numba==0.55.2
numcodecs==0.13.1
numpy
opencv-python
packaging==24.2
parso==0.8.4
pexpect==4.9.0
pillow==11.0.0
Pint
platformdirs==4.3.6
Polygon3==3.0.9.1
prompt_toolkit==3.0.48
psutil==6.1.0
ptyprocess==0.7.0
pure_eval==0.2.3
pyEddyTracker==3.5.0
Pygments==2.18.0
pyparsing==3.2.0
python-dateutil==2.9.0.post0
pytz==2024.2
PyYAML==6.0.2
pyzmq==26.2.0
requests==2.32.3
scipy
six==1.16.0
stack-data==0.6.3
tornado==6.4.1
traitlets==5.14.3
typing_extensions==4.12.2
tzdata==2024.2
urllib3==2.2.3
wcwidth==0.2.13
xarray
zarr
Todo eso con Python 3.10.12, ahora hago la misma prueba con la misma versión de Python (3.12.7) que tenemos en el cloud de 2i2c. Edit: Python 3.12 necesita al menos numba.core.errors.NumbaTypeError: Unsupported array type: numpy.ma.MaskedArray. Lo mismo con |
Fantastico @ctroupin ! El Python actual en el hub es 3.12, pero podemos bajarlo a 3.11. Me parece que Matplotlib 3.7* no es compatible con Python 3.12. Podrias probarlo con Python 3.11? |
Okay ahora/hoy hago las prubas con el 3.11. |
De momento no lo consigo: los problemas aparecen por las versiones de Collecting numba<0.57 (from -r requirements.txt (line 29))
Downloading numba-0.56.4.tar.gz (2.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 629.6 kB/s eta 0:00:00
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [8 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/tmp/pip-install-y1cok1k7/numba_e706d8d287644f00b2df387db600d4ac/setup.py", line 51, in <module>
_guard_py_ver()
File "/tmp/pip-install-y1cok1k7/numba_e706d8d287644f00b2df387db600d4ac/setup.py", line 48, in _guard_py_ver
raise RuntimeError(msg.format(cur_py, min_py, max_py))
RuntimeError: Cannot install on Python version 3.11.5; only versions >=3.7,<3.11 are supported.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details. |
Ni modo. Dejame pensar e investigar sobre basar el entorno de R en Python 3.10. Mientras tanto, podrías crear un nuevo entorno on Python 3.10 donde especificás nada más una lista mínima de los paquetes necesarios (que obviamente instalan otras dependedencias), con su version pinning necesaria? Preferiblemente que la mayoría de los paquetes vengan de conda-forge, y solo de PyPI lo absolutamente necesario. Gracias! |
He probado lo siguiente, y funcionó:
No tuve que especificar versiones de paquetes, excepto conda create -n Eddy python=3.10
conda activate Eddy
conda install numpy
conda install matplotlib==3.7.1
conda install scipy
conda install opencv-python
conda install pyyaml
conda install pint
conda install polygon3
pip install pyEddyTracker Con eso tenemos el eddy-tracking funcionando. Después falta instalar otros paquetes: conda install xarray
conda install cartopy
pip install cmocean |
Gracias @ctroupin ! Trataré de trabajar en esto hoy cuando lleguemos a la fase de proyectos. Te mantengo al tanto. |
Gracias @emiliom. Si tengo tiempo unos de estos días hablaré con los desarrolladores de pyEddyTracker para ver si podemos ayudar a resolver el problema de compatibilidad con las últimas versiones de matplotlib. |
He estado trabajando continuamente en esto, y está muy complicado. No lo mencionaste en tus últimos mensajes (aunque sí antes), pero la restricción de numba es ahorita el problema principal. Si no impongo version pinning de numba, me topo con el error que reportaste antes, Sigo probando unas alternativas, pero estoy cerca de darme por vencido. Lo que tendremos que explorar es el uso de un entorno personalizado en el hub. Desgraciadamente conda en sí no está disponible en el hub (explico luego), pero tengo instrucciones. |
Mala suerte, ya pensaba que trabajando con Python 3.10, solucionamos el tema de Lo que haré es que pediré a los participantes del proyecto "remolinos" de pasarme los ficheros que han bajado, prepararé yo la detección de remolinos, y les devolveré los resultados que podrán procesar. gracias por la ayuda, y siento de nuevo estas dificultadas inesperadas. |
Ahora sí, oficialmente me doy por vencido 😞 . Lo siento! Luego les envío información sobre la creación de entornos personalizados. |
@ctroupin tengo noticias alentadoras en cuanto a la creación de un entorno personalizado en el hub, que funcione con pyeddytracker. He logrado crear uno en mi computadora, que corre el código que pusiste arriba (#2 (comment)) -- después de encontrar, y resolver, un problema más, esta vez con la dependencia flexparser . Usé el archivo Para comprobar que funciona completamente, podrías añadir código para generar una figura con remolinos, para yo poder tratar de reproducirlo en mi computadora? En cuanto a la creación de entornos personalizados en el hub, te adelanto que no podemos usar conda. El entorno de Python ha sido creado con un nuevo sistema que se llama pixi (https://pixi.sh), que utiliza paquetes de conda, pypi, etc. Si mis pruebas funcionas, te enviaré las instrucciones y creo que no será muy complicado compartirlo con todos los miembros del proyecto. |
Okay perfecto, pues ejemplo de código import cartopy.crs as ccrs
# Cambiar si cambiamos de región
mainproj = ccrs.Mercator(central_longitude=-60.0, min_latitude=-70.0, max_latitude=40.0)
datacrs = ccrs.PlateCarree()
fig = plt.figure(figsize=(12, 8))
ax = plt.subplot(111, projection=mainproj)
ax.gridlines(draw_labels=True, zorder=3)
ax.coastlines(lw=.5)
a.display(ax, color="b", linewidth=0.5, transform=ccrs.PlateCarree(), label="Anticiclónicos")
c.display(ax, color="r", linewidth=0.5, transform=ccrs.PlateCarree(), label="Ciclónicos")
plt.legend()
plt.show() |
@ctroupin desgraciadamente me topé de nuevo con un problema al tratar de crear el entorno en el hub, esta vez con el último paso, la instalación de pyeddytracker. No me lo esperaba, y no sé si voy a poder resolver esto. Trataré. |
@ctroupin la saga continúa. Con ayuda del experto en el hub y pixi de oceanhackweek, logré crear el entorno personalizado! Puedo importar pyeddytracker y correr estas dos operaciones: h = RegularGridDataset(testfile, "longitude", "latitude")
h.bessel_high_filter("adt", 500, order=3) Pero la linea Si querés probarlo directamente, en el hub andá a la ruta No seguiré trabajando en esto hoy. |
Gracias @emiliom , ahora examino eso. |
Aquí van las versiones de los paquetes en un entorno
por si ayuda.
The text was updated successfully, but these errors were encountered: