OverflowError with rdann on LUED annotations w/numpy 2.2
Nobody has claimed this yet.
- Dominant language
- Jupyter Notebook
- Stars
- 853
- Forks
- 322
- PR merge metrics
- No merged PRs in 30d
Description
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
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in wfdb/io/annotation.py at rdann, proc_ann_bytes, and proc_core_fields, where the traceback reaches the uint8 overflow. Run the LUDB rdann examples with NumPy 2.2.1 and 1.26.4, then verify that annotation loading completes without OverflowError under the newer version.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- numpy, python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100