finalcif 136__tar.gz → 137__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. {finalcif-136 → finalcif-137}/PKG-INFO +2 -2
  2. finalcif-137/finalcif/__init__.py +2 -0
  3. {finalcif-136 → finalcif-137}/finalcif/appwindow.py +31 -12
  4. {finalcif-136 → finalcif-137}/finalcif/cif/cif_dict_foo.py +26 -2
  5. {finalcif-136 → finalcif-137}/finalcif/cif/cif_file_io.py +1 -1
  6. {finalcif-136 → finalcif-137}/finalcif/cif/cif_order.py +20 -1
  7. {finalcif-136 → finalcif-137}/finalcif/cif/core_dict.py +1732 -734
  8. {finalcif-136 → finalcif-137}/finalcif/cif/modulation_dict.py +683 -323
  9. {finalcif-136 → finalcif-137}/finalcif/cif/powder_dict.py +500 -194
  10. {finalcif-136 → finalcif-137}/finalcif/cif/restraints_dict.py +323 -128
  11. {finalcif-136 → finalcif-137}/finalcif/cif/twin_dict.py +54 -26
  12. {finalcif-136 → finalcif-137}/finalcif/equip_property/equipment.py +27 -6
  13. {finalcif-136 → finalcif-137}/finalcif/finalcif_start.py +2 -1
  14. {finalcif-136 → finalcif-137}/finalcif/gui/custom_classes.py +3 -1
  15. {finalcif-136 → finalcif-137}/finalcif/gui/loop_creator_ui.py +0 -6
  16. {finalcif-136 → finalcif-137}/finalcif/gui/loop_creator_ui.ui +2 -14
  17. {finalcif-136 → finalcif-137}/finalcif/gui/plaintextedit.py +24 -8
  18. {finalcif-136 → finalcif-137}/finalcif/gui/text_templates_ui.py +0 -4
  19. {finalcif-136 → finalcif-137}/finalcif/gui/text_templates_ui.ui +0 -6
  20. {finalcif-136 → finalcif-137}/finalcif/gui/text_value_editor.py +16 -3
  21. finalcif-137/finalcif/gui/validators.py +201 -0
  22. {finalcif-136 → finalcif-137}/finalcif/report/report_text.py +12 -5
  23. {finalcif-136 → finalcif-137}/finalcif/report/tables.py +0 -2
  24. {finalcif-136 → finalcif-137}/finalcif/report/templated_report.py +12 -3
  25. finalcif-137/finalcif/template/machines/D8_VENTURE.cif +16 -0
  26. {finalcif-136 → finalcif-137}/finalcif/template/report.tmpl +5 -4
  27. {finalcif-136 → finalcif-137}/finalcif/template/templates.py +9 -9
  28. {finalcif-136 → finalcif-137}/finalcif/tools/misc.py +4 -2
  29. {finalcif-136 → finalcif-137}/finalcif/tools/options.py +0 -1
  30. {finalcif-136 → finalcif-137}/finalcif/tools/platon.py +7 -4
  31. finalcif-136/finalcif/__init__.py +0 -2
  32. finalcif-136/work/bootstrap.min.css +0 -7
  33. {finalcif-136 → finalcif-137}/.gitattributes +0 -0
  34. {finalcif-136 → finalcif-137}/.gitignore +0 -0
  35. {finalcif-136 → finalcif-137}/.run/Make Documentation MAC.run.xml +0 -0
  36. {finalcif-136 → finalcif-137}/.run/compile_ui_files.run.xml +0 -0
  37. {finalcif-136 → finalcif-137}/.run/make documentation Windows.run.xml +0 -0
  38. {finalcif-136 → finalcif-137}/CODE_OF_CONDUCT.md +0 -0
  39. {finalcif-136 → finalcif-137}/CONTRIBUTING.md +0 -0
  40. {finalcif-136 → finalcif-137}/Finalcif_installer_win.spec +0 -0
  41. {finalcif-136 → finalcif-137}/Finalcif_linux_onefile.spec +0 -0
  42. {finalcif-136 → finalcif-137}/Finalcif_mac.spec +0 -0
  43. {finalcif-136 → finalcif-137}/Hydrogen_solution_type.cif +0 -0
  44. {finalcif-136 → finalcif-137}/LICENSE +0 -0
  45. {finalcif-136 → finalcif-137}/README.md +0 -0
  46. {finalcif-136 → finalcif-137}/finalcif/app_path.py +0 -0
  47. {finalcif-136 → finalcif-137}/finalcif/cif/__init__.py +0 -0
  48. {finalcif-136 → finalcif-137}/finalcif/cif/all_cif_dicts.py +0 -0
  49. {finalcif-136 → finalcif-137}/finalcif/cif/atoms.py +0 -0
  50. {finalcif-136 → finalcif-137}/finalcif/cif/checkcif/__init__.py +0 -0
  51. {finalcif-136 → finalcif-137}/finalcif/cif/checkcif/checkcif.py +0 -0
  52. {finalcif-136 → finalcif-137}/finalcif/cif/cod/__init__.py +0 -0
  53. {finalcif-136 → finalcif-137}/finalcif/cif/cod/deposit.py +0 -0
  54. {finalcif-136 → finalcif-137}/finalcif/cif/cod/deposit_check.py +0 -0
  55. {finalcif-136 → finalcif-137}/finalcif/cif/cod/deposition_list.py +0 -0
  56. {finalcif-136 → finalcif-137}/finalcif/cif/cod/doi.py +0 -0
  57. {finalcif-136 → finalcif-137}/finalcif/cif/cod/upload.py +0 -0
  58. {finalcif-136 → finalcif-137}/finalcif/cif/cod/website_parser.py +0 -0
  59. {finalcif-136 → finalcif-137}/finalcif/cif/hkl.py +0 -0
  60. {finalcif-136 → finalcif-137}/finalcif/cif/reference.py +0 -0
  61. {finalcif-136 → finalcif-137}/finalcif/cif/text.py +0 -0
  62. {finalcif-136 → finalcif-137}/finalcif/datafiles/__init__.py +0 -0
  63. {finalcif-136 → finalcif-137}/finalcif/datafiles/bruker_data.py +0 -0
  64. {finalcif-136 → finalcif-137}/finalcif/datafiles/bruker_frame.py +0 -0
  65. {finalcif-136 → finalcif-137}/finalcif/datafiles/ccdc_mail.py +0 -0
  66. {finalcif-136 → finalcif-137}/finalcif/datafiles/data.py +0 -0
  67. {finalcif-136 → finalcif-137}/finalcif/datafiles/p4p_reader.py +0 -0
  68. {finalcif-136 → finalcif-137}/finalcif/datafiles/sadabs.py +0 -0
  69. {finalcif-136 → finalcif-137}/finalcif/datafiles/saint.py +0 -0
  70. {finalcif-136 → finalcif-137}/finalcif/datafiles/shelx_lst.py +0 -0
  71. {finalcif-136 → finalcif-137}/finalcif/datafiles/utils.py +0 -0
  72. {finalcif-136 → finalcif-137}/finalcif/displaymol/__init__.py +0 -0
  73. {finalcif-136 → finalcif-137}/finalcif/displaymol/molecule2D.py +0 -0
  74. {finalcif-136 → finalcif-137}/finalcif/displaymol/sdm.py +0 -0
  75. {finalcif-136 → finalcif-137}/finalcif/displaymol/vtk_molecule.py +0 -0
  76. {finalcif-136 → finalcif-137}/finalcif/equip_property/__init__.py +0 -0
  77. {finalcif-136 → finalcif-137}/finalcif/equip_property/author_loop_templates.py +0 -0
  78. {finalcif-136 → finalcif-137}/finalcif/equip_property/properties.py +0 -0
  79. {finalcif-136 → finalcif-137}/finalcif/equip_property/tools.py +0 -0
  80. {finalcif-136 → finalcif-137}/finalcif/gui/__init__.py +0 -0
  81. {finalcif-136 → finalcif-137}/finalcif/gui/combobox.py +0 -0
  82. {finalcif-136 → finalcif-137}/finalcif/gui/dialogs.py +0 -0
  83. {finalcif-136 → finalcif-137}/finalcif/gui/edit_button.py +0 -0
  84. {finalcif-136 → finalcif-137}/finalcif/gui/equipmenttable.py +0 -0
  85. {finalcif-136 → finalcif-137}/finalcif/gui/file_editor.py +0 -0
  86. {finalcif-136 → finalcif-137}/finalcif/gui/finalcif_gui_ui.py +0 -0
  87. {finalcif-136 → finalcif-137}/finalcif/gui/finalcif_gui_ui.ui +0 -0
  88. {finalcif-136 → finalcif-137}/finalcif/gui/import_selector.py +0 -0
  89. {finalcif-136 → finalcif-137}/finalcif/gui/import_selector_ui.py +0 -0
  90. {finalcif-136 → finalcif-137}/finalcif/gui/import_selector_ui.ui +0 -0
  91. {finalcif-136 → finalcif-137}/finalcif/gui/loop_creator.py +0 -0
  92. {finalcif-136 → finalcif-137}/finalcif/gui/loops.py +0 -0
  93. {finalcif-136 → finalcif-137}/finalcif/gui/mainstackwidget.py +0 -0
  94. {finalcif-136 → finalcif-137}/finalcif/gui/mixins.py +0 -0
  95. {finalcif-136 → finalcif-137}/finalcif/gui/new_key_dialog.py +0 -0
  96. {finalcif-136 → finalcif-137}/finalcif/gui/new_key_dialog_ui.py +0 -0
  97. {finalcif-136 → finalcif-137}/finalcif/gui/new_key_dialog_ui.ui +0 -0
  98. {finalcif-136 → finalcif-137}/finalcif/gui/playground.py +0 -0
  99. {finalcif-136 → finalcif-137}/finalcif/gui/propertytable.py +0 -0
  100. {finalcif-136 → finalcif-137}/finalcif/gui/spell_check_edit.py +0 -0
  101. {finalcif-136 → finalcif-137}/finalcif/gui/vrf_classes.py +0 -0
  102. {finalcif-136 → finalcif-137}/finalcif/icon/__init__.py +0 -0
  103. {finalcif-136 → finalcif-137}/finalcif/icon/finalcif.png +0 -0
  104. {finalcif-136 → finalcif-137}/finalcif/icon/finalcif2.ico +0 -0
  105. {finalcif-136 → finalcif-137}/finalcif/icon/finalcif2.png +0 -0
  106. {finalcif-136 → finalcif-137}/finalcif/icon/multitable.ico +0 -0
  107. {finalcif-136 → finalcif-137}/finalcif/icon/multitable.png +0 -0
  108. {finalcif-136 → finalcif-137}/finalcif/icon/multitable.xcf +0 -0
  109. {finalcif-136 → finalcif-137}/finalcif/report/__init__.py +0 -0
  110. {finalcif-136 → finalcif-137}/finalcif/report/archive_report.py +0 -0
  111. {finalcif-136 → finalcif-137}/finalcif/report/gui/__init__.py +0 -0
  112. {finalcif-136 → finalcif-137}/finalcif/report/gui/mainwindow.py +0 -0
  113. {finalcif-136 → finalcif-137}/finalcif/report/gui/mainwindow.ui +0 -0
  114. {finalcif-136 → finalcif-137}/finalcif/report/mtools.py +0 -0
  115. {finalcif-136 → finalcif-137}/finalcif/report/references.py +0 -0
  116. {finalcif-136 → finalcif-137}/finalcif/report/symm.py +0 -0
  117. {finalcif-136 → finalcif-137}/finalcif/template/__init__.py +0 -0
  118. {finalcif-136 → finalcif-137}/finalcif/template/bootstrap/bootstrap.min.css +0 -0
  119. {finalcif-136 → finalcif-137}/finalcif/template/mathml2omml.xsl +0 -0
  120. {finalcif-136 → finalcif-137}/finalcif/template/template1.docx +0 -0
  121. {finalcif-136 → finalcif-137}/finalcif/template/template_for_multitable.docx +0 -0
  122. {finalcif-136 → finalcif-137}/finalcif/template/template_text.docx +0 -0
  123. {finalcif-136 → finalcif-137}/finalcif/template/template_without_text.docx +0 -0
  124. {finalcif-136 → finalcif-137}/finalcif/tools/__init__.py +0 -0
  125. {finalcif-136 → finalcif-137}/finalcif/tools/download.py +0 -0
  126. {finalcif-136 → finalcif-137}/finalcif/tools/dsrmath.py +0 -0
  127. {finalcif-136 → finalcif-137}/finalcif/tools/pupdate.py +0 -0
  128. {finalcif-136 → finalcif-137}/finalcif/tools/settings.py +0 -0
  129. {finalcif-136 → finalcif-137}/finalcif/tools/shred.py +0 -0
  130. {finalcif-136 → finalcif-137}/finalcif/tools/space_groups.py +0 -0
  131. {finalcif-136 → finalcif-137}/finalcif/tools/spgr_format.py +0 -0
  132. {finalcif-136 → finalcif-137}/finalcif/tools/statusbar.py +0 -0
  133. {finalcif-136 → finalcif-137}/finalcif/tools/sumformula.py +0 -0
  134. {finalcif-136 → finalcif-137}/finalcif.exe +0 -0
  135. {finalcif-136 → finalcif-137}/install_requirements +0 -0
  136. {finalcif-136 → finalcif-137}/install_requirements.bat +0 -0
  137. {finalcif-136 → finalcif-137}/pyproject.toml +0 -0
  138. {finalcif-136 → finalcif-137}/requirements.txt +0 -0
  139. {finalcif-136 → finalcif-137}/requirements_devel.txt +0 -0
  140. {finalcif-136 → finalcif-137}/requirements_doku.txt +0 -0
  141. {finalcif-136 → finalcif-137}/run_finalcif +0 -0
  142. {finalcif-136 → finalcif-137}/run_finalcif.bat +0 -0
  143. {finalcif-136 → finalcif-137}/screenshots/finalcif_checkcif.png +0 -0
  144. {finalcif-136 → finalcif-137}/screenshots/finalcif_details.png +0 -0
  145. {finalcif-136 → finalcif-137}/screenshots/finalcif_loops.png +0 -0
  146. {finalcif-136 → finalcif-137}/screenshots/finalcif_loops2.png +0 -0
  147. {finalcif-136 → finalcif-137}/screenshots/finalcif_main.png +0 -0
  148. {finalcif-136 → finalcif-137}/screenshots/finalcif_report.png +0 -0
  149. {finalcif-136 → finalcif-137}/screenshots/finalcif_responses.png +0 -0
  150. {finalcif-136 → finalcif-137}/update.exe +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: finalcif
