重构同事代码

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])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值