iomgaa
|
77ee03f9a3
|
docs: 任务书 04 加资料库清理:tic.json 只留两组指标与关键帧时间,关键图并入 keyframes/
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-17 09:01:27 -04:00 |
|
iomgaa
|
9e1d37b34c
|
docs: 任务书 04 核对包改成医生读得懂;紫圈与病灶去暗区两组灌注指标
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-17 08:52:01 -04:00 |
|
iomgaa
|
0c24f6b89d
|
docs(结构): 规模表改为审阅修改后的行数
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-17 06:08:42 -04:00 |
|
iomgaa
|
0066342887
|
docs: WORK_LOG 记任务书 03 完成与真跑结果
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-17 06:06:44 -04:00 |
|
iomgaa
|
c7373efde2
|
feat(review): 医生核对包入口;CEUS 运行目录的读取收进 runs
- 新模块 review(组织层,只依赖 library、answers、runs):把一次构建和它装入的
CEUS 运行整理成医生可读的文件夹(CSV 带 BOM、说明与报告转 PDF、图片视频逐字节拷贝),
入口 scripts/review_pack.py + config/review_pack.yaml。任务书 03。
- 读 CEUS 运行目录(failed.csv、结果目录、关键帧文件)从 build 挪进 runs,build 与
review 都经它读;failed.csv 读取在边界上收严(步号须为整数、视频号不重复、列数固定)。
- library、answers 补只读函数;import-linter 增 review 契约。
- 文档:guides/医生核对包.md(过一轮硕士生阅读),结构.md 第三至八部分同步。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-17 06:04:19 -04:00 |
|
iomgaa
|
14d6f8e153
|
docs: 任务书 03 医生核对包;TIC 拟合约束文献核查记录
来源:负责人 2026-10-17 要求把 29 例处理结果整理成医生能看的格式并做成长期入口(表格 CSV、文字 PDF、视频不压缩、不向医生提问、问题清单只写现象);文献核查为负责人要求的质量门依据核对,结论待医生看过后再定。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-17 05:09:34 -04:00 |
|
iomgaa
|
2753ea7721
|
feat(build): 资料库装入全量 CEUS 结果;补 CEUS 定量使用说明
- config/build.yaml 的 ceus_run 指向全量运行 runs/ceus/20261016-090325-1de88a5-dirty;
test_committed_config_is_valid 随之改为断言指向 runs/ceus/ 下跑完的运行目录。
- config/ceus.yaml 配准门槛注释注明全量运行复算的分布相同。
- 新增 research-wiki/guides/CEUS定量.md(已过一轮硕士生阅读);装配两个库.md 补上 CEUS 运行与
交付包的三条核对、finished.json;结构.md 行数表按当前代码更新。
- WORK_LOG 记任务书 02 完成情况。
来源:任务书 02 第四阶段。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 09:49:53 -04:00 |
|
iomgaa
|
1de88a5d0a
|
fix(ceus): 降低长视频内存峰值,快照开跑即写,build 核对 CEUS 运行与交付包
- 内存:prepare_segmentation 改为流式解码,只留分屏和配准的抽样帧,绿框逐帧在两半上找;
分割那一半由 SegmentationInput.target_frames() 到用时再解码,segment_video 边读边写 jpg;
MedSAM2 init_state 的读帧换成直接在存放设备上建张量(不改 MedSAM2 源码,结果逐位相同);
传播结果写进预分配数组。帧数最多的一段视频常驻内存峰值 11.2 GiB → 2.3 GiB,分辨率最大的
一段原代码被 OOM 杀掉、现为 4.2 GiB;两段的掩码和全部产物与改前逐字节相同,33 段视频的
第 1–2 步结果与改前一致,29 例配准与 review.csv 一致。
- 快照:ceus_quant 开跑时写 snapshot/(git、ceus.yaml、review.csv、uv.lock、segment.json),
配置和核对表从快照副本读;收尾由新函数 runs.finish_snapshot 只新建 finished.json。
build 与 ceus_align_review 同样改用 finish_snapshot 记结束时间。
- build:summary.json 加 video_sha256;装 CEUS 结果时核对快照里的 delivery_dir、逐例核对
视频 SHA-256 和推注时间,不同就整次停下;新字段做类型检查,不进 tic.json。
来源:主会话任务(问题 1–3 及补充的 delivery_dir 比对)。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 09:01:44 -04:00 |
|
iomgaa
|
e165b32b9d
|
chore(ceus): align_review 指向 2026-10-16 通过的配准目视核对
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 07:02:14 -04:00 |
|
iomgaa
|
00ebbffb28
|
feat(ceus): 两半坐标换算改为每段视频配准,加目视核对脚本
- 第 1 步分屏后在两半扇形区内用边缘图归一化互相关估 (dx, dy),再用逐帧多块模板匹配的中位数独立核对;
两者各分量之差超过门槛(15 像素)这一例第 1 步失败。删掉「两个视图左上角相减」的实现与测试。
- 门槛依据:34 例中走完第 1 步的 29 例,差值中位 2、95 分位 6.2、最大 13;参数与门槛在同一批视频上调出。
- scripts/ceus_align_review.py:只做第 1 步,出扇形区棋盘图与边缘叠加图,混入错开 15–30 像素的
阴性对照、随机编号;计分时任一对照未被判「没对齐」即作废。
- ceus_quant 读 review.csv:不通过的病例第 1 步失败;表里没有这段视频或平移对不上即停。
- 配准与紫圈颜色参数进分割缓存键。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 06:47:27 -04:00 |
|
iomgaa
|
c582fe426f
|
feat(build): 任务书 02 第四阶段代码——build 装入 CEUS 结果
- build.yaml 加必填字段 ceus_run(CEUS 运行目录或 null)。
- 不为 null 时按视频号找结果;在 failed.csv 里或缺结果目录的整例跳过,记 C15;关键帧图沿用 C14 检查。
- 资料库超声一路加 keyframes/<槽位>.png(去附加数据重编码)和 tic.json(白名单逐字段构造:
四条曲线的拟合成败与 R²、灌注指标、紫圈曲线是否可用、7 个槽位的定位与视频时间或原因)。
- manifest 的 CEUS 来源写运行号;泄露扫描已覆盖 tic.json,补命中测试。
- 真实构建等配准改完、全量 CEUS 运行之后再做。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 05:55:57 -04:00 |
|
iomgaa
|
e78d1b50b8
|
docs(任务书02): 两半坐标换算改为每段视频配准,全量运行前由子 Agent 带阴性对照做目视核对
来源:执行者 2026-10-16 实测两半残余错位 −10 到 +182 像素;负责人 2026-10-16 同意配准方案和子 Agent 目视核对。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 05:54:15 -04:00 |
|
iomgaa
|
3524b31e3e
|
feat(ceus): 任务书 02 第三阶段——scripts/ceus_quant.py
- delivery 的 CaseRecord 加视频路径和推注时间(C04、C08 已检查过)。
- scripts/ceus_quant.py:读 ceus.yaml,跑检查全部通过的病例;runs/ceus/<运行号>/ 先写 .partial
再改名;第 1–6 步的单例失败记 failed.csv 后接着跑;终端只打印计数。
- 分割缓存 work/segment_cache/<键>/:键含视频 SHA-256、第 1–3 步参数、权重 SHA-256、MedSAM2 提交号。
- 视频解码错误改为第 1 步的单例失败(VideoDecodeError),不再停掉整次运行(审阅意见)。
- 暗区 kmeans 用 cv2 进程级随机数,结果受病例顺序影响;ceus 配置加必填 random_seed,每例第 4 步前设种子。
- segment 导出 cuda_peak_memory_bytes,供运行快照记录显存峰值。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 05:30:29 -04:00 |
|
iomgaa
|
150eb5f6ae
|
feat(ceus,segment): 任务书 02 第二阶段——分割和后半段算法
- ceus 迁入 polygons、dark_region、reference_region、tic_fitting、tic、anchor_frames、
perfusion_metrics、trajectory、tic_curves、tic_plot、overlay,旧测试照搬(改 import 与配置读取)。
- 对外两段接口:prepare_segmentation(第 1–2 步)与 quantify_case(第 4–9 步)。
- 第 3 条:删掉 D1 取医生标注时刻的模式,D1 只从拟合曲线算。
- 第 4 条:F1/F2 取视频第 20−X、60−X 秒(X 为视频第 0 秒时已推注的秒数),落在视频外记未定位。
- 绿框融合权重、紫圈颜色阈值照搬;关键帧容差窗口的出处写进 ceus.yaml 注释。
- segment:同一进程调用 MedSAM2,设置写进 ceus.yaml 的 segment 段,全部必填;gpu 测试真跑通过。
- 依赖加 scipy、matplotlib、medsam2(可编辑安装,不编译 CUDA 扩展);uv 只解析 linux x86_64。
- 导入契约:只有 segment 引用 torch、sam2;segment 不引用其他 cadx 模块。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 05:07:02 -04:00 |
|
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 |
|
iomgaa
|
de1d6b2d51
|
docs: 任务书 02 CEUS 定量;待定问题 07、08;CEUS 运行产物改放 runs/ceus/
- 任务书 02:先修 C14(关键图问题改为跳过单例);四阶段迁移 ceus、segment、
ceus_quant、build 装入 8 张图中的 7 张关键帧与 tic.json;过一轮「硕士生阅读」
- 负责人 2026-10-16:MedSAM2 从远程拷贝最快;任务书一份;紫圈阈值先照搬并记待定问题;
CEUS 整例失败跳过、拟合不过只缺 D1–D4,两点认可
- 待定问题 07(超声图上烧录的性别年龄)、08(紫圈颜色阈值是占位值)
- 结构.md:CEUS 运行产物进 runs/ceus/(会进资料库与论文,需可追溯),work/ 只放分割缓存
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 03:24:01 -04:00 |
|
iomgaa
|
bceb01e8fa
|
feat: 装配两个库(不含 CEUS 结果)
按任务书 01 实现 delivery、library、answers、runs(快照部分)、build 五个模块,
scripts/build.py、scripts/scan_library.py 与 config/build.yaml(decode_codes: false)。
交付包整表检查 T1–T4、映射表检查 T5、逐例检查 C01–C13,一例遇到第一项不过即整例跳过。
与任务书原文的出入:
- C04 报告表名随视频名配对(负责人 2026-10-16 定)。
- 按两轮独立审阅加严 C11(更多换行符、比例号冒号)、C12(同义词与词根)、
C13(空格、周岁、中文数字、繁体);泄露扫描做 NFKC;关键图只接受能保真重编码的 PNG;
YAML 配置拒绝重复键和空路径。
- import-linter 第 1 条拆成互不依赖与不引用其他 cadx 模块两条。
文档:结构.md 第五、六、八部分按实际更新;新增 guides/装配两个库.md;WORK_LOG 更新。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 03:00:20 -04:00 |
|
iomgaa
|
bcd5932a66
|
docs: 诊断编码改归解码开关管
负责人 2026-10-16「诊断编码归开关管,实现统一」:映射表加 Diagnosis 一项(17 项),
管三张表的诊断列;不再从报告表列名取编码含义;decode_codes 为 false 时答案库诊断名留空。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 01:18:23 -04:00 |
|
iomgaa
|
fa962a2672
|
docs: 任务书 01 装配两个库;待定问题 06 超声描述中段的造影提示
- 任务书 01:配置、delivery 的 T1–T5 与 C01–C13 检查、library/answers 布局、
快照、build、测试、规模与审阅;已过一轮「硕士生阅读」并按意见修订
- C11 只认段首的结论标题;中段「造影提示:」按负责人 2026-10-16「先不进行任何处理」
原样保留,记入待定问题 06 待问医生
- 结构.md 第五部分补「只有 library 引用 PIL」;WORK_LOG 更新下一步
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 01:14:04 -04:00 |
|
iomgaa
|
9c636c0a4f
|
docs: 补整体框架图与参数系统,交付资料检查改为整例跳过
- 结构.md 第二部分加四段整体框架图;第五部分新增「配置」:每段一份 YAML、
pydantic 定义、只接收配置路径、编码解码开关与独立映射表
- 结构.md 第三、四部分:检查不过整例跳过,答案库存三表诊断、化名对照、跳过清单
- AGENTS.md「错误怎么处理」加交付资料单例问题的例外。来源:负责人 2026-10-16
「都是遇到整个病例跳过,让医生核对去吧」
- 待定问题/03 补被跳过病例;WORK_LOG 记决定与下一步
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 01:02:16 -04:00 |
|
iomgaa
|
9b2f842559
|
docs: 架构定稿——四段流水线、两个库与待定问题
负责人 2026-10-16 定:数据流为「医院原始资料->中间文件->给专家的资料库 & 标准答案库」;
两个库和中间文件都用文件夹,SQLite 只用于调模型账本;调模型用 PolyGateway;CEUS 直接逐个
迁移;数据格式和口径以 40 例交付包为准。存储与迁移方案先由两个中立子 Agent 独立评审。
- design 0002:八条决定及负责人原话(化名与打乱顺序一条为 Agent 提出)
- explanation/结构.md 对照 ClinDB 的结构文档重写:切分原则、完整范围、12 个模块与依赖、
边界、两个库与 CEUS 中间文件的内容、目录与检查、规模、推进顺序
- research-wiki/待定问题/:绿框、参数冻结、排除标准、跨表不一致四个问题;定了就删
- AGENTS.md:事实来源加「交付资料的格式和口径以最新交付包为准」
- .gitignore 与 pre-commit 拦截 library/、answers/、work/
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-16 00:44:42 -04:00 |
|
iomgaa
|
22cf532dc4
|
docs: WORK_LOG 记首次提交
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-15 23:42:45 -04:00 |
|
iomgaa
|
1f7a6a3d9c
|
docs: 协作规则、工作记录与 research-wiki 文档体系
从产品重构为研究原型的第一步(负责人 2026-10-15:「其其实不需要(至少目前不需要)
是一个工程产品」)。协作环境照 ClinDB-ReviewBench(负责人点名参考)。
- AGENTS.md 为唯一规则,CLAUDE.md 只引用它;硬性约束保留旧项目的答案隔离、各路隔离,
加上数字可追溯、花钱先报预估等
- WORK_LOG.md 记当前状态与负责人的关键决定
- research-wiki:README、explanation/结构.md(8 个模块、依赖边界、推进顺序)、
design/0001(为什么重构、继承与放弃什么、单一 uv 环境)、guides/开发环境.md
- 三份新文档过了一轮「硕士生阅读」并按意见修订
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-15 23:42:37 -04:00 |
|
iomgaa
|
5eb38df22d
|
build: uv 工具链、检查命令与提交前检查
- pyproject:Python 3.12、ruff、pyright strict、pytest(live/gpu 标记)、import-linter;
首条导入契约:cadx 不导入 torch、sam2(design 0001 第 7 条)
- Makefile:sync/fmt/test/check
- pre-commit:gitleaks、拦截 data/runs/reference/reference-pdf/models 与 .env、ruff format
- 空包 cadx 与一项导入测试,让 make check 能跑通
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-15 23:42:36 -04:00 |
|