3
- Version: 136
3
+ Version: 137
4
4
  Summary: CIF file editor
5
5
  Project-URL: Homepage, https://dkratzert.de/finalcif.html
6
6
  Project-URL: Bug Tracker, https://github.com/dkratzert/FinalCif/issues
@@ -0,0 +1,2 @@
1
+
2
+ VERSION = 137
@@ -13,12 +13,11 @@ from contextlib import suppress
13
13
  from datetime import datetime
14
14
  from math import sin, radians
15
15
  from pathlib import Path, WindowsPath
16
- from shutil import which
17
16
  from typing import Union, Dict, Tuple, List, Optional
18
17
 
19
18
  import gemmi.cif
20
19
  import requests # type: ignore
21
- from PyQt5 import QtCore, QtGui, QtWebEngineWidgets
20
+ from PyQt5 import QtCore, QtGui, QtWebEngineWidgets, QtWidgets
22
21
  from PyQt5.QtCore import Qt, QEvent
23
22
  from PyQt5.QtWidgets import QMainWindow, QShortcut, QCheckBox, QListWidgetItem, QApplication, \
24
23
  QPlainTextEdit, QFileDialog, QMessageBox, QScrollBar
@@ -61,6 +60,8 @@ from finalcif.tools.space_groups import SpaceGroups
61
60
  from finalcif.tools.statusbar import StatusBar
