# MoonEDF：保留多采样率与间断的事件窗口工具库

## 谁会用，解决什么问题

在MoonBit中构建采集记录回放、科研导入或事件复核工具的开发者。
目标任务：读取EDF/BDF与TAL事件，按事件前后时间选多通道样本，导出带原记录号、采样时间和物理单位的长表。

不同通道采样率不同，记录还可能中断；简单截数组或补零会制造不存在的连续时间线，破坏事件对齐。

## 为什么不只是换一种语言重写解析器

时间窗口、通道选择、记录裁剪、数字/物理换算、TAL解析是可组合公共API，适用于调用方自己的文件和事件，不绑定某一设备或信号类别。

已有替代：[PyEDFlib](https://pyedflib.readthedocs.io/en/latest/)。需要成熟Python生理信号分析链时应继续使用其生态。本库提供MoonBit内的记录/时间语义处理，不要求运行时加载PyEDFlib；不是宣称比其分析能力更全。
“可以用MoonBit实现”不是需求证明；价值成立的前提是调用方确实需要在MoonBit程序内复用这些处理能力。

## 0.2.0公开记录与核心变化

现有合成例子之外，已核验PhysioNet官方哈希文件：64通道125秒30事件。新增核心event_window，支持事件索引、多通道共享限额、明确partial结果和100ns边界；独立对照见 [PUBLIC-EEG](docs/PUBLIC-EEG.md)。公开采集记录并不代表本项目有客户；旧基线例子保留如下。

## 评审可直接运行的证据

在仓库根目录运行（无需Python参考工具）：

```sh
moon run examples/time_window --target js
moon run examples/time_window --target wasm-gc
```

预期：查询[0.5,3.0)秒，快/慢通道分别6/3个样本；[1.25,2.25)秒间断不补零、不压缩，保留原记录与样本索引。
这是合成数据的可复现示范，不是客户案例。
处理自己的真实文件见[完整工作流](docs/TIME-WINDOWS.md)；[公共API](pkg.generated.mbti)供其他MoonBit项目导入。
独立数值/互操作验证入口：[tools/test-time-window.py](tools/test-time-window.py)；已有回执：[检查记录](evidence/time-window-20260922.json)。
测试数量仅表示覆盖，不能代替实用价值或用户需求证明。

## 通用性与不能承诺的内容

窗口输出样本/CSV，不宣称任意样本级裁剪后重新生成EDF；不做滤波、分类或医学诊断。间断+D不能冒充已经过PyEDFlib对照的范围，另有独立结构参考。
没有真实患者/设备部署证明，不能把合成事件示例写成临床落地。
本项目不声称“生态首个/唯一/此前没有任何实现”；公开搜索也不能证明不存在同类项目。
所有比较限于可核验功能和部署条件；发现MoonBit同类项目时应逐项比较API/语义/边界，不以语言名或包装差异算独立价值。

## 交付状态

本地实现、可运行示例和独立参考证据与公开发布是两回事。
模块命名空间为 peng-jun21/edf，与公开仓库及 Mooncakes 账号一致。
仓库可匿名克隆、默认分支内容、对应SHA的CI和正式链接需在提交时核对；不能用个人主页或历史截图代替。
