基于Django 框架的肉羊遗传评估系统的设计
2022-11-17马梅兰何新宇依明苏来曼
吴 飞,石 兰,马梅兰,王 江,何新宇,依明·苏来曼
(新疆农业大学动物科学学院,新疆乌鲁木齐 830052)
在育种工作方面,疆内大多数的中小型羊场仍采用个体表型值进行选种。但传统的选种方法不能保证种羊遗传评定的准确性,其主要缺点在于:一是羊只数据零散和记录不完全、不系统;二是不能有效地剔除各种环境因素的影响,如:年度、群体等;三是不能有效利用所有亲属的信息。因此中小型羊场根据表型值选种的方法是不够准确的。在羊只各类信息的处理形式上,现阶段疆内羊场主要通过纸质资源和电子文件记录与储存数据,但纸质文件容易因自然、人为等原因造成信息缺失,电子文件因为分类储存也只能针对有限范围内的信息进行查询和利用,而羊场许多决策需要依据多方面、跨文件的信息检索结果,现阶段的零散文件存储难以提供上述服务,致使信息资源的利用率较低[6-7]。
信息化是当今世界发展的必然趋势,国内许多畜牧企业都设计或购买畜牧信息化管理系统以及种畜遗传评估系统,将牧场管理、种畜育种工作与信息技术相结合,以此提高生产管理水平,提升育种工作效率,科学建立种畜繁育基地。本研究在调研新疆地区中小型规模化羊场的生产与管理模式的基础上,将信息管理技术与现代遗传评估技术相结合,开发兼具信息管理与遗传评估功能的计算机系统,致力于帮助中小型羊场充分利用新疆丰富的种质资源,培育优良肉羊品种,促进新疆肉羊产业的高质量发展。
1 系统开发的技术支持
1.1 编程语言 Python 语言是一门新兴且优秀的计算机编程语言,在2021 年TIOBE(编程语言社区排行)中,Python 排名第一,荣获2021 年度编程语言称号。Python 已成为多个领域的编程实战语言,运用越来越成熟。Python 学习与使用起来清晰而简单,非常适合编程基础薄弱或者零基础的人员使用。Python 拥有庞大的标准库,可以编写程序来处理各种工作,包括正则表达式、线程、文档生成等功能。除了标准库,它还有大量高质量的第三方库[6,8-9],如Django、Django RESTframework、NumPy 等,这些库可以通过计算机编程集成开发环境软件例如PyCharm、VSCode 搜索下载使用,有助于提高开发效率。
1.2 Web 应用框架 Django 框架是具有完整架站能力的开源框架,由Python 编写,其设计理念是由传统MVC模式演变的MTV 模式。开发优势:部署方便、可重用性高、维护成本低,可以便捷快速地开发以数据库驱动的系统;Django 自身集成了丰富的开发通用组件,如用户认证、分页、中间件、缓存、Session 等,避免浪费大量时间做重复的工作;Django 还具有强大的数据库访问组件、灵活的URL 映射,大大提高开发效率[6,9]。
1.3 系统开发的硬软环境
1.3.1 系统开发的软件环境 肉羊遗传评估系统在Windows 10 操作系统上开发,以Python 3.6.8 作为编程语言,Django 2.0 为开发框架,以Pycharm 专业版为辅助开发工具,数据库采用Python 3 默认选取的SQLite 3 数据库,以Navicat Premium 12 为数据库的辅助编辑器。
恶性组:年龄范围51~77岁,年龄(66.4±9.0)岁;男 23例,女 16例;体质指数(BMI)为(22.6±1.8)kg/m2,合并疾病为高血压 16例、糖尿病8例、高血脂11例,吸烟16例。非恶性组:年龄范围48~79岁,年龄(65.2±11.0)岁;男130例,女61例,BMI为(22.4±2.3)kg/m2,合并疾病为高血压96例、糖尿病53例、高血脂70例;吸烟102例。两组患者的年龄、性别、BMI、合并疾病、吸烟情况差异无统计学意义(P>0.05),具有可比性。
1.3.2 系统开发的硬件环境 系统开发所用电脑的CPU为Intel(R)Core(TM)i5-1035 G1,RAM 容量为16 GB,Storage 容量为512 GB。
1.4 支撑系统运行的硬软环境 运行平台/操作系统:Windows7、Windows10、Linux、Mac。
运行的硬件环境:Intel(R)Core(TM)i3 及以上;RAM:2 GB 及以上;Storage:256 GB 及以上。
软件运行支撑环境/支持软件:Python 3.6 及以上版本、Django 3.0 及以上版本、R 语言。
2 系统总体设计
肉羊遗传评估系统由Django 框架搭建而成,采用浏览器/ 服务器(Browser/Server,B/S)结构模式,通过调用R 语言的sommer 包实现羊场数据信息化管理以及肉羊遗传评估的功能。肉羊遗传评估系统在开发类型上定义为大数据嵌入式软件,后续的项目计划将通过Python 强大的可移植性嵌入到肉羊遗传评估与分子育种服务平台中。
2.1 系统角色分权 肉羊遗传评估系统分为羊场信息管理模块与肉羊遗传评估模块,并设置了拥有不同权限的3 种角色,分别为管理员、技术员与饲养员。3 种角色的系统主界面所含有的功能模块数量依次递减,管理员拥有系统全部功能模块,且只有管理员具有添加与删除系统成员账号以及运行肉羊遗传评估模块的权限。羊场管理人员可以根据员工所处岗位添加角色赋予员工在系统内的管理权限。用户在登录页面输入正确的账号、密码以及验证码答案即可进入系统主页面,视图通过账号识别用户角色,并赋予拥有相应权限的主界面。
2.2 数据库的设计 数据库是大数据信息管理系统的核心和基础,具有对数据的存储、维护、检索等功能。系统数据库的结构很大程度上决定了系统的结构和功能的实现[10]。肉羊遗传评估系统的数据库包含用户的注册表以及各管理模块的数据表。根据实际需求,选用了SQLite 3 作为本系统的数据库,该数据库具有易升级维护的优势。由于SQLite 3 数据库是Python 3 默认选取的轻型数据库,所以使用方便,不需要事先安装数据库软件。相比于MySQL 等数据库,SQLite 3 不需要配置,不需要任何外部的依赖,用户不需要复杂的安装以及在cmd 终端申请账号的过程,且每次使用前后不需要手动开启、关闭数据库,SQLite 3 在搭建系统时也不需要事先建表,数据表直接迁移。根据SQLite 的官方提示,SQLite 3 数据库最大支持128 TiB(140 terabytes,or 128 tebibytes),数据承载量对于中小型羊场完全够用。在数据查询方面,查询条件如果是索引字段,在总数据量非常庞大的情况下查询速度仍然很快。
2.3 羊场信息管理模块 羊场信息管理模块提供了一种简便而有效的信息管理和处理技术,它通过设计模型来定义表格与字段,将现实的羊场数据进行分类整理,并在虚拟数据库中存储起来,通过编写视图函数来调用和分析数据,把繁杂的数据资料变成用户所需要的可用来决策的信息[11]。羊场信息管理模块的每个子模块对数据设置了增删查改、导出、打印功能,在羊只管理、配种记录、繁殖管理、系谱管理、性能测定以及育种值表6 个子模块中设置了数据批量导入功能。羊场信息管理模块中各子模块模型设计见表1。
表1 羊场信息管理模块介绍
2.3.1 列表设置 列表分页设置:由于本系统为大数据软件,因此各模块中的表格分页设置了每页10、20、50、100、200、500、1 000、2 000、5 000 条数据选项,方便用户对数据的查看以及批量操作。
列表字段隐藏功能:本系统各子模块列表字段属性全面、数量较多,用户可根据实际需求将不需要的字段隐藏,使数据列表简短、直观。
在系统各个子模块模型的最后设立“创建时间、创建人、修改时间、修改人”4 个日志类型的字段,系统会在员工操作后自动记录以上四字段的内容,且员工无法改动,以此方便查寻追责,用以督促员工在收集、登记数据时确保数据完整无误。
2.3.2 数据的查询 数据的查询功能是羊场信息管理模块的核心功能,也是其他功能的基础。通过连接SQLite 3 数据库,为各子模块的数据列表设置了2 种数据查询方法:一是设置关键字搜索框关联模型中的所有字段,用户需要输入具体关键字对数据进行搜索;二是按条件筛选,在各个模块列表中按羊场的实际需求,选定一个或多个字段设置为筛选条件,用户填写筛选框条件即可在数据库中筛选数据。
2.3.3 数据的添加 数据的增添功能可以通过点击“添加”键填充字段内容对数据进行逐条添加。在添加数据量庞大的情况下,用户可通过数据批量导入功能一键导入数据。导入功能要求上传的数据文件必须是纯文本文件(Excel、Csv),文件中第一行数据名称从左到右的排列顺序必须与系统对应的数据表中字段顺序一致,文件内缺失数据采用NA 代替,数据之间的间隙使用空格或Table 键。
2.3.4 数据的删除与修改 数据的删除功能是在查询功能的基础上进行操作。数据经过查询后,勾选目标数据前的复选框进行删除。批量删除需根据删除数据条数进行分页设置,使需删除的数据集中在第1 页,点击列表前的复选框进行整页删除。修改功能同删除功能。
2.3.5 数据的导出与打印 数据的导出功能:数据经过查询后,按照数据量进行分页设置,使需导出的数据集中在第1 页,通过点击“导出”键,将数据导入新建的Excel 或Csv 文件中,并自动保存在电脑C 盘的“用户”文件中。
数据打印:操作流程同数据导出功能,打印设置默认为横向黑白打印,打印纸张默认为A4。
2.4 肉羊遗传评估模块 种羊的遗传评定是肉羊育种中的一项重要内容,选种准确与否对畜群生产性能的提高具有决定性作用[12]。随着动物数量遗传学的发展,基于BLUP 的选择方法已经广泛应用,但是这种计算方法比较复杂,主要使用几款专业的遗传评估软件,如ASReml、DMU、WOMBAT 和BLUPF 90 等,但这些软件不适用于没有系统学习过BLUP 法原理以及软件教程的羊场工作人员,这是目前遗传评估软件面临的问题。本系统通过Python 的第三方库rpy 2 调用R 语言的sommer 包,将遗传评估软件有效整合到现有的管理系统中,系统还为遗传评估功能设置了简单且灵活的Web 页面,用户只需在此页面单纯的进行鼠标点击,即可完成育种值计算操作,解决了上述遗传评估软件存在的问题。
肉羊遗传评估模块通过sommer 包建模,运用BLUP 法的单性状动物模型与多性状动物模型计算肉羊的育种值。BLUP 法是目前世界范围内主要的种畜遗传评定方法[13-14],由Henderson 于20 世纪50 年代初提出,其本质是处理不均衡资料的混合模型方程组(Mixed Model Equation)方法[15]。BLUP 法将选择指数法和最小二乘估计方法有机结合起来,可以在估计育种值的同时对系统环境效应进行估计和校正,消除了因选择和淘汰等造成的偏差,通过BLUP 法计算所得的个体育种值具有最佳线性无偏性,精确性较高。
系统通过Django 框架的视图与模板搭建计算育种值的选项卡表单Web 页面,用户在Web 页面勾选单选框、复选框与下拉列表即可选定进行育种值计算的羊只数据与动物模型。选项卡表单Web 页面如图1 所示。
图1 选项卡表单Web 页面
用户在点击“计算”选项后,系统视图接收用户指令通过数据库SQL 的JOIN 关键字进行多表联查提取数据,形成由羊只ID、固定效应、表型性状组成的数据文件,和由目标羊只及其父母代、祖代的个体号组成的系谱文件。系统后台将两份文件的文件名以及用户所选表型性状与固定效应的字段名作为参数传输到AnimalUtils 类函数相应的活字段中,完成由R 语言指令拼接的字符串,最后通过调用rpy2 库的r 方法执行R语言程序,R 语言按照字符串指令进行常规育种值估计。系统调用sommer 包运算所得的育种值结果自动生成数据文件,在“育种值表”子模块一键导入保存育种值数据。
3 遗传评估功能测试
系统的遗传评估功能测试是将同一份测试数据分别通过系统与DMU 软件进行育种值计算,在考虑相同固定效应以及运算模型皆为动物模型BLUP 的情况下,比较系统与DMU 软件的育种值结果。测试数据为真实数据,由课题组提供,测试数据于2021 年采集自新疆地区的三宝牧业、塞外银羚种羊场以及上品美羊科技有限公司,数据在剔除异常值后,共计采集1 689 只湖羊的初生重与断奶重,系谱为完整的二代系谱与部分三代系谱。
遗传评估功能测试方法具体为系统与DMU 软件先后采用单性状动物模型与多性状动物模型,以羊只性别、出生类型、场号、出生年-季为固定效应,计算1 689只湖羊初生重与断奶重的个体育种值。经过反复测试,系统与DMU 软件计算1 689 只湖羊初生重与断奶重的个体育种值结果均基本一致,相关的前后端指令交互、多表联查提取数据以及rpy2 调用R 语言等代码的逻辑设计合理。
4 讨 论
目前,我国研制出的肉羊遗传评估软件大多数采用的是传统育种运算方法,很少涉及基因组选择的分子育种方法,例如鲁绍雄等[16]开发的肉羊信息管理与育种分析系统、赵晓亮[17]研制的肉羊数据自动发掘模块与遗传育种模块以及何小龙等[18]开发的内蒙古自治区种羊遗传评估中心网络管理信息系统都是采用的传统育种运算方法。本系统目前已实现运用常规BLUP 法进行传统的育种值运算,后续工作将进一步深度挖掘现代肉羊遗传评估技术,系统将加入GBLUP 法运算功能,建立基于基因组选择的肉羊遗传评估与分子育种服务技术平台,构建适合新疆肉羊产业高效发展的繁育体系。
在遗传评估软件选择方面,相比于常用的DMU、ASReml、BLUP 90,R 语言的sommer 包在常规BLUP法运算方面相对平庸,在数据量庞大的情况下运算速度无法与前三者相比,甚至当固定效应与表型数据、种类较多,从而构建的混合线性模型较为复杂时,sommer包在矩阵迭代中途会出现“因矩阵过于庞大而停止工作”的报错代码。在系统与DMU 软件皆采用多性状动物模型计算1 689 只湖羊初生重与断奶重的个体育种值的测试中,系统调用sommer 包在矩阵迭代过程中用时不稳定,最少用时28 min,最多用时90 min,用R 软件跑sommer 包代码用时也是如此,而DMU 用时仅在4 min以内,sommer 包运算结果虽然与DMU 软件基本一致,但在运算时间上有很大差距。而且sommer 包本身不具有处理系谱数据的功能,需要先由R 语言的nadiv 包依据系谱信息构建A 矩阵与A 逆矩阵,再由sommer 包构建混合线性模型计算育种值。但在软件的使用性质上,只有R 语言的sommer 包为完全免费软件,商业使用无需授权,而且在GBLUP 法运算方面性能较为优秀,可为后续开发的分子育种功能提供技术支持,所以选取R语言的sommer 包作为本系统调用的遗传评估软件。
5 结 论
本研究基于Django 框架设计了肉羊遗传评估系统,该系统的羊场信息管理模块通过对羊场各项数据的增删查改、导入与导出等操作,基本实现了羊场数据信息化管理与肉羊生产性能登记的功能,也为遗传评估模块提供完整、可靠的数据基础;该系统的肉羊遗传评估模块通过调用R 语言的sommer 包计算羊只个体育种值,经真实数据反复测试,在测试同一份数据、考虑相同固定效应的情况下,肉羊遗传评估系统与DMU 软件先后通过单性状动物模型与多性状动物模型计算1 689 只湖羊初生重与断奶重的个体育种值的结果均基本一致,后台代码的逻辑设计合理,肉羊遗传评估模块可以实现肉羊遗传评估与构建羊场育种数据库的功能;系统整体可以为新疆肉羊产业持续选育优良肉羊品种提供技术支持。