62
61
  from finalcif.tools.sumformula import formula_str_to_dict, sum_formula_to_html
63
62
 
63
+ # QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
64
+
64
65
  DEBUG = False
65
66
  app = QApplication.instance()
66
67
  if app is None:
@@ -633,10 +634,9 @@ class AppWindow(QMainWindow):
633
634
 
634
635
  def setTextEditSizes(self):
635
636
  for ui in [self.ui.Spacegroup_top_LineEdit, self.ui.CCDCNumLineEdit, self.ui.SumFormMainLineEdit]:
636
- ui.setFixedHeight(self.ui.appendCifPushButton.height() + 6)
637
- ui.setFixedHeight(self.ui.appendCifPushButton.height() + 6)
638
- ui.setFixedHeight(self.ui.appendCifPushButton.height() + 6)
637
+ ui.setFixedHeight(self.ui.appendCifPushButton.height())
639
638
  vScrollBar = ui.verticalScrollBar()
639
+ # Scroll down a bit, or text will not be in the vertical center:
640
640
  vScrollBar.triggerAction(QScrollBar.SliderSingleStepAdd)
641
641
 
642
642
  def moveEvent(self, a0: QtGui.QMoveEvent) -> None:
@@ -1035,7 +1035,7 @@ class AppWindow(QMainWindow):
1035
1035
  log_widget=self.ui.CheckCifLogPlainTextEdit,
