赵工的个人空间


网络课堂部分转网页计算部分转编程演练

 JS数据可视化

首页 > 网络课堂 > JS数据可视化 > PDB文件的格式
PDB文件的格式

PDB是Protein Data Bank的缩写,原意为“蛋白质数据库”,是一种描述生物大分子的数据格式。其实,PDB也可以描述一些小分子,比如水分子、 甲烷等,可以通过读取这种分子的PDB文件使用3D方式显示出来,使分子结构更直观和容易理解。比如,three.js库中就有读取PDB文件的库,把其中描述的分子结构中的原子及化学键使用球体和杆来表示,在浏览器中显示一个立体模型。

不过,网上现成的常见分子的PDB文件比较少,曾经搜到一个网站,但下载的文件很多并不能正常加载和显示,更多的是只有分离的原子,而不能显示化学键。后来,找到一些资料,发现主要是PDB文件不够规范或不够完整,所以加载时出现问题。所以首先要搞清楚PDB文件的格式。下面是很简单的一种--水分子的PDB文件:

ATOM 1 O OSP3 1 2.013 0.831 0.000 1.00 0.00
ATOM 2 H OSP3 1 2.941 0.844 0.246 1.00 0.00
ATOM 3 H OSP3 1 1.750 -0.068 -0.210 1.00 0.00
TER
CONECT 1 2 3
CONECT 2 1 0
CONECT 3 1 0

网上查找PDB文件格式,往往介绍得很复杂很专业,让人一头雾水。其实,Three.js加载PDB文件只关心上面列出的两段代码,前面一段列出了每个分子中的组成原子类型,并给予序号和坐标,第一项必须为ATOM或HETATM;第二项为序号,是按从大到小的顺序排列的,第三项为原子类型,three.js附带的加载器支持"h"、 "he"、 "li"、 "be"、 "b"、 "c"、 "n"、 "o"、 "f"、 "ne"、 "na"、 "mg"、 "al"、 "si"、 "p"、 "s"、 "cl"、 "ar"、 "k"、 "ca"、 "sc"、 "ti"、 "v"、 "cr"、 "mn"、 "fe"、 "co"、 "ni"、 "cu"、 "zn"、 "ga"、 "ge"、 "as"、 "se"、 "br"、 "kr"、 "rb"、 "sr"、 "y"、 "zr"、 "nb"、 "mo"、 "tc"、 "ru"、 "rh"、 "pd"、 "ag"、 "cd"、 "in"、 "sn"、 "sb"、 "te"、 "i"、 "xe"、 "cs"、 "ba"、 "la"、 "ce"、 "pr"、 "nd"、 "pm"、 "sm"、 "eu"、 "gd"、 "tb"、 "dy"、 "ho"、 "er"、 "tm"、 "yb"、 "lu"、 "hf"、 "ta"、 "w"、 "re"、 "os"、 "ir"、 "pt"、 "au"、 "hg"、 "tl"、 "pb"、 "bi"、 "po"、 "at"、 "rn"、 "fr"、 "ra"、 "ac"、 "th"、 "pa"、 "u"、 "np"、 "pu"、 "am"、 "cm"、 "bk"、 "cf"、 "es"、 "fm"、 "md"、 "no"、 "lr"、 "rf"、 "db"、 "sg"、 "bh"、 "hs"、 "mt"、"ds"、 "rg"、 "cn"、 "uut"、 "uuq"、 "uup"、 "uuh"、 "uus"、 "uuo",一共列出了110多种原子,比较全面了,如果发现列出的上述原子就会给予对应的一种颜色来表示。原素的原子不分大小写,其实加载时是先转换为小写字母然后进行比对的。后面两项three.js并不关注,而后的数字项,前三项为对应原子的x、 y、 z坐标,是生成三维模型时必须使用的数据,后面的数据也没用。需要强调,这些数据项并不是通过分界符来识别的(比如csv格式),而是按一行中的字符位置来确定的,就是多了或少了一个空格,都会造成读取数据的错误或造成无法识别。因为网页中会忽略连续空格,所以上述代码只是一个定性描述,具体位置可以比照后附的原始PDB文件,那是已经验证过的。

后面有个以TER开头的行,后面有很长的空格,也是加载时需要识别的,如果缺少也会出错。后面一部分表示的是各原子之间的化学键连接关系,每一行都以CONNECT开头,CONNECT后面的一项从上到下按大小顺序排列,为分子中各原子的序号;后面各项则有短有长,表示与此原子有化学键连接的原子的序号,至少有一个连接,后面没有连接的项可以为0或空格。这个连接表是相互对应的,如果对应有错误也会报错。网上的一些PDB文件,有些是没有这个连接表的,加载后就无法显示原子间的化学键,而只有离散的几个原子。

有了上述两部分,格式正确,three.js附带的PDBLoader.js就可以正确解析格式,获取其中的数据并形成一个模型,并通过WebGL显示出来。这里附带一个PDBLoader可以识别的PDB文件--乙醇(酒精)的PDB文件

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659