当前位置: 首页 > news >正文

模拟3D细胞-Python工程化从0到可部署的多细胞模拟器(三)


下面直接给你第6章:可视化与后处理(Matplotlib / PyVista、指标曲线、导出视频/动画)的完整正文风格(工程可复现版),默认沿用你前面已经落盘的cells 快照 + metrics.csv管线(你在第3章里已经把“指标与快照落盘”作为核心能力之一了 ,并且路线里明确写了“Matplotlib 离线帧 → PyVista 交互/视频” ,本章就是把它写成“能出图、能出视频、能复现实验对比”的闭环 )。


第6章 可视化与后处理:指标体系、轨迹回放、帧渲染、导出视频/动画

本章目标(工程向):

  1. 统一输出口径:每次 run 的目录结构固定,后处理脚本“拿到 run_dir 就能画图/出视频”。

  2. 指标曲线:从metrics.csv自动生成对比友好的曲线图(带平滑/置信区间可选)。

  3. 几何回放:从cells_*.npz(或你保存的快照格式)生成:

    • Matplotlib:快速离线帧(适合 CI / 无界面服务器)
    • PyVista:更“像真的”3D 渲染(可交互、可导出 mp4/gif)
  4. 导出视频/动画:一键python scripts/render_video.py --run outputs/xxx

依赖提醒:你前面工程化里已经把matplotlib作为项目依赖之一 ;PyVista/VTK、ffmpeg 建议在“可选依赖”或 extra 里放(部署章节再写)。


6.1 运行目录约定:让后处理“零猜测”

强烈建议每次 run 生成类似结构:

outputs/ 2026-02-22_15-03-10_seed123/ config.yaml meta.json metrics.csv snapshots/ cells_000000.npz cells_000010.npz ... field/ # 如果你第5章开了 RD 场 oxygen_000000.npz ... renders/ metrics.png trajectory.png pvista.mp4 mpl.mp4

关键原则:后处理只依赖 run_dir 内的相对路径,不要依赖“当前工作目录”或“手动传一堆参数”。


6.2 指标体系:你到底要画哪些曲线?

你可以先把metrics.csv设计成“列名稳定、可扩展”的表:

最低配(MVP)建议列:

  • step,time
  • n_cells
  • mean_radius
  • mean_contacts
  • energy_total(或E_rep,E_adh分项)
  • hypoxia_frac/necrosis_frac(如果做肿瘤球案例很常用)

工程细节建议:

  • 同一列名永远同一含义(不要今天 mean_radius 明天变成 median_radius)
  • 缺失列允许存在(比如没开 field 就没有 hypoxia_frac),后处理脚本要能优雅跳过

6.3 Matplotlib:指标曲线一键出图(对比友好)

建议写一个通用脚本:scripts/plot_metrics.py

6.3.1 单次 run 曲线

说明:按你系统约束,图表上的文字建议默认用英文(标题/坐标/图例),这样更方便读者复用到论文/报告里。

# scripts/plot_metrics.pyfrompathlibimportPathimportpandasaspdimportmatplotlib.pyplotaspltdefplot_one(run_dir:Path,out:Path|None=None):df=pd.read_csv(run_dir/"metrics.csv")out=outor(run_dir/"renders"/"metrics.png")out.parent.mkdir(parents=True,exist_ok=True)fig,ax=plt.subplots(figsize=(7,4))ax.plot(df["time"],df["n_cells"],label="n_cells")ax.set_xlabel("time")ax.set_ylabel("count")ax.set_title("Cell count over time")ax.grid(True,alpha=0.3)ax.legend()fig.tight_layout()fig.savefig(out,dpi=180)plt.close(fig)if__name__=="__main__":importargparse ap=argparse.ArgumentParser()ap.add_argument("--run",type=str,required=True)args=ap.parse_args()plot_one(Path(args.run))

6.3.2 多次 run 对比(同图叠加)

对比时强烈建议:每条曲线来自一个 run_dir,标签来自meta.json(比如 seed、关键参数摘要)。

defplot_compare(run_dirs:list[Path],key="n_cells",out="compare.png"):fig,ax=plt.subplots(figsize=(7,4))forrdinrun_dirs:df=pd.read_csv(rd/"metrics.csv")label=rd.name# 或从 meta.json 读一个更短的 labelax.plot(df["time"],df[key],label=label,linewidth=1.5)ax.set_xlabel("time")ax.set_ylabel(key)ax.set_title(f"{key
http://www.jsqmd.com/news/404400/

相关文章:

  • [AI提效-20]-豆包实操指南:高效完成学术论文的搜索与解读(新手也能上手)
  • 2026年诚信的耐磨尼龙改性颗粒/耐候尼龙改性颗粒生产商实力参考哪家质量好(更新) - 行业平台推荐
  • [AI提效-18]-示例:麦肯锡关键词法洞察:具身智能28个核心术语,读懂行业底层逻辑与发展脉络
  • 2026年专业的无锡生物质锅炉/燃气锅炉哪家强生产厂家实力参考 - 行业平台推荐
  • 2026年知名的间歇式自动喷砂机/手动喷砂机实力厂家口碑参考口碑排行 - 行业平台推荐
  • [AI提效-21]-AI虽然是全知大能,别再当学生请教了,切换领导者视角,指挥它干活!
  • 2026年口碑好的干湿联合闭式冷却塔/干式冷却塔工厂采购指南如何选(实用) - 行业平台推荐
  • 2026年口碑好的无花板风管加工/镀锌板风管加工哪家靠谱可靠供应商参考 - 行业平台推荐
  • 题解:AcWing 873 欧拉函数
  • print the terrain
  • 2026年评价高的钢结构工程/钢结构厂房设计与加工推荐几家可靠供应商参考 - 行业平台推荐
  • Android应用开发核心技术详解与面试指南
  • 2026年评价高的美狮台球杆哪家质量好生产商实力参考 - 行业平台推荐
  • 题解:AcWing 874 筛法求欧拉函数
  • 2026年知名的浙江无人机/无人机制造厂家选购指南怎么选(精选) - 行业平台推荐
  • print the terain
  • 题解:AcWing 872 最大公约数
  • 2026年优秀的分立式储能柜/智慧储能柜实力工厂参考怎么选 - 行业平台推荐
  • 题解:AcWing 871 约数之和
  • 题解:AcWing 870 约数个数
  • 2026年比较好的进口品牌地暖管/高端住宅地暖管怎么选实力工厂参考 - 行业平台推荐
  • 2026年优质的高海拔储能箱式变电站/大容量双分裂光伏箱式变电站供应商采购指南怎么联系 - 行业平台推荐
  • 题解:AcWing 869 试除法求约数
  • 2026年评价高的全自动水渠成型机/水渠成型机供应商采购指南怎么联系 - 行业平台推荐
  • 2026年知名的304不锈钢焊管/316L不锈钢焊管哪家强生产厂家实力参考 - 行业平台推荐
  • 2026年口碑好的美式缓冲铰链/4D缓冲铰链生产商推荐怎么选(可靠) - 行业平台推荐
  • 2026年评价高的吨袋包装机/吨袋真空包装机选哪家高口碑品牌参考 - 行业平台推荐
  • 2026年热门的汽车配件硅胶制品/电力硅胶制品实用供应商采购指南如何选 - 行业平台推荐
  • 2026年质量好的切皮机馄饨皮/智能饺子皮切皮机哪家专业工厂直供推荐 - 品牌宣传支持者
  • 2026年口碑好的智能挂面机/智能一次成型挂面机实力工厂参考怎么选 - 品牌宣传支持者