化学文件格式

本文讨论了一些常见的分子文件格式，以及它们之间的使用和转换。

## 区分这些格式

化学信息通常以文件或流（stream）的形式提供，人们已经创建了许多格式，分别具有不同详细程度的文档。格式通过以下三种方式表示（参见 "Chemical MIME" 部分）

- 文件扩展名（通常为 3 个字母）。这不是十分可靠，因为包括非化学文件在内的许多文件类型共用这些常见的后缀，例如“.mol”和“.dat”。
- 文件中包含格式信息的自描述文件。例如CIF和CML。
- 可以传输化学信息的服务器传输的Chemical/MIME流。

## 化学标记语言（CML）

化学标记语言（CML）是一种用于表示分子和其他化学数据的开源格式。其开源项目包含XML Schema、用于解析和使用CML数据的一整套源代码以及一个活跃的社区。许多工具都兼容CML数据文件，包括JChemPaint、Jmol、XDrawChem和MarvinView。

## 蛋白质数据库（PDB）

PDB格式通常用于蛋白质，但也可用于其他类型的分子。它最初的设计为固定列宽格式，因此具有最大原子数、残基数和链数的限制；这导致较大的结构（例如核糖体）需要被拆分为多个文件。但是也有许多工具可以读取超出这些限制的文件。例如，E.coli 70S核糖体 在 2009 年被分割为 4 个PDB文件： 3I1M、 3I1N、3I1O和 3I1P，在2014 年又被合并为一个文件 4V6C。

一些PDB文件拥有描述原子连接性和位置的可选功能。因为这些文件有时用于描述大分子组装体或在显式溶剂中表示的分子，所以它们的体积会非常大且被压缩。一些工具，例如Jmol和KiNG，可以读取 .gz格式的PDB文件。wwPDB制定并维护PDB及其XML替代方案PDBML的规范。2007 年 8 月，PDB格式规范（版本 3.0）发生了相当大的变化，并且修复了现有数据库中的许多文件问题。PDB文件的典型文件扩展名是.pdb，一些较旧的文件也可能使用.ent或.brk。一些分子建模工具根据自己的需要调整基本格式为非标准的PDB样式文件。

## GROMACS

GROMACS系列文件格式是为与分子模拟软件包GROMACS一起使用而创建的。它与PDB格式非常相似，但允许额外的数值精度，并可选择保留有关粒子速度以及模拟轨迹中给定点的位置的信息。这是因为它被设计用于存储分子动力学模拟的输出。GROMACS不允许存储连接信息，这些信息是从单独的分子和系统拓扑文件中获得的。GROMACS文件的典型文件扩展名是.gro。

## CHARMM

CHARMM分子动力学软件包可以读写多种标准的化学和生化文件格式；但CARD（coordinate, 坐标）和PSF（Protein Structure File, 蛋白质结构文件）几乎是CHARMM独有的。CARD格式是固定列宽的，类似于PDB格式，专门用于存储原子坐标。PSF文件包含原子连接信息（即描述原子之间的键），这在在开始分子动力学模拟之前是必需的。使用的典型文件扩展名分别是.crd和.psf。

## GSD（General Simulation Data）

通用模拟数据（General Simulation Data, GSD）格式用于高效地读取和写入主要来自（但不限于）HOOMD-blue的粒子模拟数据。该软件包包含的一个python模块可以以易于使用的语法读取和写入HOOMD模式的gsd文件。

## Ghemical

Ghemical软件可以使用OpenBabel导入和导出多种文件格式，默认使用GPR格式。该文件由几个部分组成，由 `!Header` `!Info` `!Atoms` `!Bonds` `!Coord` `!PartialCharges` `!End` 分隔。

这种格式的推荐MIME类型为application/x-ghemical。

## SYBYL线性字符串（SYBYL Line Notation，SLN）

SYBYL线性字符串（SYBYL Line Notation, SLN）是一种用字符串表示化学结构的方法。因其基于SMILES，所以包含用于特定相对立体化学的完整表示方式。SLN具有丰富的查询语法，允许查询Markush结构，还支持ChemDraw组合库的规范。

例：

SLN字符串

苯｜C1H:CH:CH:CH:CH:CH:@1

