自动圈门功能 - 流式细胞仪自动等高线圈门

中生北控流式细胞仪自动圈门功能项目,参考 FlowJo 软件等高线圈门功能,在已交付的流式细胞仪软件(FCSDev1.0)基础上新增自动圈门功能。 项目方:中生北控生物科技股份有限公司 承接方:中科院苏州医工所 先进医疗器械工程化中心 软件工程部 项目周期:2.5个月开发 + 0.5个月测试维护(约10+2周) 开发人员:李鹏(副研究员,主要开发)、赵凌霄(研究员,技术负责人)、孙玮(测试)


一、项目概述

1.1 功能定义

自动圈门:自动设定筛选条件(基于粒子密度分布),确定符合该筛选条件的粒子子集。

  • 适用场景:仅支持数据分析时使用,不支持数据采集过程中使用
  • 参考对象:FlowJo 软件中等高线圈门功能
  • 基础平台:流式细胞仪软件 FCSDev1.0(20180309/20180507 版本)
  • 仪器型号:中生北控 ZS-AE7S 流式细胞仪

1.2 操作流程

自动圈门的基本操作分为四步:

  1. 鼠标左键点击自动圈门图标(Toolbar 新增 AutoButton)
  2. 鼠标移动到散点图上时,显示以密度为基准的等高线图(等密度线)
  3. 点击鼠标左键,绘制多边形门(边数根据计算速度和精度折中选择)
  4. 筛选出门内粒子个数,计算相应统计量

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 注释标记:

编号文件位置类型描述
1AutomaticGate.cs全部新增自动门类
2ScatterPlot.xaml.cs第59行新增散点图中添加私有属性
3ScatterPlot.xaml.cs第1514-1530行新增自动门执行逻辑
4ScatterPlot.xaml.cs第2543-2591行新增粒子分布密度图计算(为等高线图提供数据源)
5Toolbar.xaml-新增Toolbar 中新增 AutoButton 按钮
6Toolbar.xaml.cs第36行新增注册 AutoButton 执行事件
7Toolbar.xaml.cs第72-75行新增Toolbar 中添加自动门
8PolygonGate.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 易用性

  • 操作逻辑与原有软件保持一致
  • 最大程度减小用户操作习惯的改变

七、关联文档

项目包含三份配套文档:

  1. 功能需求说明(V0.1,2018-05-31,李鹏)— 9页,功能需求划分与质量属性
  2. 实施设计方案(V0.1,2018-05-31,李鹏)— 9页,研发计划与预算
  3. 开发总结报告(V1.0,2018-07-02,李鹏)— 5页,项目完成总结与代码修改清单

八、关联笔记


文档来源:/工作相关/液相芯片项目相关工作文档/流式细胞仪项目整理/04软件开发/用户软件/自动圈门.rar(3个DOCX:需求说明+设计方案+总结报告)