一,什么是CheckCIF
CheckCIF是荷兰的晶体学教授Anthony L. Spek所开发的一套自动化的针对晶体学信息文件(Crystallographic Information File,即通常发表文章所需的CIF文件)的验证程序。自上世纪八九十年代起,随着计算机自动化程序的发展以及现代单晶衍射仪的大规模商业化,单晶衍射逐渐从一门只有专业晶体学家才能掌握的复杂技术快速演变成了广泛应用于许多学科门类的一项日常表征。随之而来的则是晶体学数据的爆炸式增长。快速涌入该领域的其他学科的研究人员一方面极大程度的丰富和拓展了晶体学的研究领域,但另一方面面对泥沙俱下的大量数据,有限的晶体学审稿人很难对所有的数据进行仔细的核查。有鉴于此,国际晶体学联合会(IUCR)旗下的 Acta Crystallographica Section C率先引入了自动化的结构验证程序作为工具,以通过标准化的方式对晶体解析中常见的问题进行检测,来降低作者,审稿人和读者的工作量。目前,大量的主流杂志在文章发表时都会要求在提交CIF文件的同时提交CheckCIF的检测结果。
二、CheckCIF目前已经几乎成为晶体数据发表的金标准,是否CheckCIF不出现A类和B类警报的就一定是正确的,出现A类和B类警报的一定是不正确的?
这里我们可以引用该程序作者的一段话作为回答:“CheckCIF offers a machine-generated report in the form of ALERTS. It does not give a ‘good structure’ or ‘bad structure’ (or ’publish’ or ’reject’) verdict. That is left to human beings, either referees or users of the reported results. The value of a structure report lies in the added reliable scientific information. A well-documented poor-quality structure may be fine if supporting part of the reported chemistry in a chemical journal, but less suitable for publication in a crystallographic journal such as Acta Crystallographica that aims to publish the best attainable quality of the reported structure, the latter in view of future use of the data in unrelated research such as non-AIM model refinement.”
如果晶体数据本身并不是文章的核心,那么只要晶体学实验提供的信息足以支撑正文中所下的结论,那么该结果就是可以接受的。比如说对很多文章而言,晶体学的最大作用是帮助他们了解晶体中分子与分子间的堆积方式和晶体的大体框架,那么即便是分辨率差至1 Angstrom的数据,(这样的数据注定会遇到A类和B类警报),只要得到了足够认真合理的精修,对于支撑这种结论仍然是足够的。但是如果这样的数据被用来说明某些精细的结构信息,比如某些氢原子的位置,很明显这样的数据是远远不能令人信服的。当然这里并不是说,实验者只需要获得一个马马虎虎可以进行解释的结果后就不应该在晶体学上继续浪费时间,相反,实验者永远应该尽一切可能提供高质量的数据。而提供低质量数据应该只是在时间成本和物料成本双重限制下的无奈之举。
三,checkcif主要的检测内容有哪些?
Checkcif的检测内容大体上可以分为以下三个方面
(1)晶体本身及测试解析过程的相关信息是否得到了完整的报道,比如晶体的尺寸,颜色和形状,测试的条件如测试温度,测试仪器等。有些读者或许对checkcif中对这些看起来细枝末节的信息给予极大的关注感到不解。实际上这一点正关乎对cif文件本身的理解,我们不应该把它仅仅当作一个数据文件,相反的,我们应该把它看作一份格式化的晶体学实验报告。从这个角度而言,对实验对象,实验过程,实验结果的如实详细的报告,是任何一份合格的实验报告不可或缺的。
(2)单晶解析的结果质量如何,如Rint, wR1, wR2 等关键性指标是否过高,是否存在误差过大的衍射点等等。 客观来说,CheckCIF程序对这些指标提出警报的标准非常低。例如只有在Rint>12%时,CheckCIF才会提出一个B类警报。只有在wR2>35%时,CheckCIF才会提出一个B类警报。对于衍射较好,结构也简单的小分子晶体,这种警报明显是不可接受的。解析者应仔细核查在数据处理过程中是否存在错误,或考虑孪晶的存在,而不能随意的丢出一个晶体质量较低的解释作为回应。而对于晶胞较大且结构复杂的超分子或者MOF等晶体,稍高的wR2值有时是无法避免的。在这时测试者应首先确认该套数据有无进一步优化可能,尽一切努力降低wR2值,如各种尝试收效均有限时,测试者可以以晶体衍射弱、结构复杂,堆积不完美等等解释作为回复。
(3)单晶解析的结果是否正确。从晶体学的角度,CheckCIF会检测诸如是否有潜在的更高的对称性未被处理,是否有原子存在不合理的ADP(Atomic Displacement Parameter)。从化学的角度,CheckCIF会检测诸如原子是否得到了正确的加氢,氢键是否朝向了正确的方向,原子与原子间的距离是否合理,晶体中是否存在较大的空腔等等。这一类警报往往并不一定意味着晶体解析本身存在着问题,相反它有可能是某些晶体的特殊属性。譬如实验者的目的如果是合成多孔晶态材料,那么检测出空腔的警报非但不是其应该担心的问题,反而是一个试验成功的信号。但是对于在此之外的问题,测试者首先应该从晶体学或化学的角度出发对其产生的原因进行分析并尝试用最佳的方式解决。例如如果CheckCIF提示有原子存在着扁长的椭球,那么适当的无序处理在此处应该被考虑,而不能仅仅通过一两个简单的限定来将其压制下去。
四、如何进行CheckCIF检测?
大体上可以分为两种方法,第一种是通过Platon(Platon亦为Anthony L. Spek教授所开发)内置的检测功能,点击report选项卡下的validation后,即可出现相应的结果。此外在运行该检测之后,Platon会同时产生vrf文件和chk文件,二者均为文本文件,使用文本阅读器即可打开。其中vrf文件主要是A类和B类警报,而chk文件中则是validation所产生的所有结果,包括一个小的晶体学数据表和所有的A,B,C,G类警报。另外一种方法则是众所周知的通过国际晶体学联合会免费提供的在线服务进行检测(https://checkcif.iucr.org/)。 理论上该网站所运行的检测程序和Platon内置的程序是一样的。但是由于platon是一个更新频率相当快的软件包(http://www.platonsoft.nl/xraysoft/update_history_platon.html),其内置的CheckCIF模块也在不断地被升级迭代。而很多的同学往往没有定期升级Platon软件包的习惯。这就导致有时候能通过Platon检测的CIF文件,在在线的检测中仍然会面临一些警报。在这里,我们推荐在解晶体的过程中,使用者借助Platon内置的程序对目前正在精修的数据进行快速方便的检测,但是在晶体精修完成后,通过在线的检查确保CIF文件的正确性是必不可少的。
五、checkcif 的alert都是什么意思?
一个经典的alert往往由警报编号和错误内容组成。警报的编号往往形如“PLAT306_ALERT_2_B” .一般情况下常见警报的开始四个字母多为PLAT,其后的数字是警报的编号,该编号的第一位数表示警报的分类(如下表),后两位则是在该分类下警报的编号。
_0xx |
general |
_1xx |
cell/symmetry |
_2xx |
adp-related |
_3xx |
intra geometry |
_4xx |
inter geometry |
_5xx |
coordination geometry |
_6xx |
void tests & varia |
_7xx |
varia |
_8xx |
(Fatal) Software Errors/Problems |
_9xx |
Reflection data issues |
CheckCIF中所有的检测内容都可以在https://journals.iucr.org/services/cif/datavalidation.html找到完整的解释和分析。如果在解析过程中遇到了不理解的警报,我们建议首先阅读该页面中对CheckCIF相关警报的解释。在该页面里,读者往往可以找到CheckCIF做相关检测的算法逻辑甚至一些引发警报的原因分析,读者可对照相关内容,检查自己在结构精修中所犯的错误。譬如在检测Rint值偏高的PLAT020警报的相关页面中,它会首先提示实验者检查自己的空间群设定是否正确,此外,它还提供了引起该警报的五个常见的原因,包括吸收校正不完全,晶体质量差导致数据质量偏低,高角度衍射弱(该页面对此甚至提供了建议的解决方案),选错了Laue群或晶系,以及因为等效衍射点的数目较少所导致的假象。对于测试过程中常见的A类或B类警报,我们以后会结合例子,继续推出相关文章进行深入的解释和分析。
六,该怎么对CheckCIF给出的问题进行回应
这里只简述一下如果有必须回复的问题,应该如何去做。首先使用者应该进入CheckCIF网页 (https://checkcif.iucr.org/),选择html格式的CheckCIF report 和Level A alerts的Output Validation Response Form。这样如果CheckCIF的结果中出现了A类警报,那么在弹出的检测结果页面,检测者应该能看到以# start Validation Reply Form开始 和# end Validation Reply Form结束的一块红色文字(Figure 1)。 检测者应该将这一块红色文字拷贝到CIF文件中。注意该段文字不能放在CIF正文的第一行,否则会引发语法错误。尽管将该段文字放在其他任何地方几乎都可以,但是出于CIF文件的整洁性的考虑,笔者建议将该块数据放在两大信息块之间而非随意的插入任意一行。然后在该块数据中的每一个“RESPONSE:”后对上一行中CheckCIF提出的问题进行认真详细的解答。在这里需要注意的是,CIF文件对每一行的字符数有数量限制,因此如果回复较长的话,应该及时换行,否则会造成回复读取的不完全。在回复了所有必须回复的警报后,可以在CheckCIF网站再次上传包含该块数据的cif文件,这样就可以看到所有的A类警报后都有了绿色的author response字条。另外在向ccdc数据库上传CIF文件时,该块数据亦能被读取,并自动填充。
Figure 1
习惯上,只有A类警报是必须要回复的,B类警报只要经过解析者仔细地检查后,确保没有问题,是可以放下不管的。目前,出于对本组产出数据的严格要求,很多课题组往往会主动要求不能出现B类警报。面对这种情况,检查者只需要在Output Validation Response Form一项选择Level A and B alerts.