OverflowError with rdann on LUED annotations w/numpy 2.2
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
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.
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
- Dominant language
- Jupyter Notebook
- Stars
- 853
- Forks
- 322
- PR merge metrics
- No merged PRs in 30d
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.
More from MIT-LCP/wfdb-python
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
MIT-LCP/wfdb-python#568 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
MIT-LCP/wfdb-python#557 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 58/100
MIT-LCP/wfdb-python#554 ·
-
WFDB path ignored Open
Difficulty 4/5 3-5 days Newbie friendliness 35/100
MIT-LCP/wfdb-python#545 ·
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
MIT-LCP/wfdb-python#540 ·
All issues in MIT-LCP/wfdb-python
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
openml/openml-python#1749 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
desihub/desisurveyops#486 · 3 comments ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
scverse/spatialdata#1256 ·