Files
CADx-4/WORK_LOG.md
T
iomgaa 9a916c65a5 feat(ceus): 任务书 02 第一阶段——底层和分割之前的算法;修复 C14
任务书 01 遗留修复(C14):
- library 新增 check_key_image(path):关键图能逐像素保真重编码时返回 None,否则返回原因;
  _write_clean_png 的判断移过去,自身保留断言性质报错(走到这里说明 build 漏了检查)。
- build 写库前对每例调用,返回原因的整例跳过,记 C14「关键图能原样重编码」,涉及值写原因。
- 原来三条「关键图格式不对整次构建停下」的测试改为整例跳过,另加非 PNG、library 漏检报错两条。
- 结构.md 第八部分、guides/装配两个库.md 相应几行改掉。

第一阶段(src/cadx/ceus/):
- 照搬旧 geometry、video_decoder、research_config、split_screen、green_prompt、prompt_frames、
  mapping,去掉产品层,注释改中文。
- 配置类去掉全部默认值,strict、extra=forbid、frozen;新建 config/ceus.yaml(paths、ceus 两段),
  数值照抄旧 yaml,逐项注明出处。删去 source_view/target_view、effective_region、mapping 锚点;
  旧代码写死的分屏抽帧数 25 和搜索区间 (0.35, 0.65) 改成配置,值不变。
- 视频解码改为按路径用 cv2 逐帧读。
- 坐标换算改为两个视图矩形左上角之差,不再用按某种宽度写死的锚点。
- 造影画面在哪一半:两半各自选提示帧,恰好一半有才定,否则抛 ContrastSideError(CeusCaseError
  子类,带步号和原因,供第三阶段记 failed.csv)。
- 旧测试照搬(改 import 与配置读取方式),因上述改动不再成立的删去;新增两处修改的手算测试。
- import-linter 加「ceus 不引用其他 cadx 模块」。依赖加 numpy、opencv-python-headless。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 03:46:56 -04:00

5.5 KiB
Raw Blame History

工作记录

只记当前状态。一个阶段完成后压缩成几行,细节看提交说明和 research-wiki/。

当前目标

第 3 步 CEUS 定量,按任务书 02 分四个阶段做;第一阶段(底层和分割之前的算法)与 C14 修复已提交,下一个是第二阶段(MedSAM2 与后半段算法)。

已完成

  • 2026-10-15 盘点旧项目(远程 CADx-4-CAD)与两个参考项目(ClinDB-ReviewBench、dissect3),结论写进 research-wiki/design/0001-从产品重构为研究原型.md。

  • 2026-10-15 旧项目复制到 reference/CADx-4-CAD/:工作区(含没进 git 的 debugs/t1_local_debug.py、debugs/medsam2_local_track.py 和 tic_lognormal_replay.py 的未提交改动)加 git fetch 恢复的 366 个提交、5 个远程分支。

  • 2026-10-15 data/ 同步完成:交付包_20260908_40例(124 个文件)、1.2-TEST(1460 个文件),文件数与文件总字节数(4,034,244,118)和远程一致。

  • 2026-10-15 骨架(三份新文档过了一轮「硕士生阅读」并按意见修订):AGENTS.md、CLAUDE.md、research-wiki/ 目录与 README.md、explanation/结构.md、design/0001、guides/开发环境.md;uv 工具链、make sync/fmt/test/check、pre-commit。make check 通过(1 项测试、1 条导入契约)。提交 5eb38df(工具链)、1f7a6a3(文档)。

  • 2026-10-15/16 深读旧项目三条线(CEUS 算法、资料与答案隔离、会诊与评价),两位中立评审独立评了存储与迁移方案;结论落成 design 0002 与重写的 结构.md。待定的研究问题记在 research-wiki/待定问题/。

  • 2026-10-16 任务书 01 装配两个库:delivery、library、answers、runs(快照)、build 五个模块,scripts/build.py、scripts/scan_library.py、config/build.yaml,91 条测试,make check 通过(6 条导入契约)。两轮独立审阅的会悄悄漏答案的意见已修(C11–C13 加严、泄露扫描 NFKC、关键图只收能保真重编码的 PNG、YAML 拒绝重复键)。真实 40 例:40 例中 34 例进库,跳过 6 例全为 C10(跨表不一致,与 待定问题/04 一致),复核清单 2 条,泄露扫描命中 0;构建号与提交号见提交说明和本次汇报。使用说明 guides/装配两个库.md。

  • 2026-10-16 任务书 02 第一阶段:src/cadx/ceus/ 迁入配置(去掉全部默认值)、视频解码(按路径逐帧读)、分屏、绿框、提示帧、两半坐标换算;新写判断造影画面在哪一半(两半各选提示帧,恰好一半有才行,否则 ContrastSideError);坐标换算改为两个视图左上角之差,不再用锚点。config/ceus.yaml 只有 paths、ceus 两段。同一提交修了任务书 01 的关键图问题:不能保真重编码的关键图整例跳过,记 C14。make check 通过(348 条测试、7 条导入契约)。

