html换行符_用 3Dmol.js 在 html 和 markdown 中插入结构模型

cb910502e4df0804139edf1bc65694d8.png

可互动的结构模型可以让网页文章变得更为生动,写在笔记里也可以更为方便地随时查看模型的细节。之前使用过 JSmol 来实现这个功能,今天来尝试一下更为轻量化的 3Dmol.js[1]

结构文件格式的转换

3Dmol.js 支持的文件格式包括 pdb, sdf, mol2, xyz, cube

如果手里的文件是其他格式,可以通过 ase 来进行转换。命令行运行如下即可:

$ ase convert CONTCAR out.pdb

拿到的结构文件可以放在博文或者笔记的路径里,也可以转换成一个 string 直接粘贴进 html/md 文件里,如此就可以轻松到处迁移(本文采取此办法)。注意这个 string 需要包含n 换行符,可以用 awk 命令来转换:

$ awk '{printf "%sn", $0}' out.pdb | sed "s/'/'/g"

在 html 里插入结构模型

首先,从 url 导入最新稳定版本的 3Dmol.js

<script src="https://3Dmol.csb.pitt.edu/build/3Dmol-min.js"></script>

创建 container,定义大小位置

<div id="container-01" class="mol-container"></div>
<style>
.mol-container {
  width:    75%;
  height:   400px;
  position: relative;
}
</style>

接下来运行 3Dmol.js 生成组件。这里可以自定义背景颜色、原子渲染风格(sphere/stick/line/cross/cartoon/clicksphere)、晶格显示与否。记得要把addModel的第一个参数(笔者随手写了个 CO2 的 xyz 举例)替换为自己的结构 string ,并且给出文件的格式

<script>
$(function() {
	let element = $('#container-01');
	let config = { backgroundColor : 'white' };
	let viewer = $3Dmol.createViewer( element, config );
	viewer.addModel("3nnC 0 0 0nO 1.16 0 0nO -1.16 0 0", "xyz");
	viewer.addUnitCell();
	viewer.setStyle({}, {sphere : {}});
	viewer.zoomTo();
	viewer.render();
});
</script>

把上面这段放在 html 里就可以使用了,十分方便。

b90a393b2ad23366273d72caad4e184b.gif

互动方式为:滚轮/右键拖拽=缩放,左键拖拽=旋转,ctrl+左键拖拽=平移

在 markdown 里插入结构模型

直接把上面的 html 代码块放进 md 文件即可,别忘了声明 html 环境

<html>
<上面的 html 代码块>
<html>

插入到笔者个人网站的 post 里看看效果。

首先是一个分子结构,NiPc(OMe)4*COOH 反应中间体[2]

cc5bea72b655712c6c398256c9d5a813.gif

再看一个周期性体系,B-rich WB (001) 的重构表面[3]

a3274e48a33479c3564c767f4cfb5e4a.gif

效果应该说是比较棒的,如果再仔细调整一下渲染的各个选项、参数,还可以更 fancy。

感兴趣的读者可以去看看 3Dmol.js 的 documentation[4],动手实践一下。

参考

  1. ^3Dmol.js Official Website https://3dmol.csb.pitt.edu/
  2. ^Zhang, X. ; Wang, Y. ; Gu M. ; Wang, M. ; Zhang, Z.; Pan, W.; Jiang, Z.; Zheng, H; Lucero, M.; Wang, H.; Sterbinsky, G.; Ma, Q.; Wang, Y-G.*;, Feng, Z.*; Li, J.; Dai, H.; Liang, Y.* Molecular Engineering of Dispersed Nickel Phthalocyanines on Carbon Nanotubes for Selective CO2 Reduction. 2020, Nature Energy, 5, 684-692 https://zishengz.github.io/2020/08/20/natene/
  3. ^Zhang, Z.; Cui, Z-H.; Jimenez-Izal, E.; Sautet, P.*; Alexandrova, A. N.* Hydrogen Evolution on Restructured B-rich WB: Metastable Surface States and Isolated Active Sites. 2020, ACS Catalysis, accepted. DOI: 10.1021/acscatal.0c03410 https://zishengz.github.io/2020/10/29/acscatal/
  4. ^3Dmol.js Documentation https://3dmol.csb.pitt.edu/doc/index.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值