自动圈门功能 - 流式细胞仪自动等高线圈门
中生北控流式细胞仪自动圈门功能项目,参考 FlowJo 软件等高线圈门功能,在已交付的流式细胞仪软件(FCSDev1.0)基础上新增自动圈门功能。 项目方:中生北控生物科技股份有限公司 承接方:中科院苏州医工所 先进医疗器械工程化中心 软件工程部 项目周期:2.5个月开发 + 0.5个月测试维护(约10+2周) 开发人员:李鹏(副研究员,主要开发)、赵凌霄(研究员,技术负责人)、孙玮(测试)
一、项目概述
1.1 功能定义
自动圈门:自动设定筛选条件(基于粒子密度分布),确定符合该筛选条件的粒子子集。
- 适用场景:仅支持数据分析时使用,不支持数据采集过程中使用
- 参考对象:FlowJo 软件中等高线圈门功能
- 基础平台:流式细胞仪软件 FCSDev1.0(20180309/20180507 版本)
- 仪器型号:中生北控 ZS-AE7S 流式细胞仪
1.2 操作流程
自动圈门的基本操作分为四步:
- 鼠标左键点击自动圈门图标(Toolbar 新增 AutoButton)
- 鼠标移动到散点图上时,显示以密度为基准的等高线图(等密度线)
- 点击鼠标左键,绘制多边形门(边数根据计算速度和精度折中选择)
- 筛选出门内粒子个数,计算相应统计量
1.3 特别说明
- ✅ 支持设门过程中取消当前操作
- ✅ 支持圈门之后修改当前门(参照多边形门修改功能)
- ✅ 数据分析过程中可以使用
- ❌ 数据采集过程中不支持
二、功能模块划分
自动圈门功能划分为四个核心模块:
等高线生成算法 → 等高线绘制 → 自动门生成 → 数据筛选
2.1 等高线生成算法
- 整个功能最基础、最核心的部分,也是实现难点
- 核心思路:将粒子分布密度相同的地方用线连接,形成离散封闭的曲线
- 为后续的等高线绘制和自动门生成提供数据基础
2.2 等高线绘制
- 单击自动圈门按钮后,鼠标形状改为”十字”绘制状态
- 随鼠标位置移动,在相应位置显示与等高线对应的曲线
- 显示线的步长与等高线步长(相邻等高线间密度差)保持一致
- 绘制过程中可以取消门的绘制
- 绘制结束后鼠标形状恢复”箭头”状态
2.3 自动门生成
- 单击鼠标左键,在相应位置生成多边形门
- 多边形门的边数少于原始等高线的边数(进行了简化)
- 原始需求建议多边形边数 15 个以上,需根据数据筛选效率折中选择
- 门生成后可以选中并修改形状(参照原软件多边形门修改功能)
2.4 数据筛选
- 参照多边形门形成后的数据筛选功能
- 将门内粒子统计信息显示在相应表格中
三、技术实现
3.1 技术栈
| 类别 | 技术 |
|---|---|
| 开发环境 | Visual Studio 2015 Update3+ |
| 编程语言 | C# |
| 类库框架 | .NET Framework 4.5+ |
| UI 框架 | WPF |
| 版本控制 | CollabNet SVN Edge 5+ |
| 测试工具 | NUnit + 持续集成 |
3.2 运行环境
硬件:
- CPU:英特尔酷睿处理器(3.7GHz、8MB缓存、四核)
- 内存:4GB DDR3 1600
- 显卡:Intel HD Graphics 4400(i3 集显)
- 硬盘:1TB SATA 7200rpm
- 显示器:22英寸 IPS LED,1680×1050
软件:
- Windows 10 64位简体中文
- .NET Framework 4+
- MySQL 5.0+
3.3 代码修改清单
所有新增/修改代码均以 added by li 注释标记:
| 编号 | 文件 | 位置 | 类型 | 描述 |
|---|---|---|---|---|
| 1 | AutomaticGate.cs | 全部 | 新增 | 自动门类 |
| 2 | ScatterPlot.xaml.cs | 第59行 | 新增 | 散点图中添加私有属性 |
| 3 | ScatterPlot.xaml.cs | 第1514-1530行 | 新增 | 自动门执行逻辑 |
| 4 | ScatterPlot.xaml.cs | 第2543-2591行 | 新增 | 粒子分布密度图计算(为等高线图提供数据源) |
| 5 | Toolbar.xaml | - | 新增 | Toolbar 中新增 AutoButton 按钮 |
| 6 | Toolbar.xaml.cs | 第36行 | 新增 | 注册 AutoButton 执行事件 |
| 7 | Toolbar.xaml.cs | 第72-75行 | 新增 | Toolbar 中添加自动门 |
| 8 | PolygonGate.cs | 第171行 | 修正 | 修正多边形门没有名称的 bug |
四、研发过程
4.1 开发模式
- 瀑布式开发模式
- 按软件工程标准化方法推进:需求分析 → 需求确认 → 系统分析与设计 → 系统编码 → 系统测试 → 验收
- 项目周期开始初期细化与明确用户需求,用户签字确认后进行编码
- 测试完成后交付用户,有限周期内配合改进功能
4.2 研发路线图(Roadmap)
总周期:10周开发 + 2周测试维护
| 阶段 | 时长 | 主要任务 | 成果 |
|---|---|---|---|
| 需求调研、算法调研 | 1周 | 明确功能需求;调研等高线绘制算法 | 详细需求报告 |
| 概要设计 | 1周 | 概要设计;确定等高线绘制算法 | 概要设计及相关设计文档 |
| 研发阶段一 | 3周 | 等高线算法实现;自动门设门逻辑实现 | - |
| 研发阶段二 | 3周 | 等高线绘制;错误及异常修改 | - |
| 研发阶段三 | 2周 | 自动门内数据筛选 | - |
| 研发阶段四 | 1周 | 其他未尽功能 | - |
| 测试与发布 | 1周 | 完成软件系统测试;交付使用 | 稳定可靠的最终版本 + 全套标准软件工程文档 |
4.3 团队配置
共3人团队:
| 角色 | 姓名 | 职称 | 分工 | 工作量(周) |
|---|---|---|---|---|
| 技术负责人 | 赵凌霄 | 研究员 | 项目方案制定与管理,总技术指导 | 2 |
| 开发人员 | 李鹏 | 副研究员 | 技术方案制定,功能设计和开发 | 12 |
| 测试人员 | 孙玮 | 研究实习员 | 软件功能测试 | 2 |
4.4 成本预算
- 开发周期:2.5个月(约10周)
- 测试维护周期:0.5个月(约2周)
- 人员成本:约 20万元/人年
- 总体人员成本:约 6万元
五、测试体系
基于分层自动化测试金字塔思想,三层主要测试:
5.1 手动测试
- 测试用例在设计阶段和代码实现阶段产出
- 覆盖所有模块集成测试、UI交互测试、非功能性测试
- 确保用户操作流程与体验
5.2 自动化测试
- 覆盖基础功能层与业务逻辑层
- 单元测试代码逻辑覆盖率 ≥ 90%
- 支持集成环境,所有代码变更第一时间进行自动化测试检测
- 数据访问、设备访问与展现层可视进度和成本考虑不做自动化测试
- 自动化测试用例跟随代码一起发布给客户
六、软件质量属性
6.1 可维护性
- 自动圈门在原有数据显示功能和 UI 插件基础上完成
- 尽可能减少对软件其他部分的改变
- 功能独立于其他设门功能,保持原始数据统计计算部分不变
- 降低功能间耦合程度,便于系统升级和问题解决
6.2 可追溯性
- 所有代码更新时间以注释形式标注
- 做到所有更新代码可追溯
6.3 易用性
- 操作逻辑与原有软件保持一致
- 最大程度减小用户操作习惯的改变
七、关联文档
项目包含三份配套文档:
- 功能需求说明(V0.1,2018-05-31,李鹏)— 9页,功能需求划分与质量属性
- 实施设计方案(V0.1,2018-05-31,李鹏)— 9页,研发计划与预算
- 开发总结报告(V1.0,2018-07-02,李鹏)— 5页,项目完成总结与代码修改清单
八、关联笔记
- CLFS流式细胞仪软件详细设计说明书-V1.0-20180829 — CLFS 详细设计,包含自动圈门等高线算法
- CLFS流式细胞仪软件概要设计说明书-V1.4 — CLFS 系统概要设计,10大模块完整类设计
- CLFS流式细胞仪软件需求规格说明书-V1.1-20160725 — CLFS 软件需求规格
- 流式细胞仪调试软件需求说明 — 调试软件需求
- FCS 3.1 流式细胞术数据文件标准 — FCS 数据格式标准
- Gating-ML 2.0-流式细胞仪门控描述XML标准 — 门控标准规范
- 迈瑞流式细胞仪功能点分析-BriCyte-E6 — 竞品功能点参考
文档来源:/工作相关/液相芯片项目相关工作文档/流式细胞仪项目整理/04软件开发/用户软件/自动圈门.rar(3个DOCX:需求说明+设计方案+总结报告)