• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Perl語(yǔ)言的高級(jí)維恩圖的設(shè)計(jì)

      2021-12-24 04:30金會(huì)會(huì)
      科技資訊 2021年30期

      摘 ?要:由于在科研或者教學(xué)工作中需要美觀化展現(xiàn)不同數(shù)據(jù)集的交集,目前維恩圖在各個(gè)學(xué)科領(lǐng)域應(yīng)用廣泛。但受制于目前繪制工具和平臺(tái)的限制,在線維恩圖繪制方法軟件提供的繪制維度普遍小于5個(gè),所以科研工作人員迫切地需要一款繪圖方法來(lái)表達(dá)更高維度的維恩圖來(lái)展現(xiàn)自己的結(jié)果。該文利用Perl語(yǔ)言和SVG相結(jié)合,開發(fā)出一套可繪制高緯度維恩圖的方法,僅需要準(zhǔn)備好純文本數(shù)據(jù)文件,執(zhí)行程序命令即可得到高質(zhì)量的維恩矢量圖。

      關(guān)鍵詞:維恩圖 ?Perl語(yǔ)言 ?SVG ?科研工具 ?Venn Plot

      中圖分類號(hào):TP393.092文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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]也叫維恩圖, 即用一條封閉曲線直觀地表示集合及其關(guān)系的圖形。由英國(guó)的邏輯學(xué)家韋恩提出,他是第一個(gè)想到用這樣的圖來(lái)表示事物之間關(guān)系的人。維恩圖一直是會(huì)議和演示的主要內(nèi)容,維恩圖提供了一種清晰、有效的方式來(lái)直觀地展示數(shù)據(jù)集之間的關(guān)系。在維恩圖中,圓圈代表具有共享屬性的事物組。這些圓圈重疊的區(qū)域代表同樣屬于重疊組的個(gè)人。維恩圖中的圓圈可以部分重疊、完全重疊,甚至可以分開,一目了然地看到組之間的關(guān)系。維恩圖有很多用途:解釋關(guān)系、顯示組織系統(tǒng)、說(shuō)明復(fù)雜的事物和系統(tǒng)。維恩圖可以幫助團(tuán)隊(duì)在頭腦風(fēng)暴或解決問(wèn)題時(shí)分解復(fù)雜的想法。維恩圖的應(yīng)用不勝枚舉,在生物學(xué)領(lǐng)域常用來(lái)表示不同分組樣本的結(jié)果重疊情況。

      Perl[2]是一種功能豐富且可以穩(wěn)定的跨平臺(tái)編程語(yǔ)言,Perl語(yǔ)言的應(yīng)用范圍很廣,運(yùn)行在超過(guò)多種計(jì)算機(jī)平臺(tái)上,適用廣泛,Perl被用于圖形編程、系統(tǒng)管理、網(wǎng)絡(luò)編程、金融、生物以及其他領(lǐng)域。Perl被稱為腳本語(yǔ)言中的瑞士軍刀,由于英文翻譯的首字母原因,簡(jiǎn)稱為Perl(Practical Extraction and Report Language),在生物學(xué)方面的應(yīng)用較多,其中核酸和蛋白質(zhì)文本處理能力表現(xiàn)優(yōu)異,該研究結(jié)合Perl的字符處理能力和SVG的表現(xiàn)渲染能力,巧妙地展現(xiàn)了交集數(shù)據(jù)集。

      1 ?維恩圖的現(xiàn)狀分析

      1.1 ?基于PubMed公共數(shù)據(jù)庫(kù)的引用統(tǒng)計(jì)

      美國(guó)國(guó)家醫(yī)學(xué)圖書館(The United States National Library of Medicine, NLM),由美國(guó)聯(lián)邦政府經(jīng)營(yíng)管理,是世界上最大的醫(yī)學(xué)圖書館,其前身為成立于1836年的美國(guó)公共衛(wèi)生部部長(zhǎng)辦公室圖書館。在各個(gè)學(xué)科發(fā)展方向具有重要的指導(dǎo)意義。PubMed系統(tǒng)是由美國(guó)國(guó)家醫(yī)學(xué)圖書館(NLM)的國(guó)家生物技術(shù)信息中心(NCBI)開發(fā)研制的一個(gè)醫(yī)學(xué)文獻(xiàn)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)。維恩圖在PubMed中出現(xiàn)的頻率有逐年上升的趨勢(shì),越來(lái)越成為科研人員展現(xiàn)數(shù)據(jù)的一個(gè)熱門方法。圖1展示的圖片數(shù)據(jù)來(lái)源PubMed系統(tǒng)檢索,通過(guò)搜索“Venn Diagram”關(guān)鍵詞匹配下載到最近10年的公共醫(yī)學(xué)論文引用數(shù)據(jù),引用趨勢(shì)如圖1所示。

      從圖1中可以看出,近10年來(lái),韋恩圖方法[3]的引用頻率逐年提高,其中增幅較大的是2020年度。說(shuō)明這個(gè)展示和統(tǒng)計(jì)方法在各個(gè)學(xué)科的應(yīng)用越來(lái)越多,但是目前市面上可以供使用的工具方法有較大的缺陷和局限性,其中數(shù)據(jù)集表現(xiàn)維度就受到嚴(yán)格的控制,普遍是4個(gè)維度的表現(xiàn)形式,對(duì)于科研人員來(lái)說(shuō),是個(gè)需要急需解決的問(wèn)題。

      1.2 ?維恩圖的主流在線軟件情況

      目前網(wǎng)絡(luò)上提供免費(fèi)在線維恩繪圖軟件眾多[4],表1為常用軟件信息比較。其中以有權(quán)威性的西班牙馬德里大學(xué)國(guó)家生物技術(shù)中心提供的在線工具VENNY 2.1版本為例,如圖2所示,目前該網(wǎng)站可以提供的繪圖維度最高為4個(gè)維度,對(duì)應(yīng)科研人員來(lái)說(shuō),如果數(shù)據(jù)集超過(guò)4個(gè),則展示會(huì)受制于在線軟件[5]。

      通過(guò)圖2為案例,運(yùn)用VENNY2.1版本工具展示,可以看出在線工具的巨大局限性,其只可以提供4個(gè)維度的數(shù)據(jù)交集展示,這對(duì)于實(shí)際的科研、統(tǒng)計(jì)等需求是不足的。

      2 ?基于Perl語(yǔ)言開發(fā)程序原理

      2.1 程序開發(fā)思路

      基于SVG[6]的格式模板,利用Perl語(yǔ)言進(jìn)行輸入文件讀取并依據(jù)文本文件的個(gè)數(shù)和文本文件的單行關(guān)鍵詞進(jìn)行哈希存儲(chǔ)處理,然后對(duì)哈希存儲(chǔ)的數(shù)據(jù)重新進(jìn)行SVG文件寫入,生成新的SVG格式模板文件,利用常規(guī)的illustrator或者Photoshop既可以打開該文件,同時(shí)可以對(duì)高質(zhì)量的矢量圖(SVG圖)進(jìn)行PNG、JPG等格式轉(zhuǎn)換。

      2.2 程序開發(fā)代碼

      #!/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語(yǔ)言的繪制過(guò)程及結(jié)果

      3.1 程序執(zhí)行

      在windows系統(tǒng)或mac系統(tǒng)環(huán)境安裝perl編程語(yǔ)言,進(jìn)入終端界面調(diào)用perl解釋器運(yùn)行,執(zhí)行命令如下:

      perl venn.pl A_file.txt B_file.txt C_file.txt > A_B_C.svg

      3.2 程序執(zhí)行結(jié)果文件匯總

      分別模擬了7個(gè)數(shù)據(jù)文件,各個(gè)文件命名為A.txt、B.txt、C.txt、D.txt、E.txt、F.txt、G.txt,在每個(gè)文件里是單行一個(gè)關(guān)鍵詞,通常情況下是英文狀態(tài)下的關(guān)鍵詞。文件里面行與行之間允許出現(xiàn)空行。表2是對(duì)7個(gè)數(shù)據(jù)集分別進(jìn)行6個(gè)組合計(jì)算。

      分別對(duì)6個(gè)組合執(zhí)行運(yùn)算得到對(duì)應(yīng)的圖表數(shù)據(jù),并展示不同維度的韋恩圖,具體見圖3,按照環(huán)形圖的個(gè)數(shù)依次分類,其中最高7個(gè)數(shù)據(jù)集維度見圖4。

      圖4中A、B、C、D、E、F、G標(biāo)簽分別對(duì)應(yīng)每個(gè)數(shù)據(jù)集的名稱,各個(gè)交叉區(qū)域單元的數(shù)字是指交集共有部分的統(tǒng)計(jì)頻率,按照維恩統(tǒng)計(jì)規(guī)律來(lái)看,目前呈現(xiàn)表3分布如下。

      如圖5所示,隨著維恩圖維度的提供,出現(xiàn)的交集區(qū)域(亞區(qū)域)個(gè)數(shù)快速上升,難度也越來(lái)越大。通過(guò)分析可以發(fā)現(xiàn),設(shè)定維度個(gè)數(shù)為N,亞區(qū)域?qū)?yīng)為Mn,則對(duì)應(yīng)關(guān)系公式為:Mn=2N-1。

      4 結(jié)語(yǔ)

      該文通過(guò)分析國(guó)外研究趨勢(shì)和現(xiàn)實(shí)發(fā)展需要,通過(guò)結(jié)合Perl編程語(yǔ)言和SVG語(yǔ)言的功能,開發(fā)出繪制高緯度的Venn圖流程,使得在該應(yīng)用層面的繪圖可能性得到擴(kuò)展。在平時(shí)的科研工作中,匯報(bào)及寫作以及數(shù)據(jù)展示能力得到提升,同時(shí)也為指導(dǎo)學(xué)生論文工作提供了更廣泛的科研工具,可應(yīng)用在學(xué)生論文的插入圖表提供工具支撐。同樣,在其他相關(guān)數(shù)據(jù)領(lǐng)域,對(duì)于同類型的數(shù)據(jù)繪圖具有較好的平移、適應(yīng)和普適性的應(yīng)用。

      參考文獻(xiàn)

      [1] JIA ?A Q,XU ?L,WANG ?Y.Venn Diagrams in Bioinformatics[J].Briefings in Bioinformatics,2021,5(22):108.

      [2] 張婷婷,龐雪原,晏佳蕓.Perl語(yǔ)言統(tǒng)計(jì)核酸GC含量程序開發(fā)[J].科技資訊,2019,17(13):22,24.

      [3] 羅紅梅,張永鋒.基于Venn方法與ArgGis的水上交通安全隱患點(diǎn)風(fēng)險(xiǎn)等級(jí)初步研究[J].科技資訊,2018,16(21):118-121,123.

      [4] 馬玉芬. 韋恩圖在高中生物學(xué)教學(xué)中的應(yīng)用研究[D].貴陽(yáng):貴州師范大學(xué),2020.

      [5] 郭丹丹,邰楊芳.基于韋恩圖的國(guó)內(nèi)圖書情報(bào)領(lǐng)域智庫(kù)研究主題演化分析[J].晉圖學(xué)刊,2021(4):8-15.

      [6] 潘博.SVG圖形在Web設(shè)計(jì)中的應(yīng)用研究[J].科學(xué)技術(shù)創(chuàng)新,2020(15):88-89.

      作者簡(jiǎn)介:金會(huì)會(huì)(1990—),男,碩士,助教,研究方向?yàn)樯镄畔W(xué)。

      九寨沟县| 平远县| 化州市| 绥江县| 彰武县| 鸡西市| 武城县| 深州市| 清丰县| 竹北市| 韶山市| 于田县| 兴宁市| 定结县| 皋兰县| 云和县| 华安县| 青海省| 呼和浩特市| 耿马| 洛川县| 溧阳市| 油尖旺区| 吉首市| 西和县| 边坝县| 游戏| 台山市| 丰县| 建宁县| 平昌县| 昌吉市| 湘乡市| 陕西省| 青田县| 云龙县| 攀枝花市| 黑山县| 文登市| 大厂| 永康市|