四、 DIO的生成和聚类

这一部分比较简单,就是一个sklearn的聚类分析而已,所以没必要说什么,直接上代码。这里一个主要问题是,sklearn里面的聚类方法,是单核运行的,于是运行的速度很慢,这个蛋白只有500左右的残基,已经需要3个小时。所以,应该找其他方法代替。

4.1导入相关模块

#加载模块
import pandas as pd
import numpy as np
import timeimport torch
import torch.nn as nn
import torch.nn.functional as F
from torch import optim#将torch的数据类型设置为64位,默认是32位的
torch.set_default_dtype(torch.float32)device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
device

4.2 导入之前的模型

即:

class Aotuencoder_for_md(nn.Module):def __init__(self):super(Aotuencoder_for_md, self).__init__()self.encoder_layer1 = nn.Linear(1000, 800)self.encoder_layer2 = nn.Linear(800, 500)self.encoder_layer3 = nn.Linear(500, 200)self.decoder_layer1 = nn.Linear(200, 500)self.decoder_layer2 = nn.Linear(500, 800)self.decoder_layer3 = nn.Linear(800, 1000)def forward(self, x):y = F.relu(self.encoder_layer1(x))y = F.relu(self.encoder_layer2(y))y = F.relu(self.encoder_layer3(y))y = F.relu(self.decoder_layer1(y))y = F.relu(self.decoder_layer2(y))y = F.relu(self.decoder_layer3(y))return y

4.3 加载模型并训练

#加载模型 opo1_model,如果是高cuda版本训练出来的模型是不能在低cuda版本加载
opo_model= torch.load('./model.pth')
opo_model = opo_model.to(device)
opo_model

记录函数:

def run_log(t, file='run_lof.txt', mode = 'a+'):f = open (file, mode)time_ = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) f.write(t)f.write(time_)f.write('\n')

加载数据

#opo1-holo1 DIOs
#加载数据集
#请注意很吃很迟内存和显存!!!建议批量加载,批量运行哈
#保存成csv格式很浪费时间和空间,建议保存成数组哈
holo_data = pd.read_csv('dataset/dataset/holo_csv.csv',index_col=0)
index = holo_data.index
run_log('index:\n', file='opo_holo_index.txt', mode='w')
run_log(' '.join(index.values), file='opo_holo_index.txt', mode='a+')

DIO生成:

def get_DIOs(model, data_path, dios_path):data = pd.read_csv(data_path,index_col=0)index = data.index.valuesdata = data.valuesmask = np.all(np.isnan(data), axis=1) | np.all(data == 0, axis=1)data = data[~mask]index = index[~mask]data = torch.from_numpy(data)data = data.to(device)dios = data-model(data)dios = dios.cpu().detach().numpy()np.save(dios_path, dios)return dios, index
opo_holo, index = get_DIOs(model=opo_model, data_path='dataset/dataset/holo_csv.csv', dios_path='dataset/dataset/opo_holo_DIOs.npy')
opo_holo, index

4.4 DIO聚类分析

下面进行聚类,根据文章的说明,分为7类:

