1. 减少循环层数
FeatureFlat_Euc = np.zeros([len(Bins_Euc) - 1, len(ProEleList) * len(LigEleList)], float)
FeatureFlat_Ele = np.zeros([len(Bins_Ele) - 1, len(ProEleList) * len(LigEleList)], float)
for i in range(len(ProEleList)):
for j in range(len(LigEleList)):
fid = i * len(LigEleList) + j
for k in range(len(Bins_Euc) - 1):
FeatureFlat_Euc[k, fid] = Feature_Euc[i, j, k]
for p in range(len(Bins_Ele) - 1):
FeatureFlat_Ele[p, fid] = Feature_Ele[i, j, p]
FeatureFlat_Euc = np.zeros([len(Bins_Euc) - 1, len(ProEleList) * len(LigEleList)], float)
FeatureFlat_Ele = np.zeros([len(Bins_Ele) - 1, len(ProEleList) * len(LigEleList)], float)
for i in range(len(ProEleList)):
for j in range(len(LigEleList)):
fid = i * len(LigEleList) + j
FeatureFlat_Euc[:, fid] = Feature_Euc[i, j]
FeatureFlat_Ele[:, fid] = Feature_Ele[i, j]
2. 避免重复轮子
dis=math.sqrt((combination[q][0][0]-combination[q][1][0])**2\
+(combination[q][0][1]-combination[q][1][1])**2\
+(combination[q][0][2]-combination[q][1][2])**2)
dis = euclidean(combination[q][0][:3], combination[q][1][:3])
3. 利用好生成器
combination=list(itertools.product(PRO[ep],LIG[el]))
feature_ele=[]
for q in range(len(combination)):
dis = euclidean(combination[q][0][:3], combination[q][1][:3])
elec_force=1.0/(1.0+exp(-100.0*combination[q][0][3]*combination[q][1][3]/dis))
combination = itertools.product(protein_coord[ep], ligand_coord[el])
for pair in combination:
dis = euclidean(pair[0][:3], pair[1][:3])
elec_force = 1.0 / (1.0 + math.exp(-100.0 * (pair[0][3] *pair[1][3] )/ dis))
4. pythonic循环
for a in range(len(protein_coord)):
if list(protein_coord.keys())[a] in ep:
propts.extend(protein_coord[list(protein_coord.keys())[a]])
for k in list(protein_coord.keys()):
if k in ep:
propts.extend(protein_coord[k])