Files
CADx-4/WORK_LOG.md
T
2026-10-17 11:06:41 -04:00

57 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 工作记录
只记当前状态。一个阶段完成后压缩成几行,细节看提交说明和 `research-wiki/`。
## 当前目标
任务书 04(核对包改成医生读得懂、资料库超声一路只留给 agent 的参数)已完成,待负责人验收;核对包待交医生。下一步见文末。
## 已完成
- 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 任务书 02 第二至四阶段:ceus 其余模块与 segment(MedSAM2,提交 150eb5f)、`scripts/ceus_quant.py`(3524b31)、build 装入 CEUS 结果与 C15(c582fe4);两半坐标换算改为每段视频配准,加阴性对照的目视核对(00ebbff,核对运行 `runs/ceus_align/20261016-064728-00ebbff-dirty`:10 张对照全被判「没对齐」,30 例真实病例两人都判对齐);流式解码降内存、快照开跑即写、build 核对运行与交付包(1de88a5)。全量运行 `runs/ceus/20261016-090325-1de88a5-dirty`:34 例成功 29,第 1 步失败 4(3 例无暗缝、1 例配准差 66),第 2 步失败 1(绿框面积低于下限);常驻内存峰值 4.4GB。真实构建 `20261016-094248-1de88a5-dirty`:40 例进库 29,跳过 C10 6、C15 5,泄露扫描命中 0。工作区不干净(负责人别的会话的改动),要写进论文的运行需在干净工作区重跑。上一次被 OOM 杀掉的 `runs/ceus/20261016-070216-e165b32-dirty.partial` 留着未删。
- 2026-10-17 任务书 03 医生核对包(提交 c7373ef):新模块 review(只依赖 library、answers、runs)、`scripts/review_pack.py`、`config/review_pack.yaml`;读 CEUS 运行目录从 build 挪进 runs。`make check` 通过(609 条测试、9 条导入契约)。一轮独立审阅:5 条次要意见采纳 4 条(报告连续空格保留、Tab 报错;跳过病例也填视频号;关键帧文件恢复严格检查;说明一处措辞),第 5 条核对代码后不成立。真跑 `runs/review_pack/20261017-060427-c7373ef-dirty`:40 例(进库 29、跳过 11),问题清单 129 行(装配资料库 11、CEUS 第 1 步 4、第 2 步 1、TIC 拟合 21、关键帧 87、紫圈 5),59 份 PDF,包 2.9G,33 秒;203 个图片视频与源文件逐字节相同(独立脚本核对)。同内容的提交前试跑 `20261017-060257-14d6f8e-dirty` 留着未删。使用说明 `guides/医生核对包.md`。
- 2026-10-17 任务书 04(提交 7e7f32a、9d82210,配置 b6c918a、e7c6055):灌注指标改为对病灶去暗区与紫圈两组算(D1–D4 规则不变);tic.json 只留两组 11 个指标与 7 个槽位时间,医生截图并入 `keyframes/`;核对包改为 TIC参数.csv、大白话问题清单(原因对照表,表外原因报错)、说明.pdf 重写(4 页);跳过病例.csv 只进快照。`make check` 711 条通过。两轮审阅(账本级、核对包)与一轮医生视角阅读的意见已处理。干净工作区真跑:CEUS `runs/ceus/20261017-103312-9d82210`(34 例成功 29,与 `20261016-090325-1de88a5-dirty` 的成功、失败、各曲线拟合、各槽位定位例数逐例相同);构建 `20261017-110257-b6c918a`(进库 29、跳过 C10 6、C15 5,泄露扫描 0);出包 `runs/review_pack/20261017-110345-e7c6055`(问题清单 57 行,旧版 129 行)。29 例中紫圈指标算出 10 例、病灶去暗区 18 例、两组都有 7 例;独立脚本核对 29 例 TIC参数.csv 638 格与 tic.json 一致、医生截图与 key.png 逐字节相同。负责人 2026-10-17 接受 review 行数超预期一倍(原因对照表本来就该这么长)、病例总表「没进的原因」改大白话。
## 未完成
- 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 原文只认前一种,未改任务书。
## 下一步
- 待负责人:核对包 `runs/review_pack/20261017-110345-e7c6055/医生核对包_20261017-110257-b6c918a/` 目视检查后打包交医生(不带 `snapshot/`);任务书 03 的两次出包目录、旧 CEUS 运行与 `.partial` 目录删不删。
- 医生视角阅读提出、负责人 2026-10-17 定为这次不做的缺项:从推注起算的时间、开始增强时间 AT、病灶与实质的比值、拟合好坏程度、临床信息编码对照表(等临床方)、反馈方式与截止时间。
- 待负责人定:`结构.md` 与实现不一致的几处(报告结论段写「由 build 剔除」,实际是 C11 命中整例跳过,任务书 03 也沿用了这个说法;C01–C14 速查表实际到 C15;依赖表写 build 可依赖 ceus,契约禁止)。
- 待负责人定:5 例 CEUS 失败要不要给个别视频手工指定分屏线、或调低绿框面积下限(`待定问题/02`);失败病例是否改为「超声不可评价、仍参与会诊」(`待定问题/03`);旧的 `.partial` 运行目录删不删。
- 待负责人定:化名种子在 git 里,拿到种子可反推进库病例的病例号先后(专家拿不到种子);含「造影提示:」的那份超声描述所在病例被 C10 跳过,故不在复核清单里。
- 向临床方要编码映射表(性别、诊断、症状、既往史、化验档位)。
- 把 `待定问题/04`(6 例跨表不一致)、`待定问题/06`(1 份超声描述中段的「造影提示:」)转给医生;06 定之前的构建不做正式会诊。
- 等临床方交付 40 例的医生标注工作簿(含造影剂到达时间和注射时间)。