from sklearn.cluster import AgglomerativeClusteringdef DIOs_cluster(X):clustering = AgglomerativeClustering(n_clusters=3, affinity='euclidean', #不能在X中包含0向量的时候使用,。。。opo1_holo2中有!!!!linkage='single', compute_distances=True).fit(X) #单核运行很占时间!!# cosine was provided as affinity. Ward can only work with euclidean distances.# compute_distances=True 这个参数只有在0.24版本才能用的哈,#请升级至最高版本,没有这个参数,是没办法实现可视化的。#由于使用该参数,运行时间更长,内存占用非常厉害!!!return clustering

输出每一个标签的分类label,运行时间好久。

opo_holo_agg = DIOs_cluster(opo_holo)
opo_holo_lables = opo_holo_agg.labels_
opo_holo_lables

4.5 保存一下每个残基对的分类情况

data = pd.DataFrame(index = index, columns=['label'])
data['label'] = opo_holo_lables
data.to_csv('dataset/dataset/opo_holo_lables.csv')

结合之前的一、二、三部分,MD+AI分析变构网络的任务基本就完成了。剩下的就是可视化,这个太简单了,就不在这里介绍了,所以pass。

另外,由于蛋白是我们的研究对象,是保密的,所以原始数据不能分享,大家可以自己做一个MD然后试一下。其实,这个方法不是很稳定,一方面,MD要做的出差别,然后就是聚类分析的时候要好好的处理,还有就是模型这一块,这类简单的自动编码机其实很不适合这个任务的。总之,多尝试~

总的说,文献复制完毕。

Paper再现:MD+AI自动编码机探测蛋白变构(四):DIO的生成和聚类相关推荐

  1. AI自动写文章生成器系统源码 一键生成高质量原创文案

    分享一个AI自动写文章生成器系统源码,程序包含电脑端+手机端+详细的搭建教程,源码开源可二开. 功能介绍: 是一款人工智能对话系统,它可以聊天,写文章,写论文,写代码,写小说,创意策划,做Excel表 ...

  2. 使用MD.ai标注医学图像及covid-19数据集标注

    本文档涵盖注册.推荐的浏览器设置.打开分配的案例和故障排除.了解使用 MD.ai 启动和运行所有深度学习项目的基础知识. 1.登录 打开浏览器:https://www.md.ai并单击Create A ...

  3. Pytorch+LSTM+AI自动写诗实战

    文章目录 1.数据集和任务定义 2.读取数据集 3.数据预处理 4.数据制作 5.定义网络结构: 6.测试网络 7.可视化 8.总结 1.数据集和任务定义 本次采用的是唐诗数据集,一共有接近60000 ...

  4. 【重磅】吴恩达宣布 Drive.ai 自动驾驶汽车服务落地 理想就这样成了现实!

    来源: 网易智能 美国当地时间5月7日,硅谷无人车创业公司 Drive.ai 宣布将于2018年7月在德克萨斯州弗里斯科市提供自动驾驶汽车服务. 这或许会成为美国第一个真正落地的自动驾驶汽车载人服务, ...

  5. 自编码的matlab代码,深度学习自动编码机MATLAB实现

    深度学习自动编码机MATLAB实现 matlab 2020-11-30 下载地址 https://www.codedown123.com/52407.html 深度学习自动编码机MATLAB实现,包含 ...

  6. python自动抠头像图_Python实现AI自动抠图实例解析

    一.简介 抠图是用PS? 用魔棒和快速选择工具? 遇到复杂背景怎么办? 最近发现一个神奇的工具--Remove Image Background 它是基于Python.Ruby和深度学习技术开发,通过 ...

  7. 自动编码机(Autodencoder)

    自动编码机(Autoencoder)属于非监督学习,不需要对训练样本进行标记.自动编码机(Autoencoder)由三层网络组成,其中输入层神经元数量与输出层神经元数量相等,中间层神经元数量少于输入层 ...

  8. AI自动剪辑生成视频探索实践

     点击上方"LiveVideoStack"关注我们 ▲扫描图中二维码或点击阅读原文▲了解音视频技术大会更多信息 // 编者按:随着短视频时代的到来,以短视频作为载体进行音乐推广具备 ...

  9. 小狗AI自动建站系统

    什么是小狗AI建站系统,为了提高建站与养站的效率,小狗AI团队开发了自动建站系统,只要指定一组长尾词,自动建站系统会围绕这组长尾词继续挖掘长尾词并生成标题和内容. 包括内链系统,百度推送,自动图片. ...

  10. 小狗AI自动建站V7 sitemap(网站地图)使用说明

    本文讲解小狗AI自动建站V7 sitemap(网站地图)使用说明,如需了解小狗AI自动建站,请访问: 直接把程序上传到网站根目录,然后用浏览器打开 http://你的域名/baidu_sitemap_ ...

最新文章

  1. 【自然语言处理】正向、逆向、双向最长匹配算法的 切分效果与速度测评
  2. C# 读取指定目录中的所有文件,并按规则生成SQL语句!
  3. 作者:龚南宁,数据堂(北京)科技股份有限公司对外合作部副总监
  4. P1103 书本整理
  5. Visual Studio 代码风格约束
  6. python官方手册-python中文手册
  7. 几张清晰的图讲清楚什么是Java堆碎片?(内存碎片化)
  8. 使用Box2dWeb模拟飞行箭矢
  9. Mybatis的缓存
  10. IDEA自动生成serialVersionUID的设置
  11. 大学生创新创业大赛案例_大学生创新创业典型案例4
  12. 英语4级的分数如何计算机,英语四级的分数是怎么计算的?
  13. java.lang.UnsatisfiedLinkError解决方法汇集(转载)
  14. 微信小程序滑动验证拼图(有效果图)
  15. 基于FPGA实现的数字位同步锁相环设计
  16. python训练自己中文语料库_中文语料库构建过程详细教程
  17. 双网络安全nvr/布控球,可双向同时接入国网B接口视频监控平台和国标28181平台
  18. 史蒂夫·乔布斯传记_Chapter 4: Atari and India
  19. s20赛季服务器维护,王者荣耀S20赛季什么时候结束 S20赛季具体结束日期
  20. 孰能浊以止,静之徐清

热门文章

  1. Ceres-Solver安装与简介
  2. Gym - 100886I 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest I - Archaeological Res
  3. linux死机日志文件,linux系统死机分析及解决方法
  4. Linux如何打开U盘
  5. android降低屏幕分辨率,让游戏更尽兴 手动调低Android手机屏幕分辨率
  6. 深度|常见IT人才外包存在的问题及解决建议
  7. JavaWeb - 工作窃取算法 Work-Stealing
  8. 现代汉语词典第五版_瑜 典 寻 瑕——第五版《现代汉语词典》的瑕疵(周克庸原创)...
  9. 2015 ACOUG 年终总结感恩会圆满落幕
  10. python实现搜索功能_python实现搜索框关键词采集功能