【代码示例】将label转为np数组,并存为pkl文件

本文以SFcnn打分函数的python代码为例:

首先读取训练集和测试集的复合物的文件地址,去除训练集中与测试集重叠的样本,再打乱顺序。

#Get the path of training and test set
train_dirs = glob(os.path.join('/home/lrj/Documents/PDB2019/pdbbind_v2019_refined','*')) 
core_dirs = glob(os.path.join('/home/lrj/Documents/CASF-2016/coreset','*'))
core_dirs.sort()
core_id = [os.path.split(i)[1] for i in core_dirs]
train_new_dirs=[]
for i in train_dirs:
    pdb_id = os.path.split(i)[1]
    if pdb_id not in core_id:
        train_new_dirs.append(i)
        
np.random.shuffle(train_new_dirs)

得到的 train_new_dirs 就是训练用的复合物的 pdb id

得到的 core_dirs 就是测试用的复合物的 pdb id

接下来通过活性数据表‘INDEX_general_PL_data.2019’依次对读取train_new_dirs和core_dirs的结合活性值。

需要说明这里的训练集由于会多旋转9次进行数据增强,所以label会乘以10.

#Get the data of affinties of proteins and ligands. -logKd/Ki values are the label.
affinity ={}
with open('INDEX_general_PL_data.2019','r') as f:
    for line in f.readlines():
        if line[0] != '#':
            affinity[line.split()[0]] = line.split()[3]
train_label=[]
core_label=[]
for i in train_new_dirs:
    pdb_id=os.path.split(i)[1]
    train_label.extend([affinity[pdb_id]]*10)
for i in core_dirs:
    core_id=os.path.split(i)[1]
    if not affinity.get(core_id):
        print(core_id)
    else:
        core_label.append(affinity[core_id])
train_label=np.array(train_label,dtype=np.float32)
core_label=np.array(core_label,dtype=np.float32)

最终使用ectend和append添加成数组,保存为np.array

接着就可以存为pkl文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LRJ-jonas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值