Skip to main content

PPG数据分析命令行工具库

Project description

GHealth Tools

PPG(光电容积脉搏波)数据分析命令行工具库,支持数据转换、可视化、分类等功能。

安装

pip install ghealth-tools

或从源码安装:

git clone https://github.com/yourusername/health_tools.git
cd health_tools
pip install -e .

快速开始

# 查看帮助
ghealth_tool --help

# 查看版本
ghealth_tool --version

命令

parse - 日志解析

将原始日志文件解析为CSV格式。

# 使用解析规则文件
ghealth_tool parse -i raw.log -o output.csv -r parse/gh3220.yaml

# 使用芯片规则
ghealth_tool parse -i raw.log -o output.csv --chip gh3220

# 批量处理目录
ghealth_tool parse -i logs/ -o output/ -r parse/default.yaml -v

plot - 数据可视化

绘制PPG数据的时域/频域图。

# 绘制时域和频域图
ghealth_tool plot -i data.csv -o plots/ --type both --sample-rate 100

# 仅绘制时域图
ghealth_tool plot -i data.csv -o plots/ --type time --channels red,ir

# 指定窗口和重叠率
ghealth_tool plot -i data.csv -o plots/ --window 10 --overlap 0.75

classify - 数据分类

根据规则对数据进行分类保存。

# 使用分类规则
ghealth_tool classify -i data/ -o classified/ -r classify/default.yaml

# 生成分类报告
ghealth_tool classify -i data/ -o classified/ -r classify/default.yaml --report

# 移动文件而非复制
ghealth_tool classify -i data/ -o classified/ -r classify/default.yaml --move

convert - 格式转换

CSV格式转换(紧凑型↔展开型,芯片特定格式)。

# 使用转换规则
ghealth_tool cv -i input.csv -o output.csv -r convert/my_rule.yaml

# 合并多个文件
ghealth_tool cv -i data/ -o merged.csv -r convert/rule.yaml --merge

# 按大小分割
ghealth_tool cv -i large.csv -o split/ -r convert/rule.yaml --split 10000

# 生成规则模板
ghealth_tool convert --init-rule -c gh3220 -o my_convert_rule.yaml

factory - 产测计算

计算 SNR/CTR/Noise,支持芯片规则自动提取增益和灯电流。

# 单文件计算
ghealth_tool fac -i data.csv -c gh3036_evk

# 目录批量计算
ghealth_tool fac -i data_dir/ -c gh3036_evk -v

# 指定增益和电流
ghealth_tool fac -i data.csv -c gh3036 --gain 10 --current 25.0

# 覆盖默认时长配置
ghealth_tool fac -i data.csv -c gh3036_evk --snr-cfg "5,5,60" --ctr-cfg "1,0,2"

info - 信息查看

查看数据文件或规则文件信息。

# 查看CSV文件信息
ghealth_tool info data.csv --stats --preview 20

# 查看规则文件
ghealth_tool info rules/chip/gh3220.yaml --schema

validate - 规则验证

验证YAML规则文件格式和内容。

# 验证规则文件
ghealth_tool validate rules/chip/gh3220.yaml

# 严格模式验证
ghealth_tool validate rules/parse/gh3220.yaml --strict

规则文件