1036
1036
  output_widget=self.ui.CheckcifPlaintextEdit,
1037
1037
  cif_file=self.cif.fileobj)
1038
- if not Path(which(runner.platon_exe)).exists():
1038
+ if runner.platon_exe is not None and not Path(runner.platon_exe).exists():
1039
1039
  self.ui.CheckCifLogPlainTextEdit.setPlainText('\nPlaton executable not found!')
1040
1040
  self.ui.CheckCifLogPlainTextEdit.appendPlainText(
1041
1041
  'You can download Platon at http://www.platonsoft.nl/platon/\n')
@@ -1135,12 +1135,20 @@ class AppWindow(QMainWindow):
1135
1135
  make_multi_tables(cif=self.cif, output_filename=str(multi_table_document))
1136
1136
  else:
1137
1137
  print('Report with templates')
1138
- t = TemplatedReport(format=ReportFormat.RICHTEXT, options=self.options, cif=self.cif)
1139
- ok = t.make_templated_docx_report(output_filename=str(report_filename),
1140
- picfile=picfile,
1141
- template_path=Path(self.get_checked_templates_list_text()))
1142
- # t = TemplatedReport(format=ReportFormat.HTML, options=self.options, cif=self.cif)
1143
- # t.make_templated_html_report(options=self.options, picfile=picfile)
1138
+ template_path = Path(self.get_checked_templates_list_text())
1139
+ ok = False
1140
+ if template_path.suffix in ('.docx',):
1141
+ t = TemplatedReport(format=ReportFormat.RICHTEXT, options=self.options, cif=self.cif)
1142
+ ok = t.make_templated_docx_report(output_filename=str(report_filename),
1143
+ picfile=picfile,
1144
+ template_path=Path(self.get_checked_templates_list_text()))
1145
+ elif template_path.suffix in ('.html', '.tmpl'):
1146
+ t = TemplatedReport(format=ReportFormat.HTML, options=self.options, cif=self.cif)
1147
+ report_filename = report_filename.with_suffix('.html')
1148
+ ok = t.make_templated_html_report(output_filename=str(report_filename),
1149
+ picfile=picfile,
1150
+ template_path=template_path.parent,
1151
+ template_file=template_path.name)
1144
1152
  if not ok:
