diff --git a/HISTORY.rst b/HISTORY.rst index 9b294a5..a5776d8 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -2,6 +2,8 @@ History ======= +2023.8.30 -- Support for spacegroup symmetry + 2023.7.28 -- Implemented ranges for reading XYZ and SDF files. 2023.7.27.1 -- Removed debug printing. diff --git a/read_structure_step/formats/cif/cif.py b/read_structure_step/formats/cif/cif.py index a203e58..7066fe2 100644 --- a/read_structure_step/formats/cif/cif.py +++ b/read_structure_step/formats/cif/cif.py @@ -2,13 +2,17 @@ The cif/mmcif reader/writer """ +import bz2 +import gzip import logging from pathlib import Path +import time from ..registries import register_format_checker from ..registries import register_reader from ..registries import set_format_metadata from seamm_util.printing import FormattedText as __ +from ...utils import parse_indices logger = logging.getLogger(__name__) @@ -56,7 +60,7 @@ def load_cif( add_hydrogens=False, system_db=None, system=None, - indices="1:end", + indices="1-end", subsequent_as_configurations=False, system_name="from file", configuration_name="sequential", @@ -90,7 +94,7 @@ def load_cif( system : System = None The system to use if adding subsequent structures as configurations. - indices : str = "1:end" + indices : str = "1-end" The generalized indices (slices, SMARTS, etc.) to select structures from a file containing multiple structures. @@ -123,14 +127,48 @@ def load_cif( if isinstance(path, str): path = Path(path) - path.expanduser().resolve() + path = path.expanduser().resolve() + + # Get the information for progress output, if requested. + n_records = 0 + with ( + gzip.open(path, mode="rt") + if path.suffix == ".gz" + else bz2.open(path, mode="rt") + if path.suffix == ".bz2" + else open(path, "r") + ) as fd: + for line in fd: + if line[0:5] == "data_": + n_records += 1 + if printer is not None: + printer("") + printer(f" The CIF file contains {n_records} data blocks.") + last_percent = 0 + t0 = time.time() + last_t = t0 + + # Get the indices to pick + indices = parse_indices(indices, n_records) + n_structures = len(indices) + if n_structures == 0: + return + stop = indices[-1] configurations = [] + record_no = 0 structure_no = 0 + n_errors = 0 lines = [] in_block = False block_name = "" - with open(path, "r") as fd: + with ( + gzip.open(path, mode="rt") + if path.suffix == ".gz" + else bz2.open(path, mode="rt") + if path.suffix == ".bz2" + else open(path, "r") + ) as fd: for line in fd: if line[0:5] == "data_": logger.debug(f"Found block {line}") @@ -138,6 +176,15 @@ def load_cif( in_block = True block_name = line[5:].strip() else: + record_no += 1 + if record_no > stop: + lines = [] + break + if record_no not in indices: + lines = [] + lines.append(line) + continue + structure_no += 1 if structure_no > 1: if subsequent_as_configurations: @@ -146,91 +193,137 @@ def load_cif( system = system_db.create_system() configuration = system.create_configuration() - text = configuration.from_cif_text("\n".join(lines)) - if text != "": - printer("\n") - printer(__(text, indent=4 * " ")) - - configurations.append(configuration) - - logger.debug(f" added system {system_db.n_systems}: {block_name}") - - # Set the system name - if system_name is not None and system_name != "": - lower_name = str(system_name).lower() - if "from file" in lower_name: - system.name = block_name - elif "file name" in lower_name: - system.name = path.stem - elif "formula" in lower_name: - system.name = configuration.formula()[0] - elif "empirical formula" in lower_name: - system.name = configuration.formula()[1] - else: - system.name = str(system_name) - - # And the configuration name - if configuration_name is not None and configuration_name != "": - lower_name = str(configuration_name).lower() - if "from file" in lower_name: - configuration.name = block_name - elif "file name" in lower_name: - configuration.name = path.stem - elif "formula" in lower_name: - configuration.name = configuration.formula()[0] - elif "empirical formula" in lower_name: - configuration.name = configuration.formula()[1] - else: - configuration.name = str(configuration_name) - logger.debug(f" added system {system_db.n_systems}: {block_name}") + try: + text = configuration.from_cif_text("".join(lines)) + if text != "": + printer("\n") + printer(__(text, indent=4 * " ")) + except Exception as e: + n_errors += 1 + printer("") + printer(f" Error handling entry {record_no} in the CIF file:") + printer(" " + str(e)) + printer(" Text of the entry is") + printer(" " + 60 * "-") + for tmp in lines: + printer(" " + tmp.rstrip()) + printer(" " + 60 * "-") + printer("") + if n_structures <= 1: + raise + else: + configurations.append(configuration) + + logger.debug( + f" added system {system_db.n_systems}: {block_name}" + ) + + # Set the system name + if system_name is not None and system_name != "": + lower_name = str(system_name).lower() + if "from file" in lower_name: + system.name = block_name + elif "file name" in lower_name: + system.name = path.stem + elif "formula" in lower_name: + system.name = configuration.formula()[0] + elif "empirical formula" in lower_name: + system.name = configuration.formula()[1] + else: + system.name = str(system_name) + + # And the configuration name + if configuration_name is not None and configuration_name != "": + lower_name = str(configuration_name).lower() + if "from file" in lower_name: + configuration.name = block_name + elif "file name" in lower_name: + configuration.name = path.stem + elif "formula" in lower_name: + configuration.name = configuration.formula()[0] + elif "empirical formula" in lower_name: + configuration.name = configuration.formula()[1] + else: + configuration.name = str(configuration_name) + logger.debug( + f" added system {system_db.n_systems}: {block_name}" + ) + + if printer: + percent = int(100 * structure_no / n_structures) + if percent > last_percent: + t1 = time.time() + if t1 - last_t >= 60: + t = int(t1 - t0) + rate = structure_no / (t1 - t0) + t_left = int((n_structures - structure_no) / rate) + printer( + f"\t{structure_no:6} ({percent}%) structures " + f"read in {t} seconds. About {t_left} seconds " + "remaining." + ) + last_t = t1 + last_percent = percent block_name = line[5:].strip() lines = [] lines.append(line) if len(lines) > 0: # The last block just ends at the end of the file - structure_no += 1 - if structure_no > 1: - if subsequent_as_configurations: - configuration = system.create_configuration() - else: - system = system_db.create_system() - configuration = system.create_configuration() - - text = configuration.from_cif_text("\n".join(lines)) - logger.debug(f" added system {system_db.n_systems}: {block_name}") - if text != "": - printer("\n") - printer(__(text, indent=4 * " ")) + record_no += 1 + if record_no in indices: + structure_no += 1 + if structure_no > 1: + if subsequent_as_configurations: + configuration = system.create_configuration() + else: + system = system_db.create_system() + configuration = system.create_configuration() + + text = configuration.from_cif_text("".join(lines)) + logger.debug(f" added system {system_db.n_systems}: {block_name}") + if text != "": + printer("\n") + printer(__(text, indent=4 * " ")) configurations.append(configuration) - # Set the system name - if system_name is not None and system_name != "": - lower_name = str(system_name).lower() - if "from file" in lower_name: - system.name = block_name - elif "file name" in lower_name: - system.name = path.stem - elif "formula" in lower_name: - system.name = configuration.formula()[0] - elif "empirical formula" in lower_name: - system.name = configuration.formula()[1] - else: - system.name = str(system_name) - - # And the configuration name - if configuration_name is not None and configuration_name != "": - lower_name = str(configuration_name).lower() - if "from file" in lower_name: - configuration.name = block_name - elif "file name" in lower_name: - configuration.name = path.stem - elif "formula" in lower_name: - configuration.name = configuration.formula()[0] - elif "empirical formula" in lower_name: - configuration.name = configuration.formula()[1] - else: - configuration.name = str(configuration_name) + # Set the system name + if system_name is not None and system_name != "": + lower_name = str(system_name).lower() + if "from file" in lower_name: + system.name = block_name + elif "file name" in lower_name: + system.name = path.stem + elif "formula" in lower_name: + system.name = configuration.formula()[0] + elif "empirical formula" in lower_name: + system.name = configuration.formula()[1] + else: + system.name = str(system_name) + + # And the configuration name + if configuration_name is not None and configuration_name != "": + lower_name = str(configuration_name).lower() + if "from file" in lower_name: + configuration.name = block_name + elif "file name" in lower_name: + configuration.name = path.stem + elif "formula" in lower_name: + configuration.name = configuration.formula()[0] + elif "empirical formula" in lower_name: + configuration.name = configuration.formula()[1] + else: + configuration.name = str(configuration_name) + + if printer: + t1 = time.time() + rate = structure_no / (t1 - t0) + printer( + f" Read {structure_no - n_errors} structures in {t1 - t0:.1f} " + f"seconds = {rate:.2f} per second" + ) + if n_errors > 0: + printer(f" {n_errors} structures could not be read due to errors.") return configurations diff --git a/read_structure_step/formats/mop/obabel.py b/read_structure_step/formats/mop/obabel.py index 6871a12..4d9d181 100644 --- a/read_structure_step/formats/mop/obabel.py +++ b/read_structure_step/formats/mop/obabel.py @@ -17,6 +17,7 @@ from openbabel import openbabel from read_structure_step.formats.registries import register_reader import seamm +from seamm_util import Q_ from .find_mopac import find_mopac if "OpenBabel_version" not in globals(): @@ -239,6 +240,8 @@ def load_mop( # Finally, the MOPAC test data usually has three comment lines to start, with a # single number on the second line, which is the heat of formation calculated by # MOPAC. If this format is found the HOF is captured. + kcal2kJ = Q_(1, "kcal").m_as("kJ") + run_mopac = False keywords = [] description_lines = [] @@ -605,9 +608,10 @@ def load_mop( key, "float", description="The reference energy from MOPAC", + units="kJ/mol", noerror=True, ) - properties.put(key, energy) + properties.put(key, energy * kcal2kJ) # Handle properties encoded in the description if len(description_lines) == 2 and "=" in description_lines[1]: @@ -651,7 +655,19 @@ def load_mop( description=f"stderr for the {keyword}.", noerror=True, ) + if ( + "heat capacity" in keyword + or "enthalpy" in keyword + or "entropy" in keyword + ): + stderr = float(stderr) * kcal2kJ system_properties.put(new_keyword, stderr) + if ( + "heat capacity" in keyword + or "enthalpy" in keyword + or "entropy" in keyword + ): + value = float(value) * kcal2kJ system_properties.put(keyword, value) except Exception as e: print(f"{e}: {key}") diff --git a/read_structure_step/formats/sdf/sdf.py b/read_structure_step/formats/sdf/sdf.py index 416da91..1859598 100644 --- a/read_structure_step/formats/sdf/sdf.py +++ b/read_structure_step/formats/sdf/sdf.py @@ -16,6 +16,7 @@ from ..registries import register_reader from ..registries import register_writer from ..registries import set_format_metadata +from ...utils import parse_indices if "OpenBabel_version" not in globals(): OpenBabel_version = None @@ -61,7 +62,7 @@ def load_sdf( add_hydrogens=True, system_db=None, system=None, - indices="1:end", + indices="1-end", subsequent_as_configurations=False, system_name="Canonical SMILES", configuration_name="sequential", @@ -96,7 +97,7 @@ def load_sdf( system : System = None The system to use if adding subsequent structures as configurations. - indices : str = "1:end" + indices : str = "1-end" The generalized indices (slices, SMARTS, etc.) to select structures from a file containing multiple structures. @@ -131,10 +132,10 @@ def load_sdf( if isinstance(path, str): path = Path(path) - path.expanduser().resolve() + path = path.expanduser().resolve() # Get the information for progress output, if requested. - n_structures = 0 + n_records = 0 with ( gzip.open(path, mode="rt") if path.suffix == ".gz" @@ -144,32 +145,26 @@ def load_sdf( ) as fd: for line in fd: if line[0:4] == "$$$$": - n_structures += 1 + n_records += 1 if printer is not None: printer("") - printer(f" The SDF file contains {n_structures} structures.") + printer(f" The SDF file contains {n_records} structures.") last_percent = 0 t0 = time.time() last_t = t0 # Get the indices to pick - tmp = indices.replace("end", str(n_structures + 1)) - tmp = tmp.split(":") - start = int(tmp[0]) - if len(tmp) == 3: - step = int(tmp[2]) - else: - step = 1 - if len(tmp) == 2: - stop = int(tmp[1]) - else: - stop = start + 1 - indices = list(range(start, stop, step)) + indices = parse_indices(indices, n_records) + n_structures = len(indices) + if n_structures == 0: + return + stop = indices[-1] obConversion = openbabel.OBConversion() obConversion.SetInAndOutFormats("sdf", "smi") configurations = [] + record_no = 0 structure_no = 0 n_errors = 0 obMol = openbabel.OBMol() @@ -187,22 +182,45 @@ def load_sdf( if line[0:4] != "$$$$": continue - structure_no += 1 - if structure_no >= stop: + record_no += 1 + if record_no > stop: + text = "" break - if structure_no not in indices: + if record_no not in indices: + text = "" continue obConversion.ReadString(obMol, text) + # See if the system and configuration names are encoded in the title + title = obMol.GetTitle() + sysname = title + confname = title + have_sysname = False + if "SEAMM=" in title: + for tmp in title.split("|"): + if "SEAMM=" in tmp and "/" in tmp: + sysname, confname = tmp.split("=", 1)[1].split("/") + sysname = sysname.strip() + confname = confname.strip() + have_sysname = True + if add_hydrogens: obMol.AddHydrogens() + structure_no += 1 if structure_no > 1: if subsequent_as_configurations: configuration = system.create_configuration() else: - system = system_db.create_system() + if have_sysname and "from file" in system_name.lower(): + # Reuse the system if it exists + if system_db.system_exists(sysname): + system = system_db.get_system(sysname) + else: + system = system_db.create_system() + else: + system = system_db.create_system() configuration = system.create_configuration() try: @@ -210,7 +228,7 @@ def load_sdf( except Exception as e: n_errors += 1 printer("") - printer(f" Error handling entry {structure_no} in the SDF file:") + printer(f" Error handling entry {record_no} in the SDF file:") printer(" " + str(e)) printer(" Text of the entry is") printer(" " + 60 * "-") @@ -228,7 +246,7 @@ def load_sdf( if system_name is not None and system_name != "": lower_name = system_name.lower() if "from file" in lower_name: - system.name = obMol.GetTitle() + system.name = sysname elif "canonical smiles" in lower_name: system.name = configuration.canonical_smiles elif "smiles" in lower_name: @@ -240,13 +258,13 @@ def load_sdf( if configuration_name is not None and configuration_name != "": lower_name = configuration_name.lower() if "from file" in lower_name: - configuration.name = obMol.GetTitle() + configuration.name = confname elif "canonical smiles" in lower_name: configuration.name = configuration.canonical_smiles elif "smiles" in lower_name: configuration.name = configuration.smiles elif lower_name == "sequential": - configuration.name = str(structure_no) + configuration.name = str(record_no) else: configuration.name = configuration_name @@ -269,7 +287,7 @@ def load_sdf( t1 = time.time() rate = structure_no / (t1 - t0) printer( - f" Read {structure_no - n_errors - 1} structures in {t1 - t0:.1f} " + f" Read {structure_no - n_errors} structures in {t1 - t0:.1f} " f"seconds = {rate:.2f} per second" ) if n_errors > 0: @@ -396,7 +414,7 @@ def write_sdf( obMol = configuration.to_OBMol(properties="all") system = configuration.system - title = f"{system.name}/{configuration.name}" + title = f"SEAMM={system.name}/{configuration.name}" obMol.SetTitle(title) if remove_hydrogens == "nonpolar": diff --git a/read_structure_step/formats/xyz/xyz.py b/read_structure_step/formats/xyz/xyz.py index bd9f9df..deb78ea 100644 --- a/read_structure_step/formats/xyz/xyz.py +++ b/read_structure_step/formats/xyz/xyz.py @@ -17,6 +17,7 @@ from openbabel import openbabel from read_structure_step.formats.registries import register_reader +from ...utils import parse_indices if "OpenBabel_version" not in globals(): OpenBabel_version = None @@ -114,7 +115,7 @@ def load_xyz( add_hydrogens=True, system_db=None, system=None, - indices="1:end", + indices="1-end", subsequent_as_configurations=False, system_name="Canonical SMILES", configuration_name="sequential", @@ -145,7 +146,7 @@ def load_xyz( system : System = None The system to use if adding subsequent structures as configurations. - indices : str = "1:end" + indices : str = "1-end" The generalized indices (slices, SMARTS, etc.) to select structures from a file containing multiple structures. @@ -217,7 +218,7 @@ def load_xyz( path = path.expanduser().resolve() # Get the information for progress output, if requested. - n_structures = 0 + n_records = 0 last_line = 0 with ( gzip.open(path, mode="rt") @@ -229,35 +230,29 @@ def load_xyz( for line in fd: last_line += 1 if line.strip() == "": - n_structures += 1 + n_records += 1 # may not have blank line at end if line.strip() != "": - n_structures += 1 + n_records += 1 if printer is not None: printer("") - printer(f" The XYZ file contains {n_structures} structures.") + printer(f" The XYZ file contains {n_records} structures.") last_percent = 0 t0 = time.time() last_t = t0 # Get the indices to pick - tmp = indices.replace("end", str(n_structures + 1)) - tmp = tmp.split(":") - start = int(tmp[0]) - if len(tmp) == 3: - step = int(tmp[2]) - else: - step = 1 - if len(tmp) == 2: - stop = int(tmp[1]) - else: - stop = start + 1 - indices = list(range(start, stop, step)) + indices = parse_indices(indices, n_records) + n_structures = len(indices) + if n_structures == 0: + return + stop = indices[-1] obConversion = openbabel.OBConversion() obConversion.SetInFormat("xyz") configurations = [] + record_no = 0 structure_no = 0 n_errors = 0 obMol = openbabel.OBMol() @@ -278,10 +273,10 @@ def load_xyz( line_no += 1 lines.append(line) if total_lines == last_line or line_no > 3 and line.strip() == "": - structure_no += 1 - if structure_no >= stop: + record_no += 1 + if record_no > stop: break - if structure_no not in indices: + if record_no not in indices: continue # End of block, so examine the first lines and see which format @@ -382,6 +377,7 @@ def load_xyz( if add_hydrogens: obMol.AddHydrogens() + structure_no += 1 if structure_no > 1: if subsequent_as_configurations: configuration = system.create_configuration() diff --git a/read_structure_step/read.py b/read_structure_step/read.py index 11db8c7..299b76d 100644 --- a/read_structure_step/read.py +++ b/read_structure_step/read.py @@ -14,7 +14,7 @@ def read( add_hydrogens=False, system_db=None, system=None, - indices="1:end", + indices="1-end", subsequent_as_configurations=False, system_name=None, configuration_name=None, diff --git a/read_structure_step/read_structure_parameters.py b/read_structure_step/read_structure_parameters.py index 4660a9f..03fb5b0 100644 --- a/read_structure_step/read_structure_parameters.py +++ b/read_structure_step/read_structure_parameters.py @@ -66,10 +66,10 @@ class ReadStructureParameters(seamm.Parameters): "help_text": ("Whether to add missing hydrogen atoms."), }, "indices": { - "default": "1:end", + "default": "1-end", "kind": "string", "default_units": "", - "enumeration": tuple(), + "enumeration": ("1-end",), "format_string": "s", "description": "Structures to read:", "help_text": ("The set of structures to read"), diff --git a/read_structure_step/utils.py b/read_structure_step/utils.py index 87cc655..f61995f 100644 --- a/read_structure_step/utils.py +++ b/read_structure_step/utils.py @@ -74,3 +74,43 @@ def sanitize_file_format(file_format): file_format = "." + file_format return file_format + + +def parse_indices(text, maximum): + """Return a list of values in the given index expression. + + Handles expressions like "1-10 by 2, 20-end" which would result in + 1,3,5,7,9,20,21,22,23,24,25 if there were 25 items in the list. + """ + result = set() + for indices in text.split(","): + increment = 1 + if "to" in indices: + tmp = indices.split("to") + else: + if ":" in indices: + tmp = indices.split(":") + increment = 0 + else: + tmp = indices.split("-") + if len(tmp) == 1: + if tmp[0].strip() == "end": + result.add(maximum) + else: + result.add(int(tmp[0].strip())) + else: + start = int(tmp[0].strip()) + end = tmp[1] + if "by" in end: + end, by = end.split("by") + by = int(by.strip()) + else: + by = 1 + end = end.strip() + if end == "end": + end = maximum + increment = 1 + else: + end = int(end) + result.update(range(start, end + increment, by)) + return sorted(result) diff --git a/tests/data/ABENEB01.cif b/tests/data/ABENEB01.cif new file mode 100644 index 0000000..828b735 --- /dev/null +++ b/tests/data/ABENEB01.cif @@ -0,0 +1,748 @@ +####################################################################### +# +# This file contains crystal structure data downloaded from the +# Cambridge Structural Database (CSD) hosted by the Cambridge +# Crystallographic Data Centre (CCDC). +# +# Full information about CCDC data access policies and citation +# guidelines are available at http://www.ccdc.cam.ac.uk/access/V1 +# +# Audit and citation data items may have been added by the CCDC. +# Please retain this information to preserve the provenance of +# this file and to allow appropriate attribution of the data. +# +####################################################################### + +data_I +_audit_block_doi 10.5517/ccdc.csd.cc1q96qy +_database_code_depnum_ccdc_archive 'CCDC 1587780' +loop_ +_citation_id +_citation_doi +_citation_year +1 10.1107/S2053229617017077 2018 +#Added by publCIF + +_audit_update_record +; +2017-11-28 deposited with the CCDC. 2023-08-02 downloaded from the CCDC. +; +_iucr_compatibility_tag ACTA95 + +#============================================================================== + + +# start Validation Reply Form +_vrf_DIFF019_I +; +PROBLEM: _diffrn_standards_number is missing +RESPONSE: area detector data +; +_vrf_DIFF020_I +; +PROBLEM: _diffrn_standards_interval_count and +RESPONSE: area detector data +; +_vrf_DIFF022_I +; +PROBLEM: _diffrn_standards_decay_% is missing +RESPONSE: area detector data +; +#Added by publCIF + +loop_ +_geom_extra_tableC_col_1 +_geom_extra_tableC_col_2 +_geom_extra_tableC_col_3 +_geom_extra_tableC_col_4 +_geom_extra_tableC_col_5 +'T (K)' O11...O21^i^ O12...O22^iii^ O31...F11^ii^ O32...F12^iv^ +210(2) 2.645(5) 2.661(5) 3.054(5) 3.322(6) +190(2) 2.648(5) 2.660(5) 3.050(5) 3.315(5) +170(2) 2.652(4) 2.657(5) 3.047(4) 3.307(5) +150(2) 2.643(4) 2.659(4) 3.044(4) 3.297(4) +130(2) 2.645(4) 2.658(4) 3.037(4) 3.294(4) +110(2) 2.647(4) 2.659(4) 3.030(3) 3.287(4) + +_geom_extra_table_head_C +; +Temperature-dependent intermolecular hydrogen-bond distances +; + +_geom_table_footnote_C +; +Symmetry codes: (i) -x+1, -y+1, -z; +(ii) x, -y+3/2, z-1/2; +(iii) -x, -y, -z; +(iv) x, -y+1/2, z-1/2. +; + +loop_ +_geom_extra_tableB_col_1 +_geom_extra_tableB_col_2 +_geom_extra_tableB_col_3 +_geom_extra_tableB_col_4 +_geom_extra_tableB_col_5 +_geom_extra_tableB_col_6 +_geom_extra_tableB_col_7 +'T (K)' 'a (\%A)' 'b (\%A)' 'c (\%A)' '\b (\%)' +'V (\%A^3^)' 'Twin obliquity (\%)' +210(2) 23.241(4) 3.7219(10) 15.684(2) 109.742(9) 1276.9(5) 0.022 +190(2) 23.229(5) 3.7120(9) 15.6765(18) 109.750(10) 1272.2(4) 0.029 +170(2) 23.215(4) 3.7031(6) 15.6654(15) 109.765(8) 1267.4(3) 0.047 +150(2) 23.201(3) 3.6943(5) 15.6528(11) 109.759(7) 1262.6(2) 0.045 +130(2) 23.189(3) 3.6864(5) 15.6401(13) 109.746(8) 1258.3(2) 0.038 +110(2) 23.180(3) 3.6795(4) 15.6317(17) 109.735(8) 1254.9(3) 0.030 + +_geom_extra_table_head_B +; +Temperature-dependent unit-cell parameters of polymorph II +; + +_geom_table_footnote_B +; +The crystal was cooled from 210(2) to 110(2) K in steps of 20 K. Unit-cell +parameters were obtained from 360\% \f scans by post-refinement of integrated +data with EVAL15 (4148--5093 reflections; Schreurs et al., +2010). The +detector position was kept fixed during the measurement. +; + +_geom_table_footnote_A +; +Reflection indices are based on the orthorhombic unit cell setting with +a = 15.63, b = 43.63 and c = 3.68 \%A. Reflection +intensities were derived from calculated structure factors with the twin law +applied and a perfect twin fraction of 50%. +; + +loop_ +_geom_extra_tableA_col_1 +_geom_extra_tableA_col_2 +_geom_extra_tableA_col_3 +_geom_extra_tableA_col_4 +hkl 'h+k = 2n' hk0 +'h+k = 2n' +0kl 'k = 2n' h00 'h = 2n' +h0l 'h = 2n' 0k0 'k = 2n' +hk0 'h = 2n' 00l 'l = 2n' +hk0 'k = 2n' . . + + + + +_geom_extra_table_head_A +; +Reflection conditions in the twinned data set +; +_publcif_datablock.id {bb6a9713-0b45-4de2-98e9-1f53c436fa95} + +# publcif _publ_body_element loop end + +_audit_creation_method SHELXL-2017/1 +_shelx_SHELXL_version_number 2017/1 +_chemical_name_systematic +; +5-Fluorosalicylic acid +; +_chemical_name_common ? +_chemical_melting_point ? +_chemical_formula_iupac 'C7 H5 F O3' +_chemical_formula_moiety 'C7 H5 F O3' +_chemical_formula_sum 'C7 H5 F O3' +_chemical_formula_weight 156.11 + +loop_ +_atom_type_symbol +_atom_type_description +_atom_type_scat_dispersion_real +_atom_type_scat_dispersion_imag +_atom_type_scat_source +C C 0.0033 0.0016 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4' +H H 0.0000 0.0000 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4' +F F 0.0171 0.0103 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4' +O O 0.0106 0.0060 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4' + +_space_group_crystal_system monoclinic +_space_group_IT_number 14 +_space_group_name_H-M_alt 'P 21/c' +_space_group_name_Hall '-P 2ybc' + +_shelx_space_group_comment +; +The symmetry employed for this shelxl refinement is uniquely defined +by the following loop, which should always be used as a source of +symmetry information in preference to the above space-group names. +They are only intended as comments. +; + +loop_ +_space_group_symop_operation_xyz +'x, y, z' +'-x, y+1/2, -z+1/2' +'-x, -y, -z' +'x, -y-1/2, z-1/2' + +_cell_length_a 23.1729(14) +_cell_length_b 3.6802(3) +_cell_length_c 15.6312(8) +_cell_angle_alpha 90 +_cell_angle_beta 109.728(6) +_cell_angle_gamma 90 +_cell_volume 1254.79(15) +_cell_formula_units_Z 8 +_cell_measurement_temperature 110(2) +_cell_measurement_reflns_used 15239 +_cell_measurement_theta_min 1.83 +_cell_measurement_theta_max 27.48 + +loop_ +_diffrn_orient_matrix_type +_diffrn_orient_matrix_UB_11 +_diffrn_orient_matrix_UB_12 +_diffrn_orient_matrix_UB_13 +_diffrn_orient_matrix_UB_21 +_diffrn_orient_matrix_UB_22 +_diffrn_orient_matrix_UB_23 +_diffrn_orient_matrix_UB_31 +_diffrn_orient_matrix_UB_32 +_diffrn_orient_matrix_UB_33 +'Nonius RMAT' -0.0330460 0.1829725 -0.0060045 -0.0311950 -0.1744366 -0.0382383 +-0.0060666 -0.0997194 0.0558718 + +_exptl_crystal_description plate +_exptl_crystal_colour colourless +_exptl_crystal_density_meas ? +_exptl_crystal_density_method ? +_exptl_crystal_density_diffrn 1.653 +_exptl_crystal_F_000 640 +_exptl_transmission_factor_min ? +_exptl_transmission_factor_max ? +_exptl_crystal_size_max 0.27 +_exptl_crystal_size_mid 0.21 +_exptl_crystal_size_min 0.04 +_exptl_absorpt_coefficient_mu 0.148 +_shelx_estimated_absorpt_T_min ? +_shelx_estimated_absorpt_T_max ? +_exptl_absorpt_correction_type numerical +_exptl_absorpt_correction_T_min 0.6939 +_exptl_absorpt_correction_T_max 1.0000 +_exptl_absorpt_process_details +; +(SADABS; Krause et al., 2015) +; +_exptl_absorpt_special_details ? +_diffrn_ambient_temperature 110(2) +_diffrn_radiation_wavelength 0.71073 +_diffrn_radiation_type MoK\a +_diffrn_source 'sealed tube' +_diffrn_measurement_device_type 'Bruker Kappa APEXII' +_diffrn_measurement_method '\f and \w scans' +_diffrn_detector_area_resol_mean ? +_diffrn_reflns_number 30602 +_diffrn_reflns_av_unetI/netI 0.0347 +_diffrn_reflns_av_R_equivalents 0.0642 +_diffrn_reflns_limit_h_min -30 +_diffrn_reflns_limit_h_max 30 +_diffrn_reflns_limit_k_min -4 +_diffrn_reflns_limit_k_max 4 +_diffrn_reflns_limit_l_min -20 +_diffrn_reflns_limit_l_max 19 +_diffrn_reflns_theta_min 1.867 +_diffrn_reflns_theta_max 27.491 +_diffrn_reflns_theta_full 25.242 +_diffrn_measured_fraction_theta_max 1.000 +_diffrn_measured_fraction_theta_full 1.000 +_diffrn_reflns_Laue_measured_fraction_max 1.000 +_diffrn_reflns_Laue_measured_fraction_full 1.000 +_diffrn_reflns_point_group_measured_fraction_max 1.000 +_diffrn_reflns_point_group_measured_fraction_full 1.000 +_reflns_number_total 2884 +_reflns_number_gt 2386 +_reflns_threshold_expression 'I > 2\s(I)' +_reflns_Friedel_coverage 0.000 +_reflns_Friedel_fraction_max . +_reflns_Friedel_fraction_full . + +_reflns_special_details +; + Reflections were merged by SHELXL according to the crystal + class for the calculation of statistics and refinement. + + _reflns_Friedel_fraction is defined as the number of unique + Friedel pairs measured divided by the number that would be + possible theoretically, ignoring centric projections and + systematic absences. +; + +_computing_data_collection +; +APEX3 (Bruker, 2016) +; + +_computing_cell_refinement +; +PEAKREF (Schreurs, 2016) +; + +_computing_data_reduction +; +EVAL15 (Schreurs et al., 2010) and SADABS (Krause et al., +2015) +; + +_computing_structure_solution +; +SHELXT (Sheldrick, 2015a) +; + +_computing_structure_refinement +; +SHELXL2017 (Sheldrick, 2015b) +; + +_computing_molecular_graphics +; +PLATON (Spek, 2009) +; + +_computing_publication_material +; +publCIF (Westrip, 2010) +; + +_refine_special_details +; + efined as a 2-component twin +; +_refine_ls_structure_factor_coef Fsqd +_refine_ls_matrix_type full +_refine_ls_weighting_scheme calc +_refine_ls_weighting_details +'w=1/[\s^2^(Fo^2^)+(0.0731P)^2^+0.4868P] where P=(Fo^2^+2Fc^2^)/3' +_atom_sites_solution_primary dual +_atom_sites_solution_secondary difmap +_atom_sites_solution_hydrogens difmap +_refine_ls_hydrogen_treatment constr +_refine_ls_extinction_method none +_refine_ls_extinction_coef . +_refine_ls_number_reflns 2884 +_refine_ls_number_parameters 204 +_refine_ls_number_restraints 0 +_refine_ls_R_factor_all 0.0631 +_refine_ls_R_factor_gt 0.0473 +_refine_ls_wR_factor_ref 0.1226 +_refine_ls_wR_factor_gt 0.1133 +_refine_ls_goodness_of_fit_ref 1.053 +_refine_ls_restrained_S_all 1.053 +_refine_ls_shift/su_max 0.000 +_refine_ls_shift/su_mean 0.000 + +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_U_iso_or_equiv +_atom_site_adp_type +_atom_site_occupancy +_atom_site_site_symmetry_order +_atom_site_calc_flag +_atom_site_refinement_flags_posn +_atom_site_refinement_flags_adp +_atom_site_refinement_flags_occupancy +_atom_site_disorder_assembly +_atom_site_disorder_group +F11 F 0.37637(8) 0.4284(5) 0.32426(10) 0.0235(4) Uani 1 1 d . . . . . +O11 O 0.49467(9) 0.4087(5) 0.11432(12) 0.0198(5) Uani 1 1 d . . . . . +H11O H 0.518303 0.390822 0.083928 0.030 Uiso 1 1 calc R U . . . +O21 O 0.43470(9) 0.6756(6) -0.01370(14) 0.0189(5) Uani 1 1 d . . . . . +O31 O 0.32536(9) 0.9067(6) -0.02534(13) 0.0189(4) Uani 1 1 d . . . . . +H31O H 0.355419 0.882858 -0.043422 0.028 Uiso 1 1 calc R U . . . +C11 C 0.39756(12) 0.6221(7) 0.10943(18) 0.0137(5) Uani 1 1 d . . . . . +C21 C 0.34068(12) 0.7843(7) 0.06108(19) 0.0139(6) Uani 1 1 d . . . . . +C31 C 0.29715(12) 0.8263(7) 0.1037(2) 0.0170(6) Uani 1 1 d . . . . . +H31 H 0.258631 0.933751 0.071594 0.020 Uiso 1 1 calc R U . . . +C41 C 0.30959(12) 0.7131(8) 0.19201(19) 0.0160(6) Uani 1 1 d . . . . . +H41 H 0.280138 0.745701 0.221390 0.019 Uiso 1 1 calc R U . . . +C51 C 0.36549(12) 0.5513(7) 0.23758(18) 0.0166(6) Uani 1 1 d . . . . . +C61 C 0.40960(12) 0.5044(7) 0.19938(17) 0.0145(5) Uani 1 1 d . . . . . +H61 H 0.447691 0.394723 0.232620 0.017 Uiso 1 1 calc R U . . . +C71 C 0.44369(12) 0.5704(7) 0.06512(18) 0.0138(5) Uani 1 1 d . . . . . +F12 F 0.12270(8) -0.1498(5) 0.44878(11) 0.0271(5) Uani 1 1 d . . . . . +O12 O 0.00509(9) -0.1177(6) 0.11867(12) 0.0210(5) Uani 1 1 d . . . . . +H12O H -0.020011 -0.100787 0.065548 0.032 Uiso 1 1 calc R U . . . +O22 O 0.06700(9) 0.1506(6) 0.05439(14) 0.0202(5) Uani 1 1 d . . . . . +O32 O 0.17965(9) 0.2931(6) 0.15292(14) 0.0213(5) Uani 1 1 d . . . . . +H32O H 0.148360 0.312280 0.106257 0.032 Uiso 1 1 calc R U . . . +C12 C 0.10439(12) 0.0503(7) 0.21348(18) 0.0149(5) Uani 1 1 d . . . . . +C22 C 0.16289(13) 0.1804(7) 0.2237(2) 0.0157(6) Uani 1 1 d . . . . . +C32 C 0.20716(12) 0.1943(8) 0.3101(2) 0.0173(6) Uani 1 1 d . . . . . +H32 H 0.247111 0.281184 0.317137 0.021 Uiso 1 1 calc R U . . . +C42 C 0.19354(14) 0.0831(8) 0.3856(2) 0.0207(6) Uani 1 1 d . . . . . +H42 H 0.223687 0.092787 0.444439 0.025 Uiso 1 1 calc R U . . . +C52 C 0.13573(13) -0.0412(7) 0.37363(18) 0.0172(6) Uani 1 1 d . . . . . +C62 C 0.09072(12) -0.0621(7) 0.29029(19) 0.0159(5) Uani 1 1 d . . . . . +H62 H 0.051093 -0.150876 0.284567 0.019 Uiso 1 1 calc R U . . . +C72 C 0.05744(12) 0.0321(7) 0.12241(18) 0.0150(6) Uani 1 1 d . . . . . + +loop_ +_atom_site_aniso_label +_atom_site_aniso_U_11 +_atom_site_aniso_U_22 +_atom_site_aniso_U_33 +_atom_site_aniso_U_23 +_atom_site_aniso_U_13 +_atom_site_aniso_U_12 +F11 0.0365(10) 0.0293(9) 0.0086(9) 0.0004(7) 0.0126(7) -0.0006(7) +O11 0.0203(10) 0.0295(11) 0.0129(11) 0.0054(8) 0.0100(8) 0.0071(8) +O21 0.0215(11) 0.0258(11) 0.0119(11) 0.0068(8) 0.0089(8) 0.0058(8) +O31 0.0213(10) 0.0236(10) 0.0141(10) 0.0052(8) 0.0088(8) 0.0051(8) +C11 0.0193(13) 0.0119(12) 0.0104(13) -0.0022(9) 0.0059(10) -0.0026(10) +C21 0.0204(13) 0.0105(12) 0.0117(14) -0.0034(10) 0.0068(11) -0.0009(10) +C31 0.0208(14) 0.0125(13) 0.0170(15) -0.0004(10) 0.0055(12) 0.0023(10) +C41 0.0185(12) 0.0168(13) 0.0175(14) -0.0049(10) 0.0124(11) -0.0044(10) +C51 0.0264(14) 0.0158(12) 0.0084(12) -0.0006(10) 0.0068(11) -0.0058(11) +C61 0.0200(13) 0.0131(12) 0.0090(12) -0.0022(10) 0.0030(10) 0.0000(10) +C71 0.0177(13) 0.0126(12) 0.0116(13) -0.0031(10) 0.0058(10) -0.0008(10) +F12 0.0381(11) 0.0341(11) 0.0119(9) 0.0025(7) 0.0122(8) -0.0026(8) +O12 0.0216(11) 0.0300(12) 0.0122(11) 0.0000(8) 0.0066(8) -0.0046(8) +O22 0.0263(11) 0.0238(11) 0.0129(11) 0.0011(8) 0.0098(9) -0.0046(8) +O32 0.0216(10) 0.0299(12) 0.0149(11) 0.0011(8) 0.0095(9) -0.0050(9) +C12 0.0227(14) 0.0096(12) 0.0138(13) -0.0012(9) 0.0080(11) 0.0017(10) +C22 0.0202(14) 0.0125(13) 0.0175(15) -0.0015(10) 0.0103(12) -0.0002(10) +C32 0.0179(14) 0.0142(14) 0.0194(16) -0.0020(10) 0.0056(12) -0.0029(10) +C42 0.0308(16) 0.0146(14) 0.0155(15) -0.0012(10) 0.0061(12) 0.0017(11) +C52 0.0290(14) 0.0116(13) 0.0140(13) 0.0014(10) 0.0112(12) 0.0026(11) +C62 0.0218(14) 0.0114(12) 0.0167(13) -0.0016(10) 0.0095(12) -0.0003(10) +C72 0.0200(13) 0.0122(13) 0.0159(14) -0.0011(10) 0.0100(11) -0.0006(10) + +_geom_special_details +; + All esds (except the esd in the dihedral angle between two l.s. planes) + are estimated using the full covariance matrix. The cell esds are taken + into account individually in the estimation of esds in distances, angles + and torsion angles; correlations between esds in cell parameters are only + used when they are defined by crystal symmetry. An approximate (isotropic) + treatment of cell esds is used for estimating esds involving l.s. planes. +; + +loop_ +_geom_bond_atom_site_label_1 +_geom_bond_atom_site_label_2 +_geom_bond_distance +_geom_bond_site_symmetry_2 +_geom_bond_publ_flag +F11 C51 1.369(3) . y +O11 C71 1.314(3) . y +O11 H11O 0.8400 . ? +O21 C71 1.240(3) . y +O31 C21 1.353(3) . y +O31 H31O 0.8400 . ? +C11 C61 1.406(4) . ? +C11 C21 1.411(4) . ? +C11 C71 1.469(4) . ? +C21 C31 1.392(4) . ? +C31 C41 1.376(4) . ? +C31 H31 0.9500 . ? +C41 C51 1.385(4) . ? +C41 H41 0.9500 . ? +C51 C61 1.358(4) . ? +C61 H61 0.9500 . ? +F12 C52 1.367(3) . y +O12 C72 1.316(3) . y +O12 H12O 0.8400 . ? +O22 C72 1.236(3) . y +O32 C22 1.356(3) . y +O32 H32O 0.8400 . ? +C12 C22 1.395(4) . ? +C12 C62 1.404(4) . ? +C12 C72 1.473(4) . ? +C22 C32 1.394(4) . ? +C32 C42 1.382(4) . ? +C32 H32 0.9500 . ? +C42 C52 1.368(4) . ? +C42 H42 0.9500 . ? +C52 C62 1.369(4) . ? +C62 H62 0.9500 . ? + +loop_ +_geom_angle_atom_site_label_1 +_geom_angle_atom_site_label_2 +_geom_angle_atom_site_label_3 +_geom_angle +_geom_angle_site_symmetry_1 +_geom_angle_site_symmetry_3 +_geom_angle_publ_flag +C71 O11 H11O 109.5 . . ? +C21 O31 H31O 109.5 . . ? +C61 C11 C21 120.0(2) . . ? +C61 C11 C71 120.1(2) . . ? +C21 C11 C71 119.9(2) . . ? +O31 C21 C31 116.9(2) . . ? +O31 C21 C11 123.9(2) . . ? +C31 C21 C11 119.2(3) . . ? +C41 C31 C21 120.4(3) . . ? +C41 C31 H31 119.8 . . ? +C21 C31 H31 119.8 . . ? +C31 C41 C51 119.3(2) . . ? +C31 C41 H41 120.4 . . ? +C51 C41 H41 120.4 . . ? +C61 C51 F11 118.6(2) . . ? +C61 C51 C41 122.7(2) . . ? +F11 C51 C41 118.6(2) . . ? +C51 C61 C11 118.4(2) . . ? +C51 C61 H61 120.8 . . ? +C11 C61 H61 120.8 . . ? +O21 C71 O11 122.6(2) . . ? +O21 C71 C11 121.5(2) . . ? +O11 C71 C11 115.9(2) . . ? +C72 O12 H12O 109.5 . . ? +C22 O32 H32O 109.5 . . ? +C22 C12 C62 119.6(2) . . ? +C22 C12 C72 119.9(2) . . ? +C62 C12 C72 120.5(2) . . ? +O32 C22 C32 117.3(3) . . ? +O32 C22 C12 123.1(3) . . ? +C32 C22 C12 119.5(3) . . ? +C42 C32 C22 120.7(3) . . ? +C42 C32 H32 119.7 . . ? +C22 C32 H32 119.7 . . ? +C52 C42 C32 118.6(3) . . ? +C52 C42 H42 120.7 . . ? +C32 C42 H42 120.7 . . ? +F12 C52 C42 118.1(3) . . ? +F12 C52 C62 118.9(2) . . ? +C42 C52 C62 123.0(3) . . ? +C52 C62 C12 118.6(2) . . ? +C52 C62 H62 120.7 . . ? +C12 C62 H62 120.7 . . ? +O22 C72 O12 122.7(2) . . ? +O22 C72 C12 121.8(2) . . ? +O12 C72 C12 115.5(2) . . ? + +loop_ +_geom_torsion_atom_site_label_1 +_geom_torsion_atom_site_label_2 +_geom_torsion_atom_site_label_3 +_geom_torsion_atom_site_label_4 +_geom_torsion +_geom_torsion_site_symmetry_1 +_geom_torsion_site_symmetry_2 +_geom_torsion_site_symmetry_3 +_geom_torsion_site_symmetry_4 +_geom_torsion_publ_flag +C61 C11 C21 O31 179.7(2) . . . . ? +C71 C11 C21 O31 -1.5(4) . . . . ? +C61 C11 C21 C31 0.2(4) . . . . ? +C71 C11 C21 C31 179.1(2) . . . . ? +O31 C21 C31 C41 -179.1(2) . . . . ? +C11 C21 C31 C41 0.4(4) . . . . ? +C21 C31 C41 C51 -1.1(4) . . . . ? +C31 C41 C51 C61 1.3(4) . . . . ? +C31 C41 C51 F11 -177.7(2) . . . . ? +F11 C51 C61 C11 178.3(2) . . . . ? +C41 C51 C61 C11 -0.7(4) . . . . ? +C21 C11 C61 C51 -0.1(4) . . . . ? +C71 C11 C61 C51 -178.9(2) . . . . ? +C61 C11 C71 O21 -179.1(3) . . . . y +C21 C11 C71 O21 2.1(4) . . . . y +C61 C11 C71 O11 0.6(4) . . . . y +C21 C11 C71 O11 -178.3(2) . . . . y +C62 C12 C22 O32 179.8(2) . . . . ? +C72 C12 C22 O32 -0.2(4) . . . . ? +C62 C12 C22 C32 0.5(4) . . . . ? +C72 C12 C22 C32 -179.6(3) . . . . ? +O32 C22 C32 C42 -179.8(2) . . . . ? +C12 C22 C32 C42 -0.4(4) . . . . ? +C22 C32 C42 C52 0.1(4) . . . . ? +C32 C42 C52 F12 -179.9(2) . . . . ? +C32 C42 C52 C62 0.3(4) . . . . ? +F12 C52 C62 C12 179.9(2) . . . . ? +C42 C52 C62 C12 -0.2(4) . . . . ? +C22 C12 C62 C52 -0.2(4) . . . . ? +C72 C12 C62 C52 179.9(2) . . . . ? +C22 C12 C72 O22 -4.6(4) . . . . y +C62 C12 C72 O22 175.3(2) . . . . y +C22 C12 C72 O12 175.4(2) . . . . y +C62 C12 C72 O12 -4.7(4) . . . . y + +loop_ +_geom_hbond_atom_site_label_D +_geom_hbond_atom_site_label_H +_geom_hbond_atom_site_label_A +_geom_hbond_distance_DH +_geom_hbond_distance_HA +_geom_hbond_distance_DA +_geom_hbond_angle_DHA +_geom_hbond_site_symmetry_A +_geom_hbond_publ_flag +O11 H11O O21 0.84 1.81 2.643(3) 176 3_665 yes +O31 H31O O21 0.84 1.90 2.620(3) 144 . yes +O31 H31O F11 0.84 2.38 3.028(3) 134 4_575 yes +O12 H12O O22 0.84 1.83 2.659(3) 168 3 yes +O32 H32O O22 0.84 1.88 2.597(3) 143 . yes +O32 H32O F12 0.84 2.64 3.287(3) 135 4_565 yes + +_refine_diff_density_max 0.573 +_refine_diff_density_min -0.269 +_refine_diff_density_rms 0.078 + +_shelx_res_file +; +TITL m0189c + m0189c.res + created by SHELXL-2017/1 at 09:45:17 on 14-Aug-2017 +CELL 0.71073 23.17287 3.68017 15.63123 90.0 109.728 90.0 +ZERR 8 0.00142 0.00029 0.00078 0.0 0.006 0.0 +LATT 1 +SYMM -x, y+0.5, 0.5-z +SFAC C H F O +UNIT 56 40 8 24 +TEMP -163 +L.S. 15 +FMAP 2 +PLAN -20 +ACTA +BOND $H +CONF +EQIV $1 1-x, 1-y, -z +EQIV $2 x, 1.5-y, z-0.5 +EQIV $3 -x, -y, -z +EQIV $4 x, 0.5-y, z-0.5 +HTAB O11 O21_$1 +HTAB O31 O21 +HTAB O31 F11_$2 +HTAB O12 O22_$3 +HTAB O32 O22 +HTAB O32 F12_$4 +TWIN 1 0 1 0 -1 0 0 0 -1 +WGHT 0.073100 0.486800 +BASF 0.49483 +FVAR 0.73029 +F11 3 0.376370 0.428411 0.324257 11.00000 0.03647 0.02929 = + 0.00860 0.00042 0.01259 -0.00064 +O11 4 0.494666 0.408655 0.114316 11.00000 0.02026 0.02948 = + 0.01294 0.00540 0.01001 0.00710 +AFIX 147 +H11O 2 0.518303 0.390822 0.083928 11.00000 -1.50000 +AFIX 0 +O21 4 0.434698 0.675555 -0.013699 11.00000 0.02154 0.02576 = + 0.01188 0.00683 0.00892 0.00583 +O31 4 0.325363 0.906719 -0.025341 11.00000 0.02131 0.02360 = + 0.01409 0.00521 0.00881 0.00514 +AFIX 147 +H31O 2 0.355419 0.882858 -0.043422 11.00000 -1.50000 +AFIX 0 +C11 1 0.397563 0.622143 0.109434 11.00000 0.01933 0.01192 = + 0.01042 -0.00221 0.00587 -0.00257 +C21 1 0.340678 0.784283 0.061083 11.00000 0.02038 0.01054 = + 0.01171 -0.00344 0.00681 -0.00094 +C31 1 0.297152 0.826303 0.103689 11.00000 0.02084 0.01254 = + 0.01704 -0.00039 0.00551 0.00229 +AFIX 43 +H31 2 0.258631 0.933751 0.071594 11.00000 -1.20000 +AFIX 0 +C41 1 0.309586 0.713147 0.192009 11.00000 0.01853 0.01684 = + 0.01747 -0.00493 0.01239 -0.00440 +AFIX 43 +H41 2 0.280138 0.745701 0.221390 11.00000 -1.20000 +AFIX 0 +C51 1 0.365493 0.551307 0.237582 11.00000 0.02636 0.01581 = + 0.00838 -0.00059 0.00677 -0.00582 +C61 1 0.409600 0.504436 0.199379 11.00000 0.02002 0.01311 = + 0.00899 -0.00215 0.00305 -0.00002 +AFIX 43 +H61 2 0.447691 0.394723 0.232620 11.00000 -1.20000 +AFIX 0 +C71 1 0.443688 0.570400 0.065120 11.00000 0.01775 0.01258 = + 0.01163 -0.00310 0.00578 -0.00080 +F12 3 0.122701 -0.149812 0.448776 11.00000 0.03806 0.03405 = + 0.01195 0.00252 0.01215 -0.00259 +O12 4 0.005094 -0.117739 0.118665 11.00000 0.02156 0.03004 = + 0.01216 -0.00005 0.00659 -0.00463 +AFIX 147 +H12O 2 -0.020011 -0.100787 0.065548 11.00000 -1.50000 +AFIX 0 +O22 4 0.067000 0.150620 0.054394 11.00000 0.02627 0.02379 = + 0.01289 0.00113 0.00975 -0.00458 +O32 4 0.179649 0.293118 0.152916 11.00000 0.02155 0.02994 = + 0.01486 0.00110 0.00946 -0.00501 +AFIX 147 +H32O 2 0.148360 0.312280 0.106257 11.00000 -1.50000 +AFIX 0 +C12 1 0.104389 0.050320 0.213483 11.00000 0.02273 0.00959 = + 0.01380 -0.00121 0.00804 0.00172 +C22 1 0.162890 0.180370 0.223726 11.00000 0.02020 0.01250 = + 0.01748 -0.00154 0.01029 -0.00015 +C32 1 0.207159 0.194323 0.310075 11.00000 0.01793 0.01418 = + 0.01937 -0.00199 0.00559 -0.00291 +AFIX 43 +H32 2 0.247111 0.281184 0.317137 11.00000 -1.20000 +AFIX 0 +C42 1 0.193539 0.083090 0.385551 11.00000 0.03079 0.01458 = + 0.01553 -0.00118 0.00606 0.00167 +AFIX 43 +H42 2 0.223687 0.092787 0.444439 11.00000 -1.20000 +AFIX 0 +C52 1 0.135727 -0.041226 0.373627 11.00000 0.02898 0.01158 = + 0.01403 0.00144 0.01120 0.00255 +C62 1 0.090723 -0.062148 0.290295 11.00000 0.02175 0.01138 = + 0.01672 -0.00155 0.00947 -0.00027 +AFIX 43 +H62 2 0.051093 -0.150876 0.284567 11.00000 -1.20000 +AFIX 0 +C72 1 0.057438 0.032139 0.122412 11.00000 0.01999 0.01216 = + 0.01587 -0.00113 0.01005 -0.00064 +HKLF 4 + + + + +REM m0189c +REM R1 = 0.0473 for 2386 Fo > 4sig(Fo) and 0.0631 for all 2884 data +REM 204 parameters refined using 0 restraints + +END + +WGHT 0.0728 0.4978 + +REM Highest difference peak 0.573, deepest hole -0.269, 1-sigma level 0.078 +Q1 1 0.3781 0.0962 0.3279 11.00000 0.05 0.57 +Q2 1 0.0026 -0.4368 0.1191 11.00000 0.05 0.46 +Q3 1 0.4933 0.1114 0.1094 11.00000 0.05 0.43 +Q4 1 0.1204 -0.4077 0.4485 11.00000 0.05 0.41 +Q5 1 0.4296 0.9233 -0.0194 11.00000 0.05 0.40 +Q6 1 0.0696 0.3821 0.0470 11.00000 0.05 0.40 +Q7 1 0.3670 0.7177 0.0830 11.00000 0.05 0.36 +Q8 1 0.1053 0.4049 0.2044 11.00000 0.05 0.35 +Q9 1 0.0831 0.0525 0.1682 11.00000 0.05 0.35 +Q10 1 0.1834 0.1852 0.2629 11.00000 0.05 0.34 +Q11 1 0.0887 -0.4787 0.2889 11.00000 0.05 0.32 +Q12 1 0.4100 0.0482 0.2020 11.00000 0.05 0.31 +Q13 1 0.4427 0.9745 0.0670 11.00000 0.05 0.30 +Q14 1 0.3672 0.9642 0.2324 11.00000 0.05 0.30 +Q15 1 0.3156 0.6517 -0.0352 11.00000 0.05 0.30 +Q16 1 0.3993 0.8568 0.1178 11.00000 0.05 0.29 +Q17 1 0.1117 -0.0197 0.3357 11.00000 0.05 0.28 +Q18 1 0.1405 0.4456 0.3680 11.00000 0.05 0.27 +Q19 1 -0.0401 -0.2040 -0.0219 11.00000 0.05 0.27 +Q20 1 -0.0504 -0.1249 -0.0165 11.00000 0.05 0.27 +; +_shelx_res_checksum 70272 + +loop_ +_publcif_info_exptl_table_extra_item +sin_theta_over_lambda_max + +loop_ +_publcif_info_exptl_table_header_item +? + + + +_publcif_funding_html +;The X-ray diffractometer has been finanzed by the Netherlands Organization for +Scientific Research (NWO). +; diff --git a/tests/data/benzene.cif b/tests/data/benzene.cif new file mode 100644 index 0000000..e459b3f --- /dev/null +++ b/tests/data/benzene.cif @@ -0,0 +1,230 @@ +#------------------------------------------------------------------------------ +#$Date: 2019-11-28 16:15:34 +0200 (Thu, 28 Nov 2019) $ +#$Revision: 244091 $ +#$URL: file:///home/coder/svn-repositories/cod/cif/7/23/82/7238223.cif $ +#------------------------------------------------------------------------------ +# +# This file is available in the Crystallography Open Database (COD), +# http://www.crystallography.net/ +# +# All data on this site have been placed in the public domain by the +# contributors. +# +data_7238223 +loop_ +_publ_author_name +'Nayak, Susanta K.' +'Sathishkumar, Ranganathan' +'Row, T. N. Guru' +_publ_section_title +; + Directing role of functional groups in selective generation of + C--H⋯\p interactions: In situ cryo-crystallographic studies on + benzyl derivatives +; +_journal_issue 10 +_journal_name_full CrystEngComm +_journal_page_first 3112 +_journal_paper_doi 10.1039/c001190h +_journal_volume 12 +_journal_year 2010 +_chemical_compound_source 'see text' +_chemical_formula_moiety 'C6 H6' +_chemical_formula_sum 'C6 H6' +_chemical_formula_weight 78.11 +_chemical_name_common benzene +_chemical_name_systematic +; +benzene +; +_space_group_IT_number 61 +_space_group_name_Hall '-P 2ac 2ab' +_space_group_name_H-M_alt 'P b c a' +_symmetry_cell_setting orthorhombic +_symmetry_Int_Tables_number 61 +_symmetry_space_group_name_Hall '-P 2ac 2ab' +_symmetry_space_group_name_H-M 'P b c a' +_atom_sites_solution_hydrogens geom +_atom_sites_solution_primary direct +_atom_sites_solution_secondary difmap +_cell_angle_alpha 90 +_cell_angle_beta 90 +_cell_angle_gamma 90 +_cell_formula_units_Z 4 +_cell_length_a 6.914(2) +_cell_length_b 7.476(3) +_cell_length_c 9.563(1) +_cell_measurement_reflns_used 475 +_cell_measurement_temperature 150(2) +_cell_measurement_theta_max 27.97 +_cell_measurement_theta_min 0.97 +_cell_volume 494.3(2) +_computing_cell_refinement SMART +_computing_data_collection 'SMART (Bruker, 1998)' +_computing_data_reduction 'SAINT (Bruker, 1998)' +_computing_molecular_graphics +'Ortep-3 for Windows (Farrugia, 1997) and CAMERON (Watkin et al., 1993)' +_computing_publication_material 'PLATON (Spek, 2003)' +_computing_structure_refinement 'SHELXL-97 (Sheldrick, 1997)' +_computing_structure_solution 'SHELXTL V6.14 (Bruker, 2000)' +_diffrn_ambient_temperature 150(2) +_diffrn_measured_fraction_theta_full 1.000 +_diffrn_measured_fraction_theta_max 0.973 +_diffrn_measurement_device_type 'Bruker SMART CCD area detector' +_diffrn_measurement_method '\f and \w scans' +_diffrn_radiation_monochromator graphite +_diffrn_radiation_source 'fine-focus sealed tube' +_diffrn_radiation_type MoK\a +_diffrn_radiation_wavelength 0.71073 +_diffrn_reflns_av_R_equivalents 0.0747 +_diffrn_reflns_av_sigmaI/netI 0.0535 +_diffrn_reflns_limit_h_max 9 +_diffrn_reflns_limit_h_min -8 +_diffrn_reflns_limit_k_max 9 +_diffrn_reflns_limit_k_min -9 +_diffrn_reflns_limit_l_max 12 +_diffrn_reflns_limit_l_min -12 +_diffrn_reflns_number 4674 +_diffrn_reflns_reduction_process +; +; +_diffrn_reflns_theta_full 25.00 +_diffrn_reflns_theta_max 28.02 +_diffrn_reflns_theta_min 4.26 +_exptl_absorpt_coefficient_mu 0.059 +_exptl_absorpt_correction_T_max 0.9854 +_exptl_absorpt_correction_T_min 0.9808 +_exptl_absorpt_correction_type multi-scan +_exptl_absorpt_process_details 'SADABS, (Sheldrick, 1996)' +_exptl_crystal_colour colorless +_exptl_crystal_density_diffrn 1.050 +_exptl_crystal_density_method 'not measured' +_exptl_crystal_description plate +_exptl_crystal_F_000 168 +_exptl_crystal_size_max 0.33 +_exptl_crystal_size_mid 0.26 +_exptl_crystal_size_min 0.25 +_refine_diff_density_max 0.174 +_refine_diff_density_min -0.132 +_refine_diff_density_rms 0.030 +_refine_ls_goodness_of_fit_ref 1.061 +_refine_ls_hydrogen_treatment constr +_refine_ls_matrix_type full +_refine_ls_number_parameters 28 +_refine_ls_number_reflns 583 +_refine_ls_number_restraints 0 +_refine_ls_restrained_S_all 1.061 +_refine_ls_R_factor_all 0.1197 +_refine_ls_R_factor_gt 0.0554 +_refine_ls_shift/su_max 0.000 +_refine_ls_shift/su_mean 0.000 +_refine_ls_structure_factor_coef Fsqd +_refine_ls_weighting_details +'calc w=1/[\s^2^(Fo^2^)+(0.0488P)^2^+0.0119P] where P=(Fo^2^+2Fc^2^)/3' +_refine_ls_weighting_scheme calc +_refine_ls_wR_factor_gt 0.0991 +_refine_ls_wR_factor_ref 0.1159 +_reflns_number_gt 335 +_reflns_number_total 583 +_reflns_threshold_expression I>2\s(I) +_cod_data_source_file c001190h.txt +_cod_data_source_block a +_cod_depositor_comments +; +The following automatic conversions were performed: + +data item '_symmetry_cell_setting' value 'Orthorhombic' was changed +to 'orthorhombic' in accordance with the +/home/saulius/struct/COD-crude-data/automatic-downloads/DataCite-retrospective/RSC/depositions/lib/dictionaries/cif_core.dic +dictionary named 'cif_core.dic' version 2.4.2 last updated on +2011-04-26. + +Automatic conversion script +Id: cif_fix_values 6909 2019-04-08 15:41:33Z antanas +; +_cod_database_code 7238223 +loop_ +_symmetry_equiv_pos_site_id +_symmetry_equiv_pos_as_xyz +1 x,y,z +2 1/2-x,-y,1/2+z +3 1/2+x,1/2-y,-z +4 -x,1/2+y,1/2-z +5 -x,-y,-z +6 1/2+x,y,1/2-z +7 1/2-x,1/2+y,z +8 x,1/2-y,1/2+z +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_U_iso_or_equiv +_atom_site_adp_type +_atom_site_occupancy +_atom_site_symmetry_multiplicity +_atom_site_calc_flag +_atom_site_refinement_flags +C1 C 0.1297(2) 0.5762(2) 0.40803(18) 0.0490(5) Uani 1 1 d . +H1 H 0.2172 0.6275 0.3460 0.059 Uiso 1 1 calc R +C2 C 0.1235(3) 0.6328(2) 0.54518(17) 0.0499(5) Uani 1 1 d . +H2 H 0.2068 0.7225 0.5756 0.060 Uiso 1 1 calc R +C3 C 0.0057(2) 0.4432(2) 0.36289(17) 0.0492(5) Uani 1 1 d . +H3 H 0.0095 0.4051 0.2704 0.059 Uiso 1 1 calc R +loop_ +_atom_site_aniso_label +_atom_site_aniso_U_11 +_atom_site_aniso_U_22 +_atom_site_aniso_U_33 +_atom_site_aniso_U_23 +_atom_site_aniso_U_13 +_atom_site_aniso_U_12 +C1 0.0490(10) 0.0447(9) 0.0534(10) 0.0109(8) 0.0051(8) 0.0008(9) +C2 0.0504(9) 0.0399(9) 0.0594(11) -0.0026(8) -0.0070(10) -0.0044(8) +C3 0.0571(10) 0.0463(9) 0.0440(9) -0.0020(8) -0.0056(9) 0.0081(9) +loop_ +_atom_type_symbol +_atom_type_description +_atom_type_scat_dispersion_real +_atom_type_scat_dispersion_imag +_atom_type_scat_source +Cl Cl 0.1484 0.1585 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4' +H H 0.0000 0.0000 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4' +C C 0.0033 0.0016 'International Tables Vol C Tables 4.2.6.8 and 6.1.1.4' +loop_ +_geom_angle_atom_site_label_1 +_geom_angle_atom_site_label_2 +_geom_angle_atom_site_label_3 +_geom_angle +_geom_angle_site_symmetry_1 +C2 C1 C3 119.90(15) . +C2 C1 H1 120.1 . +C3 C1 H1 120.1 . +C3 C2 C1 120.07(16) 5_566 +C3 C2 H2 120.0 5_566 +C1 C2 H2 120.0 . +C2 C3 C1 120.03(16) 5_566 +C2 C3 H3 120.0 5_566 +C1 C3 H3 120.0 . +loop_ +_geom_bond_atom_site_label_1 +_geom_bond_atom_site_label_2 +_geom_bond_distance +_geom_bond_site_symmetry_2 +C1 C2 1.379(3) . +C1 C3 1.382(2) . +C1 H1 0.9300 . +C2 C3 1.376(2) 5_566 +C2 H2 0.9300 . +C3 C2 1.376(2) 5_566 +C3 H3 0.9300 . +loop_ +_geom_torsion_atom_site_label_1 +_geom_torsion_atom_site_label_2 +_geom_torsion_atom_site_label_3 +_geom_torsion_atom_site_label_4 +_geom_torsion +_geom_torsion_site_symmetry_4 +C3 C1 C2 C3 0.1(3) 5_566 +C2 C1 C3 C2 -0.1(3) 5_566 diff --git a/tests/data/tmQM_test.cif b/tests/data/tmQM_test.cif new file mode 100644 index 0000000..c70917c --- /dev/null +++ b/tests/data/tmQM_test.cif @@ -0,0 +1,804 @@ + +####################################################################### +# +# Cambridge Crystallographic Data Centre +# CCDC +# +####################################################################### +# +# If this CIF has been generated from an entry in the Cambridge +# Structural Database, then it will include bibliographic, chemical, +# crystal, experimental, refinement or atomic coordinate data resulting +# from the CCDC's data processing and validation procedures. +# +####################################################################### + +data_AAZDCO +_audit_creation_date 1972-10-08 +_database_code_depnum_ccdc_archive 'CCDC 1100031' +_database_code_NBS 500023 +_database_code_CSD AAZDCO +_chemical_formula_moiety 'C8 H22 Co1 N6 O4 1+,Br1 1-' +_chemical_name_systematic +'(+)~546~-trans-Dinitro(1,10-diamino-4,7-diazadecane) cobalt(iii) bromide' +_journal_coden_Cambridge 9 +_journal_volume 11 +_journal_year 1972 +_journal_page_first 1376 +_journal_name_full Inorg.Chem. +_journal_paper_doi 10.1021/ic50112a043 +loop_ +_publ_author_name +N.C.Payne +_diffrn_ambient_temperature 295 +_exptl_crystal_density_diffrn 1.842 +#These two values have been output from a single CSD field. +_refine_ls_R_factor_gt 0.038 +_refine_ls_wR_factor_gt 0.038 +_diffrn_radiation_probe x-ray +_symmetry_cell_setting monoclinic +_symmetry_space_group_name_H-M 'P 21' +_symmetry_Int_Tables_number 4 +_space_group_name_Hall 'P 2yb' +loop_ +_symmetry_equiv_pos_site_id +_symmetry_equiv_pos_as_xyz +1 x,y,z +2 -x,1/2+y,-z +_cell_length_a 7.848(5) +_cell_length_b 14.756(12) +_cell_length_c 6.397(5) +_cell_angle_alpha 90 +_cell_angle_beta 99.5(1) +_cell_angle_gamma 90 +_cell_volume 730.645 +_cell_formula_units_Z 2 +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +Br1 Br 0.30487 0.47063 0.44233 +Co1 Co -0.08396 0.25000 0.21342 +C1 C -0.26480 0.43140 0.14510 +C2 C -0.38480 0.39430 -0.03870 +C3 C -0.43800 0.29870 0.00040 +C4 C -0.36220 0.13870 0.02670 +C5 C -0.21190 0.07610 0.07230 +C6 C 0.07560 0.06300 0.28090 +C7 C 0.20800 0.09960 0.45300 +C8 C 0.26990 0.19280 0.41730 +H1 H -0.03500 0.39700 0.05600 +H2 H -0.43700 0.12000 -0.10900 +H3 H -0.43100 0.13600 0.14500 +H4 H -0.15600 0.07000 -0.05600 +H5 H -0.25100 0.01500 0.11400 +H6 H -0.14000 0.11400 0.38200 +H7 H 0.12400 0.06400 0.14600 +H8 H 0.05000 -0.00100 0.31700 +H9 H 0.31000 0.05800 0.47100 +H10 H 0.15700 0.10000 0.58700 +H11 H 0.31200 0.19400 0.27900 +H12 H -0.02300 0.40900 0.31100 +H13 H 0.36800 0.20700 0.53400 +H14 H 0.18700 0.32200 0.38300 +H15 H 0.10400 0.26400 0.56000 +H16 H -0.24400 0.49700 0.11900 +H17 H -0.31900 0.42500 0.27500 +H18 H -0.32600 0.39500 -0.16600 +H19 H -0.49000 0.43300 -0.06600 +H20 H -0.53400 0.28100 -0.11500 +H21 H -0.48000 0.29700 0.14000 +H22 H -0.24700 0.23800 -0.12700 +N1 N -0.09240 0.38280 0.18000 +N2 N -0.29710 0.23300 0.00640 +N3 N -0.08820 0.11610 0.24950 +N4 N 0.13470 0.26230 0.41460 +N5 N -0.20330 0.26430 0.45450 +N6 N 0.05240 0.24530 -0.01760 +O1 O -0.15950 0.32780 0.57920 +O2 O -0.31440 0.21150 0.49190 +O3 O 0.14340 0.30880 -0.04600 +O4 O 0.04180 0.18130 -0.13870 +loop_ +_geom_bond_atom_site_label_1 +_geom_bond_atom_site_label_2 +_geom_bond_site_symmetry_1 +_geom_bond_site_symmetry_2 +Co1 N1 1_555 1_555 +C1 C2 1_555 1_555 +C2 C3 1_555 1_555 +C3 H20 1_555 1_555 +C4 C5 1_555 1_555 +C5 H4 1_555 1_555 +C6 C7 1_555 1_555 +C7 C8 1_555 1_555 +C8 H11 1_555 1_555 +H1 N1 1_555 1_555 +H2 C4 1_555 1_555 +H3 C4 1_555 1_555 +H5 C5 1_555 1_555 +H6 N3 1_555 1_555 +H7 C6 1_555 1_555 +H8 C6 1_555 1_555 +H9 C7 1_555 1_555 +H10 C7 1_555 1_555 +H12 N1 1_555 1_555 +H13 C8 1_555 1_555 +H14 N4 1_555 1_555 +H15 N4 1_555 1_555 +H16 C1 1_555 1_555 +H17 C1 1_555 1_555 +H18 C2 1_555 1_555 +H19 C2 1_555 1_555 +H21 C3 1_555 1_555 +H22 N2 1_555 1_555 +N1 C1 1_555 1_555 +N2 Co1 1_555 1_555 +N3 Co1 1_555 1_555 +N4 Co1 1_555 1_555 +N5 Co1 1_555 1_555 +N6 Co1 1_555 1_555 +O1 N5 1_555 1_555 +O2 N5 1_555 1_555 +O3 N6 1_555 1_555 +O4 N6 1_555 1_555 +C3 N2 1_555 1_555 +C4 N2 1_555 1_555 +C5 N3 1_555 1_555 +C6 N3 1_555 1_555 +C8 N4 1_555 1_555 + +#END + +####################################################################### +# +# Cambridge Crystallographic Data Centre +# CCDC +# +####################################################################### +# +# If this CIF has been generated from an entry in the Cambridge +# Structural Database, then it will include bibliographic, chemical, +# crystal, experimental, refinement or atomic coordinate data resulting +# from the CCDC's data processing and validation procedures. +# +####################################################################### + +data_ABAFOZ +_audit_creation_date 2004-11-10 +_database_code_depnum_ccdc_archive 'CCDC 243847' +_database_code_CSD ABAFOZ +_chemical_formula_moiety 'C40 H40 N2 O2 Pd1,2(C1 H2 Cl2)' +_chemical_name_systematic +"(N,N'-Dibenzyl-N,N'-dimethylethylenediamine)-(2,2'-dihydroxy-3,3'-dimethyl-1,1'-binaphthyl)-palladium(ii) dichloromethane solvate" +_journal_coden_Cambridge 579 +_journal_volume 23 +_journal_year 2004 +_journal_page_first 3210 +_journal_name_full Organometallics +_journal_paper_doi 10.1021/om0498495 +loop_ +_publ_author_name +K.A.Pelz +P.S.White +M.R.Gagne +_chemical_absolute_configuration unk +_diffrn_ambient_temperature 173 +_exptl_crystal_density_diffrn 1.411 +#These two values have been output from a single CSD field. +_refine_ls_R_factor_gt 0.046 +_refine_ls_wR_factor_gt 0.046 +_diffrn_radiation_probe x-ray +_symmetry_cell_setting trigonal +_symmetry_space_group_name_H-M 'P 32' +_symmetry_Int_Tables_number 145 +_space_group_name_Hall 'P 32' +loop_ +_symmetry_equiv_pos_site_id +_symmetry_equiv_pos_as_xyz +1 x,y,z +2 -y,x-y,2/3+z +3 -x+y,-x,1/3+z +_cell_length_a 10.4804(6) +_cell_length_b 10.4804(6) +_cell_length_c 31.8116(17) +_cell_angle_alpha 90 +_cell_angle_beta 90 +_cell_angle_gamma 120 +_cell_volume 3026.02 +_cell_formula_units_Z 3 +_exptl_crystal_recrystallization_method dichloromethane/hexanes +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_U_iso_or_equiv +_atom_site_thermal_displace_type +Pd1 Pd 0.53343(4) 0.46662(4) 0.11940 0.0258 Uani +C1 C 0.2068(8) 0.3226(11) 0.1231(3) 0.0720 Uani +N1 N 0.3405(6) 0.4394(6) 0.14479(18) 0.0396 Uani +C2 C 0.3490(10) 0.5854(10) 0.14007(23) 0.0600 Uani +C3 C 0.4153(9) 0.6515(10) 0.09811(23) 0.0578 Uani +N2 N 0.5596(7) 0.6595(6) 0.09416(17) 0.0394 Uani +C4 C 0.6744(11) 0.7927(8) 0.1159(3) 0.0657 Uani +O1 O 0.7430(4) 0.5254(4) 0.10336(12) 0.0262 Uani +O2 O 0.4747(4) 0.2562(4) 0.13527(12) 0.0277 Uani +C5 C 0.3284(6) 0.3946(7) 0.18942(23) 0.0423 Uani +C6 C 0.4487(6) 0.5050(6) 0.21770(18) 0.0281 Uani +C7 C 0.5827(7) 0.5113(7) 0.22004(20) 0.0342 Uani +C8 C 0.6947(7) 0.6156(8) 0.24459(21) 0.0427 Uani +C9 C 0.6728(7) 0.7166(7) 0.26735(21) 0.0450 Uani +C10 C 0.5374(7) 0.7091(7) 0.26591(21) 0.0382 Uani +C11 C 0.4274(7) 0.6057(7) 0.24136(19) 0.0346 Uani +C12 C 0.6065(7) 0.6718(6) 0.04904(21) 0.0398 Uani +C13 C 0.4941(6) 0.5510(6) 0.02065(18) 0.0292 Uani +C14 C 0.3956(7) 0.5735(7) -0.00263(19) 0.0336 Uani +C15 C 0.2900(8) 0.4617(8) -0.02751(21) 0.0411 Uani +C16 C 0.2836(7) 0.3284(7) -0.02835(21) 0.0443 Uani +C17 C 0.3821(8) 0.3050(7) -0.00602(21) 0.0436 Uani +C18 C 0.4893(7) 0.4175(7) 0.01886(20) 0.0334 Uani +C19 C 0.5192(6) 0.1934(6) 0.10594(18) 0.0252 Uani +C20 C 0.6655(5) 0.2288(5) 0.10359(17) 0.0198 Uani +C21 C 0.7138(6) 0.1691(6) 0.07077(17) 0.0244 Uani +C22 C 0.8632(6) 0.2064(6) 0.06615(18) 0.0302 Uani +C23 C 0.9071(7) 0.1496(7) 0.03410(22) 0.0416 Uani +C24 C 0.8056(8) 0.0586(7) 0.00439(20) 0.0406 Uani +C25 C 0.6628(7) 0.0205(6) 0.00662(18) 0.0348 Uani +C26 C 0.6099(7) 0.0720(6) 0.04076(18) 0.0263 Uani +C27 C 0.4608(7) 0.0300(6) 0.04639(19) 0.0289 Uani +C28 C 0.4126(6) 0.0850(6) 0.07756(19) 0.0279 Uani +C29 C 0.2529(7) 0.0398(7) 0.0816(3) 0.0503 Uani +C30 C 0.8077(6) 0.4808(6) 0.13305(18) 0.0253 Uani +C31 C 0.7719(6) 0.3346(6) 0.13467(17) 0.0210 Uani +C32 C 0.8304(5) 0.2857(6) 0.16771(16) 0.0234 Uani +C33 C 0.7928(6) 0.1364(6) 0.17235(19) 0.0310 Uani +C34 C 0.8504(7) 0.0924(7) 0.20477(21) 0.0393 Uani +C35 C 0.9418(7) 0.1946(8) 0.23441(21) 0.0437 Uani +C36 C 0.9783(6) 0.3371(7) 0.23160(19) 0.0368 Uani +C37 C 0.9281(6) 0.3904(7) 0.19810(18) 0.0272 Uani +C38 C 0.9704(6) 0.5394(7) 0.19257(19) 0.0304 Uani +C39 C 0.9137(6) 0.5857(6) 0.16125(19) 0.0292 Uani +C40 C 0.9603(7) 0.7459(7) 0.15726(24) 0.0473 Uani +H1 H 0.202 0.229 0.124 0.0842 Uiso +H2 H 0.122 0.316 0.137 0.0842 Uiso +H3 H 0.209 0.351 0.094 0.0842 Uiso +H4 H 0.409 0.651 0.162 0.0882 Uiso +H5 H 0.251 0.571 0.142 0.0882 Uiso +H6 H 0.425 0.747 0.095 0.0832 Uiso +H7 H 0.351 0.586 0.077 0.0832 Uiso +H8 H 0.769 0.801 0.113 0.0768 Uiso +H9 H 0.676 0.878 0.104 0.0768 Uiso +H10 H 0.651 0.785 0.145 0.0768 Uiso +H11 H 0.236 0.381 0.199 0.0532 Uiso +H12 H 0.328 0.303 0.191 0.0532 Uiso +H13 H 0.595 0.438 0.206 0.0451 Uiso +H14 H 0.789 0.621 0.245 0.0559 Uiso +H15 H 0.751 0.790 0.284 0.0515 Uiso +H16 H 0.521 0.779 0.281 0.0519 Uiso +H17 H 0.333 0.599 0.241 0.0461 Uiso +H18 H 0.698 0.671 0.048 0.0500 Uiso +H19 H 0.621 0.763 0.038 0.0500 Uiso +H20 H 0.400 0.667 -0.002 0.0450 Uiso +H21 H 0.224 0.478 -0.044 0.0542 Uiso +H22 H 0.207 0.249 -0.044 0.0505 Uiso +H23 H 0.377 0.211 -0.007 0.0549 Uiso +H24 H 0.560 0.402 0.034 0.0452 Uiso +H25 H 0.933 0.269 0.087 0.0421 Uiso +H26 H 1.009 0.178 0.032 0.0518 Uiso +H27 H 0.837 0.018 -0.018 0.0523 Uiso +H28 H 0.595 -0.038 -0.015 0.0437 Uiso +H29 H 0.388 -0.042 0.028 0.0370 Uiso +H30 H 0.243 0.092 0.105 0.0553 Uiso +H31 H 0.217 0.062 0.057 0.0553 Uiso +H32 H 0.197 -0.064 0.087 0.0553 Uiso +H33 H 0.730 0.066 0.152 0.0437 Uiso +H34 H 0.824 -0.009 0.208 0.0505 Uiso +H35 H 0.978 0.163 0.257 0.0553 Uiso +H36 H 1.043 0.405 0.252 0.0464 Uiso +H37 H 1.038 0.611 0.212 0.0393 Uiso +H38 H 0.914 0.762 0.134 0.0524 Uiso +H39 H 0.931 0.774 0.182 0.0524 Uiso +H40 H 1.065 0.804 0.154 0.0524 Uiso +C41 C 0.5994(9) 0.0753(8) 0.3567(3) 0.0548 Uani +Cl1 Cl 0.52493(24) -0.09988(22) 0.37954(8) 0.0703 Uani +Cl2 Cl 0.7195(3) 0.1031(3) 0.31553(8) 0.0865 Uani +H41 H 0.651 0.149 0.378 0.0500 Uiso +H42 H 0.520 0.086 0.346 0.0500 Uiso +C42 C 0.4744(8) 0.0752(8) 0.21500(24) 0.0520 Uani +Cl3 Cl 0.3841(3) 0.1039(3) 0.25664(8) 0.0851 Uani +Cl4 Cl 0.3752(3) -0.09991(22) 0.19264(8) 0.0693 Uani +H43 H 0.567 0.088 0.225 0.0456 Uiso +H44 H 0.494 0.147 0.194 0.0455 Uiso +loop_ +_atom_site_aniso_label +_atom_site_aniso_U_11 +_atom_site_aniso_U_22 +_atom_site_aniso_U_33 +_atom_site_aniso_U_23 +_atom_site_aniso_U_13 +_atom_site_aniso_U_12 +Pd1 0.03223(25) 0.03202(25) 0.02089(21) -0.00569(18) -0.00581(18) 0.02180(20) +C1 0.034(4) 0.125(7) 0.064(6) -0.057(5) -0.021(4) 0.045(4) +N1 0.038(3) 0.059(3) 0.032(3) -0.020(3) -0.0125(24) 0.032(3) +C2 0.100(6) 0.102(6) 0.032(4) -0.018(4) -0.016(4) 0.091(6) +C3 0.090(6) 0.101(6) 0.028(4) -0.018(4) -0.019(4) 0.082(5) +N2 0.064(4) 0.039(3) 0.033(3) -0.0111(24) -0.020(3) 0.039(3) +C4 0.109(7) 0.035(4) 0.057(5) -0.021(3) -0.044(5) 0.039(4) +O1 0.0298(19) 0.0253(19) 0.0240(22) 0.0060(16) 0.0027(16) 0.0141(16) +O2 0.0295(20) 0.0288(19) 0.0262(22) 0.0028(16) 0.0078(16) 0.0156(17) +C5 0.028(3) 0.050(4) 0.051(5) -0.017(3) -0.003(3) 0.021(3) +C6 0.031(3) 0.036(3) 0.019(3) -0.0027(25) 0.0030(24) 0.018(3) +C7 0.040(3) 0.038(3) 0.028(4) 0.003(3) -0.001(3) 0.022(3) +C8 0.045(4) 0.065(4) 0.028(4) -0.003(3) -0.006(3) 0.035(3) +C9 0.051(4) 0.047(4) 0.027(4) -0.004(3) -0.008(3) 0.017(3) +C10 0.054(4) 0.044(4) 0.028(4) -0.004(3) 0.001(3) 0.033(3) +C11 0.042(3) 0.046(3) 0.021(3) -0.002(3) 0.002(3) 0.026(3) +C12 0.047(4) 0.031(3) 0.042(4) -0.002(3) -0.014(3) 0.020(3) +C13 0.038(3) 0.030(3) 0.021(3) 0.0039(24) 0.006(3) 0.018(3) +C14 0.046(3) 0.037(3) 0.022(3) 0.000(3) 0.002(3) 0.024(3) +C15 0.049(4) 0.058(4) 0.026(4) 0.000(3) -0.001(3) 0.034(4) +C16 0.045(4) 0.047(4) 0.029(4) -0.009(3) -0.003(3) 0.014(3) +C17 0.069(5) 0.042(4) 0.024(4) -0.006(3) -0.002(3) 0.031(3) +C18 0.043(3) 0.039(3) 0.023(3) -0.003(3) -0.002(3) 0.024(3) +C19 0.033(3) 0.025(3) 0.018(3) -0.0037(22) -0.0051(23) 0.0147(24) +C20 0.022(3) 0.0187(24) 0.020(3) 0.0003(21) 0.0000(22) 0.0112(21) +C21 0.029(3) 0.024(3) 0.018(3) -0.0004(21) -0.0047(22) 0.0116(23) +C22 0.035(3) 0.037(3) 0.024(3) 0.0007(25) 0.0047(24) 0.022(3) +C23 0.042(3) 0.053(4) 0.030(4) 0.003(3) 0.009(3) 0.024(3) +C24 0.065(4) 0.043(4) 0.019(3) -0.001(3) 0.015(3) 0.031(3) +C25 0.059(4) 0.027(3) 0.015(3) -0.0019(23) -0.003(3) 0.019(3) +C26 0.040(3) 0.023(3) 0.016(3) -0.0012(22) -0.0028(24) 0.0159(24) +C27 0.033(3) 0.018(3) 0.030(4) -0.0029(24) -0.014(3) 0.0085(24) +C28 0.027(3) 0.020(3) 0.029(3) -0.0004(24) -0.010(3) 0.0059(23) +C29 0.030(3) 0.040(4) 0.067(5) -0.010(3) -0.012(3) 0.007(3) +C30 0.026(3) 0.024(3) 0.022(3) -0.0042(23) 0.0025(23) 0.0096(23) +C31 0.022(3) 0.023(3) 0.021(3) 0.0029(22) -0.0001(22) 0.0135(22) +C32 0.023(3) 0.030(3) 0.015(3) -0.0009(22) 0.0005(21) 0.0116(23) +C33 0.038(3) 0.033(3) 0.029(3) 0.005(3) 0.003(3) 0.023(3) +C34 0.048(4) 0.043(3) 0.030(4) 0.010(3) 0.003(3) 0.025(3) +C35 0.046(4) 0.067(5) 0.023(4) 0.015(3) 0.003(3) 0.032(4) +C36 0.028(3) 0.059(4) 0.021(3) -0.003(3) -0.0007(25) 0.020(3) +C37 0.023(3) 0.041(3) 0.019(3) -0.0084(25) -0.0053(22) 0.0170(25) +C38 0.021(3) 0.041(4) 0.026(3) -0.011(3) -0.0019(24) 0.013(3) +C39 0.022(3) 0.027(3) 0.032(4) -0.007(3) 0.0043(24) 0.0074(23) +C40 0.041(4) 0.028(3) 0.058(5) -0.010(3) -0.010(3) 0.006(3) +C41 0.061(5) 0.050(4) 0.051(5) -0.003(3) 0.011(4) 0.026(4) +Cl1 0.0675(13) 0.0481(11) 0.0807(17) -0.0022(10) 0.0075(11) 0.0179(10) +Cl2 0.0729(14) 0.0873(15) 0.0679(16) -0.0247(13) 0.0254(11) 0.0164(12) +C42 0.063(4) 0.056(4) 0.040(5) 0.010(3) 0.017(4) 0.032(4) +Cl3 0.1225(20) 0.0874(15) 0.0655(16) 0.0247(13) 0.0474(15) 0.0675(16) +Cl4 0.0753(14) 0.0452(10) 0.0839(17) 0.0034(10) 0.0106(12) 0.0274(10) +loop_ +_geom_bond_atom_site_label_1 +_geom_bond_atom_site_label_2 +_geom_bond_site_symmetry_1 +_geom_bond_site_symmetry_2 +Pd1 N1 1_555 1_555 +C1 N1 1_555 1_555 +N1 C2 1_555 1_555 +C2 C3 1_555 1_555 +C3 N2 1_555 1_555 +N2 Pd1 1_555 1_555 +C4 N2 1_555 1_555 +O1 Pd1 1_555 1_555 +O2 Pd1 1_555 1_555 +C5 N1 1_555 1_555 +C6 C5 1_555 1_555 +C7 C6 1_555 1_555 +C8 C7 1_555 1_555 +C9 C8 1_555 1_555 +C10 C9 1_555 1_555 +C11 C6 1_555 1_555 +C12 N2 1_555 1_555 +C13 C12 1_555 1_555 +C14 C13 1_555 1_555 +C15 C14 1_555 1_555 +C16 C15 1_555 1_555 +C17 C16 1_555 1_555 +C18 C13 1_555 1_555 +C19 O2 1_555 1_555 +C20 C19 1_555 1_555 +C21 C20 1_555 1_555 +C22 C21 1_555 1_555 +C23 C22 1_555 1_555 +C24 C23 1_555 1_555 +C25 C24 1_555 1_555 +C26 C21 1_555 1_555 +C27 C26 1_555 1_555 +C28 C19 1_555 1_555 +C29 C28 1_555 1_555 +C30 O1 1_555 1_555 +C31 C20 1_555 1_555 +C32 C31 1_555 1_555 +C33 C32 1_555 1_555 +C34 C33 1_555 1_555 +C35 C34 1_555 1_555 +C36 C35 1_555 1_555 +C37 C32 1_555 1_555 +C38 C37 1_555 1_555 +C39 C30 1_555 1_555 +C40 C39 1_555 1_555 +H1 C1 1_555 1_555 +H2 C1 1_555 1_555 +H3 C1 1_555 1_555 +H4 C2 1_555 1_555 +H5 C2 1_555 1_555 +H6 C3 1_555 1_555 +H7 C3 1_555 1_555 +H8 C4 1_555 1_555 +H9 C4 1_555 1_555 +H10 C4 1_555 1_555 +H11 C5 1_555 1_555 +H12 C5 1_555 1_555 +H13 C7 1_555 1_555 +H14 C8 1_555 1_555 +H15 C9 1_555 1_555 +H16 C10 1_555 1_555 +H17 C11 1_555 1_555 +H18 C12 1_555 1_555 +H19 C12 1_555 1_555 +H20 C14 1_555 1_555 +H21 C15 1_555 1_555 +H22 C16 1_555 1_555 +H23 C17 1_555 1_555 +H24 C18 1_555 1_555 +H25 C22 1_555 1_555 +H26 C23 1_555 1_555 +H27 C24 1_555 1_555 +H28 C25 1_555 1_555 +H29 C27 1_555 1_555 +H30 C29 1_555 1_555 +H31 C29 1_555 1_555 +H32 C29 1_555 1_555 +H33 C33 1_555 1_555 +H34 C34 1_555 1_555 +H35 C35 1_555 1_555 +H36 C36 1_555 1_555 +H37 C38 1_555 1_555 +H38 C40 1_555 1_555 +H39 C40 1_555 1_555 +H40 C40 1_555 1_555 +C41 Cl1 1_555 1_555 +Cl2 C41 1_555 1_555 +H41 C41 1_555 1_555 +H42 C41 1_555 1_555 +C42 Cl3 1_555 1_555 +Cl4 C42 1_555 1_555 +H43 C42 1_555 1_555 +H44 C42 1_555 1_555 +C10 C11 1_555 1_555 +C17 C18 1_555 1_555 +C25 C26 1_555 1_555 +C27 C28 1_555 1_555 +C30 C31 1_555 1_555 +C36 C37 1_555 1_555 +C38 C39 1_555 1_555 + +#END + +####################################################################### +# +# Cambridge Crystallographic Data Centre +# CCDC +# +####################################################################### +# +# If this CIF has been generated from an entry in the Cambridge +# Structural Database, then it will include bibliographic, chemical, +# crystal, experimental, refinement or atomic coordinate data resulting +# from the CCDC's data processing and validation procedures. +# +####################################################################### + +data_ABAFUF +_audit_creation_date 2004-11-10 +_database_code_depnum_ccdc_archive 'CCDC 243848' +_database_code_CSD ABAFUF +_chemical_name_common +'Teaching Subset: Fundamental Chemistry, Symmetry' +_chemical_formula_moiety 'C18 H24 Cl2 N2 Pd1' +_chemical_name_systematic +(R,R)-Dichloro-(N,N'-dibenzyl-N,N'-dimethylethylenediamine)-palladium(ii) +_journal_coden_Cambridge 579 +_journal_volume 23 +_journal_year 2004 +_journal_page_first 3210 +_journal_name_full Organometallics +_journal_paper_doi 10.1021/om0498495 +loop_ +_publ_author_name +K.A.Pelz +P.S.White +M.R.Gagne +_chemical_absolute_configuration unk +_diffrn_ambient_temperature 173 +_exptl_crystal_density_diffrn 1.539 +#These two values have been output from a single CSD field. +_refine_ls_R_factor_gt 0.028 +_refine_ls_wR_factor_gt 0.028 +_diffrn_radiation_probe x-ray +_symmetry_cell_setting monoclinic +_symmetry_space_group_name_H-M 'P c' +_symmetry_Int_Tables_number 7 +_space_group_name_Hall 'P -2yc' +loop_ +_symmetry_equiv_pos_site_id +_symmetry_equiv_pos_as_xyz +1 x,y,z +2 x,-y,1/2+z +_cell_length_a 14.8129(3) +_cell_length_b 9.52300(20) +_cell_length_c 14.1217(3) +_cell_angle_alpha 90 +_cell_angle_beta 105.076(1) +_cell_angle_gamma 90 +_cell_volume 1923.49 +_exptl_crystal_colour yellow +_exptl_crystal_description block +_cell_formula_units_Z 4 +_exptl_crystal_recrystallization_method dichloromethane/hexanes +loop_ +_atom_site_label +_atom_site_type_symbol +_atom_site_fract_x +_atom_site_fract_y +_atom_site_fract_z +_atom_site_U_iso_or_equiv +_atom_site_thermal_displace_type +Pd1 Pd 0.36742 0.419637(22) 0.25696 0.0173 Uani +Cl1 Cl 0.27133(7) 0.31830(9) 0.34246(7) 0.0343 Uani +Cl2 Cl 0.49828(7) 0.35337(8) 0.37690(7) 0.0329 Uani +C1 C 0.2141(3) 0.6093(4) 0.1867(4) 0.0434 Uani +N1 N 0.25297(20) 0.4837(3) 0.14623(20) 0.0236 Uani +C2 C 0.2899(3) 0.5242(4) 0.0608(3) 0.0332 Uani +C3 C 0.3803(3) 0.6027(4) 0.0971(3) 0.0343 Uani +N2 N 0.44701(21) 0.5189(3) 0.17488(21) 0.0239 Uani +C4 C 0.4907(3) 0.4056(4) 0.1284(4) 0.0407 Uani +C5 C 0.17347(24) 0.3802(4) 0.1116(3) 0.0277 Uani +C6 C 0.19776(22) 0.2511(3) 0.0606(3) 0.0260 Uani +C7 C 0.2523(3) 0.1434(4) 0.1138(3) 0.0317 Uani +C8 C 0.2695(3) 0.0239(4) 0.0653(4) 0.0411 Uani +C9 C 0.2324(3) 0.0077(5) -0.0344(4) 0.0461 Uani +C10 C 0.1769(3) 0.1140(5) -0.0870(3) 0.0447 Uani +C11 C 0.1601(3) 0.2336(4) -0.0394(3) 0.0361 Uani +C12 C 0.5244(3) 0.6137(4) 0.2301(3) 0.0282 Uani +C13 C 0.49032(25) 0.7395(3) 0.2757(3) 0.0236 Uani +C14 C 0.4554(3) 0.7282(3) 0.3578(3) 0.0275 Uani +C15 C 0.4248(3) 0.8454(4) 0.3992(3) 0.0327 Uani +C16 C 0.4311(3) 0.9783(4) 0.3597(3) 0.0351 Uani +C17 C 0.4669(3) 0.9912(4) 0.2804(3) 0.0336 Uani +C18 C 0.4969(3) 0.8734(4) 0.2375(3) 0.0288 Uani +H1 H 0.191 0.580 0.241 0.0502 Uiso +H2 H 0.262 0.679 0.208 0.0502 Uiso +H3 H 0.163 0.648 0.137 0.0502 Uiso +H4 H 0.300 0.441 0.026 0.0417 Uiso +H5 H 0.245 0.583 0.018 0.0417 Uiso +H6 H 0.369 0.692 0.123 0.0432 Uiso +H7 H 0.408 0.617 0.043 0.0432 Uiso +H8 H 0.532 0.352 0.179 0.0544 Uiso +H9 H 0.443 0.345 0.090 0.0544 Uiso +H10 H 0.525 0.447 0.086 0.0544 Uiso +H11 H 0.122 0.428 0.067 0.0362 Uiso +H12 H 0.154 0.349 0.168 0.0362 Uiso +H13 H 0.277 0.153 0.183 0.0406 Uiso +H14 H 0.307 -0.050 0.102 0.0509 Uiso +H15 H 0.245 -0.075 -0.067 0.0579 Uiso +H16 H 0.151 0.105 -0.156 0.0551 Uiso +H17 H 0.121 0.306 -0.075 0.0455 Uiso +H18 H 0.566 0.560 0.281 0.0385 Uiso +H19 H 0.558 0.647 0.185 0.0385 Uiso +H20 H 0.453 0.637 0.387 0.0368 Uiso +H21 H 0.400 0.835 0.455 0.0436 Uiso +H22 H 0.410 1.060 0.387 0.0445 Uiso +H23 H 0.472 1.083 0.254 0.0425 Uiso +H24 H 0.522 0.884 0.182 0.0386 Uiso +Pd2 Pd 0.834050(19) 0.083268(22) 0.614726(19) 0.0178 Uani +Cl3 Cl 0.93421(8) 0.18070(10) 0.75136(7) 0.0386 Uani +Cl4 Cl 0.70721(7) 0.15266(8) 0.66835(8) 0.0337 Uani +C19 C 0.9856(3) -0.1059(4) 0.6218(4) 0.0427 Uani +N3 N 0.94502(20) 0.0181(3) 0.56134(22) 0.0256 Uani +C20 C 0.9049(3) -0.0221(4) 0.4573(3) 0.0398 Uani +C21 C 0.8145(3) -0.0981(4) 0.4459(3) 0.0388 Uani +N4 N 0.75065(21) -0.0108(3) 0.48992(21) 0.0250 Uani +C22 C 0.7080(3) 0.1066(4) 0.4218(3) 0.0423 Uani +C23 C 1.0246(3) 0.1202(4) 0.5685(3) 0.0320 Uani +C24 C 0.99919(24) 0.2498(4) 0.5061(3) 0.0303 Uani +C25 C 0.9439(3) 0.3564(4) 0.5305(3) 0.0361 Uani +C26 C 0.9242(3) 0.4754(4) 0.4717(4) 0.0486 Uani +C27 C 0.9592(4) 0.4937(5) 0.3921(4) 0.0540 Uani +C28 C 1.0159(4) 0.3899(6) 0.3689(4) 0.0589 Uani +C29 C 1.0350(3) 0.2695(5) 0.4246(3) 0.0427 Uani +C30 C 0.6708(3) -0.1010(3) 0.5028(3) 0.0287 Uani +C31 C 0.7011(3) -0.2312(4) 0.5636(3) 0.0257 Uani +C32 C 0.7359(3) -0.2249(3) 0.6653(3) 0.0297 Uani +C33 C 0.7643(3) -0.3449(4) 0.7205(3) 0.0408 Uani +C34 C 0.7556(3) -0.4764(4) 0.6743(3) 0.0391 Uani +C35 C 0.7191(3) -0.4847(4) 0.5746(4) 0.0387 Uani +C36 C 0.6925(3) -0.3629(4) 0.5189(3) 0.0317 Uani +H25 H 1.010 -0.077 0.689 0.0548 Uiso +H26 H 0.938 -0.176 0.619 0.0548 Uiso +H27 H 1.035 -0.145 0.597 0.0548 Uiso +H28 H 0.894 0.061 0.418 0.0528 Uiso +H29 H 0.949 -0.081 0.436 0.0528 Uiso +H30 H 0.826 -0.187 0.479 0.0506 Uiso +H31 H 0.785 -0.114 0.378 0.0506 Uiso +H32 H 0.668 0.161 0.452 0.0493 Uiso +H33 H 0.756 0.166 0.410 0.0493 Uiso +H34 H 0.672 0.069 0.361 0.0493 Uiso +H35 H 1.046 0.150 0.636 0.0428 Uiso +H36 H 1.074 0.072 0.549 0.0428 Uiso +H37 H 0.921 0.347 0.588 0.0463 Uiso +H38 H 0.884 0.546 0.487 0.0568 Uiso +H39 H 0.945 0.577 0.353 0.0602 Uiso +H40 H 1.042 0.402 0.314 0.0676 Uiso +H41 H 1.074 0.198 0.408 0.0530 Uiso +H42 H 0.634 -0.045 0.535 0.0371 Uiso +H43 H 0.634 -0.129 0.439 0.0371 Uiso +H44 H 0.739 -0.136 0.698 0.0394 Uiso +H45 H 0.789 -0.338 0.790 0.0495 Uiso +H46 H 0.776 -0.560 0.712 0.0487 Uiso +H47 H 0.710 -0.575 0.543 0.0488 Uiso +H48 H 0.669 -0.369 0.449 0.0406 Uiso +loop_ +_atom_site_aniso_label +_atom_site_aniso_U_11 +_atom_site_aniso_U_22 +_atom_site_aniso_U_33 +_atom_site_aniso_U_23 +_atom_site_aniso_U_13 +_atom_site_aniso_U_12 +Pd1 0.02088(14) 0.01582(12) 0.01486(14) -0.00017(9) 0.00386(11) -0.00022(10) +Cl1 0.0454(5) 0.0386(4) 0.0229(4) -0.0001(3) 0.0160(4) -0.0128(4) +Cl2 0.0348(5) 0.0245(4) 0.0312(5) 0.0012(3) -0.0061(4) 0.0058(3) +C1 0.0336(22) 0.0296(18) 0.058(3) -0.0115(19) -0.0044(21) 0.0112(17) +N1 0.0235(14) 0.0214(13) 0.0229(15) 0.0023(11) 0.0008(12) -0.0008(11) +C2 0.0422(22) 0.0361(18) 0.0170(17) 0.0059(15) 0.0000(15) -0.0117(17) +C3 0.0406(24) 0.0382(19) 0.0208(19) 0.0063(15) 0.0023(17) -0.0123(17) +N2 0.0285(16) 0.0251(13) 0.0206(14) -0.0061(11) 0.0110(12) -0.0070(12) +C4 0.0398(23) 0.0406(20) 0.053(3) -0.0243(19) 0.0321(21) -0.0147(17) +C5 0.0206(16) 0.0280(16) 0.0301(19) -0.0048(14) -0.0013(14) -0.0001(14) +C6 0.0171(15) 0.0302(17) 0.0310(18) -0.0089(15) 0.0069(13) -0.0072(14) +C7 0.0250(18) 0.0317(18) 0.0350(20) -0.0084(16) 0.0017(15) -0.0068(15) +C8 0.0308(21) 0.0292(18) 0.063(3) -0.0132(19) 0.0114(20) -0.0030(17) +C9 0.0309(24) 0.046(3) 0.067(3) -0.0321(24) 0.0228(23) -0.0151(20) +C10 0.0383(23) 0.063(3) 0.0334(23) -0.0183(21) 0.0105(19) -0.0133(21) +C11 0.0307(20) 0.0460(21) 0.0298(20) -0.0065(17) 0.0047(16) -0.0045(17) +C12 0.0228(18) 0.0312(16) 0.0316(20) -0.0066(15) 0.0088(15) -0.0042(14) +C13 0.0184(17) 0.0197(16) 0.0312(22) -0.0030(14) 0.0040(15) -0.0038(13) +C14 0.0278(18) 0.0192(15) 0.0334(19) -0.0027(13) 0.0042(15) -0.0021(13) +C15 0.0350(20) 0.0314(18) 0.0345(21) -0.0024(15) 0.0139(17) 0.0030(15) +C16 0.0317(20) 0.0243(17) 0.0475(25) -0.0081(16) 0.0071(18) 0.0028(15) +C17 0.0292(21) 0.0188(17) 0.049(3) 0.0047(16) 0.0031(19) -0.0011(15) +C18 0.0277(19) 0.0294(16) 0.0287(19) 0.0004(15) 0.0065(15) -0.0059(15) +Pd2 0.01969(14) 0.01722(12) 0.01697(14) -0.00147(10) 0.00566(11) -0.00027(10) +Cl3 0.0471(6) 0.0463(5) 0.0197(4) -0.0076(4) 0.0041(4) -0.0174(4) +Cl4 0.0357(5) 0.0250(4) 0.0482(6) -0.0009(4) 0.0250(4) 0.0052(4) +C19 0.0421(25) 0.0294(18) 0.063(3) 0.0073(19) 0.0253(24) 0.0089(17) +N3 0.0256(15) 0.0233(13) 0.0315(16) -0.0014(12) 0.0139(13) -0.0012(12) +C20 0.053(3) 0.0413(20) 0.0341(22) -0.0149(18) 0.0276(20) -0.0137(19) +C21 0.051(3) 0.0414(21) 0.0289(22) -0.0175(16) 0.0191(20) -0.0171(18) +N4 0.0300(16) 0.0228(13) 0.0200(14) 0.0016(11) 0.0028(12) -0.0081(12) +C22 0.050(3) 0.0398(20) 0.0279(21) 0.0118(17) -0.0061(19) -0.0132(18) +C23 0.0189(16) 0.0353(18) 0.0440(23) 0.0038(16) 0.0119(16) -0.0022(14) +C24 0.0214(17) 0.0392(18) 0.0292(19) 0.0016(15) 0.0048(14) -0.0071(15) +C25 0.0305(20) 0.0329(19) 0.0454(24) 0.0064(17) 0.0105(18) -0.0054(16) +C26 0.0349(23) 0.0348(21) 0.071(3) 0.0116(21) 0.0046(23) -0.0046(19) +C27 0.040(3) 0.052(3) 0.058(3) 0.0266(25) -0.0089(24) -0.0197(23) +C28 0.048(3) 0.088(4) 0.037(3) 0.021(3) 0.0042(22) -0.024(3) +C29 0.0378(22) 0.056(3) 0.0351(22) 0.0071(19) 0.0110(18) -0.0117(20) +C30 0.0223(17) 0.0257(16) 0.0332(20) 0.0042(14) -0.0018(15) -0.0066(13) +C31 0.0201(17) 0.0234(16) 0.0321(21) 0.0019(14) 0.0043(15) -0.0054(13) +C32 0.0358(20) 0.0225(16) 0.0298(20) -0.0008(14) 0.0068(17) 0.0001(14) +C33 0.056(3) 0.0297(19) 0.0332(22) 0.0033(16) 0.0052(20) 0.0006(18) +C34 0.0470(24) 0.0213(17) 0.048(3) 0.0035(16) 0.0103(20) 0.0018(17) +C35 0.0410(25) 0.0198(18) 0.056(3) -0.0083(17) 0.0137(22) -0.0045(17) +C36 0.0336(20) 0.0274(16) 0.0309(20) -0.0039(15) 0.0027(16) -0.0062(15) +loop_ +_geom_bond_atom_site_label_1 +_geom_bond_atom_site_label_2 +_geom_bond_site_symmetry_1 +_geom_bond_site_symmetry_2 +Pd1 Cl1 1_555 1_555 +Cl2 Pd1 1_555 1_555 +C1 N1 1_555 1_555 +N1 Pd1 1_555 1_555 +C2 N1 1_555 1_555 +C3 C2 1_555 1_555 +N2 Pd1 1_555 1_555 +C4 N2 1_555 1_555 +C5 N1 1_555 1_555 +C6 C5 1_555 1_555 +C7 C6 1_555 1_555 +C8 C7 1_555 1_555 +C9 C8 1_555 1_555 +C10 C9 1_555 1_555 +C11 C6 1_555 1_555 +C12 N2 1_555 1_555 +C13 C12 1_555 1_555 +C14 C13 1_555 1_555 +C15 C14 1_555 1_555 +C16 C15 1_555 1_555 +C17 C16 1_555 1_555 +C18 C13 1_555 1_555 +H1 C1 1_555 1_555 +H2 C1 1_555 1_555 +H3 C1 1_555 1_555 +H4 C2 1_555 1_555 +H5 C2 1_555 1_555 +H6 C3 1_555 1_555 +H7 C3 1_555 1_555 +H8 C4 1_555 1_555 +H9 C4 1_555 1_555 +H10 C4 1_555 1_555 +H11 C5 1_555 1_555 +H12 C5 1_555 1_555 +H13 C7 1_555 1_555 +H14 C8 1_555 1_555 +H15 C9 1_555 1_555 +H16 C10 1_555 1_555 +H17 C11 1_555 1_555 +H18 C12 1_555 1_555 +H19 C12 1_555 1_555 +H20 C14 1_555 1_555 +H21 C15 1_555 1_555 +H22 C16 1_555 1_555 +H23 C17 1_555 1_555 +H24 C18 1_555 1_555 +Pd2 Cl3 1_555 1_555 +Cl4 Pd2 1_555 1_555 +C19 N3 1_555 1_555 +N3 Pd2 1_555 1_555 +C20 N3 1_555 1_555 +C21 C20 1_555 1_555 +N4 Pd2 1_555 1_555 +C22 N4 1_555 1_555 +C23 N3 1_555 1_555 +C24 C23 1_555 1_555 +C25 C24 1_555 1_555 +C26 C25 1_555 1_555 +C27 C26 1_555 1_555 +C28 C27 1_555 1_555 +C29 C24 1_555 1_555 +C30 N4 1_555 1_555 +C31 C30 1_555 1_555 +C32 C31 1_555 1_555 +C33 C32 1_555 1_555 +C34 C33 1_555 1_555 +C35 C34 1_555 1_555 +C36 C31 1_555 1_555 +H25 C19 1_555 1_555 +H26 C19 1_555 1_555 +H27 C19 1_555 1_555 +H28 C20 1_555 1_555 +H29 C20 1_555 1_555 +H30 C21 1_555 1_555 +H31 C21 1_555 1_555 +H32 C22 1_555 1_555 +H33 C22 1_555 1_555 +H34 C22 1_555 1_555 +H35 C23 1_555 1_555 +H36 C23 1_555 1_555 +H37 C25 1_555 1_555 +H38 C26 1_555 1_555 +H39 C27 1_555 1_555 +H40 C28 1_555 1_555 +H41 C29 1_555 1_555 +H42 C30 1_555 1_555 +H43 C30 1_555 1_555 +H44 C32 1_555 1_555 +H45 C33 1_555 1_555 +H46 C34 1_555 1_555 +H47 C35 1_555 1_555 +H48 C36 1_555 1_555 +C3 N2 1_555 1_555 +C10 C11 1_555 1_555 +C17 C18 1_555 1_555 +C21 N4 1_555 1_555 +C28 C29 1_555 1_555 +C35 C36 1_555 1_555 + +#END diff --git a/tests/data/tmQM_test.cif.bz2 b/tests/data/tmQM_test.cif.bz2 new file mode 100644 index 0000000..3378376 Binary files /dev/null and b/tests/data/tmQM_test.cif.bz2 differ diff --git a/tests/data/tmQM_test.cif.gz b/tests/data/tmQM_test.cif.gz new file mode 100644 index 0000000..0cfd74f Binary files /dev/null and b/tests/data/tmQM_test.cif.gz differ diff --git a/tests/test_cif.py b/tests/test_cif.py new file mode 100644 index 0000000..dfe0981 --- /dev/null +++ b/tests/test_cif.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""Tests for CIF files.""" + +import pytest # noqa: F401 +import read_structure_step # noqa: F401 +from . import build_filenames + +from molsystem.system_db import SystemDB + + +@pytest.fixture() +def configuration(): + """Create a system db, system and configuration.""" + db = SystemDB(filename="file:seamm_db?mode=memory&cache=shared") + system = db.create_system(name="default") + configuration = system.create_configuration(name="default") + + yield configuration + + db.close() + try: + del db + except Exception: + print("Caught error deleting the database") + + +# "ABENEB01.cif", + + +@pytest.mark.parametrize( + "structure", + [ + "benzene.cif", + ], +) +def test_cif(configuration, structure): + """Test the bonds in a benzene crystal.""" + correct = ( + "1.3788 1.3788 1.3788 1.3788 1.3788 1.3788 1.3788 1.3788 " + "1.3820 1.3820 1.3820 1.3820 1.3820 1.3820 1.3820 1.3820 " + "0.9300 0.9300 0.9300 0.9300 0.9300 0.9300 0.9300 0.9300 " + "1.3761 1.3761 1.3761 1.3761 1.3761 1.3761 1.3761 1.3761 " + "0.9306 0.9306 0.9306 0.9306 0.9306 0.9306 0.9306 0.9306 " + "0.9296 0.9296 0.9296 0.9296 0.9296 0.9296 0.9296 0.9296" + ) + + file_name = build_filenames.build_data_filename(structure) + system = configuration.system + system_db = system.system_db + read_structure_step.read( + file_name, + configuration, + system_db=system_db, + system=system, + subsequent_as_configurations=False, + ) + + assert system_db.n_systems == 1 + configuration = system.configuration + + atoms = configuration.atoms + assert atoms.n_atoms == 48 + bonds = configuration.bonds + assert bonds.n_bonds == 48 + + lengths = " ".join([f"{r:.4f}" for r in bonds.get_lengths()]) + if lengths != correct: + print(lengths) + + assert lengths == correct diff --git a/tests/test_formats.py b/tests/test_formats.py index d938dc5..893a174 100644 --- a/tests/test_formats.py +++ b/tests/test_formats.py @@ -10,29 +10,31 @@ from molsystem.system_db import SystemDB bond_string = """\ - i j bondorder -1 1 2 1 -2 1 5 1 -3 1 7 1 -4 2 3 2 -5 3 4 1 -6 3 6 1 -7 4 5 2 -8 5 8 1 -9 6 9 1 -10 6 10 1""" + i j bondorder symop1 symop2 +1 1 2 1 . . +2 1 5 1 . . +3 1 7 1 . . +4 2 3 2 . . +5 3 4 1 . . +6 3 6 1 . . +7 4 5 2 . . +8 5 8 1 . . +9 6 9 1 . . +10 6 10 1 . .""" + xyz_bond_string = """\ - i j bondorder -1 1 7 1 -2 5 8 1 -3 1 5 1 -4 1 2 1 -5 4 5 2 -6 2 3 2 -7 3 4 1 -8 3 6 1 -9 6 10 1 -10 6 9 1""" + i j bondorder symop1 symop2 +1 1 7 1 . . +2 5 8 1 . . +3 1 5 1 . . +4 1 2 1 . . +5 4 5 2 . . +6 2 3 2 . . +7 3 4 1 . . +8 3 6 1 . . +9 6 10 1 . . +10 6 9 1 . .""" + acetonitrile_bonds = """\ i j bondorder 1 2 5 1 @@ -394,3 +396,26 @@ def test_compressed(configuration, structure): ) assert system_db.n_systems == 7 + + +@pytest.mark.parametrize( + "structure", + [ + "tmQM_test.cif", + "tmQM_test.cif.gz", + "tmQM_test.cif.bz2", + ], +) +def test_cif(configuration, structure): + file_name = build_filenames.build_data_filename(structure) + system = configuration.system + system_db = system.system_db + read_structure_step.read( + file_name, + configuration, + system_db=system_db, + system=system, + subsequent_as_configurations=False, + ) + + assert system_db.n_systems == 3 diff --git a/tests/test_utils.py b/tests/test_utils.py index 70305c5..c75e71f 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -10,9 +10,9 @@ from molsystem.system_db import SystemDB bond_string = """\ - i j bondorder -1 1 2 1 -2 1 3 1""" + i j bondorder symop1 symop2 +1 1 2 1 . . +2 1 3 1 . .""" @pytest.fixture(scope="module")