基于动态数据划分和冲突消解的高通量药物虚拟筛选方法技术

技术编号:17067842 阅读:35 留言:0更新日期:2018-01-19 22:32
本发明专利技术公开了基于动态数据划分和冲突消解的高通量药物虚拟筛选方法,目的是提高药物虚拟筛选的速度和效率,缩短新药研究周期。技术方案是进程分组,任务分为两大部分,第一部分采用静态任务划分,由各组长进程以轮转方式获取筛选作业,分发给组员进程;第二部分采用动态任务划分,采用进程分组的方式,以“能者多劳”的原则,由各组组长动态获取筛选作业,分配给组员;组员进程第一次处理筛选作业时,根据进程编号睡眠一定时间,实现“流水线式”IO和通信隐藏。本发明专利技术相比于目前主流高通量药物虚拟筛选方法,能够有效实现高通量药物虚拟筛选的负载均衡,并解决海量并发IO、通信问题,提高药物虚拟筛选的速度和效率,缩短新药研究周期。

【技术实现步骤摘要】
基于动态数据划分和冲突消解的高通量药物虚拟筛选方法
本专利技术涉及计算机辅助药物设计领域药物虚拟筛选方法,尤其指一种基于动态数据划分和冲突消解的高通量药物虚拟筛选方法。
技术介绍
药物虚拟筛选是在计算机的帮助下,使用分子对接方法,根据小分子与蛋白结合能力判断小分子活性。高通量药物虚拟筛选(HighThroughputVirtualScreening)是在短时间内,采用分子对接技术,根据药物作用靶标的分子结构,通过分子模拟手段计算化合物库中的小分子与靶标结合的能力,预测候选化合物的生理活性。高通量药物虚拟筛选具有一定特点,主要包括:1.存在一个总作业池,或者是作业列表,各组员进程从作业池中获取作业,并行计算,因此需要合理的数据划分方式,来达到负载均衡;2.单个筛选作业计算时间不尽相同,同样带来负载均衡问题;3.筛选作业之间相互独立,具有天然的并行性,而各进程之间不需要大量交换数据和状态,因此整个系统是非同步式的;4.单个作业需要一定量IO,数以万计的组员进程需要超高量的IO,因此应用可能会存在IO瓶颈;5.数万进程之间的通信,如果是平摊在整个运行过程是可以接受的,但是如果瞬时发生,会阻塞系统的通信网络。目前主流高通量药物虚拟筛选方法采用单层主从模式进行数据划分和作业调度,其主要步骤如下:步骤1:主进程从作业池中顺序读取筛选作业,以轮转方式发送给多个子进程,确保每一个子进程处于满负荷状态;步骤2:子进程接收作业,进行计算;步骤3:子进程计算结束,给主进程发送消息;步骤4:主进程接收来自子进程的消息,随后读取新作业发送给该子进程;步骤5:步骤2-步骤4不断循环,直到所有作业计算结束。首先进行虚拟筛选的小分子结构不同,计算时间不同,以简单的静态数据划分会造成进程间负载不均衡;使用普通轮转方式分配任务,随着并行规模不断扩大,通信速度下降,作业分配可能出现较大延迟,降低并行效率。以上两点使得当前的高通量药物虚拟筛选难以达到负载均衡。目前主流高通量药物虚拟筛选方法在充分利用集群、超级计算机计算能力、可扩展性等方面还具有许多难点,原因有多重因素。首先是虚拟筛选作业数量的庞大,药物虚拟筛选候选化合物有3500万。其次是庞大的作业量带来的存储压力,药物虚拟筛选的候选化合物以小文件的形式存在,数十亿计的小文件给文件系统极大压力。然后是在数千节点上,部署使用高通量药物虚拟筛选软件时,瞬时IO、通信操作,很可能会超越超级计算机的IO、通信带宽,因此造成IO管道堵塞,造成通信瓶颈,导致当前主流高通量虚拟筛选方法在进行药物虚拟筛选时速度缓慢、新药研制周期过长。集群、超级计算机的发展,多节点多核以及异构体系,高速互联网络的出现给解决高通量药物虚拟筛选的可扩展性问题提供了强大的计算能力基础。为了充分利用这些计算资源,高通量药物虚拟筛选必须有一个高效可扩展的并行计算方法,达到负载均衡,并规避IO、通信的瓶颈,加速高通量药物虚拟筛选的速度和效率,缩短新药研究周期。
技术实现思路
针对目前主流高通量药物虚拟筛选方法存在负载不均衡、瞬时IO、通信操作造成通信瓶颈,导致当前主流高通量虚拟筛选方法在进行药物虚拟筛选时速度缓慢的问题,本专利技术提供一种基于动态数据划分和冲突消解的高通量药物虚拟筛选方法,目的是实现高通量药物虚拟筛选的负载均衡,并解决海量并发IO、通信问题,提高药物虚拟筛选的速度和效率,缩短新药研究周期。本专利技术技术方案是:进程分组,任务分为两大部分,第一部分采用静态任务划分,由各组长进程以轮转方式获取筛选作业,分发给组员,即组员进程;第二部分采用动态任务划分,采用进程分组的方式,以“能者多劳”的原则,由各组组长动态获取筛选作业,分配给组员;组员进程第一次处理筛选作业时,根据进程编号睡眠一定时间,实现“流水线式”IO和通信隐藏。具体技术方案如下:主要变量定义:NJOBS:待处理筛选作业总数量,NJOBS为大于1的整数;FIRST_PROPORTION:第一阶段所处理筛选作业比例,FIRST_PROPORTION为实数,0<FIRST_PROPORTION<1;FIRST_NJOBS:第一阶段处理筛选作业数量,FIRST_NJOBS为大于1的整数,FIRST_NJOBS=NJOBS*FIRST_PROPORTION;NPROCS:总进程数,NPROCS为自然数;JobNo:筛选作业编号,JobNo为整数,0≤JobNo≤NJOBS-1;NGROUPS:进程组数,NPROCS个进程被划分成NGROUPS组进程,记为第0进程组,…,第i进程组,…,第(NGROUPS-1)进程组;指定0到NGROUPS-1号进程为组长进程,每个组长进程中,声明一个数组ProGI,数组大小为NPROCS/NGROUPS,以轮转算法将进程分组,第i进程组的第j个组员进程的进程编号ProcessID为ProGI[j]=i+j*NGROUPS,0≤i≤NGROUPS-1,1≤j≤(NPROCS/NGROUPS-1),i、j均为整数;NGROUPS为整数,1≤NGROUPS<NPROCS,要求NPROCS%NGROUPS=0,其中%为求余操作符,NPROCS%NGROUPS=0即为总进程数被进程组数整除;GROUPID:进程组编号,GROUPID为整数,GROUPID=0,1,…,NGROUPS-1,其中/为除操作;ProcessID:进程编号,ProcessID为整数,ProcessID=0,1,…,NPROCS-1;SGSIZE:睡眠组大小,SGSIZE为整数,0≤SGSIZE≤NPROCS;当进程执行首次计算时,休眠进程,即执行sleep((ProcessID/SGSIZE)*T),sleep为进程休眠操作,(ProcessID/SGSIZE)*T为休眠时间;JobCurPos:当前待处理筛选作业首位置,JobCurPos为整数,0≤JobCurPos<NJOBS;T:睡眠时间,T为大于0的整数,单位为秒。本专利技术基于动态数据划分和冲突消解的高通量药物虚拟筛选方法,流程如下:步骤1:初始化。根据参数输入或者配置文件获取初始参数:NJOBS、FIRST_PROPORTION、NPROCS、NGROUPS、SGSIZE、T,计算得到第一阶段处理筛选作业数量FIRST_NJOBS=NJOBS*FIRST_PROPORTION。此时计算任务分为两部分,第一阶段处理筛选作业数量FIRST_NJOBS,第二阶段处理筛选作业数量(NJOBS-FIRST_NJOBS);步骤2:进程分组。指定0到NGROUPS-1号进程为组长进程,每个组长进程中,声明一个数组ProGI,数组大小为NPROCS/NGROUPS,以轮转算法将进程分组,每个进程组中包含NPROCS/NGROUPS个进程,包括一个组长进程和(NPROCS/NGROUPS-1)个组员进程。第i进程组的第j组员进程的进程编号ProcessID为ProGI[j]=i+j*NGROUPS,第(NPROCS/NGROUPS-1)组员进程的进程编号为i+(NPROCS/NGROUPS-1)*NGROUPS=i+NPROCS-NGROUPS;因此,第i进程组中(NPROCS/NG本文档来自技高网
...
基于动态数据划分和冲突消解的高通量药物虚拟筛选方法

【技术保护点】
基于动态数据划分和冲突消解的高通量药物虚拟筛选方法,其特征在于包含以下步骤:步骤1:初始化;根据参数输入或者配置文件获取初始参数:待处理筛选作业总数量NJOBS、第一阶段所处理筛选作业比例FIRST_PROPORTION、总进程数NPROCS、进程组数NGROUPS、睡眠组大小SGSIZE、睡眠时间T,计算得到第一阶段处理筛选作业数量FIRST_NJOBS=NJOBS*FIRST_PROPORTION;此时计算任务分为两部分,第一阶段处理筛选作业数量FIRST_NJOBS,第二阶段处理筛选作业数量NJOBS‑FIRST_NJOBS;NJOBS为大于1的整数;FIRST_PROPORTION为实数,0<FIRST_PROPORTION<1;FIRST_NJOBS为大于1的整数,FIRST_NJOBS=NJOBS*FIRST_PROPORTION;NPROCS为自然数;NGROUPS为整数,1≤NGROUPS<NPROCS;SGSIZE为整数,0≤SGSIZE≤NPROCS;T为大于0的整数;步骤2:进程分组;指定NGROUPS个组长进程,每个组长进程中,声明一个数组ProGI,数组大小为NPROCS/NGROUPS,以轮转算法将进程分组,每个进程组中包含NPROCS/NGROUPS个进程,包括一个组长进程和NPROCS/NGROUPS‑1个组员进程;第0进程组,…,第i进程组,…,第NGROUPS‑1进程组并行进行作业筛选,每个进程组作业筛选的流程相同,第i进程组作业筛选的流程如下:步骤3:FIRST_NJOBS个作业按筛选作业编号JobNo分配给组长进程;第i进程组的组长进程,声明一个整数向量Vdata,将0到FIRST_NJOBS‑1号作业分配给组长进程,插入到组长进程的向量Vdata中;JobNo为整数,0≤JobNo≤NJOBS‑1;步骤4:组长进程将Vdata中的元素取出,发送给NPROCS/NGROUPS‑1个组员进程;步骤5:NPROCS/NGROUPS‑1个组员进程从组长进程接收筛选作业,并行进行作业筛选计算,流程相同,第j组员进程,即第i+j*NGROUPS号组员进程的作业筛选计算流程为步骤5.1至步骤5.5,具体如下:步骤5.1:声明整数变量JobsHandled,表示已经处理的作业数量,初始为0;步骤5.2:如果接收筛选作业为空,即第i+j*NGROUPS号组员进程从组长进程接收到“完毕消息”,转步骤12;否则转步骤5.3;步骤5.3:如果JobsHandled等于0,即首次计算,第i+j*NGROUPS号组员进程休眠,即执行sleep((ProcessID/SGSIZE)*T),sleep为进程休眠操作,ProcessID为进程编号,ProcessID为整数,ProcessID=0,1,…,NPROCS‑1,转步骤5.4;否则JobsHandled不等于0,为非首次计算,转步骤5.4;步骤5.4:第i+j*NGROUPS号组员进程进行筛选作业计算;步骤5.5:第i+j*NGROUPS号组员进程发送“索要新筛选作业”消息给组长进程;步骤6:组长进程接收消息,根据消息来源不同进行不同处理:步骤6.1:如果来自本组组员进程,从Vdata中取出未处理的筛选作业编号JobNo,发送给编号为ProcessID的进程,转步骤7;步骤6.2:如果来自其他组长进程,记录当前筛选作业池中,待处理筛选作业首位置JobCurPos,转步骤7;步骤7:组长进程判断Vdata是否为空,如果Vdata为空,转到步骤8;否则,转到步骤4;步骤8:组长进程判断JobCurPos与NJOBS是否相等,如果相等,即不存在未处理作业,转到步骤9;否则,从作业池中读取M个作业,将这些作业插入Vdata中,M为整数,1≤M≤(NPROCS/NGROUPS‑1);同时记录当前JobCurPos,将JobCurPos发送给所有其他组长进程,转到步骤4;步骤9:组长进程发送“完毕消息”给本组组员;步骤10:组长进程接收来自组员进程的“作业完成消息”;步骤11:结束组长进程;步骤12:结束组员进程;步骤13:结束。...

【技术特征摘要】
1.基于动态数据划分和冲突消解的高通量药物虚拟筛选方法,其特征在于包含以下步骤:步骤1:初始化;根据参数输入或者配置文件获取初始参数:待处理筛选作业总数量NJOBS、第一阶段所处理筛选作业比例FIRST_PROPORTION、总进程数NPROCS、进程组数NGROUPS、睡眠组大小SGSIZE、睡眠时间T,计算得到第一阶段处理筛选作业数量FIRST_NJOBS=NJOBS*FIRST_PROPORTION;此时计算任务分为两部分,第一阶段处理筛选作业数量FIRST_NJOBS,第二阶段处理筛选作业数量NJOBS-FIRST_NJOBS;NJOBS为大于1的整数;FIRST_PROPORTION为实数,0&lt;FIRST_PROPORTION&lt;1;FIRST_NJOBS为大于1的整数,FIRST_NJOBS=NJOBS*FIRST_PROPORTION;NPROCS为自然数;NGROUPS为整数,1≤NGROUPS&lt;NPROCS;SGSIZE为整数,0≤SGSIZE≤NPROCS;T为大于0的整数;步骤2:进程分组;指定NGROUPS个组长进程,每个组长进程中,声明一个数组ProGI,数组大小为NPROCS/NGROUPS,以轮转算法将进程分组,每个进程组中包含NPROCS/NGROUPS个进程,包括一个组长进程和NPROCS/NGROUPS-1个组员进程;第0进程组,…,第i进程组,…,第NGROUPS-1进程组并行进行作业筛选,每个进程组作业筛选的流程相同,第i进程组作业筛选的流程如下:步骤3:FIRST_NJOBS个作业按筛选作业编号JobNo分配给组长进程;第i进程组的组长进程,声明一个整数向量Vdata,将0到FIRST_NJOBS-1号作业分配给组长进程,插入到组长进程的向量Vdata中;JobNo为整数,0≤JobNo≤NJOBS-1;步骤4:组长进程将Vdata中的元素取出,发送给NPROCS/NGROUPS-1个组员进程;步骤5:NPROCS/NGROUPS-1个组员进程从组长进程接收筛选作业,并行进行作业筛选计算,流程相同,第j组员进程,即第i+j*NGROUPS号组员进程的作业筛选计算流程为步骤5.1至步骤5.5,具体如下:步骤5.1:声明整数变量JobsHandled,表示已经处理的作业数量,初始为0;步骤5.2:如果接收筛选作业为空,即第i+j*NGROUPS号组员进程从组长进程接收到“完毕消息”,转步骤12;否则转步骤5.3;步骤5.3:如果JobsHandled等于0,即首次计算,第i+j*NGROUPS号组员进程休眠,即执行sleep((ProcessID/SGSIZE)*T),sleep为进程休眠操作,ProcessID为进程编号,ProcessID为整数,ProcessID=0,1,…,NPROCS-1,转步骤5.4;否则JobsHandled不等于0,为非首次计算,转步骤5.4;步骤5.4:第i+j*NGROUPS号组员进程进行筛选作业计算;步骤5....

【专利技术属性】
技术研发人员:彭绍亮程乾杨灿群卢宇彤刘杰吴诚堃顾祥高明刘欣王海强杨顺云
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1