3dmol嵌入到web项目中并在html页面显示.pdb文件
·
最近要做一个有关蛋白质靶点的网站,但在显示以.pdb作为后缀的文件上我先后尝试了几个,搜索后没有教程或者教程很少,(例如ChemDoodleWeb-9.5.0,这个我尝试着使用但发现js代码不知道为什么有问题vue项目启动不了),之后我找到了这个3dmol发现网上是有很多关于这个的教程的,因此我是用这个也成功了,把我的代码分享出来和大家看一下。(<script src="https://3Dmol.org/build/3Dmol-min.js"></script>这个我在vue界面使用一直报错,迫不得已放在了html页面中,通过iframe实现vue和html页面的数据交互)。
显示pdb数据是loadView2
window.addEventListener通过vue页面获取pdb文件名称并从后端进行查询
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="https://3Dmol.org/build/3Dmol-min.js"></script>
</head>
<body>
<!-- 添加一个容器用于显示3D视图 -->
<div id="container-01" style="width: 100%; height: 600px;"></div>
<script>
var firstFruit;
var data;
window.addEventListener('message', function(event) {
// 验证消息来源,可以根据需要进行更严格的验证 ...
// 获取传递过来的参数
firstFruit = event.data.firstFruit;
console.log("Received firstFruit: ", firstFruit);
// 根据 firstFruit 请求后端文件信息
$.ajax({
url: 'http://localhost:8081/file/getFile/' + firstFruit,
type: 'GET',
success: function(response) {
// console.log("File info received: ", response);
data=response;
loadView2();
// 在这里处理后端返回的文件信息
},
error: function(error) {
console.log("Error fetching file info: ", error);
}
});
});
function loadView2() {
// console.log(data);
// 获取3D视图的容器
// 获取3D视图的容器
var element = $('#container-01');
// 清空容器,以便重新加载新的3D视图
element.empty();
// 创建3D视图
let config = { backgroundColor: 'gray' };
let viewer = $3Dmol.createViewer(element, config);
// 添加PDB模型
viewer.addModel(data, "pdb").setStyle({}, {"cartoon": { color: '#17ac80'} });
// 添加VDW表面
viewer.addSurface($3Dmol.SurfaceType.VDW, {'opacity': 0.5, color: 'white'});
// 调整视图并渲染
viewer.zoomTo();
viewer.render();
viewer.zoom(1, 2000);
}
</script>
</body>
</html>
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)