COD CIF解析器

用法

  • Perl语言:

    ($datablocks,$error_count,$error消息)=parse_cif($file,\%options);
  • 蟒蛇:

    数据块,error_count,error_messages=解析(文件,选项)

选项

COD CIF解析器用于检测和报告最常见的CIF语法错误。这是使用扩展语法实现的。COD CIF解析器的行为由以下选项控制:

  • 修复错误(_E)。启用所有语法错误更正功能。
  • 修复数据头.忽略第一个数据块之前的杂散CIF值和丢失的值数据_收割台。
  • 修复数据块名称。在数据块名称后将杂散的CIF值附加到数据块名称。
  • fix_duplicate_tags_with_same_values(具有名称值的固定列表标签)。忽略同一数据块中具有相同值的两个或多个数据项。
  • 带有空值的修复重复标记。如果在同一数据块中找到多个数据项,并且该数据项的其余值未知,则使用已知值(而不是“?”或“.”)保留该数据项值。
  • 修复字符串引号。将多个未加引号的值放在非循环数据项后面的引号中。
  • 允许使用字符串.将以方括号([)开头的未加引号的字符串放在单引号中。
  • 固定ctrlz。删除不属于引号或文本字段的DOS EOF(^Z,Ctrl-Z)字符。
  • 修复_非ascii_符号.使用编码非ASCII符号数字字符引用.
  • 修复丢失闭合双引号。在适当的地方插入缺少的双右引号。
  • 修复丢失关闭单引号。在适当的地方插入缺少的单引号。

还有几个其他选项会影响CIF文件的解析方式:

  • do_not_unload_text(不展开文本)。在不应用文本字段展开算法的情况下分析文件。
  • do_not_unprefix文本。在不应用文本字段取消固定算法的情况下分析文件。
  • 无打印(_P)。返回包含错误消息的数据结构,而不是将其直接输出到标准错误流。

用法

  • cif_filter和其他脚本:通过将CIF解析器选项放在命令行中,可以在CIF_filter和其他一些脚本中使用它们:选项以“--”为前缀,下划线(“_”)替换为破折号(“-”),例如。允许使用字符串成为--allow-uq字符串括号.

  • 分析器API:COD CIF解析器的Perl和Python绑定的中心函数接受两个参数,第一个是文件名,第二个是选项的关联数组。例如:

    • Perl语言:

      parse_cif($file,{'fix_data_header'=>1})
    • 蟒蛇:

      解析(文件,{“fixdataheader”:1})

所有其他选项也同样打开/关闭。

数据结构

解析的CIF文件的数据块存储在关联数组中,键如下:

  • 名称(字符串):CIF数据块的名称;
  • 标签(数组):CIF数据块中的数据名称(小写);
  • (关联数组):键是标签数组,值是包含每个数据项的值的数组;
  • 类型(关联数组):键是标签数组,值是包含每个数据值的词汇派生数据类型的数组;
  • 精确度(关联数组):键是标签数组,值是包含每个数据项的标准不确定性的数组;
  • 循环(数组数组):每个内部数组对应于CIF数据块中的一个循环,并包含循环中存在的数据项列表;
  • 内环(关联数组):键是标签数组,值对应于外部的索引循环数组。它被用作优化循环相关搜索中的数据项的索引。
  • 到岸价(关联数组):具有键专业少数的对应于CIF格式的次要版本和主要版本,当前为1.1或2.0。

简单CIF文件的Perl表示示例

进一步阅读

  • Merkys,A.、Vaitkus,A.、Butkus,J.、Okulič-Kazarinas,M.、Kairys,V.和Graíulis,S.(2016年)。COD::CIF::Parser:用于Perl语言的纠错CIF分析器。应用晶体学杂志,49(1), 292–301.https://doi.org/10.107/S1600576715022396