摘 要:由于在科研或者教学工作中需要美观化展现不同数据集的交集,目前维恩图在各个学科领域应用广泛。但受制于目前绘制工具和平台的限制,在线维恩图绘制方法软件提供的绘制维度普遍小于5个,所以科研工作人员迫切地需要一款绘图方法来表达更高维度的维恩图来展现自己的结果。该文利用Perl语言和SVG相结合,开发出一套可绘制高纬度维恩图的方法,仅需要准备好纯文本数据文件,执行程序命令即可得到高质量的维恩矢量图。
关键词:维恩图 Perl语言 SVG 科研工具 Venn Plot
中图分类号:TP393.092文献标识码:A 文章编号:1672-3791(2021)10(c)-0000-00
Design of High-Level Venn Diagram Based on Perl Language
JIN Huihui
(Yangzhou Institute of Technology, Yangzhou, Jiangsu Province, 225000 China)
Abstract: Because the intersection of different data sets needs to be aesthetically displayed in scientific research or teaching work, Venn diagrams are currently widely used in various disciplines. However, due to the limitations of the current drawing tools and platforms, the online Venn diagram drawing method software provides generally less than 5 drawing dimensions. Therefore, scientific researchers urgently need a drawing method to express a higher-dimensional Venn diagram to show themselves their results. Using the combination of Perl language and SVG, this paper developed a set of methods that can draw high-latitude Venn diagrams. We just need to prepare a plain text data file and execute commands to get the target high-quality diagram.
Key Words: Venn diagram; Perl language; SVG; Research tools; Venn Plot
Venn图[1]也叫维恩图, 即用一条封闭曲线直观地表示集合及其关系的图形。由英国的逻辑学家韦恩提出,他是第一个想到用这样的图来表示事物之间关系的人。维恩图一直是会议和演示的主要内容,维恩图提供了一种清晰、有效的方式来直观地展示数据集之间的关系。在维恩图中,圆圈代表具有共享属性的事物组。这些圆圈重叠的区域代表同样属于重叠组的个人。维恩图中的圆圈可以部分重叠、完全重叠,甚至可以分开,一目了然地看到组之间的关系。维恩图有很多用途:解释关系、显示组织系统、说明复杂的事物和系统。维恩图可以帮助团队在头脑风暴或解决问题时分解复杂的想法。维恩图的应用不胜枚举,在生物学领域常用来表示不同分组样本的结果重叠情况。
Perl[2]是一种功能丰富且可以稳定的跨平台编程语言,Perl语言的应用范围很广,运行在超过多种计算机平台上,适用广泛,Perl被用于图形编程、系统管理、网络编程、金融、生物以及其他领域。Perl被称为脚本语言中的瑞士军刀,由于英文翻译的首字母原因,简称为Perl(Practical Extraction and Report Language),在生物学方面的应用较多,其中核酸和蛋白质文本处理能力表现优异,该研究结合Perl的字符处理能力和SVG的表现渲染能力,巧妙地展现了交集数据集。
1 维恩图的现状分析
1.1 基于PubMed公共数据库的引用统计
美国国家医学图书馆(The United States National Library of Medicine, NLM),由美国联邦政府经营管理,是世界上最大的医学图书馆,其前身为成立于1836年的美国公共卫生部部长办公室图书馆。在各个学科发展方向具有重要的指导意义。PubMed系统是由美国国家医学图书館(NLM)的国家生物技术信息中心(NCBI)开发研制的一个医学文献网络数据库。维恩图在PubMed中出现的频率有逐年上升的趋势,越来越成为科研人员展现数据的一个热门方法。图1展示的图片数据来源PubMed系统检索,通过搜索“Venn Diagram”关键词匹配下载到最近10年的公共医学论文引用数据,引用趋势如图1所示。
从图1中可以看出,近10年来,韦恩图方法[3]的引用频率逐年提高,其中增幅较大的是2020年度。说明这个展示和统计方法在各个学科的应用越来越多,但是目前市面上可以供使用的工具方法有较大的缺陷和局限性,其中数据集表现维度就受到严格的控制,普遍是4个维度的表现形式,对于科研人员来说,是个需要急需解决的问题。
1.2 维恩图的主流在线软件情况
目前网络上提供免费在线维恩绘图软件众多[4],表1为常用软件信息比较。其中以有权威性的西班牙马德里大学国家生物技术中心提供的在线工具VENNY 2.1版本為例,如图2所示,目前该网站可以提供的绘图维度最高为4个维度,对应科研人员来说,如果数据集超过4个,则展示会受制于在线软件[5]。
通过图2为案例,运用VENNY2.1版本工具展示,可以看出在线工具的巨大局限性,其只可以提供4个维度的数据交集展示,这对于实际的科研、统计等需求是不足的。
2 基于Perl语言开发程序原理
2.1 程序开发思路
基于SVG[6]的格式模板,利用Perl语言进行输入文件读取并依据文本文件的个数和文本文件的单行关键词进行哈希存储处理,然后对哈希存储的数据重新进行SVG文件写入,生成新的SVG格式模板文件,利用常规的illustrator或者Photoshop既可以打开该文件,同时可以对高质量的矢量图(SVG图)进行PNG、JPG等格式转换。
2.2 程序开发代码
#!/bin/perl
use strict;
use warnings;
use Getopt::Long;
use Pod::Usage;
my ($help);
my $figlabel = "";
GetOptions(
'help'=>\$help,
'figlabel:s'=>\$figlabel,
);
pod2usage 1 if($help or @ARGV < 2 or @ARGV > 7);
my %venn;
my %lab;
my $count = 0;
for my $name(@ARGV){
open FILEINPUT,"$name" or die "Please Check Directory file : $name\n";
my @family = <FILEINPUT>;
close FILEINPUT;
chomp @family;
my %fam;
for(@family){
next if(/^\s*$/);
$fam{$_} = 1;
}
for(keys %fam){
$venn{$_} += 2**$count;
}
$name = `basename $name`;
chomp $name;
$name =~ s/.txt//;
$lab{2**$count} = $name;
$count ++;
}
my %count;
for(keys %venn){
$count{$venn{$_}} ++;
print ($count{$venn{$_}} ++);
print ("\n");
}
open FILE,"/svgDB/venn$count.svg";
while(<FL>){
if(/>(\d+)<\/text>/){
my $num = defined $count{ $1 } ? $count{ $1 } : 0;
s/>(\d+)<\/text>/>$num<\/text>/;
}elsif(/>([A-Z])<\/text>/){
my $flag = 2 ** (ord($1) - ord("A"));
my $lab = defined $lab{$flag} ? $lab{$flag} : "undef";
s/>[A-Z]<\/text>/>$lab<\/text>/;
}else{
s/>figlabel<\/text>/>$figlabel<\/text>/;
}
print;
}
close FILE;
3 基于Perl语言的绘制过程及结果
3.1 程序执行
在windows系统或mac系统环境安装perl编程语言,进入终端界面调用perl解释器运行,执行命令如下:
perl venn.pl A_file.txt B_file.txt C_file.txt > A_B_C.svg
3.2 程序执行结果文件汇总
分别模拟了7个数据文件,各个文件命名为A.txt、B.txt、C.txt、D.txt、E.txt、F.txt、G.txt,在每个文件里是单行一个关键词,通常情况下是英文状态下的关键词。文件里面行与行之间允许出现空行。表2是对7个数据集分别进行6个组合计算。
分别对6个组合执行运算得到对应的图表数据,并展示不同维度的韦恩图,具体见图3,按照环形图的个数依次分类,其中最高7个数据集维度见图4。
图4中A、B、C、D、E、F、G标签分别对应每个数据集的名称,各个交叉区域单元的数字是指交集共有部分的统计频率,按照维恩统计规律来看,目前呈现表3分布如下。
如图5所示,随着维恩图维度的提供,出现的交集区域(亚区域)个数快速上升,难度也越来越大。通过分析可以发现,设定维度个数为N,亚区域对应为Mn,则对应关系公式为:Mn=2N-1。
4 结语
该文通过分析国外研究趋势和现实发展需要,通过结合Perl编程语言和SVG语言的功能,开发出绘制高纬度的Venn图流程,使得在该应用层面的绘图可能性得到扩展。在平时的科研工作中,汇报及写作以及数据展示能力得到提升,同时也为指导学生论文工作提供了更广泛的科研工具,可应用在学生论文的插入图表提供工具支撑。同样,在其他相关数据领域,对于同类型的数据绘图具有较好的平移、适应和普适性的应用。
参考文献
[1] JIA A Q,XU L,WANG Y.Venn Diagrams in Bioinformatics[J].Briefings in Bioinformatics,2021,5(22):108.
[2] 张婷婷,庞雪原,晏佳芸.Perl语言统计核酸GC含量程序开发[J].科技资讯,2019,17(13):22,24.
[3] 罗红梅,张永锋.基于Venn方法与ArgGis的水上交通安全隐患点风险等级初步研究[J].科技资讯,2018,16(21):118-121,123.
[4] 马玉芬. 韦恩图在高中生物学教学中的应用研究[D].贵阳:贵州师范大学,2020.
[5] 郭丹丹,邰杨芳.基于韦恩图的国内图书情报领域智库研究主题演化分析[J].晋图学刊,2021(4):8-15.
[6] 潘博.SVG图形在Web设计中的应用研究[J].科学技术创新,2020(15):88-89.
作者简介:金会会(1990—),男,硕士,助教,研究方向为生物信息学。