MIT-LCP / MIT-LCP/wfdb-python

OverflowError with rdann on LUED annotations w/numpy 2.2

Abierto
#522 3 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Jupyter Notebook
Estrellas
853
Forks
322
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Another area of incompatibility with numpy 2.2 I fear...

If I try

wfdb.rdann('physionet.org/files/ludb/1.0.0/1', extension='atr_ii')

or (for version 1.0.1)

wfdb.rdann('physionet.org/files/ludb/1.0.1/1', extension='ii')

I get:

---------------------------------------------------------------------------
OverflowError                             Traceback (most recent call last)
Cell In[38], line 2
      1 # os.path.join(folder_path, str(pid))
----> 2 wfdb.rdann('physionet.org/files/ludb/1.0.0/1', extension='atr_ii')

File ~/miniconda3/envs/pytorch-aline/lib/python3.12/site-packages/wfdb/io/annotation.py:1953, in rdann(record_name, extension, sampfrom, sampto, shift_samps, pn_dir, return_label_elements, summarize_labels)
   1950 filebytes = load_byte_pairs(record_name, extension, pn_dir)
   1952 # Get WFDB annotation fields from the file bytes
-> 1953 (sample, label_store, subtype, chan, num, aux_note) = proc_ann_bytes(
   1954     filebytes, sampto
   1955 )
   1957 # Get the indices of annotations that hold definition information about
   1958 # the entire annotation file, and other empty annotations to be removed.
   1959 potential_definition_inds, rm_inds = get_special_inds(
   1960     sample, label_store, aux_note
   1961 )

File ~/miniconda3/envs/pytorch-aline/lib/python3.12/site-packages/wfdb/io/annotation.py:2154, in proc_ann_bytes(filebytes, sampto)
   2146 # Process annotations. Iterate across byte pairs.
   2147 # Sequence for one ann is:
   2148 # - SKIP pair (if any)
   2149 # - samp + sym pair
   2150 # - other pairs (if any)
   2151 # The last byte pair of the file is 0 indicating eof.
   2152 while bpi < filebytes.shape[0] - 1:
   2153     # Get the sample and label_store fields of the current annotation
-> 2154     sample_diff, current_label_store, bpi = proc_core_fields(filebytes, bpi)
   2155     sample_total = sample_total + sample_diff
   2156     sample.append(sample_total)

File ~/miniconda3/envs/pytorch-aline/lib/python3.12/site-packages/wfdb/io/annotation.py:2240, in proc_core_fields(filebytes, bpi)
   2238 # Not a skip - it is the actual sample number + annotation type store value
   2239 label_store = filebytes[bpi, 1] >> 2
-> 2240 sample_diff += int(filebytes[bpi, 0] + 256 * (filebytes[bpi, 1] & 3))
   2241 bpi = bpi + 1
   2243 return sample_diff, label_store, bpi

OverflowError: Python integer 256 out of bounds for uint8

Using the command line rdann works fine, and it works after downgrading numpy 1.26. Seems likely related to #493 ?

Pertinent versions:
wfdb-python == 4.1.2
numpy == 2.2.1 (broken)
numpy == 1.26.4 (works)
python == 3.12

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en wfdb/io/annotation.py, en rdann, proc_ann_bytes y proc_core_fields, donde el traceback llega al desbordamiento de uint8. Ejecuta los ejemplos de rdann de LUDB con NumPy 2.2.1 y 1.26.4, y verifica después que la carga de las anotaciones se complete sin OverflowError en la versión más reciente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
numpy, python
Área
data
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.