finalcif 142__tar.gz → 144__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.
- {finalcif-142 → finalcif-144}/.gitignore +2 -0
- {finalcif-142 → finalcif-144}/PKG-INFO +1 -1
- finalcif-144/finalcif/__init__.py +2 -0
- {finalcif-142 → finalcif-144}/finalcif/appwindow.py +4 -4
- {finalcif-142 → finalcif-144}/finalcif/cif/cif_file_io.py +8 -2
- {finalcif-142 → finalcif-144}/finalcif/displaymol/molecule2D.py +16 -2
- {finalcif-142 → finalcif-144}/finalcif/report/templated_report.py +6 -6
- finalcif-144/finalcif/template/report_default.docx +0 -0
- finalcif-144/finalcif/template/template_for_multitable.docx +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/misc.py +16 -3
- {finalcif-142 → finalcif-144}/finalcif/tools/shred.py +5 -0
- {finalcif-142 → finalcif-144}/update.exe +0 -0
- finalcif-142/finalcif/__init__.py +0 -2
- finalcif-142/finalcif/template/report_default.docx +0 -0
- finalcif-142/finalcif/template/template_for_multitable.docx +0 -0
- {finalcif-142 → finalcif-144}/.gitattributes +0 -0
- {finalcif-142 → finalcif-144}/.run/Make Documentation MAC.run.xml +0 -0
- {finalcif-142 → finalcif-144}/.run/compile_ui_files.run.xml +0 -0
- {finalcif-142 → finalcif-144}/.run/make documentation Windows.run.xml +0 -0
- {finalcif-142 → finalcif-144}/CODE_OF_CONDUCT.md +0 -0
- {finalcif-142 → finalcif-144}/CONTRIBUTING.md +0 -0
- {finalcif-142 → finalcif-144}/Finalcif_installer_win.spec +0 -0
- {finalcif-142 → finalcif-144}/Finalcif_linux_onefile.spec +0 -0
- {finalcif-142 → finalcif-144}/Finalcif_mac.spec +0 -0
- {finalcif-142 → finalcif-144}/Hydrogen_solution_type.cif +0 -0
- {finalcif-142 → finalcif-144}/LICENSE +0 -0
- {finalcif-142 → finalcif-144}/README.md +0 -0
- {finalcif-142 → finalcif-144}/finalcif/app_path.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/all_cif_dicts.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/atoms.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/checkcif/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/checkcif/checkcif.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cif_dict_foo.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cif_order.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cod/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cod/deposit.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cod/deposit_check.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cod/deposition_list.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cod/doi.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cod/upload.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/cod/website_parser.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/core_dict.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/hkl.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/modulation_dict.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/powder_dict.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/reference.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/restraints_dict.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/text.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/cif/twin_dict.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/bruker_data.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/bruker_frame.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/ccdc_mail.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/data.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/p4p_reader.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/sadabs.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/saint.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/shelx_lst.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/datafiles/utils.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/displaymol/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/displaymol/sdm.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/displaymol/vtk_molecule.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/equip_property/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/equip_property/author_loop_templates.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/equip_property/equipment.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/equip_property/properties.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/equip_property/tools.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/finalcif_start.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/block_combobox.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/combobox.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/custom_classes.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/dialogs.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/edit_button.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/equipmenttable.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/file_editor.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/finalcif_gui_ui.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/finalcif_gui_ui.ui +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/import_selector.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/import_selector_ui.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/import_selector_ui.ui +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/loop_creator.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/loop_creator_ui.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/loop_creator_ui.ui +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/loops.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/mainstackwidget.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/mixins.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/new_key_dialog.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/new_key_dialog_ui.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/new_key_dialog_ui.ui +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/plaintextedit.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/playground.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/propertytable.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/spell_check_edit.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/text_templates_ui.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/text_templates_ui.ui +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/text_value_editor.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/validators.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/gui/vrf_classes.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/icon/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/icon/finalcif.png +0 -0
- {finalcif-142 → finalcif-144}/finalcif/icon/finalcif2.ico +0 -0
- {finalcif-142 → finalcif-144}/finalcif/icon/finalcif2.png +0 -0
- {finalcif-142 → finalcif-144}/finalcif/icon/multitable.ico +0 -0
- {finalcif-142 → finalcif-144}/finalcif/icon/multitable.png +0 -0
- {finalcif-142 → finalcif-144}/finalcif/icon/multitable.xcf +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/archive_report.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/gui/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/gui/mainwindow.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/gui/mainwindow.ui +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/mtools.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/references.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/report_text.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/symm.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/report/tables.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/bootstrap/bootstrap.min.css +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/machines/D8_VENTURE.cif +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/mathml2omml.xsl +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/report.tmpl +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/template1.docx +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/template_text.docx +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/template_without_text.docx +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/templates.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/xsl/convert.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/template/xsl/xmltohtml.xsl +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/__init__.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/chemparse.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/download.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/dsrmath.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/options.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/platon.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/pupdate.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/settings.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/space_groups.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/spgr_format.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/statusbar.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif/tools/sumformula.py +0 -0
- {finalcif-142 → finalcif-144}/finalcif.exe +0 -0
- {finalcif-142 → finalcif-144}/install_requirements +0 -0
- {finalcif-142 → finalcif-144}/install_requirements.bat +0 -0
- {finalcif-142 → finalcif-144}/pyproject.toml +0 -0
- {finalcif-142 → finalcif-144}/requirements.txt +0 -0
- {finalcif-142 → finalcif-144}/requirements_devel.txt +0 -0
- {finalcif-142 → finalcif-144}/requirements_doku.txt +0 -0
- {finalcif-142 → finalcif-144}/run_finalcif +0 -0
- {finalcif-142 → finalcif-144}/run_finalcif.bat +0 -0
- {finalcif-142 → finalcif-144}/screenshots/finalcif_checkcif.png +0 -0
- {finalcif-142 → finalcif-144}/screenshots/finalcif_details.png +0 -0
- {finalcif-142 → finalcif-144}/screenshots/finalcif_loops.png +0 -0
- {finalcif-142 → finalcif-144}/screenshots/finalcif_loops2.png +0 -0
- {finalcif-142 → finalcif-144}/screenshots/finalcif_main.png +0 -0
- {finalcif-142 → finalcif-144}/screenshots/finalcif_report.png +0 -0
- {finalcif-142 → finalcif-144}/screenshots/finalcif_responses.png +0 -0
|
@@ -24,6 +24,7 @@ from PyQt5.QtWidgets import (QMainWindow, QShortcut, QCheckBox, QListWidgetItem,
|
|
|
24
24
|
from gemmi import cif
|
|
25
25
|
|
|
26
26
|
from finalcif import VERSION
|
|
27
|
+
from finalcif.app_path import application_path
|
|
27
28
|
# QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
|
|
28
29
|
# QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)
|
|
29
30
|
from finalcif.cif.checkcif.checkcif import MyHTMLParser, AlertHelp, CheckCif
|
|
@@ -1104,7 +1105,7 @@ class AppWindow(QMainWindow):
|
|
|
1104
1105
|
item = self.ui.docxTemplatesListWidget.item(index)
|
|
1105
1106
|
if item.checkState() == Qt.Checked:
|
|
1106
1107
|
if self.templates.report_from_default_template():
|
|
1107
|
-
return '
|
|
1108
|
+
return str(application_path / 'template/report_default.docx')
|
|
1108
1109
|
else:
|
|
1109
1110
|
return item.text()
|
|
1110
1111
|
|
|
@@ -1822,9 +1823,8 @@ class AppWindow(QMainWindow):
|
|
|
1822
1823
|
self.add_ccdc_number()
|
|
1823
1824
|
if self.cif.shx and self.cif.shx.abin and not self.cif['_platon_squeeze_void_probe_radius']:
|
|
1824
1825
|
show_general_warning(self, "A SQUEEZE refinement was detected.\n"
|
|
1825
|
-
"Please import the "
|
|
1826
|
-
"
|
|
1827
|
-
"complete the _platon_squeeze_void_content information"
|
|
1826
|
+
"Please import the corresponding .sqf file\n"
|
|
1827
|
+
"from PLATON and complete the _platon_squeeze_void_content information "
|
|
1828
1828
|
"in the 'Platon SQUEEZE voids' loop.")
|
|
1829
1829
|
vheadlist = []
|
|
1830
1830
|
for row_number in range(self.ui.cif_main_table.model().rowCount()):
|
|
@@ -356,6 +356,12 @@ class CifContainer():
|
|
|
356
356
|
print('No hkl data found in CIF!, {}'.format(e))
|
|
357
357
|
return ''
|
|
358
358
|
|
|
359
|
+
@property
|
|
360
|
+
def fab_file(self):
|
|
361
|
+
if self['_shelx_fab_file']:
|
|
362
|
+
return self['_shelx_fab_file']
|
|
363
|
+
return ''
|
|
364
|
+
|
|
359
365
|
@property
|
|
360
366
|
def hkl_as_cif(self) -> str:
|
|
361
367
|
return HKL(self.hkl_file, self.block.name, hklf_type=self.hklf_number).hkl_as_cif
|
|
@@ -823,7 +829,7 @@ class CifContainer():
|
|
|
823
829
|
publ_loop = self.block.find_loop('_geom_angle_publ_flag')
|
|
824
830
|
angle = namedtuple('angle', ('label1', 'label2', 'label3', 'angle_val', 'symm1', 'symm2'))
|
|
825
831
|
for label1, label2, label3, angle_val, symm1, symm2, publ in \
|
|
826
|
-
|
|
832
|
+
zip(label1, label2, label3, angle_val, symm1, symm2, publ_loop):
|
|
827
833
|
if (without_H and (self.ishydrogen(label1) or self.ishydrogen(label2) or
|
|
828
834
|
self.ishydrogen(label3)) or (self.yes_not_set(publ))):
|
|
829
835
|
continue
|
|
@@ -895,7 +901,7 @@ class CifContainer():
|
|
|
895
901
|
hydr = namedtuple('HydrogenBond', ('label_d', 'label_h', 'label_a', 'dist_dh', 'dist_ha', 'dist_da',
|
|
896
902
|
'angle_dha', 'symm'))
|
|
897
903
|
for label_d, label_h, label_a, dist_dh, dist_ha, dist_da, angle_dha, symm, publ in (
|
|
898
|
-
|
|
904
|
+
zip(label_d, label_h, label_a, dist_dh, dist_ha, dist_da, angle_dha, symm, publ_loop)):
|
|
899
905
|
if self.yes_not_set(publ):
|
|
900
906
|
continue
|
|
901
907
|
if self.picometer:
|
|
@@ -7,7 +7,7 @@ from typing import List, Union
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
from PyQt5 import QtWidgets
|
|
9
9
|
from PyQt5.QtCore import Qt
|
|
10
|
-
from PyQt5.QtGui import QPainter, QPen, QBrush, QColor, QMouseEvent, QPalette, QImage, QResizeEvent
|
|
10
|
+
from PyQt5.QtGui import QPainter, QPen, QBrush, QColor, QMouseEvent, QPalette, QImage, QResizeEvent, QWheelEvent
|
|
11
11
|
|
|
12
12
|
from finalcif.cif.atoms import get_radius_from_element, element2color
|
|
13
13
|
from finalcif.cif.cif_file_io import CifContainer
|
|
@@ -29,6 +29,7 @@ class MoleculeWidget(QtWidgets.QWidget):
|
|
|
29
29
|
super().__init__(parent=parent)
|
|
30
30
|
self.factor = 1.0
|
|
31
31
|
self.atoms_size = 12
|
|
32
|
+
self.fontsize = 13
|
|
32
33
|
self.bond_width = 2
|
|
33
34
|
self.labels = False
|
|
34
35
|
self.molecule_center = np.array([0, 0, 0])
|
|
@@ -56,6 +57,12 @@ class MoleculeWidget(QtWidgets.QWidget):
|
|
|
56
57
|
self.projected_points = []
|
|
57
58
|
self.zoom = 1.1
|
|
58
59
|
|
|
60
|
+
def setLabelFont(self, font_size: int):
|
|
61
|
+
if font_size < 0:
|
|
62
|
+
font_size = 1
|
|
63
|
+
self.fontsize = font_size
|
|
64
|
+
self.update()
|
|
65
|
+
|
|
59
66
|
def clear(self):
|
|
60
67
|
self.open_molecule(atoms=[])
|
|
61
68
|
|
|
@@ -84,7 +91,7 @@ class MoleculeWidget(QtWidgets.QWidget):
|
|
|
84
91
|
self.painter = QPainter(self)
|
|
85
92
|
self.painter.setRenderHint(QPainter.Antialiasing)
|
|
86
93
|
font = self.painter.font()
|
|
87
|
-
font.setPixelSize(
|
|
94
|
+
font.setPixelSize(self.fontsize)
|
|
88
95
|
self.painter.setFont(font)
|
|
89
96
|
try:
|
|
90
97
|
self.draw()
|
|
@@ -95,6 +102,12 @@ class MoleculeWidget(QtWidgets.QWidget):
|
|
|
95
102
|
def mousePressEvent(self, event: QMouseEvent) -> None:
|
|
96
103
|
self.lastPos = event.pos()
|
|
97
104
|
|
|
105
|
+
def wheelEvent(self, event: QWheelEvent):
|
|
106
|
+
if event.angleDelta().y() > 0:
|
|
107
|
+
self.setLabelFont(self.fontsize + 2)
|
|
108
|
+
elif event.angleDelta().y() < 0:
|
|
109
|
+
self.setLabelFont(self.fontsize - 2)
|
|
110
|
+
|
|
98
111
|
def save_image(self, filename: Path, image_scale=1.5):
|
|
99
112
|
image = QImage(self.size() * image_scale, QImage.Format_RGB32)
|
|
100
113
|
image.fill(Qt.white)
|
|
@@ -285,6 +298,7 @@ def display(atoms: List[Atomtuple]):
|
|
|
285
298
|
render_widget = MoleculeWidget(None)
|
|
286
299
|
t1 = time.perf_counter()
|
|
287
300
|
render_widget.open_molecule(atoms, labels=False)
|
|
301
|
+
render_widget.labels = True
|
|
288
302
|
print(f'Time to display molecule: {time.perf_counter() - t1:5.4} s')
|
|
289
303
|
# add and show
|
|
290
304
|
window.setCentralWidget(render_widget)
|
|
@@ -40,7 +40,7 @@ from finalcif.report.report_text import (math_to_word, gstr, format_radiation, _
|
|
|
40
40
|
from finalcif.report.symm import SymmetryElement
|
|
41
41
|
from finalcif.tools.misc import (isnumeric, this_or_quest, timessym, angstrom, protected_space,
|
|
42
42
|
less_or_equal, halbgeviert, minus_sign, ellipsis_mid, _angstrom_to_x, angstrom_to_pm,
|
|
43
|
-
angstrom_to_nanometers)
|
|
43
|
+
angstrom_to_nanometers, do_nothing)
|
|
44
44
|
from finalcif.tools.options import Options
|
|
45
45
|
from finalcif.tools.space_groups import SpaceGroups
|
|
46
46
|
|
|
@@ -577,10 +577,10 @@ class Formatter(ABC):
|
|
|
577
577
|
radiation_wavelength = cif['_diffrn_radiation_wavelength']
|
|
578
578
|
try:
|
|
579
579
|
resolution_angst = float(radiation_wavelength) / (2 * sin(radians(float(theta_max))))
|
|
580
|
-
if
|
|
581
|
-
d_max = f' ({resolution_angst:.2f}{protected_space}{angstrom})'
|
|
582
|
-
else:
|
|
580
|
+
if cif.picometer:
|
|
583
581
|
d_max = f' ({angstrom_to_pm(str(resolution_angst)):.2}{protected_space}pm)'
|
|
582
|
+
else:
|
|
583
|
+
d_max = f' ({resolution_angst:.2f}{protected_space}{angstrom})'
|
|
584
584
|
# 2theta range:
|
|
585
585
|
return f"{2 * float(theta_min):.2f} to {2 * float(theta_max):.2f}{d_max}"
|
|
586
586
|
except ValueError:
|
|
@@ -1041,8 +1041,8 @@ class TemplatedReport():
|
|
|
1041
1041
|
jinja_env = jinja2.Environment()
|
|
1042
1042
|
jinja_env.globals.update(strip=str.strip)
|
|
1043
1043
|
jinja_env.filters['inv_article'] = report_text.get_inf_article
|
|
1044
|
-
jinja_env.filters['to_pm'] = angstrom_to_pm
|
|
1045
|
-
jinja_env.filters['to_nm'] = angstrom_to_nanometers
|
|
1044
|
+
jinja_env.filters['to_pm'] = angstrom_to_pm if self.options.use_picometers else do_nothing
|
|
1045
|
+
jinja_env.filters['to_nm'] = angstrom_to_nanometers if self.options.use_picometers else do_nothing
|
|
1046
1046
|
jinja_env.filters['float_num'] = report_text.format_float_with_decimal_places
|
|
1047
1047
|
# foo[1,2] bar[3]:
|
|
1048
1048
|
jinja_env.filters['ref_num'] = self.count_reference
|
|
Binary file
|
|
Binary file
|
|
@@ -98,15 +98,28 @@ def grouper(inputs, n, fillvalue=None):
|
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
def angstrom_to_pm(angstrom: str) -> str:
|
|
101
|
-
|
|
101
|
+
try:
|
|
102
|
+
return _angstrom_to_x(angstrom, factor=100)
|
|
103
|
+
except ValueError:
|
|
104
|
+
return '?'
|
|
102
105
|
|
|
103
106
|
|
|
104
107
|
def angstrom_to_pm_squared(angstrom: str) -> str:
|
|
105
|
-
|
|
108
|
+
try:
|
|
109
|
+
return _angstrom_to_x(angstrom, factor=100 ** 2)
|
|
110
|
+
except ValueError:
|
|
111
|
+
return '?'
|
|
106
112
|
|
|
107
113
|
|
|
108
114
|
def angstrom_to_nanometers(angstrom: str) -> str:
|
|
109
|
-
|
|
115
|
+
try:
|
|
116
|
+
return _angstrom_to_x(angstrom, factor=0.001)
|
|
117
|
+
except ValueError:
|
|
118
|
+
return '?'
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def do_nothing(value: str) -> str:
|
|
122
|
+
return value
|
|
110
123
|
|
|
111
124
|
|
|
112
125
|
def _angstrom_to_x(value: str, factor: float = 100) -> str:
|
|
@@ -26,9 +26,12 @@ class ShredCIF():
|
|
|
26
26
|
suffix='_' + self._cif.block.name + '-finalcif.res')
|
|
27
27
|
hklfile_path = self._cif.finalcif_file_prefixed(prefix='',
|
|
28
28
|
suffix='_' + self._cif.block.name + '-finalcif.hkl')
|
|
29
|
+
fabfile_path = self._cif.finalcif_file_prefixed(prefix='',
|
|
30
|
+
suffix='_' + self._cif.block.name + '-finalcif.fab')
|
|
29
31
|
else:
|
|
30
32
|
resfile_path = self._cif.finalcif_file.with_suffix('.res')
|
|
31
33
|
hklfile_path = self._cif.finalcif_file.with_suffix('.hkl')
|
|
34
|
+
fabfile_path = self._cif.finalcif_file.with_suffix('.fab')
|
|
32
35
|
res_data = None
|
|
33
36
|
hkl_data = None
|
|
34
37
|
if not self._cif:
|
|
@@ -51,6 +54,8 @@ class ShredCIF():
|
|
|
51
54
|
hkl_data = self.format_hkl_data(hkl_data)
|
|
52
55
|
if not self._write_hkl_file(hklfile_path, hkl_data):
|
|
53
56
|
return None
|
|
57
|
+
if fab_data := self._cif.fab_file:
|
|
58
|
+
self._write_hkl_file(fabfile_path, fab_data)
|
|
54
59
|
self._show_info(resfile_path, hklfile_path, res_data, hkl_data)
|
|
55
60
|
|
|
56
61
|
@staticmethod
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|