edfrd是一个python 3软件库,用于读取和写入edf文件。

edfrd的Python项目详细描述


edfrd

edfrd是一个python 3软件库,用于readwriteedf文件。

它被设计为一个低级库,在任何可能的情况下都不会解释edf数据。因此,EDFRD可以 读取文件,即使头中包含非标准值。

使用numpy将数据记录加载为int16数组。

安装

pip3 install --user edfrd

读取EDF标题和数据记录

fromedfrdimportread_header,read_data_recordsfile_path='PATH/TO/FILE.edf'header=read_header(file_path)print(header)fordata_recordinread_data_records(file_path,header):# generator# iterate through data_recordsbreakforsignalindata_record:# iterate through signal arrays of a single data_recordprint(signal.size)forsignal_header,signalinzip(header.signals,data_record):# iterate through signal headers and signal arraysprint(signal_header.label,signal.size)

如果EDF文件的头没有正确指定数据记录的数量,可以使用以下选项 从文件大小计算。

header=read_header(file_path,calculate_number_of_data_records=True)

您可以尝试将startdate_of_recordingstarttime_of_recording解析为整数元组。如果解析失败 将返回原始字符串。

header=read_header(file_path,parse_date_time=True)day,month,year=header.startdate_of_recordinghours,minutes,seconds=header.starttime_of_recording

可以通过指定可选的startend索引来限制读取的数据记录数。

fordata_recordinread_data_records(file_path,header,start=0,end=header.number_of_data_records):break

要处理比数据记录提供的更大的信号块,请考虑创建一个新的numpy数组作为 buffer

importnumpyasnpfromedfrdimportread_header,read_data_recordsfile_path='PATH/TO/FILE.edf'header=read_header(file_path)start,end=2,4signal_index=0signal_header=header.signals[signal_index]buffer_length=(end-start)*signal_header.nr_of_samples_in_each_data_recordbuffer=np.empty(buffer_length,dtype=np.int16)pointer=0fordata_recordinread_data_records(start,end):buffer[pointer:pointer+signal_header.nr_of_samples_in_each_data_record]=data_record[signal_index]pointer+=signal_header.nr_of_samples_in_each_data_recordprint(buffer)

您还可以传递文件描述符(fr),而不是字符串(file_path)。注意read_data_records将 从当前字节位置继续,其中read_header已停止,而不执行额外的查找操作。

withopen(file_path,'rb')asfr:header=read_header(fr)fordata_recordinread_data_records(fr,header):break

写入EDF头和数据记录

fromedfrdimportread_header,read_data_records,write_header,write_data_recordsfile_path='PATH/TO/FILE.edf'new_file_path='PATH/TO/NEW_FILE.edf'header=read_header(file_path)data_records=read_data_records(file_path,header)write_header(file_path,header)write_data_records(file_path,data_records)

同样,可以使用文件描述符(frfw)。

withopen(file_path,'rb')asfr:header=read_header(fr)data_records=read_data_records(fr,header)withopen(new_file_path,'wb')asfw:write_header(fw,header)write_data_records(fw,data_records)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaJSonarray不会从SeekBar读取double   使用另一个类从Java中的2D数组打印用户输入   java ClassNotFoundException的原因   spring调用两个方法以返回Java中的不同页面   httpurlconnection Java禁止的代码错误,但浏览器错误(2)   java画布矩阵转换   java:在另一个java映射中使用“Map”作为值   java“未找到用于解密的证书”(Apache CXF,WSSecurity)   java如何查看JTable中选择的行   java在没有xmlwrappers的情况下重复xml元素序列集   java将垂直直方图打印到控制台   java Spring JDBCTemplate:构造不带特殊字符的JSON   java PayPal RestApi获取用户信息