前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇网络的利和弊范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
关键词:生物分子网络比对; 自适应; 混合算法; 并行化
中图分类号:TP391; TP311 文献标志码:A
0引言
近年来,生物分子网络比对受到越来越多的关注。通过对生物分子网络比对结果的分析,小到生物分子的功能,生物分子相互作用的意义;大到组织器官的工作机理,生物物种进化,都可以得到更进一步的研究和探索[1]。目前已经有一些研究小组进行了这方面的研究并提出了一些算法[2-6]。然而生物分子网络大多是复杂网络,其比对涉及到大量的计算,是一个相当困难的问题[7]。即使是针对较小的网络,穷举搜索也是不可实现的。目前已有的比对算法,在计算规模上都存在瓶颈。随着生命科学的发展,特别是在人类基因计划完成之后,生物数据呈爆炸式增长,生物分子网络的规模也越来越大,而对计算效率的要求则是越来越高。因此,高效的并行生物分子网络比对算法的实现成为了必然。
目前存在的并行方式有很多种,每种方法都各有其优缺点。生物分子网络具有生物背景,在对生物分子网络比对算法进行并行化时,除了保证较好的计算效率之外,还需要和生物分子网络的生物学意义相结合,通过实验分析,发现不同并行方法在进行生物分子网络比对算法并行时的优劣性,选择合适的并行方式。
1生物分子网络比对
通过使用图论的方法来研究生物分子网络。对于一个给定的生物分子网络,使用图G(V,E)来表示,其中V和E分别表示节点集和边集。图中的节点表示一个生物分子,边表示两个生物分子间的某种特定关系。本文研究的主要是基于可以用无向图来表示的蛋白质相互作用网络(ProteinProtein Interaction Network, PPIN)。
因此生物分子网络的比对就是图的比对,下面给出其形式化定义。
定义1
2自适应匈牙利贪心混合算法及其并行化
2.1自适应匈牙利贪心混合算法
自适应匈牙利贪心混合算法(Adaptive Hungary Greedy Algorithm,AHGA)[9]是笔者团队提出的PPIN搜索比对算法。
比起其他生物分子网络比对算法,该算法有以下明显的特点:
1)综合考虑生物分子网络中生物分子间的生物序列相似性和生物分子网络的拓扑结构相似性;
2)在进行生物分子网络比对时,结合匈牙利算法[10-11]和贪心算法在较短的时间内找到较优的比对;
3)比对结束后,根据邻居优先原则对相似性矩阵进行更新,然后进行迭代。
结合前面对于生物分子网络比对的定义,对于节点数分别为n1和n2的网络G1、G2比对,Algorithm1是其伪码实现:
其中第一步是获取需要比对的两个物种的fasta文件,使用BLAST[12]工具计算得到G1和G2间的初始相似矩阵S0,其中的每一个元素S0(a,b)表示两个网络中一对节点a∈G1,b∈G2间的生物序列相似性,也是迭代第0步的相似矩阵。
在第二步的比对中,为找出满足前面定义中要求的相似性最高的节点间映射,基于当前步得到的相似矩阵,结合使用贪心算法和匈牙利算法进行比对。匈牙利算法在此类问题的计算上是公认的优秀算法,但是数据敏感性较强。生物分子网络的相似性矩阵是稀疏矩阵,大部分不太适合使用匈牙利算法处理。贪心算法对这种数据的处理完全没有问题,但是得到的结果不如匈牙利算法。为扬长避短,在算法中,首先对相似性矩阵进行预处理,把适合匈牙利算法的数据提取出来使用匈牙利算法进行处理,剩下的使用贪心算法进行处理。这样既可以得到较好的结果,又避免了生物数据使用匈牙利算法无法处理的问题。
第三步在比对的结果上进行相似性得分Score和边正确率EC值的计算,计算公式如下:
第四步更新相似矩阵,使用的是邻居节点优先原则,即匹配节点对的邻居节点匹配的可能性更大。就是说,对于两个网络中的一对节点,如果它们的邻居节点匹配上了,那么它们匹配上的可能性应该增加。基于此邻居优先原则,对第二步比对结果中匹配上的节点对的邻居节点间的相似性进行调整,得到新的相似矩阵。
第五步结合网络拓扑结构,计算两个网络节点间的拓扑相似系数,综合第四步得到的相似矩阵,迭代计算出下一次的相似矩阵。
其中α为0到1之间的值,由用户输入,用来调控序列相似性和拓扑相似性的比例。
第六步判断是否收敛,收敛条件是连续三次得分不变,或者相似矩阵一致收敛或震荡收敛。收敛则停止计算,从迭代结果中抽取最好结果作为最终结果;否则返回第二步。
2.2算法复杂度分析
对算法作并行处理的根本目的是降低算法的时间复杂度,而一个算法的时间复杂度取决于时间复杂度最高的部分,所以在并行处理之前先对算法时间复杂度进行分析。
算法的第一步使用工具进行计算,可以不进行考虑;
2.3算法并行化
2.3.1MPI并行
由于移植性好、功能强大、效率高等诸多优点,MPI(Message Passing Interface)目前已经成为国际上的一种并行程序标准。现行的MPI有多个发行版本,都是免费的,几乎所有的并行计算机上都提供对它们的支持。MPI其实就是一个库,具有上百个函数调用接口,目前主流的并行编程语言如Fortran、C/C++等都能够直接对这些函数进行调用[13]。
通过前面的分析可知,并行化处理主要是在相似矩阵的迭代计算部分。而在这个部分中,算法有以下两个很显著的特点:
1)相似矩阵中每个元素的计算是相互独立的,它们只需要上一步的相似矩阵的值和两个网络的邻接信息,计算过程中不需要通信。
2)相似矩阵的每个元素(要比对的网络中的每一对节点)的计算涉及到这一对节点的邻居和非邻居节点间的相似性,而随着节点对的不同,邻居节点和非邻居节点也是不确定的,所以每个元素计算过程中需要上一步相似矩阵中的哪些元素也是随着节点的变化而变化的,是不确定的。所以,G1的邻接矩阵、G2的邻接矩阵和上一步的相似矩阵这三个数据,在每一个元素的计算中都需要。
根据特点1)可以预见,MPI算法的大致思想将会是对要计算的相似矩阵进行划分,然后每个计算节点独立地计算划分的一个部分;在所有可用的节点中,还需要一个节点作为主节点进行数据的划分、分发和收集。如果任务划分得太细,比如每个进程计算一个元素,那么计算次数将会大大增加。
而由特点2)可以看出,每个任务计算时都要把全部的三组数据发送过去,这样将会大大增加通信量;而且主节点将会进行频繁地数据发送和收集整理,这会使主节点成为计算的瓶颈,降低并行效率。
在并行程序中,降低通信量、平衡各个计算节点的负载,都是提高并行效率所需要注意的。所以可以选择划分粒度较大的按行划分、按列划分或者按块划分,而且由特点1)可以看到,划分的方式对计算的影响并不大。但是按块划分需要进行的预处理远多于简单的按行或者是按列划分,因此不考虑按块划分。
而需要计算的相似矩阵是一个n1行、n2列的二维矩阵,在正常情况下,二维矩阵在计算机中是按照行来存储的,因此按行划分对数据的读取和修改都是比较有利的。所以在MPI并行处理中,最终选择了按行划分任务。
综上所述,MPI版本并行程序的处理方式为:将矩阵按行分为块,用p表示计算的进程数;然后主节点将计算所需的相似矩阵、邻接矩阵发送给各个计算节点,由各个节点计算相应的行,如果不能整除,则前m%p个进程多处理一行。
图2给出了MPI并行处理的流程,根据前面的分析可知,第一步获取初始相似矩阵,第二步根据当前相似矩阵匹配,第三步根据匹配结果打分,以及第四步根据比对结果更新相似矩阵和最后一步的判断收敛仍旧是串行处理,只有第五步的相似矩阵的迭代计算使用并行处理。并行部分有四步,如图2中虚线框部分所示。
2.3.2统一计算架构并行
图形处理器(Graphic Processing Unit,GPU)原本是专门进行计算机图形处理的部件。而现今GPU已经不再局限于图形处理,GPU通用技术的发展引起了不少的关注,而且事实也证明在浮点计算、并行计算等方面,GPU可以提供数十倍乃至于数百倍于CPU的性能。GPU通用计算方面的标准目前有OpenCL、统一计算架构(Compute Unified Device Architecture,CUDA)、ATI流处理(ATI Stream)等。其中OpenCL是早期的开发环境,而CUDA由于平台扩展性好、开发环境集成方便、开发程序简单易懂、对C/C++等编程语言支持较好,目前已经成为了GPU程序开发的首选[14]。
CUDA程序的核心思想大都是把数据从CPU传到GPU,然后通过线程索引,使每个线程并行地执行计算,最后把计算结果传回给CPU作进一步的处理和使用。
AHGA程序CUDA版本的并行,其思路和MPI版本的程序一样,只是在第五步作并行处理,而其余的步骤都在CPU中进行;
其程序流程和MPI版本也大体一致,只是每次到第五步需要进行相似矩阵迭代计算时,把需要计算的数据由CPU拷贝到GPU,然后在GPU上进行计算,计算完后再把结果从GPU传回CPU。CUDA版本的并行程序设计同样要结合算法和CUDA的特点。
图3是CPU和GPU的体系结构精简模型对比。从图3中可以看出,虽然CPU和GPU有着类似的结构,但最大的一个不同点在于,GPU中的一组控制逻辑对应多组运算单元。所以在GPU中,计算节点数可以有成百上千个,但是这些计算节点相对于CPU来说计算能力比较弱。为了能够充分利用GPU中大量的计算资源,进行较细粒度的划分是十分必要的;而且由于这些计算节点计算能力相对较弱,所以如果划分不够细,使得部分计算节点负载较大,而其他一些计算节点没有分配到任务,反而会造成资源浪费。
在CUDA程序中,可以在计算之前就把计算需要的数据整体存放在显存中,这样每个进程都可以访问,不需要对每个进程都发送数据。所以每一次计算,数据的发送只需要在计算之前和计算结束后分别进行一次即可。而算法在计算过程中完全没有通信,那么CUDA版本的并行程序就可以进行最大粒度的划分。因此,CUDA版本的程序是每个计算节点计算相似矩阵中的一个元素。其思路为:在GPU上设置与计算的元素数相同的任务数,即n1个,每个线程处理一个任务。而且由于程序不需要进行块分割,所以也不需要使用GPU的二维进程格(Grid)和二维进程块(Block),只需要一维的索引即可。大致流程如下:
1)把需要计算的相似矩阵转化为一维矩阵,从CPU传到GPU;
2)通过threadIdx、blockIdx、blockDim等变量进行线程索引,把线程对应的线程号和块号与需要计算的相似矩阵中的行和列号对应起来,使每个线程计算相似矩阵中不同位置的一个值;
3)把计算后的相似矩阵从GPU传回的CPU;
4)CPU把计算后的矩阵转回二维,继续进行后续工作。
3实验和结果分析
3.1数据和方法
MPI的软件环境是Red Hat 3.4.5操作系统,编译环境是GCC3.4.5,语言是C++和MPI;硬件环境是一个由14台IBM HS21刀片服务器和2台x3650服务器组成计算和管理节点的计算集群工作站;网络连接采用千兆以太网和InfiniBand 2.5G网连接各个节点,每个节点配置双核CPU和4GB内存,CPU为Intel xeon 5120 2.66GHz主频,每个刀片服务器计算节点配置73GB硬盘,2台x3650分别配置4×300GB硬盘作为主存储和管理节点,2台图形工作站作为前端机,可以进行科学数据可视化。
CUDA的软件环境是centos6.4的操作系统,编译环境是GCC4.4.6和CUDA5.0,使用语言是C++和CUDA;硬件环境是HP Z800工作站,其显卡为NVIDIA Tesla C1060,拥有30多个流多处理器(multiprocessor),每个流多处理器拥有8个处理核心(core),一共有240个处理核心,共享256MB显存。
MPI的加速比实验使用的是38个节点164条边、150个节点969条边、300个节点2092条边和500个节点7315条边的酵母PPIN作为网络A,9138个节点41456条边的人类PPIN作为网络B[6],使用4、8、16个节点进行并行加速计算。
MPI和CUDA的比较则分别用28个节点194条边、36个节点164条边、60个节点407条边、100个节点1338条边的酵母PPIN作为网络A,9138个节点41456条边的人类PPIN作为网络B;MPI程序中使用4个节点进行并行计算,而CUDA程序中的进程数与比对的两个网络的节点数的乘积相同。
3.2结果和分析
图4是AHGA的MPI并行算法分别用4、8、16个节点计算38、150、300、500个节点的酵母PPIN与9138个节点的人类PPIN比对的计算加速比统计。从中可以看出,随着网络规模的增加,并行算法的加速效果越来越好,其中500个节点的酵母PPIN的比对结果,使用4个节点计算的加速比达到了3.4,8个节点的计算加速比达到了5.7,16个节点计算的加速比达到了9.1。所以,MPI并行算法非常适合处理数据规模较大的生物分子网络比对问题。
图5是使用4个计算节点的MPI版本和CUDA版本的并行AHGA算法分别计算28、36、60、100个节点的酵母PPIN与9138个节点的人类PPIN比对的加速比统计。由于GPU硬件环境的显存上限问题,目前CUDA并行算法还只能处理较小的网络,但是网络B的规模较大(9138个节点41456条边),所以也属于大规模数据的处理。
从图中可以看到,CUDA并行版本的加速比和使用4个计算节点的MPI并行版本的加速比相差不大。MPI并行版本的加速比一直在两倍左右,但不是很稳定,而CUDA版本的加速比一直处于上升的趋势。由此可以推断出,MPI版本的程序在网络规模不是非常大且差别比较小时,会出现一定的浮动;而CUDA版本的程序虽然还不能处理更大规模的数据,但是在能处理的范围内,已经体现出了加速比的上升趋势。从趋势中可以预测,CUDA版本的程序在去除了限制条件处理更大规模数据之后,也会获得更大的加速比,也比较适合处理大规模的生物分子网络比对问题,而且可能获取比MPI更好的加速效果。
表2是28、36、60、100个节点的酵母PPIN平均同源节点数以及使用4个计算节点的MPI版本和CUDA版本的并行AHGA算法计算与9138个节点的人类PPIN比对的加速比。
对于网络A中的每一个节点,在网络B中都有一定数目的节点和它有生物同源性,这个数目就称为这个节点的同源节点数,而网络A中所有节点的这个数目的平均值即为平均同源节点数。
在表2中节点数为28和36的两个网络,其平均同源节点数都很高,MPI版本的加速比都高于CUDA版本的加速比;
而节点数为60的网络的平均同源节点数减少,MPI版本和CUDA版本的加速比也较为接近;
而节点数为100的网络的平均同源节点数更少时,CUDA版本的加速比高于了MPI版本。
在进行生物分子网络比对时,需要考虑其生物学意义,经过统计,酵母和人类整体的平均同源节点数约为9,与表中第四行网络的情况最为接近,而此时的加速比也最好,
由此我们认为CUDA版本的程序会更合适处理具有生物背景的生物分子网络。
4结语
本文提出使用MPI和CUDA两种并行方式对自适应匈牙利贪心算法进行并行处理,并使用不同的数据对并行版本的程序进行了测试,结果显示并行版本的程序对于规模较大的生物分子网络的比对有较好的结果,可以很好地提高运行效率;另外还对MPI和CUDA两个版本的并行程序结果进行了对比,结果表明,MPI更适合处理大规模的数据,而CUDA程序在对生物分子网络的生物学意义的处理上更有优势。
对并行版本的程序来说,处理规模问题可以通过硬件升级和算法优化来提升对大数据的处理效果,而对网络生物学意义方面则是很难改变的。所以总体来说,CUDA版本的程序更适合做生物分子网络的比对,我们后续也会继续优化CUDA版本的程序,使其能更好地处理更大规模的数据。
参考文献:
[1]CHINDELEVITCH L, LIAO CS, BERGER B. Local optimization for global alignment of protein interaction networks [C]// Proceedings of Pacific Symposium on Biocomputing 2010. Singapore: World Scientific Publishing, 2010: 123-132.http://psb.stanford.edu/psb-online/proceedings/psb10/chindelevitch.pdf
[2]KEELEY B P, YUAN B, LEWITTER F, et al. PathBLAST: a tool for alignment of protein interaction networks [J]. Nucleic Acids Research, 2004, 32(WebServerIssue): 83-88.
[3]LI Z P, ZHANG S H, WANG Y, et al. Alignment of molecular networks by integer quadratic programming [J]. Bioinformatics, 2007,23(13):1631-1639.
[4]SINGH R, XU J B, BERGER B. Pairwise global alignment of protein interaction networks by matching neighborhood topology [C]// RECOMB07: Proceedings of the 11th Annual International Conference on Research in Computational Molecular Biology, LNCS 4453. Berlin: SpringerVerlag, 2007: 16-31.
[5]LIAO CS, LU K H, BAYM M, et al. IsoRankN: spectral methods for global alignment of multiple protein networks [J]. Biocomputing, 2009, 25(12): 253-258.
[6]KUCHAIEV O, PRULJ N. Integrative network alignment reveals large regions of global network similarity in yeast and human [ J ]. Bioinformatics, 2011, 27(10): 1390-1396.
[7]ATIAS N, SHARAN R. Comparative analysis of protein networks: hard problems, practical solutions [J]. Communications of the ACM, 2012, 55(5): 88-97.
[8]郭杏莉,高琳,陈新.生物网络比对的模型与算法[J].软件学报,2010,21(9):2089-2106.
[9]谭军. 蛋白质相互作用网络比对的自适应混合并行算法研究[D].上海:上海大学,2013.
[10]KUHN H W. The Hungarian method for the assignment problem [M]// 50 Years of Integer Programming 1958—2008. Berlin: SpringerVerlag, 2010: 29-47.Naval Research Logistics (NRL), 1955,2(1/2): 83-97, http://tom.host.cs.st-andrews.ac.uk/CS3052-CC/Practicals/Kuhn.pdf
[11]KUHN H W. A tale of three eras: the discovery and rediscovery of the hungarian method [J]. European Journal of Operational Research, 2012, 219(3): 641-651.
[12]ALTSCHUL S F, GISH W, MILLER W, et al. Basic local alignment search tool [J]. Journal of Molecular Biology,1990, 215(3): 403-410.
网络有利也有弊。利,就是让我们增加知识面,学习更多的知识,探索全世界的奥秘,了解更多相关内容。而弊就是网上有一些不良网站,影响人的身心健康。
可我相信两句古话,第一句是:邪不压正!第二句是:认证不怕影子歪。这些古话支撑着我们走向光明。我相信利大于弊。上网的好处有很多。比如可以增加知识面,开发智力、探索宇宙、环游世界、娱乐生活等等等等。上网的好处数不胜数,这是全世界人都知道的一个问题。
有些人说弊大于利,说网上不良信息多、骗钱,这些多寥寥无几。不良信息只有少数人会这么做,都是一些游手好闲的人;正直有用的人都在用网络帮助自己工作,没有时间浪费在无用之地。
中国虽然人多,但是人才也多。人们正在用网络和国外进行网上交易,为中国收入作出贡献。有一句话说的好,祖国处处有亲人,相助何必曾相识。这句话的意思是:祖国各地都有正义的人,遇到困难是他们都会帮助有困难的人。说明正义的人,都会做应该做的事,也说明了利大于弊。
负面就像一阵狂风暴雨,而正面就像一缕阳光,风雨在阳光的照射下,就会出现一道五彩缤纷彩虹。证明负面影响只是短暂的暴风雨,在正面的面前,它只是短暂的瞬间。
面对网络我们应该合理安排时间,不上不良网站,不影响自己的学业,让网络成为你的好朋友!
早就听说网络是一个迷人的世界,它包罗万象、无奇不有,可以看见世界的每个角落,充满了神秘与吸引力。上网,可以足不出户却日行万里;可以交朋识友,增长见识;可以随时了解国内外时事,紧随时尚潮流;网络可以方便地查资料、收发电子邮件,可以学习更多的课内外知识。我的很多书就是通过当当网购买的,我家的照相机也是通过绿森网购买的,出门买机票、定客房也可通过网络,如果我们现在不去和网络接触,就会成为21世纪的“文盲”和“瞎子”。有了网络,就像吃了灵丹妙药,似乎想补什么,就补什么;想治什么,就治什么。
比如,有一次,老师让我们自己做导游,介绍一些名胜古迹。可是我从来都没有去过哪个地方旅游,所以什么也不知道。回到家,上网查了查有关颐和园的资料,使我有了信心。老师让我介绍,开始时我还有些心慌,还好我在网上查了一些资料,对颐和园就有所理解。当我把颐和园的概况详细地介绍给同学们时,老师和同学们都对我刮目相看呢!
当然,凡事有利就有弊。虽然网络的好处数不胜数,但是,上网如果没有一个限度,就会对青少年造成身心上的伤害。
看看报纸,那些不健康网络使青少年误入歧途的报道数不胜数。科技在不断发展,电脑也随着时代的变化渐渐地进入了人们的家庭,越来越多的学生都变成了“网虫”。上网不是坏事,但是整天沉迷于网络,那就是一件非常可怕的事情。而且,中学生的自控、辨别是非的能力还有待提高,如果被不健康的网站迷惑、被所谓的“网友”敲诈,做出中学生不该做的事情,那该怎么办?过分上网,就会过分受到电磁辐射,患上高血压、心脏病、电磁波过敏症、痴呆症、近视等,几天几夜上网,严重的还会导致死亡!这不仅伤害了身体,还影响了学业,岂不是得不偿失?
我也经常上网,但我聊天和玩游戏时间都不会超过30分钟。我上网的大部分时间都是与同学交流作业、查资料和学习英语,用网络来锻炼我的对话能力;在周六、周日,我还会看看平时没时间看的电视和电影。
一、上网可以开阔视野,及时了解时事新闻,获取各种最新的知识和信息,对学习和生活都有很好的指导作用。上网可以充实头脑,只要留心就可以学到许多在学校里学不到的知识,扩大自己的知识面,鼠标一点大千世界尽收眼底。
二、可以对外交流,学生的一个经常被人提及的缺点就是缺乏信心,不敢与外界对话、交流。现在有了互联网,他们可以彻底的克服心理障碍,并且在对外交流的过程中,又开阔了自己的视野,网络为教育资源的交流提供了便捷的方式;不管老师,还是学生都可以登录各类教育网站获取学习资讯。
三、可以促进学生的个性化发展,学生可以在QQ上交友,诉说困难,寻求帮助,还可以在BBS上灌水,帮助他人解决困难。
小议青少年上网
近几年来,电脑在中国越来越普及,几乎家家都有一台,而关于青少年上网的问题,也成为一个焦点。对于上网的利弊,也是众说纷纭。
网络,是国际信息技术发展的重要标志,也是国家进步的成果。从网络上,我们可以获取许多信息,可以“足不出户而知天下”。网络中的知识应有尽有,为人类提供了方便。通过上网,我们能够了解到国家大事;通过上网,我们可以随时随地和朋友们交流;通过上网,我们还可以买到想要的东西,不必因为路程遥远而担心。所以,从这一点看,利用电脑上网是有利的,不管是对一个人还是一个国家。
可凡事都有个度,上网也是如此,正因为网上的知识太过丰富,才有了巨大的吸引力,如果长时间上网,会陷入其中无法自拔。它就像蜘蛛的网,一旦进入,便会缠住你。实际上生活中已经有很多地例子发生了。有的青少年,因为过度上网,导致视力下降;有的因为上网学了许多不良的信息,从而走上犯罪道路;更有甚者为了上网吧,旷课逃学,钱花光了就去偷、枪,最终的下场是害人害己啊!在他们看来,上网有一种,可谁又知道,这等于针尖上的舞蹈,危险重重。现在,人们管这种状态叫做“犯网瘾”,它如同烟瘾、酒瘾般令人胆战心惊。
总而言之,上网有利也有弊,我们不能片面地说“利大于弊”或者“弊大于利”,关键在于我们自身,因为使用它的就是人啊。电脑是发明出来方便人们的,如果因使用不当而否决 它,确实是一种浪费。只有控制好上网的时间,合理安排生活,对于信息有好坏之分,舍次求好,才能发挥网络的最大永途!