wfdb-python icon indicating copy to clipboard operation
wfdb-python copied to clipboard

wfdb.io._url.NetFileNotFoundError: 404 Error: Not Found for url: https://physionet.org/files/ecg-arrhythmia/1.0.0/WFDBRecords/01/010/.hea

Open windowshopr opened this issue 1 year ago • 0 comments

import os
import wfdb

for db in wfdb.get_dbs():
    print(db)

def download_dataset_from_physionet(dataset_name: str):
    # https://wfdb.readthedocs.io/en/latest/io.html#module-1
    print(f"Downloading {dataset_name} dataset from PhysioNet...")
    if not os.path.exists("physionet"):
        os.makedirs("physionet")
    if not os.path.exists("physionet/" + dataset_name):
        os.makedirs("physionet/" + dataset_name)
    
    wfdb.dl_database(db_dir=dataset_name,
                     dl_dir=os.path.join(os.getcwd(), "physionet", dataset_name),
                     records='all',
                     annotators='all',
                     keep_subdirs=True,
                     overwrite=False)
    print(f"Downloaded {dataset_name} dataset from PhysioNet!")

# Download the MIT-BIH dataset
download_dataset_from_physionet("mitdb") # This one downloads

# Download the ECG arrhythmia dataset
download_dataset_from_physionet("ecg-arrhythmia") # This one doesn't, see traceback below

...
['ecg-arrhythmia', 'A large scale 12-lead electrocardiogram database for arrhythmia study']
.....

Downloading mitdb dataset from PhysioNet...
Downloading ecg-arrhythmia dataset from PhysioNet...
Generating list of all files for: WFDBRecords/01/010/
Traceback (most recent call last):
  File "I:\nasty\Python_Projects\Healthcare\ECG_Classification_Scholarship_Project\main.py", line 27, in <module>
    download_dataset_from_physionet("ecg-arrhythmia")
  File "I:\nasty\Python_Projects\Healthcare\ECG_Classification_Scholarship_Project\main.py", line 15, in download_dataset_from_physionet
    wfdb.dl_database(db_dir=dataset_name,
  File "C:\Users\chalu\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfdb\io\record.py", line 3065, in dl_database  
    record = rdheader(
             ^^^^^^^^^
  File "C:\Users\chalu\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfdb\io\record.py", line 1847, in rdheader     
    header_content = download._stream_header(file_name, pn_dir)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\chalu\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfdb\io\download.py", line 109, in _stream_header
    content = f.read()
              ^^^^^^^^
  File "C:\Users\chalu\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfdb\io\_url.py", line 581, in read
    result = b"".join(self._read_range(start, end))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\chalu\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfdb\io\_url.py", line 474, in _read_range     
    with RangeTransfer(self._current_url, req_start, req_end) as xfer:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\chalu\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfdb\io\_url.py", line 168, in __init__        
    self._parse_headers(method, self._response)
  File "C:\Users\chalu\AppData\Local\Programs\Python\Python311\Lib\site-packages\wfdb\io\_url.py", line 214, in _parse_headers  
    raise cls(
wfdb.io._url.NetFileNotFoundError: 404 Error: Not Found for url: https://physionet.org/files/ecg-arrhythmia/1.0.0/WFDBRecords/01/010/.hea

Seems to be trying to find a filename that doesn't exist? When you navigate to https://physionet.org/files/ecg-arrhythmia/1.0.0/WFDBRecords/01/010 there are files in there, but the code is looking for .hea which doesn't exist?

windowshopr avatar Nov 01 '24 18:11 windowshopr