未完成

  • 2026-10-16 任务书 01 由执行者完成(提交 bceb01e),监督者验收通过:真实 40 例进库 34、跳过 6(C10 跨表不一致),独立脚本核对资料库内容与跳过名单一致,泄露扫描 0 命中。

  • 结构.md 按负责人要求对照 ClinDB 的 结构.md 重写后,重写版还没再过一轮「硕士生阅读」(design 0002 与上一版结构文档过过)。

关键决定

  • 负责人 2026-10-15「其其实不需要(至少目前不需要)是一个工程产品」:按研究原型重写,产品层不迁移(design 0001)。

  • 负责人 2026-10-15 选定:检查强度「ClinDB 级」(不要提交审查闸);注释和 docstring 用中文;本机为主(「目前以本地为主,以后会根据具体情况调整」)。

  • 负责人 2026-10-15 同意:MedSAM2 与 torch 装在同一个 uv 环境,靠导入边界隔离,不单独开环境(design 0001 第 7 条)。

  • 负责人 2026-10-16:调模型用 PolyGateway;两个库和中间文件都用文件夹(SQLite 只用于调模型账本);CEUS「直接一个个迁移」,不在本机重跑旧代码作基线;数据格式和口径以 40 例交付包为准,「推注开始时间s」是视频第 0 秒时已推注的秒数(design 0002)。

  • 负责人 2026-10-16:先做第 2 步装配两个库;配置每段一份(config/<段>.yaml),编码解码是可选开关、映射表单独一份配置;交付资料检查一例有一项不过就整例跳过并记录,「都是遇到整个病例跳过,让医生核对去吧」;化名对照存进答案库。已写进 结构.md(框架图、第五部分「配置」)和 AGENTS.md「错误怎么处理」。

  • 负责人 2026-10-16 定 C04:报告表名随视频名配对(U<号>_roi2.mp4 配 U<号>_roi2_report.xlsx,U<号>.mp4 配 U<号>_report.xlsx),绿框版那一例因此进库。任务书 01 原文只认前一种,未改任务书。

下一步

  • 任务书 02 第二阶段:MedSAM2 拷代码和权重、segment 模块、其余 11 个 ceus 模块迁移。
  • 待负责人定:化名种子在 git 里,拿到种子可反推进库病例的病例号先后(专家拿不到种子);含「造影提示:」的那份超声描述所在病例被 C10 跳过,故不在复核清单里。
  • 向临床方要编码映射表(性别、诊断、症状、既往史、化验档位)。
  • 把 待定问题/04(6 例跨表不一致)、待定问题/06(1 份超声描述中段的「造影提示:」)转给医生;06 定之前的构建不做正式会诊。
  • 等临床方交付 40 例的医生标注工作簿(含造影剂到达时间和注射时间)。