1.一種基于多階段子群協(xié)同進(jìn)化策略的差分進(jìn)化蛋白質(zhì)結(jié)構(gòu)從頭預(yù)測(cè)方法,其特征在于:所述預(yù)測(cè)方法包括以下步驟:
1)給定輸入序列信息;
2)設(shè)置系統(tǒng)參數(shù):種群大小popSize,算法的迭代次數(shù)T,第一階段迭代次數(shù)T1,第二階段迭代次數(shù)T2,第三階段迭代次數(shù)T3,變異因子MU,交叉因子CR,子種群個(gè)數(shù)NSub,片段的長(zhǎng)度L,其中T1+T2+T3=T;
3)種群初始化:由輸入序列產(chǎn)生popSize個(gè)種群個(gè)體Pinit;
4)子種群劃分:將種群平均劃分為NSub個(gè)子種群;
5)開(kāi)始迭代,執(zhí)行種群進(jìn)化過(guò)程:
5.1)第一階段:迭代次數(shù)為T1,對(duì)初始種群中的每個(gè)個(gè)體做如下操作:
5.1.1)設(shè)i=1,j=1,其中i∈{1,2,3,…,Nsub},j∈{1,2,3,…,NsubpopSize};令Ptarget=Pij,其中i,j為序號(hào),NsubpopSize表示子種群中個(gè)體的數(shù)目,Ptarget表示目標(biāo)個(gè)體;
5.1.2)針對(duì)個(gè)體Ptarget做變異操作:從L=9的片段庫(kù)中隨機(jī)選擇片段進(jìn)行片段組裝,得到中間個(gè)體Ptrial′;
5.1.3)隨機(jī)生成正整數(shù)rand1,rand2,rand3,其中rand1∈{1,2,3,...,NsubpopSize},rand1≠j,rand2≠rand3,∈{1,2,…,Length},生成隨機(jī)數(shù)rand4∈(0,1),其中Length為序列長(zhǎng)度;
5.1.4)若隨機(jī)數(shù)rand4<=CR,針對(duì)Ptrial′做交叉操作:令l=rand1;令a=min(rand2,rand3),b=max(rand2,rand3),k∈[a,b];
a:令Ptrial′.phi(k)=Pl.phi(k);
b:令Ptrial′.psi(k)=Pl.psi(k);
c:令Ptrial′.omega(k)=Pl.omega(k);
步驟a,b,c分別為:將Ptrial′的氨基酸k所對(duì)應(yīng)的二面角phi、psi、omega替換為Pl的相同位置所對(duì)應(yīng)的二面角phi、psi、omega;令Ptrial=Ptrial′;
5.1.5)通過(guò)交叉操作得到測(cè)試個(gè)體Ptrial;
5.1.6)執(zhí)行更新操作:根據(jù)Rosetta Score3能量函數(shù)計(jì)算Ptarget和Ptrial的能量:E(Ptarget)和E(Ptrial);若E(Ptarget)>E(Ptrial)則用Ptrial替換Ptarget,否則保持種群不變;
5.1.7)得到更新后的種群Pupdate;
5.1.8)迭代運(yùn)行步驟5.1.1)~5.1.7)至第一階段結(jié)束;
5.2)第二階段:迭代次數(shù)為T2,對(duì)步驟5.1)得到的種群中的每個(gè)個(gè)體做如下操作:
5.2.1)設(shè)i=1,j=1,其中i∈{1,2,3,…,Nsub},j∈{1,2,3,…,NsubpopSize};令Ptarget=Pij,其中i,j為序號(hào),NsubpopSize表示子種群中個(gè)體的數(shù)目,Ptarget表示目標(biāo)個(gè)體;
5.2.2)針對(duì)個(gè)體Ptarget做變異操作:從L=3的片段庫(kù)中隨機(jī)選擇片段進(jìn)行片段組裝,得到中間個(gè)體Ptrial′;
5.2.3)隨機(jī)生成正整數(shù)rand2,rand3,其中,rand2≠rand3,∈{1,2,…,Length},生成隨機(jī)數(shù)rand4∈(0,1),其中Length為序列長(zhǎng)度;
5.2.4)找到當(dāng)前子種群中能量最低的個(gè)體Plocal;
5.2.5)若隨機(jī)數(shù)rand4<=CR,針對(duì)Ptrial′做交叉操作:令a=min(rand2,rand3),b=max(rand2,rand3),k∈[a,b];
a:令Ptrial′.phi(k)=Plocal.phi(k);
b:令Ptrial′.psi(k)=Plocal.psi(k);
c:令Ptrial′.omega(k)=Plocal.omega(k);
步驟a,b,c分別為:將Ptrial′的氨基酸k所對(duì)應(yīng)的二面角phi、psi、omega替換為Plocal中相同位置所對(duì)應(yīng)的二面角phi、psi、omega;令Ptrial=Ptrial′;
5.2.6)通過(guò)交叉操作得到測(cè)試個(gè)體Ptrial;
5.2.7)執(zhí)行更新操作:根據(jù)Rosetta Score3能量函數(shù)計(jì)算Ptarget和Ptrial的能量:E(Ptarget)和E(Ptrial);若E(Ptarget)>E(Ptrial)則用Ptrial替換Ptarget,否則保持種群不變;
5.2.8)得到更新后的種群Pupdate;
5.2.9)迭代運(yùn)行步驟5.2.1)~5.2.7)至第二階段結(jié)束;
5.3)第三階段:迭代次數(shù)為T3,對(duì)步驟5.2)得到的種群中的每個(gè)個(gè)體做如下操作:
5.3.1)設(shè)i=1,j=1,其中i∈{1,2,3,…,Nsub},j∈{1,2,3,…,NsubpopSize};令Ptarget=Pij,其中i,j為序號(hào),NsubpopSize表示子種群中個(gè)體的數(shù)目,Ptarget表示目標(biāo)個(gè)體;
5.3.2)針對(duì)個(gè)體Ptarget做變異操作:從L=3的片段庫(kù)中隨機(jī)選擇片段進(jìn)行片段組裝,得到中間個(gè)體Ptrial′;
5.3.3)隨機(jī)生成正整數(shù)rand2,rand3,其中,rand2≠rand3,∈{1,2,…,Length},生成隨機(jī)數(shù)rand4∈(0,1),其中Length為序列長(zhǎng)度;
5.3.4)找到種群中能量最低的個(gè)體Pglobal;
5.3.5)若隨機(jī)數(shù)rand4<=CR,針對(duì)Ptrial′做交叉操作:令a=min(rand2,rand3),b=max(rand2,rand3),k∈[a,b];
a:令Ptrial′.phi(k)=Pglobal.phi(k);
b:令Ptrial′.psi(k)=Pglobal.psi(k);
c:令Ptrial′.omega(k)=Pglobal.omega(k);
步驟a,b,c分別為:將Ptrial′的氨基酸k所對(duì)應(yīng)的二面角phi、psi、omega替換為Pglobal中相同位置所對(duì)應(yīng)的二面角phi、psi、omega;令Ptrial=Ptrial′;
5.3.6)通過(guò)交叉操作得到測(cè)試個(gè)體Ptrial;
5.3.7)執(zhí)行更新操作:根據(jù)Rosetta Score3能量函數(shù)計(jì)算Ptarget和Ptrial的能量:E(Ptarget)和E(Ptrial);若E(Ptarget)>E(Ptrial)則用Ptrial替換Ptarget,否則保持種群不變;
5.3.8)得到更新后的種群Pupdate;
5.3.9)迭代運(yùn)行步驟5.3.1)~5.3.7)至第三階段結(jié)束。