基于LokiJS单机版畜禽寄生虫虫种查询系统的开发

2017-07-31 20:11杨志远朱顺海赵其平韩红玉
中国动物传染病学报 2017年3期
关键词:寄生虫畜禽分类

杨志远,董 辉,朱顺海,唐 敏,赵其平,韩红玉,黄 兵,3

(1. 上海师范大学生命与环境科学学院,上海 200234;2. 中国农业科学院上海兽医研究所 农业部动物寄生虫学重点开放实验室,上海 200241;3. 江苏省动物重要疫病与人兽共患病防控协同创新中心,扬州 225009)

·研究论文·

基于LokiJS单机版畜禽寄生虫虫种查询系统的开发

杨志远1,2,董 辉2,朱顺海2,唐 敏1,2,赵其平2,韩红玉2,黄 兵2,3

(1. 上海师范大学生命与环境科学学院,上海 200234;2. 中国农业科学院上海兽医研究所 农业部动物寄生虫学重点开放实验室,上海 200241;3. 江苏省动物重要疫病与人兽共患病防控协同创新中心,扬州 225009)

为实现中国畜禽寄生虫虫种资源的离线查询,以《中国家畜家禽寄生虫名录(第二版)》、《中国畜禽寄生虫形态分类图谱》和《中国畜禽寄生虫形态分类彩色图谱》系列为数据来源,运用Apache POI提取虫种信息,使用EasyUI设计系统界面,采用Echarts绘制虫种地理分布图,构建了基于LokiJS为内存数据库的单机版畜禽寄生虫虫种查询系统。该系统能查询2400余种(含亚种)寄生虫的中文名称、拉丁文名称、地理分布、寄生宿主、寄生部位等信息,以及1000多种寄生虫的形态描述、形态结构图或彩色照片。系统无需安装,直接在本地电脑上运行,查询速度可达到毫秒级,占用系统资源少,为我国寄生虫虫种资源的查询提供了高效、便捷的工具,对我国寄生虫学的科研、教学和寄生虫病防治工作具有重要的参考价值。

家畜;家禽;寄生虫;数据库;查询

随着信息技术的发展,科研、医疗工作者获取知识的途径,更多地依赖于计算机,相应地诞生出一些专业化的信息服务软件和网站,如GenBank[1]、EMNL[2]、PDB[3]等生物信息学数据库,用于收录和查询生物基因、基因组和蛋白质等生物信息学数据。维基物种[4]是一个免费的物种分类网站,其中包含了大部分寄生虫物种,为分类学家和相关工作者提供了物种查询服务。国内“中国动物主题数据库”[5]、“中国物种网”[6]和“中国植物志网站”[7]提供了动植物物种的查询。在寄生虫分类查询领域,目前包括“畜禽寄生蠕虫形态学分类检索系统”[8]、“中国畜禽寄生虫分类鉴定专家系统”[9]和“禽类寄生虫计算机识别系统”[10]等,都是基于本地数据库进行数据查询。陈自强等[11]利用ASP语言编程、Access作为寄生虫资料数据库实现了医学寄生虫资料的网上搜索。沈海默等[12]基于J2EE平台开发了“寄生虫虫种资源信息管理系统”,该系统是基于B/C架构设计出的有关寄生虫查询系统,这些系统的研发可为寄生虫查询、鉴定等工作提供了有效的工具。

我国畜禽寄生虫资源丰富,已记载的畜禽寄生虫种类已达2300多种,出版有《中国家畜家禽寄生虫名录》(2004)[13]、《中国畜禽寄生虫形态分类图谱》(2006)[14]、《中国家畜家禽寄生虫名录(第二版)》(2014)[15]和《中国畜禽线虫形态分类彩色图谱》(2016)[16]。为实现这些专著所含信息的快速查询,本研究开发了基于LokiJS单机版的畜禽寄生虫虫种查询系统,旨在为兽医工作者和相关科技人员,提供一个实时更新、数据全面、能在离线情况下进行查询的信息查询平台。

1 系统设计

1.1 系统技术选型 考虑到系统的实用性、稳定性和兼容性等要求,采用jQuery EasyUI[17]框架设计界面,可以兼容市场上主流的浏览器,同时节约开发的时间和规模。考虑到本系统在浏览器直接运行,选择轻量级的、使用JavaScript编写的内存数据库LokiJS。LokiJS官网[18]声称LokiJS是一个内存数据库,其性能高于一切内存数据库。LokiJS持字段索引来实现更快的文件访问,并且在执行过程中表现很好(在开发机中平均达到近500 000 PS/s),其内置的动态视图类也能利用数据子集索引提供甚至更快的性能。同MongoDB相似, LokiJS支持集合,将数据以JSON格式保存到硬盘上(根据会话来恢复状态),所以其数据是可移植的,方便数据实时更新。在地图展示方面,本系统选用了百度EFE数据可视化团队开发的商业产品图表库Echarts2[19],能够提供常用的图表,其底层基于ZRender(一个全新的轻量级canvas类库)。

