使用mne模块读取edf文件


class AnalysisEdf(object):
  '''脑电波解析'''
    def __init__(self, path):
        self.f = mne.io.read_raw_edf(path)
        self.labels = self.f.ch_names
        self.timestart = self.f.times[-1]

    def get_data_file(self, name=None, t_min=0, t_max=10):
        """
        获取不同波形的坐标,默认取第一个波形图
        """
        if name is None:
            name = self.labels[0]
        sfreq = int(self.f.info['sfreq'])
        sample_rate = self.f.get_data(name, t_min * sfreq, t_max * sfreq)
        data_list = list(enumerate(sample_rate[0]))
        return {name: data_list}
        
async def get_edf_wave(user_id, key, bucket, start_time, end_time, name, s3, ROOT):
’‘’获取脑电波‘’‘
    if not user_id:
        return {'error': 'no data'}
    if not isinstance(start_time, int) or not isinstance(end_time, int):
        return {'error': 'type error'}
    save_path = pathlib.Path(ROOT, 'datasets/brain_wave', str(user_id), key)
    logger.log(25, f'get_brain_wave: {save_path}')
    if not save_path.parent.exists():
        save_path.parent.mkdir(parents=True)
    if not save_path.exists():
        try:
            async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
                async with session.get(s3.get_show_file_url(bucket, key)) as response:
                    response = await response.read()
            save_path.write_bytes(response)
        except Exception as e:
            logger.exception(f"download edf error:", str(e))
            return 2
    try:
        edf = AnalysisEdf(save_path.as_posix())
    except Exception as e:
        logger.exception(f"download edf error:", str(e))
        return 3
    if end_time > edf.timestart:
        end_time = edf.timestart
    if start_time > end_time:
        start_time = end_time - 20
    if end_time - start_time > 120:
        end_time = start_time + 120
    data_list = edf.get_data_file(name, start_time, end_time)
    return {'data': data_list, 'total_time': edf.timestart, 'labels': edf.labels}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值