1145
1153
  return None
1146
1154
  except FileNotFoundError as e:
@@ -1513,6 +1521,7 @@ class AppWindow(QMainWindow):
1513
1521
  raise
1514
1522
  # unable_to_open_message(Path(self.cif.filename), not_ok)
1515
1523
  self.load_recent_cifs_list()
1524
+ self.set_vertical_header_width()
1516
1525
  if self.options.track_changes and load_changes:
1517
1526
  changes_exist = False
1518
1527
  if self.changes_cif_has_zero_size():
@@ -1557,6 +1566,16 @@ class AppWindow(QMainWindow):
1557
1566
  t = QtCore.QTimer(self)
1558
1567
  t.singleShot(1000, self.check_cecksums)
1559
1568
 
1569
+ def set_vertical_header_width(self):
1570
+ """
1571
+ Sets the width of the vertical header to the length of the longest string in the list.
1572
+ """
1573
+ vheader: QtWidgets.QHeaderView = self.ui.cif_main_table.verticalHeader()
1574
+ fm = QtGui.QFontMetrics(vheader.font(), self)
1575
+ # noinspection PyTypeChecker
1576
+ longest_string: str = max(self.ui.cif_main_table.vheaderitems, key=len)
1577
+ vheader.setMaximumWidth(fm.width(longest_string + 'O'))
1578
+
1560
1579
  def changes_cif_has_values(self) -> bool:
1561
1580
  try:
1562
1581
  return not self.get_changes_cif(self.finalcif_changes_filename).is_empty()
@@ -21,6 +21,15 @@ def format_definition(definition: str):
21
21
  return newdef
22
22
 
23
23
 
24
+ formats = {
25
+ 'char' : 'string',
26
+ 'uchar': 'case-insensitive string',
27
+ 'numb' : 'number (int or float)',
28
+ 'null' : '? (unknown)' or '. (not applicable)',
29
+ '' : '--'
30
+ }
31
+
32
+
24
33
  def process_cif_dict(cdic):