1.2 系统结构与功能设计 将系统数据分为属性数据和虫种信息数据两个部分,其中属性数据包括寄生动物类目、地理位置类目、寄生部位类目、检索菜单信息(目、科、属信息),每一种信息用JavaScript数组保存,这些信息主要应用界面上的选择菜单和检索表。虫种信息数据保存的是虫种描述信息,保存在LokiJS实现的内存数据库中,用于完成数据的查询和数据展示。系统结构见图1。

图1 寄生虫虫种查询系统结构Fig. 1 Parasite species query system structure

1.3 系统界面设计 系统界面使用了jQuery EasyUI来完成,使用Layout组件将系统分为上、左、右3个区域,上部区域是系统logo,左部区域是检索表,右部区域是查询模块、数据列表模块和虫种信息展示模块。系统界面见图2。

2 数据库构建

2.1 数据采集及数据库创建 系统数据采集了《中国家畜家禽寄生虫名录(第二版)》[15]中所有的虫种信息,以及《中国畜禽寄生虫形态分类图谱》[14]和《中国畜禽线虫形态分类彩色图谱》[16]中的部分信息,并且提供数据更新。利用Apache POI[20]开源框架实现对书中描述的所有虫种信息进行数据采集,包括中文名称、拉丁文名称、同物异名、寄生宿主、寄生部位、地理分布以及其所属信息。用MySQL数据库管理系统,建立一个名为dvparasite的数据库,将书中采集到的虫种信息保存到数据库中。

图2 寄生虫虫种查询系统主界面Fig. 2 The main interface of parasite species query system

2.2 字段的设计 根据书中所采集的信息,以及系统升级的需要,设计出8项信息字段:虫种编号、中文名称、拉丁文名称、同物异名、寄生宿主、寄生部位、地理分布、所属门、所属纲、所属目、所属科、所属属、图片地址、书中编号以及形态描述,并将虫种编号设为主键,方便后续查询的需要。

3 JSON数据文件设计

3.1 数据文件的设计 由于系统采用LokiJS作为缓存数据库,必须将MySQL数据库中数据转换为LokiJS所需的数据文件。本系统设有5个JSON文件,分别是宿主数据、地理位置数据、寄生部位数据、菜单数据、虫种数据,由于一些浏览器不能异步加载JSON文件,在本系统中,将JSON文件变为JavaScript文件,每一个JSON文件,作为JavaScript对象来读取,并在系统加载的过程中,将JavaScript对象中所包含的数据读取到LokiJS中。

3.2 数据文件的功能 寄生动物数据文件、地理位置数据文件、寄生部位数据文件分别作为查询功能中寄生动物选择项(图3-A)、地理分布选择项(图3-B)和寄生部位选择项(图3-C)使用,检索表(图3-D)数据文件的结构是按照目、科、属顺序进行设计,作为虫种的二叉检索功能使用。虫种数据文件包含的信息同mysql数据库中字段信息一样。

4 系统查询功能

查询功能的字段包括中文名称、拉丁文名称、地理分布、寄生动物、寄生部位,通过多个字段组合缩小查询结果范围。

4.1 中文与拉丁文名称查询 两种名称查询利用LokiJS中find语句[21]的$contains,类似于模糊查询。例如用户在中文名称输入框中输入“蛔虫”,查询结果列表中会显示中文名称中包含“蛔虫”的所有虫种(图4)。

4.2 地理分布、寄生动物、寄生部位查询 地理分布选项中包含了我国32个省市自治区,目前仅支持单个区域查询,不能查询分布在多个地区的虫种。寄生动物包含26种动物,由于“名录”中有些寄生虫的宿主以家畜或家禽表示,为了保持原著的原意,没有将家畜或家禽拆分为相应的动物种类,仍使用家畜、家禽作为寄生动物类别。寄生部位选项包含216个选项,其数据全部来源于《中国家畜家禽寄生虫名录(第二版)》[15]。

图3 寄生虫虫种查询系统分界面Fig. 3 Parasite species query system interface

地理分布、寄生动物、寄生部位查询功能在程序设计采用模糊查询方式。由于地理分布选项中没有属于包含关系的选项,在使用过程中,其实际功能表现为精确查询。寄生动物、寄生部位中存在一些属于包含关系的选项,如与寄生动物“羊”相关的选项有绵羊、山羊、北山羊、岩羊等,与寄生部位“肠”相关的选项有大肠、小肠、结肠、回肠、直肠等。例如在寄生动物一栏输入或选择“羊”,在虫种列表中会出现所有与羊相关的寄生虫种类,查询结果如图5。

