Jmol是一个用Java语言编写的免费的、开源的、跨平台的新一代分子可视化软件,支持多国语言(包括中文).JSmol是针对使用html来使用的版本.Jmol包括三部分:JmolApplet是一个可嵌入到网页的网页浏览器,也可以作为开发工具被整合到其它的Java应用程序中。JmolApplication是一个可独立运行的桌面应用程序。JmolViewer是一个开发工具包,可以被其它的Java应用所集成。
右键菜单介绍
- 查看:菜单可供使用者切换到“前面、左边、右边、顶面、底面”等几个标准的方位进行查看。
- 样式:可以框选“深度透视、边界盒、单位晶格、轴”等菜单,其中选择“单位晶格”则在晶体中显示单位晶格边框,选择“轴”则显示三维坐标轴。“立体图形”是最近版本增加的菜单,此菜单包含“红+青玻璃”等6项子菜单,选择“红+青玻璃”菜单,使用者可佩戴购买的红+青三维立体眼镜即可查看逼真的三维分子效果。“方案”菜单可选择“CPK空间填充、球—棍”等6种模型显示方式用于显示比例(填充)模型、球棍模型等。样式菜单还可以选择显示化学键、氢键、二硫键等化学键类型,总之鼠标右键操作中的样式菜单是Jmol3D模型交互操作中最常用的菜单之一。
- 颜色:通过颜色菜单可对原子、化学键、氢键等的颜色进行选择与更换,对于原子的颜色默认使用CPK颜色方案,对于化学键默认使用继承颜色方案,即将化学键按成键原子颜色各一半进行显示。
- 表面:表面菜单可以控制分子表面的显示和隐藏,显示时可以设置为“点状表面、范德华表面和溶剂可及表面”等多种类型。
- 对称性:可以对研究对象的对称性进行全面观察。
- 振动:在进行红外光谱分子振动显示时,该菜单可对化学键的振动进行控制。
- 测量:该菜单可对原子间的距离、化学键间的夹角、三原子间的夹角等量进行测量和显示
- 鼠标拾取:该菜单包括“居中显示”、“显示标识”、“显示标签”等多个子菜单,其中点击“显示标签”后,再用鼠标点击某个原子,可显示该原子的标签(元素名称)。
安装
- 去sourceforge(ref:3)下载binary结尾的压缩包后,解压,再将jsmol.zip解压. 将整个jsmol文件扔到服务器.里面j2s是html加载jsmol的主要文件夹,java是java加载的主要文件夹.
- head调用主脚本
JSmol.min.js
. - 新建java脚本,指定变量结构info指明applet插件的基本参数.包括使用use:HTML5/JAVA(使用java加载还是html js加载,一般使用html5),指明jar/j2s/serverURL(php目录的php文件)(注意路径),调用初始化何种命令.最后使用
Jmol.getApplet("appletname",infoname)
来创建jmol插件. - 更多参数和教程参考Ref7和8.
<script type="text/javascript" src="/jsmol/JSmol.min.js"></script>
<div style="margin: auto; text-align: center; width: 300px;">
<script type="text/javascript">
var script_run = 'load /jsmol/test.pdb;spin on;';
var jmolApplet0;
var Info0 = {
width: 300,
height: 300,
color: "black",
serverURL: "/jsmol/php/jsmol.php",
use: "HTML5",
jarPath: "/jsmol/java",
j2sPath: "/jsmol/j2s",
script: script_run,//The command defined before.
disableInitialConsole: true
}
Jmol.getApplet("jmolApplet0", Info0)
</script>
Jmol display test
</div>
PS: 在chrome用file:///
模式本地加载网页时,会弹出错误,主要是ajax不支持.可以用Safari解决.或者Chrome启动时chrome.exe --allow-file-access-from-files
或open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files
.更多请参考Ref2中出错部分.
控制
- 打开菜单: 右键或者ctrl+左键
- 旋转: 左键拖动
- 平移: ctrl+右键或者shift+双击左键再拖动或者双击中键再拖动
- Z轴转: 中键/shift左键并左右移动; 或者shift+右键任意移动
- 放大: 中键/shift左键并上下移动 (总结:
shift+左键
=中键
) - 恢复视角: 双击中键; 或者shift+双击左键.
Jmol对象
Jmol.getApplet = function(id, Info, checkOnly)
,id是用于识别Jmol对象的名字,要字符串.Info是个类似字典的结构.Jmol.jmolButton(JmolObject, script, label, id, title)
,插入一个按钮于下方,第二个是命令字符串,第三个是显示的内容.第四个是html id,第五个是鼠标在上面时的显示.Jmol.jmolCheckbox(JmolObject, scriptWhenChecked, scriptWhenUnchecked, labelHtml, isChecked, id, title)
,第二三个分别是选中和不选中时的动作.Jmol.setCheckboxGroup(chkMaster,chkBoxes)
多选Jmol.jmolRadio(JmolObject, script, labelHtml, isChecked, separatorHtml, groupName, id, title)
多选一,第三项是显示内容,第四项是是否默认被选,第五项是可用于插入html代码用于分隔,如"<br>"
,第六项是组名,用于区分不同组.Jmol.jmolRadioGroup(JmolObject, arrayOfRadioButtons, separatorHtml, groupName, id, title)
使用array来创建多选一.Jmol.jmolLink(JmolObject, script, text, id, title)
超链接形式做响应Jmol.jmolCommandInput(JmolObject, label, size, id, title)
支持输入命令!Jmol.jmolMenu(JmolObject, arrayOfMenuItems, size, id, title)
插入菜单.Jmol.jmolBr()
在html插入换行.Jmol.jmolHtml('context')
再html插入指定内容.Jmol.script = function(JmolObject, myScript)
使用脚本或命令字符串.一般脚本用*.spt
结尾,不需要加引号.Jmol.showInfo(jmolObject, true/false)
: 是否显示控制台结果(会取代分子显示)Jmol.clearConsole(jmolObject)
: 清除控制台结果.Jmol.resizeApplet(JmolObject, [400,700]);
重设大小,也可以只用一个数字.也可以用百分比(注意上层div大小)
Reference
- JMol主页
- JMol-wiki
- JMol-sourceforge
- 新一代分子可视化软件Jmol及其教学应用简介
- An Introduction to Jmol Scripting
- Biomodel.uah
- Dr Gutow’s tutorial
- Jmol Interactive Online Documentation,十分详细
- OSU
- 元素周期表