25
34
  """
26
35
  Creates a dictionary with cif keywords as key and help text as value.
@@ -36,6 +45,7 @@ def process_cif_dict(cdic):
36
45
  example_detail = item.get('_example_detail', '')
37
46
  enumeration = item.get('_enumeration', '')
38
47
  enumeration_detail = item.get('_enumeration_detail', '')
48
+ default = item.get('_enumeration_default', '')
39
49
  if example:
40
50
  if isinstance(example, list) and not enumeration_detail:
41
51
  example = '\n'.join([str(x) for x in example])
@@ -52,15 +62,29 @@ def process_cif_dict(cdic):
52
62
  ["{}\n\t{}\n".format(str(x), str(y)) for x, y in zip(enumeration, enumeration_detail)])
53
63
  enumeration = format_definition(escape(str(enumeration)))
54
64
  definition = '{}\n\n<h3>Example:</h3>\n{}'.format(definition, enumeration)
65
+ type_format = item.get("_type", "")
66
+ enum_range = item.get('_enumeration_range', '')
55
67
  if isinstance(name, list):
56
68
  for n in name:
57
69
  # For keys like 'atom_site_aniso_b_[]' where the name has several subnames:
58
- alldic[n] = '<pre><h2>{}</h2>{}</pre>'.format(n, format_definition(definition))
70
+ alldic[n] = help_text(definition, n, type_format, enum_range, default)
59
71
  else:
60
- alldic[name] = '<pre><h2>{}</h2>{}</pre>'.format(name, format_definition(definition))
72
+ alldic[name] = help_text(definition, name, type_format, enum_range, default)
61
73
  return alldic
62
74
 
63
75
 
76
+ def help_text(definition: str, name: str, type_format: str, enum_range: str, enum_default) -> str:
77
+ if enum_range.endswith(':'):
78
+ enum_range = enum_range + '∞'
79
+ limits = f'\n<br><p><h4>Limits:</h4> {enum_range} </p>'
80
+ default = f'\n<br><p><h4>Default:</h4> {enum_default} </p>'
81
+ return (f'<pre><h2>{name}</h2>{format_definition(definition)}</pre>'
82
+ f'\n<br><p><h4>Type:</h4> {formats.get(type_format, "")}</p>'
83
+ f'{limits if enum_range else ""}'
84
+ f'{default if enum_default else ""}'
85
+ )
86
+
87
+
64
88
  def load_cif_as_dictionary(link, path_to_cif):
65
89
  if not path_to_cif.exists():
66
90
  get_dictionary_cif(link, path_to_cif)
@@ -94,7 +94,7 @@ class CifContainer():
94
94
  The suffix needs '-finalcif' in order to contain the finalcif ending.
95
95
  "foo/bar/baz-finalcif.cif"
96
96
 
97
- :param forece_strip: Forces to strip the filename also after the '-finalcif' string.
97
+ :param force_strip: Forces to strip the filename also after the '-finalcif' string.
98
98
  """
99
99
  file_witout_finalcif = strip_finalcif_of_name(Path(self.filename).stem, till_name_ends=force_strip)
100
100
  filename = self.path_base.joinpath(Path(prefix + file_witout_finalcif + suffix))
@@ -17,6 +17,13 @@ special_keys = ['_iucr_refine_instructions_details',
17
17
  ]
18
18
 
19
19
  order = [
20
+ '_audit_update_record',
21
+ '_audit_contact_author',
22
+ '_audit_contact_author_name',
23
+ '_audit_contact_author_phone',
24
+ '_audit_contact_author_email',
25
+ '_audit_contact_author_fax',
26
+ '_audit_contact_author_address',
20
27
  '_audit_author_id',
21
28
  '_audit_author_id_audit',
22
29
  '_audit_author_name',
@@ -128,7 +135,6 @@ order = [
128
135
  '_publ_contact_author_id_orcid',
129
136
  '_publ_contact_author_footnote',
130
137
 
131
-
132
138
  '_shelx_SHELXL_version_number',
133
139
  '_chemical_name_systematic',
134
140
  '_chemical_name_common',
@@ -341,4 +347,17 @@ order = [
341
347
  '_geom_details',
342
348
  '_geom_special_details',
343
349
 
350
+ '_bruker_diffrn_runs_wavelength',
351
+ '_bruker_diffrn_runs_temperature',
352
+ '_bruker_diffrn_runs_current',
353
+ '_bruker_diffrn_runs_voltage',
354
+ '_bruker_diffrn_runs_images',
355
+ '_bruker_diffrn_runs_time',
356
+ '_bruker_diffrn_runs_width',
357
+ '_bruker_diffrn_runs_axis',
358
+ '_bruker_diffrn_runs_chi',
359
+ '_bruker_diffrn_runs_phi',
360
+ '_bruker_diffrn_runs_omega',
361
+ '_bruker_diffrn_runs_theta',
362
+ '_bruker_diffrn_runs_distance',
344
363
  ]