5 虫种信息模块

虫种信息包括所属信息、基本信息、形态特征和地理分布等4部分。

5.1 所属信息 展示该虫种所属的门、纲、目、科、属5级分类阶元,如“犊新蛔虫”的所属信息见图6。

5.2 基本信息 展示虫种中文名称、拉丁文名称、同物异名、地理分布(文字描述)、寄生宿主、寄生部位、书本编号(来源于文献15中的科属种编号)(图6)。

5.3 形态特征及虫种图片 形态特征及其图片信息来源于《中国畜禽寄生虫形态分类图谱》[14]和《中国畜禽线虫形态分类彩色图谱》[16],包括虫种的形态描述、特征部位及其数据,并配以图片进行说明(图7)。

图4 按中文名称查询示范Fig. 4 Query demonstration according to Chinese name

图5 按动物种类查询示范Fig. 5 Query demonstration according to animal species

图6 所属信息和基本信息展示(以犊新蛔虫为例)Fig. 6 Demonstration of subsidiary information and basic information(Neoascaris vitulorum as an example)

图7 形态特征及虫种图片展示(以犊新蛔虫为例)Fig. 7 Demonstration of the morphological characters and parasite species(Neoascaris vitulorum as an example)

5.4 地理分布(地图说明) 系统界面为html网页,在地理分布图表绘制中,采用了百度公司数据可视化团队开发的商业产品图表库Echarts(Enterprise Charts)[19]。由于Echarts具有轻量、简单易用的特点,因此用它来展示虫种地理分布信息。

图8 虫种地理分布图(以犊新蛔虫为例,黄色区域是虫种分布区域)Fig. 8 Geographical distribution graph of parasites(Neoascaris vitulorum as an example, yellow area is parasite species’ distribution area)

6 结束语

本系统采用了一款优秀的跨浏览器开源插件EasyUI[17]设计系统界面,基于LokiJS实现数据读取、存储,在此基础上实现复杂的数据查询,并通过EasyUI相关组件来完成结果展示,以及通过Echarts绘制地理分布图。与基于B/S架构或者C/S架构设计的传统查询系统比较,由于本系统不需要网络来完成数据传输,以及基于LokiJS内存数据库,查询数据可达到毫秒级,可节省用户查询时间。由于本系统界面使用EasyUI中Layout布局[22],各模块之间的大小可根据用户的喜好进行调节,提高了用户的操作体验。

本系统数据来源于《中国家畜家禽寄生虫名录(第二版)》[15]、《中国畜禽寄生虫形态分类图谱》[14]、《中国畜禽线虫形态分类彩色图谱》[16],以及将陆继出版的相关寄生虫专著,该系统具有较高的权威性和完整性,可以在进行寄生虫分类、畜禽寄生虫病流行病学调查等科研、教学和科普宣传中作为参考依据。

本系统是利用JavaScript脚本语言和HTML开发,以目前的技术手段,使用者无法对本地数据进行修改,所以本系统只能作为查询使用。后期对数据的维护与更新,需要开发者来完成。此外,从目前一些用户反馈情况来看,本系统还存在一些不足:第一,虫种信息的展示应该单独放在一个页面中,这样就不会造成整个操作界面的视觉拥挤;第二,地理分布、寄生动物、寄生部位仅支持单项查询,如果用户想要查询某个寄生于多个宿主、多个部位、多地区分布的虫种时,只能打开多个系统网页,手动地进行归并;第三,系统还可以添加一些统计功能等等。针对这些不足之处,系统开发者将在后期版本中进一步修改优化。

[1] NCBI. GenBank[EB/OL]. [2016-04-22]. https://www. ncbi.nlm.nih.gov/genbank/.

[2] EBI. EMNL[EB/OL]. [2016-04-22]. http://www.ebi. ac.uk/.

[3] National Science Foundation. PDB[EB/OL]. [2016-04-22]. http://www.rcsb.org/pdb/home/home.do.

[4] 维基百科. 维基物种[EB/OL]. [2016-04-22]. https:// species.wikimedia.org/wiki/Main_Page.

[5] 中国科学院动物研究所. 中国动物主题数据库[EB/OL]. [2016-04-22]. http://www.zoology.csdb.cn/.

[6] 中国物种网. 中国物种网首页[EB/OL]. [2016-04-22]. http://www.sppchina.com/.

[7] 中国科学院植物研究所. 中国植物志网站[EB/OL]. [2016-04-22]. http://frps.eflora.cn/.

[8] 杨学云, 王开胜, 姜悦平. 畜禽寄生蠕虫形态学分类检索系统的建立及其应用[J]. 中国农学通报, 2004, 20(1): 116-118.