芯片规则 (rules/chip/*.yaml)

定义CSV文件的格式和产测计算参数:

version: "1.0"
chip: gh3220

csv:
  info_row: 1
  header_row: 2
  data_start_row: 3
  delimiter: ","
  encoding: "utf-8"

columns:
  - TimeStamp
  - FRAME_ID
  - CH{0-15}

factory_columns:         # 产测计算列
  - CH{0-15}

factory_config:          # 各指标独立时长配置
  sample_rate: 100
  snr:
    skip_head_seconds: 10
    skip_tail_seconds: 10
    min_duration_seconds: 90
  ctr:
    skip_head_seconds: 1
    skip_tail_seconds: 0
    min_duration_seconds: 2
  noise:
    skip_head_seconds: 2
    skip_tail_seconds: 0
    min_duration_seconds: 4

chip_info:
  adc_full_scale: 8388608
  adc_offset: 8388608
  adc_vref: 1.8
  tia_ratio: 2

解析规则 (rules/parse/*.yaml)

定义如何解析日志文件:

version: "1.0"
description: "GH3220日志解析规则"

regex: '^\[(.+?)\]\s+GH3220:\s*(\d+),(\d+),(\d+),(\d+)$'

columns:
  - timestamp
  - red
  - ir
  - green
  - aux

分类规则 (rules/classify/*.yaml)

定义数据分类规则:

version: "1.0"

filename:
  regex: '(\d{8})_(\w+)_(\w+)\.csv'
  fields:
    - date
    - subject
    - motion

data_columns:
  - name: motion
    source: filename
    match:
      supine: ["supine", "lie"]
      sit: ["sit", "sitting"]

structure:
  supine: ""
  sit: ""

rules:
  - target: "{motion}"
    use_filename: true

转换规则 (rules/convert/*.yaml)

定义CSV格式转换,支持列映射、前值填充、频率扩展:

version: "1.0"
target_chip: gh3220

csv:
  info_row: 0            # 信息所在行(0=无)
  header_row: 1          # 列名所在行
  data_start_row: 2      # 数据开始行
  delimiter: ","

column_mapping:
  time: TimeStamp
  acc[0]: ACCX           # [] 为字面量列名
  rawdata{0-15}: CH{0-15}  # {} 展开为 rawdata0->CH0, rawdata1->CH1, ...

forward_fill:
  - polar_HR             # 0值用前一个非0值填充

expand_repeat:
  polar_HR: 25           # 每个值重复25次匹配采样率

列名展开语法

使用 {start-end} 进行范围展开,[] 保留为字面量:

columns:
  - CH{0-15}             # 展开为 CH0, CH1, ..., CH15
  - ALGO{0-1}_CH{0-2}   # 多段展开: ALGO0_CH0, ALGO0_CH1, ..., ALGO1_CH2

column_mapping:
  rawdata[{0-1}]: Rawdata{0-1}  # rawdata[0]->Rawdata0, rawdata[1]->Rawdata1
  acc[0]: ACCX                   # acc[0] 是字面量列名

内置芯片规则

芯片 文件 描述
GH3220 rules/chip/gh3220.yaml Goodix PPG传感器
GH3036 rules/chip/gh3036.yaml Goodix健康传感器
GH3036_EVK rules/chip/gh3036_evk.yaml GH3036 评估板

开发

环境设置

# 克隆仓库
git clone https://github.com/yourusername/health_tools.git
cd health_tools

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或
.\venv\Scripts\activate  # Windows

# 安装开发依赖
pip install -e ".[dev]"

运行测试

pytest

代码格式化

black src/
ruff check src/

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ghealth_tools-0.4.13.tar.gz (101.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ghealth_tools-0.4.13-py3-none-any.whl (111.4 kB view details)

Uploaded Python 3

File details

Details for the file ghealth_tools-0.4.13.tar.gz.

File metadata

  • Download URL: ghealth_tools-0.4.13.tar.gz
  • Upload date:
  • Size: 101.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ghealth_tools-0.4.13.tar.gz
Algorithm Hash digest
SHA256 cb80e5afc54cce5e033ff9a494399d72208e95ef115b000219c39ee6bb02ab14
MD5 63740866b63a74c9dce33fc53ff2b591
BLAKE2b-256 1411d90b0b5f72375d45e88b9009e2ad6d275a6b17fadb302cd8ca004f9b9ac7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghealth_tools-0.4.13.tar.gz:

Publisher: ci.yml on XiaoPb/health_tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghealth_tools-0.4.13-py3-none-any.whl.

File metadata

  • Download URL: ghealth_tools-0.4.13-py3-none-any.whl
  • Upload date:
  • Size: 111.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ghealth_tools-0.4.13-py3-none-any.whl
Algorithm Hash digest
SHA256 7fd86652c4b251d6737a6f7e7ed6108405ffa121e432c89e15b88f9e3b1ad95c
MD5 6ee9f9bab51332abd9123ea7d3a6e353
BLAKE2b-256 712cf469dbb9ef9fca44991156e62d55cb0ee49dba7529dd5cf09922b773633b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghealth_tools-0.4.13-py3-none-any.whl:

Publisher: ci.yml on XiaoPb/health_tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page