丙氨酸｜NH2Cs=nH(CH3)C(=O)OH

要求显示R侧链｜R1hac>1C1:C:C:C:C:C:@1

酰胺/磺胺

## 简化分子线性输入规范（SMILES）

Simplified Molecular Input Line Entry Specification（简化分子线性输入规范，SMILES）用一串字符描述分子。SMILES字符串包括连接情况，但不包括 2D和 3D坐标。

氢原子会被略去，原子用在方括号内的化学元素符号表示，例如Au表示“金”。有机物中的C、N、O、P、S、Br、Cl、I等原子可以省略方括号，其他元素必须包括在方括号之内。离子用方括号括起，用元素符号和电荷表示，"+"表示正电荷、"-"表示负电荷，电荷数跟在正负号之后。如果该原子与氢原子相连，氢原子写在元素符号后面。

符号“=”表示双键，“#”表示三键。表示分支。如果结构中有环，则要打开。断开处的两个原子用同一个数字标记，表示原子间有键相连。

芳环中的C、O、S、N原子分别用用小写字母c,o,s,n表示。如苯表示为c1ccccc1

例：

名称｜化学式｜SMILES字符串

甲烷｜CH4｜C

乙醇｜C2H6O｜CCO

苯｜C6H6｜C1=CC=CC=C1 or c1ccccc1

乙烯｜C2H4

## XYZ

XYZ是一种简单的格式，通常在第一行给出原子数，在第二行给出注释，然后是几行原子符号（或原子序数）和坐标参数。

## MDL编号

MDL编号包含每个反应和变化的唯一标识号。格式为RXXXnnnnnnnn。R表示一个反应（reaction），XXX表示哪个数据库包含反应记录。数字部分nnnnnnnn是一个 8 位数字。

## 其他常见格式

`最广泛使用的工业标准之一是化学表格文件（{{`tsl|en|Chemical_table_file|Chemical_table_file|Chemical table file）格式，例如结构数据格式(Structure Data Format，SDF) 文件。这些文本文件遵循着严格格式，用于表示多个化学结构和相关数据。该格式最初由Molecular Design Limited (MDL) 开发和发布。MOL是MDL的另一种文件格式。它记录在CTfile格式的第 4 章中。

PubChem还有XML和ASN1 格式，是PubChem在线数据库的导出选项。二者均基于文本（ASN1 通常是二进制格式）。

下表列出了大量其他格式

## 格式转换

OpenBabel和JOELib是免费提供的开源工具，专门被设计用来将文件在各种格式之间转换。他们的化学专家系统（chemical expert systems）支持大型的文件转换。

OpenBabel的基本命令是

`babel -i ''input_format'' ''input_file'' -o ''output_format'' ''output_file''`

例如，要将SDF中的 肾上腺素.sdf 文件转换为CML格式：

`babel -i sdf epinephrine.sdf -o cml epinephrine.cml`

生成的文件是 肾上腺素.cml

IOData 是一个免费的开源Python库，用于解析、存储和转换量子化学、分子动力学和平面波密度泛函理论软件程序常用的各种文件格式。它还能为各种软件包生成导入文件的灵活框架。有关支持格式的完整列表，请访问。

许多用于查看和编辑分子结构的工具能够读取多种格式的文件并以其他格式输出。例如：JChemPaint（基于Chemistry Development Kit）、XDrawChem（基于OpenBabel）、Chime、Jmol、Mol2mol 和Discovery Studio。

## 化学MIME项目

“化学MIME”是一种将化学信息流附加到MIME类型的方法。该项目于 1994 年 1 月开始，并于 1994 年 5 月在CERN举行的第一届WWW国际会议的化学研讨会上首次宣布。……草案的第一个版本在 1994 年 5 月至 10 月期间发布，第二个修订版在 1995 年 4 月至 9 月期间发布。在 1996 年 8 月的IUPAC会议上提交给CPEP（印刷和电子出版物委员会）的论文尚待商榷。1998年该文件在JCIM上正式发表。

文件拓展名｜MIME类型｜全名｜备注

alc｜chemical/x-alchemy｜Alchemy格式

csf｜chemical/x-cache-csf｜CAChe MolStruct CSF

cbin, cascii, ctab｜chemical/x-cactvs-binary｜CACTVS格式