[9] 周杰, 黄兵. 中国畜禽寄生虫分类鉴定专家系统研究[J].科学研究月刊, 2007(4): 47-51.

[10] 陈进会, 蒋智钢. 禽类寄生虫计算机识别系统[J]. 检验检疫科学, 2008, 18(1): 30-32.

[11] 陈自强, 贾雍, 彭鸿娟, 等. 医学寄生虫网络资料数据库的建立[J]. 第一军医大学学报, 2003, 23(1): 50-52.

[12] 沈海默, 胡薇, 陈韶红, 等. 基于J2EE平台的寄生虫虫种资源库的构建[J]. 中国兽医寄生虫病, 2007, 15(1): 8-12.

[13] 沈杰, 黄兵, 廖党金, 等. 中国家畜家禽寄生虫名录[M].北京: 中国农业科学技术出版社, 2004.

[14] 黄兵, 沈杰, 董辉, 等. 中国畜禽寄生虫形态分类图谱[M]. 2版. 北京: 中国农业科学技术出版社, 2006.

[15] 黄兵, 董辉, 韩红玉. 中国家畜家禽寄生虫名录[M]. 北京: 中国农业科学技术出版社, 2014.

[16] 廖党金, 黄兵, 叶勇刚, 等. 中国畜禽线虫形态分类彩色图谱[M]. 北京: 科学出版社, 2016.

[17] jQuery EasyUI中文网. EasyUI简介[EB/OL]. [2016-04-22]. http://www.jeasyui.net. [2014-2015].

[18] LokiJS官网. LokiJS介绍[EB/OL]. [2016-04-22]. http:// lokijs.org/. [2013].

[19] Baidu. Echarts介绍[EB/OL]. [2016.4.22]. http://echarts. baidu.com/echarts2/doc/feature.html. [2015].

[20] The Apache Software Foundation. Apache POI[EB/OL]. [2016-04-22]. http://poi.apache.org/. [2002-2016].

[21] LokiJS官网. LokiJS中find查询介绍[EB/OL]. [2016-04-22]. http://lokijs.org/#/docs#find.

[22] jQuery EasyUI中文网. layout介绍和使用[EB/OL]. [2016-04-22]. http://www.jeasyui.com/documentation/ layout.php. [2010-2015].

DEVELOPMENT ON QUERY SYSTEM OF LIVESTOCK AND POULTRY PARASITES BASED ON THE SINGLE VERSION OF LOKIJS

YANG Zhi-yuan1,2, DONG Hui2, ZHU Shun-hai2, TANG Min1,2, ZHAO Qi-ping2, HAN Hong-yu2, HUANG Bing2,3

(1. College of Life and Environment Sciences, Shanghai Normal University, Shanghai 200234, China; 2. Key Laboratory of Animal Parasitology of Ministry of Agriculture, Shanghai Veterinary Research Institute, CAAS, Shanghai 200241, China; 3. Jiangsu Co-innovation Center for Prevention and Control of Important Animal Infectious Diseases and Zoonoses, Yangzhou 225009, China)

To implement off ine queries for Chinese livestock and poultry parasite resource, we constructed a standalone version of the query system based on LokiJS for main memory database. This system extracted data from A List of Parasites for Livestock and Poultry in China (Second Edition), Classic Atlas of Parasites for Livestock and Poultry in China, and Color Atlas of Morphological Classif cation of Parasites for Livestock and Poultry in China series, applied the Apache POI to gather species information, used easyUI system interface design and adopted Echarts to draw species map of geographical distribution. It can query more than 2400 parasite species or subspecies for their Chinese names, Latin names, geographical distributions, parasitic hosts, parasitic parts. It can also query more than 1000 parasite species for morphological descriptions, morphological structures or color photos. The system does not need to be installed into individual computers. It can run directly on the local computers and the query speed can reach to millisecond but occupy less system resources. The query system provides an eff cient and convenient tool for getting information on parasite species in China and plays an important reference in parasitology research, teaching and prevention and control of parasitic diseases.

Livestock; poultry; parasites; database; query

S852.7

A

1674-6422(2017)03-0073-07

2016-08-03

国家科技基础性工作专项(2012FY120400)

杨志远,男,硕士研究生,动物学专业

黄兵,E-mail: hb@shvri.ac.cn

猜你喜欢
寄生虫畜禽分类
海洋中“最难缠”的寄生虫:藤壶
畜禽夏季喂野菜 防病快长真不赖
菌株出马让畜禽污染物变废为宝
夏季养畜禽 驱蚊有妙招
上海祥欣畜禽有限公司
白话寄生虫
分类算一算
《热带病与寄生虫学》杂志稿约
分类讨论求坐标
教你一招:数的分类