Intercoonecta / proy3-acustica

Importación en R de archivos netCDF generados por Echopype para su uso con paquete echogram
0 stars 0 forks source link

Error en calibración con echopype #6

Open emiliom opened 1 year ago

emiliom commented 1 year ago

@hvillalo me tomo la libertad de contestarte a tu mensaje de email aquí en github. Así no tendremos el problema de mi correo electrónico, y además otros podrán ver la respuesta directamente. Primero copio tu mensaje y pregunta:

No nos dio tiempo de incorporar tu código a lo que se presentó el día final, pero estoy tratando de hacerlo ahora y me da un error en la parte de calibración. De hecho, en nuestro script nunca pudimos agregar los parámetros ambientales por lo mismo. Esto ya lo probé tanto en mi PC de la oficina como en mi laptop:

Este es el mensaje cuando se incluye env_params (copia de la terminal):

Sv_ds = ep.calibrate.compute_Sv(
       ed, 
       waveform_mode = "CW", 
       encode_mode = "complex",
       env_params = {
           'temperature': 26.15, # en Centígrados
           'salinity': 34.96,    # en PSU
           'pressure': 50,       # en dbar (tomado del grupo Environment)
       },
       # cal_params=cal_params
)
AttributeError: 'float' object has no attribute 'coords'

Y si lo quitó funciona sin problema:

Sv_ds = ep.calibrate.compute_Sv(
       ed, 
       waveform_mode = "CW", 
       encode_mode = "complex",
)

Que podrá ser?

emiliom commented 1 year ago

He probado esto en mi computadora. Tengo malas y buenas noticias. La mala, es que en el JupyterHub por cuestiones digamos aleatorias de dependecias de librerías Python, la versión de echopype que fue instalada es 0.6.2, que es la anterior a la más reciente. Con esa versión, el código en mi notebook funciona bien. En cambio, con la versión actual, 0.6.3, obtengo el error que reportaste. Podrías confirmar la versión que tenés instalada? Eso lo podés hacer así: print(ep.__version__), asumiendo que importaste echopype usando import echopype as ep. Asumo que es 0.6.3.

La buena noticia es que estamos a punto de lanzar una nueva versión, 0.6.4. Para el martes a más tardar. En esta versión, mi notebook corre sin problemas! También resolvemos el problema mencionado en el notebook, el que obligó o pasar parámetros de calibración de una manera mucho más complicada.

hvillalo commented 1 year ago

Gracias! Efectivamente, es la v0.6.3. Esperaré el martes por la próxima.

hvillalo commented 1 year ago

Hola @emiliom, después de algunas dificultades ya instalé la v0.6.4 de echopype y todo parece funcionar mejor. Así modifiqué el código que nos compartiste:

def convertir_y_calibrar(raw_ruta):
    # convertir
    ed = ep.open_raw(raw_ruta, sonar_model='EK80')
    # calibrar
    Sv_ds = ep.calibrate.compute_Sv(
        ed, 
        waveform_mode='CW',
        encode_mode='complex',
        env_params = {
            'temperature': 26.15, # en Centígrados
            'salinity': 34.96,    # en PSU
            'pressure': 50,       # en dbar (tomado del grupo Environment)
        },
        # ver: https://echopype.readthedocs.io/en/stable/process.html
        cal_params = {
          'sa_correction': [0.02, 0],
          'gain_correction': [18.36, 18.7],
          'equivalent_beam_angle': [-12.5, -12.6]
        }
    )
    return Sv_ds 

Convierte y guarda los archivos, aunque me da un warning (por archivo):

C:\Users\Usuario\AppData\Local\R-MINI~1\envs\R-RETI~1\lib\site-packages\xarray\core\computation.py:727: RuntimeWarning: invalid value encountered in log10 result_data = func(*input_data)

Crees que sea algo a revisar o se podrá ignorar?

Gracias de nuevo!

emiliom commented 1 year ago

Hola @hvillalo . Te me adelantaste un poco. Efectivamente, usaste bien los parámetros de compute_Sv.

El warning es algo que podés ignorar. En efecto, hoy mismo hemos estado trabajando en eso, y ya identificamos la fuente de esos warnings. Para abordar esto mas un bug que se nos coló en el release, pensamos sacar otro release rápidamente, mañana. 0.6.4.1

Me alegra que te haya funcionado.