cdx｜chemical/x-cdx｜ChemDraw eXchange文件

cer｜chemical/x-cerius｜MSI Cerius II格式

c3d｜chemical/x-chem3d｜Chem3D格式

chm｜chemical/x-chemdraw｜ChemDraw文件

cif｜chemical/x-cif｜晶体学信息文档，晶体学信息框架｜由国际晶体学联合会颁布

cmdf｜chemical/x-cmdf｜CrystalMaker数据格式

cml｜chemical/x-cml｜化学标记语言｜基于XML的 化学标记语言

cpa｜chemical/x-compass｜Compass program of the Takahashi

bsd｜chemical/x-crossfire｜Crossfire文件

csm, csml｜chemical/x-csml｜化学特色标记语言Chemical Style Markup Language

ctx｜chemical/x-ctx｜Gasteiger group CTX格式

cxf, cef｜chemical/x-cxf｜Chemical eXchange格式

emb, embl｜chemical/x-embl-dl-nucleotide｜EMBL Nucleotide格式

spc｜chemical/x-galactic-spc｜光谱学和色谱学的SPC格式

inp, gam, gamin｜chemical/x-gamess-input｜GAMESS输入格式

fch, fchk｜chemical/x-gaussian-checkpoint｜Gaussian检查点格式

cub｜chemical/x-gaussian-cube｜Gaussian Cube (Wavefunction) 格式

gau, gjc, gjf, com｜chemical/x-gaussian-input｜Gaussian输入格式

gcg｜chemical/x-gcg8-sequence｜Protein Sequence格式

gen｜chemical/x-genbank｜ToGenBank格式

istr,ist｜chemical/x-isostar｜分子间反应的IsoStar Library

jdx, dx｜chemical/x-jcamp-dx｜JCAMP光谱学数据交换格式

kin｜chemical/x-kinemage｜Kinetic (蛋白质结构) 图像; Kinemage

mcm｜chemical/x-macmolecule｜MacMolecule格式

mmd, mmod｜chemical/x-macromodel-input｜MacroModel分子机理

mol｜chemical/x-mdl-molfile｜MDL Mol文件

smiles, smi｜chemical/x-daylight-smiles｜简化分子线性输入规范｜对分子的线性字符描述

sdf｜chemical/x-mdl-sdfile｜结构数据文件

el｜chemical/x-sketchel｜SketchEl分子文件

ds｜chemical/x-datasheet｜SketchEl XML数据表

inchi｜chemical/x-inchi｜IUPAC国际化学标识

jsd, jsdraw｜chemical/x-jsdraw｜JSDraw原生文件格式

helm, ihelm｜chemical/x-helm｜Pistoia Alliance HELM字符串｜对生物化学分子的线性字符描述

xhelm｜chemical/x-xhelm｜Pistoia Alliance XHELM XML文件｜基于XML的 大分子分级编辑语言，包含单体的结构

## 化学数据来源

以下是部分免费提供的分子数据来源。互联网上的资源比此处列出的要多得多。下面的参考资料中给出了这些来源的链接。

- 美国国家卫生研究院PubChem数据库是一个巨大的化学数据来源。所有数据都是二维的。数据包括SDF、SMILES、PubChem XML和PubChem ASN1 格式。
- 全球蛋白质数据库（wwPDB）是蛋白质和核酸分子坐标数据的极好来源。数据是三维的，以蛋白质数据库（PDB）格式提供。
- eMolecules是一个用于分子数据的商业数据库。数据包括每个化合物的二维结构图和微笑字符串。eMolecules支持基于部分分子结构的快速子结构搜索。
- ChemExper是用于分子数据的商业数据库。搜索结果包括许多化合物的二维结构图和摩尔文件。
- 纽约大学 3-D分子结构图书馆。
- 美国环境保护署的分布式结构可搜索毒性（DSSTox）数据库网络是EPA计算毒理学计划的一个项目。该数据库提供SDF分子文件，重点关注致癌物质和其他有毒物质。

## 另请参见

- 文件格式
- OpenBabel,JOELib, OELib
- 化学开发工具包（Chemistry Development Kit）
- 化学标记语言
- 分子建模软件（Software for molecular modeling）
- NCI/CADD化学标识符解析器