From 186b7feb6c226edd82eb27d0b2a4e3b09b231c51 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Sun, 30 Jun 2024 02:40:20 -0400 Subject: [PATCH 01/20] add untracked files --- .flake8 | 11 + .github/workflows/docs.yml | 43 +++ .github/workflows/main.yml | 54 ++++ .github/workflows/pre-commit.yml | 19 ++ .isort.cfg | 4 + .pre-commit-config.yaml | 43 +++ AUTHORS.rst | 10 + CHANGELOG.rst | 5 + CODE_OF_CONDUCT.rst | 133 ++++++++ LICENSE.rst | 30 ++ doc/Makefile | 194 ++++++++++++ doc/make.bat | 36 +++ doc/source/_static/.placeholder | 0 .../api/diffpy.structure.example_package.rst | 31 ++ doc/source/api/diffpy.structure.rst | 30 ++ doc/source/conf.py | 289 ++++++++++++++++++ doc/source/diffpy.structure.apps.rst | 30 ++ doc/source/diffpy.structure.expansion.rst | 38 +++ doc/source/diffpy.structure.parsers.rst | 94 ++++++ doc/source/index.rst | 44 +++ doc/source/license.rst | 39 +++ doc/source/mod_atom.rst | 7 + doc/source/mod_lattice.rst | 7 + doc/source/mod_spacegroup.rst | 7 + doc/source/package.rst | 130 ++++++++ doc/source/release.rst | 5 + news/TEMPLATE.rst | 23 ++ pyproject.toml | 72 +++++ requirements/README.txt | 11 + requirements/build.txt | 2 + requirements/docs.txt | 4 + requirements/pip.txt | 0 requirements/run.txt | 0 requirements/test.txt | 5 + src/diffpy/structure/tests/conftest.py | 19 ++ 35 files changed, 1469 insertions(+) create mode 100644 .flake8 create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/main.yml create mode 100644 .github/workflows/pre-commit.yml create mode 100644 .isort.cfg create mode 100644 .pre-commit-config.yaml create mode 100644 AUTHORS.rst create mode 100644 CHANGELOG.rst create mode 100644 CODE_OF_CONDUCT.rst create mode 100644 LICENSE.rst create mode 100644 doc/Makefile create mode 100644 doc/make.bat create mode 100644 doc/source/_static/.placeholder create mode 100644 doc/source/api/diffpy.structure.example_package.rst create mode 100644 doc/source/api/diffpy.structure.rst create mode 100644 doc/source/conf.py create mode 100644 doc/source/diffpy.structure.apps.rst create mode 100644 doc/source/diffpy.structure.expansion.rst create mode 100644 doc/source/diffpy.structure.parsers.rst create mode 100644 doc/source/index.rst create mode 100644 doc/source/license.rst create mode 100644 doc/source/mod_atom.rst create mode 100644 doc/source/mod_lattice.rst create mode 100644 doc/source/mod_spacegroup.rst create mode 100644 doc/source/package.rst create mode 100644 doc/source/release.rst create mode 100644 news/TEMPLATE.rst create mode 100644 pyproject.toml create mode 100644 requirements/README.txt create mode 100644 requirements/build.txt create mode 100644 requirements/docs.txt create mode 100644 requirements/pip.txt create mode 100644 requirements/run.txt create mode 100644 requirements/test.txt create mode 100644 src/diffpy/structure/tests/conftest.py diff --git a/.flake8 b/.flake8 new file mode 100644 index 00000000..2d2cb168 --- /dev/null +++ b/.flake8 @@ -0,0 +1,11 @@ +[flake8] +exclude = + .git, + __pycache__, + build, + dist, + doc/source/conf.py +max-line-length = 115 +# Ignore some style 'errors' produced while formatting by 'black' +# https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html#labels-why-pycodestyle-warnings +extend-ignore = E203 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..a4661f5c --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,43 @@ +name: Build Documentation + +on: + push: + branches: + - main + release: + +jobs: + test: + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: build + auto-update-conda: true + + - name: install requirements + run: >- + conda install -n build -c conda-forge + --file requirements/build.txt + --file requirements/run.txt + --file requirements/docs.txt + --quiet --yes + + - name: install the package + run: python -m pip install . --no-deps + + - name: build documents + run: make -C doc html + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./doc/build/html diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..c0551e76 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,54 @@ +name: CI + +on: + push: + branches: + - main + - CI + pull_request: + workflow_dispatch: + +jobs: + miniconda: + name: Miniconda ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: ["ubuntu-latest"] + steps: + - name: check out diffpy.structure + uses: actions/checkout@v3 + with: + repository: diffpy/diffpy.structure + path: . + fetch-depth: 0 # avoid shallow clone with no tags + + - name: initialize miniconda + # this uses a marketplace action that sets up miniconda in a way that makes + # it easier to use. I tried setting it up without this and it was a pain + uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: test + # environment.yml file is needed by this action. Because I don't want + # maintain this but rather maintain the requirements files it just has + # basic things in it like conda and pip + environment-file: ./environment.yml + python-version: 3 + auto-activate-base: false + + - name: install diffpy.structure requirements + shell: bash -l {0} + run: | + conda config --set always_yes yes --set changeps1 no + conda config --add channels conda-forge + conda activate test + conda install --file requirements/run.txt + conda install --file requirements/test.txt + pip install . + - name: Validate diffpy.structure + shell: bash -l {0} + run: | + conda activate test + coverage run -m pytest -vv -s + coverage report -m + codecov diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 00000000..f2ff7e42 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,19 @@ +name: pre-commit + +on: + pull_request: + push: + workflow_dispatch: + +jobs: + pre-commit: + # pull requests are a duplicate of a branch push if within the same repo. + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + - uses: pre-commit/action@v3.0.0 + with: + extra_args: --all-files diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 00000000..e0926f42 --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,4 @@ +[settings] +line_length = 115 +multi_line_output = 3 +include_trailing_comma = True diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..c4588061 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,43 @@ +default_language_version: + python: python3 +ci: + autofix_commit_msg: | + [pre-commit.ci] auto fixes from pre-commit hooks + autofix_prs: true + autoupdate_branch: 'pre-commit-autoupdate' + autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate' + autoupdate_schedule: monthly + skip: [no-commit-to-branch] + submodules: false +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace + exclude: '\.(rst|txt)$' + - repo: https://github.com/psf/black + rev: 24.4.2 + hooks: + - id: black + - repo: https://github.com/pycqa/flake8 + rev: 7.0.0 + hooks: + - id: flake8 + - repo: https://github.com/pycqa/isort + rev: 5.13.2 + hooks: + - id: isort + args: ["--profile", "black"] + - repo: https://github.com/kynan/nbstripout + rev: 0.7.1 + hooks: + - id: nbstripout + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: no-commit-to-branch + name: Prevent Commit to Main Branch + args: ["--branch", "main"] + stages: [pre-commit] diff --git a/AUTHORS.rst b/AUTHORS.rst new file mode 100644 index 00000000..7f4c6d8e --- /dev/null +++ b/AUTHORS.rst @@ -0,0 +1,10 @@ +Authors +======= + +Billinge Group and community contibutors. + +Contributors +------------ + +For a list of contributors, visit +https://github.com/diffpy/diffpy.structure/graphs/contributors diff --git a/CHANGELOG.rst b/CHANGELOG.rst new file mode 100644 index 00000000..26694512 --- /dev/null +++ b/CHANGELOG.rst @@ -0,0 +1,5 @@ +============= +Release Notes +============= + +.. current developments diff --git a/CODE_OF_CONDUCT.rst b/CODE_OF_CONDUCT.rst new file mode 100644 index 00000000..ff9c3561 --- /dev/null +++ b/CODE_OF_CONDUCT.rst @@ -0,0 +1,133 @@ +===================================== + Contributor Covenant Code of Conduct +===================================== + +Our Pledge +---------- + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +Our Standards +------------- + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +Enforcement Responsibilities +---------------------------- + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +Scope +----- + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +Enforcement +----------- + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +sb2896@columbia.edu. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +Enforcement Guidelines +---------------------- + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +1. Correction +**************** + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +2. Warning +************* + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +3. Temporary Ban +****************** + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +4. Permanent Ban +****************** + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant `_. + +Community Impact Guidelines were inspired by `Mozilla's code of conduct enforcement ladder `_. + +For answers to common questions about this code of conduct, see the `FAQ `_. `Translations are available `_ diff --git a/LICENSE.rst b/LICENSE.rst new file mode 100644 index 00000000..95a04ac9 --- /dev/null +++ b/LICENSE.rst @@ -0,0 +1,30 @@ +BSD 3-Clause License + +Copyright (c) 2024, The Trustees of Columbia University +in the City of New York. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 00000000..fe03b556 --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,194 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build +BASENAME = $(subst .,,$(subst $() $(),,diffpy.structure)) + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/$(BASENAME).qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/$(BASENAME).qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/$(BASENAME)" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/$(BASENAME)" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +# Manual publishing to the gh-pages branch + +GITREPOPATH = $(shell cd $(CURDIR) && git rev-parse --git-dir) +GITREMOTE = origin +GITREMOTEURL = $(shell git config --get remote.$(GITREMOTE).url) +GITLASTCOMMIT = $(shell git rev-parse --short HEAD) + +publish: + @test -d build/html || \ + ( echo >&2 "Run 'make html' first!"; false ) + git show-ref --verify --quiet refs/heads/gh-pages || \ + git branch --track gh-pages $(GITREMOTE)/gh-pages + test -d build/gh-pages || \ + git clone -s -b gh-pages $(GITREPOPATH) build/gh-pages + cd build/gh-pages && \ + git pull $(GITREMOTEURL) gh-pages + rsync -acv --delete --exclude=.git --exclude=.rsync-exclude \ + --exclude-from=build/gh-pages/.rsync-exclude \ + --link-dest=$(CURDIR)/build/html build/html/ build/gh-pages/ + cd build/gh-pages && \ + git add --all . && \ + git diff --cached --quiet || \ + git commit -m "Sync with the source at $(GITLASTCOMMIT)." + cd build/gh-pages && \ + git push origin gh-pages diff --git a/doc/make.bat b/doc/make.bat new file mode 100644 index 00000000..ac53d5bd --- /dev/null +++ b/doc/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=PackagingScientificPython + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/doc/source/_static/.placeholder b/doc/source/_static/.placeholder new file mode 100644 index 00000000..e69de29b diff --git a/doc/source/api/diffpy.structure.example_package.rst b/doc/source/api/diffpy.structure.example_package.rst new file mode 100644 index 00000000..3595000a --- /dev/null +++ b/doc/source/api/diffpy.structure.example_package.rst @@ -0,0 +1,31 @@ +.. _example_package documentation: + +|title| +======= + +.. |title| replace:: diffpy.structure.example_package package + +.. automodule:: diffpy.structure.example_package + :members: + :undoc-members: + :show-inheritance: + +|foo| +----- + +.. |foo| replace:: diffpy.structure.example_package.foo module + +.. automodule:: diffpy.structure.example_package.foo + :members: + :undoc-members: + :show-inheritance: + +|bar| +----- + +.. |bar| replace:: diffpy.structure.example_package.bar module + +.. automodule:: diffpy.structure.example_package.foo + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/api/diffpy.structure.rst b/doc/source/api/diffpy.structure.rst new file mode 100644 index 00000000..cdcc80ea --- /dev/null +++ b/doc/source/api/diffpy.structure.rst @@ -0,0 +1,30 @@ +:tocdepth: -1 + +|title| +======= + +.. |title| replace:: diffpy.structure package + +.. automodule:: diffpy.structure + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + diffpy.structure.example_package + +Submodules +---------- + +|module| +-------- + +.. |module| replace:: diffpy.structure.example_submodule module + +.. automodule:: diffpy.structure.example_submodule + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/conf.py b/doc/source/conf.py new file mode 100644 index 00000000..f7b1c770 --- /dev/null +++ b/doc/source/conf.py @@ -0,0 +1,289 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# diffpy.structure documentation build configuration file, created by +# sphinx-quickstart on Thu Jan 30 15:49:41 2014. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import time +from importlib.metadata import version +from pathlib import Path + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use Path().resolve() to make it absolute, like shown here. +# sys.path.insert(0, str(Path(".").resolve())) +sys.path.insert(0, str(Path("../..").resolve())) +sys.path.insert(0, str(Path("../../src").resolve())) + +# abbreviations +ab_authors = "Billinge Group members and community contributors" + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.todo", + "sphinx.ext.viewcode", + "sphinx.ext.intersphinx", + "sphinx_rtd_theme", + "m2r", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_suffix = [".rst", ".md"] + +# The encoding of source files. +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = "index" + +# General information about the project. +project = "diffpy.structure" +copyright = "%Y, The Trustees of Columbia University in the City of New York" + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. + +fullversion = version(project) +# The short X.Y version. +version = "".join(fullversion.split(".post")[:1]) +# The full version, including alpha/beta/rc tags. +release = fullversion + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +today = time.strftime("%B %d, %Y", time.localtime()) +year = today.split()[-1] +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' +# substitute YEAR in the copyright string +copyright = copyright.replace("%Y", year) + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ["build"] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = "sphinx" + +# A list of ignored prefixes for module index sorting. +modindex_common_prefix = ["diffpy.structure"] + +# Display all warnings for missing links. +nitpicky = True + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + "navigation_with_keys": "true", +} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +# html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Output file base name for HTML help builder. +basename = "diffpy.structure".replace(" ", "").replace(".", "") +htmlhelp_basename = basename + "doc" + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # 'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + # 'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + # 'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ("index", "diffpy.structure.tex", "diffpy.structure Documentation", ab_authors, "manual"), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [("index", "diffpy.structure", "diffpy.structure Documentation", ab_authors, 1)] + +# If true, show URL addresses after external links. +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + "index", + "diffpy.structure", + "diffpy.structure Documentation", + ab_authors, + "diffpy.structure", + "One line description of project.", + "Miscellaneous", + ), +] + +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False + + +# Example configuration for intersphinx: refer to the Python standard library. +# intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/source/diffpy.structure.apps.rst b/doc/source/diffpy.structure.apps.rst new file mode 100644 index 00000000..e17b2d77 --- /dev/null +++ b/doc/source/diffpy.structure.apps.rst @@ -0,0 +1,30 @@ +diffpy.structure.apps package +============================= + +Submodules +---------- + +diffpy.structure.apps.anyeye module +----------------------------------- + +.. automodule:: diffpy.structure.apps.anyeye + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.apps.transtru module +------------------------------------- + +.. automodule:: diffpy.structure.apps.transtru + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: diffpy.structure.apps + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/diffpy.structure.expansion.rst b/doc/source/diffpy.structure.expansion.rst new file mode 100644 index 00000000..9e9f8f53 --- /dev/null +++ b/doc/source/diffpy.structure.expansion.rst @@ -0,0 +1,38 @@ +diffpy.structure.expansion package +================================== + +Submodules +---------- + +diffpy.structure.expansion.makeellipsoid module +----------------------------------------------- + +.. automodule:: diffpy.structure.expansion.makeellipsoid + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.expansion.shapeutils module +-------------------------------------------- + +.. automodule:: diffpy.structure.expansion.shapeutils + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.expansion.supercell_mod module +----------------------------------------------- + +.. automodule:: diffpy.structure.expansion.supercell_mod + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: diffpy.structure.expansion + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/diffpy.structure.parsers.rst b/doc/source/diffpy.structure.parsers.rst new file mode 100644 index 00000000..3ddc7d14 --- /dev/null +++ b/doc/source/diffpy.structure.parsers.rst @@ -0,0 +1,94 @@ +diffpy.structure.parsers package +================================ + +Submodules +---------- + +diffpy.structure.parsers.p_auto module +-------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_auto + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_cif module +------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_cif + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_discus module +---------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_discus + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_pdb module +------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_pdb + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_pdffit module +---------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_pdffit + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_rawxyz module +---------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_rawxyz + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_xcfg module +-------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_xcfg + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_xyz module +------------------------------------- + +.. automodule:: diffpy.structure.parsers.p_xyz + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.parser_index_mod module +------------------------------------------------ + +.. automodule:: diffpy.structure.parsers.parser_index_mod + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.structureparser module +----------------------------------------------- + +.. automodule:: diffpy.structure.parsers.structureparser + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: diffpy.structure.parsers + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/index.rst b/doc/source/index.rst new file mode 100644 index 00000000..54ec3695 --- /dev/null +++ b/doc/source/index.rst @@ -0,0 +1,44 @@ +####### +|title| +####### + +.. |title| replace:: diffpy.structure documentation + +diffpy.structure - Crystal structure container and parsers for structure formats.. + +| Software version |release|. +| Last updated |today|. + +======= +Authors +======= + +diffpy.structure is developed by Billinge Group +and its community contributors. + +For a detailed list of contributors see +https://github.com/diffpy/diffpy.structure/graphs/contributors. + +============ +Installation +============ + +See the `README `_ +file included with the distribution. + +================= +Table of contents +================= +.. toctree:: + :titlesonly: + + license + release + Package API + +======= +Indices +======= + +* :ref:`genindex` +* :ref:`search` diff --git a/doc/source/license.rst b/doc/source/license.rst new file mode 100644 index 00000000..cfab61c2 --- /dev/null +++ b/doc/source/license.rst @@ -0,0 +1,39 @@ +:tocdepth: -1 + +.. index:: license + +License +####### + +OPEN SOURCE LICENSE AGREEMENT +============================= +BSD 3-Clause License + +Copyright (c) 2024, The Trustees of Columbia University in +the City of New York. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/doc/source/mod_atom.rst b/doc/source/mod_atom.rst new file mode 100644 index 00000000..04c98935 --- /dev/null +++ b/doc/source/mod_atom.rst @@ -0,0 +1,7 @@ +diffpy.structure.atom +===================== + +.. automodule:: diffpy.structure.atom + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/mod_lattice.rst b/doc/source/mod_lattice.rst new file mode 100644 index 00000000..d49f8cf3 --- /dev/null +++ b/doc/source/mod_lattice.rst @@ -0,0 +1,7 @@ +diffpy.structure.lattice +======================== + +.. automodule:: diffpy.structure.lattice + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/mod_spacegroup.rst b/doc/source/mod_spacegroup.rst new file mode 100644 index 00000000..0bef7c3f --- /dev/null +++ b/doc/source/mod_spacegroup.rst @@ -0,0 +1,7 @@ +diffpy.structure.spacegroupmod +============================== + +.. automodule:: diffpy.structure.spacegroupmod + :members: + :undoc-members: + :special-members: __call__, __eq__ diff --git a/doc/source/package.rst b/doc/source/package.rst new file mode 100644 index 00000000..4179f8e3 --- /dev/null +++ b/doc/source/package.rst @@ -0,0 +1,130 @@ +:tocdepth: 2 + +Package API +########### + + +Submodules +========== + +.. toctree:: + :titlesonly: + + mod_atom + mod_lattice + mod_spacegroup + diffpy.structure.parsers + diffpy.structure.apps + diffpy.structure.expansion + + +diffpy.structure +================ + +.. module:: diffpy.structure + +The top-level diffpy.structure module provides the following objects. + + +Functions +--------- + +.. autofunction:: loadStructure + + +Classes +------- + +:py:class:`~atom.Atom` + describes one atom site in the structure - its type, position, + displacement parameters and so forth. + +:py:class:`~lattice.Lattice` + depicts general coordinate system and associated operations. + +:py:class:`~structure.Structure` + collection of :class:`!Atom` objects that form the structure together + with associated :py:class:`!Lattice`. + + +Exceptions +---------- + +.. autoclass:: StructureFormatError + +.. autoclass:: LatticeError + +.. autoclass:: SymmetryError + + +diffpy.structure.spacegroups +============================ + +.. automodule:: diffpy.structure.spacegroups + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.structureerrors +================================ + +.. automodule:: diffpy.structure.structureerrors + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.symmetryutilities +================================== + +.. automodule:: diffpy.structure.symmetryutilities + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.mmlibspacegroups +================================= + +.. automodule:: diffpy.structure.mmlibspacegroups + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.pdffitstructure +================================ + +.. automodule:: diffpy.structure.pdffitstructure + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.sgtbxspacegroups +================================= + +.. automodule:: diffpy.structure.sgtbxspacegroups + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.structure +========================== + +.. automodule:: diffpy.structure.structure + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.utils +====================== + +.. automodule:: diffpy.structure.utils + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.version +======================== + +.. automodule:: diffpy.structure.version + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/release.rst b/doc/source/release.rst new file mode 100644 index 00000000..27cd0cc9 --- /dev/null +++ b/doc/source/release.rst @@ -0,0 +1,5 @@ +:tocdepth: -1 + +.. index:: release notes + +.. include:: ../../CHANGELOG.rst diff --git a/news/TEMPLATE.rst b/news/TEMPLATE.rst new file mode 100644 index 00000000..790d30b1 --- /dev/null +++ b/news/TEMPLATE.rst @@ -0,0 +1,23 @@ +**Added:** + +* + +**Changed:** + +* + +**Deprecated:** + +* + +**Removed:** + +* + +**Fixed:** + +* + +**Security:** + +* diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..73f92e1b --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,72 @@ +[build-system] +requires = ["setuptools>=62.0", "setuptools-git-versioning<2"] +build-backend = "setuptools.build_meta" + +[project] +name = "diffpy.structure" +dynamic=['version'] +authors = [ + { name="Simon J.L. Billinge group", email="simon.billinge@gmail.com" }, +] +maintainers = [ + { name="Simon J.L. Billinge group", email="simon.billinge@gmail.com" }, +] +description = "Crystal structure container and parsers for structure formats." +keywords = ['diffpy', 'crystal structure data storage CIF PDB'] +readme = "README.rst" +requires-python = ">=3.10" +classifiers = [ + 'Development Status :: 5 - Production/Stable', + 'Environment :: Console', + 'Intended Audience :: Developers', + 'Intended Audience :: Science/Research', + 'License :: OSI Approved :: BSD License', + 'Operating System :: MacOS :: MacOS X', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: POSIX', + 'Operating System :: Unix', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Topic :: Scientific/Engineering :: Physics', + 'Topic :: Scientific/Engineering :: Chemistry', +] + +[project.urls] +Homepage = "https://github.com/diffpy/diffpy.structure/" +Issues = "https://github.com/diffpy/diffpy.structure/issues/" + +[tool.setuptools-git-versioning] +enabled = true +template = "{tag}" +dev_template = "{tag}" +dirty_template = "{tag}" + +[tool.setuptools.packages.find] +where = ["src"] # list of folders that contain the packages (["."] by default) +include = ["*"] # package names should match these glob patterns (["*"] by default) +exclude = ["diffpy.structure.tests*"] # exclude packages matching these glob patterns (empty by default) +namespaces = false # to disable scanning PEP 420 namespaces (true by default) + +[tool.black] +line-length = 115 +include = '\.pyi?$' +exclude = ''' +/( + \.git + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | \.rst + | \.txt + | _build + | buck-out + | build + | dist + + # The following are specific to Black, you probably don't want those. + | blib2to3 + | tests/data +)/ +''' diff --git a/requirements/README.txt b/requirements/README.txt new file mode 100644 index 00000000..dc34909d --- /dev/null +++ b/requirements/README.txt @@ -0,0 +1,11 @@ +# YOU MAY DELETE THIS FILE AFTER SETTING UP DEPENDENCIES! +# +# This directory is where you should place your project dependencies. +# "pip.txt" should contain all required packages not available on conda. +# All other files should contain only packages available to download from conda. +# build.txt should contain all packages required to build (not run) the project. +# run.txt should contain all packages (including optional packages) required for a user to run the program. +# test.txt should contain all packages required for the testing suite and to ensure all tests pass. +# docs.txt should contain all packages required for building the package documentation page. +# +# YOU MAY DELETE THIS FILE AFTER SETTING UP DEPENDENCIES! diff --git a/requirements/build.txt b/requirements/build.txt new file mode 100644 index 00000000..f72d870d --- /dev/null +++ b/requirements/build.txt @@ -0,0 +1,2 @@ +python +setuptools diff --git a/requirements/docs.txt b/requirements/docs.txt new file mode 100644 index 00000000..ab17b1c8 --- /dev/null +++ b/requirements/docs.txt @@ -0,0 +1,4 @@ +sphinx +sphinx_rtd_theme +doctr +m2r diff --git a/requirements/pip.txt b/requirements/pip.txt new file mode 100644 index 00000000..e69de29b diff --git a/requirements/run.txt b/requirements/run.txt new file mode 100644 index 00000000..e69de29b diff --git a/requirements/test.txt b/requirements/test.txt new file mode 100644 index 00000000..6f9ccf84 --- /dev/null +++ b/requirements/test.txt @@ -0,0 +1,5 @@ +flake8 +pytest +codecov +coverage +pytest-env diff --git a/src/diffpy/structure/tests/conftest.py b/src/diffpy/structure/tests/conftest.py new file mode 100644 index 00000000..e3b63139 --- /dev/null +++ b/src/diffpy/structure/tests/conftest.py @@ -0,0 +1,19 @@ +import json +from pathlib import Path + +import pytest + + +@pytest.fixture +def user_filesystem(tmp_path): + base_dir = Path(tmp_path) + home_dir = base_dir / "home_dir" + home_dir.mkdir(parents=True, exist_ok=True) + cwd_dir = base_dir / "cwd_dir" + cwd_dir.mkdir(parents=True, exist_ok=True) + + home_config_data = {"username": "home_username", "email": "home@email.com"} + with open(home_dir / "diffpyconfig.json", "w") as f: + json.dump(home_config_data, f) + + yield tmp_path From 17acda0ee3b1ee2d68129e8b341dff1a66c4ee92 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Sun, 30 Jun 2024 02:46:51 -0400 Subject: [PATCH 02/20] remove extra manual/source --- doc/manual/source/conf.py | 223 ------------------ doc/manual/source/diffpy.structure.apps.rst | 30 --- .../source/diffpy.structure.expansion.rst | 38 --- .../source/diffpy.structure.parsers.rst | 94 -------- doc/manual/source/index.rst | 73 ------ doc/manual/source/license.rst | 142 ----------- doc/manual/source/mod_atom.rst | 7 - doc/manual/source/mod_lattice.rst | 7 - doc/manual/source/mod_spacegroup.rst | 7 - doc/manual/source/package.rst | 130 ---------- doc/manual/source/release.rst | 3 - 11 files changed, 754 deletions(-) delete mode 100644 doc/manual/source/conf.py delete mode 100644 doc/manual/source/diffpy.structure.apps.rst delete mode 100644 doc/manual/source/diffpy.structure.expansion.rst delete mode 100644 doc/manual/source/diffpy.structure.parsers.rst delete mode 100644 doc/manual/source/index.rst delete mode 100644 doc/manual/source/license.rst delete mode 100644 doc/manual/source/mod_atom.rst delete mode 100644 doc/manual/source/mod_lattice.rst delete mode 100644 doc/manual/source/mod_spacegroup.rst delete mode 100644 doc/manual/source/package.rst delete mode 100644 doc/manual/source/release.rst diff --git a/doc/manual/source/conf.py b/doc/manual/source/conf.py deleted file mode 100644 index 33d28b8d..00000000 --- a/doc/manual/source/conf.py +++ /dev/null @@ -1,223 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# diffpy.structure documentation build configuration file, created by -# sphinx-quickstart on Mon Mar 27 11:16:48 2017. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. - -import os -import sys -import time -import importlib - -sys.path.insert(0, os.path.abspath('../../..')) - -# abbreviations -ab_authors = 'Pavol Juhás, Christopher L. Farrow, Simon J.L. Billinge group' - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# -needs_sphinx = '1.5' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.napoleon', - 'sphinx.ext.intersphinx', -# 'sphinx.ext.coverage', -# 'sphinx.ext.doctest', - 'm2r', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = ['.rst', '.md'] - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = 'diffpy.structure' -copyright = '%Y, Brookhaven National Laboratory' -author = ab_authors - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -from setup import versiondata -fullversion = versiondata.get('DEFAULT', 'version') -# The short X.Y version. -version = ''.join(fullversion.split('.post')[:1]) -# The full version, including alpha/beta/rc tags. -release = fullversion - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -today_seconds = versiondata.getint('DEFAULT', 'timestamp') -today = time.strftime('%B %d, %Y', time.localtime(today_seconds)) -year = today.split()[-1] -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' -# substitute YEAR in the copyright string -copyright = copyright.replace('%Y', year) - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None -default_role = 'any' - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True -add_function_parentheses = False - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True -add_module_names = False - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -modindex_common_prefix = ['diffpy.structure'] - -# Display all warnings for missing links. -nitpicky = True - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'sphinx_py3doc_enhanced_theme' -tmod = importlib.import_module(html_theme) -html_theme_path = [tmod.get_html_theme_path()] - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -html_theme_options = { - 'collapsiblesidebar' : 'true', - 'navigation_with_keys' : 'true', -} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] - - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = 'diffpystructuredoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'diffpy.structure_manual.tex', 'diffpy.structure Documentation', - ab_authors, 'manual'), -] - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'diffpy.structure', 'diffpy.structure Documentation', - ab_authors.split(', '), 1) -] - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'diffpy.structure', 'diffpy.structure Documentation', - ab_authors, 'diffpy.structure', 'One line description of project.', - 'Miscellaneous'), -] - - -# -- intersphinx configuration -------------------------------------------- - -intersphinx_mapping = { - 'python' : ('https://docs.python.org/3.10', None), - 'numpy' : ('https://docs.scipy.org/doc/numpy', None), -} - -# -- autodoc configuration ------------------------------------------------ -# See http://www.sphinx-doc.org/en/stable/ext/autodoc.html - -autodoc_member_order = 'bysource' - - -# -- napoleon configuration ----------------------------------------------- -# See https://sphinxcontrib-napoleon.readthedocs.io. - -napoleon_google_docstring = False -napoleon_numpy_docstring = True -napoleon_use_param = False -napoleon_use_rtype = False diff --git a/doc/manual/source/diffpy.structure.apps.rst b/doc/manual/source/diffpy.structure.apps.rst deleted file mode 100644 index e17b2d77..00000000 --- a/doc/manual/source/diffpy.structure.apps.rst +++ /dev/null @@ -1,30 +0,0 @@ -diffpy.structure.apps package -============================= - -Submodules ----------- - -diffpy.structure.apps.anyeye module ------------------------------------ - -.. automodule:: diffpy.structure.apps.anyeye - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.apps.transtru module -------------------------------------- - -.. automodule:: diffpy.structure.apps.transtru - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: diffpy.structure.apps - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/manual/source/diffpy.structure.expansion.rst b/doc/manual/source/diffpy.structure.expansion.rst deleted file mode 100644 index 9e9f8f53..00000000 --- a/doc/manual/source/diffpy.structure.expansion.rst +++ /dev/null @@ -1,38 +0,0 @@ -diffpy.structure.expansion package -================================== - -Submodules ----------- - -diffpy.structure.expansion.makeellipsoid module ------------------------------------------------ - -.. automodule:: diffpy.structure.expansion.makeellipsoid - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.expansion.shapeutils module --------------------------------------------- - -.. automodule:: diffpy.structure.expansion.shapeutils - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.expansion.supercell_mod module ------------------------------------------------ - -.. automodule:: diffpy.structure.expansion.supercell_mod - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: diffpy.structure.expansion - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/manual/source/diffpy.structure.parsers.rst b/doc/manual/source/diffpy.structure.parsers.rst deleted file mode 100644 index 3ddc7d14..00000000 --- a/doc/manual/source/diffpy.structure.parsers.rst +++ /dev/null @@ -1,94 +0,0 @@ -diffpy.structure.parsers package -================================ - -Submodules ----------- - -diffpy.structure.parsers.p_auto module --------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_auto - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.p_cif module -------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_cif - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.p_discus module ----------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_discus - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.p_pdb module -------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_pdb - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.p_pdffit module ----------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_pdffit - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.p_rawxyz module ----------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_rawxyz - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.p_xcfg module --------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_xcfg - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.p_xyz module -------------------------------------- - -.. automodule:: diffpy.structure.parsers.p_xyz - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.parser_index_mod module ------------------------------------------------- - -.. automodule:: diffpy.structure.parsers.parser_index_mod - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.parsers.structureparser module ------------------------------------------------ - -.. automodule:: diffpy.structure.parsers.structureparser - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: diffpy.structure.parsers - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/manual/source/index.rst b/doc/manual/source/index.rst deleted file mode 100644 index 520f8cb5..00000000 --- a/doc/manual/source/index.rst +++ /dev/null @@ -1,73 +0,0 @@ -######################################################################## -diffpy.structure documentation -######################################################################## - -diffpy.structure - simple storage and manipulation of crystal structures - -| Software version |release|. -| Last updated |today|. - -The diffpy.structure package provides objects for storing atomic -coordinates, displacement parameters and other crystal structure data. -diffpy.structure supports import and export of structure data in several -structure formats such as CIF, PDB, xyz. It provides conversion -between fractional and absolute Cartesian coordinates, functions for -symmetry expansion from asymmetric unit and generation of symmetry -constraints for atom positions and displacement parameters. diffpy.structure -includes definitions of all space groups in over 500 symmetry settings. - - -Authors -======================================================================== - -diffpy.structure is developed by members of the Billinge Group at -Columbia University and at Brookhaven National Laboratory including -Pavol Juhás, Christopher L. Farrow, Xiaohao Yang, Simon J.L. Billinge. - -For a detailed list of contributors see -https://github.com/diffpy/diffpy.structure/graphs/contributors. - - -Acknowledgments -======================================================================== - -Space group codes in *spacegroupmod.py* and *mmlibspacegroups.py* -originate from the pymmlib project, http://pymmlib.sourceforge.net. -Less common settings of space groups were generating using the -Computational Crystallography Toolbox, -http://cctbx.sourceforge.net. - - -.. index:: citation, reference - -Reference -======================================================================== - -If you use this program for a scientific research that leads -to publication, we ask that you acknowledge use of the program -by citing the following paper in your publication: - - P. Juhás, C. L. Farrow, X. Yang, K. R. Knox and S. J. L. Billinge, - `Complex modeling: a strategy and software program for combining - multiple information sources to solve ill posed structure and - nanostructure inverse problems - `__, - *Acta Crystallogr. A* **71**, 562-568 (2015). - - -Table of contents -======================================================================== - -.. toctree:: - :titlesonly: - - license - release - package - - -Indices -======================================================================== - -* :ref:`genindex` -* :ref:`search` diff --git a/doc/manual/source/license.rst b/doc/manual/source/license.rst deleted file mode 100644 index 7d78e94f..00000000 --- a/doc/manual/source/license.rst +++ /dev/null @@ -1,142 +0,0 @@ -.. index:: license - -License -####### - -OPEN SOURCE LICENSE AGREEMENT -============================= - -| Copyright (c) 2009-2011, University of Tennessee -| Copyright (c) 1989, 1991 Free Software Foundation, Inc. -| Copyright (c) 2006, The Regents of the University of California through - Lawrence Berkeley National Laboratory -| Copyright (c) 2014, Australian Synchrotron Research Program Inc., ("ASRP") -| Copyright (c) 2006-2007, Board of Trustees of Michigan State University -| Copyright (c) 2008-2012, The Trustees of Columbia University in - the City of New York -| Copyright (c) 2014-2019, Brookhaven Science Associates, - Brookhaven National Laboratory - - -The "DiffPy-CMI" is distributed subject to the following license conditions: - - -SOFTWARE LICENSE AGREEMENT -========================== - -Software: **DiffPy-CMI** - - -(1) The "Software", below, refers to the aforementioned DiffPy-CMI (in either -source code, or binary form and accompanying documentation). - -Part of the software was derived from the DANSE, ObjCryst++ (with permission), -PyCifRW, Python periodictable, CCTBX, and SasView open source projects, of -which the original Copyrights are contained in each individual file. - -Each licensee is addressed as "you" or "Licensee." - - -(2) The copyright holders shown above and their third-party Licensors hereby -grant licensee a royalty-free nonexclusive license, subject to the limitations -stated herein and U.S. Government license rights. - - -(3) You may modify and make a copy or copies of the software for use within -your organization, if you meet the following conditions: - - (a) Copies in source code must include the copyright notice and this - software license agreement. - - (b) Copies in binary form must include the copyright notice and this - Software License Agreement in the documentation and/or other materials - provided with the copy. - - -(4) You may modify a copy or copies of the Software or any portion of it, thus -forming a work based on the Software, and distribute copies of such work -outside your organization, if you meet all of the following conditions: - - (a) Copies in source code must include the copyright notice and this - Software License Agreement; - - (b) Copies in binary form must include the copyright notice and this - Software License Agreement in the documentation and/or other materials - provided with the copy; - - (c) Modified copies and works based on the Software must carry prominent - notices stating that you changed specified portions of the Software. - - (d) Neither the name of Brookhaven Science Associates or Brookhaven - National Laboratory nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - written permission. - - -(5) Portions of the Software resulted from work developed under a U.S. -Government contract and are subject to the following license: -The Government is granted for itself and others acting on its behalf a -paid-up, nonexclusive, irrevocable worldwide license in this computer software -to reproduce, prepare derivative works, and perform publicly and display -publicly. - - -(6) WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT -WARRANTY OF ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY -LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND -THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL -LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF -THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE SOFTWARE WOULD NOT INFRINGE -PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION -UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED. - - -(7) LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR -THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF -ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL, -CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE, INCLUDING -BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, -WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT (INCLUDING -NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS -BEEN WARNED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGES. - - -Brookhaven National Laboratory Notice -===================================== - -Acknowledgment of sponsorship ------------------------------ - -This software was produced by the Brookhaven National Laboratory, under -Contract DE-AC02-98CH10886 with the Department of Energy. - - -Government disclaimer of liability ----------------------------------- - -Neither the United States nor the United States Department of Energy, nor -any of their employees, makes any warranty, express or implied, or assumes -any legal liability or responsibility for the accuracy, completeness, or -usefulness of any data, apparatus, product, or process disclosed, or -represents that its use would not infringe privately owned rights. - - -Brookhaven disclaimer of liability ----------------------------------- - -Brookhaven National Laboratory makes no representations or warranties, -express or implied, nor assumes any liability for the use of this software. - - -Maintenance of notice ---------------------- - -In the interest of clarity regarding the origin and status of this -software, Brookhaven National Laboratory requests that any recipient of it -maintain this notice affixed to any distribution by the recipient that -contains a copy or derivative of this software. - - -.. rubric:: END OF LICENSE diff --git a/doc/manual/source/mod_atom.rst b/doc/manual/source/mod_atom.rst deleted file mode 100644 index 04c98935..00000000 --- a/doc/manual/source/mod_atom.rst +++ /dev/null @@ -1,7 +0,0 @@ -diffpy.structure.atom -===================== - -.. automodule:: diffpy.structure.atom - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/manual/source/mod_lattice.rst b/doc/manual/source/mod_lattice.rst deleted file mode 100644 index d49f8cf3..00000000 --- a/doc/manual/source/mod_lattice.rst +++ /dev/null @@ -1,7 +0,0 @@ -diffpy.structure.lattice -======================== - -.. automodule:: diffpy.structure.lattice - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/manual/source/mod_spacegroup.rst b/doc/manual/source/mod_spacegroup.rst deleted file mode 100644 index 0bef7c3f..00000000 --- a/doc/manual/source/mod_spacegroup.rst +++ /dev/null @@ -1,7 +0,0 @@ -diffpy.structure.spacegroupmod -============================== - -.. automodule:: diffpy.structure.spacegroupmod - :members: - :undoc-members: - :special-members: __call__, __eq__ diff --git a/doc/manual/source/package.rst b/doc/manual/source/package.rst deleted file mode 100644 index 4179f8e3..00000000 --- a/doc/manual/source/package.rst +++ /dev/null @@ -1,130 +0,0 @@ -:tocdepth: 2 - -Package API -########### - - -Submodules -========== - -.. toctree:: - :titlesonly: - - mod_atom - mod_lattice - mod_spacegroup - diffpy.structure.parsers - diffpy.structure.apps - diffpy.structure.expansion - - -diffpy.structure -================ - -.. module:: diffpy.structure - -The top-level diffpy.structure module provides the following objects. - - -Functions ---------- - -.. autofunction:: loadStructure - - -Classes -------- - -:py:class:`~atom.Atom` - describes one atom site in the structure - its type, position, - displacement parameters and so forth. - -:py:class:`~lattice.Lattice` - depicts general coordinate system and associated operations. - -:py:class:`~structure.Structure` - collection of :class:`!Atom` objects that form the structure together - with associated :py:class:`!Lattice`. - - -Exceptions ----------- - -.. autoclass:: StructureFormatError - -.. autoclass:: LatticeError - -.. autoclass:: SymmetryError - - -diffpy.structure.spacegroups -============================ - -.. automodule:: diffpy.structure.spacegroups - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.structureerrors -================================ - -.. automodule:: diffpy.structure.structureerrors - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.symmetryutilities -================================== - -.. automodule:: diffpy.structure.symmetryutilities - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.mmlibspacegroups -================================= - -.. automodule:: diffpy.structure.mmlibspacegroups - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.pdffitstructure -================================ - -.. automodule:: diffpy.structure.pdffitstructure - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.sgtbxspacegroups -================================= - -.. automodule:: diffpy.structure.sgtbxspacegroups - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.structure -========================== - -.. automodule:: diffpy.structure.structure - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.utils -====================== - -.. automodule:: diffpy.structure.utils - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.version -======================== - -.. automodule:: diffpy.structure.version - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/manual/source/release.rst b/doc/manual/source/release.rst deleted file mode 100644 index 7ec4f81d..00000000 --- a/doc/manual/source/release.rst +++ /dev/null @@ -1,3 +0,0 @@ -.. index:: release notes - -.. mdinclude:: ../../../CHANGELOG.md From bde7ff7682f75967c29a240fd2bba11b5038a7dd Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Sun, 30 Jun 2024 02:47:49 -0400 Subject: [PATCH 03/20] .codecov.yml, .gitignore, rever.xsh --- .codecov.yml | 36 ++++++++++++++++++++-- .gitignore | 86 +++++++++++++++++++++++++++++++++++++++++----------- rever.xsh | 14 --------- 3 files changed, 103 insertions(+), 33 deletions(-) delete mode 100644 rever.xsh diff --git a/.codecov.yml b/.codecov.yml index 86671410..04dd6510 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,2 +1,34 @@ -fixes: - - ".*/site-packages/::src/" +# codecov can find this file anywhere in the repo, so we don't need to clutter +# the root folder. +#comment: false + +codecov: + notify: + require_ci_to_pass: no + +coverage: + status: + patch: + default: + target: '70' + if_no_uploads: error + if_not_found: success + if_ci_failed: failure + project: + default: false + library: + target: auto + if_no_uploads: error + if_not_found: success + if_ci_failed: error + paths: '!*/tests/.*' + + tests: + target: 97.9% + paths: '*/tests/.*' + if_not_found: success + +flags: + tests: + paths: + - tests/ diff --git a/.gitignore b/.gitignore index a3fed051..a25212ea 100644 --- a/.gitignore +++ b/.gitignore @@ -1,43 +1,95 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ *.py[cod] +*$py.class # C extensions *.so -# Packages -*.egg -*.egg-info -dist -build -eggs -parts -bin -var -sdist -temp -develop-eggs +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +venv/ +*.egg-info/ .installed.cfg -lib -lib64 -tags +*.egg +bin/ +temp/ +tags/ errors.err +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + # Installer logs pip-log.txt +pip-delete-this-directory.txt MANIFEST # Unit test / coverage reports +htmlcov/ +.tox/ .coverage -.tox +.coverage.* +.cache nosetests.xml +coverage.xml +*,cover +.hypothesis/ # Translations *.mo +*.pot # Mr Developer .mr.developer.cfg .project .pydevproject -.settings + +# Django stuff: +*.log + +# Sphinx documentation +docs/build/ +docs/source/generated/ + +# pytest +.pytest_cache/ + +# PyBuilder +target/ + +# Editor files +# mac +.DS_Store +*~ + +# vim +*.swp +*.swo + +# pycharm +.idea/ + +# VSCode +.vscode/ + +# Ipython Notebook +.ipynb_checkpoints # version information setup.cfg diff --git a/rever.xsh b/rever.xsh deleted file mode 100644 index dda2765d..00000000 --- a/rever.xsh +++ /dev/null @@ -1,14 +0,0 @@ -$PROJECT = 'diffpy.structure' -$ACTIVITIES = [ - 'tag', # Creates a tag for the new version number - 'push_tag', # Pushes the tag up to the $TAG_REMOTE - 'pypi', # Sends the package to pypi - 'ghrelease' # Creates a Github release entry for the new tag - ] -$PUSH_TAG_REMOTE = 'git@github.com:diffpy/diffpy.structure.git' # Repo to push tags to -$GITHUB_ORG = 'diffpy' # Github org for Github releases and conda-forge -$GITHUB_REPO = 'diffpy.structure' # Github repo for Github releases and conda-forge -$GHRELEASE_PREPEND = """See [CHANGELOG.md](CHANGELOG.md) for detailed release notes. - -The release is also available at [PyPI](https://pypi.org/project/diffpy.structure/) and [Conda](https://anaconda.org/conda-forge/diffpy.structure). -""" # release message From 15e0c079bc4edfcae38aee724127a8c64a221137 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Sun, 30 Jun 2024 02:51:19 -0400 Subject: [PATCH 04/20] AUTHORS.rst, /diffpy/__init__.py, /tests/debug.py --- AUTHORS.rst | 5 ++++- AUTHORS.txt | 10 ---------- src/diffpy/__init__.py | 22 ++++++++++------------ src/diffpy/structure/tests/debug.py | 23 ++++++++++++++--------- 4 files changed, 28 insertions(+), 32 deletions(-) delete mode 100644 AUTHORS.txt diff --git a/AUTHORS.rst b/AUTHORS.rst index 7f4c6d8e..9f6a419f 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -1,7 +1,10 @@ Authors ======= -Billinge Group and community contibutors. +Pavol Juhas, +Christopher L. Farrow, +Xiaohao Yang, +Simon J.L. Billinge Contributors ------------ diff --git a/AUTHORS.txt b/AUTHORS.txt deleted file mode 100644 index 2d8753c6..00000000 --- a/AUTHORS.txt +++ /dev/null @@ -1,10 +0,0 @@ -Authors: - -Pavol Juhas, -Christopher L. Farrow, -Xiaohao Yang, -Simon J.L. Billinge - -Contributors: - -https://github.com/diffpy/diffpy.structure/graphs/contributors diff --git a/src/diffpy/__init__.py b/src/diffpy/__init__.py index 0e070285..3e7952ae 100644 --- a/src/diffpy/__init__.py +++ b/src/diffpy/__init__.py @@ -1,26 +1,24 @@ #!/usr/bin/env python ############################################################################## # -# diffpy by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2008 trustees of the Michigan State University. -# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. # -# File coded by: Pavol Juhas +# File coded by: Billinge Group members and community contributors. # -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE_DANSE.txt for license information. +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.structure/graphs/contributors +# +# See LICENSE.rst for license information. # ############################################################################## -"""diffpy - tools for structure analysis by diffraction. - -Blank namespace package. -""" +"""Blank namespace package for module diffpy.""" from pkgutil import extend_path -__path__ = extend_path(__path__, __name__) +__path__ = extend_path(__path__, __name__) # End of file + diff --git a/src/diffpy/structure/tests/debug.py b/src/diffpy/structure/tests/debug.py index 221091de..36d78c9e 100644 --- a/src/diffpy/structure/tests/debug.py +++ b/src/diffpy/structure/tests/debug.py @@ -1,15 +1,15 @@ #!/usr/bin/env python ############################################################################## # -# diffpy.structure Complex Modeling Initiative -# (c) 2016 Brookhaven Science Associates, -# Brookhaven National Laboratory. -# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. # -# File coded by: Pavol Juhas +# File coded by: Billinge Group members and community contributors. # -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE.txt for license information. +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.structure/graphs/contributors +# +# See LICENSE.rst for license information. # ############################################################################## @@ -22,9 +22,14 @@ """ -if __name__ == '__main__': +if __name__ == "__main__": import sys + from diffpy.structure.tests import testsuite - pattern = sys.argv[1] if len(sys.argv) > 1 else '' + + pattern = sys.argv[1] if len(sys.argv) > 1 else "" suite = testsuite(pattern) suite.debug() + + +# End of file From e9ad4a145ab8d5be6232c98f20e0d46941b01c0e Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Sun, 30 Jun 2024 02:58:31 -0400 Subject: [PATCH 05/20] README --- README.rst | 154 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 88 insertions(+), 66 deletions(-) diff --git a/README.rst b/README.rst index 3e0538e7..8c6adad8 100644 --- a/README.rst +++ b/README.rst @@ -1,14 +1,41 @@ -.. image:: https://travis-ci.org/diffpy/diffpy.structure.svg?branch=master - :target: https://travis-ci.org/diffpy/diffpy.structure +|Icon| |title|_ +=============== -.. image:: https://codecov.io/gh/diffpy/diffpy.structure/branch/master/graph/badge.svg - :target: https://codecov.io/gh/diffpy/diffpy.structure +.. |title| replace:: diffpy.structure +.. _title: https://diffpy.github.io/diffpy.structure +.. |Icon| image:: https://avatars.githubusercontent.com/diffpy + :target: https://diffpy.github.io/diffpy.structure + :height: 100px -diffpy.structure -======================================================================== +|PyPi| |Forge| |PythonVersion| |PR| -storage and manipulation of crystal structure data +|CI| |Codecov| |Black| |Tracking| + +.. |Black| image:: https://img.shields.io/badge/code_style-black-black + :target: https://github.com/psf/black + +.. |CI| image:: https://github.com/diffpy/diffpy.structure/actions/workflows/main.yml/badge.svg + :target: https://github.com/diffpy/diffpy.structure/actions/workflows/main.yml + +.. |Codecov| image:: https://codecov.io/gh/diffpy/diffpy.structure/branch/main/graph/badge.svg + :target: https://codecov.io/gh/diffpy/diffpy.structure + +.. |Forge| image:: https://img.shields.io/conda/vn/conda-forge/diffpy.structure + :target: https://anaconda.org/conda-forge/diffpy.structure + +.. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff + +.. |PyPi| image:: https://img.shields.io/pypi/v/diffpy.structure + :target: https://pypi.org/project/diffpy.structure/ + +.. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.structure + :target: https://pypi.org/project/diffpy.structure/ + +.. |Tracking| image:: https://img.shields.io/badge/issue_tracking-github-blue + :target: https://github.com/diffpy/diffpy.structure/issues + +Crystal structure container and parsers for structure formats. The diffpy.structure package provides objects for storing atomic coordinates, displacement parameters and other crystal structure data. @@ -20,94 +47,89 @@ of symmetry constraints for atom positions and displacement parameters. diffpy.structure includes definitions of all space groups in over 500 symmetry settings. -To learn more about diffpy.structure library see the -user manual at http://diffpy.github.io/diffpy.structure. +For more information about the diffpy.structure library, please consult our `online documentation `_. +Citation +-------- -REQUIREMENTS ------------------------------------------------------------------------- +If you use diffpy.structure in a scientific publication, we would like you to cite this package as -The diffpy.structure package requires Python 3.7 or later or 2.7 and -the following software: + diffpy.structure Package, https://github.com/diffpy/diffpy.structure -* ``setuptools`` - software distribution tools for Python -* ``NumPy`` - numerical mathematics and fast array operations for Python +Installation +------------ -We recommend to use `Anaconda Python `_ -as it allows to install all software dependencies together with -diffpy.structure. For other Python distributions it is necessary to -install the required software separately. As an example on Ubuntu -Linux the required software can be installed with :: +The preferred method is to use `Miniconda Python +`_ +and install from the "conda-forge" channel of Conda packages. - sudo aptitude install python3-setuptools python3-numpy +To add "conda-forge" to the conda channels, run the following in a terminal. :: -diffpy.structure also uses the -`PyCifRW `_ -library, which is automatically deployed during the -installation process. + conda config --add channels conda-forge +We want to install our packages in a suitable conda environment. +The following creates and activates a new environment named ``diffpy.structure_env`` :: -INSTALLATION ------------------------------------------------------------------------- + conda create -n diffpy.structure_env python=3 + conda activate diffpy.structure_env -The preferred method is to use Anaconda Python and install from the -"diffpy" channel of Anaconda packages :: +Then, to fully install ``diffpy.structure`` in our active environment, run :: - conda config --add channels diffpy - conda install diffpy.structure + conda install diffpy.structure -diffpy.structure is also included in the "diffpy-cmi" collection -of packages for structure analysis :: +Another option is to use ``pip`` to download and install the latest release from +`Python Package Index `_. +To install using ``pip`` into your ``diffpy.structure_env`` environment, we will also have to install dependencies :: - conda install diffpy-cmi + pip install -r https://raw.githubusercontent.com/diffpy/diffpy.structure/main/requirements/run.txt -Another installation option is to use ``easy_install`` to download and -install the latest release from -`Python Package Index `_ :: +and then install the package :: - easy_install diffpy.structure + pip install diffpy.structure -If you prefer to install from sources, navigate to the source archive -directory and run :: +If you prefer to install from sources, after installing the dependencies, obtain the source archive from +`GitHub `_. Once installed, ``cd`` into your ``diffpy.structure`` directory +and run the following :: - python setup.py install + pip install . -You may need to use ``sudo`` with system Python so it is allowed to -copy files to system directories. If sudo is not available, check -the usage info from ``python setup.py install --help`` for options to -install to user-writable locations. The installation integrity can be -verified by changing to the HOME directory and running :: +Support and Contribute +---------------------- - python -m diffpy.structure.tests.run +`Diffpy user group `_ is the discussion forum for general questions and discussions about the use of diffpy.structure. Please join the diffpy.structure users community by joining the Google group. The diffpy.structure project welcomes your expertise and enthusiasm! +If you see a bug or want to request a feature, please `report it as an issue `_ and/or `submit a fix as a PR `_. You can also post it to the `Diffpy user group `_. -DEVELOPMENT ------------------------------------------------------------------------- +Feel free to fork the project and contribute. To install diffpy.structure +in a development mode, with its sources being directly used by Python +rather than copied to a package directory, use the following in the root +directory :: -diffpy.structure is an open-source software developed as a part of the -DiffPy-CMI complex modeling initiative at the Brookhaven National -Laboratory. The diffpy.structure sources are hosted at -https://github.com/diffpy/diffpy.structure. + pip install -e . -Feel free to fork the project and contribute. To install diffpy.structure -in a development mode, where the sources are directly used by Python -rather than copied to a system directory, use :: +To ensure code quality and to prevent accidental commits into the default branch, please set up the use of our pre-commit +hooks. - python setup.py develop --user +1. Install pre-commit in your working environment by running ``conda install pre-commit``. +2. Initialize pre-commit (one time only) ``pre-commit install``. -ACKNOWLEDGEMENT ------------------------------------------------------------------------- +Thereafter your code will be linted by black and isort and checked against flake8 before you can commit. +If it fails by black or isort, just rerun and it should pass (black and isort will modify the files so should +pass after they are modified). If the flake8 test fails please see the error messages and fix them manually before +trying to commit again. -Space group codes in *spacegroupmod.py* and *mmlibspacegroups.py* -originate from the pymmlib project, http://pymmlib.sourceforge.net. +Improvements and fixes are always appreciated. +Before contribuing, please read our `Code of Conduct `_. -CONTACTS ------------------------------------------------------------------------- +Acknowledgement +--------------- -For more information on diffpy.structure please visit the project web-page +Space group codes in *spacegroupmod.py* and *mmlibspacegroups.py* +originate from the `pymmlib project `_. -http://www.diffpy.org/ +Contact +------- -or email Prof. Simon Billinge at sb2896@columbia.edu. +For more information on diffpy.structure please visit the project `web-page `_ or email Prof. Simon Billinge at sb2896@columbia.edu. From f3090c8a17e825c5dbc0e9855dc4a3b84c4718e1 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Sun, 30 Jun 2024 03:05:50 -0400 Subject: [PATCH 06/20] CHANGELOG --- CHANGELOG.md | 106 ------------------------------------------------ CHANGELOG.rst | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 106 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 83ce9191..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,106 +0,0 @@ -# Release notes - -## Version 3.1.0 – 2022-12-04 - -### Added - -- Compatibility with Python 3.10, 3.9, 3.8 - -### Changed - -### Deprecated - -### Removed - -- Remove the support for Python 3.5, 3.6. - -### Fixed - -## Version 3.0.2 - 2022-10-12 - -### Added - -- A string representation of `SpaceGroup` with key information. - -### Changed - -- Bumped minimum `PyCifRW` version to `4.4.3`. - -### Deprecated - -### Removed - -### Fixed - -- Handling of paths on Windows when using the `P_cif` parser. - -## Version 3.0.1 – 2019-06-27 - -### Added - -- Function `FindSpaceGroup` for space group lookup from its list - of symmetry operations. - -### Changed - -- Reuse existing `SpaceGroup` instance when loading a CIF file. -- Improve check of SpaceGroup identifiers in `GetSpaceGroup`. -- When loading CIF file, preset `Atom.anisotropy` according - to symmetry constraints at each site. Adhere to specific - ADP type when specified in the CIF. - -### Removed - -- Unused attribute `SpaceGroup.alt_name`. - -### Fixed - -- Fix inconsistent (`Atom`, `Structure`) pickle. Preserve `Atom` - ownership in a `Structure` after pickling and unpickling. -- Spuriously linked array-view values after `stru.xyz = 0`. -- Preserve scalar value type when setting `stru.occupancy = value`. -- Process unknown CIF occupancy "?" as an occupancy of 1. -- Incorrect `SymOp` list for spacegroup "B11m" (number 1008). - - -## Version 3.0.0 – 2019-03-11 - -Notable differences from version 1.3.5. - -### Added - -- Compatibility with Python 3.7, 3.6, 3.5 in addition to 2.7. -- Aliases for 17 non-standard space group names from cctbx. -- Support for intersphinx links to Python and NumPy documentation. -- Dependency and use of the `six` PY2/PY3 compatibility package. -- Documentation hosting at readthedocs.org. - -### Changed - -- Rename the package and all its module names to lowercase. -- Use UTF-8 encoding when writing structure files. -- Refactor parsing of XCFG format. Avoid use of generated code. -- Refactor all starred imports to explicit so they can be checked. -- Adopt napoleon style for docstrings. -- Update docstrings for `Atom`, `Lattice`, `SymOp`, `SpaceGroup`. -- Switch to platform-independent "noarch" Anaconda package. - -### Deprecated - -- Old camel case module names such as `diffpy.Structure`. -- Variable `__gitsha__` in the `version` module which was renamed - to `__git_commit__`. - -### Removed - -- Unused exception `IsotropyError`. -- Unused class `BRAtomsStructure` and associated parser. - -### Fixed - -- Loading of empty CIF files with no specified sites. -- Parsing of CIFs with `?` value for unknown displacement parameters. -- Symmetry constraint equations for ADPs so they avoid self-reference. -- Use `StructureFormatError` exception for CIF with unknown space group. -- Open files within the `with` context so they get closed when done. -- Invalid escape sequences in string values. diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 26694512..e446d478 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,3 +3,112 @@ Release Notes ============= .. current developments + +Version 3.1.0 - 2022-12-04 +-------------------------- + +**Added** + +- Compatibility with Python 3.10, 3.9, 3.8 + +**Changed** + +**Deprecated** + +**Removed** + +- Remove the support for Python 3.5, 3.6. + +**Fixed** + +Version 3.0.2 - 2022-10-12 +-------------------------- + +**Added** + +- A string representation of `SpaceGroup` with key information. + +**Changed** + +- Bumped minimum `PyCifRW` version to `4.4.3`. + +**Deprecated** + +**Removed** + +**Fixed** + +- Handling of paths on Windows when using the `P_cif` parser. + +Version 3.0.1 - 2019-06-27 +-------------------------- + +**Added** + +- Function `FindSpaceGroup` for space group lookup from its list + of symmetry operations. + +**Changed** + +- Reuse existing `SpaceGroup` instance when loading a CIF file. +- Improve check of SpaceGroup identifiers in `GetSpaceGroup`. +- When loading CIF file, preset `Atom.anisotropy` according + to symmetry constraints at each site. Adhere to specific + ADP type when specified in the CIF. + +**Removed** + +- Unused attribute `SpaceGroup.alt_name`. + +**Fixed** + +- Fix inconsistent (`Atom`, `Structure`) pickle. Preserve `Atom` + ownership in a `Structure` after pickling and unpickling. +- Spuriously linked array-view values after `stru.xyz = 0`. +- Preserve scalar value type when setting `stru.occupancy = value`. +- Process unknown CIF occupancy "?" as an occupancy of 1. +- Incorrect `SymOp` list for spacegroup "B11m" (number 1008). + + +Version 3.0.0 - 2019-03-11 +-------------------------- + +Notable differences from version 1.3.5. + +**Added** + +- Compatibility with Python 3.7, 3.6, 3.5 in addition to 2.7. +- Aliases for 17 non-standard space group names from cctbx. +- Support for intersphinx links to Python and NumPy documentation. +- Dependency and use of the `six` PY2/PY3 compatibility package. +- Documentation hosting at readthedocs.org. + +**Changed** + +- Rename the package and all its module names to lowercase. +- Use UTF-8 encoding when writing structure files. +- Refactor parsing of XCFG format. Avoid use of generated code. +- Refactor all starred imports to explicit so they can be checked. +- Adopt napoleon style for docstrings. +- Update docstrings for `Atom`, `Lattice`, `SymOp`, `SpaceGroup`. +- Switch to platform-independent "noarch" Anaconda package. + +**Deprecated** + +- Old camel case module names such as `diffpy.Structure`. +- Variable `__gitsha__` in the `version` module which was renamed + to `__git_commit__`. + +**Removed** + +- Unused exception `IsotropyError`. +- Unused class `BRAtomsStructure` and associated parser. + +**Fixed** + +- Loading of empty CIF files with no specified sites. +- Parsing of CIFs with `?` value for unknown displacement parameters. +- Symmetry constraint equations for ADPs so they avoid self-reference. +- Use `StructureFormatError` exception for CIF with unknown space group. +- Open files within the `with` context so they get closed when done. +- Invalid escape sequences in string values. From b33c8c345ea08a9514230e82a3fc5cb978d15f06 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 16:15:06 -0400 Subject: [PATCH 07/20] remove conda-recipe folder --- conda-recipe/bld.bat | 7 ---- conda-recipe/build.sh | 8 ----- conda-recipe/meta.yaml | 76 ---------------------------------------- conda-recipe/run_test.py | 4 --- 4 files changed, 95 deletions(-) delete mode 100644 conda-recipe/bld.bat delete mode 100644 conda-recipe/build.sh delete mode 100644 conda-recipe/meta.yaml delete mode 100644 conda-recipe/run_test.py diff --git a/conda-recipe/bld.bat b/conda-recipe/bld.bat deleted file mode 100644 index 0a79fa23..00000000 --- a/conda-recipe/bld.bat +++ /dev/null @@ -1,7 +0,0 @@ -"%PYTHON%" setup.py install -if errorlevel 1 exit 1 - -:: Add more build steps here, if they are necessary. - -:: See http://docs.continuum.io/conda/build.html -:: for a list of environment variables that are set during the build process. diff --git a/conda-recipe/build.sh b/conda-recipe/build.sh deleted file mode 100644 index b7920393..00000000 --- a/conda-recipe/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -$PYTHON setup.py install - -# Add more build steps here, if they are necessary. - -# See http://docs.continuum.io/conda/build.html -# for a list of environment variables that are set during the build process. diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml deleted file mode 100644 index 93c0a64f..00000000 --- a/conda-recipe/meta.yaml +++ /dev/null @@ -1,76 +0,0 @@ -{% set setupdata = load_setup_py_data() %} - -package: - name: diffpy.structure - version: {{ setupdata['version'] }} - -source: - # git_url: https://github.com/diffpy/diffpy.structure - git_url: .. - -build: - preserve_egg_dir: True - noarch: python - - # entry_points: - # Put any entry points (scripts to be generated automatically) here. The - # syntax is module:function. For example - # - # - diffpy.structure = diffpy.structure:main - # - # Would create an entry point called diffpy.structure that calls diffpy.structure.main() - - # If this is a new build for the same version, increment the build - # number. If you do not include this key, it defaults to 0. - # number: 0 - -requirements: - build: - - python >=3.5|2.7* - - setuptools - - six - - pycifrw - - run: - - python >=3.5|2.7* - - setuptools - - numpy >=1.3 - - pycifrw - - six - -test: - # Python imports - imports: - - diffpy.structure - - diffpy.structure.parsers - - diffpy.structure.apps - - diffpy.structure.expansion - - diffpy.structure.tests - # legacy imports - - diffpy.Structure - - diffpy.Structure.Parsers - - diffpy.Structure.apps - - diffpy.Structure.expansion - - diffpy.Structure.tests - - diffpy.structure.applications - - # commands: - # You can put test commands to be run here. Use this to test that the - # entry points work. - - - # You can also put a file called run_test.py in the recipe that will be run - # at test time. - - # requires: - # Put any additional test requirements here. For example - # - nose - -about: - home: https://github.com/diffpy/diffpy.structure - summary: Crystal structure container and parsers for structure formats. - license: Modified BSD License - license_file: LICENSE.txt - -# See http://docs.continuum.io/conda/build.html -# for more information about meta.yaml. diff --git a/conda-recipe/run_test.py b/conda-recipe/run_test.py deleted file mode 100644 index 270ddc42..00000000 --- a/conda-recipe/run_test.py +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env python - -import diffpy.structure.tests -assert diffpy.structure.tests.test().wasSuccessful() From ddec387dcd85a36d491071221d7a0b5c67260086 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 16:16:30 -0400 Subject: [PATCH 08/20] remove gitarchive, readthedocs, travis, setup --- .gitarchive.cfg | 5 -- .readthedocs.yml | 9 ---- .travis.yml | 113 ----------------------------------------- setup.py | 129 ----------------------------------------------- 4 files changed, 256 deletions(-) delete mode 100644 .gitarchive.cfg delete mode 100644 .readthedocs.yml delete mode 100644 .travis.yml delete mode 100755 setup.py diff --git a/.gitarchive.cfg b/.gitarchive.cfg deleted file mode 100644 index 95e1448c..00000000 --- a/.gitarchive.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[DEFAULT] -commit = $Format:%H$ -date = $Format:%ci$ -timestamp = $Format:%ct$ -refnames = $Format:%D$ diff --git a/.readthedocs.yml b/.readthedocs.yml deleted file mode 100644 index 13ef5323..00000000 --- a/.readthedocs.yml +++ /dev/null @@ -1,9 +0,0 @@ -requirements_file: doc/manual/requirements.txt - -python: - version: 3 - setup_py_install: true - use_system_site_packages: true - -# For more fields that can be specified here, see: -# http://docs.readthedocs.io/en/latest/yaml-config.html diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 196bc046..00000000 --- a/.travis.yml +++ /dev/null @@ -1,113 +0,0 @@ -dist: xenial -language: generic - -os: - - linux - - osx - -env: - - MYUSEMC=true MYPYTHON_VERSION=2.7 - - MYUSEMC=true MYPYTHON_VERSION=3.7 - - MYUSEMC=true MYPYTHON_VERSION=3.8 - - MYUSEMC=true MYPYTHON_VERSION=3.9 - - MYUSEMC=true MYPYTHON_VERSION=3.10 - - MYUSEMC=false - -git: - depth: 999999 - -branches: - except: - - /^v[0-9]/ - - -before_install: - - MYNAME=diffpy.structure - - MYCOMMIT="$(git rev-parse HEAD)" - - umask 022 - - git fetch origin --tags - - MYPYTHON=python; MYPIP=pip - - NOSYS=true; NOAPT=true; NOBREW=true; NOMC=true - - if ${MYUSEMC}; then - NOMC=false; - elif [[ ${TRAVIS_OS_NAME} == linux ]]; then - NOAPT=false; NOSYS=false; - MYPIPFLAGS="--user"; - elif [[ ${TRAVIS_OS_NAME} == osx ]]; then - NOBREW=false; NOSYS=false; - MYPYTHON=python3; - MYPIP=pip3; - MYPIPFLAGS="--user"; - fi - - MYMCREPO=https://repo.anaconda.com/miniconda - - case ${TRAVIS_OS_NAME} in - linux) - MYMCBUNDLE=Miniconda3-latest-Linux-x86_64.sh ;; - osx) - MYMCBUNDLE=Miniconda3-latest-MacOSX-x86_64.sh ;; - *) - echo "Unsupported operating system." >&2; - exit 2 ;; - esac - - MYRUNDIR=${PWD}/build/rundir - - - mkdir -p ~/pkgs - - mkdir -p ${MYRUNDIR} - - cp .coveragerc ${MYRUNDIR}/ - - - $NOMC || pushd ~/pkgs - - $NOMC || wget --timestamping ${MYMCREPO}/${MYMCBUNDLE} - - $NOMC || test -x ~/mc/bin/conda || bash ${MYMCBUNDLE} -b -f -p ~/mc - - $NOMC || popd - - $NOMC || source ~/mc/bin/activate base - - $NOMC || conda update --yes conda - - $NOMC || conda install --yes conda-build conda-verify jinja2 - - $NOMC || conda create --name=testenv --yes python=${MYPYTHON_VERSION} coverage - - $NOMC || conda config --add channels diffpy - - - $NOAPT || test "${TRAVIS_OS_NAME}" = "linux" || exit $? - - $NOAPT || PATH="$(echo "$PATH" | sed 's,:/opt/pyenv/[^:]*,,g')" - - $NOAPT || test "$(which python)" = "/usr/bin/python" || ( - which python; exit 1) - - $NOAPT || sudo apt-get update -qq - - $NOAPT || sudo apt-get install -y - python-dev python-numpy python-setuptools build-essential - - - $NOBREW || test "${TRAVIS_OS_NAME}" = "osx" || exit $? - - $NOBREW || brew update - - $NOBREW || brew install gcc || brew link --overwrite gcc - - - $NOSYS || devutils/makesdist - - $NOSYS || MYTARBUNDLE="$(ls -t "${PWD}"/dist/*.tar.gz | head -1)" - - -install: - - $NOMC || conda build --python=${MYPYTHON_VERSION} conda-recipe - - $NOMC || conda render --python=${MYPYTHON_VERSION} --output conda-recipe | - sed 's,.*/,,; s/[.]tar[.]bz2$//; s/-/=/g' > /tmp/mypackage.txt - - $NOMC || source activate testenv - - $NOMC || conda install --yes --use-local --file=/tmp/mypackage.txt - - - $NOSYS || $MYPIP install $MYPIPFLAGS coverage - - $NOSYS || $MYPIP install $MYPIPFLAGS "${MYTARBUNDLE}" - - - cd ${MYRUNDIR} - - MYGIT_REV=$($MYPYTHON -c "import ${MYNAME}.version as v; print(v.__git_commit__)") - - if [[ "${MYCOMMIT}" != "${MYGIT_REV}" ]]; then - echo "Version mismatch ${MYCOMMIT} vs ${MYGIT_REV}."; - exit 1; - fi - - -before_script: - - $NOBREW || USER_BASE="$($MYPYTHON -c 'import site; print(site.USER_BASE)')" - - $NOBREW || PATH="${USER_BASE}/bin:${PATH}" - - -script: - - coverage run --source ${MYNAME} -m ${MYNAME}.tests.run - - -after_success: - - $MYPIP install $MYPIPFLAGS codecov - - codecov diff --git a/setup.py b/setup.py deleted file mode 100755 index 5a6fc69e..00000000 --- a/setup.py +++ /dev/null @@ -1,129 +0,0 @@ -#!/usr/bin/env python - -"""Objects for storage and manipulation of crystal structure data. - -Packages: diffpy.structure -""" - -import os -import re -import sys -from setuptools import setup, find_packages - -# Use this version when git data are not available, like in git zip archive. -# Update when tagging a new release. -FALLBACK_VERSION = '3.1.0' - -# determine if we run with Python 3. -PY3 = (sys.version_info[0] == 3) - -# versioncfgfile holds version data for git commit hash and date. -# It must reside in the same directory as version.py. -MYDIR = os.path.dirname(os.path.abspath(__file__)) -versioncfgfile = os.path.join(MYDIR, 'src/diffpy/structure/version.cfg') -gitarchivecfgfile = os.path.join(MYDIR, '.gitarchive.cfg') - - -def gitinfo(): - from subprocess import Popen, PIPE - kw = dict(stdout=PIPE, cwd=MYDIR, universal_newlines=True) - proc = Popen(['git', 'describe', '--tags', '--match=v[[:digit:]]*'], **kw) - desc = proc.stdout.read() - proc = Popen(['git', 'log', '-1', '--format=%H %ct %ci'], **kw) - glog = proc.stdout.read() - rv = {} - rv['version'] = '.post'.join(desc.strip().split('-')[:2]).lstrip('v') - rv['commit'], rv['timestamp'], rv['date'] = glog.strip().split(None, 2) - return rv - - -def getversioncfg(): - if PY3: - from configparser import RawConfigParser - else: - from ConfigParser import RawConfigParser - vd0 = dict(version=FALLBACK_VERSION, commit='', date='', timestamp=0) - # first fetch data from gitarchivecfgfile, ignore if it is unexpanded - g = vd0.copy() - cp0 = RawConfigParser(vd0) - cp0.read(gitarchivecfgfile) - if len(cp0.get('DEFAULT', 'commit')) > 20: - g = cp0.defaults() - mx = re.search(r'\btag: v(\d[^,]*)', g.pop('refnames')) - if mx: - g['version'] = mx.group(1) - # then try to obtain version data from git. - gitdir = os.path.join(MYDIR, '.git') - if os.path.exists(gitdir) or 'GIT_DIR' in os.environ: - try: - g = gitinfo() - except OSError: - pass - # finally, check and update the active version file - cp = RawConfigParser() - cp.read(versioncfgfile) - d = cp.defaults() - rewrite = not d or (g['commit'] and ( - g['version'] != d.get('version') or g['commit'] != d.get('commit'))) - if rewrite: - cp.set('DEFAULT', 'version', g['version']) - cp.set('DEFAULT', 'commit', g['commit']) - cp.set('DEFAULT', 'date', g['date']) - cp.set('DEFAULT', 'timestamp', g['timestamp']) - with open(versioncfgfile, 'w') as fp: - cp.write(fp) - return cp - -versiondata = getversioncfg() - -with open(os.path.join(MYDIR, 'README.rst')) as fp: - long_description = fp.read() - -# define distribution -setup_args = dict( - name = "diffpy.structure", - version = versiondata.get('DEFAULT', 'version'), - packages = find_packages(os.path.join(MYDIR, 'src')), - py_modules = ['diffpy.Structure'], - package_dir = {'' : 'src'}, - test_suite = 'diffpy.structure.tests', - include_package_data = True, - zip_safe = False, - install_requires = [ - 'six', - 'pycifrw>=4.4.3', - ], - author = 'Simon J.L. Billinge group', - author_email = 'sb2896@columbia.edu', - maintainer = 'Pavol Juhas', - maintainer_email = 'pavol.juhas@gmail.com', - url = 'https://github.com/diffpy/diffpy.structure', - description = "Crystal structure container " - "and parsers for structure formats.", - long_description = long_description, - long_description_content_type = 'text/x-rst', - license = 'BSD-style license', - keywords = "crystal structure data storage CIF PDB", - classifiers = [ - # List of possible values at - # http://pypi.python.org/pypi?:action=list_classifiers - 'Development Status :: 5 - Production/Stable', - 'Environment :: Console', - 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: BSD License', - 'Operating System :: MacOS :: MacOS X', - 'Operating System :: Microsoft :: Windows', - 'Operating System :: POSIX', - 'Operating System :: Unix', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', - 'Topic :: Scientific/Engineering :: Chemistry', - 'Topic :: Scientific/Engineering :: Physics', - ], -) - -if __name__ == '__main__': - setup(**setup_args) From 963e3781abde5483fb28a37efe666d71ccfb35c7 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 16:18:07 -0400 Subject: [PATCH 09/20] modify .coveragerc --- .coveragerc | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/.coveragerc b/.coveragerc index a90c45c4..34ea3e4c 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,25 +1,13 @@ -# Configuration of the coverage.py tool for reporting test coverage. - -[report] -# RE patterns for lines to be excluded from consideration. -exclude_lines = - ## Have to re-enable the standard pragma - pragma: no cover - ## Don't complain if tests don't hit defensive assertion code: - raise AssertionError - raise NotImplementedError - ^[ ]*assert False - - ## Don't complain if non-runnable code isn't run: - ^[ ]*@unittest.skip\b - ^[ ]{4}unittest.main() - if __name__ == .__main__.: - - [run] +source = + diffpy.structure +[report] omit = - ## Exclude from codecov report: - */tests/debug.py - */apps/*.py - # TODO remove in version 3.1 - */applications/*.py + */python?.?/* + */site-packages/nose/* + # ignore _version.py and versioneer.py + .*version.* + *_version.py + +exclude_lines = + if __name__ == '__main__': From 2fd8cbed050801a5bde445bb37864ec5d2e944f1 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 16:22:38 -0400 Subject: [PATCH 10/20] modify gitattributes --- .gitattributes | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.gitattributes b/.gitattributes index 13fc0b54..de811ba3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,8 +1 @@ -/.gitattributes export-ignore -/.gitignore export-ignore -/.travis.yml export-ignore -/conda-recipe/ export-ignore -/devutils export-ignore -/doc export-ignore -.gitarchive.cfg export-subst -*.bat text eol=crlf +diffpy.structure/_version.py export-subst From 7452562443d405b711a610e1288ef37f9e4ef21f Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 16:23:10 -0400 Subject: [PATCH 11/20] Merge structure/__init__ --- src/diffpy/structure/__init__.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/diffpy/structure/__init__.py b/src/diffpy/structure/__init__.py index 2f0661a5..c5197b90 100644 --- a/src/diffpy/structure/__init__.py +++ b/src/diffpy/structure/__init__.py @@ -1,15 +1,15 @@ #!/usr/bin/env python ############################################################################## # -# diffpy.structure by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2006 trustees of the Michigan State University. -# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. # -# File coded by: Pavol Juhas +# File coded by: Billinge Group members and community contributors. # -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE_DANSE.txt for license information. +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.structure/graphs/contributors +# +# See LICENSE.rst for license information. # ############################################################################## @@ -35,6 +35,10 @@ from diffpy.structure.pdffitstructure import PDFFitStructure # obtain version information + +"""Crystal structure container and parsers for structure formats.""" + +# package version from diffpy.structure.version import __version__ # top level routines @@ -76,4 +80,8 @@ def loadStructure(filename, fmt='auto', **kw): assert Lattice assert Structure assert PDFFitStructure + +# silence the pyflakes syntax checker assert __version__ or True + +# End of file From a399f18d337ff0cc1b43526eb29c6b967d523aff Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 16:24:08 -0400 Subject: [PATCH 12/20] Use new structure/version and tests/run --- src/diffpy/structure/tests/run.py | 42 ++++++++++++----------- src/diffpy/structure/version.py | 55 ++++++++----------------------- 2 files changed, 36 insertions(+), 61 deletions(-) diff --git a/src/diffpy/structure/tests/run.py b/src/diffpy/structure/tests/run.py index 5bd8b2a8..0270ad83 100644 --- a/src/diffpy/structure/tests/run.py +++ b/src/diffpy/structure/tests/run.py @@ -1,32 +1,34 @@ #!/usr/bin/env python ############################################################################## # -# diffpy.structure by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2010 Trustees of the Columbia University -# in the City of New York. All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. # -# File coded by: Pavol Juhas +# File coded by: Billinge Group members and community contributors. # -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE_DANSE.txt for license information. +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.structure/graphs/contributors +# +# See LICENSE.rst for license information. # ############################################################################## - """Convenience module for executing all unit tests with - python -m diffpy.structure.tests.run """ +import sys + +import pytest + +if __name__ == "__main__": + # show output results from every test function + args = ["-v"] + # show the message output for skipped and expected failure tests + if len(sys.argv) > 1: + args.extend(sys.argv[1:]) + print("pytest arguments: {}".format(args)) + # call pytest and exit with the return code from pytest + exit_res = pytest.main(args) + sys.exit(exit_res) -if __name__ == '__main__': - import sys - # show warnings by default - if not sys.warnoptions: - import os, warnings - warnings.simplefilter("default") - # also affect subprocesses - os.environ["PYTHONWARNINGS"] = "default" - from diffpy.structure.tests import test - # produce zero exit code for a successful test - sys.exit(not test().wasSuccessful()) +# End of file diff --git a/src/diffpy/structure/version.py b/src/diffpy/structure/version.py index d60b34c6..be7f6a2d 100644 --- a/src/diffpy/structure/version.py +++ b/src/diffpy/structure/version.py @@ -1,53 +1,26 @@ #!/usr/bin/env python ############################################################################## # -# diffpy.structure by DANSE Diffraction group -# Simon J. L. Billinge -# (c) 2008 trustees of the Michigan State University. -# All rights reserved. +# (c) 2024 The Trustees of Columbia University in the City of New York. +# All rights reserved. # -# File coded by: Pavol Juhas +# File coded by: Billinge Group members and community contributors. # -# See AUTHORS.txt for a list of people who contributed. -# See LICENSE_DANSE.txt for license information. +# See GitHub contributions for a more detailed list of contributors. +# https://github.com/diffpy/diffpy.structure/graphs/contributors +# +# See LICENSE.rst for license information. # ############################################################################## -""" -Definition of __version__, __date__, __timestamp__, __git_commit__. - -Notes ------ -Variable `__gitsha__` is deprecated as of version 3.0. -Use `__git_commit__` instead. -""" - -__all__ = ['__date__', '__git_commit__', '__timestamp__', '__version__'] - -import os.path - -from pkg_resources import resource_filename - +"""Definition of __version__.""" -# obtain version information from the version.cfg file -cp = dict(version='', date='', commit='', timestamp='0') -fcfg = resource_filename(__name__, 'version.cfg') -if not os.path.isfile(fcfg): # pragma: no cover - from warnings import warn - warn('Package metadata not found, execute "./setup.py egg_info".') - fcfg = os.devnull -with open(fcfg) as fp: - kwords = [[w.strip() for w in line.split(' = ', 1)] - for line in fp if line[:1].isalpha() and ' = ' in line] -assert all(w[0] in cp for w in kwords), "received unrecognized keyword" -cp.update(kwords) +# We do not use the other three variables, but can be added back if needed. +# __all__ = ["__date__", "__git_commit__", "__timestamp__", "__version__"] -__version__ = cp['version'] -__date__ = cp['date'] -__git_commit__ = cp['commit'] -__timestamp__ = int(cp['timestamp']) +# obtain version information +from importlib.metadata import version -# TODO remove deprecated __gitsha__ in version 3.1. -__gitsha__ = __git_commit__ +__version__ = version("diffpy.structure") -del cp, fcfg, fp, kwords +# End of file From 576d49abd028c108d29a56ba96f0537e75306e2c Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 17:33:07 -0400 Subject: [PATCH 13/20] Licenses --- LICENSE.rst | 165 ++++++++++++++++---- LICENSE.txt | 137 ----------------- LICENSE_DANSE.txt => LICENSE_DANSE.rst | 15 +- LICENSE_pymmlib.rst | 203 +++++++++++++++++++++++++ LICENSE_pymmlib.txt | 201 ------------------------ 5 files changed, 353 insertions(+), 368 deletions(-) delete mode 100644 LICENSE.txt rename LICENSE_DANSE.txt => LICENSE_DANSE.rst (85%) create mode 100644 LICENSE_pymmlib.rst delete mode 100644 LICENSE_pymmlib.txt diff --git a/LICENSE.rst b/LICENSE.rst index 95a04ac9..f1fe010e 100644 --- a/LICENSE.rst +++ b/LICENSE.rst @@ -1,30 +1,141 @@ -BSD 3-Clause License +OPEN SOURCE LICENSE AGREEMENT +============================= -Copyright (c) 2024, The Trustees of Columbia University -in the City of New York. +Copyright (c) 1989, 1991 Free Software Foundation, Inc. + +Copyright (c) 2006, The Regents of the University of California through Lawrence Berkeley National Laboratory + +Copyright (c) 2006-2007, Board of Trustees of Michigan State University + +Copyright (c) 2008-2012, The Trustees of Columbia University in the City of New York + +Copyright (c) 2009-2011, University of Tennessee + +Copyright (c) 2014, Australian Synchrotron Research Program Inc., ("ASRP") + +Copyright (c) 2014-2019, Brookhaven Science Associates, Brookhaven National Laboratory + +Copyright (c) 2024, The Trustees of Columbia University in the City of New York. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +The "DiffPy-CMI" is distributed subject to the following license conditions: + +.. code-block:: text + + SOFTWARE LICENSE AGREEMENT + + Software: DiffPy-CMI + + + (1) The "Software", below, refers to the aforementioned DiffPy-CMI (in either + source code, or binary form and accompanying documentation). + + Part of the software was derived from the DANSE, ObjCryst++ (with permission), + PyCifRW, Python periodictable, CCTBX, and SasView open source projects, of + which the original Copyrights are contained in each individual file. + + Each licensee is addressed as "you" or "Licensee." + + + (2) The copyright holders shown above and their third-party Licensors hereby + grant licensee a royalty-free nonexclusive license, subject to the limitations + stated herein and U.S. Government license rights. + + + (3) You may modify and make a copy or copies of the software for use within + your organization, if you meet the following conditions: + + (a) Copies in source code must include the copyright notice and this + software license agreement. + + (b) Copies in binary form must include the copyright notice and this + Software License Agreement in the documentation and/or other materials + provided with the copy. + + + (4) You may modify a copy or copies of the Software or any portion of it, thus + forming a work based on the Software, and distribute copies of such work + outside your organization, if you meet all of the following conditions: + + (a) Copies in source code must include the copyright notice and this + Software License Agreement; + + (b) Copies in binary form must include the copyright notice and this + Software License Agreement in the documentation and/or other materials + provided with the copy; + + (c) Modified copies and works based on the Software must carry prominent + notices stating that you changed specified portions of the Software. + + (d) Neither the name of Brookhaven Science Associates or Brookhaven + National Laboratory nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + written permission. + + + (5) Portions of the Software resulted from work developed under a U.S. + Government contract and are subject to the following license: + The Government is granted for itself and others acting on its behalf a + paid-up, nonexclusive, irrevocable worldwide license in this computer software + to reproduce, prepare derivative works, and perform publicly and display + publicly. + + + (6) WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT + WARRANTY OF ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY + LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND + THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL + LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF + THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE SOFTWARE WOULD NOT INFRINGE + PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION + UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED. + + + (7) LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR + THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF + ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL, + CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE, INCLUDING + BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, + WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT (INCLUDING + NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS + BEEN WARNED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGES. + + +Brookhaven National Laboratory Notice +===================================== + +Acknowledgment of sponsorship +----------------------------- + +This software was produced by the Brookhaven National Laboratory, under +Contract DE-AC02-98CH10886 with the Department of Energy. + + +Government disclaimer of liability +---------------------------------- + +Neither the United States nor the United States Department of Energy, nor +any of their employees, makes any warranty, express or implied, or assumes +any legal liability or responsibility for the accuracy, completeness, or +usefulness of any data, apparatus, product, or process disclosed, or +represents that its use would not infringe privately owned rights. + + +Brookhaven disclaimer of liability +---------------------------------- + +Brookhaven National Laboratory makes no representations or warranties, +express or implied, nor assumes any liability for the use of this software. + + +Maintenance of notice +--------------------- + +In the interest of clarity regarding the origin and status of this +software, Brookhaven National Laboratory requests that any recipient of it +maintain this notice affixed to any distribution by the recipient that +contains a copy or derivative of this software. + +END OF LICENSE diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index f6d92af7..00000000 --- a/LICENSE.txt +++ /dev/null @@ -1,137 +0,0 @@ -OPEN SOURCE LICENSE AGREEMENT -============================= - -Copyright (c) 2009-2011, University of Tennessee -Copyright (c) 1989, 1991 Free Software Foundation, Inc. -Copyright (c) 2006, The Regents of the University of California through - Lawrence Berkeley National Laboratory -Copyright (c) 2014, Australian Synchrotron Research Program Inc., ("ASRP") -Copyright (c) 2006-2007, Board of Trustees of Michigan State University -Copyright (c) 2008-2012, The Trustees of Columbia University in the City - of New York - -Copyright (c) 2014-2019, Brookhaven Science Associates, Brookhaven National - Laboratory - - -The "DiffPy-CMI" is distributed subject to the following license conditions: - - -SOFTWARE LICENSE AGREEMENT - - Software: DiffPy-CMI - - -(1) The "Software", below, refers to the aforementioned DiffPy-CMI (in either -source code, or binary form and accompanying documentation). - -Part of the software was derived from the DANSE, ObjCryst++ (with permission), -PyCifRW, Python periodictable, CCTBX, and SasView open source projects, of -which the original Copyrights are contained in each individual file. - -Each licensee is addressed as "you" or "Licensee." - - -(2) The copyright holders shown above and their third-party Licensors hereby -grant licensee a royalty-free nonexclusive license, subject to the limitations -stated herein and U.S. Government license rights. - - -(3) You may modify and make a copy or copies of the software for use within -your organization, if you meet the following conditions: - - (a) Copies in source code must include the copyright notice and this - software license agreement. - - (b) Copies in binary form must include the copyright notice and this - Software License Agreement in the documentation and/or other materials - provided with the copy. - - -(4) You may modify a copy or copies of the Software or any portion of it, thus -forming a work based on the Software, and distribute copies of such work -outside your organization, if you meet all of the following conditions: - - (a) Copies in source code must include the copyright notice and this - Software License Agreement; - - (b) Copies in binary form must include the copyright notice and this - Software License Agreement in the documentation and/or other materials - provided with the copy; - - (c) Modified copies and works based on the Software must carry prominent - notices stating that you changed specified portions of the Software. - - (d) Neither the name of Brookhaven Science Associates or Brookhaven - National Laboratory nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - written permission. - - -(5) Portions of the Software resulted from work developed under a U.S. -Government contract and are subject to the following license: -The Government is granted for itself and others acting on its behalf a -paid-up, nonexclusive, irrevocable worldwide license in this computer software -to reproduce, prepare derivative works, and perform publicly and display -publicly. - - -(6) WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT -WARRANTY OF ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY -LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND -THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL -LIABILITY OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF -THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE SOFTWARE WOULD NOT INFRINGE -PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION -UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED. - - -(7) LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR -THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF -ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL, -CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE, INCLUDING -BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, -WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT (INCLUDING -NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS -BEEN WARNED OF THE POSSIBILITY OF SUCH LOSS OR DAMAGES. - - -Brookhaven National Laboratory Notice -===================================== - -Acknowledgment of sponsorship ------------------------------ - -This software was produced by the Brookhaven National Laboratory, under -Contract DE-AC02-98CH10886 with the Department of Energy. - - -Government disclaimer of liability ----------------------------------- - -Neither the United States nor the United States Department of Energy, nor -any of their employees, makes any warranty, express or implied, or assumes -any legal liability or responsibility for the accuracy, completeness, or -usefulness of any data, apparatus, product, or process disclosed, or -represents that its use would not infringe privately owned rights. - - -Brookhaven disclaimer of liability ----------------------------------- - -Brookhaven National Laboratory makes no representations or warranties, -express or implied, nor assumes any liability for the use of this software. - - -Maintenance of notice ---------------------- - -In the interest of clarity regarding the origin and status of this -software, Brookhaven National Laboratory requests that any recipient of it -maintain this notice affixed to any distribution by the recipient that -contains a copy or derivative of this software. - - -END OF LICENSE diff --git a/LICENSE_DANSE.txt b/LICENSE_DANSE.rst similarity index 85% rename from LICENSE_DANSE.txt rename to LICENSE_DANSE.rst index 2a101560..c05648e1 100644 --- a/LICENSE_DANSE.txt +++ b/LICENSE_DANSE.rst @@ -1,26 +1,35 @@ +LICENSE +======= + This program is part of the DiffPy and DANSE open-source projects and is available subject to the conditions and terms laid out below. Copyright 2006-2007, Board of Trustees of Michigan State University, + Copyright 2008-2012, The Trustees of Columbia University in the City of New York. (Copyright holder indicated in each source file). +Copyright (c) 2024, The Trustees of Columbia University in the City of New York. +All rights reserved. + For more information please visit the project web-page: + http://www.diffpy.org/ + or email Prof. Simon Billinge at sb2896@columbia.edu Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright +- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright +- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of the copyright holder nor the names of its +- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/LICENSE_pymmlib.rst b/LICENSE_pymmlib.rst new file mode 100644 index 00000000..e0b82c94 --- /dev/null +++ b/LICENSE_pymmlib.rst @@ -0,0 +1,203 @@ +.. code-block:: text + + The Artistic License 2.0 + + Copyright (c) 2000-2006, The Perl Foundation. + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + This license establishes the terms under which a given free software + Package may be copied, modified, distributed, and/or redistributed. + The intent is that the Copyright Holder maintains some artistic + control over the development of that Package while still keeping the + Package available as open source and free software. + + You are always permitted to make arrangements wholly outside of this + license directly with the Copyright Holder of a given Package. If the + terms of this license do not permit the full use that you propose to + make of the Package, you should contact the Copyright Holder and seek + a different licensing arrangement. + + Definitions + + "Copyright Holder" means the individual(s) or organization(s) + named in the copyright notice for the entire Package. + + "Contributor" means any party that has contributed code or other + material to the Package, in accordance with the Copyright Holder's + procedures. + + "You" and "your" means any person who would like to copy, + distribute, or modify the Package. + + "Package" means the collection of files distributed by the + Copyright Holder, and derivatives of that collection and/or of + those files. A given Package may consist of either the Standard + Version, or a Modified Version. + + "Distribute" means providing a copy of the Package or making it + accessible to anyone else, or in the case of a company or + organization, to others outside of your company or organization. + + "Distributor Fee" means any fee that you charge for Distributing + this Package or providing support for this Package to another + party. It does not mean licensing fees. + + "Standard Version" refers to the Package if it has not been + modified, or has been modified only in ways explicitly requested + by the Copyright Holder. + + "Modified Version" means the Package, if it has been changed, and + such changes were not explicitly requested by the Copyright + Holder. + + "Original License" means this Artistic License as Distributed with + the Standard Version of the Package, in its current version or as + it may be modified by The Perl Foundation in the future. + + "Source" form means the source code, documentation source, and + configuration files for the Package. + + "Compiled" form means the compiled bytecode, object code, binary, + or any other form resulting from mechanical transformation or + translation of the Source form. + + + Permission for Use and Modification Without Distribution + + (1) You are permitted to use the Standard Version and create and use + Modified Versions for any purpose without restriction, provided that + you do not Distribute the Modified Version. + + + Permissions for Redistribution of the Standard Version + + (2) You may Distribute verbatim copies of the Source form of the + Standard Version of this Package in any medium without restriction, + either gratis or for a Distributor Fee, provided that you duplicate + all of the original copyright notices and associated disclaimers. At + your discretion, such verbatim copies may or may not include a + Compiled form of the Package. + + (3) You may apply any bug fixes, portability changes, and other + modifications made available from the Copyright Holder. The resulting + Package will still be considered the Standard Version, and as such + will be subject to the Original License. + + + Distribution of Modified Versions of the Package as Source + + (4) You may Distribute your Modified Version as Source (either gratis + or for a Distributor Fee, and with or without a Compiled form of the + Modified Version) provided that you clearly document how it differs + from the Standard Version, including, but not limited to, documenting + any non-standard features, executables, or modules, and provided that + you do at least ONE of the following: + + (a) make the Modified Version available to the Copyright Holder + of the Standard Version, under the Original License, so that the + Copyright Holder may include your modifications in the Standard + Version. + + (b) ensure that installation of your Modified Version does not + prevent the user installing or running the Standard Version. In + addition, the Modified Version must bear a name that is different + from the name of the Standard Version. + + (c) allow anyone who receives a copy of the Modified Version to + make the Source form of the Modified Version available to others + under + + (i) the Original License or + + (ii) a license that permits the licensee to freely copy, + modify and redistribute the Modified Version using the same + licensing terms that apply to the copy that the licensee + received, and requires that the Source form of the Modified + Version, and of any works derived from it, be made freely + available in that license fees are prohibited but Distributor + Fees are allowed. + + + Distribution of Compiled Forms of the Standard Version + or Modified Versions without the Source + + (5) You may Distribute Compiled forms of the Standard Version without + the Source, provided that you include complete instructions on how to + get the Source of the Standard Version. Such instructions must be + valid at the time of your distribution. If these instructions, at any + time while you are carrying out such distribution, become invalid, you + must provide new instructions on demand or cease further distribution. + If you provide valid instructions or cease distribution within thirty + days after you become aware that the instructions are invalid, then + you do not forfeit any of your rights under this license. + + (6) You may Distribute a Modified Version in Compiled form without + the Source, provided that you comply with Section 4 with respect to + the Source of the Modified Version. + + + Aggregating or Linking the Package + + (7) You may aggregate the Package (either the Standard Version or + Modified Version) with other packages and Distribute the resulting + aggregation provided that you do not charge a licensing fee for the + Package. Distributor Fees are permitted, and licensing fees for other + components in the aggregation are permitted. The terms of this license + apply to the use and Distribution of the Standard or Modified Versions + as included in the aggregation. + + (8) You are permitted to link Modified and Standard Versions with + other works, to embed the Package in a larger work of your own, or to + build stand-alone binary or bytecode versions of applications that + include the Package, and Distribute the result without restriction, + provided the result does not expose a direct interface to the Package. + + + Items That are Not Considered Part of a Modified Version + + (9) Works (including, but not limited to, modules and scripts) that + merely extend or make use of the Package, do not, by themselves, cause + the Package to be a Modified Version. In addition, such works are not + considered parts of the Package itself, and are not subject to the + terms of this license. + + + General Provisions + + (10) Any use, modification, and distribution of the Standard or + Modified Versions is governed by this Artistic License. By using, + modifying or distributing the Package, you accept this license. Do not + use, modify, or distribute the Package, if you do not accept this + license. + + (11) If your Modified Version has been derived from a Modified + Version made by someone other than you, you are nevertheless required + to ensure that your Modified Version complies with the requirements of + this license. + + (12) This license does not grant you the right to use any trademark, + service mark, tradename, or logo of the Copyright Holder. + + (13) This license includes the non-exclusive, worldwide, + free-of-charge patent license to make, have made, use, offer to sell, + sell, import and otherwise transfer the Package with respect to any + patent claims licensable by the Copyright Holder that are necessarily + infringed by the Package. If you institute patent litigation + (including a cross-claim or counterclaim) against any party alleging + that the Package constitutes direct or contributory patent + infringement, then this Artistic License to you shall terminate on the + date that such litigation is filed. + + (14) Disclaimer of Warranty: + THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS + IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED + WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR + NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL + LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL + BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSE_pymmlib.txt b/LICENSE_pymmlib.txt deleted file mode 100644 index 7d61f060..00000000 --- a/LICENSE_pymmlib.txt +++ /dev/null @@ -1,201 +0,0 @@ - The Artistic License 2.0 - - Copyright (c) 2000-2006, The Perl Foundation. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble - -This license establishes the terms under which a given free software -Package may be copied, modified, distributed, and/or redistributed. -The intent is that the Copyright Holder maintains some artistic -control over the development of that Package while still keeping the -Package available as open source and free software. - -You are always permitted to make arrangements wholly outside of this -license directly with the Copyright Holder of a given Package. If the -terms of this license do not permit the full use that you propose to -make of the Package, you should contact the Copyright Holder and seek -a different licensing arrangement. - -Definitions - - "Copyright Holder" means the individual(s) or organization(s) - named in the copyright notice for the entire Package. - - "Contributor" means any party that has contributed code or other - material to the Package, in accordance with the Copyright Holder's - procedures. - - "You" and "your" means any person who would like to copy, - distribute, or modify the Package. - - "Package" means the collection of files distributed by the - Copyright Holder, and derivatives of that collection and/or of - those files. A given Package may consist of either the Standard - Version, or a Modified Version. - - "Distribute" means providing a copy of the Package or making it - accessible to anyone else, or in the case of a company or - organization, to others outside of your company or organization. - - "Distributor Fee" means any fee that you charge for Distributing - this Package or providing support for this Package to another - party. It does not mean licensing fees. - - "Standard Version" refers to the Package if it has not been - modified, or has been modified only in ways explicitly requested - by the Copyright Holder. - - "Modified Version" means the Package, if it has been changed, and - such changes were not explicitly requested by the Copyright - Holder. - - "Original License" means this Artistic License as Distributed with - the Standard Version of the Package, in its current version or as - it may be modified by The Perl Foundation in the future. - - "Source" form means the source code, documentation source, and - configuration files for the Package. - - "Compiled" form means the compiled bytecode, object code, binary, - or any other form resulting from mechanical transformation or - translation of the Source form. - - -Permission for Use and Modification Without Distribution - -(1) You are permitted to use the Standard Version and create and use -Modified Versions for any purpose without restriction, provided that -you do not Distribute the Modified Version. - - -Permissions for Redistribution of the Standard Version - -(2) You may Distribute verbatim copies of the Source form of the -Standard Version of this Package in any medium without restriction, -either gratis or for a Distributor Fee, provided that you duplicate -all of the original copyright notices and associated disclaimers. At -your discretion, such verbatim copies may or may not include a -Compiled form of the Package. - -(3) You may apply any bug fixes, portability changes, and other -modifications made available from the Copyright Holder. The resulting -Package will still be considered the Standard Version, and as such -will be subject to the Original License. - - -Distribution of Modified Versions of the Package as Source - -(4) You may Distribute your Modified Version as Source (either gratis -or for a Distributor Fee, and with or without a Compiled form of the -Modified Version) provided that you clearly document how it differs -from the Standard Version, including, but not limited to, documenting -any non-standard features, executables, or modules, and provided that -you do at least ONE of the following: - - (a) make the Modified Version available to the Copyright Holder - of the Standard Version, under the Original License, so that the - Copyright Holder may include your modifications in the Standard - Version. - - (b) ensure that installation of your Modified Version does not - prevent the user installing or running the Standard Version. In - addition, the Modified Version must bear a name that is different - from the name of the Standard Version. - - (c) allow anyone who receives a copy of the Modified Version to - make the Source form of the Modified Version available to others - under - - (i) the Original License or - - (ii) a license that permits the licensee to freely copy, - modify and redistribute the Modified Version using the same - licensing terms that apply to the copy that the licensee - received, and requires that the Source form of the Modified - Version, and of any works derived from it, be made freely - available in that license fees are prohibited but Distributor - Fees are allowed. - - -Distribution of Compiled Forms of the Standard Version -or Modified Versions without the Source - -(5) You may Distribute Compiled forms of the Standard Version without -the Source, provided that you include complete instructions on how to -get the Source of the Standard Version. Such instructions must be -valid at the time of your distribution. If these instructions, at any -time while you are carrying out such distribution, become invalid, you -must provide new instructions on demand or cease further distribution. -If you provide valid instructions or cease distribution within thirty -days after you become aware that the instructions are invalid, then -you do not forfeit any of your rights under this license. - -(6) You may Distribute a Modified Version in Compiled form without -the Source, provided that you comply with Section 4 with respect to -the Source of the Modified Version. - - -Aggregating or Linking the Package - -(7) You may aggregate the Package (either the Standard Version or -Modified Version) with other packages and Distribute the resulting -aggregation provided that you do not charge a licensing fee for the -Package. Distributor Fees are permitted, and licensing fees for other -components in the aggregation are permitted. The terms of this license -apply to the use and Distribution of the Standard or Modified Versions -as included in the aggregation. - -(8) You are permitted to link Modified and Standard Versions with -other works, to embed the Package in a larger work of your own, or to -build stand-alone binary or bytecode versions of applications that -include the Package, and Distribute the result without restriction, -provided the result does not expose a direct interface to the Package. - - -Items That are Not Considered Part of a Modified Version - -(9) Works (including, but not limited to, modules and scripts) that -merely extend or make use of the Package, do not, by themselves, cause -the Package to be a Modified Version. In addition, such works are not -considered parts of the Package itself, and are not subject to the -terms of this license. - - -General Provisions - -(10) Any use, modification, and distribution of the Standard or -Modified Versions is governed by this Artistic License. By using, -modifying or distributing the Package, you accept this license. Do not -use, modify, or distribute the Package, if you do not accept this -license. - -(11) If your Modified Version has been derived from a Modified -Version made by someone other than you, you are nevertheless required -to ensure that your Modified Version complies with the requirements of -this license. - -(12) This license does not grant you the right to use any trademark, -service mark, tradename, or logo of the Copyright Holder. - -(13) This license includes the non-exclusive, worldwide, -free-of-charge patent license to make, have made, use, offer to sell, -sell, import and otherwise transfer the Package with respect to any -patent claims licensable by the Copyright Holder that are necessarily -infringed by the Package. If you institute patent litigation -(including a cross-claim or counterclaim) against any party alleging -that the Package constitutes direct or contributory patent -infringement, then this Artistic License to you shall terminate on the -date that such litigation is filed. - -(14) Disclaimer of Warranty: -THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS -IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR -NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL -LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 06ead97b9202093c96ea983a13118d849c09f40b Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 17:36:44 -0400 Subject: [PATCH 14/20] MANIFEST --- MANIFEST.in | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index eb0a5627..3bcdfb4f 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,15 +1,14 @@ -recursive-include src * -include AUTHORS.txt LICENSE*.txt README.rst -recursive-exclude src *.pyc -global-exclude .gitattributes .gitignore .gitarchive.cfg -global-exclude .DS_Store - -# Avoid user content in setup.cfg to make distribution reproducible. -exclude setup.cfg - -# Exclude git-tracked files spuriously added by setuptools_scm -exclude .coveragerc -exclude .travis* -prune conda-recipe -prune devutils -prune doc +include AUTHORS.rst +include LICENSE +include README.rst +include requirements.txt + +recursive-exclude * __pycache__ +recursive-exclude * *.py[co] + +recursive-include docs *.rst conf.py Makefile make.bat + +include diffpy.structure/version.py + +# If including data files in the package, add them like: +# include path/to/data_file From 0d5e895b8bfd1c24357c9e6e98027f070178f147 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Mon, 1 Jul 2024 20:56:06 -0400 Subject: [PATCH 15/20] API --- .../api/diffpy.structure.applications.rst | 29 +++++ doc/source/api/diffpy.structure.apps.rst | 29 +++++ .../api/diffpy.structure.example_package.rst | 31 ----- doc/source/api/diffpy.structure.expansion.rst | 37 ++++++ doc/source/api/diffpy.structure.parsers.rst | 93 +++++++++++++++ doc/source/api/diffpy.structure.rst | 108 ++++++++++++++++-- 6 files changed, 287 insertions(+), 40 deletions(-) create mode 100644 doc/source/api/diffpy.structure.applications.rst create mode 100644 doc/source/api/diffpy.structure.apps.rst delete mode 100644 doc/source/api/diffpy.structure.example_package.rst create mode 100644 doc/source/api/diffpy.structure.expansion.rst create mode 100644 doc/source/api/diffpy.structure.parsers.rst diff --git a/doc/source/api/diffpy.structure.applications.rst b/doc/source/api/diffpy.structure.applications.rst new file mode 100644 index 00000000..57dedf41 --- /dev/null +++ b/doc/source/api/diffpy.structure.applications.rst @@ -0,0 +1,29 @@ +:tocdepth: -1 + +diffpy.structure.applications package +===================================== + +.. automodule:: diffpy.structure.applications + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +diffpy.structure.applications.transtru module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.applications.transtru + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.applications.anyeye module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.applications.anyeye + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/source/api/diffpy.structure.apps.rst b/doc/source/api/diffpy.structure.apps.rst new file mode 100644 index 00000000..5ac351dd --- /dev/null +++ b/doc/source/api/diffpy.structure.apps.rst @@ -0,0 +1,29 @@ +:tocdepth: -1 + +diffpy.structure.apps package +============================= + +.. automodule:: diffpy.structure.apps + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +diffpy.structure.apps.transtru module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.apps.transtru + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.apps.anyeye module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.apps.anyeye + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/source/api/diffpy.structure.example_package.rst b/doc/source/api/diffpy.structure.example_package.rst deleted file mode 100644 index 3595000a..00000000 --- a/doc/source/api/diffpy.structure.example_package.rst +++ /dev/null @@ -1,31 +0,0 @@ -.. _example_package documentation: - -|title| -======= - -.. |title| replace:: diffpy.structure.example_package package - -.. automodule:: diffpy.structure.example_package - :members: - :undoc-members: - :show-inheritance: - -|foo| ------ - -.. |foo| replace:: diffpy.structure.example_package.foo module - -.. automodule:: diffpy.structure.example_package.foo - :members: - :undoc-members: - :show-inheritance: - -|bar| ------ - -.. |bar| replace:: diffpy.structure.example_package.bar module - -.. automodule:: diffpy.structure.example_package.foo - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/api/diffpy.structure.expansion.rst b/doc/source/api/diffpy.structure.expansion.rst new file mode 100644 index 00000000..afce983c --- /dev/null +++ b/doc/source/api/diffpy.structure.expansion.rst @@ -0,0 +1,37 @@ +:tocdepth: -1 + +diffpy.structure.expansion package +================================== + +.. automodule:: diffpy.structure.expansion + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +diffpy.structure.expansion.shapeutils module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.expansion.shapeutils + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.expansion.makeellipsoid module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.expansion.makeellipsoid + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.expansion.supercell_mod module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.expansion.supercell_mod + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/source/api/diffpy.structure.parsers.rst b/doc/source/api/diffpy.structure.parsers.rst new file mode 100644 index 00000000..54a88f2e --- /dev/null +++ b/doc/source/api/diffpy.structure.parsers.rst @@ -0,0 +1,93 @@ +:tocdepth: -1 + +diffpy.structure.parsers package +================================ + +.. automodule:: diffpy.structure.parsers + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +diffpy.structure.parsers.p_rawxyz module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_rawxyz + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.structureparser module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.structureparser + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_cif module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_cif + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_auto module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_auto + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_pdffit module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_pdffit + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_xcfg module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_xcfg + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.parser_index_mod module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.parser_index_mod + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_pdb module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_pdb + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_discus module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_discus + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.parsers.p_xyz module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.parsers.p_xyz + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/source/api/diffpy.structure.rst b/doc/source/api/diffpy.structure.rst index cdcc80ea..8d60dd1c 100644 --- a/doc/source/api/diffpy.structure.rst +++ b/doc/source/api/diffpy.structure.rst @@ -1,9 +1,7 @@ :tocdepth: -1 -|title| -======= - -.. |title| replace:: diffpy.structure package +diffpy.structure package +======================== .. automodule:: diffpy.structure :members: @@ -14,17 +12,109 @@ Subpackages ----------- .. toctree:: - diffpy.structure.example_package + :titlesonly: + + diffpy.structure.parsers + diffpy.structure.expansion + diffpy.structure.applications + diffpy.structure.apps Submodules ---------- -|module| --------- +diffpy.structure.spacegroups module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.spacegroups + :members: + :undoc-members: + :show-inheritance: -.. |module| replace:: diffpy.structure.example_submodule module +diffpy.structure._legacy_importer module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. automodule:: diffpy.structure.example_submodule +.. automodule:: diffpy.structure._legacy_importer :members: :undoc-members: :show-inheritance: + +diffpy.structure.structureerrors module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.structureerrors + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.spacegroupmod module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.spacegroupmod + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.utils module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.utils + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.lattice module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.lattice + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.structure module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.structure + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.mmlibspacegroups module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.mmlibspacegroups + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.symmetryutilities module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.symmetryutilities + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.atom module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.atom + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.pdffitstructure module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.pdffitstructure + :members: + :undoc-members: + :show-inheritance: + +diffpy.structure.sgtbxspacegroups module +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automodule:: diffpy.structure.sgtbxspacegroups + :members: + :undoc-members: + :show-inheritance: + From ef95170146298a5ff2a6bacadb6ef5d491b15ae6 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Tue, 2 Jul 2024 11:02:15 -0400 Subject: [PATCH 16/20] CHANGELOG --- CHANGELOG.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e446d478..3d4b5e17 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,23 @@ Release Notes .. current developments +Version 3.2.0 - 2024-7-2 +-------------------------- +**Added:** + +**Changed:** + +**Deprecated:** + +**Removed:** + +**Fixed:** + +- Repo structure modified to the new diffpy standard + +**Security:** + + Version 3.1.0 - 2022-12-04 -------------------------- From 0ca1c9e215d6543269c868d6ee56f13daa5a546b Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Tue, 2 Jul 2024 16:01:56 -0400 Subject: [PATCH 17/20] deleted: doc/source/package.rst --- doc/source/package.rst | 130 ----------------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 doc/source/package.rst diff --git a/doc/source/package.rst b/doc/source/package.rst deleted file mode 100644 index 4179f8e3..00000000 --- a/doc/source/package.rst +++ /dev/null @@ -1,130 +0,0 @@ -:tocdepth: 2 - -Package API -########### - - -Submodules -========== - -.. toctree:: - :titlesonly: - - mod_atom - mod_lattice - mod_spacegroup - diffpy.structure.parsers - diffpy.structure.apps - diffpy.structure.expansion - - -diffpy.structure -================ - -.. module:: diffpy.structure - -The top-level diffpy.structure module provides the following objects. - - -Functions ---------- - -.. autofunction:: loadStructure - - -Classes -------- - -:py:class:`~atom.Atom` - describes one atom site in the structure - its type, position, - displacement parameters and so forth. - -:py:class:`~lattice.Lattice` - depicts general coordinate system and associated operations. - -:py:class:`~structure.Structure` - collection of :class:`!Atom` objects that form the structure together - with associated :py:class:`!Lattice`. - - -Exceptions ----------- - -.. autoclass:: StructureFormatError - -.. autoclass:: LatticeError - -.. autoclass:: SymmetryError - - -diffpy.structure.spacegroups -============================ - -.. automodule:: diffpy.structure.spacegroups - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.structureerrors -================================ - -.. automodule:: diffpy.structure.structureerrors - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.symmetryutilities -================================== - -.. automodule:: diffpy.structure.symmetryutilities - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.mmlibspacegroups -================================= - -.. automodule:: diffpy.structure.mmlibspacegroups - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.pdffitstructure -================================ - -.. automodule:: diffpy.structure.pdffitstructure - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.sgtbxspacegroups -================================= - -.. automodule:: diffpy.structure.sgtbxspacegroups - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.structure -========================== - -.. automodule:: diffpy.structure.structure - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.utils -====================== - -.. automodule:: diffpy.structure.utils - :members: - :undoc-members: - :show-inheritance: - -diffpy.structure.version -======================== - -.. automodule:: diffpy.structure.version - :members: - :undoc-members: - :show-inheritance: From 602047fd391a872c230ed2f5bb2545b8446447f8 Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Tue, 2 Jul 2024 16:21:05 -0400 Subject: [PATCH 18/20] add more information in README and index --- README.rst | 14 ++++++++++++-- doc/source/index.rst | 41 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/README.rst b/README.rst index 8c6adad8..5dd3a227 100644 --- a/README.rst +++ b/README.rst @@ -52,9 +52,16 @@ For more information about the diffpy.structure library, please consult our `onl Citation -------- -If you use diffpy.structure in a scientific publication, we would like you to cite this package as +If you use this program for a scientific research that leads +to publication, we ask that you acknowledge use of the program +by citing the following paper in your publication: - diffpy.structure Package, https://github.com/diffpy/diffpy.structure + P. Juhás, C. L. Farrow, X. Yang, K. R. Knox and S. J. L. Billinge, + `Complex modeling: a strategy and software program for combining + multiple information sources to solve ill posed structure and + nanostructure inverse problems + `__, + *Acta Crystallogr. A* **71**, 562-568 (2015). Installation ------------ @@ -129,6 +136,9 @@ Acknowledgement Space group codes in *spacegroupmod.py* and *mmlibspacegroups.py* originate from the `pymmlib project `_. +Less common settings of space groups were generating using the +`Computational Crystallography Toolbox `_. + Contact ------- diff --git a/doc/source/index.rst b/doc/source/index.rst index 54ec3695..457e4105 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -9,16 +9,52 @@ diffpy.structure - Crystal structure container and parsers for structure formats | Software version |release|. | Last updated |today|. +The diffpy.structure package provides objects for storing atomic +coordinates, displacement parameters and other crystal structure data. +diffpy.structure supports import and export of structure data in several +structure formats such as CIF, PDB, xyz. It provides conversion +between fractional and absolute Cartesian coordinates, functions for +symmetry expansion from asymmetric unit and generation of symmetry +constraints for atom positions and displacement parameters. diffpy.structure +includes definitions of all space groups in over 500 symmetry settings. + ======= Authors ======= -diffpy.structure is developed by Billinge Group -and its community contributors. +diffpy.structure is developed by members of the Billinge Group at +Columbia University and at Brookhaven National Laboratory including +Pavol Juhás, Christopher L. Farrow, Xiaohao Yang, Simon J.L. Billinge. For a detailed list of contributors see https://github.com/diffpy/diffpy.structure/graphs/contributors. +Acknowledgments +=============== + +Space group codes in *spacegroupmod.py* and *mmlibspacegroups.py* +originate from the pymmlib project, http://pymmlib.sourceforge.net. +Less common settings of space groups were generating using the +Computational Crystallography Toolbox, +http://cctbx.sourceforge.net. + + +.. index:: citation, reference + +Reference +========= + +If you use this program for a scientific research that leads +to publication, we ask that you acknowledge use of the program +by citing the following paper in your publication: + + P. Juhás, C. L. Farrow, X. Yang, K. R. Knox and S. J. L. Billinge, + `Complex modeling: a strategy and software program for combining + multiple information sources to solve ill posed structure and + nanostructure inverse problems + `__, + *Acta Crystallogr. A* **71**, 562-568 (2015). + ============ Installation ============ @@ -29,6 +65,7 @@ file included with the distribution. ================= Table of contents ================= + .. toctree:: :titlesonly: From 31fa5720a1bde8f77609216943e0188ed9938fbd Mon Sep 17 00:00:00 2001 From: Tieqiong Zhang Date: Tue, 2 Jul 2024 16:27:08 -0400 Subject: [PATCH 19/20] switch back to unittest run for now --- src/diffpy/structure/tests/run.py | 42 +++++++++++++++---------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/diffpy/structure/tests/run.py b/src/diffpy/structure/tests/run.py index 0270ad83..5bd8b2a8 100644 --- a/src/diffpy/structure/tests/run.py +++ b/src/diffpy/structure/tests/run.py @@ -1,34 +1,32 @@ #!/usr/bin/env python ############################################################################## # -# (c) 2024 The Trustees of Columbia University in the City of New York. -# All rights reserved. +# diffpy.structure by DANSE Diffraction group +# Simon J. L. Billinge +# (c) 2010 Trustees of the Columbia University +# in the City of New York. All rights reserved. # -# File coded by: Billinge Group members and community contributors. +# File coded by: Pavol Juhas # -# See GitHub contributions for a more detailed list of contributors. -# https://github.com/diffpy/diffpy.structure/graphs/contributors -# -# See LICENSE.rst for license information. +# See AUTHORS.txt for a list of people who contributed. +# See LICENSE_DANSE.txt for license information. # ############################################################################## + """Convenience module for executing all unit tests with + python -m diffpy.structure.tests.run """ -import sys - -import pytest - -if __name__ == "__main__": - # show output results from every test function - args = ["-v"] - # show the message output for skipped and expected failure tests - if len(sys.argv) > 1: - args.extend(sys.argv[1:]) - print("pytest arguments: {}".format(args)) - # call pytest and exit with the return code from pytest - exit_res = pytest.main(args) - sys.exit(exit_res) -# End of file +if __name__ == '__main__': + import sys + # show warnings by default + if not sys.warnoptions: + import os, warnings + warnings.simplefilter("default") + # also affect subprocesses + os.environ["PYTHONWARNINGS"] = "default" + from diffpy.structure.tests import test + # produce zero exit code for a successful test + sys.exit(not test().wasSuccessful()) From 4e3f6844eea2102fa90cd4cc11614fa9aff130ef Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 20:28:05 +0000 Subject: [PATCH 20/20] [pre-commit.ci] auto fixes from pre-commit hooks --- devutils/makesdist | 38 +- devutils/sgtbx_extra_groups.py | 87 +- .../api/diffpy.structure.applications.rst | 1 - doc/source/api/diffpy.structure.apps.rst | 1 - doc/source/api/diffpy.structure.expansion.rst | 1 - doc/source/api/diffpy.structure.parsers.rst | 1 - doc/source/api/diffpy.structure.rst | 1 - src/diffpy/Structure.py | 2 +- src/diffpy/__init__.py | 1 - src/diffpy/structure/__init__.py | 13 +- src/diffpy/structure/_legacy_importer.py | 21 +- src/diffpy/structure/applications/__init__.py | 9 +- src/diffpy/structure/apps/anyeye.py | 125 +- src/diffpy/structure/apps/transtru.py | 22 +- src/diffpy/structure/atom.py | 177 +- .../structure/expansion/makeellipsoid.py | 15 +- src/diffpy/structure/expansion/shapeutils.py | 3 +- .../structure/expansion/supercell_mod.py | 16 +- src/diffpy/structure/lattice.py | 271 +- src/diffpy/structure/mmlibspacegroups.py | 13997 ++++++++-------- src/diffpy/structure/parsers/__init__.py | 14 +- src/diffpy/structure/parsers/p_auto.py | 38 +- src/diffpy/structure/parsers/p_cif.py | 359 +- src/diffpy/structure/parsers/p_discus.py | 138 +- src/diffpy/structure/parsers/p_pdb.py | 252 +- src/diffpy/structure/parsers/p_pdffit.py | 194 +- src/diffpy/structure/parsers/p_rawxyz.py | 25 +- src/diffpy/structure/parsers/p_xcfg.py | 317 +- src/diffpy/structure/parsers/p_xyz.py | 33 +- .../structure/parsers/parser_index_mod.py | 120 +- .../structure/parsers/structureparser.py | 14 +- src/diffpy/structure/pdffitstructure.py | 38 +- src/diffpy/structure/sgtbxspacegroups.py | 4796 +++--- src/diffpy/structure/spacegroupmod.py | 269 +- src/diffpy/structure/spacegroups.py | 1470 +- src/diffpy/structure/structure.py | 369 +- src/diffpy/structure/structureerrors.py | 13 +- src/diffpy/structure/symmetryutilities.py | 295 +- src/diffpy/structure/tests/__init__.py | 24 +- src/diffpy/structure/tests/run.py | 8 +- src/diffpy/structure/tests/testatom.py | 74 +- .../structure/tests/testdata/CdSe_bulk.stru | 4 +- .../structure/tests/testdata/LiCl-bad.cif | 19 +- .../structure/tests/testdata/Ni-bad.stru | 4 +- .../structure/tests/testdata/Ni-discus.stru | 4 +- src/diffpy/structure/tests/testdata/Ni.stru | 4 +- .../structure/tests/testdata/Ni_ref.cif | 1 - .../structure/tests/testdata/arginine.pdb | 56 +- .../structure/tests/testdata/bucky-bad2.xyz | 2 - src/diffpy/structure/tests/testdata/bucky.xyz | 2 - src/diffpy/structure/tests/testlattice.py | 145 +- .../structure/tests/testloadstructure.py | 45 +- src/diffpy/structure/tests/testoldimports.py | 33 +- src/diffpy/structure/tests/testp_cif.py | 285 +- src/diffpy/structure/tests/testp_discus.py | 114 +- src/diffpy/structure/tests/testp_pdffit.py | 189 +- src/diffpy/structure/tests/testparsers.py | 189 +- src/diffpy/structure/tests/testspacegroups.py | 63 +- src/diffpy/structure/tests/teststructure.py | 372 +- src/diffpy/structure/tests/testsupercell.py | 45 +- .../structure/tests/testsymmetryutilities.py | 333 +- src/diffpy/structure/tests/testutils.py | 2 + src/diffpy/structure/utils.py | 18 +- 63 files changed, 13706 insertions(+), 11885 deletions(-) diff --git a/devutils/makesdist b/devutils/makesdist index 6aaae616..e77257ea 100755 --- a/devutils/makesdist +++ b/devutils/makesdist @@ -1,51 +1,57 @@ #!/usr/bin/env python -'''Create source distribution tar.gz archive, where each file belongs +"""Create source distribution tar.gz archive, where each file belongs to a root user and modification time is set to the git commit time. -''' +""" -import sys +import glob +import gzip import os import subprocess -import glob +import sys import tarfile -import gzip BASEDIR = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) sys.path.insert(0, BASEDIR) -from setup import versiondata, FALLBACK_VERSION -timestamp = versiondata.getint('DEFAULT', 'timestamp') +from setup import FALLBACK_VERSION, versiondata -vfb = versiondata.get('DEFAULT', 'version').split('.post')[0] + '.post0' +timestamp = versiondata.getint("DEFAULT", "timestamp") + +vfb = versiondata.get("DEFAULT", "version").split(".post")[0] + ".post0" emsg = "Invalid FALLBACK_VERSION. Expected %r got %r." assert vfb == FALLBACK_VERSION, emsg % (vfb, FALLBACK_VERSION) + def inform(s): sys.stdout.write(s) sys.stdout.flush() return + inform('Run "setup.py sdist --formats=tar" ') -cmd_sdist = [sys.executable] + 'setup.py sdist --formats=tar'.split() -ec = subprocess.call(cmd_sdist, cwd=BASEDIR, stdout=open(os.devnull, 'w')) -if ec: sys.exit(ec) +cmd_sdist = [sys.executable] + "setup.py sdist --formats=tar".split() +ec = subprocess.call(cmd_sdist, cwd=BASEDIR, stdout=open(os.devnull, "w")) +if ec: + sys.exit(ec) inform("[done]\n") -tarname = max(glob.glob(BASEDIR + '/dist/*.tar'), key=os.path.getmtime) +tarname = max(glob.glob(BASEDIR + "/dist/*.tar"), key=os.path.getmtime) tfin = tarfile.open(tarname) -fpout = gzip.GzipFile(tarname + '.gz', 'w', mtime=0) -tfout = tarfile.open(fileobj=fpout, mode='w') +fpout = gzip.GzipFile(tarname + ".gz", "w", mtime=0) +tfout = tarfile.open(fileobj=fpout, mode="w") + def fixtarinfo(tinfo): tinfo.uid = tinfo.gid = 0 - tinfo.uname = tinfo.gname = 'root' + tinfo.uname = tinfo.gname = "root" tinfo.mtime = timestamp tinfo.mode &= ~0o022 return tinfo -inform('Filter %s --> %s.gz ' % (2 * (os.path.basename(tarname),))) + +inform("Filter %s --> %s.gz " % (2 * (os.path.basename(tarname),))) for ti in tfin: tfout.addfile(fixtarinfo(ti), tfin.extractfile(ti)) diff --git a/devutils/sgtbx_extra_groups.py b/devutils/sgtbx_extra_groups.py index 5c61ded0..4cab28c2 100644 --- a/devutils/sgtbx_extra_groups.py +++ b/devutils/sgtbx_extra_groups.py @@ -1,28 +1,31 @@ #!/usr/bin/env python -'''Quick and extremely dirty script for generating code for SpaceGroup that +"""Quick and extremely dirty script for generating code for SpaceGroup that are defined in cctbx, but not in mmLib. It was used to generate module sgtbxspacegroups. This is a utility script that should not be included with code distribution. Not to be included with code distributions. -''' +""" -import re import math +import re + import numpy -from diffpy.structure.spacegroups import SpaceGroup, SymOp -from diffpy.structure.spacegroups import mmLibSpaceGroupList -from diffpy.structure.spacegroups import IsSpaceGroupIdentifier from cctbx import sgtbx +from diffpy.structure.spacegroups import IsSpaceGroupIdentifier, SpaceGroup, SymOp, mmLibSpaceGroupList + + def tupleToSGArray(tpl): if not _rtarrays: import diffpy.structure.SpaceGroups as sgmod + for n in dir(sgmod): - if not n.startswith('Rot_') and not n.startswith('Tr_'): continue + if not n.startswith("Rot_") and not n.startswith("Tr_"): + continue a = getattr(sgmod, n) t = tuple(a.flatten()) _rtarrays[t] = a @@ -31,12 +34,13 @@ def tupleToSGArray(tpl): if tpl not in _rtarrays: _rtarrays[tpl] = numpy.array(tpl, dtype=float) return _rtarrays[tpl] + + _rtarrays = {} def mmSpaceGroupFromSymbol(symbol): - """Construct SpaceGroup instance from a string symbol using sgtbx data. - """ + """Construct SpaceGroup instance from a string symbol using sgtbx data.""" sginfo = sgtbx.space_group_info(symbol) symop_list = [] symop_list = getSymOpList(sginfo.group()) @@ -44,16 +48,16 @@ def mmSpaceGroupFromSymbol(symbol): uhm = sgtype.lookup_symbol() sgsmbls = sgtbx.space_group_symbols(uhm) kw = {} - kw['number'] = sgtype.number() - kw['num_sym_equiv'] = len(symop_list) - kw['num_primitive_sym_equiv'] = countUniqueRotations(symop_list) - kw['short_name'] = sgsmbls.hermann_mauguin().replace(' ', '') + kw["number"] = sgtype.number() + kw["num_sym_equiv"] = len(symop_list) + kw["num_primitive_sym_equiv"] = countUniqueRotations(symop_list) + kw["short_name"] = sgsmbls.hermann_mauguin().replace(" ", "") pgt = sgsmbls.point_group_type() - pgn = "PG" + re.sub(r'-(\d)', '\\1bar', pgt) - kw['point_group_name'] = pgn - kw['crystal_system'] = sgsmbls.crystal_system().upper() - kw['pdb_name'] = sgsmbls.hermann_mauguin() - kw['symop_list'] = symop_list + pgn = "PG" + re.sub(r"-(\d)", "\\1bar", pgt) + kw["point_group_name"] = pgn + kw["crystal_system"] = sgsmbls.crystal_system().upper() + kw["pdb_name"] = sgsmbls.hermann_mauguin() + kw["symop_list"] = symop_list mmsg = SpaceGroup(**kw) return mmsg @@ -87,7 +91,8 @@ def countUniqueRotations(symop_list): def cmpSpaceGroups(sg0, sg1): - if sg0 is sg1: return True + if sg0 is sg1: + return True s0 = hashMMSpaceGroup(sg0) s1 = hashMMSpaceGroup(sg1) return s0 == s1 @@ -100,6 +105,8 @@ def findEquivalentMMSpaceGroup(grp): _equivmmsg.setdefault(ssgn, sgn) ssg = hashSgtbxGroup(grp) return _equivmmsg.get(ssg) + + _equivmmsg = {} @@ -112,24 +119,27 @@ def findEquivalentSgtbxSpaceGroup(sgmm): _equivsgtbx.setdefault(hgrp, grp) hgmm = hashMMSpaceGroup(sgmm) return _equivsgtbx.get(hgmm) + + _equivsgtbx = {} def hashMMSpaceGroup(sg): lines = [str(sg.number % 1000)] + sorted(map(str, sg.iter_symops())) - s = '\n'.join(lines) + s = "\n".join(lines) return s def hashSgtbxGroup(grp): n = grp.type().number() lines = [str(n)] + sorted(map(str, getSymOpList(grp))) - s = '\n'.join(lines) + s = "\n".join(lines) return s + sgnumbers = [sg.number for sg in mmLibSpaceGroupList] -_SGsrc = '''\ +_SGsrc = """\ sg%(number)i = SpaceGroup( number = %(number)i, num_sym_equiv = %(num_sym_equiv)i, @@ -142,32 +152,37 @@ def hashSgtbxGroup(grp): @SYMOPS@ ] ) -''' +""" + def SGCode(mmsg): src0 = _SGsrc % mmsg.__dict__ - src1 = src0.replace('@SYMOPS@', SymOpsCode(mmsg)) + src1 = src0.replace("@SYMOPS@", SymOpsCode(mmsg)) return src1 def SymOpsCode(mmsg): - lst = ["%8s%s," % ('', SymOpCode(op)) for op in mmsg.iter_symops()] - src = '\n'.join(lst).strip() + lst = ["%8s%s," % ("", SymOpCode(op)) for op in mmsg.iter_symops()] + src = "\n".join(lst).strip() return src def SymOpCode(op): if not _rtnames: import diffpy.structure.SpaceGroups as sgmod + for n in dir(sgmod): - if not n.startswith('Rot_') and not n.startswith('Tr_'): continue + if not n.startswith("Rot_") and not n.startswith("Tr_"): + continue a = getattr(sgmod, n) at = tuple(a.flatten()) - _rtnames[at] = 'sgmod.' + n + _rtnames[at] = "sgmod." + n nR = _rtnames[tuple(op.R.flatten())] nt = _rtnames[tuple(op.t)] - src = 'SymOp(%s, %s)' % (nR, nt) + src = "SymOp(%s, %s)" % (nR, nt) return src + + _rtnames = {} @@ -176,16 +191,20 @@ def main(): for smbls in sgtbx.space_group_symbol_iterator(): uhm = smbls.universal_hermann_mauguin() grp = sgtbx.space_group_info(uhm).group() - if findEquivalentMMSpaceGroup(grp): continue - shn = smbls.hermann_mauguin().replace(' ', '') - if IsSpaceGroupIdentifier(shn): continue + if findEquivalentMMSpaceGroup(grp): + continue + shn = smbls.hermann_mauguin().replace(" ", "") + if IsSpaceGroupIdentifier(shn): + continue sg = mmSpaceGroupFromSymbol(uhm) hsg = hashMMSpaceGroup(sg) - if hsg in duplicates: continue + if hsg in duplicates: + continue adjustMMSpaceGroupNumber(sg) duplicates.add(hsg) print(SGCode(sg)) return -if __name__ == '__main__': + +if __name__ == "__main__": main() diff --git a/doc/source/api/diffpy.structure.applications.rst b/doc/source/api/diffpy.structure.applications.rst index 57dedf41..30316d0b 100644 --- a/doc/source/api/diffpy.structure.applications.rst +++ b/doc/source/api/diffpy.structure.applications.rst @@ -26,4 +26,3 @@ diffpy.structure.applications.anyeye module :members: :undoc-members: :show-inheritance: - diff --git a/doc/source/api/diffpy.structure.apps.rst b/doc/source/api/diffpy.structure.apps.rst index 5ac351dd..8b91adf5 100644 --- a/doc/source/api/diffpy.structure.apps.rst +++ b/doc/source/api/diffpy.structure.apps.rst @@ -26,4 +26,3 @@ diffpy.structure.apps.anyeye module :members: :undoc-members: :show-inheritance: - diff --git a/doc/source/api/diffpy.structure.expansion.rst b/doc/source/api/diffpy.structure.expansion.rst index afce983c..34529fcd 100644 --- a/doc/source/api/diffpy.structure.expansion.rst +++ b/doc/source/api/diffpy.structure.expansion.rst @@ -34,4 +34,3 @@ diffpy.structure.expansion.supercell_mod module :members: :undoc-members: :show-inheritance: - diff --git a/doc/source/api/diffpy.structure.parsers.rst b/doc/source/api/diffpy.structure.parsers.rst index 54a88f2e..74a27bcb 100644 --- a/doc/source/api/diffpy.structure.parsers.rst +++ b/doc/source/api/diffpy.structure.parsers.rst @@ -90,4 +90,3 @@ diffpy.structure.parsers.p_xyz module :members: :undoc-members: :show-inheritance: - diff --git a/doc/source/api/diffpy.structure.rst b/doc/source/api/diffpy.structure.rst index 8d60dd1c..e414b921 100644 --- a/doc/source/api/diffpy.structure.rst +++ b/doc/source/api/diffpy.structure.rst @@ -117,4 +117,3 @@ diffpy.structure.sgtbxspacegroups module :members: :undoc-members: :show-inheritance: - diff --git a/src/diffpy/Structure.py b/src/diffpy/Structure.py index ee3c69ab..7847de42 100644 --- a/src/diffpy/Structure.py +++ b/src/diffpy/Structure.py @@ -29,6 +29,6 @@ import diffpy.structure._legacy_importer # replace this module with the new one -sys.modules['diffpy.Structure'] = diffpy.structure +sys.modules["diffpy.Structure"] = diffpy.structure # End of file diff --git a/src/diffpy/__init__.py b/src/diffpy/__init__.py index 3e7952ae..ee55ab5f 100644 --- a/src/diffpy/__init__.py +++ b/src/diffpy/__init__.py @@ -21,4 +21,3 @@ __path__ = extend_path(__path__, __name__) # End of file - diff --git a/src/diffpy/structure/__init__.py b/src/diffpy/structure/__init__.py index c5197b90..377a1991 100644 --- a/src/diffpy/structure/__init__.py +++ b/src/diffpy/structure/__init__.py @@ -27,12 +27,11 @@ # Interface definitions ------------------------------------------------------ -from diffpy.structure.structureerrors import (StructureFormatError, - LatticeError, SymmetryError) from diffpy.structure.atom import Atom from diffpy.structure.lattice import Lattice -from diffpy.structure.structure import Structure from diffpy.structure.pdffitstructure import PDFFitStructure +from diffpy.structure.structure import Structure +from diffpy.structure.structureerrors import LatticeError, StructureFormatError, SymmetryError # obtain version information @@ -43,7 +42,8 @@ # top level routines -def loadStructure(filename, fmt='auto', **kw): + +def loadStructure(filename, fmt="auto", **kw): """ Load new structure object from the specified file. @@ -69,13 +69,14 @@ def loadStructure(filename, fmt='auto', **kw): and 'discus' formats. """ from diffpy.structure.parsers import getParser + p = getParser(fmt, **kw) rv = p.parseFile(filename) return rv + # silence pyflakes checker -assert (StructureFormatError and - LatticeError and SymmetryError) +assert StructureFormatError and LatticeError and SymmetryError assert Atom assert Lattice assert Structure diff --git a/src/diffpy/structure/_legacy_importer.py b/src/diffpy/structure/_legacy_importer.py index 8bb36114..743de895 100644 --- a/src/diffpy/structure/_legacy_importer.py +++ b/src/diffpy/structure/_legacy_importer.py @@ -27,15 +27,18 @@ import sys from warnings import warn + import six if six.PY2: import importlib + class mock_importlib_abc(object): MetaPathFinder = object Loader = object + importlib.abc = mock_importlib_abc - sys.modules.setdefault('importlib.abc', mock_importlib_abc) + sys.modules.setdefault("importlib.abc", mock_importlib_abc) del mock_importlib_abc import importlib.abc @@ -44,9 +47,10 @@ class mock_importlib_abc(object): # ---------------------------------------------------------------------------- + class FindRenamedStructureModule(importlib.abc.MetaPathFinder): - prefix = 'diffpy.Structure.' + prefix = "diffpy.Structure." def find_spec(self, fullname, path=None, target=None): # only handle submodules of diffpy.Structure @@ -59,8 +63,8 @@ def find_spec(self, fullname, path=None, target=None): spec.loader = MapRenamedStructureModule() return spec - if six.PY2: + def find_module(self, fullname, path): # only handle submodules of diffpy.Structure loader = None @@ -68,10 +72,12 @@ def find_module(self, fullname, path): loader = MapRenamedStructureModule() return loader + # end of class FindRenamedStructureModule # ---------------------------------------------------------------------------- + class MapRenamedStructureModule(importlib.abc.Loader): """ Loader for old camel-case module names. @@ -86,26 +92,25 @@ def create_module(self, spec): warn(WMSG.format(spec.name, lcname), DeprecationWarning, stacklevel=2) return mod - def exec_module(self, module): return - if six.PY2: from collections import namedtuple - ModuleSpec = namedtuple('ModuleSpec', 'name') + + ModuleSpec = namedtuple("ModuleSpec", "name") def load_module(self, fullname): spec = self.ModuleSpec(fullname) return self.create_module(spec) + # end of class MapRenamedStructureModule # ---------------------------------------------------------------------------- # show deprecation warning for diffpy.Structure -warn(WMSG.format('diffpy.Structure', 'diffpy.structure'), - DeprecationWarning, stacklevel=2) +warn(WMSG.format("diffpy.Structure", "diffpy.structure"), DeprecationWarning, stacklevel=2) # install meta path finder for diffpy.Structure submodules sys.meta_path.append(FindRenamedStructureModule()) diff --git a/src/diffpy/structure/applications/__init__.py b/src/diffpy/structure/applications/__init__.py index 50e8dae2..bc4f87eb 100644 --- a/src/diffpy/structure/applications/__init__.py +++ b/src/diffpy/structure/applications/__init__.py @@ -23,7 +23,8 @@ from warnings import warn - -warn("Module 'diffpy.structure.applications' is deprecated. " - "Import 'diffpy.structure.apps' instead.", - DeprecationWarning, stacklevel=2) +warn( + "Module 'diffpy.structure.applications' is deprecated. " "Import 'diffpy.structure.apps' instead.", + DeprecationWarning, + stacklevel=2, +) diff --git a/src/diffpy/structure/apps/anyeye.py b/src/diffpy/structure/apps/anyeye.py index cf101da3..ff98a0c0 100755 --- a/src/diffpy/structure/apps/anyeye.py +++ b/src/diffpy/structure/apps/anyeye.py @@ -35,31 +35,34 @@ from __future__ import print_function -import sys import os import re import signal +import sys + from diffpy.structure import StructureFormatError # parameter dictionary -pd = { 'formula' : None, - 'watch' : False, - 'viewer' : 'atomeye', - 'formats' : ['xcfg', 'pdb'], +pd = { + "formula": None, + "watch": False, + "viewer": "atomeye", + "formats": ["xcfg", "pdb"], } -def usage(style = None): +def usage(style=None): """show usage info, for style=="brief" show only first 2 lines""" import os.path + myname = os.path.basename(sys.argv[0]) msg = __doc__.replace("anyeye", myname) - if style == 'brief': - msg = msg.split("\n")[1] + "\n" + \ - "Try `%s --help' for more information." % myname + if style == "brief": + msg = msg.split("\n")[1] + "\n" + "Try `%s --help' for more information." % myname else: from diffpy.structure.parsers import inputFormats - fmts = [ f for f in inputFormats() if f != 'auto' ] + + fmts = [f for f in inputFormats() if f != "auto"] msg = msg.replace("inputFormats", " ".join(fmts)) print(msg) return @@ -67,6 +70,7 @@ def usage(style = None): def version(): from diffpy.structure import __version__ + print("anyeye", __version__) return @@ -77,6 +81,7 @@ def loadStructureFile(filename, format="auto"): Return a tuple of (Structure, fileformat). """ from diffpy.structure import Structure + stru = Structure() p = stru.read(filename, format) fileformat = p.format @@ -85,48 +90,51 @@ def loadStructureFile(filename, format="auto"): def convertStructureFile(pd): # make temporary directory on the first pass - if 'tmpdir' not in pd: + if "tmpdir" not in pd: from tempfile import mkdtemp - pd['tmpdir'] = mkdtemp() - strufile = pd['strufile'] - tmpfile = os.path.join(pd['tmpdir'], os.path.basename(strufile)) - pd['tmpfile'] = tmpfile + + pd["tmpdir"] = mkdtemp() + strufile = pd["strufile"] + tmpfile = os.path.join(pd["tmpdir"], os.path.basename(strufile)) + pd["tmpfile"] = tmpfile # speed up file processing in the watch mode - fmt = pd.get('format', 'auto') + fmt = pd.get("format", "auto") stru = None - if fmt == 'auto': + if fmt == "auto": stru, fmt = loadStructureFile(strufile) - pd['fmt'] = fmt + pd["fmt"] = fmt # if fmt is recognized by the viewer, use as is - if fmt in pd['formats'] and pd['formula'] is None: + if fmt in pd["formats"] and pd["formula"] is None: import shutil - shutil.copyfile(strufile, tmpfile+'.tmp') - os.rename(tmpfile+'.tmp', tmpfile) + + shutil.copyfile(strufile, tmpfile + ".tmp") + os.rename(tmpfile + ".tmp", tmpfile) return # otherwise convert to the first recognized viewer format if stru is None: stru = loadStructureFile(strufile, fmt)[0] - if pd['formula']: - formula = pd['formula'] + if pd["formula"]: + formula = pd["formula"] if len(formula) != len(stru): - emsg = "Formula has %i atoms while structure %i" % ( - len(formula), len(stru) ) + emsg = "Formula has %i atoms while structure %i" % (len(formula), len(stru)) raise RuntimeError(emsg) for a, el in zip(stru, formula): a.element = el elif format == "rawxyz": for a in stru: - if a.element == "": a.element = "C" - stru.write(tmpfile+'.tmp', pd['formats'][0]) - os.rename(tmpfile+'.tmp', tmpfile) + if a.element == "": + a.element = "C" + stru.write(tmpfile + ".tmp", pd["formats"][0]) + os.rename(tmpfile + ".tmp", tmpfile) return def watchStructureFile(pd): from time import sleep - strufile = pd['strufile'] - tmpfile = pd['tmpfile'] - while pd['watch']: + + strufile = pd["strufile"] + tmpfile = pd["tmpfile"] + while pd["watch"]: if os.path.getmtime(tmpfile) < os.path.getmtime(strufile): convertStructureFile(pd) sleep(1) @@ -134,31 +142,31 @@ def watchStructureFile(pd): def cleanUp(pd): - if 'tmpfile' in pd: - os.remove(pd['tmpfile']) - del pd['tmpfile'] - if 'tmpdir' in pd: - os.rmdir(pd['tmpdir']) - del pd['tmpdir'] + if "tmpfile" in pd: + os.remove(pd["tmpfile"]) + del pd["tmpfile"] + if "tmpdir" in pd: + os.rmdir(pd["tmpdir"]) + del pd["tmpdir"] return def parseFormula(formula): """parse chemical formula and return a list of elements""" # remove all blanks - formula = re.sub(r'\s', '', formula) - if not re.match('^[A-Z]', formula): + formula = re.sub(r"\s", "", formula) + if not re.match("^[A-Z]", formula): raise RuntimeError("InvalidFormula '%s'" % formula) - elcnt = re.split('([A-Z][a-z]?)', formula)[1:] + elcnt = re.split("([A-Z][a-z]?)", formula)[1:] ellst = [] try: for i in range(0, len(elcnt), 2): el = elcnt[i] - cnt = elcnt[i+1] + cnt = elcnt[i + 1] cnt = (cnt == "") and 1 or int(cnt) - ellst.extend(cnt*[el]) + ellst.extend(cnt * [el]) except ValueError: - emsg = "Invalid formula, %r is not valid count" % elcnt[i+1] + emsg = "Invalid formula, %r is not valid count" % elcnt[i + 1] raise RuntimeError(emsg) return ellst @@ -173,7 +181,7 @@ def signalHandler(signum, stackframe): signal.signal(signum, signal.SIG_DFL) if signum == signal.SIGCHLD: pid, exit_status = os.wait() - exit_status = (exit_status >> 8) + (exit_status & 0x00ff) + exit_status = (exit_status >> 8) + (exit_status & 0x00FF) die(exit_status, pd) else: die(1, pd) @@ -182,12 +190,13 @@ def signalHandler(signum, stackframe): def main(): import getopt + # default parameters - pd['watch'] = False + pd["watch"] = False try: - opts, args = getopt.getopt(sys.argv[1:], "f:whV", - ["formula=", "watch", "viewer=", "formats=", - "help", "version"]) + opts, args = getopt.getopt( + sys.argv[1:], "f:whV", ["formula=", "watch", "viewer=", "formats=", "help", "version"] + ) except getopt.GetoptError as errmsg: print(errmsg, file=sys.stderr) die(2) @@ -195,16 +204,16 @@ def main(): for o, a in opts: if o in ("-f", "--formula"): try: - pd['formula'] = parseFormula(a) + pd["formula"] = parseFormula(a) except RuntimeError as msg: print(msg, file=sys.stderr) die(2) elif o in ("-w", "--watch"): - pd['watch'] = True + pd["watch"] = True elif o == "--viewer": - pd['viewer'] = a + pd["viewer"] = a elif o == "--formats": - pd['formats'] = [w.strip() for w in a.split(',')] + pd["formats"] = [w.strip() for w in a.split(",")] elif o in ("-h", "--help"): usage() die() @@ -212,12 +221,12 @@ def main(): version() die() if len(args) < 1: - usage('brief') + usage("brief") die() elif len(args) > 1: print("too many structure files", file=sys.stderr) die(2) - pd['strufile'] = args[0] + pd["strufile"] = args[0] # trap the following signals signal.signal(signal.SIGHUP, signalHandler) signal.signal(signal.SIGQUIT, signalHandler) @@ -225,14 +234,14 @@ def main(): signal.signal(signal.SIGTERM, signalHandler) signal.signal(signal.SIGINT, signalHandler) env = os.environ.copy() - if os.path.basename(pd['viewer']).startswith('atomeye'): - env['XLIB_SKIP_ARGB_VISUALS'] = "1" + if os.path.basename(pd["viewer"]).startswith("atomeye"): + env["XLIB_SKIP_ARGB_VISUALS"] = "1" # try to run the thing: try: convertStructureFile(pd) - spawnargs = (pd['viewer'], pd['viewer'], pd['tmpfile'], env) + spawnargs = (pd["viewer"], pd["viewer"], pd["tmpfile"], env) # load strufile in atomeye - if pd['watch']: + if pd["watch"]: signal.signal(signal.SIGCLD, signalHandler) os.spawnlpe(os.P_NOWAIT, *spawnargs) watchStructureFile(pd) diff --git a/src/diffpy/structure/apps/transtru.py b/src/diffpy/structure/apps/transtru.py index 05207ed1..902cb237 100755 --- a/src/diffpy/structure/apps/transtru.py +++ b/src/diffpy/structure/apps/transtru.py @@ -37,16 +37,18 @@ from diffpy.structure import Structure, StructureFormatError -def usage(style = None): + +def usage(style=None): """show usage info, for style=="brief" show only first 2 lines""" import os.path + myname = os.path.basename(sys.argv[0]) msg = __doc__.replace("transtru", myname) - if style == 'brief': - msg = msg.split("\n")[1] + "\n" + \ - "Try `%s --help' for more information." % myname + if style == "brief": + msg = msg.split("\n")[1] + "\n" + "Try `%s --help' for more information." % myname else: from diffpy.structure.parsers import inputFormats, outputFormats + msg = msg.replace("inputFormats", " ".join(inputFormats())) msg = msg.replace("outputFormats", " ".join(outputFormats())) print(msg) @@ -55,16 +57,17 @@ def usage(style = None): def version(): from diffpy.structure import __version__ + print("diffpy.structure", __version__) return def main(): import getopt + # default parameters try: - opts, args = getopt.getopt(sys.argv[1:], "hV", - ["help", "version"]) + opts, args = getopt.getopt(sys.argv[1:], "hV", ["help", "version"]) except getopt.GetoptError as errmsg: print(errmsg, file=sys.stderr) sys.exit(2) @@ -77,12 +80,13 @@ def main(): version() sys.exit() if len(args) < 1: - usage('brief') + usage("brief") sys.exit() # process arguments from diffpy.structure.parsers import inputFormats, outputFormats + try: - infmt, outfmt = args[0].split('..', 1) + infmt, outfmt = args[0].split("..", 1) if infmt not in inputFormats(): print("'%s' is not valid input format" % infmt, file=sys.stderr) sys.exit(2) @@ -100,7 +104,7 @@ def main(): stru.readStr(sys.stdin.read(), infmt) else: stru.read(strufile, infmt) - sys.stdout.write( stru.writeStr(outfmt) ) + sys.stdout.write(stru.writeStr(outfmt)) except IndexError: print("strufile not specified", file=sys.stderr) sys.exit(2) diff --git a/src/diffpy/structure/atom.py b/src/diffpy/structure/atom.py index 2742b6a7..3745d56a 100644 --- a/src/diffpy/structure/atom.py +++ b/src/diffpy/structure/atom.py @@ -23,11 +23,12 @@ from diffpy.structure.lattice import cartesian as cartesian_lattice # conversion constants -_BtoU = 1.0/(8 * numpy.pi**2) -_UtoB = 1.0/_BtoU +_BtoU = 1.0 / (8 * numpy.pi**2) +_UtoB = 1.0 / _BtoU # ---------------------------------------------------------------------------- + class Atom(object): """ Storage of structure information relevant for a single atom. @@ -91,14 +92,23 @@ class Atom(object): # Internal storage of the displacement parameters. # instance attributes that have immutable default values - element = '' - label = '' + element = "" + label = "" occupancy = 1.0 _anisotropy = False lattice = None - def __init__(self, atype=None, xyz=None, label=None, occupancy=None, - anisotropy=None, U=None, Uisoequiv=None, lattice=None): + def __init__( + self, + atype=None, + xyz=None, + label=None, + occupancy=None, + anisotropy=None, + U=None, + Uisoequiv=None, + lattice=None, + ): """ Create atom of the specified type at the given lattice coordinates. @@ -110,7 +120,7 @@ def __init__(self, atype=None, xyz=None, label=None, occupancy=None, raise ValueError(emsg) # declare data members self.xyz = numpy.zeros(3, dtype=float) - self._U = numpy.zeros((3,3), dtype=float) + self._U = numpy.zeros((3, 3), dtype=float) # assign them as needed if isinstance(atype, Atom): atype.__copy__(target=self) @@ -137,7 +147,6 @@ def __init__(self, atype=None, xyz=None, label=None, occupancy=None, self.anisotropy = bool(anisotropy) return - def msdLat(self, vl): """ Calculate mean square displacement along the lattice vector. @@ -152,19 +161,17 @@ def msdLat(self, vl): float The mean square displacement along *vl*. """ - if not self.anisotropy: return self.Uisoequiv + if not self.anisotropy: + return self.Uisoequiv # here we need to calculate msd lat = self.lattice or cartesian_lattice - vln = numpy.array(vl, dtype=float)/lat.norm(vl) + vln = numpy.array(vl, dtype=float) / lat.norm(vl) G = lat.metrics - rhs = numpy.array([ G[0]*lat.ar, - G[1]*lat.br, - G[2]*lat.cr ], dtype=float) + rhs = numpy.array([G[0] * lat.ar, G[1] * lat.br, G[2] * lat.cr], dtype=float) rhs = numpy.dot(rhs, vln) msd = numpy.dot(rhs, numpy.dot(self.U, rhs)) return msd - def msdCart(self, vc): """ Calculate mean square displacement along the Cartesian vector. @@ -179,7 +186,8 @@ def msdCart(self, vc): float The mean square displacement along *vc*. """ - if not self.anisotropy: return self.Uisoequiv + if not self.anisotropy: + return self.Uisoequiv # here we need to calculate msd lat = self.lattice or cartesian_lattice vcn = numpy.array(vc, dtype=float) @@ -189,17 +197,14 @@ def msdCart(self, vc): msd = numpy.dot(vcn, numpy.dot(Uc, vcn)) return msd - def __repr__(self): """ String representation of this Atom. """ xyz = self.xyz - s = "%-4s %8.6f %8.6f %8.6f %6.4f" % \ - (self.element, xyz[0], xyz[1], xyz[2], self.occupancy) + s = "%-4s %8.6f %8.6f %8.6f %6.4f" % (self.element, xyz[0], xyz[1], xyz[2], self.occupancy) return s - def __copy__(self, target=None): """ Create a copy of this instance. @@ -228,15 +233,21 @@ def __copy__(self, target=None): # property handlers ------------------------------------------------------ - x = property(lambda self: self.xyz[0], - lambda self, val: self.xyz.__setitem__(0, val), - doc='float : fractional coordinate *x*, same as ``xyz[0]``.') - y = property(lambda self: self.xyz[1], - lambda self, val: self.xyz.__setitem__(1, val), - doc='float : fractional coordinate *y*, same as ``xyz[1]``.') - z = property(lambda self: self.xyz[2], - lambda self, val: self.xyz.__setitem__(2, val), - doc='float : fractional coordinate *z*, same as ``xyz[2]``.') + x = property( + lambda self: self.xyz[0], + lambda self, val: self.xyz.__setitem__(0, val), + doc="float : fractional coordinate *x*, same as ``xyz[0]``.", + ) + y = property( + lambda self: self.xyz[1], + lambda self, val: self.xyz.__setitem__(1, val), + doc="float : fractional coordinate *y*, same as ``xyz[1]``.", + ) + z = property( + lambda self: self.xyz[2], + lambda self, val: self.xyz.__setitem__(2, val), + doc="float : fractional coordinate *z*, same as ``xyz[2]``.", + ) # xyz_cartn @@ -350,15 +361,15 @@ def _set_Uij(self, i, j, value): tensor *U*. """ - U11 = property(lambda self : self._get_Uij(0, 0), - lambda self, value : self._set_Uij(0, 0, value), - doc=_doc_uii.format(0)) - U22 = property(lambda self : self._get_Uij(1, 1), - lambda self, value : self._set_Uij(1, 1, value), - doc=_doc_uii.format(1)) - U33 = property(lambda self : self._get_Uij(2, 2), - lambda self, value : self._set_Uij(2, 2, value), - doc=_doc_uii.format(2)) + U11 = property( + lambda self: self._get_Uij(0, 0), lambda self, value: self._set_Uij(0, 0, value), doc=_doc_uii.format(0) + ) + U22 = property( + lambda self: self._get_Uij(1, 1), lambda self, value: self._set_Uij(1, 1, value), doc=_doc_uii.format(1) + ) + U33 = property( + lambda self: self._get_Uij(2, 2), lambda self, value: self._set_Uij(2, 2, value), doc=_doc_uii.format(2) + ) _doc_uij = """ float : The ``U[{0}, {1}]`` element of the displacement tensor `U`. @@ -367,15 +378,15 @@ def _set_Uij(self, i, j, value): has no effect when `anisotropy` is ``False``. """ - U12 = property(lambda self : self._get_Uij(0, 1), - lambda self, value : self._set_Uij(0, 1, value), - doc=_doc_uij.format(0, 1)) - U13 = property(lambda self : self._get_Uij(0, 2), - lambda self, value : self._set_Uij(0, 2, value), - doc=_doc_uij.format(0, 2)) - U23 = property(lambda self : self._get_Uij(1, 2), - lambda self, value : self._set_Uij(1, 2, value), - doc=_doc_uij.format(1, 2)) + U12 = property( + lambda self: self._get_Uij(0, 1), lambda self, value: self._set_Uij(0, 1, value), doc=_doc_uij.format(0, 1) + ) + U13 = property( + lambda self: self._get_Uij(0, 2), lambda self, value: self._set_Uij(0, 2, value), doc=_doc_uij.format(0, 2) + ) + U23 = property( + lambda self: self._get_Uij(1, 2), lambda self, value: self._set_Uij(1, 2, value), doc=_doc_uij.format(1, 2) + ) # clean local variables del _doc_uii, _doc_uij @@ -395,13 +406,18 @@ def Uisoequiv(self): if self.lattice is None: return numpy.trace(self._U) / 3.0 lat = self.lattice - rv = 1.0 / 3.0 * ( - self._U[0,0]*lat.ar*lat.ar*lat.a*lat.a + - self._U[1,1]*lat.br*lat.br*lat.b*lat.b + - self._U[2,2]*lat.cr*lat.cr*lat.c*lat.c + - 2*self._U[0,1]*lat.ar*lat.br*lat.a*lat.b*lat.cg + - 2*self._U[0,2]*lat.ar*lat.cr*lat.a*lat.c*lat.cb + - 2*self._U[1,2]*lat.br*lat.cr*lat.b*lat.c*lat.ca) + rv = ( + 1.0 + / 3.0 + * ( + self._U[0, 0] * lat.ar * lat.ar * lat.a * lat.a + + self._U[1, 1] * lat.br * lat.br * lat.b * lat.b + + self._U[2, 2] * lat.cr * lat.cr * lat.c * lat.c + + 2 * self._U[0, 1] * lat.ar * lat.br * lat.a * lat.b * lat.cg + + 2 * self._U[0, 2] * lat.ar * lat.cr * lat.a * lat.c * lat.cb + + 2 * self._U[1, 2] * lat.br * lat.cr * lat.b * lat.c * lat.ca + ) + ) return rv @Uisoequiv.setter @@ -436,24 +452,36 @@ def Uisoequiv(self, value): when `anisotropy` is ``False``. """ - B11 = property(lambda self : _UtoB * self._get_Uij(0, 0), - lambda self, value : self._set_Uij(0, 0, _BtoU * value), - doc=_doc_bii.format(1)) - B22 = property(lambda self : _UtoB * self._get_Uij(1, 1), - lambda self, value : self._set_Uij(1, 1, _BtoU * value), - doc=_doc_bii.format(2)) - B33 = property(lambda self : _UtoB * self._get_Uij(2, 2), - lambda self, value : self._set_Uij(2, 2, _BtoU * value), - doc=_doc_bii.format(3)) - B12 = property(lambda self : _UtoB * self._get_Uij(0, 1), - lambda self, value : self._set_Uij(0, 1, _BtoU * value), - doc=_doc_bij.format(1, 2)) - B13 = property(lambda self : _UtoB * self._get_Uij(0, 2), - lambda self, value : self._set_Uij(0, 2, _BtoU * value), - doc=_doc_bij.format(1, 3)) - B23 = property(lambda self : _UtoB * self._get_Uij(1, 2), - lambda self, value : self._set_Uij(1, 2, _BtoU * value), - doc=_doc_bij.format(2, 3)) + B11 = property( + lambda self: _UtoB * self._get_Uij(0, 0), + lambda self, value: self._set_Uij(0, 0, _BtoU * value), + doc=_doc_bii.format(1), + ) + B22 = property( + lambda self: _UtoB * self._get_Uij(1, 1), + lambda self, value: self._set_Uij(1, 1, _BtoU * value), + doc=_doc_bii.format(2), + ) + B33 = property( + lambda self: _UtoB * self._get_Uij(2, 2), + lambda self, value: self._set_Uij(2, 2, _BtoU * value), + doc=_doc_bii.format(3), + ) + B12 = property( + lambda self: _UtoB * self._get_Uij(0, 1), + lambda self, value: self._set_Uij(0, 1, _BtoU * value), + doc=_doc_bij.format(1, 2), + ) + B13 = property( + lambda self: _UtoB * self._get_Uij(0, 2), + lambda self, value: self._set_Uij(0, 2, _BtoU * value), + doc=_doc_bij.format(1, 3), + ) + B23 = property( + lambda self: _UtoB * self._get_Uij(1, 2), + lambda self, value: self._set_Uij(1, 2, _BtoU * value), + doc=_doc_bij.format(2, 3), + ) # clean local variables del _doc_bii, _doc_bij @@ -476,10 +504,12 @@ def Bisoequiv(self, value): self.Uisoequiv = _BtoU * value return + # End of class Atom # Local Helpers -------------------------------------------------------------- + class _AtomCartesianCoordinates(numpy.ndarray): """ Specialized numpy.ndarray for accessing Cartesian coordinates. @@ -499,13 +529,11 @@ def __new__(self, atom): """ return numpy.empty(3, dtype=float).view(self) - def __init__(self, atom): self._atom = atom self.asarray[:] = atom.lattice.cartesian(atom.xyz) return - @property def asarray(self): """ @@ -513,7 +541,6 @@ def asarray(self): """ return self.view(numpy.ndarray) - def __setitem__(self, idx, value): """ Set some element or slice of this Cartesian coordinates. @@ -525,7 +552,6 @@ def __setitem__(self, idx, value): self._atom.xyz[:] = self._atom.lattice.fractional(self) return - def __array_wrap__(self, out_arr, context=None): """ Ensure math operations on this type yield standard numpy array. @@ -542,4 +568,5 @@ def __setslice__(self, lo, hi, sequence): # ------------------------------------------------------------------------ + # End of _AtomCartesianCoordinates diff --git a/src/diffpy/structure/expansion/makeellipsoid.py b/src/diffpy/structure/expansion/makeellipsoid.py index 9b22b69b..bfd3a8e3 100644 --- a/src/diffpy/structure/expansion/makeellipsoid.py +++ b/src/diffpy/structure/expansion/makeellipsoid.py @@ -16,7 +16,9 @@ """Make a spheroid nanoparticle from a template structure.""" from math import ceil + from numpy import array + from diffpy.structure import Structure from diffpy.structure.expansion.shapeutils import findCenter @@ -46,8 +48,10 @@ def makeEllipsoid(S, a, b=None, c=None): Returns a new structure instance """ - if b is None: b = a - if c is None: c = a + if b is None: + b = a + if c is None: + c = a sabc = array([a, b, c]) # Create a supercell large enough for the ellipsoid @@ -56,6 +60,7 @@ def makeEllipsoid(S, a, b=None, c=None): mno = max(ceil(2 * xi) for xi in frac) * array([1, 1, 1]) # Make the supercell from diffpy.structure.expansion import supercell + newS = supercell(S, mno) lat = newS.lattice @@ -72,8 +77,8 @@ def makeEllipsoid(S, a, b=None, c=None): # Calculate (x/a)**2 + (y/b)**2 + (z/c)**2 xyz = lat.cartesian(newS[j].xyz) - darray = ((xyz-cxyz)/sabc)**2 - d = sum(darray)**0.5 + darray = ((xyz - cxyz) / sabc) ** 2 + d = sum(darray) ** 0.5 # Discard atom if (x/a)**2 + (y/b)**2 + (z/c)**2 > 1 if d > 1: @@ -84,10 +89,12 @@ def makeEllipsoid(S, a, b=None, c=None): return newS + # ---------------------------------------------------------------------------- if __name__ == "__main__": import os.path + datadir = "../../tests/testdata" S = Structure() S.read(os.path.join(datadir, "CdSe_bulk.stru"), "pdffit") diff --git a/src/diffpy/structure/expansion/shapeutils.py b/src/diffpy/structure/expansion/shapeutils.py index 6638ee77..d05daecf 100644 --- a/src/diffpy/structure/expansion/shapeutils.py +++ b/src/diffpy/structure/expansion/shapeutils.py @@ -15,6 +15,7 @@ """Utilities for making shapes.""" + def findCenter(S): """Find the approximate center atom of a structure. @@ -24,7 +25,7 @@ def findCenter(S): """ best = -1 bestd = len(S) - center = [0.5, 0.5, 0.5] # the cannonical center + center = [0.5, 0.5, 0.5] # the cannonical center for i in range(len(S)): d = S.lattice.dist(S[i].xyz, center) diff --git a/src/diffpy/structure/expansion/supercell_mod.py b/src/diffpy/structure/expansion/supercell_mod.py index aa71a8fe..d0dc5f0a 100644 --- a/src/diffpy/structure/expansion/supercell_mod.py +++ b/src/diffpy/structure/expansion/supercell_mod.py @@ -17,7 +17,8 @@ """ import numpy -from diffpy.structure import Structure, Atom + +from diffpy.structure import Atom, Structure def supercell(S, mno): @@ -55,10 +56,7 @@ def supercell(S, mno): return newS # back to business - ijklist = [(i,j,k) - for i in range(mno[0]) - for j in range(mno[1]) - for k in range(mno[2])] + ijklist = [(i, j, k) for i in range(mno[0]) for j in range(mno[1]) for k in range(mno[2])] # numpy.floor returns float array mnofloats = numpy.array(mno, dtype=float) @@ -67,16 +65,14 @@ def supercell(S, mno): for a in S: for ijk in ijklist: adup = Atom(a) - adup.xyz = (a.xyz + ijk)/mnofloats + adup.xyz = (a.xyz + ijk) / mnofloats newAtoms.append(adup) # newS can own references in newAtoms, no need to make copies newS.__setitem__(slice(None), newAtoms, copy=False) # take care of lattice parameters - newS.lattice.setLatPar( - a=mno[0]*S.lattice.a, - b=mno[1]*S.lattice.b, - c=mno[2]*S.lattice.c ) + newS.lattice.setLatPar(a=mno[0] * S.lattice.a, b=mno[1] * S.lattice.b, c=mno[2] * S.lattice.c) return newS + # End of supercell diff --git a/src/diffpy/structure/lattice.py b/src/diffpy/structure/lattice.py index e18e9fc0..4924850b 100644 --- a/src/diffpy/structure/lattice.py +++ b/src/diffpy/structure/lattice.py @@ -21,24 +21,25 @@ """ import math + import numpy import numpy.linalg as numalg + from diffpy.structure import LatticeError # Helper Functions ----------------------------------------------------------- # exact values of cosd -_EXACT_COSD = { - 0.0 : +1.0, 60.0 : +0.5, 90.0 : 0.0, 120.0 : -0.5, - 180.0 : -1.0, 240.0 : -0.5, 270.0 : 0.0, 300.0 : +0.5 -} +_EXACT_COSD = {0.0: +1.0, 60.0: +0.5, 90.0: 0.0, 120.0: -0.5, 180.0: -1.0, 240.0: -0.5, 270.0: 0.0, 300.0: +0.5} + def cosd(x): """Return the cosine of x (measured in degrees). Avoid round-off errors for exact cosine values. """ rv = _EXACT_COSD.get(x % 360.0) - if rv is None: rv = math.cos(math.radians(x)) + if rv is None: + rv = math.cos(math.radians(x)) return rv @@ -48,8 +49,10 @@ def sind(x): """ return cosd(90.0 - x) + # ---------------------------------------------------------------------------- + class Lattice(object): """ General coordinate system and associated operations. @@ -132,110 +135,101 @@ class Lattice(object): # properties ------------------------------------------------------------- - a = property(lambda self: self._a, - lambda self, value: self.setLatPar(a=value), - doc='The unit cell length *a*.') + a = property( + lambda self: self._a, lambda self, value: self.setLatPar(a=value), doc="The unit cell length *a*." + ) - b = property(lambda self: self._b, - lambda self, value: self.setLatPar(b=value), - doc='The unit cell length *b*.') + b = property( + lambda self: self._b, lambda self, value: self.setLatPar(b=value), doc="The unit cell length *b*." + ) - c = property(lambda self: self._c, - lambda self, value: self.setLatPar(c=value), - doc='The unit cell length *c*.') + c = property( + lambda self: self._c, lambda self, value: self.setLatPar(c=value), doc="The unit cell length *c*." + ) - alpha = property(lambda self: self._alpha, - lambda self, value: self.setLatPar(alpha=value), - doc='The cell angle *alpha* in degrees.') + alpha = property( + lambda self: self._alpha, + lambda self, value: self.setLatPar(alpha=value), + doc="The cell angle *alpha* in degrees.", + ) - beta = property(lambda self: self._beta, - lambda self, value: self.setLatPar(beta=value), - doc='The cell angle *beta* in degrees.') + beta = property( + lambda self: self._beta, + lambda self, value: self.setLatPar(beta=value), + doc="The cell angle *beta* in degrees.", + ) - gamma = property(lambda self: self._gamma, - lambda self, value: self.setLatPar(gamma=value), - doc='The cell angle *gamma* in degrees.') + gamma = property( + lambda self: self._gamma, + lambda self, value: self.setLatPar(gamma=value), + doc="The cell angle *gamma* in degrees.", + ) # read-only derived properties @property def unitvolume(self): - '''The unit cell volume when a = b = c = 1. - ''' + """The unit cell volume when a = b = c = 1.""" # Recalculate lattice cosines to ensure this is right # even if ca, cb, cg data were not yet updated. ca = cosd(self.alpha) cb = cosd(self.beta) cg = cosd(self.gamma) - rv = math.sqrt( 1.0 + 2.0*ca*cb*cg - ca*ca - cb*cb - cg*cg) + rv = math.sqrt(1.0 + 2.0 * ca * cb * cg - ca * ca - cb * cb - cg * cg) return rv - volume = property(lambda self: self.a * self.b * self.c * self.unitvolume, - doc='The unit cell volume.') + volume = property(lambda self: self.a * self.b * self.c * self.unitvolume, doc="The unit cell volume.") - ar = property(lambda self: self._ar, - doc='The cell length *a* of the reciprocal lattice.') + ar = property(lambda self: self._ar, doc="The cell length *a* of the reciprocal lattice.") - br = property(lambda self: self._br, - doc='The cell length *b* of the reciprocal lattice.') + br = property(lambda self: self._br, doc="The cell length *b* of the reciprocal lattice.") - cr = property(lambda self: self._cr, - doc='The cell length *c* of the reciprocal lattice.') + cr = property(lambda self: self._cr, doc="The cell length *c* of the reciprocal lattice.") - alphar = property(lambda self: self._alphar, - doc='The reciprocal cell angle *alpha* in degrees.') + alphar = property(lambda self: self._alphar, doc="The reciprocal cell angle *alpha* in degrees.") - betar = property(lambda self: self._betar, - doc='The reciprocal cell angle *beta* in degrees') + betar = property(lambda self: self._betar, doc="The reciprocal cell angle *beta* in degrees") - gammar = property(lambda self: self._gammar, - doc='The reciprocal cell angle *gamma* in degrees') + gammar = property(lambda self: self._gammar, doc="The reciprocal cell angle *gamma* in degrees") - ca = property(lambda self: self._ca, - doc='The cosine of the cell angle *alpha*.') + ca = property(lambda self: self._ca, doc="The cosine of the cell angle *alpha*.") - cb = property(lambda self: self._cb, - doc='The cosine of the cell angle *beta*.') + cb = property(lambda self: self._cb, doc="The cosine of the cell angle *beta*.") - cg = property(lambda self: self._cg, - doc='The cosine of the cell angle *gamma*.') + cg = property(lambda self: self._cg, doc="The cosine of the cell angle *gamma*.") - sa = property(lambda self: self._sa, - doc='The sine of the cell angle *alpha*.') + sa = property(lambda self: self._sa, doc="The sine of the cell angle *alpha*.") - sb = property(lambda self: self._sb, - doc='The sine of the cell angle *beta*.') + sb = property(lambda self: self._sb, doc="The sine of the cell angle *beta*.") - sg = property(lambda self: self._sg, - doc='The sine of the cell angle *gamma*.') + sg = property(lambda self: self._sg, doc="The sine of the cell angle *gamma*.") - car = property(lambda self: self._car, - doc='The cosine of the reciprocal angle *alpha*.') + car = property(lambda self: self._car, doc="The cosine of the reciprocal angle *alpha*.") - cbr = property(lambda self: self._cbr, - doc='The cosine of the reciprocal angle *beta*.') + cbr = property(lambda self: self._cbr, doc="The cosine of the reciprocal angle *beta*.") - cgr = property(lambda self: self._cgr, - doc='The cosine of the reciprocal angle *gamma*.') + cgr = property(lambda self: self._cgr, doc="The cosine of the reciprocal angle *gamma*.") - sar = property(lambda self: self._sar, - doc='The sine of the reciprocal angle *alpha*.') + sar = property(lambda self: self._sar, doc="The sine of the reciprocal angle *alpha*.") - sbr = property(lambda self: self._sbr, - doc='flot: Sine of the reciprocal angle *beta*.') + sbr = property(lambda self: self._sbr, doc="flot: Sine of the reciprocal angle *beta*.") - sgr = property(lambda self: self._sgr, - doc='The sine of the reciprocal angle *gamma*.') + sgr = property(lambda self: self._sgr, doc="The sine of the reciprocal angle *gamma*.") # done with properties --------------------------------------------------- - def __init__(self, a=None, b=None, c=None, - alpha=None, beta=None, gamma=None, - baserot=None, base=None): + def __init__(self, a=None, b=None, c=None, alpha=None, beta=None, gamma=None, baserot=None, base=None): # build a set of provided argument names for later use. - apairs = (('a', a), ('b', b), ('c', c), - ('alpha', alpha), ('beta', beta), ('gamma', gamma), - ('baserot', baserot), ('base', base)) + apairs = ( + ("a", a), + ("b", b), + ("c", c), + ("alpha", alpha), + ("beta", beta), + ("gamma", gamma), + ("baserot", baserot), + ("base", base), + ) argset = set(n for n, v in apairs if v is not None) # initialize data members, they values will be set by setLatPar() self._a = self._b = self._c = None @@ -265,15 +259,13 @@ def __init__(self, a=None, b=None, c=None, self.__dict__.update(a.__dict__) # otherwise do default Lattice(a, b, c, alpha, beta, gamma) else: - abcabg = ('a', 'b', 'c', 'alpha', 'beta', 'gamma') + abcabg = ("a", "b", "c", "alpha", "beta", "gamma") if not argset.issuperset(abcabg): raise ValueError("Provide all 6 cell parameters.") self.setLatPar(a, b, c, alpha, beta, gamma, baserot=baserot) return - - def setLatPar(self, a=None, b=None, c=None, - alpha=None, beta=None, gamma=None, baserot=None): + def setLatPar(self, a=None, b=None, c=None, alpha=None, beta=None, gamma=None, baserot=None): """Set one or more lattice parameters. This updates all attributes that depend on the lattice parameters. @@ -301,13 +293,20 @@ def setLatPar(self, a=None, b=None, c=None, Parameters that are not specified will keep their initial values. """ - if a is not None: self._a = float(a) - if b is not None: self._b = float(b) - if c is not None: self._c = float(c) - if alpha is not None: self._alpha = float(alpha) - if beta is not None: self._beta = float(beta) - if gamma is not None: self._gamma = float(gamma) - if baserot is not None: self.baserot = numpy.array(baserot) + if a is not None: + self._a = float(a) + if b is not None: + self._b = float(b) + if c is not None: + self._c = float(c) + if alpha is not None: + self._alpha = float(alpha) + if beta is not None: + self._beta = float(beta) + if gamma is not None: + self._gamma = float(gamma) + if baserot is not None: + self.baserot = numpy.array(baserot) self._ca = ca = cosd(self.alpha) self._cb = cb = cosd(self.beta) self._cg = cg = cosd(self.gamma) @@ -317,30 +316,32 @@ def setLatPar(self, a=None, b=None, c=None, # cache the unit volume value Vunit = self.unitvolume # reciprocal lattice - self._ar = ar = sa/(self.a*Vunit) - self._br = br = sb/(self.b*Vunit) - self._cr = cr = sg/(self.c*Vunit) - self._car = car = (cb*cg - ca)/(sb*sg) - self._cbr = cbr = (ca*cg - cb)/(sa*sg) - self._cgr = cgr = (ca*cb - cg)/(sa*sb) - self._sar = math.sqrt(1.0 - car*car) - self._sbr = math.sqrt(1.0 - cbr*cbr) - self._sgr = sgr = math.sqrt(1.0 - cgr*cgr) + self._ar = ar = sa / (self.a * Vunit) + self._br = br = sb / (self.b * Vunit) + self._cr = cr = sg / (self.c * Vunit) + self._car = car = (cb * cg - ca) / (sb * sg) + self._cbr = cbr = (ca * cg - cb) / (sa * sg) + self._cgr = cgr = (ca * cb - cg) / (sa * sb) + self._sar = math.sqrt(1.0 - car * car) + self._sbr = math.sqrt(1.0 - cbr * cbr) + self._sgr = sgr = math.sqrt(1.0 - cgr * cgr) self._alphar = math.degrees(math.acos(car)) self._betar = math.degrees(math.acos(cbr)) self._gammar = math.degrees(math.acos(cgr)) # metrics tensor - self.metrics = numpy.array( [ - [ self.a*self.a, self.a*self.b*cg, self.a*self.c*cb ], - [ self.b*self.a*cg, self.b*self.b, self.b*self.c*ca ], - [ self.c*self.a*cb, self.c*self.b*ca, self.c*self.c ] ], - dtype=float ) + self.metrics = numpy.array( + [ + [self.a * self.a, self.a * self.b * cg, self.a * self.c * cb], + [self.b * self.a * cg, self.b * self.b, self.b * self.c * ca], + [self.c * self.a * cb, self.c * self.b * ca, self.c * self.c], + ], + dtype=float, + ) # standard Cartesian coordinates of lattice vectors - self.stdbase = numpy.array( [ - [ 1.0/ar, -cgr/sgr/ar, cb*self.a ], - [ 0.0, self.b*sa, self.b*ca ], - [ 0.0, 0.0, self.c ] ], - dtype=float ) + self.stdbase = numpy.array( + [[1.0 / ar, -cgr / sgr / ar, cb * self.a], [0.0, self.b * sa, self.b * ca], [0.0, 0.0, self.c]], + dtype=float, + ) # Cartesian coordinates of lattice vectors self.base = numpy.dot(self.stdbase, self.baserot) self.recbase = numalg.inv(self.base) @@ -350,7 +351,6 @@ def setLatPar(self, a=None, b=None, c=None, self.isotropicunit = _isotropicunit(self.recnormbase) return - def setLatBase(self, base): """Set new base vectors for this lattice. @@ -372,12 +372,12 @@ def setLatBase(self, base): elif detbase < 0.0: emsg = "base is not right-handed" raise LatticeError(emsg) - self._a = a = math.sqrt(numpy.dot(self.base[0,:], self.base[0,:])) - self._b = b = math.sqrt(numpy.dot(self.base[1,:], self.base[1,:])) - self._c = c = math.sqrt(numpy.dot(self.base[2,:], self.base[2,:])) - self._ca = ca = numpy.dot(self.base[1,:], self.base[2,:]) / (b*c) - self._cb = cb = numpy.dot(self.base[0,:], self.base[2,:]) / (a*c) - self._cg = cg = numpy.dot(self.base[0,:], self.base[1,:]) / (a*b) + self._a = a = math.sqrt(numpy.dot(self.base[0, :], self.base[0, :])) + self._b = b = math.sqrt(numpy.dot(self.base[1, :], self.base[1, :])) + self._c = c = math.sqrt(numpy.dot(self.base[2, :], self.base[2, :])) + self._ca = ca = numpy.dot(self.base[1, :], self.base[2, :]) / (b * c) + self._cb = cb = numpy.dot(self.base[0, :], self.base[2, :]) / (a * c) + self._cg = cg = numpy.dot(self.base[0, :], self.base[1, :]) / (a * b) self._sa = sa = math.sqrt(1.0 - ca**2) self._sb = sb = math.sqrt(1.0 - cb**2) self._sg = sg = math.sqrt(1.0 - cg**2) @@ -387,12 +387,12 @@ def setLatBase(self, base): # cache the unit volume value Vunit = self.unitvolume # reciprocal lattice - self._ar = ar = sa/(self.a*Vunit) - self._br = br = sb/(self.b*Vunit) - self._cr = cr = sg/(self.c*Vunit) - self._car = car = (cb*cg - ca)/(sb*sg) - self._cbr = cbr = (ca*cg - cb)/(sa*sg) - self._cgr = cgr = (ca*cb - cg)/(sa*sb) + self._ar = ar = sa / (self.a * Vunit) + self._br = br = sb / (self.b * Vunit) + self._cr = cr = sg / (self.c * Vunit) + self._car = car = (cb * cg - ca) / (sb * sg) + self._cbr = cbr = (ca * cg - cb) / (sa * sg) + self._cgr = cgr = (ca * cb - cg) / (sa * sb) self._sar = math.sqrt(1.0 - car**2) self._sbr = math.sqrt(1.0 - cbr**2) self._sgr = sgr = math.sqrt(1.0 - cgr**2) @@ -400,11 +400,9 @@ def setLatBase(self, base): self._betar = math.degrees(math.acos(cbr)) self._gammar = math.degrees(math.acos(cgr)) # standard orientation of lattice vectors - self.stdbase = numpy.array([ - [ 1.0/ar, -cgr/sgr/ar, cb*a ], - [ 0.0, b*sa, b*ca ], - [ 0.0, 0.0, c ]], - dtype=float) + self.stdbase = numpy.array( + [[1.0 / ar, -cgr / sgr / ar, cb * a], [0.0, b * sa, b * ca], [0.0, 0.0, c]], dtype=float + ) # calculate unit cell rotation matrix, base = stdbase @ baserot self.baserot = numpy.dot(numalg.inv(self.stdbase), self.base) self.recbase = numalg.inv(self.base) @@ -413,14 +411,12 @@ def setLatBase(self, base): self.recnormbase = self.recbase / [ar, br, cr] self.isotropicunit = _isotropicunit(self.recnormbase) # update metrics tensor - self.metrics = numpy.array([ - [ a*a, a*b*cg, a*c*cb ], - [ b*a*cg, b*b, b*c*ca ], - [ c*a*cb, c*b*ca, c*c ]], - dtype=float) + self.metrics = numpy.array( + [[a * a, a * b * cg, a * c * cb], [b * a * cg, b * b, b * c * ca], [c * a * cb, c * b * ca, c * c]], + dtype=float, + ) return - def abcABG(self): """ Returns @@ -430,7 +426,6 @@ def abcABG(self): rv = (self.a, self.b, self.c, self.alpha, self.beta, self.gamma) return rv - def reciprocal(self): """ Returns @@ -441,7 +436,6 @@ def reciprocal(self): rv = Lattice(base=numpy.transpose(self.recbase)) return rv - def cartesian(self, u): """Transform lattice vector to Cartesian coordinates. @@ -459,7 +453,6 @@ def cartesian(self, u): rc = numpy.dot(u, self.base) return rc - def fractional(self, rc): """Transform Cartesian vector to fractional lattice coordinates. @@ -477,7 +470,6 @@ def fractional(self, rc): u = numpy.dot(rc, self.recbase) return u - def dot(self, u, v): """Calculate dot product of 2 lattice vectors. @@ -497,7 +489,6 @@ def dot(self, u, v): dp = (u * numpy.dot(v, self.metrics)).sum(axis=-1) return dp - def norm(self, xyz): """Calculate norm of a lattice vector. @@ -512,8 +503,7 @@ def norm(self, xyz): The magnitude of the lattice vector *xyz*. """ # this is a few percent faster than sqrt(dot(u, u)). - return numpy.sqrt((self.cartesian(xyz)**2).sum(axis=-1)) - + return numpy.sqrt((self.cartesian(xyz) ** 2).sum(axis=-1)) def rnorm(self, hkl): """Calculate norm of a reciprocal vector. @@ -531,7 +521,6 @@ def rnorm(self, hkl): hklcartn = numpy.dot(hkl, self.recbase.T) return numpy.sqrt((hklcartn**2).sum(axis=-1)) - def dist(self, u, v): """Calculate distance between 2 points in lattice coordinates. @@ -554,7 +543,6 @@ def dist(self, u, v): duv = numpy.asarray(u) - v return self.norm(duv) - def angle(self, u, v): """Calculate angle between 2 lattice vectors in degrees. @@ -570,7 +558,7 @@ def angle(self, u, v): float The angle between lattice vectors *u* and *v* in degrees. """ - ca = self.dot(u, v)/( self.norm(u)*self.norm(v) ) + ca = self.dot(u, v) / (self.norm(u) * self.norm(v)) # avoid round-off errors that would make abs(ca) greater than 1 if numpy.isscalar(ca): ca = max(min(ca, 1), -1) @@ -581,7 +569,6 @@ def angle(self, u, v): rv = numpy.degrees(numpy.arccos(ca)) return rv - def isanisotropic(self, umx): """True if displacement parameter matrix is anisotropic. @@ -605,27 +592,26 @@ def isanisotropic(self, umx): rv = udmax > self._epsilon return rv - def __repr__(self): - """String representation of this lattice. - """ + """String representation of this lattice.""" I3 = numpy.identity(3, dtype=float) - rotbaseI3diff = max(numpy.reshape(numpy.fabs(self.baserot-I3), 9)) - cartlatpar = numpy.array([1.0, 1.0, 1.0 , 90.0, 90.0, 90.0]) + rotbaseI3diff = max(numpy.reshape(numpy.fabs(self.baserot - I3), 9)) + cartlatpar = numpy.array([1.0, 1.0, 1.0, 90.0, 90.0, 90.0]) latpardiff = cartlatpar - self.abcABG() if rotbaseI3diff > self._epsilon: s = "Lattice(base=%r)" % self.base elif numpy.fabs(latpardiff).max() < self._epsilon: s = "Lattice()" else: - s = "Lattice(a=%g, b=%g, c=%g, alpha=%g, beta=%g, gamma=%g)" % \ - self.abcABG() + s = "Lattice(a=%g, b=%g, c=%g, alpha=%g, beta=%g, gamma=%g)" % self.abcABG() return s + # End of class Lattice # Local Helpers -------------------------------------------------------------- + def _isotropicunit(recnormbase): """Calculate tensor of unit isotropic displacement parameters. @@ -647,6 +633,7 @@ def _isotropicunit(recnormbase): isounit[2, 2] = 1 return isounit + # Module Constants ----------------------------------------------------------- cartesian = Lattice() diff --git a/src/diffpy/structure/mmlibspacegroups.py b/src/diffpy/structure/mmlibspacegroups.py index ef2c97bd..33f284d3 100644 --- a/src/diffpy/structure/mmlibspacegroups.py +++ b/src/diffpy/structure/mmlibspacegroups.py @@ -6,7324 +6,7882 @@ """Space groups defined as a part of the pymmlib. """ -from diffpy.structure.spacegroupmod import SpaceGroup, SymOp from diffpy.structure.spacegroupmod import ( - Rot_X_Y_Z, Rot_mX_mY_mZ, Rot_mX_Y_mZ, Rot_X_mY_Z, - Rot_mX_mY_Z, Rot_X_mY_mZ, Rot_mX_Y_Z, Rot_X_Y_mZ, - Rot_mY_X_Z, Rot_Y_mX_Z, Rot_Y_mX_mZ, Rot_mY_X_mZ, - Rot_Y_X_mZ, Rot_mY_mX_mZ, Rot_mY_mX_Z, Rot_Y_X_Z, - Rot_mY_XmY_Z, Rot_mXY_mX_Z, Rot_Z_X_Y, Rot_Y_Z_X, - Rot_Y_mXY_mZ, Rot_XmY_X_mZ, Rot_mZ_mX_mY, Rot_mY_mZ_mX, - Rot_mXY_Y_mZ, Rot_X_XmY_mZ, Rot_XmY_mY_mZ, Rot_mX_mXY_mZ, - Rot_mX_mZ_mY, Rot_mZ_mY_mX, Rot_mXY_Y_Z, Rot_X_XmY_Z, - Rot_XmY_mY_Z, Rot_mX_mXY_Z, Rot_X_Z_Y, Rot_Z_Y_X, - Rot_Y_mXY_Z, Rot_XmY_X_Z, Rot_mY_XmY_mZ, Rot_mXY_mX_mZ, - Rot_Z_mX_mY, Rot_mZ_mX_Y, Rot_mZ_X_mY, Rot_mY_Z_mX, - Rot_Y_mZ_mX, Rot_mY_mZ_X, Rot_mZ_X_Y, Rot_Z_X_mY, - Rot_Z_mX_Y, Rot_Y_mZ_X, Rot_mY_Z_X, Rot_Y_Z_mX, - Rot_X_Z_mY, Rot_mX_Z_Y, Rot_X_mZ_Y, Rot_Z_Y_mX, - Rot_Z_mY_X, Rot_mZ_Y_X, Rot_mX_Z_mY, Rot_mX_mZ_Y, - Rot_X_mZ_mY, Rot_Z_mY_mX, Rot_mZ_Y_mX, Rot_mZ_mY_X, - Tr_0_0_0, Tr_0_12_0, Tr_12_12_0, Tr_0_0_12, - Tr_12_12_12, Tr_0_12_12, Tr_12_0_12, Tr_12_0_0, - Tr_14_14_14, Tr_14_34_34, Tr_34_14_34, Tr_34_34_14, - Tr_0_0_14, Tr_0_0_34, Tr_0_12_14, Tr_12_0_34, - Tr_12_12_14, Tr_12_12_34, Tr_0_12_34, Tr_12_0_14, - Tr_0_0_13, Tr_0_0_23, Tr_23_13_13, Tr_13_23_23, - Tr_23_13_56, Tr_13_23_16, Tr_0_0_56, Tr_0_0_16, - Tr_34_14_14, Tr_34_34_34, Tr_14_14_34, Tr_14_34_14, + Rot_mX_mXY_mZ, + Rot_mX_mXY_Z, + Rot_mX_mY_mZ, + Rot_mX_mY_Z, + Rot_mX_mZ_mY, + Rot_mX_mZ_Y, + Rot_mX_Y_mZ, + Rot_mX_Y_Z, + Rot_mX_Z_mY, + Rot_mX_Z_Y, + Rot_mXY_mX_mZ, + Rot_mXY_mX_Z, + Rot_mXY_Y_mZ, + Rot_mXY_Y_Z, + Rot_mY_mX_mZ, + Rot_mY_mX_Z, + Rot_mY_mZ_mX, + Rot_mY_mZ_X, + Rot_mY_X_mZ, + Rot_mY_X_Z, + Rot_mY_XmY_mZ, + Rot_mY_XmY_Z, + Rot_mY_Z_mX, + Rot_mY_Z_X, + Rot_mZ_mX_mY, + Rot_mZ_mX_Y, + Rot_mZ_mY_mX, + Rot_mZ_mY_X, + Rot_mZ_X_mY, + Rot_mZ_X_Y, + Rot_mZ_Y_mX, + Rot_mZ_Y_X, + Rot_X_mY_mZ, + Rot_X_mY_Z, + Rot_X_mZ_mY, + Rot_X_mZ_Y, + Rot_X_XmY_mZ, + Rot_X_XmY_Z, + Rot_X_Y_mZ, + Rot_X_Y_Z, + Rot_X_Z_mY, + Rot_X_Z_Y, + Rot_XmY_mY_mZ, + Rot_XmY_mY_Z, + Rot_XmY_X_mZ, + Rot_XmY_X_Z, + Rot_Y_mX_mZ, + Rot_Y_mX_Z, + Rot_Y_mXY_mZ, + Rot_Y_mXY_Z, + Rot_Y_mZ_mX, + Rot_Y_mZ_X, + Rot_Y_X_mZ, + Rot_Y_X_Z, + Rot_Y_Z_mX, + Rot_Y_Z_X, + Rot_Z_mX_mY, + Rot_Z_mX_Y, + Rot_Z_mY_mX, + Rot_Z_mY_X, + Rot_Z_X_mY, + Rot_Z_X_Y, + Rot_Z_Y_mX, + Rot_Z_Y_X, + SpaceGroup, + SymOp, + Tr_0_0_0, + Tr_0_0_12, + Tr_0_0_13, + Tr_0_0_14, + Tr_0_0_16, + Tr_0_0_23, + Tr_0_0_34, + Tr_0_0_56, + Tr_0_12_0, + Tr_0_12_12, + Tr_0_12_14, + Tr_0_12_34, + Tr_12_0_0, + Tr_12_0_12, + Tr_12_0_14, + Tr_12_0_34, + Tr_12_12_0, + Tr_12_12_12, + Tr_12_12_14, + Tr_12_12_34, + Tr_13_23_16, + Tr_13_23_23, + Tr_14_14_14, + Tr_14_14_34, + Tr_14_34_14, + Tr_14_34_34, + Tr_23_13_13, + Tr_23_13_56, + Tr_34_14_14, + Tr_34_14_34, + Tr_34_34_14, + Tr_34_34_34, ) ## spacegroup definitions sg1 = SpaceGroup( - number = 1, - num_sym_equiv = 1, - num_primitive_sym_equiv = 1, - short_name = "P1", - point_group_name = "PG1", - crystal_system = "TRICLINIC", - pdb_name = "P 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0)]) + number=1, + num_sym_equiv=1, + num_primitive_sym_equiv=1, + short_name="P1", + point_group_name="PG1", + crystal_system="TRICLINIC", + pdb_name="P 1", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0)], +) sg2 = SpaceGroup( - number = 2, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "P-1", - point_group_name = "PG1bar", - crystal_system = "TRICLINIC", - pdb_name = "P -1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0)]) + number=2, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P-1", + point_group_name="PG1bar", + crystal_system="TRICLINIC", + pdb_name="P -1", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0)], +) sg3 = SpaceGroup( - number = 3, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "P2", - point_group_name = "PG2", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 2 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0)]) + number=3, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P2", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="P 1 2 1", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0)], +) sg4 = SpaceGroup( - number = 4, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "P21", - point_group_name = "PG2", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 21 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0)]) + number=4, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P21", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="P 1 21 1", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0)], +) sg5 = SpaceGroup( - number = 5, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "C2", - point_group_name = "PG2", - crystal_system = "MONOCLINIC", - pdb_name = "C 1 2 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0)]) + number=5, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="C2", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="C 1 2 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + ], +) sg6 = SpaceGroup( - number = 6, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "Pm", - point_group_name = "PGm", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 m 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0)]) + number=6, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="Pm", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P 1 m 1", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0)], +) sg7 = SpaceGroup( - number = 7, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "Pc", - point_group_name = "PGm", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 c 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12)]) + number=7, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="Pc", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P 1 c 1", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12)], +) sg8 = SpaceGroup( - number = 8, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "Cm", - point_group_name = "PGm", - crystal_system = "MONOCLINIC", - pdb_name = "C 1 m 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0)]) + number=8, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="Cm", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="C 1 m 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + ], +) sg9 = SpaceGroup( - number = 9, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "Cc", - point_group_name = "PGm", - crystal_system = "MONOCLINIC", - pdb_name = "C 1 c 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12)]) + number=9, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="Cc", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="C 1 c 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + ], +) sg10 = SpaceGroup( - number = 10, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P2/m", - point_group_name = "PG2/m", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 2/m 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0)]) + number=10, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2/m", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 2/m 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + ], +) sg11 = SpaceGroup( - number = 11, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P21/m", - point_group_name = "PG2/m", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 21/m 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_12_0)]) + number=11, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21/m", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 21/m 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_12_0), + ], +) sg12 = SpaceGroup( - number = 12, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "C2/m", - point_group_name = "PG2/m", - crystal_system = "MONOCLINIC", - pdb_name = "C 1 2/m 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0)]) + number=12, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="C2/m", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="C 1 2/m 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + ], +) sg13 = SpaceGroup( - number = 13, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P2/c", - point_group_name = "PG2/m", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 2/c 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12)]) + number=13, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2/c", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 2/c 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + ], +) sg14 = SpaceGroup( - number = 14, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P21/c", - point_group_name = "PG2/m", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 21/c 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12)]) + number=14, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21/c", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 21/c 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + ], +) sg15 = SpaceGroup( - number = 15, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "C2/c", - point_group_name = "PG2/m", - crystal_system = "MONOCLINIC", - pdb_name = "C 1 2/c 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12)]) + number=15, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="C2/c", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="C 1 2/c 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + ], +) sg16 = SpaceGroup( - number = 16, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P222", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0)]) + number=16, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P222", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + ], +) sg17 = SpaceGroup( - number = 17, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P2221", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2 2 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0)]) + number=17, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2221", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 2 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + ], +) sg18 = SpaceGroup( - number = 18, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P21212", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21 21 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0)]) + number=18, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21212", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 21 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + ], +) sg19 = SpaceGroup( - number = 19, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P212121", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21 21 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0)]) + number=19, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P212121", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 21 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + ], +) sg20 = SpaceGroup( - number = 20, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "C2221", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2 2 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0)]) + number=20, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="C2221", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 2 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + ], +) sg21 = SpaceGroup( - number = 21, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "C222", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0)]) + number=21, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="C222", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + ], +) sg22 = SpaceGroup( - number = 22, - num_sym_equiv = 16, - num_primitive_sym_equiv = 4, - short_name = "F222", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "F 2 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0)]) + number=22, + num_sym_equiv=16, + num_primitive_sym_equiv=4, + short_name="F222", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="F 2 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + ], +) sg23 = SpaceGroup( - number = 23, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "I222", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I 2 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12)]) + number=23, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="I222", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + ], +) sg24 = SpaceGroup( - number = 24, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "I212121", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I 21 21 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12)]) + number=24, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="I212121", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="I 21 21 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + ], +) sg25 = SpaceGroup( - number = 25, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pmm2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P m m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0)]) + number=25, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pmm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + ], +) sg26 = SpaceGroup( - number = 26, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pmc21", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P m c 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0)]) + number=26, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pmc21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m c 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + ], +) sg27 = SpaceGroup( - number = 27, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pcc2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P c c 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12)]) + number=27, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pcc2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c c 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + ], +) sg28 = SpaceGroup( - number = 28, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pma2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P m a 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_0_0)]) + number=28, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pma2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m a 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_0_0), + ], +) sg29 = SpaceGroup( - number = 29, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pca21", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P c a 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_0_12)]) + number=29, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pca21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c a 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + ], +) sg30 = SpaceGroup( - number = 30, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pnc2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P n c 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12)]) + number=30, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pnc2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n c 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + ], +) sg31 = SpaceGroup( - number = 31, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pmn21", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P m n 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0)]) + number=31, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pmn21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m n 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + ], +) sg32 = SpaceGroup( - number = 32, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pba2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P b a 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=32, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pba2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b a 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg33 = SpaceGroup( - number = 33, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pna21", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P n a 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=33, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pna21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n a 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg34 = SpaceGroup( - number = 34, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "Pnn2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P n n 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=34, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pnn2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n n 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg35 = SpaceGroup( - number = 35, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Cmm2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C m m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=35, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Cmm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C m m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg36 = SpaceGroup( - number = 36, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Cmc21", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C m c 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=36, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Cmc21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C m c 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg37 = SpaceGroup( - number = 37, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Ccc2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C c c 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=37, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Ccc2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C c c 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg38 = SpaceGroup( - number = 38, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Amm2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "A m m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12)]) + number=38, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Amm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A m m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + ], +) sg39 = SpaceGroup( - number = 39, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Abm2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "A b m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_Z, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12)]) + number=39, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Abm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A b m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_Z, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + ], +) sg40 = SpaceGroup( - number = 40, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Ama2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "A m a 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=40, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Ama2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A m a 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg41 = SpaceGroup( - number = 41, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Aba2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "A b a 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12)]) + number=41, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Aba2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A b a 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + ], +) sg42 = SpaceGroup( - number = 42, - num_sym_equiv = 16, - num_primitive_sym_equiv = 4, - short_name = "Fmm2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "F m m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=42, + num_sym_equiv=16, + num_primitive_sym_equiv=4, + short_name="Fmm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="F m m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg43 = SpaceGroup( - number = 43, - num_sym_equiv = 16, - num_primitive_sym_equiv = 4, - short_name = "Fdd2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "F d d 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_14_14_14), - SymOp(Rot_mX_Y_Z, Tr_14_14_14), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_14_34_34), - SymOp(Rot_mX_Y_Z, Tr_14_34_34), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_34_14_34), - SymOp(Rot_mX_Y_Z, Tr_34_14_34), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_34_34_14), - SymOp(Rot_mX_Y_Z, Tr_34_34_14)]) + number=43, + num_sym_equiv=16, + num_primitive_sym_equiv=4, + short_name="Fdd2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="F d d 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_14_14_14), + SymOp(Rot_mX_Y_Z, Tr_14_14_14), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_14_34_34), + SymOp(Rot_mX_Y_Z, Tr_14_34_34), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_34_14_34), + SymOp(Rot_mX_Y_Z, Tr_34_14_34), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_34_34_14), + SymOp(Rot_mX_Y_Z, Tr_34_34_14), + ], +) sg44 = SpaceGroup( - number = 44, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Imm2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I m m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=44, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Imm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I m m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg45 = SpaceGroup( - number = 45, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Iba2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I b a 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12)]) + number=45, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Iba2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I b a 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + ], +) sg46 = SpaceGroup( - number = 46, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "Ima2", - point_group_name = "PGmm2", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I m a 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12)]) + number=46, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="Ima2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I m a 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + ], +) sg47 = SpaceGroup( - number = 47, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pmmm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2/m 2/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0)]) + number=47, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2/m 2/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + ], +) sg48 = SpaceGroup( - number = 48, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pnnn", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2/n 2/n 2/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=48, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnnn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2/n 2/n 2/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg49 = SpaceGroup( - number = 49, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pccm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2/c 2/c 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12)]) + number=49, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pccm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2/c 2/c 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + ], +) sg50 = SpaceGroup( - number = 50, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pban", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2/b 2/a 2/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=50, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pban", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2/b 2/a 2/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg51 = SpaceGroup( - number = 51, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pmma", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/m 2/m 2/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_0_0)]) + number=51, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/m 2/m 2/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_0_0), + ], +) sg52 = SpaceGroup( - number = 52, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pnna", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2/n 21/n 2/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12)]) + number=52, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnna", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2/n 21/n 2/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + ], +) sg53 = SpaceGroup( - number = 53, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pmna", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2/m 2/n 21/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0)]) + number=53, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmna", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2/m 2/n 21/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + ], +) sg54 = SpaceGroup( - number = 54, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pcca", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/c 2/c 2/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12)]) + number=54, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcca", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/c 2/c 2/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + ], +) sg55 = SpaceGroup( - number = 55, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pbam", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/b 21/a 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=55, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/b 21/a 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg56 = SpaceGroup( - number = 56, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pccn", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/c 21/c 2/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12)]) + number=56, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pccn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/c 21/c 2/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + ], +) sg57 = SpaceGroup( - number = 57, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pbcm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2/b 21/c 21/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_0)]) + number=57, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbcm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2/b 21/c 21/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_0), + ], +) sg58 = SpaceGroup( - number = 58, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pnnm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/n 21/n 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=58, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnnm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/n 21/n 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg59 = SpaceGroup( - number = 59, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pmmn", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/m 21/m 2/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0)]) + number=59, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmmn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/m 21/m 2/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + ], +) sg60 = SpaceGroup( - number = 60, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pbcn", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/b 2/c 21/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=60, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbcn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/b 2/c 21/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg61 = SpaceGroup( - number = 61, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pbca", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/b 21/c 21/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=61, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbca", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/b 21/c 21/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg62 = SpaceGroup( - number = 62, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pnma", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/n 21/m 21/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=62, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/n 21/m 21/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg63 = SpaceGroup( - number = 63, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Cmcm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2/m 2/c 21/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=63, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Cmcm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2/m 2/c 21/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg64 = SpaceGroup( - number = 64, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Cmca", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2/m 2/c 21/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=64, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Cmca", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2/m 2/c 21/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg65 = SpaceGroup( - number = 65, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Cmmm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2/m 2/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=65, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Cmmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2/m 2/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg66 = SpaceGroup( - number = 66, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Cccm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2/c 2/c 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=66, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Cccm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2/c 2/c 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg67 = SpaceGroup( - number = 67, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Cmma", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2/m 2/m 2/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=67, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Cmma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2/m 2/m 2/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg68 = SpaceGroup( - number = 68, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Ccca", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2/c 2/c 2/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12)]) + number=68, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Ccca", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2/c 2/c 2/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + ], +) sg69 = SpaceGroup( - number = 69, - num_sym_equiv = 32, - num_primitive_sym_equiv = 8, - short_name = "Fmmm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "F 2/m 2/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0)]) + number=69, + num_sym_equiv=32, + num_primitive_sym_equiv=8, + short_name="Fmmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="F 2/m 2/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + ], +) sg70 = SpaceGroup( - number = 70, - num_sym_equiv = 32, - num_primitive_sym_equiv = 8, - short_name = "Fddd", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "F 2/d 2/d 2/d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_14_14_14), - SymOp(Rot_X_Y_mZ, Tr_14_14_14), - SymOp(Rot_X_mY_Z, Tr_14_14_14), - SymOp(Rot_mX_Y_Z, Tr_14_14_14), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_mX_mY_mZ, Tr_14_34_34), - SymOp(Rot_X_Y_mZ, Tr_14_34_34), - SymOp(Rot_X_mY_Z, Tr_14_34_34), - SymOp(Rot_mX_Y_Z, Tr_14_34_34), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_34_14_34), - SymOp(Rot_X_Y_mZ, Tr_34_14_34), - SymOp(Rot_X_mY_Z, Tr_34_14_34), - SymOp(Rot_mX_Y_Z, Tr_34_14_34), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_34_34_14), - SymOp(Rot_X_Y_mZ, Tr_34_34_14), - SymOp(Rot_X_mY_Z, Tr_34_34_14), - SymOp(Rot_mX_Y_Z, Tr_34_34_14)]) + number=70, + num_sym_equiv=32, + num_primitive_sym_equiv=8, + short_name="Fddd", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="F 2/d 2/d 2/d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_14_14_14), + SymOp(Rot_X_Y_mZ, Tr_14_14_14), + SymOp(Rot_X_mY_Z, Tr_14_14_14), + SymOp(Rot_mX_Y_Z, Tr_14_14_14), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_mX_mY_mZ, Tr_14_34_34), + SymOp(Rot_X_Y_mZ, Tr_14_34_34), + SymOp(Rot_X_mY_Z, Tr_14_34_34), + SymOp(Rot_mX_Y_Z, Tr_14_34_34), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_34_14_34), + SymOp(Rot_X_Y_mZ, Tr_34_14_34), + SymOp(Rot_X_mY_Z, Tr_34_14_34), + SymOp(Rot_mX_Y_Z, Tr_34_14_34), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_34_34_14), + SymOp(Rot_X_Y_mZ, Tr_34_34_14), + SymOp(Rot_X_mY_Z, Tr_34_34_14), + SymOp(Rot_mX_Y_Z, Tr_34_34_14), + ], +) sg71 = SpaceGroup( - number = 71, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Immm", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I 2/m 2/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=71, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Immm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2/m 2/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg72 = SpaceGroup( - number = 72, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Ibam", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I 2/b 2/a 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12)]) + number=72, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Ibam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2/b 2/a 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + ], +) sg73 = SpaceGroup( - number = 73, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Ibca", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I 21/b 21/c 21/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_12)]) + number=73, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Ibca", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I 21/b 21/c 21/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + ], +) sg74 = SpaceGroup( - number = 74, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "Imma", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I 21/m 21/m 21/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12)]) + number=74, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="Imma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I 21/m 21/m 21/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + ], +) sg75 = SpaceGroup( - number = 75, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P4", - point_group_name = "PG4", - crystal_system = "TETRAGONAL", - pdb_name = "P 4", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0)]) + number=75, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P4", + point_group_name="PG4", + crystal_system="TETRAGONAL", + pdb_name="P 4", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + ], +) sg76 = SpaceGroup( - number = 76, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P41", - point_group_name = "PG4", - crystal_system = "TETRAGONAL", - pdb_name = "P 41", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mY_X_Z, Tr_0_0_14), - SymOp(Rot_Y_mX_Z, Tr_0_0_34)]) + number=76, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P41", + point_group_name="PG4", + crystal_system="TETRAGONAL", + pdb_name="P 41", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mY_X_Z, Tr_0_0_14), + SymOp(Rot_Y_mX_Z, Tr_0_0_34), + ], +) sg77 = SpaceGroup( - number = 77, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P42", - point_group_name = "PG4", - crystal_system = "TETRAGONAL", - pdb_name = "P 42", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12)]) + number=77, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P42", + point_group_name="PG4", + crystal_system="TETRAGONAL", + pdb_name="P 42", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + ], +) sg78 = SpaceGroup( - number = 78, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P43", - point_group_name = "PG4", - crystal_system = "TETRAGONAL", - pdb_name = "P 43", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mY_X_Z, Tr_0_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_0_14)]) + number=78, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P43", + point_group_name="PG4", + crystal_system="TETRAGONAL", + pdb_name="P 43", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mY_X_Z, Tr_0_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_0_14), + ], +) sg79 = SpaceGroup( - number = 79, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "I4", - point_group_name = "PG4", - crystal_system = "TETRAGONAL", - pdb_name = "I 4", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12)]) + number=79, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="I4", + point_group_name="PG4", + crystal_system="TETRAGONAL", + pdb_name="I 4", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + ], +) sg80 = SpaceGroup( - number = 80, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "I41", - point_group_name = "PG4", - crystal_system = "TETRAGONAL", - pdb_name = "I 41", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_0_34), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_12_14)]) + number=80, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="I41", + point_group_name="PG4", + crystal_system="TETRAGONAL", + pdb_name="I 41", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_0_34), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_12_14), + ], +) sg81 = SpaceGroup( - number = 81, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P-4", - point_group_name = "PG4bar", - crystal_system = "TETRAGONAL", - pdb_name = "P -4", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0)]) + number=81, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P-4", + point_group_name="PG4bar", + crystal_system="TETRAGONAL", + pdb_name="P -4", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + ], +) sg82 = SpaceGroup( - number = 82, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "I-4", - point_group_name = "PG4bar", - crystal_system = "TETRAGONAL", - pdb_name = "I -4", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12)]) + number=82, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="I-4", + point_group_name="PG4bar", + crystal_system="TETRAGONAL", + pdb_name="I -4", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + ], +) sg83 = SpaceGroup( - number = 83, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4/m", - point_group_name = "PG4/m", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0)]) + number=83, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4/m", + point_group_name="PG4/m", + crystal_system="TETRAGONAL", + pdb_name="P 4/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + ], +) sg84 = SpaceGroup( - number = 84, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42/m", - point_group_name = "PG4/m", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_12)]) + number=84, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42/m", + point_group_name="PG4/m", + crystal_system="TETRAGONAL", + pdb_name="P 42/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_12), + ], +) sg85 = SpaceGroup( - number = 85, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4/n", - point_group_name = "PG4/m", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_0), - SymOp(Rot_Y_mX_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0)]) + number=85, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4/n", + point_group_name="PG4/m", + crystal_system="TETRAGONAL", + pdb_name="P 4/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_0), + SymOp(Rot_Y_mX_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + ], +) sg86 = SpaceGroup( - number = 86, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42/n", - point_group_name = "PG4/m", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0)]) + number=86, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42/n", + point_group_name="PG4/m", + crystal_system="TETRAGONAL", + pdb_name="P 42/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + ], +) sg87 = SpaceGroup( - number = 87, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I4/m", - point_group_name = "PG4/m", - crystal_system = "TETRAGONAL", - pdb_name = "I 4/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12)]) + number=87, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I4/m", + point_group_name="PG4/m", + crystal_system="TETRAGONAL", + pdb_name="I 4/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + ], +) sg88 = SpaceGroup( - number = 88, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I41/a", - point_group_name = "PG4/m", - crystal_system = "TETRAGONAL", - pdb_name = "I 41/a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_0_34), - SymOp(Rot_mX_mY_mZ, Tr_0_12_14), - SymOp(Rot_X_Y_mZ, Tr_12_0_34), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_12_14), - SymOp(Rot_mX_mY_mZ, Tr_12_0_34), - SymOp(Rot_X_Y_mZ, Tr_0_12_14), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_0)]) + number=88, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I41/a", + point_group_name="PG4/m", + crystal_system="TETRAGONAL", + pdb_name="I 41/a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_0_34), + SymOp(Rot_mX_mY_mZ, Tr_0_12_14), + SymOp(Rot_X_Y_mZ, Tr_12_0_34), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_12_14), + SymOp(Rot_mX_mY_mZ, Tr_12_0_34), + SymOp(Rot_X_Y_mZ, Tr_0_12_14), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + ], +) sg89 = SpaceGroup( - number = 89, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P422", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 4 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0)]) + number=89, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P422", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 4 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + ], +) sg90 = SpaceGroup( - number = 90, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4212", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 4 21 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_0), - SymOp(Rot_Y_mX_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0)]) + number=90, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4212", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 4 21 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_0), + SymOp(Rot_Y_mX_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + ], +) sg91 = SpaceGroup( - number = 91, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4122", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 41 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mY_X_Z, Tr_0_0_14), - SymOp(Rot_Y_mX_Z, Tr_0_0_34), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_34), - SymOp(Rot_mY_mX_mZ, Tr_0_0_14)]) + number=91, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4122", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 41 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mY_X_Z, Tr_0_0_14), + SymOp(Rot_Y_mX_Z, Tr_0_0_34), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_34), + SymOp(Rot_mY_mX_mZ, Tr_0_0_14), + ], +) sg92 = SpaceGroup( - number = 92, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P41212", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 41 21 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mY_X_Z, Tr_12_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_12_34), - SymOp(Rot_mX_Y_mZ, Tr_12_12_14), - SymOp(Rot_X_mY_mZ, Tr_12_12_34), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12)]) + number=92, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P41212", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 41 21 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mY_X_Z, Tr_12_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_12_34), + SymOp(Rot_mX_Y_mZ, Tr_12_12_14), + SymOp(Rot_X_mY_mZ, Tr_12_12_34), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + ], +) sg93 = SpaceGroup( - number = 93, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4222", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 42 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12)]) + number=93, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4222", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 42 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + ], +) sg94 = SpaceGroup( - number = 94, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42212", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 42 21 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0)]) + number=94, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42212", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 42 21 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + ], +) sg95 = SpaceGroup( - number = 95, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4322", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 43 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mY_X_Z, Tr_0_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_0_14), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_14), - SymOp(Rot_mY_mX_mZ, Tr_0_0_34)]) + number=95, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4322", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 43 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mY_X_Z, Tr_0_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_0_14), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_14), + SymOp(Rot_mY_mX_mZ, Tr_0_0_34), + ], +) sg96 = SpaceGroup( - number = 96, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P43212", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 43 21 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mY_X_Z, Tr_12_12_34), - SymOp(Rot_Y_mX_Z, Tr_12_12_14), - SymOp(Rot_mX_Y_mZ, Tr_12_12_34), - SymOp(Rot_X_mY_mZ, Tr_12_12_14), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12)]) + number=96, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P43212", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 43 21 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mY_X_Z, Tr_12_12_34), + SymOp(Rot_Y_mX_Z, Tr_12_12_14), + SymOp(Rot_mX_Y_mZ, Tr_12_12_34), + SymOp(Rot_X_mY_mZ, Tr_12_12_14), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + ], +) sg97 = SpaceGroup( - number = 97, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I422", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "I 4 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12)]) + number=97, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I422", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="I 4 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + ], +) sg98 = SpaceGroup( - number = 98, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I4122", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "I 41 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_0_34), - SymOp(Rot_mX_Y_mZ, Tr_12_0_34), - SymOp(Rot_X_mY_mZ, Tr_0_12_14), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_12_14), - SymOp(Rot_mX_Y_mZ, Tr_0_12_14), - SymOp(Rot_X_mY_mZ, Tr_12_0_34), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12)]) + number=98, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I4122", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="I 41 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_0_34), + SymOp(Rot_mX_Y_mZ, Tr_12_0_34), + SymOp(Rot_X_mY_mZ, Tr_0_12_14), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_12_14), + SymOp(Rot_mX_Y_mZ, Tr_0_12_14), + SymOp(Rot_X_mY_mZ, Tr_12_0_34), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + ], +) sg99 = SpaceGroup( - number = 99, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4mm", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4 m m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=99, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4mm", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 4 m m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg100 = SpaceGroup( - number = 100, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4bm", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4 b m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=100, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4bm", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 4 b m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg101 = SpaceGroup( - number = 101, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42cm", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42 c m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=101, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42cm", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 42 c m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg102 = SpaceGroup( - number = 102, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42nm", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42 n m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=102, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42nm", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 42 n m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg103 = SpaceGroup( - number = 103, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4cc", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4 c c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12)]) + number=103, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4cc", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 4 c c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + ], +) sg104 = SpaceGroup( - number = 104, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P4nc", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4 n c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=104, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P4nc", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 4 n c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg105 = SpaceGroup( - number = 105, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42mc", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42 m c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12)]) + number=105, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42mc", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 42 m c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + ], +) sg106 = SpaceGroup( - number = 106, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42bc", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42 b c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=106, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42bc", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="P 42 b c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg107 = SpaceGroup( - number = 107, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I4mm", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "I 4 m m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=107, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I4mm", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="I 4 m m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg108 = SpaceGroup( - number = 108, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I4cm", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "I 4 c m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=108, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I4cm", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="I 4 c m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg109 = SpaceGroup( - number = 109, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I41md", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "I 41 m d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_0_34), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_12_14), - SymOp(Rot_Y_X_Z, Tr_12_0_34), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_12_14), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_12_0_34), - SymOp(Rot_Y_X_Z, Tr_0_12_14)]) + number=109, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I41md", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="I 41 m d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_0_34), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_12_14), + SymOp(Rot_Y_X_Z, Tr_12_0_34), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_12_14), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_12_0_34), + SymOp(Rot_Y_X_Z, Tr_0_12_14), + ], +) sg110 = SpaceGroup( - number = 110, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I41cd", - point_group_name = "PG4mm", - crystal_system = "TETRAGONAL", - pdb_name = "I 41 c d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_0_34), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_0_12_34), - SymOp(Rot_Y_X_Z, Tr_12_0_14), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_12_14), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_12_0_14), - SymOp(Rot_Y_X_Z, Tr_0_12_34)]) + number=110, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I41cd", + point_group_name="PG4mm", + crystal_system="TETRAGONAL", + pdb_name="I 41 c d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_0_34), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_0_12_34), + SymOp(Rot_Y_X_Z, Tr_12_0_14), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_12_14), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_12_0_14), + SymOp(Rot_Y_X_Z, Tr_0_12_34), + ], +) sg111 = SpaceGroup( - number = 111, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-42m", - point_group_name = "PG4bar2m", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 2 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=111, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-42m", + point_group_name="PG4bar2m", + crystal_system="TETRAGONAL", + pdb_name="P -4 2 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg112 = SpaceGroup( - number = 112, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-42c", - point_group_name = "PG4bar2m", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 2 c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12)]) + number=112, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-42c", + point_group_name="PG4bar2m", + crystal_system="TETRAGONAL", + pdb_name="P -4 2 c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + ], +) sg113 = SpaceGroup( - number = 113, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-421m", - point_group_name = "PG4bar2m", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 21 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=113, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-421m", + point_group_name="PG4bar2m", + crystal_system="TETRAGONAL", + pdb_name="P -4 21 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg114 = SpaceGroup( - number = 114, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-421c", - point_group_name = "PG4bar2m", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 21 c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=114, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-421c", + point_group_name="PG4bar2m", + crystal_system="TETRAGONAL", + pdb_name="P -4 21 c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg115 = SpaceGroup( - number = 115, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-4m2", - point_group_name = "PG4barm2", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0)]) + number=115, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-4m2", + point_group_name="PG4barm2", + crystal_system="TETRAGONAL", + pdb_name="P -4 m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + ], +) sg116 = SpaceGroup( - number = 116, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-4c2", - point_group_name = "PG4barm2", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 c 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12)]) + number=116, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-4c2", + point_group_name="PG4barm2", + crystal_system="TETRAGONAL", + pdb_name="P -4 c 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + ], +) sg117 = SpaceGroup( - number = 117, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-4b2", - point_group_name = "PG4barm2", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 b 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0)]) + number=117, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-4b2", + point_group_name="PG4barm2", + crystal_system="TETRAGONAL", + pdb_name="P -4 b 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + ], +) sg118 = SpaceGroup( - number = 118, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P-4n2", - point_group_name = "PG4barm2", - crystal_system = "TETRAGONAL", - pdb_name = "P -4 n 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12)]) + number=118, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P-4n2", + point_group_name="PG4barm2", + crystal_system="TETRAGONAL", + pdb_name="P -4 n 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + ], +) sg119 = SpaceGroup( - number = 119, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I-4m2", - point_group_name = "PG4barm2", - crystal_system = "TETRAGONAL", - pdb_name = "I -4 m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12)]) + number=119, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I-4m2", + point_group_name="PG4barm2", + crystal_system="TETRAGONAL", + pdb_name="I -4 m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + ], +) sg120 = SpaceGroup( - number = 120, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I-4c2", - point_group_name = "PG4barm2", - crystal_system = "TETRAGONAL", - pdb_name = "I -4 c 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0)]) + number=120, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I-4c2", + point_group_name="PG4barm2", + crystal_system="TETRAGONAL", + pdb_name="I -4 c 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + ], +) sg121 = SpaceGroup( - number = 121, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I-42m", - point_group_name = "PG4bar2m", - crystal_system = "TETRAGONAL", - pdb_name = "I -4 2 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=121, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I-42m", + point_group_name="PG4bar2m", + crystal_system="TETRAGONAL", + pdb_name="I -4 2 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg122 = SpaceGroup( - number = 122, - num_sym_equiv = 16, - num_primitive_sym_equiv = 8, - short_name = "I-42d", - point_group_name = "PG4bar2m", - crystal_system = "TETRAGONAL", - pdb_name = "I -4 2 d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_34), - SymOp(Rot_X_mY_mZ, Tr_12_0_34), - SymOp(Rot_mY_mX_Z, Tr_12_0_34), - SymOp(Rot_Y_X_Z, Tr_12_0_34), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_14), - SymOp(Rot_X_mY_mZ, Tr_0_12_14), - SymOp(Rot_mY_mX_Z, Tr_0_12_14), - SymOp(Rot_Y_X_Z, Tr_0_12_14)]) + number=122, + num_sym_equiv=16, + num_primitive_sym_equiv=8, + short_name="I-42d", + point_group_name="PG4bar2m", + crystal_system="TETRAGONAL", + pdb_name="I -4 2 d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_34), + SymOp(Rot_X_mY_mZ, Tr_12_0_34), + SymOp(Rot_mY_mX_Z, Tr_12_0_34), + SymOp(Rot_Y_X_Z, Tr_12_0_34), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_14), + SymOp(Rot_X_mY_mZ, Tr_0_12_14), + SymOp(Rot_mY_mX_Z, Tr_0_12_14), + SymOp(Rot_Y_X_Z, Tr_0_12_14), + ], +) sg123 = SpaceGroup( - number = 123, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/mmm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/m 2/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=123, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/mmm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/m 2/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg124 = SpaceGroup( - number = 124, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/mcc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/m 2/c 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12)]) + number=124, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/mcc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/m 2/c 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + ], +) sg125 = SpaceGroup( - number = 125, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/nbm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/n 2/b 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_mZ, Tr_12_12_0), - SymOp(Rot_mY_X_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=125, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/nbm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/n 2/b 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_mZ, Tr_12_12_0), + SymOp(Rot_mY_X_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg126 = SpaceGroup( - number = 126, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/nnc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/n 2/n 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=126, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/nnc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/n 2/n 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg127 = SpaceGroup( - number = 127, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/mbm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/m 21/b 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=127, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/mbm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/m 21/b 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg128 = SpaceGroup( - number = 128, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/mnc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/m 21/n 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=128, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/mnc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/m 21/n 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg129 = SpaceGroup( - number = 129, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/nmm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/n 21/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_0), - SymOp(Rot_Y_mX_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=129, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/nmm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/n 21/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_0), + SymOp(Rot_Y_mX_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg130 = SpaceGroup( - number = 130, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P4/ncc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 4/n 2/c 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_0), - SymOp(Rot_Y_mX_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=130, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P4/ncc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 4/n 2/c 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_0), + SymOp(Rot_Y_mX_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg131 = SpaceGroup( - number = 131, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/mmc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/m 2/m 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12)]) + number=131, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/mmc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/m 2/m 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + ], +) sg132 = SpaceGroup( - number = 132, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/mcm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/m 2/c 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=132, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/mcm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/m 2/c 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg133 = SpaceGroup( - number = 133, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/nbc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/n 2/b 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12)]) + number=133, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/nbc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/n 2/b 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + ], +) sg134 = SpaceGroup( - number = 134, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/nnm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/n 2/n 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=134, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/nnm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/n 2/n 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg135 = SpaceGroup( - number = 135, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/mbc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/m 21/b 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=135, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/mbc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/m 21/b 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg136 = SpaceGroup( - number = 136, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/mnm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/m 21/n 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0)]) + number=136, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/mnm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/m 21/n 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + ], +) sg137 = SpaceGroup( - number = 137, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/nmc", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/n 21/m 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=137, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/nmc", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/n 21/m 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg138 = SpaceGroup( - number = 138, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = "P42/ncm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "P 42/n 21/c 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=138, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="P42/ncm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="P 42/n 21/c 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg139 = SpaceGroup( - number = 139, - num_sym_equiv = 32, - num_primitive_sym_equiv = 16, - short_name = "I4/mmm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "I 4/m 2/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12)]) + number=139, + num_sym_equiv=32, + num_primitive_sym_equiv=16, + short_name="I4/mmm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="I 4/m 2/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + ], +) sg140 = SpaceGroup( - number = 140, - num_sym_equiv = 32, - num_primitive_sym_equiv = 16, - short_name = "I4/mcm", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "I 4/m 2/c 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0)]) + number=140, + num_sym_equiv=32, + num_primitive_sym_equiv=16, + short_name="I4/mcm", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="I 4/m 2/c 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + ], +) sg141 = SpaceGroup( - number = 141, - num_sym_equiv = 32, - num_primitive_sym_equiv = 16, - short_name = "I41/amd", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "I 41/a 2/m 2/d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_0_34), - SymOp(Rot_mX_Y_mZ, Tr_12_0_34), - SymOp(Rot_X_mY_mZ, Tr_0_12_14), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_12_14), - SymOp(Rot_X_Y_mZ, Tr_12_0_34), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_12_0_34), - SymOp(Rot_Y_X_Z, Tr_0_12_14), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_12_14), - SymOp(Rot_mX_Y_mZ, Tr_0_12_14), - SymOp(Rot_X_mY_mZ, Tr_12_0_34), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_0_34), - SymOp(Rot_X_Y_mZ, Tr_0_12_14), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_12_14), - SymOp(Rot_Y_X_Z, Tr_12_0_34)]) + number=141, + num_sym_equiv=32, + num_primitive_sym_equiv=16, + short_name="I41/amd", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="I 41/a 2/m 2/d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_0_34), + SymOp(Rot_mX_Y_mZ, Tr_12_0_34), + SymOp(Rot_X_mY_mZ, Tr_0_12_14), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_12_14), + SymOp(Rot_X_Y_mZ, Tr_12_0_34), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_12_0_34), + SymOp(Rot_Y_X_Z, Tr_0_12_14), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_12_14), + SymOp(Rot_mX_Y_mZ, Tr_0_12_14), + SymOp(Rot_X_mY_mZ, Tr_12_0_34), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_0_34), + SymOp(Rot_X_Y_mZ, Tr_0_12_14), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_12_14), + SymOp(Rot_Y_X_Z, Tr_12_0_34), + ], +) sg142 = SpaceGroup( - number = 142, - num_sym_equiv = 32, - num_primitive_sym_equiv = 16, - short_name = "I41/acd", - point_group_name = "PG4/mmm", - crystal_system = "TETRAGONAL", - pdb_name = "I 41/a 2/c 2/d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_14), - SymOp(Rot_Y_mX_Z, Tr_12_0_34), - SymOp(Rot_mX_Y_mZ, Tr_12_0_14), - SymOp(Rot_X_mY_mZ, Tr_0_12_34), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_12_14), - SymOp(Rot_X_Y_mZ, Tr_12_0_34), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_12_0_14), - SymOp(Rot_Y_X_Z, Tr_0_12_34), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_34), - SymOp(Rot_Y_mX_Z, Tr_0_12_14), - SymOp(Rot_mX_Y_mZ, Tr_0_12_34), - SymOp(Rot_X_mY_mZ, Tr_12_0_14), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_0_34), - SymOp(Rot_X_Y_mZ, Tr_0_12_14), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_0_12_34), - SymOp(Rot_Y_X_Z, Tr_12_0_14)]) + number=142, + num_sym_equiv=32, + num_primitive_sym_equiv=16, + short_name="I41/acd", + point_group_name="PG4/mmm", + crystal_system="TETRAGONAL", + pdb_name="I 41/a 2/c 2/d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_14), + SymOp(Rot_Y_mX_Z, Tr_12_0_34), + SymOp(Rot_mX_Y_mZ, Tr_12_0_14), + SymOp(Rot_X_mY_mZ, Tr_0_12_34), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_12_14), + SymOp(Rot_X_Y_mZ, Tr_12_0_34), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_12_0_14), + SymOp(Rot_Y_X_Z, Tr_0_12_34), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_34), + SymOp(Rot_Y_mX_Z, Tr_0_12_14), + SymOp(Rot_mX_Y_mZ, Tr_0_12_34), + SymOp(Rot_X_mY_mZ, Tr_12_0_14), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_0_34), + SymOp(Rot_X_Y_mZ, Tr_0_12_14), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_0_12_34), + SymOp(Rot_Y_X_Z, Tr_12_0_14), + ], +) sg143 = SpaceGroup( - number = 143, - num_sym_equiv = 3, - num_primitive_sym_equiv = 3, - short_name = "P3", - point_group_name = "PG3", - crystal_system = "TRIGONAL", - pdb_name = "P 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0)]) + number=143, + num_sym_equiv=3, + num_primitive_sym_equiv=3, + short_name="P3", + point_group_name="PG3", + crystal_system="TRIGONAL", + pdb_name="P 3", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mY_XmY_Z, Tr_0_0_0), SymOp(Rot_mXY_mX_Z, Tr_0_0_0)], +) sg144 = SpaceGroup( - number = 144, - num_sym_equiv = 3, - num_primitive_sym_equiv = 3, - short_name = "P31", - point_group_name = "PG3", - crystal_system = "TRIGONAL", - pdb_name = "P 31", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_13), - SymOp(Rot_mXY_mX_Z, Tr_0_0_23)]) + number=144, + num_sym_equiv=3, + num_primitive_sym_equiv=3, + short_name="P31", + point_group_name="PG3", + crystal_system="TRIGONAL", + pdb_name="P 31", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mY_XmY_Z, Tr_0_0_13), SymOp(Rot_mXY_mX_Z, Tr_0_0_23)], +) sg145 = SpaceGroup( - number = 145, - num_sym_equiv = 3, - num_primitive_sym_equiv = 3, - short_name = "P32", - point_group_name = "PG3", - crystal_system = "TRIGONAL", - pdb_name = "P 32", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_23), - SymOp(Rot_mXY_mX_Z, Tr_0_0_13)]) + number=145, + num_sym_equiv=3, + num_primitive_sym_equiv=3, + short_name="P32", + point_group_name="PG3", + crystal_system="TRIGONAL", + pdb_name="P 32", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mY_XmY_Z, Tr_0_0_23), SymOp(Rot_mXY_mX_Z, Tr_0_0_13)], +) sg146 = SpaceGroup( - number = 146, - num_sym_equiv = 9, - num_primitive_sym_equiv = 3, - short_name = "H3", - point_group_name = "PG3", - crystal_system = "TRIGONAL", - pdb_name = "H 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_23_13_13), - SymOp(Rot_mY_XmY_Z, Tr_23_13_13), - SymOp(Rot_mXY_mX_Z, Tr_23_13_13), - SymOp(Rot_X_Y_Z, Tr_13_23_23), - SymOp(Rot_mY_XmY_Z, Tr_13_23_23), - SymOp(Rot_mXY_mX_Z, Tr_13_23_23)]) + number=146, + num_sym_equiv=9, + num_primitive_sym_equiv=3, + short_name="H3", + point_group_name="PG3", + crystal_system="TRIGONAL", + pdb_name="H 3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_23_13_13), + SymOp(Rot_mY_XmY_Z, Tr_23_13_13), + SymOp(Rot_mXY_mX_Z, Tr_23_13_13), + SymOp(Rot_X_Y_Z, Tr_13_23_23), + SymOp(Rot_mY_XmY_Z, Tr_13_23_23), + SymOp(Rot_mXY_mX_Z, Tr_13_23_23), + ], +) sg1146 = SpaceGroup( - number = 1146, - num_sym_equiv = 3, - num_primitive_sym_equiv = 3, - short_name = "R3", - point_group_name = "PG3", - crystal_system = "TRIGONAL", - pdb_name = "R 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0)]) + number=1146, + num_sym_equiv=3, + num_primitive_sym_equiv=3, + short_name="R3", + point_group_name="PG3", + crystal_system="TRIGONAL", + pdb_name="R 3", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_Z_X_Y, Tr_0_0_0), SymOp(Rot_Y_Z_X, Tr_0_0_0)], +) sg147 = SpaceGroup( - number = 147, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P-3", - point_group_name = "PG3bar", - crystal_system = "TRIGONAL", - pdb_name = "P -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0)]) + number=147, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P-3", + point_group_name="PG3bar", + crystal_system="TRIGONAL", + pdb_name="P -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + ], +) sg148 = SpaceGroup( - number = 148, - num_sym_equiv = 18, - num_primitive_sym_equiv = 6, - short_name = "H-3", - point_group_name = "PG3bar", - crystal_system = "TRIGONAL", - pdb_name = "H -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_23_13_13), - SymOp(Rot_mY_XmY_Z, Tr_23_13_13), - SymOp(Rot_mXY_mX_Z, Tr_23_13_13), - SymOp(Rot_mX_mY_mZ, Tr_23_13_13), - SymOp(Rot_Y_mXY_mZ, Tr_23_13_13), - SymOp(Rot_XmY_X_mZ, Tr_23_13_13), - SymOp(Rot_X_Y_Z, Tr_13_23_23), - SymOp(Rot_mY_XmY_Z, Tr_13_23_23), - SymOp(Rot_mXY_mX_Z, Tr_13_23_23), - SymOp(Rot_mX_mY_mZ, Tr_13_23_23), - SymOp(Rot_Y_mXY_mZ, Tr_13_23_23), - SymOp(Rot_XmY_X_mZ, Tr_13_23_23)]) + number=148, + num_sym_equiv=18, + num_primitive_sym_equiv=6, + short_name="H-3", + point_group_name="PG3bar", + crystal_system="TRIGONAL", + pdb_name="H -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_23_13_13), + SymOp(Rot_mY_XmY_Z, Tr_23_13_13), + SymOp(Rot_mXY_mX_Z, Tr_23_13_13), + SymOp(Rot_mX_mY_mZ, Tr_23_13_13), + SymOp(Rot_Y_mXY_mZ, Tr_23_13_13), + SymOp(Rot_XmY_X_mZ, Tr_23_13_13), + SymOp(Rot_X_Y_Z, Tr_13_23_23), + SymOp(Rot_mY_XmY_Z, Tr_13_23_23), + SymOp(Rot_mXY_mX_Z, Tr_13_23_23), + SymOp(Rot_mX_mY_mZ, Tr_13_23_23), + SymOp(Rot_Y_mXY_mZ, Tr_13_23_23), + SymOp(Rot_XmY_X_mZ, Tr_13_23_23), + ], +) sg1148 = SpaceGroup( - number = 1148, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "R-3", - point_group_name = "PG3bar", - crystal_system = "TRIGONAL", - pdb_name = "R -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0)]) + number=1148, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="R-3", + point_group_name="PG3bar", + crystal_system="TRIGONAL", + pdb_name="R -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + ], +) sg149 = SpaceGroup( - number = 149, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P312", - point_group_name = "PG312", - crystal_system = "TRIGONAL", - pdb_name = "P 3 1 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0)]) + number=149, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P312", + point_group_name="PG312", + crystal_system="TRIGONAL", + pdb_name="P 3 1 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + ], +) sg150 = SpaceGroup( - number = 150, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P321", - point_group_name = "PG321", - crystal_system = "TRIGONAL", - pdb_name = "P 3 2 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=150, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P321", + point_group_name="PG321", + crystal_system="TRIGONAL", + pdb_name="P 3 2 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mXY_mZ, Tr_0_0_0)]) + SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), + ], +) sg151 = SpaceGroup( - number = 151, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P3112", - point_group_name = "PG312", - crystal_system = "TRIGONAL", - pdb_name = "P 31 1 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_13), - SymOp(Rot_mXY_mX_Z, Tr_0_0_23), - SymOp(Rot_mY_mX_mZ, Tr_0_0_23), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_13), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0)]) + number=151, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P3112", + point_group_name="PG312", + crystal_system="TRIGONAL", + pdb_name="P 31 1 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_13), + SymOp(Rot_mXY_mX_Z, Tr_0_0_23), + SymOp(Rot_mY_mX_mZ, Tr_0_0_23), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_13), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + ], +) sg152 = SpaceGroup( - number = 152, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P3121", - point_group_name = "PG321", - crystal_system = "TRIGONAL", - pdb_name = "P 31 2 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_13), - SymOp(Rot_mXY_mX_Z, Tr_0_0_23), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=152, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P3121", + point_group_name="PG321", + crystal_system="TRIGONAL", + pdb_name="P 31 2 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_13), + SymOp(Rot_mXY_mX_Z, Tr_0_0_23), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_23), - SymOp(Rot_mX_mXY_mZ, Tr_0_0_13)]) + SymOp(Rot_mX_mXY_mZ, Tr_0_0_13), + ], +) sg153 = SpaceGroup( - number = 153, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P3212", - point_group_name = "PG312", - crystal_system = "TRIGONAL", - pdb_name = "P 32 1 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_23), - SymOp(Rot_mXY_mX_Z, Tr_0_0_13), - SymOp(Rot_mY_mX_mZ, Tr_0_0_13), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_23), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0)]) + number=153, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P3212", + point_group_name="PG312", + crystal_system="TRIGONAL", + pdb_name="P 32 1 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_23), + SymOp(Rot_mXY_mX_Z, Tr_0_0_13), + SymOp(Rot_mY_mX_mZ, Tr_0_0_13), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_23), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + ], +) sg154 = SpaceGroup( - number = 154, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P3221", - point_group_name = "PG321", - crystal_system = "TRIGONAL", - pdb_name = "P 32 2 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_23), - SymOp(Rot_mXY_mX_Z, Tr_0_0_13), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=154, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P3221", + point_group_name="PG321", + crystal_system="TRIGONAL", + pdb_name="P 32 2 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_23), + SymOp(Rot_mXY_mX_Z, Tr_0_0_13), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_13), - SymOp(Rot_mX_mXY_mZ, Tr_0_0_23)]) + SymOp(Rot_mX_mXY_mZ, Tr_0_0_23), + ], +) sg155 = SpaceGroup( - number = 155, - num_sym_equiv = 18, - num_primitive_sym_equiv = 6, - short_name = "H32", - point_group_name = "PG321", - crystal_system = "TRIGONAL", - pdb_name = "H 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=155, + num_sym_equiv=18, + num_primitive_sym_equiv=6, + short_name="H32", + point_group_name="PG321", + crystal_system="TRIGONAL", + pdb_name="H 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_23_13_13), - SymOp(Rot_mY_XmY_Z, Tr_23_13_13), - SymOp(Rot_mXY_mX_Z, Tr_23_13_13), - SymOp(Rot_Y_X_mZ, Tr_23_13_13), + SymOp(Rot_X_Y_Z, Tr_23_13_13), + SymOp(Rot_mY_XmY_Z, Tr_23_13_13), + SymOp(Rot_mXY_mX_Z, Tr_23_13_13), + SymOp(Rot_Y_X_mZ, Tr_23_13_13), SymOp(Rot_XmY_mY_mZ, Tr_23_13_13), SymOp(Rot_mX_mXY_mZ, Tr_23_13_13), - SymOp(Rot_X_Y_Z, Tr_13_23_23), - SymOp(Rot_mY_XmY_Z, Tr_13_23_23), - SymOp(Rot_mXY_mX_Z, Tr_13_23_23), - SymOp(Rot_Y_X_mZ, Tr_13_23_23), + SymOp(Rot_X_Y_Z, Tr_13_23_23), + SymOp(Rot_mY_XmY_Z, Tr_13_23_23), + SymOp(Rot_mXY_mX_Z, Tr_13_23_23), + SymOp(Rot_Y_X_mZ, Tr_13_23_23), SymOp(Rot_XmY_mY_mZ, Tr_13_23_23), - SymOp(Rot_mX_mXY_mZ, Tr_13_23_23)]) + SymOp(Rot_mX_mXY_mZ, Tr_13_23_23), + ], +) sg1155 = SpaceGroup( - number = 1155, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "R32", - point_group_name = "PG32", - crystal_system = "TRIGONAL", - pdb_name = "R 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0)]) + number=1155, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="R32", + point_group_name="PG32", + crystal_system="TRIGONAL", + pdb_name="R 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + ], +) sg156 = SpaceGroup( - number = 156, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P3m1", - point_group_name = "PG3m1", - crystal_system = "TRIGONAL", - pdb_name = "P 3 m 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0)]) + number=156, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P3m1", + point_group_name="PG3m1", + crystal_system="TRIGONAL", + pdb_name="P 3 m 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + ], +) sg157 = SpaceGroup( - number = 157, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P31m", - point_group_name = "PG31m", - crystal_system = "TRIGONAL", - pdb_name = "P 3 1 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_XmY_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mXY_Z, Tr_0_0_0)]) + number=157, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P31m", + point_group_name="PG31m", + crystal_system="TRIGONAL", + pdb_name="P 3 1 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_XmY_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mXY_Z, Tr_0_0_0), + ], +) sg158 = SpaceGroup( - number = 158, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P3c1", - point_group_name = "PG3m1", - crystal_system = "TRIGONAL", - pdb_name = "P 3 c 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12)]) + number=158, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P3c1", + point_group_name="PG3m1", + crystal_system="TRIGONAL", + pdb_name="P 3 c 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + ], +) sg159 = SpaceGroup( - number = 159, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P31c", - point_group_name = "PG31m", - crystal_system = "TRIGONAL", - pdb_name = "P 3 1 c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_XmY_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mXY_Z, Tr_0_0_12)]) + number=159, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P31c", + point_group_name="PG31m", + crystal_system="TRIGONAL", + pdb_name="P 3 1 c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_XmY_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mXY_Z, Tr_0_0_12), + ], +) sg160 = SpaceGroup( - number = 160, - num_sym_equiv = 18, - num_primitive_sym_equiv = 6, - short_name = "H3m", - point_group_name = "PG3m", - crystal_system = "TRIGONAL", - pdb_name = "H 3 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_23_13_13), - SymOp(Rot_mY_XmY_Z, Tr_23_13_13), - SymOp(Rot_mXY_mX_Z, Tr_23_13_13), - SymOp(Rot_mY_mX_Z, Tr_23_13_13), - SymOp(Rot_mXY_Y_Z, Tr_23_13_13), - SymOp(Rot_X_XmY_Z, Tr_23_13_13), - SymOp(Rot_X_Y_Z, Tr_13_23_23), - SymOp(Rot_mY_XmY_Z, Tr_13_23_23), - SymOp(Rot_mXY_mX_Z, Tr_13_23_23), - SymOp(Rot_mY_mX_Z, Tr_13_23_23), - SymOp(Rot_mXY_Y_Z, Tr_13_23_23), - SymOp(Rot_X_XmY_Z, Tr_13_23_23)]) + number=160, + num_sym_equiv=18, + num_primitive_sym_equiv=6, + short_name="H3m", + point_group_name="PG3m", + crystal_system="TRIGONAL", + pdb_name="H 3 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_23_13_13), + SymOp(Rot_mY_XmY_Z, Tr_23_13_13), + SymOp(Rot_mXY_mX_Z, Tr_23_13_13), + SymOp(Rot_mY_mX_Z, Tr_23_13_13), + SymOp(Rot_mXY_Y_Z, Tr_23_13_13), + SymOp(Rot_X_XmY_Z, Tr_23_13_13), + SymOp(Rot_X_Y_Z, Tr_13_23_23), + SymOp(Rot_mY_XmY_Z, Tr_13_23_23), + SymOp(Rot_mXY_mX_Z, Tr_13_23_23), + SymOp(Rot_mY_mX_Z, Tr_13_23_23), + SymOp(Rot_mXY_Y_Z, Tr_13_23_23), + SymOp(Rot_X_XmY_Z, Tr_13_23_23), + ], +) sg1160 = SpaceGroup( - number = 1160, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "R3m", - point_group_name = "PG3m", - crystal_system = "TRIGONAL", - pdb_name = "R 3 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0)]) + number=1160, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="R3m", + point_group_name="PG3m", + crystal_system="TRIGONAL", + pdb_name="R 3 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + ], +) sg161 = SpaceGroup( - number = 161, - num_sym_equiv = 18, - num_primitive_sym_equiv = 6, - short_name = "H3c", - point_group_name = "PG3m", - crystal_system = "TRIGONAL", - pdb_name = "H 3 c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_23_13_13), - SymOp(Rot_mY_XmY_Z, Tr_23_13_13), - SymOp(Rot_mXY_mX_Z, Tr_23_13_13), - SymOp(Rot_mY_mX_Z, Tr_23_13_56), - SymOp(Rot_mXY_Y_Z, Tr_23_13_56), - SymOp(Rot_X_XmY_Z, Tr_23_13_56), - SymOp(Rot_X_Y_Z, Tr_13_23_23), - SymOp(Rot_mY_XmY_Z, Tr_13_23_23), - SymOp(Rot_mXY_mX_Z, Tr_13_23_23), - SymOp(Rot_mY_mX_Z, Tr_13_23_16), - SymOp(Rot_mXY_Y_Z, Tr_13_23_16), - SymOp(Rot_X_XmY_Z, Tr_13_23_16)]) + number=161, + num_sym_equiv=18, + num_primitive_sym_equiv=6, + short_name="H3c", + point_group_name="PG3m", + crystal_system="TRIGONAL", + pdb_name="H 3 c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_23_13_13), + SymOp(Rot_mY_XmY_Z, Tr_23_13_13), + SymOp(Rot_mXY_mX_Z, Tr_23_13_13), + SymOp(Rot_mY_mX_Z, Tr_23_13_56), + SymOp(Rot_mXY_Y_Z, Tr_23_13_56), + SymOp(Rot_X_XmY_Z, Tr_23_13_56), + SymOp(Rot_X_Y_Z, Tr_13_23_23), + SymOp(Rot_mY_XmY_Z, Tr_13_23_23), + SymOp(Rot_mXY_mX_Z, Tr_13_23_23), + SymOp(Rot_mY_mX_Z, Tr_13_23_16), + SymOp(Rot_mXY_Y_Z, Tr_13_23_16), + SymOp(Rot_X_XmY_Z, Tr_13_23_16), + ], +) sg1161 = SpaceGroup( - number = 1161, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "R3c", - point_group_name = "PG3m", - crystal_system = "TRIGONAL", - pdb_name = "R 3 c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12)]) + number=1161, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="R3c", + point_group_name="PG3m", + crystal_system="TRIGONAL", + pdb_name="R 3 c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + ], +) sg162 = SpaceGroup( - number = 162, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-31m", - point_group_name = "PG3bar1m", - crystal_system = "TRIGONAL", - pdb_name = "P -3 1 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_XmY_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mXY_Z, Tr_0_0_0)]) + number=162, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-31m", + point_group_name="PG3bar1m", + crystal_system="TRIGONAL", + pdb_name="P -3 1 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_XmY_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mXY_Z, Tr_0_0_0), + ], +) sg163 = SpaceGroup( - number = 163, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-31c", - point_group_name = "PG3bar1m", - crystal_system = "TRIGONAL", - pdb_name = "P -3 1 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_XmY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_XmY_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mXY_Z, Tr_0_0_12)]) + number=163, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-31c", + point_group_name="PG3bar1m", + crystal_system="TRIGONAL", + pdb_name="P -3 1 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_XmY_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_XmY_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mXY_Z, Tr_0_0_12), + ], +) sg164 = SpaceGroup( - number = 164, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-3m1", - point_group_name = "PG3barm1", - crystal_system = "TRIGONAL", - pdb_name = "P -3 2/m 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=164, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-3m1", + point_group_name="PG3barm1", + crystal_system="TRIGONAL", + pdb_name="P -3 2/m 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0)]) + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + ], +) sg165 = SpaceGroup( - number = 165, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-3c1", - point_group_name = "PG3barm1", - crystal_system = "TRIGONAL", - pdb_name = "P -3 2/c 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), + number=165, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-3c1", + point_group_name="PG3barm1", + crystal_system="TRIGONAL", + pdb_name="P -3 2/c 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), SymOp(Rot_XmY_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_mXY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12)]) + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + ], +) sg166 = SpaceGroup( - number = 166, - num_sym_equiv = 36, - num_primitive_sym_equiv = 12, - short_name = "H-3m", - point_group_name = "PG3barm", - crystal_system = "TRIGONAL", - pdb_name = "H -3 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=166, + num_sym_equiv=36, + num_primitive_sym_equiv=12, + short_name="H-3m", + point_group_name="PG3barm", + crystal_system="TRIGONAL", + pdb_name="H -3 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_23_13_13), - SymOp(Rot_mY_XmY_Z, Tr_23_13_13), - SymOp(Rot_mXY_mX_Z, Tr_23_13_13), - SymOp(Rot_Y_X_mZ, Tr_23_13_13), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_23_13_13), + SymOp(Rot_mY_XmY_Z, Tr_23_13_13), + SymOp(Rot_mXY_mX_Z, Tr_23_13_13), + SymOp(Rot_Y_X_mZ, Tr_23_13_13), SymOp(Rot_XmY_mY_mZ, Tr_23_13_13), SymOp(Rot_mX_mXY_mZ, Tr_23_13_13), - SymOp(Rot_mX_mY_mZ, Tr_23_13_13), - SymOp(Rot_Y_mXY_mZ, Tr_23_13_13), - SymOp(Rot_XmY_X_mZ, Tr_23_13_13), - SymOp(Rot_mY_mX_Z, Tr_23_13_13), - SymOp(Rot_mXY_Y_Z, Tr_23_13_13), - SymOp(Rot_X_XmY_Z, Tr_23_13_13), - SymOp(Rot_X_Y_Z, Tr_13_23_23), - SymOp(Rot_mY_XmY_Z, Tr_13_23_23), - SymOp(Rot_mXY_mX_Z, Tr_13_23_23), - SymOp(Rot_Y_X_mZ, Tr_13_23_23), + SymOp(Rot_mX_mY_mZ, Tr_23_13_13), + SymOp(Rot_Y_mXY_mZ, Tr_23_13_13), + SymOp(Rot_XmY_X_mZ, Tr_23_13_13), + SymOp(Rot_mY_mX_Z, Tr_23_13_13), + SymOp(Rot_mXY_Y_Z, Tr_23_13_13), + SymOp(Rot_X_XmY_Z, Tr_23_13_13), + SymOp(Rot_X_Y_Z, Tr_13_23_23), + SymOp(Rot_mY_XmY_Z, Tr_13_23_23), + SymOp(Rot_mXY_mX_Z, Tr_13_23_23), + SymOp(Rot_Y_X_mZ, Tr_13_23_23), SymOp(Rot_XmY_mY_mZ, Tr_13_23_23), SymOp(Rot_mX_mXY_mZ, Tr_13_23_23), - SymOp(Rot_mX_mY_mZ, Tr_13_23_23), - SymOp(Rot_Y_mXY_mZ, Tr_13_23_23), - SymOp(Rot_XmY_X_mZ, Tr_13_23_23), - SymOp(Rot_mY_mX_Z, Tr_13_23_23), - SymOp(Rot_mXY_Y_Z, Tr_13_23_23), - SymOp(Rot_X_XmY_Z, Tr_13_23_23)]) + SymOp(Rot_mX_mY_mZ, Tr_13_23_23), + SymOp(Rot_Y_mXY_mZ, Tr_13_23_23), + SymOp(Rot_XmY_X_mZ, Tr_13_23_23), + SymOp(Rot_mY_mX_Z, Tr_13_23_23), + SymOp(Rot_mXY_Y_Z, Tr_13_23_23), + SymOp(Rot_X_XmY_Z, Tr_13_23_23), + ], +) sg1166 = SpaceGroup( - number = 1166, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "R-3m", - point_group_name = "PG3barm", - crystal_system = "TRIGONAL", - pdb_name = "R -3 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0)]) + number=1166, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="R-3m", + point_group_name="PG3barm", + crystal_system="TRIGONAL", + pdb_name="R -3 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + ], +) sg167 = SpaceGroup( - number = 167, - num_sym_equiv = 36, - num_primitive_sym_equiv = 12, - short_name = "H-3c", - point_group_name = "PG3barm", - crystal_system = "TRIGONAL", - pdb_name = "H -3 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), + number=167, + num_sym_equiv=36, + num_primitive_sym_equiv=12, + short_name="H-3c", + point_group_name="PG3barm", + crystal_system="TRIGONAL", + pdb_name="H -3 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), SymOp(Rot_XmY_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_mXY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_23_13_13), - SymOp(Rot_mY_XmY_Z, Tr_23_13_13), - SymOp(Rot_mXY_mX_Z, Tr_23_13_13), - SymOp(Rot_Y_X_mZ, Tr_23_13_56), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_23_13_13), + SymOp(Rot_mY_XmY_Z, Tr_23_13_13), + SymOp(Rot_mXY_mX_Z, Tr_23_13_13), + SymOp(Rot_Y_X_mZ, Tr_23_13_56), SymOp(Rot_XmY_mY_mZ, Tr_23_13_56), SymOp(Rot_mX_mXY_mZ, Tr_23_13_56), - SymOp(Rot_mX_mY_mZ, Tr_23_13_13), - SymOp(Rot_Y_mXY_mZ, Tr_23_13_13), - SymOp(Rot_XmY_X_mZ, Tr_23_13_13), - SymOp(Rot_mY_mX_Z, Tr_23_13_56), - SymOp(Rot_mXY_Y_Z, Tr_23_13_56), - SymOp(Rot_X_XmY_Z, Tr_23_13_56), - SymOp(Rot_X_Y_Z, Tr_13_23_23), - SymOp(Rot_mY_XmY_Z, Tr_13_23_23), - SymOp(Rot_mXY_mX_Z, Tr_13_23_23), - SymOp(Rot_Y_X_mZ, Tr_13_23_16), + SymOp(Rot_mX_mY_mZ, Tr_23_13_13), + SymOp(Rot_Y_mXY_mZ, Tr_23_13_13), + SymOp(Rot_XmY_X_mZ, Tr_23_13_13), + SymOp(Rot_mY_mX_Z, Tr_23_13_56), + SymOp(Rot_mXY_Y_Z, Tr_23_13_56), + SymOp(Rot_X_XmY_Z, Tr_23_13_56), + SymOp(Rot_X_Y_Z, Tr_13_23_23), + SymOp(Rot_mY_XmY_Z, Tr_13_23_23), + SymOp(Rot_mXY_mX_Z, Tr_13_23_23), + SymOp(Rot_Y_X_mZ, Tr_13_23_16), SymOp(Rot_XmY_mY_mZ, Tr_13_23_16), SymOp(Rot_mX_mXY_mZ, Tr_13_23_16), - SymOp(Rot_mX_mY_mZ, Tr_13_23_23), - SymOp(Rot_Y_mXY_mZ, Tr_13_23_23), - SymOp(Rot_XmY_X_mZ, Tr_13_23_23), - SymOp(Rot_mY_mX_Z, Tr_13_23_16), - SymOp(Rot_mXY_Y_Z, Tr_13_23_16), - SymOp(Rot_X_XmY_Z, Tr_13_23_16)]) + SymOp(Rot_mX_mY_mZ, Tr_13_23_23), + SymOp(Rot_Y_mXY_mZ, Tr_13_23_23), + SymOp(Rot_XmY_X_mZ, Tr_13_23_23), + SymOp(Rot_mY_mX_Z, Tr_13_23_16), + SymOp(Rot_mXY_Y_Z, Tr_13_23_16), + SymOp(Rot_X_XmY_Z, Tr_13_23_16), + ], +) sg1167 = SpaceGroup( - number = 1167, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "R-3c", - point_group_name = "PG3barm", - crystal_system = "TRIGONAL", - pdb_name = "R -3 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mZ_mY, Tr_12_12_12), - SymOp(Rot_mZ_mY_mX, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12)]) + number=1167, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="R-3c", + point_group_name="PG3barm", + crystal_system="TRIGONAL", + pdb_name="R -3 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mZ_mY, Tr_12_12_12), + SymOp(Rot_mZ_mY_mX, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + ], +) sg168 = SpaceGroup( - number = 168, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P6", - point_group_name = "PG6", - crystal_system = "HEXAGONAL", - pdb_name = "P 6", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_0), - SymOp(Rot_XmY_X_Z, Tr_0_0_0)]) + number=168, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P6", + point_group_name="PG6", + crystal_system="HEXAGONAL", + pdb_name="P 6", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_0), + SymOp(Rot_XmY_X_Z, Tr_0_0_0), + ], +) sg169 = SpaceGroup( - number = 169, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P61", - point_group_name = "PG6", - crystal_system = "HEXAGONAL", - pdb_name = "P 61", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_13), - SymOp(Rot_mXY_mX_Z, Tr_0_0_23), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_56), - SymOp(Rot_XmY_X_Z, Tr_0_0_16)]) + number=169, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P61", + point_group_name="PG6", + crystal_system="HEXAGONAL", + pdb_name="P 61", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_13), + SymOp(Rot_mXY_mX_Z, Tr_0_0_23), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_56), + SymOp(Rot_XmY_X_Z, Tr_0_0_16), + ], +) sg170 = SpaceGroup( - number = 170, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P65", - point_group_name = "PG6", - crystal_system = "HEXAGONAL", - pdb_name = "P 65", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_23), - SymOp(Rot_mXY_mX_Z, Tr_0_0_13), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_16), - SymOp(Rot_XmY_X_Z, Tr_0_0_56)]) + number=170, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P65", + point_group_name="PG6", + crystal_system="HEXAGONAL", + pdb_name="P 65", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_23), + SymOp(Rot_mXY_mX_Z, Tr_0_0_13), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_16), + SymOp(Rot_XmY_X_Z, Tr_0_0_56), + ], +) sg171 = SpaceGroup( - number = 171, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P62", - point_group_name = "PG6", - crystal_system = "HEXAGONAL", - pdb_name = "P 62", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_23), - SymOp(Rot_mXY_mX_Z, Tr_0_0_13), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_23), - SymOp(Rot_XmY_X_Z, Tr_0_0_13)]) + number=171, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P62", + point_group_name="PG6", + crystal_system="HEXAGONAL", + pdb_name="P 62", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_23), + SymOp(Rot_mXY_mX_Z, Tr_0_0_13), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_23), + SymOp(Rot_XmY_X_Z, Tr_0_0_13), + ], +) sg172 = SpaceGroup( - number = 172, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P64", - point_group_name = "PG6", - crystal_system = "HEXAGONAL", - pdb_name = "P 64", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_13), - SymOp(Rot_mXY_mX_Z, Tr_0_0_23), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_13), - SymOp(Rot_XmY_X_Z, Tr_0_0_23)]) + number=172, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P64", + point_group_name="PG6", + crystal_system="HEXAGONAL", + pdb_name="P 64", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_13), + SymOp(Rot_mXY_mX_Z, Tr_0_0_23), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_13), + SymOp(Rot_XmY_X_Z, Tr_0_0_23), + ], +) sg173 = SpaceGroup( - number = 173, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P63", - point_group_name = "PG6", - crystal_system = "HEXAGONAL", - pdb_name = "P 63", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_12), - SymOp(Rot_XmY_X_Z, Tr_0_0_12)]) + number=173, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P63", + point_group_name="PG6", + crystal_system="HEXAGONAL", + pdb_name="P 63", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_12), + SymOp(Rot_XmY_X_Z, Tr_0_0_12), + ], +) sg174 = SpaceGroup( - number = 174, - num_sym_equiv = 6, - num_primitive_sym_equiv = 6, - short_name = "P-6", - point_group_name = "PG6bar", - crystal_system = "HEXAGONAL", - pdb_name = "P -6", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), + number=174, + num_sym_equiv=6, + num_primitive_sym_equiv=6, + short_name="P-6", + point_group_name="PG6bar", + crystal_system="HEXAGONAL", + pdb_name="P -6", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_mY_XmY_mZ, Tr_0_0_0), - SymOp(Rot_mXY_mX_mZ, Tr_0_0_0)]) + SymOp(Rot_mXY_mX_mZ, Tr_0_0_0), + ], +) sg175 = SpaceGroup( - number = 175, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6/m", - point_group_name = "PG6/m", - crystal_system = "HEXAGONAL", - pdb_name = "P 6/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_0), - SymOp(Rot_XmY_X_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), + number=175, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6/m", + point_group_name="PG6/m", + crystal_system="HEXAGONAL", + pdb_name="P 6/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_0), + SymOp(Rot_XmY_X_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_mY_XmY_mZ, Tr_0_0_0), - SymOp(Rot_mXY_mX_mZ, Tr_0_0_0)]) + SymOp(Rot_mXY_mX_mZ, Tr_0_0_0), + ], +) sg176 = SpaceGroup( - number = 176, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P63/m", - point_group_name = "PG6/m", - crystal_system = "HEXAGONAL", - pdb_name = "P 63/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_12), - SymOp(Rot_XmY_X_Z, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12), + number=176, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P63/m", + point_group_name="PG6/m", + crystal_system="HEXAGONAL", + pdb_name="P 63/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_12), + SymOp(Rot_XmY_X_Z, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), SymOp(Rot_mY_XmY_mZ, Tr_0_0_12), - SymOp(Rot_mXY_mX_mZ, Tr_0_0_12)]) + SymOp(Rot_mXY_mX_mZ, Tr_0_0_12), + ], +) sg177 = SpaceGroup( - number = 177, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P622", - point_group_name = "PG622", - crystal_system = "HEXAGONAL", - pdb_name = "P 6 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_0), - SymOp(Rot_XmY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=177, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P622", + point_group_name="PG622", + crystal_system="HEXAGONAL", + pdb_name="P 6 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_0), + SymOp(Rot_XmY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0)]) + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + ], +) sg178 = SpaceGroup( - number = 178, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6122", - point_group_name = "PG622", - crystal_system = "HEXAGONAL", - pdb_name = "P 61 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_13), - SymOp(Rot_mXY_mX_Z, Tr_0_0_23), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_56), - SymOp(Rot_XmY_X_Z, Tr_0_0_16), - SymOp(Rot_Y_X_mZ, Tr_0_0_13), + number=178, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6122", + point_group_name="PG622", + crystal_system="HEXAGONAL", + pdb_name="P 61 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_13), + SymOp(Rot_mXY_mX_Z, Tr_0_0_23), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_56), + SymOp(Rot_XmY_X_Z, Tr_0_0_16), + SymOp(Rot_Y_X_mZ, Tr_0_0_13), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_23), - SymOp(Rot_mY_mX_mZ, Tr_0_0_56), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_XmY_mZ, Tr_0_0_16)]) + SymOp(Rot_mY_mX_mZ, Tr_0_0_56), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_XmY_mZ, Tr_0_0_16), + ], +) sg179 = SpaceGroup( - number = 179, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6522", - point_group_name = "PG622", - crystal_system = "HEXAGONAL", - pdb_name = "P 65 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_23), - SymOp(Rot_mXY_mX_Z, Tr_0_0_13), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_16), - SymOp(Rot_XmY_X_Z, Tr_0_0_56), - SymOp(Rot_Y_X_mZ, Tr_0_0_23), + number=179, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6522", + point_group_name="PG622", + crystal_system="HEXAGONAL", + pdb_name="P 65 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_23), + SymOp(Rot_mXY_mX_Z, Tr_0_0_13), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_16), + SymOp(Rot_XmY_X_Z, Tr_0_0_56), + SymOp(Rot_Y_X_mZ, Tr_0_0_23), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_13), - SymOp(Rot_mY_mX_mZ, Tr_0_0_16), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_XmY_mZ, Tr_0_0_56)]) + SymOp(Rot_mY_mX_mZ, Tr_0_0_16), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_XmY_mZ, Tr_0_0_56), + ], +) sg180 = SpaceGroup( - number = 180, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6222", - point_group_name = "PG622", - crystal_system = "HEXAGONAL", - pdb_name = "P 62 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_23), - SymOp(Rot_mXY_mX_Z, Tr_0_0_13), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_23), - SymOp(Rot_XmY_X_Z, Tr_0_0_13), - SymOp(Rot_Y_X_mZ, Tr_0_0_23), + number=180, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6222", + point_group_name="PG622", + crystal_system="HEXAGONAL", + pdb_name="P 62 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_23), + SymOp(Rot_mXY_mX_Z, Tr_0_0_13), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_23), + SymOp(Rot_XmY_X_Z, Tr_0_0_13), + SymOp(Rot_Y_X_mZ, Tr_0_0_23), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_13), - SymOp(Rot_mY_mX_mZ, Tr_0_0_23), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_13)]) + SymOp(Rot_mY_mX_mZ, Tr_0_0_23), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_13), + ], +) sg181 = SpaceGroup( - number = 181, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6422", - point_group_name = "PG622", - crystal_system = "HEXAGONAL", - pdb_name = "P 64 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_13), - SymOp(Rot_mXY_mX_Z, Tr_0_0_23), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_13), - SymOp(Rot_XmY_X_Z, Tr_0_0_23), - SymOp(Rot_Y_X_mZ, Tr_0_0_13), + number=181, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6422", + point_group_name="PG622", + crystal_system="HEXAGONAL", + pdb_name="P 64 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_13), + SymOp(Rot_mXY_mX_Z, Tr_0_0_23), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_13), + SymOp(Rot_XmY_X_Z, Tr_0_0_23), + SymOp(Rot_Y_X_mZ, Tr_0_0_13), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_23), - SymOp(Rot_mY_mX_mZ, Tr_0_0_13), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_23)]) + SymOp(Rot_mY_mX_mZ, Tr_0_0_13), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_23), + ], +) sg182 = SpaceGroup( - number = 182, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6322", - point_group_name = "PG622", - crystal_system = "HEXAGONAL", - pdb_name = "P 63 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_12), - SymOp(Rot_XmY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=182, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6322", + point_group_name="PG622", + crystal_system="HEXAGONAL", + pdb_name="P 63 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_12), + SymOp(Rot_XmY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_XmY_mZ, Tr_0_0_12)]) + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_XmY_mZ, Tr_0_0_12), + ], +) sg183 = SpaceGroup( - number = 183, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6mm", - point_group_name = "PG6mm", - crystal_system = "HEXAGONAL", - pdb_name = "P 6 m m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_0), - SymOp(Rot_XmY_X_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_XmY_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mXY_Z, Tr_0_0_0)]) + number=183, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6mm", + point_group_name="PG6mm", + crystal_system="HEXAGONAL", + pdb_name="P 6 m m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_0), + SymOp(Rot_XmY_X_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_XmY_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mXY_Z, Tr_0_0_0), + ], +) sg184 = SpaceGroup( - number = 184, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P6cc", - point_group_name = "PG6mm", - crystal_system = "HEXAGONAL", - pdb_name = "P 6 c c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_0), - SymOp(Rot_XmY_X_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_XmY_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mXY_Z, Tr_0_0_12)]) + number=184, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P6cc", + point_group_name="PG6mm", + crystal_system="HEXAGONAL", + pdb_name="P 6 c c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_0), + SymOp(Rot_XmY_X_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_XmY_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mXY_Z, Tr_0_0_12), + ], +) sg185 = SpaceGroup( - number = 185, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P63cm", - point_group_name = "PG6mm", - crystal_system = "HEXAGONAL", - pdb_name = "P 63 c m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_12), - SymOp(Rot_XmY_X_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_XmY_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mXY_Z, Tr_0_0_0)]) + number=185, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P63cm", + point_group_name="PG6mm", + crystal_system="HEXAGONAL", + pdb_name="P 63 c m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_12), + SymOp(Rot_XmY_X_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_XmY_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mXY_Z, Tr_0_0_0), + ], +) sg186 = SpaceGroup( - number = 186, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P63mc", - point_group_name = "PG6mm", - crystal_system = "HEXAGONAL", - pdb_name = "P 63 m c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_12), - SymOp(Rot_XmY_X_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_XmY_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mXY_Z, Tr_0_0_12)]) + number=186, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P63mc", + point_group_name="PG6mm", + crystal_system="HEXAGONAL", + pdb_name="P 63 m c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_12), + SymOp(Rot_XmY_X_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_XmY_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mXY_Z, Tr_0_0_12), + ], +) sg187 = SpaceGroup( - number = 187, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-6m2", - point_group_name = "PG6barm2", - crystal_system = "HEXAGONAL", - pdb_name = "P -6 m 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), + number=187, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-6m2", + point_group_name="PG6barm2", + crystal_system="HEXAGONAL", + pdb_name="P -6 m 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_mY_XmY_mZ, Tr_0_0_0), SymOp(Rot_mXY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0)]) + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + ], +) sg188 = SpaceGroup( - number = 188, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-6c2", - point_group_name = "PG6barm2", - crystal_system = "HEXAGONAL", - pdb_name = "P -6 c 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12), + number=188, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-6c2", + point_group_name="PG6barm2", + crystal_system="HEXAGONAL", + pdb_name="P -6 c 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), SymOp(Rot_mY_XmY_mZ, Tr_0_0_12), SymOp(Rot_mXY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0)]) + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + ], +) sg189 = SpaceGroup( - number = 189, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-62m", - point_group_name = "PG6bar2m", - crystal_system = "HEXAGONAL", - pdb_name = "P -6 2 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), + number=189, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-62m", + point_group_name="PG6bar2m", + crystal_system="HEXAGONAL", + pdb_name="P -6 2 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_mY_XmY_mZ, Tr_0_0_0), SymOp(Rot_mXY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_XmY_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mXY_Z, Tr_0_0_0)]) + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_XmY_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mXY_Z, Tr_0_0_0), + ], +) sg190 = SpaceGroup( - number = 190, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P-62c", - point_group_name = "PG6bar2m", - crystal_system = "HEXAGONAL", - pdb_name = "P -6 2 c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12), + number=190, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P-62c", + point_group_name="PG6bar2m", + crystal_system="HEXAGONAL", + pdb_name="P -6 2 c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), SymOp(Rot_mY_XmY_mZ, Tr_0_0_12), SymOp(Rot_mXY_mX_mZ, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_XmY_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mXY_Z, Tr_0_0_12)]) + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_XmY_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mXY_Z, Tr_0_0_12), + ], +) sg191 = SpaceGroup( - number = 191, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P6/mmm", - point_group_name = "PG6/mmm", - crystal_system = "HEXAGONAL", - pdb_name = "P 6/m 2/m 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_0), - SymOp(Rot_XmY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=191, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P6/mmm", + point_group_name="PG6/mmm", + crystal_system="HEXAGONAL", + pdb_name="P 6/m 2/m 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_0), + SymOp(Rot_XmY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_mXY_mX_mZ, Tr_0_0_0), SymOp(Rot_mY_XmY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_XmY_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mXY_Z, Tr_0_0_0)]) + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_XmY_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mXY_Z, Tr_0_0_0), + ], +) sg192 = SpaceGroup( - number = 192, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P6/mcc", - point_group_name = "PG6/mmm", - crystal_system = "HEXAGONAL", - pdb_name = "P 6/m 2/c 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_Y_mXY_Z, Tr_0_0_0), - SymOp(Rot_XmY_X_Z, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), + number=192, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P6/mcc", + point_group_name="PG6/mmm", + crystal_system="HEXAGONAL", + pdb_name="P 6/m 2/c 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_Y_mXY_Z, Tr_0_0_0), + SymOp(Rot_XmY_X_Z, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), SymOp(Rot_XmY_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_mXY_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_XmY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_XmY_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_mXY_mX_mZ, Tr_0_0_0), SymOp(Rot_mY_XmY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_XmY_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mXY_Z, Tr_0_0_12)]) + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_XmY_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mXY_Z, Tr_0_0_12), + ], +) sg193 = SpaceGroup( - number = 193, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P63/mcm", - point_group_name = "PG6/mmm", - crystal_system = "HEXAGONAL", - pdb_name = "P 63/m 2/c 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_12), - SymOp(Rot_XmY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), + number=193, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P63/mcm", + point_group_name="PG6/mmm", + crystal_system="HEXAGONAL", + pdb_name="P 63/m 2/c 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_12), + SymOp(Rot_XmY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), SymOp(Rot_XmY_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_mXY_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_XmY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_XmY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), SymOp(Rot_mXY_mX_mZ, Tr_0_0_12), SymOp(Rot_mY_XmY_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_mXY_Y_Z, Tr_0_0_12), - SymOp(Rot_X_XmY_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_XmY_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mXY_Z, Tr_0_0_0)]) + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_mXY_Y_Z, Tr_0_0_12), + SymOp(Rot_X_XmY_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_XmY_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mXY_Z, Tr_0_0_0), + ], +) sg194 = SpaceGroup( - number = 194, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P63/mmc", - point_group_name = "PG6/mmm", - crystal_system = "HEXAGONAL", - pdb_name = "P 63/m 2/m 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mY_XmY_Z, Tr_0_0_0), - SymOp(Rot_mXY_mX_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_Y_mXY_Z, Tr_0_0_12), - SymOp(Rot_XmY_X_Z, Tr_0_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), + number=194, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P63/mmc", + point_group_name="PG6/mmm", + crystal_system="HEXAGONAL", + pdb_name="P 63/m 2/m 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mY_XmY_Z, Tr_0_0_0), + SymOp(Rot_mXY_mX_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_Y_mXY_Z, Tr_0_0_12), + SymOp(Rot_XmY_X_Z, Tr_0_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), SymOp(Rot_XmY_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mXY_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_XmY_mZ, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), - SymOp(Rot_XmY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_mXY_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_XmY_mZ, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_Y_mXY_mZ, Tr_0_0_0), + SymOp(Rot_XmY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), SymOp(Rot_mXY_mX_mZ, Tr_0_0_12), SymOp(Rot_mY_XmY_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_mXY_Y_Z, Tr_0_0_0), - SymOp(Rot_X_XmY_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_XmY_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mXY_Z, Tr_0_0_12)]) + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_mXY_Y_Z, Tr_0_0_0), + SymOp(Rot_X_XmY_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_XmY_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mXY_Z, Tr_0_0_12), + ], +) sg195 = SpaceGroup( - number = 195, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P23", - point_group_name = "PG23", - crystal_system = "CUBIC", - pdb_name = "P 2 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0)]) + number=195, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P23", + point_group_name="PG23", + crystal_system="CUBIC", + pdb_name="P 2 3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + ], +) sg196 = SpaceGroup( - number = 196, - num_sym_equiv = 48, - num_primitive_sym_equiv = 12, - short_name = "F23", - point_group_name = "PG23", - crystal_system = "CUBIC", - pdb_name = "F 2 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0)]) + number=196, + num_sym_equiv=48, + num_primitive_sym_equiv=12, + short_name="F23", + point_group_name="PG23", + crystal_system="CUBIC", + pdb_name="F 2 3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + ], +) sg197 = SpaceGroup( - number = 197, - num_sym_equiv = 24, - num_primitive_sym_equiv = 12, - short_name = "I23", - point_group_name = "PG23", - crystal_system = "CUBIC", - pdb_name = "I 2 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_12), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_12_12)]) + number=197, + num_sym_equiv=24, + num_primitive_sym_equiv=12, + short_name="I23", + point_group_name="PG23", + crystal_system="CUBIC", + pdb_name="I 2 3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_12), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_12_12), + ], +) sg198 = SpaceGroup( - number = 198, - num_sym_equiv = 12, - num_primitive_sym_equiv = 12, - short_name = "P213", - point_group_name = "PG23", - crystal_system = "CUBIC", - pdb_name = "P 21 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12)]) + number=198, + num_sym_equiv=12, + num_primitive_sym_equiv=12, + short_name="P213", + point_group_name="PG23", + crystal_system="CUBIC", + pdb_name="P 21 3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + ], +) sg199 = SpaceGroup( - number = 199, - num_sym_equiv = 24, - num_primitive_sym_equiv = 12, - short_name = "I213", - point_group_name = "PG23", - crystal_system = "CUBIC", - pdb_name = "I 21 3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_0)]) + number=199, + num_sym_equiv=24, + num_primitive_sym_equiv=12, + short_name="I213", + point_group_name="PG23", + crystal_system="CUBIC", + pdb_name="I 21 3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_0), + ], +) sg200 = SpaceGroup( - number = 200, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "Pm-3", - point_group_name = "PGm3bar", - crystal_system = "CUBIC", - pdb_name = "P 2/m -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0)]) + number=200, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="Pm-3", + point_group_name="PGm3bar", + crystal_system="CUBIC", + pdb_name="P 2/m -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + ], +) sg201 = SpaceGroup( - number = 201, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "Pn-3", - point_group_name = "PGm3bar", - crystal_system = "CUBIC", - pdb_name = "P 2/n -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mZ_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_X_Y, Tr_12_12_12), - SymOp(Rot_Z_X_mY, Tr_12_12_12), - SymOp(Rot_Z_mX_Y, Tr_12_12_12), - SymOp(Rot_mY_mZ_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_X, Tr_12_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_12), - SymOp(Rot_Y_Z_mX, Tr_12_12_12)]) + number=201, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="Pn-3", + point_group_name="PGm3bar", + crystal_system="CUBIC", + pdb_name="P 2/n -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mZ_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_X_Y, Tr_12_12_12), + SymOp(Rot_Z_X_mY, Tr_12_12_12), + SymOp(Rot_Z_mX_Y, Tr_12_12_12), + SymOp(Rot_mY_mZ_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_X, Tr_12_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_12), + SymOp(Rot_Y_Z_mX, Tr_12_12_12), + ], +) sg202 = SpaceGroup( - number = 202, - num_sym_equiv = 96, - num_primitive_sym_equiv = 24, - short_name = "Fm-3", - point_group_name = "PGm3bar", - crystal_system = "CUBIC", - pdb_name = "F 2/m -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12), - SymOp(Rot_mZ_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_X_Y, Tr_0_12_12), - SymOp(Rot_Z_X_mY, Tr_0_12_12), - SymOp(Rot_Z_mX_Y, Tr_0_12_12), - SymOp(Rot_mY_mZ_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_X, Tr_0_12_12), - SymOp(Rot_mY_Z_X, Tr_0_12_12), - SymOp(Rot_Y_Z_mX, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12), - SymOp(Rot_mZ_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_X_Y, Tr_12_0_12), - SymOp(Rot_Z_X_mY, Tr_12_0_12), - SymOp(Rot_Z_mX_Y, Tr_12_0_12), - SymOp(Rot_mY_mZ_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_X, Tr_12_0_12), - SymOp(Rot_mY_Z_X, Tr_12_0_12), - SymOp(Rot_Y_Z_mX, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mZ_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_X_Y, Tr_12_12_0), - SymOp(Rot_Z_X_mY, Tr_12_12_0), - SymOp(Rot_Z_mX_Y, Tr_12_12_0), - SymOp(Rot_mY_mZ_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_X, Tr_12_12_0), - SymOp(Rot_mY_Z_X, Tr_12_12_0), - SymOp(Rot_Y_Z_mX, Tr_12_12_0)]) + number=202, + num_sym_equiv=96, + num_primitive_sym_equiv=24, + short_name="Fm-3", + point_group_name="PGm3bar", + crystal_system="CUBIC", + pdb_name="F 2/m -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + SymOp(Rot_mZ_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_X_Y, Tr_0_12_12), + SymOp(Rot_Z_X_mY, Tr_0_12_12), + SymOp(Rot_Z_mX_Y, Tr_0_12_12), + SymOp(Rot_mY_mZ_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_X, Tr_0_12_12), + SymOp(Rot_mY_Z_X, Tr_0_12_12), + SymOp(Rot_Y_Z_mX, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + SymOp(Rot_mZ_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_X_Y, Tr_12_0_12), + SymOp(Rot_Z_X_mY, Tr_12_0_12), + SymOp(Rot_Z_mX_Y, Tr_12_0_12), + SymOp(Rot_mY_mZ_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_X, Tr_12_0_12), + SymOp(Rot_mY_Z_X, Tr_12_0_12), + SymOp(Rot_Y_Z_mX, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mZ_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_X_Y, Tr_12_12_0), + SymOp(Rot_Z_X_mY, Tr_12_12_0), + SymOp(Rot_Z_mX_Y, Tr_12_12_0), + SymOp(Rot_mY_mZ_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_X, Tr_12_12_0), + SymOp(Rot_mY_Z_X, Tr_12_12_0), + SymOp(Rot_Y_Z_mX, Tr_12_12_0), + ], +) sg203 = SpaceGroup( - number = 203, - num_sym_equiv = 96, - num_primitive_sym_equiv = 24, - short_name = "Fd-3", - point_group_name = "PGm3bar", - crystal_system = "CUBIC", - pdb_name = "F 2/d -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_14_14_14), - SymOp(Rot_X_Y_mZ, Tr_14_14_14), - SymOp(Rot_X_mY_Z, Tr_14_14_14), - SymOp(Rot_mX_Y_Z, Tr_14_14_14), - SymOp(Rot_mZ_mX_mY, Tr_14_14_14), - SymOp(Rot_mZ_X_Y, Tr_14_14_14), - SymOp(Rot_Z_X_mY, Tr_14_14_14), - SymOp(Rot_Z_mX_Y, Tr_14_14_14), - SymOp(Rot_mY_mZ_mX, Tr_14_14_14), - SymOp(Rot_Y_mZ_X, Tr_14_14_14), - SymOp(Rot_mY_Z_X, Tr_14_14_14), - SymOp(Rot_Y_Z_mX, Tr_14_14_14), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_mX_mY_mZ, Tr_14_34_34), - SymOp(Rot_X_Y_mZ, Tr_14_34_34), - SymOp(Rot_X_mY_Z, Tr_14_34_34), - SymOp(Rot_mX_Y_Z, Tr_14_34_34), - SymOp(Rot_mZ_mX_mY, Tr_14_34_34), - SymOp(Rot_mZ_X_Y, Tr_14_34_34), - SymOp(Rot_Z_X_mY, Tr_14_34_34), - SymOp(Rot_Z_mX_Y, Tr_14_34_34), - SymOp(Rot_mY_mZ_mX, Tr_14_34_34), - SymOp(Rot_Y_mZ_X, Tr_14_34_34), - SymOp(Rot_mY_Z_X, Tr_14_34_34), - SymOp(Rot_Y_Z_mX, Tr_14_34_34), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_34_14_34), - SymOp(Rot_X_Y_mZ, Tr_34_14_34), - SymOp(Rot_X_mY_Z, Tr_34_14_34), - SymOp(Rot_mX_Y_Z, Tr_34_14_34), - SymOp(Rot_mZ_mX_mY, Tr_34_14_34), - SymOp(Rot_mZ_X_Y, Tr_34_14_34), - SymOp(Rot_Z_X_mY, Tr_34_14_34), - SymOp(Rot_Z_mX_Y, Tr_34_14_34), - SymOp(Rot_mY_mZ_mX, Tr_34_14_34), - SymOp(Rot_Y_mZ_X, Tr_34_14_34), - SymOp(Rot_mY_Z_X, Tr_34_14_34), - SymOp(Rot_Y_Z_mX, Tr_34_14_34), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_34_34_14), - SymOp(Rot_X_Y_mZ, Tr_34_34_14), - SymOp(Rot_X_mY_Z, Tr_34_34_14), - SymOp(Rot_mX_Y_Z, Tr_34_34_14), - SymOp(Rot_mZ_mX_mY, Tr_34_34_14), - SymOp(Rot_mZ_X_Y, Tr_34_34_14), - SymOp(Rot_Z_X_mY, Tr_34_34_14), - SymOp(Rot_Z_mX_Y, Tr_34_34_14), - SymOp(Rot_mY_mZ_mX, Tr_34_34_14), - SymOp(Rot_Y_mZ_X, Tr_34_34_14), - SymOp(Rot_mY_Z_X, Tr_34_34_14), - SymOp(Rot_Y_Z_mX, Tr_34_34_14)]) + number=203, + num_sym_equiv=96, + num_primitive_sym_equiv=24, + short_name="Fd-3", + point_group_name="PGm3bar", + crystal_system="CUBIC", + pdb_name="F 2/d -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_14_14_14), + SymOp(Rot_X_Y_mZ, Tr_14_14_14), + SymOp(Rot_X_mY_Z, Tr_14_14_14), + SymOp(Rot_mX_Y_Z, Tr_14_14_14), + SymOp(Rot_mZ_mX_mY, Tr_14_14_14), + SymOp(Rot_mZ_X_Y, Tr_14_14_14), + SymOp(Rot_Z_X_mY, Tr_14_14_14), + SymOp(Rot_Z_mX_Y, Tr_14_14_14), + SymOp(Rot_mY_mZ_mX, Tr_14_14_14), + SymOp(Rot_Y_mZ_X, Tr_14_14_14), + SymOp(Rot_mY_Z_X, Tr_14_14_14), + SymOp(Rot_Y_Z_mX, Tr_14_14_14), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_mX_mY_mZ, Tr_14_34_34), + SymOp(Rot_X_Y_mZ, Tr_14_34_34), + SymOp(Rot_X_mY_Z, Tr_14_34_34), + SymOp(Rot_mX_Y_Z, Tr_14_34_34), + SymOp(Rot_mZ_mX_mY, Tr_14_34_34), + SymOp(Rot_mZ_X_Y, Tr_14_34_34), + SymOp(Rot_Z_X_mY, Tr_14_34_34), + SymOp(Rot_Z_mX_Y, Tr_14_34_34), + SymOp(Rot_mY_mZ_mX, Tr_14_34_34), + SymOp(Rot_Y_mZ_X, Tr_14_34_34), + SymOp(Rot_mY_Z_X, Tr_14_34_34), + SymOp(Rot_Y_Z_mX, Tr_14_34_34), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_34_14_34), + SymOp(Rot_X_Y_mZ, Tr_34_14_34), + SymOp(Rot_X_mY_Z, Tr_34_14_34), + SymOp(Rot_mX_Y_Z, Tr_34_14_34), + SymOp(Rot_mZ_mX_mY, Tr_34_14_34), + SymOp(Rot_mZ_X_Y, Tr_34_14_34), + SymOp(Rot_Z_X_mY, Tr_34_14_34), + SymOp(Rot_Z_mX_Y, Tr_34_14_34), + SymOp(Rot_mY_mZ_mX, Tr_34_14_34), + SymOp(Rot_Y_mZ_X, Tr_34_14_34), + SymOp(Rot_mY_Z_X, Tr_34_14_34), + SymOp(Rot_Y_Z_mX, Tr_34_14_34), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_34_34_14), + SymOp(Rot_X_Y_mZ, Tr_34_34_14), + SymOp(Rot_X_mY_Z, Tr_34_34_14), + SymOp(Rot_mX_Y_Z, Tr_34_34_14), + SymOp(Rot_mZ_mX_mY, Tr_34_34_14), + SymOp(Rot_mZ_X_Y, Tr_34_34_14), + SymOp(Rot_Z_X_mY, Tr_34_34_14), + SymOp(Rot_Z_mX_Y, Tr_34_34_14), + SymOp(Rot_mY_mZ_mX, Tr_34_34_14), + SymOp(Rot_Y_mZ_X, Tr_34_34_14), + SymOp(Rot_mY_Z_X, Tr_34_34_14), + SymOp(Rot_Y_Z_mX, Tr_34_34_14), + ], +) sg204 = SpaceGroup( - number = 204, - num_sym_equiv = 48, - num_primitive_sym_equiv = 24, - short_name = "Im-3", - point_group_name = "PGm3bar", - crystal_system = "CUBIC", - pdb_name = "I 2/m -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_12), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mZ_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_X_Y, Tr_12_12_12), - SymOp(Rot_Z_X_mY, Tr_12_12_12), - SymOp(Rot_Z_mX_Y, Tr_12_12_12), - SymOp(Rot_mY_mZ_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_X, Tr_12_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_12), - SymOp(Rot_Y_Z_mX, Tr_12_12_12)]) + number=204, + num_sym_equiv=48, + num_primitive_sym_equiv=24, + short_name="Im-3", + point_group_name="PGm3bar", + crystal_system="CUBIC", + pdb_name="I 2/m -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_12), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mZ_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_X_Y, Tr_12_12_12), + SymOp(Rot_Z_X_mY, Tr_12_12_12), + SymOp(Rot_Z_mX_Y, Tr_12_12_12), + SymOp(Rot_mY_mZ_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_X, Tr_12_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_12), + SymOp(Rot_Y_Z_mX, Tr_12_12_12), + ], +) sg205 = SpaceGroup( - number = 205, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "Pa-3", - point_group_name = "PGm3bar", - crystal_system = "CUBIC", - pdb_name = "P 21/a -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_12_12_0), - SymOp(Rot_Z_X_mY, Tr_12_0_12), - SymOp(Rot_Z_mX_Y, Tr_0_12_12), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_0), - SymOp(Rot_Y_Z_mX, Tr_12_0_12)]) + number=205, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="Pa-3", + point_group_name="PGm3bar", + crystal_system="CUBIC", + pdb_name="P 21/a -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_12_12_0), + SymOp(Rot_Z_X_mY, Tr_12_0_12), + SymOp(Rot_Z_mX_Y, Tr_0_12_12), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_0), + SymOp(Rot_Y_Z_mX, Tr_12_0_12), + ], +) sg206 = SpaceGroup( - number = 206, - num_sym_equiv = 48, - num_primitive_sym_equiv = 24, - short_name = "Ia-3", - point_group_name = "PGm3bar", - crystal_system = "CUBIC", - pdb_name = "I 21/a -3", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_12_12_0), - SymOp(Rot_Z_X_mY, Tr_12_0_12), - SymOp(Rot_Z_mX_Y, Tr_0_12_12), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_0), - SymOp(Rot_Y_Z_mX, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mZ_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_X_Y, Tr_0_0_12), - SymOp(Rot_Z_X_mY, Tr_0_12_0), - SymOp(Rot_Z_mX_Y, Tr_12_0_0), - SymOp(Rot_mY_mZ_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_X, Tr_12_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_12), - SymOp(Rot_Y_Z_mX, Tr_0_12_0)]) + number=206, + num_sym_equiv=48, + num_primitive_sym_equiv=24, + short_name="Ia-3", + point_group_name="PGm3bar", + crystal_system="CUBIC", + pdb_name="I 21/a -3", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_12_12_0), + SymOp(Rot_Z_X_mY, Tr_12_0_12), + SymOp(Rot_Z_mX_Y, Tr_0_12_12), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_0), + SymOp(Rot_Y_Z_mX, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mZ_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_X_Y, Tr_0_0_12), + SymOp(Rot_Z_X_mY, Tr_0_12_0), + SymOp(Rot_Z_mX_Y, Tr_12_0_0), + SymOp(Rot_mY_mZ_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_X, Tr_12_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_12), + SymOp(Rot_Y_Z_mX, Tr_0_12_0), + ], +) sg207 = SpaceGroup( - number = 207, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P432", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "P 4 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_mZ_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_X, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0)]) + number=207, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P432", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="P 4 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_mZ_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_X, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + ], +) sg208 = SpaceGroup( - number = 208, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P4232", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "P 42 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_mZ_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_X, Tr_12_12_12), - SymOp(Rot_mZ_mY_mX, Tr_12_12_12)]) + number=208, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P4232", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="P 42 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_mZ_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_X, Tr_12_12_12), + SymOp(Rot_mZ_mY_mX, Tr_12_12_12), + ], +) sg209 = SpaceGroup( - number = 209, - num_sym_equiv = 96, - num_primitive_sym_equiv = 24, - short_name = "F432", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "F 4 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_mZ_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_X, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_mZ, Tr_0_12_12), - SymOp(Rot_mY_mX_mZ, Tr_0_12_12), - SymOp(Rot_Y_mX_Z, Tr_0_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_12), - SymOp(Rot_X_Z_mY, Tr_0_12_12), - SymOp(Rot_mX_Z_Y, Tr_0_12_12), - SymOp(Rot_mX_mZ_mY, Tr_0_12_12), - SymOp(Rot_X_mZ_Y, Tr_0_12_12), - SymOp(Rot_Z_Y_mX, Tr_0_12_12), - SymOp(Rot_Z_mY_X, Tr_0_12_12), - SymOp(Rot_mZ_Y_X, Tr_0_12_12), - SymOp(Rot_mZ_mY_mX, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_12_0_12), - SymOp(Rot_mY_mX_mZ, Tr_12_0_12), - SymOp(Rot_Y_mX_Z, Tr_12_0_12), - SymOp(Rot_mY_X_Z, Tr_12_0_12), - SymOp(Rot_X_Z_mY, Tr_12_0_12), - SymOp(Rot_mX_Z_Y, Tr_12_0_12), - SymOp(Rot_mX_mZ_mY, Tr_12_0_12), - SymOp(Rot_X_mZ_Y, Tr_12_0_12), - SymOp(Rot_Z_Y_mX, Tr_12_0_12), - SymOp(Rot_Z_mY_X, Tr_12_0_12), - SymOp(Rot_mZ_Y_X, Tr_12_0_12), - SymOp(Rot_mZ_mY_mX, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_Z, Tr_12_12_0), - SymOp(Rot_mY_X_Z, Tr_12_12_0), - SymOp(Rot_X_Z_mY, Tr_12_12_0), - SymOp(Rot_mX_Z_Y, Tr_12_12_0), - SymOp(Rot_mX_mZ_mY, Tr_12_12_0), - SymOp(Rot_X_mZ_Y, Tr_12_12_0), - SymOp(Rot_Z_Y_mX, Tr_12_12_0), - SymOp(Rot_Z_mY_X, Tr_12_12_0), - SymOp(Rot_mZ_Y_X, Tr_12_12_0), - SymOp(Rot_mZ_mY_mX, Tr_12_12_0)]) + number=209, + num_sym_equiv=96, + num_primitive_sym_equiv=24, + short_name="F432", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="F 4 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_mZ_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_X, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_mZ, Tr_0_12_12), + SymOp(Rot_mY_mX_mZ, Tr_0_12_12), + SymOp(Rot_Y_mX_Z, Tr_0_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_12), + SymOp(Rot_X_Z_mY, Tr_0_12_12), + SymOp(Rot_mX_Z_Y, Tr_0_12_12), + SymOp(Rot_mX_mZ_mY, Tr_0_12_12), + SymOp(Rot_X_mZ_Y, Tr_0_12_12), + SymOp(Rot_Z_Y_mX, Tr_0_12_12), + SymOp(Rot_Z_mY_X, Tr_0_12_12), + SymOp(Rot_mZ_Y_X, Tr_0_12_12), + SymOp(Rot_mZ_mY_mX, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_12_0_12), + SymOp(Rot_mY_mX_mZ, Tr_12_0_12), + SymOp(Rot_Y_mX_Z, Tr_12_0_12), + SymOp(Rot_mY_X_Z, Tr_12_0_12), + SymOp(Rot_X_Z_mY, Tr_12_0_12), + SymOp(Rot_mX_Z_Y, Tr_12_0_12), + SymOp(Rot_mX_mZ_mY, Tr_12_0_12), + SymOp(Rot_X_mZ_Y, Tr_12_0_12), + SymOp(Rot_Z_Y_mX, Tr_12_0_12), + SymOp(Rot_Z_mY_X, Tr_12_0_12), + SymOp(Rot_mZ_Y_X, Tr_12_0_12), + SymOp(Rot_mZ_mY_mX, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_Z, Tr_12_12_0), + SymOp(Rot_mY_X_Z, Tr_12_12_0), + SymOp(Rot_X_Z_mY, Tr_12_12_0), + SymOp(Rot_mX_Z_Y, Tr_12_12_0), + SymOp(Rot_mX_mZ_mY, Tr_12_12_0), + SymOp(Rot_X_mZ_Y, Tr_12_12_0), + SymOp(Rot_Z_Y_mX, Tr_12_12_0), + SymOp(Rot_Z_mY_X, Tr_12_12_0), + SymOp(Rot_mZ_Y_X, Tr_12_12_0), + SymOp(Rot_mZ_mY_mX, Tr_12_12_0), + ], +) sg210 = SpaceGroup( - number = 210, - num_sym_equiv = 96, - num_primitive_sym_equiv = 24, - short_name = "F4132", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "F 41 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_mZ, Tr_34_14_34), - SymOp(Rot_mY_mX_mZ, Tr_14_14_14), - SymOp(Rot_Y_mX_Z, Tr_14_34_34), - SymOp(Rot_mY_X_Z, Tr_34_34_14), - SymOp(Rot_X_Z_mY, Tr_34_14_34), - SymOp(Rot_mX_Z_Y, Tr_34_34_14), - SymOp(Rot_mX_mZ_mY, Tr_14_14_14), - SymOp(Rot_X_mZ_Y, Tr_14_34_34), - SymOp(Rot_Z_Y_mX, Tr_34_14_34), - SymOp(Rot_Z_mY_X, Tr_14_34_34), - SymOp(Rot_mZ_Y_X, Tr_34_34_14), - SymOp(Rot_mZ_mY_mX, Tr_14_14_14), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_34_34_14), - SymOp(Rot_mY_mX_mZ, Tr_14_34_34), - SymOp(Rot_Y_mX_Z, Tr_14_14_14), - SymOp(Rot_mY_X_Z, Tr_34_14_34), - SymOp(Rot_X_Z_mY, Tr_34_34_14), - SymOp(Rot_mX_Z_Y, Tr_34_14_34), - SymOp(Rot_mX_mZ_mY, Tr_14_34_34), - SymOp(Rot_X_mZ_Y, Tr_14_14_14), - SymOp(Rot_Z_Y_mX, Tr_34_34_14), - SymOp(Rot_Z_mY_X, Tr_14_14_14), - SymOp(Rot_mZ_Y_X, Tr_34_14_34), - SymOp(Rot_mZ_mY_mX, Tr_14_34_34), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_14_14_14), - SymOp(Rot_mY_mX_mZ, Tr_34_14_34), - SymOp(Rot_Y_mX_Z, Tr_34_34_14), - SymOp(Rot_mY_X_Z, Tr_14_34_34), - SymOp(Rot_X_Z_mY, Tr_14_14_14), - SymOp(Rot_mX_Z_Y, Tr_14_34_34), - SymOp(Rot_mX_mZ_mY, Tr_34_14_34), - SymOp(Rot_X_mZ_Y, Tr_34_34_14), - SymOp(Rot_Z_Y_mX, Tr_14_14_14), - SymOp(Rot_Z_mY_X, Tr_34_34_14), - SymOp(Rot_mZ_Y_X, Tr_14_34_34), - SymOp(Rot_mZ_mY_mX, Tr_34_14_34), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_14_34_34), - SymOp(Rot_mY_mX_mZ, Tr_34_34_14), - SymOp(Rot_Y_mX_Z, Tr_34_14_34), - SymOp(Rot_mY_X_Z, Tr_14_14_14), - SymOp(Rot_X_Z_mY, Tr_14_34_34), - SymOp(Rot_mX_Z_Y, Tr_14_14_14), - SymOp(Rot_mX_mZ_mY, Tr_34_34_14), - SymOp(Rot_X_mZ_Y, Tr_34_14_34), - SymOp(Rot_Z_Y_mX, Tr_14_34_34), - SymOp(Rot_Z_mY_X, Tr_34_14_34), - SymOp(Rot_mZ_Y_X, Tr_14_14_14), - SymOp(Rot_mZ_mY_mX, Tr_34_34_14)]) + number=210, + num_sym_equiv=96, + num_primitive_sym_equiv=24, + short_name="F4132", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="F 41 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_mZ, Tr_34_14_34), + SymOp(Rot_mY_mX_mZ, Tr_14_14_14), + SymOp(Rot_Y_mX_Z, Tr_14_34_34), + SymOp(Rot_mY_X_Z, Tr_34_34_14), + SymOp(Rot_X_Z_mY, Tr_34_14_34), + SymOp(Rot_mX_Z_Y, Tr_34_34_14), + SymOp(Rot_mX_mZ_mY, Tr_14_14_14), + SymOp(Rot_X_mZ_Y, Tr_14_34_34), + SymOp(Rot_Z_Y_mX, Tr_34_14_34), + SymOp(Rot_Z_mY_X, Tr_14_34_34), + SymOp(Rot_mZ_Y_X, Tr_34_34_14), + SymOp(Rot_mZ_mY_mX, Tr_14_14_14), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_34_34_14), + SymOp(Rot_mY_mX_mZ, Tr_14_34_34), + SymOp(Rot_Y_mX_Z, Tr_14_14_14), + SymOp(Rot_mY_X_Z, Tr_34_14_34), + SymOp(Rot_X_Z_mY, Tr_34_34_14), + SymOp(Rot_mX_Z_Y, Tr_34_14_34), + SymOp(Rot_mX_mZ_mY, Tr_14_34_34), + SymOp(Rot_X_mZ_Y, Tr_14_14_14), + SymOp(Rot_Z_Y_mX, Tr_34_34_14), + SymOp(Rot_Z_mY_X, Tr_14_14_14), + SymOp(Rot_mZ_Y_X, Tr_34_14_34), + SymOp(Rot_mZ_mY_mX, Tr_14_34_34), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_14_14_14), + SymOp(Rot_mY_mX_mZ, Tr_34_14_34), + SymOp(Rot_Y_mX_Z, Tr_34_34_14), + SymOp(Rot_mY_X_Z, Tr_14_34_34), + SymOp(Rot_X_Z_mY, Tr_14_14_14), + SymOp(Rot_mX_Z_Y, Tr_14_34_34), + SymOp(Rot_mX_mZ_mY, Tr_34_14_34), + SymOp(Rot_X_mZ_Y, Tr_34_34_14), + SymOp(Rot_Z_Y_mX, Tr_14_14_14), + SymOp(Rot_Z_mY_X, Tr_34_34_14), + SymOp(Rot_mZ_Y_X, Tr_14_34_34), + SymOp(Rot_mZ_mY_mX, Tr_34_14_34), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_14_34_34), + SymOp(Rot_mY_mX_mZ, Tr_34_34_14), + SymOp(Rot_Y_mX_Z, Tr_34_14_34), + SymOp(Rot_mY_X_Z, Tr_14_14_14), + SymOp(Rot_X_Z_mY, Tr_14_34_34), + SymOp(Rot_mX_Z_Y, Tr_14_14_14), + SymOp(Rot_mX_mZ_mY, Tr_34_34_14), + SymOp(Rot_X_mZ_Y, Tr_34_14_34), + SymOp(Rot_Z_Y_mX, Tr_14_34_34), + SymOp(Rot_Z_mY_X, Tr_34_14_34), + SymOp(Rot_mZ_Y_X, Tr_14_14_14), + SymOp(Rot_mZ_mY_mX, Tr_34_34_14), + ], +) sg211 = SpaceGroup( - number = 211, - num_sym_equiv = 48, - num_primitive_sym_equiv = 24, - short_name = "I432", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "I 4 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_mZ_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_X, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_12), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_mZ_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_X, Tr_12_12_12), - SymOp(Rot_mZ_mY_mX, Tr_12_12_12)]) + number=211, + num_sym_equiv=48, + num_primitive_sym_equiv=24, + short_name="I432", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="I 4 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_mZ_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_X, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_12), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_mZ_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_X, Tr_12_12_12), + SymOp(Rot_mZ_mY_mX, Tr_12_12_12), + ], +) sg212 = SpaceGroup( - number = 212, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P4332", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "P 43 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_14_34_34), - SymOp(Rot_mY_mX_mZ, Tr_14_14_14), - SymOp(Rot_Y_mX_Z, Tr_34_34_14), - SymOp(Rot_mY_X_Z, Tr_34_14_34), - SymOp(Rot_X_Z_mY, Tr_14_34_34), - SymOp(Rot_mX_Z_Y, Tr_34_14_34), - SymOp(Rot_mX_mZ_mY, Tr_14_14_14), - SymOp(Rot_X_mZ_Y, Tr_34_34_14), - SymOp(Rot_Z_Y_mX, Tr_14_34_34), - SymOp(Rot_Z_mY_X, Tr_34_34_14), - SymOp(Rot_mZ_Y_X, Tr_34_14_34), - SymOp(Rot_mZ_mY_mX, Tr_14_14_14)]) + number=212, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P4332", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="P 43 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_14_34_34), + SymOp(Rot_mY_mX_mZ, Tr_14_14_14), + SymOp(Rot_Y_mX_Z, Tr_34_34_14), + SymOp(Rot_mY_X_Z, Tr_34_14_34), + SymOp(Rot_X_Z_mY, Tr_14_34_34), + SymOp(Rot_mX_Z_Y, Tr_34_14_34), + SymOp(Rot_mX_mZ_mY, Tr_14_14_14), + SymOp(Rot_X_mZ_Y, Tr_34_34_14), + SymOp(Rot_Z_Y_mX, Tr_14_34_34), + SymOp(Rot_Z_mY_X, Tr_34_34_14), + SymOp(Rot_mZ_Y_X, Tr_34_14_34), + SymOp(Rot_mZ_mY_mX, Tr_14_14_14), + ], +) sg213 = SpaceGroup( - number = 213, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P4132", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "P 41 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_34_14_14), - SymOp(Rot_mY_mX_mZ, Tr_34_34_34), - SymOp(Rot_Y_mX_Z, Tr_14_14_34), - SymOp(Rot_mY_X_Z, Tr_14_34_14), - SymOp(Rot_X_Z_mY, Tr_34_14_14), - SymOp(Rot_mX_Z_Y, Tr_14_34_14), - SymOp(Rot_mX_mZ_mY, Tr_34_34_34), - SymOp(Rot_X_mZ_Y, Tr_14_14_34), - SymOp(Rot_Z_Y_mX, Tr_34_14_14), - SymOp(Rot_Z_mY_X, Tr_14_14_34), - SymOp(Rot_mZ_Y_X, Tr_14_34_14), - SymOp(Rot_mZ_mY_mX, Tr_34_34_34)]) + number=213, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P4132", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="P 41 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_34_14_14), + SymOp(Rot_mY_mX_mZ, Tr_34_34_34), + SymOp(Rot_Y_mX_Z, Tr_14_14_34), + SymOp(Rot_mY_X_Z, Tr_14_34_14), + SymOp(Rot_X_Z_mY, Tr_34_14_14), + SymOp(Rot_mX_Z_Y, Tr_14_34_14), + SymOp(Rot_mX_mZ_mY, Tr_34_34_34), + SymOp(Rot_X_mZ_Y, Tr_14_14_34), + SymOp(Rot_Z_Y_mX, Tr_34_14_14), + SymOp(Rot_Z_mY_X, Tr_14_14_34), + SymOp(Rot_mZ_Y_X, Tr_14_34_14), + SymOp(Rot_mZ_mY_mX, Tr_34_34_34), + ], +) sg214 = SpaceGroup( - number = 214, - num_sym_equiv = 48, - num_primitive_sym_equiv = 24, - short_name = "I4132", - point_group_name = "PG432", - crystal_system = "CUBIC", - pdb_name = "I 41 3 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_34_14_14), - SymOp(Rot_mY_mX_mZ, Tr_34_34_34), - SymOp(Rot_Y_mX_Z, Tr_14_14_34), - SymOp(Rot_mY_X_Z, Tr_14_34_14), - SymOp(Rot_X_Z_mY, Tr_34_14_14), - SymOp(Rot_mX_Z_Y, Tr_14_34_14), - SymOp(Rot_mX_mZ_mY, Tr_34_34_34), - SymOp(Rot_X_mZ_Y, Tr_14_14_34), - SymOp(Rot_Z_Y_mX, Tr_34_14_14), - SymOp(Rot_Z_mY_X, Tr_14_14_34), - SymOp(Rot_mZ_Y_X, Tr_14_34_14), - SymOp(Rot_mZ_mY_mX, Tr_34_34_34), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_0), - SymOp(Rot_Y_X_mZ, Tr_14_34_34), - SymOp(Rot_mY_mX_mZ, Tr_14_14_14), - SymOp(Rot_Y_mX_Z, Tr_34_34_14), - SymOp(Rot_mY_X_Z, Tr_34_14_34), - SymOp(Rot_X_Z_mY, Tr_14_34_34), - SymOp(Rot_mX_Z_Y, Tr_34_14_34), - SymOp(Rot_mX_mZ_mY, Tr_14_14_14), - SymOp(Rot_X_mZ_Y, Tr_34_34_14), - SymOp(Rot_Z_Y_mX, Tr_14_34_34), - SymOp(Rot_Z_mY_X, Tr_34_34_14), - SymOp(Rot_mZ_Y_X, Tr_34_14_34), - SymOp(Rot_mZ_mY_mX, Tr_14_14_14)]) + number=214, + num_sym_equiv=48, + num_primitive_sym_equiv=24, + short_name="I4132", + point_group_name="PG432", + crystal_system="CUBIC", + pdb_name="I 41 3 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_34_14_14), + SymOp(Rot_mY_mX_mZ, Tr_34_34_34), + SymOp(Rot_Y_mX_Z, Tr_14_14_34), + SymOp(Rot_mY_X_Z, Tr_14_34_14), + SymOp(Rot_X_Z_mY, Tr_34_14_14), + SymOp(Rot_mX_Z_Y, Tr_14_34_14), + SymOp(Rot_mX_mZ_mY, Tr_34_34_34), + SymOp(Rot_X_mZ_Y, Tr_14_14_34), + SymOp(Rot_Z_Y_mX, Tr_34_14_14), + SymOp(Rot_Z_mY_X, Tr_14_14_34), + SymOp(Rot_mZ_Y_X, Tr_14_34_14), + SymOp(Rot_mZ_mY_mX, Tr_34_34_34), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_0), + SymOp(Rot_Y_X_mZ, Tr_14_34_34), + SymOp(Rot_mY_mX_mZ, Tr_14_14_14), + SymOp(Rot_Y_mX_Z, Tr_34_34_14), + SymOp(Rot_mY_X_Z, Tr_34_14_34), + SymOp(Rot_X_Z_mY, Tr_14_34_34), + SymOp(Rot_mX_Z_Y, Tr_34_14_34), + SymOp(Rot_mX_mZ_mY, Tr_14_14_14), + SymOp(Rot_X_mZ_Y, Tr_34_34_14), + SymOp(Rot_Z_Y_mX, Tr_14_34_34), + SymOp(Rot_Z_mY_X, Tr_34_34_14), + SymOp(Rot_mZ_Y_X, Tr_34_14_34), + SymOp(Rot_mZ_mY_mX, Tr_14_14_14), + ], +) sg215 = SpaceGroup( - number = 215, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P-43m", - point_group_name = "PG4bar3m", - crystal_system = "CUBIC", - pdb_name = "P -4 3 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0)]) + number=215, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P-43m", + point_group_name="PG4bar3m", + crystal_system="CUBIC", + pdb_name="P -4 3 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + ], +) sg216 = SpaceGroup( - number = 216, - num_sym_equiv = 96, - num_primitive_sym_equiv = 24, - short_name = "F-43m", - point_group_name = "PG4bar3m", - crystal_system = "CUBIC", - pdb_name = "F -4 3 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_Z, Tr_0_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_12_12), - SymOp(Rot_mY_X_mZ, Tr_0_12_12), - SymOp(Rot_X_Z_Y, Tr_0_12_12), - SymOp(Rot_mX_Z_mY, Tr_0_12_12), - SymOp(Rot_mX_mZ_Y, Tr_0_12_12), - SymOp(Rot_X_mZ_mY, Tr_0_12_12), - SymOp(Rot_Z_Y_X, Tr_0_12_12), - SymOp(Rot_Z_mY_mX, Tr_0_12_12), - SymOp(Rot_mZ_Y_mX, Tr_0_12_12), - SymOp(Rot_mZ_mY_X, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_Z, Tr_12_0_12), - SymOp(Rot_mY_mX_Z, Tr_12_0_12), - SymOp(Rot_Y_mX_mZ, Tr_12_0_12), - SymOp(Rot_mY_X_mZ, Tr_12_0_12), - SymOp(Rot_X_Z_Y, Tr_12_0_12), - SymOp(Rot_mX_Z_mY, Tr_12_0_12), - SymOp(Rot_mX_mZ_Y, Tr_12_0_12), - SymOp(Rot_X_mZ_mY, Tr_12_0_12), - SymOp(Rot_Z_Y_X, Tr_12_0_12), - SymOp(Rot_Z_mY_mX, Tr_12_0_12), - SymOp(Rot_mZ_Y_mX, Tr_12_0_12), - SymOp(Rot_mZ_mY_X, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_mX_mZ, Tr_12_12_0), - SymOp(Rot_mY_X_mZ, Tr_12_12_0), - SymOp(Rot_X_Z_Y, Tr_12_12_0), - SymOp(Rot_mX_Z_mY, Tr_12_12_0), - SymOp(Rot_mX_mZ_Y, Tr_12_12_0), - SymOp(Rot_X_mZ_mY, Tr_12_12_0), - SymOp(Rot_Z_Y_X, Tr_12_12_0), - SymOp(Rot_Z_mY_mX, Tr_12_12_0), - SymOp(Rot_mZ_Y_mX, Tr_12_12_0), - SymOp(Rot_mZ_mY_X, Tr_12_12_0)]) + number=216, + num_sym_equiv=96, + num_primitive_sym_equiv=24, + short_name="F-43m", + point_group_name="PG4bar3m", + crystal_system="CUBIC", + pdb_name="F -4 3 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_Z, Tr_0_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_12_12), + SymOp(Rot_mY_X_mZ, Tr_0_12_12), + SymOp(Rot_X_Z_Y, Tr_0_12_12), + SymOp(Rot_mX_Z_mY, Tr_0_12_12), + SymOp(Rot_mX_mZ_Y, Tr_0_12_12), + SymOp(Rot_X_mZ_mY, Tr_0_12_12), + SymOp(Rot_Z_Y_X, Tr_0_12_12), + SymOp(Rot_Z_mY_mX, Tr_0_12_12), + SymOp(Rot_mZ_Y_mX, Tr_0_12_12), + SymOp(Rot_mZ_mY_X, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_Z, Tr_12_0_12), + SymOp(Rot_mY_mX_Z, Tr_12_0_12), + SymOp(Rot_Y_mX_mZ, Tr_12_0_12), + SymOp(Rot_mY_X_mZ, Tr_12_0_12), + SymOp(Rot_X_Z_Y, Tr_12_0_12), + SymOp(Rot_mX_Z_mY, Tr_12_0_12), + SymOp(Rot_mX_mZ_Y, Tr_12_0_12), + SymOp(Rot_X_mZ_mY, Tr_12_0_12), + SymOp(Rot_Z_Y_X, Tr_12_0_12), + SymOp(Rot_Z_mY_mX, Tr_12_0_12), + SymOp(Rot_mZ_Y_mX, Tr_12_0_12), + SymOp(Rot_mZ_mY_X, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_mX_mZ, Tr_12_12_0), + SymOp(Rot_mY_X_mZ, Tr_12_12_0), + SymOp(Rot_X_Z_Y, Tr_12_12_0), + SymOp(Rot_mX_Z_mY, Tr_12_12_0), + SymOp(Rot_mX_mZ_Y, Tr_12_12_0), + SymOp(Rot_X_mZ_mY, Tr_12_12_0), + SymOp(Rot_Z_Y_X, Tr_12_12_0), + SymOp(Rot_Z_mY_mX, Tr_12_12_0), + SymOp(Rot_mZ_Y_mX, Tr_12_12_0), + SymOp(Rot_mZ_mY_X, Tr_12_12_0), + ], +) sg217 = SpaceGroup( - number = 217, - num_sym_equiv = 48, - num_primitive_sym_equiv = 24, - short_name = "I-43m", - point_group_name = "PG4bar3m", - crystal_system = "CUBIC", - pdb_name = "I -4 3 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_12), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12)]) + number=217, + num_sym_equiv=48, + num_primitive_sym_equiv=24, + short_name="I-43m", + point_group_name="PG4bar3m", + crystal_system="CUBIC", + pdb_name="I -4 3 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_12), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + ], +) sg218 = SpaceGroup( - number = 218, - num_sym_equiv = 24, - num_primitive_sym_equiv = 24, - short_name = "P-43n", - point_group_name = "PG4bar3m", - crystal_system = "CUBIC", - pdb_name = "P -4 3 n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12)]) + number=218, + num_sym_equiv=24, + num_primitive_sym_equiv=24, + short_name="P-43n", + point_group_name="PG4bar3m", + crystal_system="CUBIC", + pdb_name="P -4 3 n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + ], +) sg219 = SpaceGroup( - number = 219, - num_sym_equiv = 96, - num_primitive_sym_equiv = 24, - short_name = "F-43c", - point_group_name = "PG4bar3m", - crystal_system = "CUBIC", - pdb_name = "F -4 3 c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_Z, Tr_12_0_0), - SymOp(Rot_mY_mX_Z, Tr_12_0_0), - SymOp(Rot_Y_mX_mZ, Tr_12_0_0), - SymOp(Rot_mY_X_mZ, Tr_12_0_0), - SymOp(Rot_X_Z_Y, Tr_12_0_0), - SymOp(Rot_mX_Z_mY, Tr_12_0_0), - SymOp(Rot_mX_mZ_Y, Tr_12_0_0), - SymOp(Rot_X_mZ_mY, Tr_12_0_0), - SymOp(Rot_Z_Y_X, Tr_12_0_0), - SymOp(Rot_Z_mY_mX, Tr_12_0_0), - SymOp(Rot_mZ_Y_mX, Tr_12_0_0), - SymOp(Rot_mZ_mY_X, Tr_12_0_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_Z, Tr_0_12_0), - SymOp(Rot_mY_mX_Z, Tr_0_12_0), - SymOp(Rot_Y_mX_mZ, Tr_0_12_0), - SymOp(Rot_mY_X_mZ, Tr_0_12_0), - SymOp(Rot_X_Z_Y, Tr_0_12_0), - SymOp(Rot_mX_Z_mY, Tr_0_12_0), - SymOp(Rot_mX_mZ_Y, Tr_0_12_0), - SymOp(Rot_X_mZ_mY, Tr_0_12_0), - SymOp(Rot_Z_Y_X, Tr_0_12_0), - SymOp(Rot_Z_mY_mX, Tr_0_12_0), - SymOp(Rot_mZ_Y_mX, Tr_0_12_0), - SymOp(Rot_mZ_mY_X, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_12), - SymOp(Rot_X_Z_Y, Tr_0_0_12), - SymOp(Rot_mX_Z_mY, Tr_0_0_12), - SymOp(Rot_mX_mZ_Y, Tr_0_0_12), - SymOp(Rot_X_mZ_mY, Tr_0_0_12), - SymOp(Rot_Z_Y_X, Tr_0_0_12), - SymOp(Rot_Z_mY_mX, Tr_0_0_12), - SymOp(Rot_mZ_Y_mX, Tr_0_0_12), - SymOp(Rot_mZ_mY_X, Tr_0_0_12)]) + number=219, + num_sym_equiv=96, + num_primitive_sym_equiv=24, + short_name="F-43c", + point_group_name="PG4bar3m", + crystal_system="CUBIC", + pdb_name="F -4 3 c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_Z, Tr_12_0_0), + SymOp(Rot_mY_mX_Z, Tr_12_0_0), + SymOp(Rot_Y_mX_mZ, Tr_12_0_0), + SymOp(Rot_mY_X_mZ, Tr_12_0_0), + SymOp(Rot_X_Z_Y, Tr_12_0_0), + SymOp(Rot_mX_Z_mY, Tr_12_0_0), + SymOp(Rot_mX_mZ_Y, Tr_12_0_0), + SymOp(Rot_X_mZ_mY, Tr_12_0_0), + SymOp(Rot_Z_Y_X, Tr_12_0_0), + SymOp(Rot_Z_mY_mX, Tr_12_0_0), + SymOp(Rot_mZ_Y_mX, Tr_12_0_0), + SymOp(Rot_mZ_mY_X, Tr_12_0_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_Z, Tr_0_12_0), + SymOp(Rot_mY_mX_Z, Tr_0_12_0), + SymOp(Rot_Y_mX_mZ, Tr_0_12_0), + SymOp(Rot_mY_X_mZ, Tr_0_12_0), + SymOp(Rot_X_Z_Y, Tr_0_12_0), + SymOp(Rot_mX_Z_mY, Tr_0_12_0), + SymOp(Rot_mX_mZ_Y, Tr_0_12_0), + SymOp(Rot_X_mZ_mY, Tr_0_12_0), + SymOp(Rot_Z_Y_X, Tr_0_12_0), + SymOp(Rot_Z_mY_mX, Tr_0_12_0), + SymOp(Rot_mZ_Y_mX, Tr_0_12_0), + SymOp(Rot_mZ_mY_X, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_12), + SymOp(Rot_X_Z_Y, Tr_0_0_12), + SymOp(Rot_mX_Z_mY, Tr_0_0_12), + SymOp(Rot_mX_mZ_Y, Tr_0_0_12), + SymOp(Rot_X_mZ_mY, Tr_0_0_12), + SymOp(Rot_Z_Y_X, Tr_0_0_12), + SymOp(Rot_Z_mY_mX, Tr_0_0_12), + SymOp(Rot_mZ_Y_mX, Tr_0_0_12), + SymOp(Rot_mZ_mY_X, Tr_0_0_12), + ], +) sg220 = SpaceGroup( - number = 220, - num_sym_equiv = 48, - num_primitive_sym_equiv = 24, - short_name = "I-43d", - point_group_name = "PG4bar3m", - crystal_system = "CUBIC", - pdb_name = "I -4 3 d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_Z, Tr_14_14_14), - SymOp(Rot_mY_mX_Z, Tr_14_34_34), - SymOp(Rot_Y_mX_mZ, Tr_34_14_34), - SymOp(Rot_mY_X_mZ, Tr_34_34_14), - SymOp(Rot_X_Z_Y, Tr_14_14_14), - SymOp(Rot_mX_Z_mY, Tr_34_34_14), - SymOp(Rot_mX_mZ_Y, Tr_14_34_34), - SymOp(Rot_X_mZ_mY, Tr_34_14_34), - SymOp(Rot_Z_Y_X, Tr_14_14_14), - SymOp(Rot_Z_mY_mX, Tr_34_14_34), - SymOp(Rot_mZ_Y_mX, Tr_34_34_14), - SymOp(Rot_mZ_mY_X, Tr_14_34_34), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_0), - SymOp(Rot_Y_X_Z, Tr_34_34_34), - SymOp(Rot_mY_mX_Z, Tr_34_14_14), - SymOp(Rot_Y_mX_mZ, Tr_14_34_14), - SymOp(Rot_mY_X_mZ, Tr_14_14_34), - SymOp(Rot_X_Z_Y, Tr_34_34_34), - SymOp(Rot_mX_Z_mY, Tr_14_14_34), - SymOp(Rot_mX_mZ_Y, Tr_34_14_14), - SymOp(Rot_X_mZ_mY, Tr_14_34_14), - SymOp(Rot_Z_Y_X, Tr_34_34_34), - SymOp(Rot_Z_mY_mX, Tr_14_34_14), - SymOp(Rot_mZ_Y_mX, Tr_14_14_34), - SymOp(Rot_mZ_mY_X, Tr_34_14_14)]) + number=220, + num_sym_equiv=48, + num_primitive_sym_equiv=24, + short_name="I-43d", + point_group_name="PG4bar3m", + crystal_system="CUBIC", + pdb_name="I -4 3 d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_Z, Tr_14_14_14), + SymOp(Rot_mY_mX_Z, Tr_14_34_34), + SymOp(Rot_Y_mX_mZ, Tr_34_14_34), + SymOp(Rot_mY_X_mZ, Tr_34_34_14), + SymOp(Rot_X_Z_Y, Tr_14_14_14), + SymOp(Rot_mX_Z_mY, Tr_34_34_14), + SymOp(Rot_mX_mZ_Y, Tr_14_34_34), + SymOp(Rot_X_mZ_mY, Tr_34_14_34), + SymOp(Rot_Z_Y_X, Tr_14_14_14), + SymOp(Rot_Z_mY_mX, Tr_34_14_34), + SymOp(Rot_mZ_Y_mX, Tr_34_34_14), + SymOp(Rot_mZ_mY_X, Tr_14_34_34), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_0), + SymOp(Rot_Y_X_Z, Tr_34_34_34), + SymOp(Rot_mY_mX_Z, Tr_34_14_14), + SymOp(Rot_Y_mX_mZ, Tr_14_34_14), + SymOp(Rot_mY_X_mZ, Tr_14_14_34), + SymOp(Rot_X_Z_Y, Tr_34_34_34), + SymOp(Rot_mX_Z_mY, Tr_14_14_34), + SymOp(Rot_mX_mZ_Y, Tr_34_14_14), + SymOp(Rot_X_mZ_mY, Tr_14_34_14), + SymOp(Rot_Z_Y_X, Tr_34_34_34), + SymOp(Rot_Z_mY_mX, Tr_14_34_14), + SymOp(Rot_mZ_Y_mX, Tr_14_14_34), + SymOp(Rot_mZ_mY_X, Tr_34_14_14), + ], +) sg221 = SpaceGroup( - number = 221, - num_sym_equiv = 48, - num_primitive_sym_equiv = 48, - short_name = "Pm-3m", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "P 4/m -3 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_mZ_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_X, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0)]) + number=221, + num_sym_equiv=48, + num_primitive_sym_equiv=48, + short_name="Pm-3m", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="P 4/m -3 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_mZ_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_X, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + ], +) sg222 = SpaceGroup( - number = 222, - num_sym_equiv = 48, - num_primitive_sym_equiv = 48, - short_name = "Pn-3n", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "P 4/n -3 2/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_mZ_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_X, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mZ_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_X_Y, Tr_12_12_12), - SymOp(Rot_Z_X_mY, Tr_12_12_12), - SymOp(Rot_Z_mX_Y, Tr_12_12_12), - SymOp(Rot_mY_mZ_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_X, Tr_12_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_12), - SymOp(Rot_Y_Z_mX, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12)]) + number=222, + num_sym_equiv=48, + num_primitive_sym_equiv=48, + short_name="Pn-3n", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="P 4/n -3 2/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_mZ_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_X, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mZ_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_X_Y, Tr_12_12_12), + SymOp(Rot_Z_X_mY, Tr_12_12_12), + SymOp(Rot_Z_mX_Y, Tr_12_12_12), + SymOp(Rot_mY_mZ_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_X, Tr_12_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_12), + SymOp(Rot_Y_Z_mX, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + ], +) sg223 = SpaceGroup( - number = 223, - num_sym_equiv = 48, - num_primitive_sym_equiv = 48, - short_name = "Pm-3n", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "P 42/m -3 2/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_mZ_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_X, Tr_12_12_12), - SymOp(Rot_mZ_mY_mX, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12)]) + number=223, + num_sym_equiv=48, + num_primitive_sym_equiv=48, + short_name="Pm-3n", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="P 42/m -3 2/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_mZ_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_X, Tr_12_12_12), + SymOp(Rot_mZ_mY_mX, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + ], +) sg224 = SpaceGroup( - number = 224, - num_sym_equiv = 48, - num_primitive_sym_equiv = 48, - short_name = "Pn-3m", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "P 42/n -3 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_mZ_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_X, Tr_12_12_12), - SymOp(Rot_mZ_mY_mX, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mZ_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_X_Y, Tr_12_12_12), - SymOp(Rot_Z_X_mY, Tr_12_12_12), - SymOp(Rot_Z_mX_Y, Tr_12_12_12), - SymOp(Rot_mY_mZ_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_X, Tr_12_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_12), - SymOp(Rot_Y_Z_mX, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0)]) + number=224, + num_sym_equiv=48, + num_primitive_sym_equiv=48, + short_name="Pn-3m", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="P 42/n -3 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_mZ_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_X, Tr_12_12_12), + SymOp(Rot_mZ_mY_mX, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mZ_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_X_Y, Tr_12_12_12), + SymOp(Rot_Z_X_mY, Tr_12_12_12), + SymOp(Rot_Z_mX_Y, Tr_12_12_12), + SymOp(Rot_mY_mZ_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_X, Tr_12_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_12), + SymOp(Rot_Y_Z_mX, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + ], +) sg225 = SpaceGroup( - number = 225, - num_sym_equiv = 192, - num_primitive_sym_equiv = 48, - short_name = "Fm-3m", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "F 4/m -3 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_mZ_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_X, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_mZ, Tr_0_12_12), - SymOp(Rot_mY_mX_mZ, Tr_0_12_12), - SymOp(Rot_Y_mX_Z, Tr_0_12_12), - SymOp(Rot_mY_X_Z, Tr_0_12_12), - SymOp(Rot_X_Z_mY, Tr_0_12_12), - SymOp(Rot_mX_Z_Y, Tr_0_12_12), - SymOp(Rot_mX_mZ_mY, Tr_0_12_12), - SymOp(Rot_X_mZ_Y, Tr_0_12_12), - SymOp(Rot_Z_Y_mX, Tr_0_12_12), - SymOp(Rot_Z_mY_X, Tr_0_12_12), - SymOp(Rot_mZ_Y_X, Tr_0_12_12), - SymOp(Rot_mZ_mY_mX, Tr_0_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12), - SymOp(Rot_mZ_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_X_Y, Tr_0_12_12), - SymOp(Rot_Z_X_mY, Tr_0_12_12), - SymOp(Rot_Z_mX_Y, Tr_0_12_12), - SymOp(Rot_mY_mZ_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_X, Tr_0_12_12), - SymOp(Rot_mY_Z_X, Tr_0_12_12), - SymOp(Rot_Y_Z_mX, Tr_0_12_12), - SymOp(Rot_mY_mX_Z, Tr_0_12_12), - SymOp(Rot_Y_X_Z, Tr_0_12_12), - SymOp(Rot_mY_X_mZ, Tr_0_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_12_12), - SymOp(Rot_mX_mZ_Y, Tr_0_12_12), - SymOp(Rot_X_mZ_mY, Tr_0_12_12), - SymOp(Rot_X_Z_Y, Tr_0_12_12), - SymOp(Rot_mX_Z_mY, Tr_0_12_12), - SymOp(Rot_mZ_mY_X, Tr_0_12_12), - SymOp(Rot_mZ_Y_mX, Tr_0_12_12), - SymOp(Rot_Z_mY_mX, Tr_0_12_12), - SymOp(Rot_Z_Y_X, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_12_0_12), - SymOp(Rot_mY_mX_mZ, Tr_12_0_12), - SymOp(Rot_Y_mX_Z, Tr_12_0_12), - SymOp(Rot_mY_X_Z, Tr_12_0_12), - SymOp(Rot_X_Z_mY, Tr_12_0_12), - SymOp(Rot_mX_Z_Y, Tr_12_0_12), - SymOp(Rot_mX_mZ_mY, Tr_12_0_12), - SymOp(Rot_X_mZ_Y, Tr_12_0_12), - SymOp(Rot_Z_Y_mX, Tr_12_0_12), - SymOp(Rot_Z_mY_X, Tr_12_0_12), - SymOp(Rot_mZ_Y_X, Tr_12_0_12), - SymOp(Rot_mZ_mY_mX, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12), - SymOp(Rot_mZ_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_X_Y, Tr_12_0_12), - SymOp(Rot_Z_X_mY, Tr_12_0_12), - SymOp(Rot_Z_mX_Y, Tr_12_0_12), - SymOp(Rot_mY_mZ_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_X, Tr_12_0_12), - SymOp(Rot_mY_Z_X, Tr_12_0_12), - SymOp(Rot_Y_Z_mX, Tr_12_0_12), - SymOp(Rot_mY_mX_Z, Tr_12_0_12), - SymOp(Rot_Y_X_Z, Tr_12_0_12), - SymOp(Rot_mY_X_mZ, Tr_12_0_12), - SymOp(Rot_Y_mX_mZ, Tr_12_0_12), - SymOp(Rot_mX_mZ_Y, Tr_12_0_12), - SymOp(Rot_X_mZ_mY, Tr_12_0_12), - SymOp(Rot_X_Z_Y, Tr_12_0_12), - SymOp(Rot_mX_Z_mY, Tr_12_0_12), - SymOp(Rot_mZ_mY_X, Tr_12_0_12), - SymOp(Rot_mZ_Y_mX, Tr_12_0_12), - SymOp(Rot_Z_mY_mX, Tr_12_0_12), - SymOp(Rot_Z_Y_X, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_0), - SymOp(Rot_mY_mX_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_Z, Tr_12_12_0), - SymOp(Rot_mY_X_Z, Tr_12_12_0), - SymOp(Rot_X_Z_mY, Tr_12_12_0), - SymOp(Rot_mX_Z_Y, Tr_12_12_0), - SymOp(Rot_mX_mZ_mY, Tr_12_12_0), - SymOp(Rot_X_mZ_Y, Tr_12_12_0), - SymOp(Rot_Z_Y_mX, Tr_12_12_0), - SymOp(Rot_Z_mY_X, Tr_12_12_0), - SymOp(Rot_mZ_Y_X, Tr_12_12_0), - SymOp(Rot_mZ_mY_mX, Tr_12_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mZ_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_X_Y, Tr_12_12_0), - SymOp(Rot_Z_X_mY, Tr_12_12_0), - SymOp(Rot_Z_mX_Y, Tr_12_12_0), - SymOp(Rot_mY_mZ_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_X, Tr_12_12_0), - SymOp(Rot_mY_Z_X, Tr_12_12_0), - SymOp(Rot_Y_Z_mX, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_0), - SymOp(Rot_mY_X_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_mZ, Tr_12_12_0), - SymOp(Rot_mX_mZ_Y, Tr_12_12_0), - SymOp(Rot_X_mZ_mY, Tr_12_12_0), - SymOp(Rot_X_Z_Y, Tr_12_12_0), - SymOp(Rot_mX_Z_mY, Tr_12_12_0), - SymOp(Rot_mZ_mY_X, Tr_12_12_0), - SymOp(Rot_mZ_Y_mX, Tr_12_12_0), - SymOp(Rot_Z_mY_mX, Tr_12_12_0), - SymOp(Rot_Z_Y_X, Tr_12_12_0)]) + number=225, + num_sym_equiv=192, + num_primitive_sym_equiv=48, + short_name="Fm-3m", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="F 4/m -3 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_mZ_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_X, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_mZ, Tr_0_12_12), + SymOp(Rot_mY_mX_mZ, Tr_0_12_12), + SymOp(Rot_Y_mX_Z, Tr_0_12_12), + SymOp(Rot_mY_X_Z, Tr_0_12_12), + SymOp(Rot_X_Z_mY, Tr_0_12_12), + SymOp(Rot_mX_Z_Y, Tr_0_12_12), + SymOp(Rot_mX_mZ_mY, Tr_0_12_12), + SymOp(Rot_X_mZ_Y, Tr_0_12_12), + SymOp(Rot_Z_Y_mX, Tr_0_12_12), + SymOp(Rot_Z_mY_X, Tr_0_12_12), + SymOp(Rot_mZ_Y_X, Tr_0_12_12), + SymOp(Rot_mZ_mY_mX, Tr_0_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + SymOp(Rot_mZ_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_X_Y, Tr_0_12_12), + SymOp(Rot_Z_X_mY, Tr_0_12_12), + SymOp(Rot_Z_mX_Y, Tr_0_12_12), + SymOp(Rot_mY_mZ_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_X, Tr_0_12_12), + SymOp(Rot_mY_Z_X, Tr_0_12_12), + SymOp(Rot_Y_Z_mX, Tr_0_12_12), + SymOp(Rot_mY_mX_Z, Tr_0_12_12), + SymOp(Rot_Y_X_Z, Tr_0_12_12), + SymOp(Rot_mY_X_mZ, Tr_0_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_12_12), + SymOp(Rot_mX_mZ_Y, Tr_0_12_12), + SymOp(Rot_X_mZ_mY, Tr_0_12_12), + SymOp(Rot_X_Z_Y, Tr_0_12_12), + SymOp(Rot_mX_Z_mY, Tr_0_12_12), + SymOp(Rot_mZ_mY_X, Tr_0_12_12), + SymOp(Rot_mZ_Y_mX, Tr_0_12_12), + SymOp(Rot_Z_mY_mX, Tr_0_12_12), + SymOp(Rot_Z_Y_X, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_12_0_12), + SymOp(Rot_mY_mX_mZ, Tr_12_0_12), + SymOp(Rot_Y_mX_Z, Tr_12_0_12), + SymOp(Rot_mY_X_Z, Tr_12_0_12), + SymOp(Rot_X_Z_mY, Tr_12_0_12), + SymOp(Rot_mX_Z_Y, Tr_12_0_12), + SymOp(Rot_mX_mZ_mY, Tr_12_0_12), + SymOp(Rot_X_mZ_Y, Tr_12_0_12), + SymOp(Rot_Z_Y_mX, Tr_12_0_12), + SymOp(Rot_Z_mY_X, Tr_12_0_12), + SymOp(Rot_mZ_Y_X, Tr_12_0_12), + SymOp(Rot_mZ_mY_mX, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + SymOp(Rot_mZ_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_X_Y, Tr_12_0_12), + SymOp(Rot_Z_X_mY, Tr_12_0_12), + SymOp(Rot_Z_mX_Y, Tr_12_0_12), + SymOp(Rot_mY_mZ_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_X, Tr_12_0_12), + SymOp(Rot_mY_Z_X, Tr_12_0_12), + SymOp(Rot_Y_Z_mX, Tr_12_0_12), + SymOp(Rot_mY_mX_Z, Tr_12_0_12), + SymOp(Rot_Y_X_Z, Tr_12_0_12), + SymOp(Rot_mY_X_mZ, Tr_12_0_12), + SymOp(Rot_Y_mX_mZ, Tr_12_0_12), + SymOp(Rot_mX_mZ_Y, Tr_12_0_12), + SymOp(Rot_X_mZ_mY, Tr_12_0_12), + SymOp(Rot_X_Z_Y, Tr_12_0_12), + SymOp(Rot_mX_Z_mY, Tr_12_0_12), + SymOp(Rot_mZ_mY_X, Tr_12_0_12), + SymOp(Rot_mZ_Y_mX, Tr_12_0_12), + SymOp(Rot_Z_mY_mX, Tr_12_0_12), + SymOp(Rot_Z_Y_X, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_0), + SymOp(Rot_mY_mX_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_Z, Tr_12_12_0), + SymOp(Rot_mY_X_Z, Tr_12_12_0), + SymOp(Rot_X_Z_mY, Tr_12_12_0), + SymOp(Rot_mX_Z_Y, Tr_12_12_0), + SymOp(Rot_mX_mZ_mY, Tr_12_12_0), + SymOp(Rot_X_mZ_Y, Tr_12_12_0), + SymOp(Rot_Z_Y_mX, Tr_12_12_0), + SymOp(Rot_Z_mY_X, Tr_12_12_0), + SymOp(Rot_mZ_Y_X, Tr_12_12_0), + SymOp(Rot_mZ_mY_mX, Tr_12_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mZ_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_X_Y, Tr_12_12_0), + SymOp(Rot_Z_X_mY, Tr_12_12_0), + SymOp(Rot_Z_mX_Y, Tr_12_12_0), + SymOp(Rot_mY_mZ_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_X, Tr_12_12_0), + SymOp(Rot_mY_Z_X, Tr_12_12_0), + SymOp(Rot_Y_Z_mX, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + SymOp(Rot_mY_X_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_mZ, Tr_12_12_0), + SymOp(Rot_mX_mZ_Y, Tr_12_12_0), + SymOp(Rot_X_mZ_mY, Tr_12_12_0), + SymOp(Rot_X_Z_Y, Tr_12_12_0), + SymOp(Rot_mX_Z_mY, Tr_12_12_0), + SymOp(Rot_mZ_mY_X, Tr_12_12_0), + SymOp(Rot_mZ_Y_mX, Tr_12_12_0), + SymOp(Rot_Z_mY_mX, Tr_12_12_0), + SymOp(Rot_Z_Y_X, Tr_12_12_0), + ], +) sg226 = SpaceGroup( - number = 226, - num_sym_equiv = 192, - num_primitive_sym_equiv = 48, - short_name = "Fm-3c", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "F 4/m -3 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_mZ_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_X, Tr_12_12_12), - SymOp(Rot_mZ_mY_mX, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_0_0), - SymOp(Rot_mY_mX_mZ, Tr_12_0_0), - SymOp(Rot_Y_mX_Z, Tr_12_0_0), - SymOp(Rot_mY_X_Z, Tr_12_0_0), - SymOp(Rot_X_Z_mY, Tr_12_0_0), - SymOp(Rot_mX_Z_Y, Tr_12_0_0), - SymOp(Rot_mX_mZ_mY, Tr_12_0_0), - SymOp(Rot_X_mZ_Y, Tr_12_0_0), - SymOp(Rot_Z_Y_mX, Tr_12_0_0), - SymOp(Rot_Z_mY_X, Tr_12_0_0), - SymOp(Rot_mZ_Y_X, Tr_12_0_0), - SymOp(Rot_mZ_mY_mX, Tr_12_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_0_12_12), - SymOp(Rot_mZ_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_X_Y, Tr_0_12_12), - SymOp(Rot_Z_X_mY, Tr_0_12_12), - SymOp(Rot_Z_mX_Y, Tr_0_12_12), - SymOp(Rot_mY_mZ_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_X, Tr_0_12_12), - SymOp(Rot_mY_Z_X, Tr_0_12_12), - SymOp(Rot_Y_Z_mX, Tr_0_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_0_0), - SymOp(Rot_Y_X_Z, Tr_12_0_0), - SymOp(Rot_mY_X_mZ, Tr_12_0_0), - SymOp(Rot_Y_mX_mZ, Tr_12_0_0), - SymOp(Rot_mX_mZ_Y, Tr_12_0_0), - SymOp(Rot_X_mZ_mY, Tr_12_0_0), - SymOp(Rot_X_Z_Y, Tr_12_0_0), - SymOp(Rot_mX_Z_mY, Tr_12_0_0), - SymOp(Rot_mZ_mY_X, Tr_12_0_0), - SymOp(Rot_mZ_Y_mX, Tr_12_0_0), - SymOp(Rot_Z_mY_mX, Tr_12_0_0), - SymOp(Rot_Z_Y_X, Tr_12_0_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_0_12_0), - SymOp(Rot_mY_mX_mZ, Tr_0_12_0), - SymOp(Rot_Y_mX_Z, Tr_0_12_0), - SymOp(Rot_mY_X_Z, Tr_0_12_0), - SymOp(Rot_X_Z_mY, Tr_0_12_0), - SymOp(Rot_mX_Z_Y, Tr_0_12_0), - SymOp(Rot_mX_mZ_mY, Tr_0_12_0), - SymOp(Rot_X_mZ_Y, Tr_0_12_0), - SymOp(Rot_Z_Y_mX, Tr_0_12_0), - SymOp(Rot_Z_mY_X, Tr_0_12_0), - SymOp(Rot_mZ_Y_X, Tr_0_12_0), - SymOp(Rot_mZ_mY_mX, Tr_0_12_0), - SymOp(Rot_mX_mY_mZ, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_Z, Tr_12_0_12), - SymOp(Rot_mZ_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_X_Y, Tr_12_0_12), - SymOp(Rot_Z_X_mY, Tr_12_0_12), - SymOp(Rot_Z_mX_Y, Tr_12_0_12), - SymOp(Rot_mY_mZ_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_X, Tr_12_0_12), - SymOp(Rot_mY_Z_X, Tr_12_0_12), - SymOp(Rot_Y_Z_mX, Tr_12_0_12), - SymOp(Rot_mY_mX_Z, Tr_0_12_0), - SymOp(Rot_Y_X_Z, Tr_0_12_0), - SymOp(Rot_mY_X_mZ, Tr_0_12_0), - SymOp(Rot_Y_mX_mZ, Tr_0_12_0), - SymOp(Rot_mX_mZ_Y, Tr_0_12_0), - SymOp(Rot_X_mZ_mY, Tr_0_12_0), - SymOp(Rot_X_Z_Y, Tr_0_12_0), - SymOp(Rot_mX_Z_mY, Tr_0_12_0), - SymOp(Rot_mZ_mY_X, Tr_0_12_0), - SymOp(Rot_mZ_Y_mX, Tr_0_12_0), - SymOp(Rot_Z_mY_mX, Tr_0_12_0), - SymOp(Rot_Z_Y_X, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_0_0_12), - SymOp(Rot_Y_mX_Z, Tr_0_0_12), - SymOp(Rot_mY_X_Z, Tr_0_0_12), - SymOp(Rot_X_Z_mY, Tr_0_0_12), - SymOp(Rot_mX_Z_Y, Tr_0_0_12), - SymOp(Rot_mX_mZ_mY, Tr_0_0_12), - SymOp(Rot_X_mZ_Y, Tr_0_0_12), - SymOp(Rot_Z_Y_mX, Tr_0_0_12), - SymOp(Rot_Z_mY_X, Tr_0_0_12), - SymOp(Rot_mZ_Y_X, Tr_0_0_12), - SymOp(Rot_mZ_mY_mX, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mZ_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_X_Y, Tr_12_12_0), - SymOp(Rot_Z_X_mY, Tr_12_12_0), - SymOp(Rot_Z_mX_Y, Tr_12_12_0), - SymOp(Rot_mY_mZ_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_X, Tr_12_12_0), - SymOp(Rot_mY_Z_X, Tr_12_12_0), - SymOp(Rot_Y_Z_mX, Tr_12_12_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mZ_Y, Tr_0_0_12), - SymOp(Rot_X_mZ_mY, Tr_0_0_12), - SymOp(Rot_X_Z_Y, Tr_0_0_12), - SymOp(Rot_mX_Z_mY, Tr_0_0_12), - SymOp(Rot_mZ_mY_X, Tr_0_0_12), - SymOp(Rot_mZ_Y_mX, Tr_0_0_12), - SymOp(Rot_Z_mY_mX, Tr_0_0_12), - SymOp(Rot_Z_Y_X, Tr_0_0_12)]) + number=226, + num_sym_equiv=192, + num_primitive_sym_equiv=48, + short_name="Fm-3c", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="F 4/m -3 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_mZ_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_X, Tr_12_12_12), + SymOp(Rot_mZ_mY_mX, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_0_0), + SymOp(Rot_mY_mX_mZ, Tr_12_0_0), + SymOp(Rot_Y_mX_Z, Tr_12_0_0), + SymOp(Rot_mY_X_Z, Tr_12_0_0), + SymOp(Rot_X_Z_mY, Tr_12_0_0), + SymOp(Rot_mX_Z_Y, Tr_12_0_0), + SymOp(Rot_mX_mZ_mY, Tr_12_0_0), + SymOp(Rot_X_mZ_Y, Tr_12_0_0), + SymOp(Rot_Z_Y_mX, Tr_12_0_0), + SymOp(Rot_Z_mY_X, Tr_12_0_0), + SymOp(Rot_mZ_Y_X, Tr_12_0_0), + SymOp(Rot_mZ_mY_mX, Tr_12_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_0_12_12), + SymOp(Rot_mZ_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_X_Y, Tr_0_12_12), + SymOp(Rot_Z_X_mY, Tr_0_12_12), + SymOp(Rot_Z_mX_Y, Tr_0_12_12), + SymOp(Rot_mY_mZ_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_X, Tr_0_12_12), + SymOp(Rot_mY_Z_X, Tr_0_12_12), + SymOp(Rot_Y_Z_mX, Tr_0_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_0_0), + SymOp(Rot_Y_X_Z, Tr_12_0_0), + SymOp(Rot_mY_X_mZ, Tr_12_0_0), + SymOp(Rot_Y_mX_mZ, Tr_12_0_0), + SymOp(Rot_mX_mZ_Y, Tr_12_0_0), + SymOp(Rot_X_mZ_mY, Tr_12_0_0), + SymOp(Rot_X_Z_Y, Tr_12_0_0), + SymOp(Rot_mX_Z_mY, Tr_12_0_0), + SymOp(Rot_mZ_mY_X, Tr_12_0_0), + SymOp(Rot_mZ_Y_mX, Tr_12_0_0), + SymOp(Rot_Z_mY_mX, Tr_12_0_0), + SymOp(Rot_Z_Y_X, Tr_12_0_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_0_12_0), + SymOp(Rot_mY_mX_mZ, Tr_0_12_0), + SymOp(Rot_Y_mX_Z, Tr_0_12_0), + SymOp(Rot_mY_X_Z, Tr_0_12_0), + SymOp(Rot_X_Z_mY, Tr_0_12_0), + SymOp(Rot_mX_Z_Y, Tr_0_12_0), + SymOp(Rot_mX_mZ_mY, Tr_0_12_0), + SymOp(Rot_X_mZ_Y, Tr_0_12_0), + SymOp(Rot_Z_Y_mX, Tr_0_12_0), + SymOp(Rot_Z_mY_X, Tr_0_12_0), + SymOp(Rot_mZ_Y_X, Tr_0_12_0), + SymOp(Rot_mZ_mY_mX, Tr_0_12_0), + SymOp(Rot_mX_mY_mZ, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_Z, Tr_12_0_12), + SymOp(Rot_mZ_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_X_Y, Tr_12_0_12), + SymOp(Rot_Z_X_mY, Tr_12_0_12), + SymOp(Rot_Z_mX_Y, Tr_12_0_12), + SymOp(Rot_mY_mZ_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_X, Tr_12_0_12), + SymOp(Rot_mY_Z_X, Tr_12_0_12), + SymOp(Rot_Y_Z_mX, Tr_12_0_12), + SymOp(Rot_mY_mX_Z, Tr_0_12_0), + SymOp(Rot_Y_X_Z, Tr_0_12_0), + SymOp(Rot_mY_X_mZ, Tr_0_12_0), + SymOp(Rot_Y_mX_mZ, Tr_0_12_0), + SymOp(Rot_mX_mZ_Y, Tr_0_12_0), + SymOp(Rot_X_mZ_mY, Tr_0_12_0), + SymOp(Rot_X_Z_Y, Tr_0_12_0), + SymOp(Rot_mX_Z_mY, Tr_0_12_0), + SymOp(Rot_mZ_mY_X, Tr_0_12_0), + SymOp(Rot_mZ_Y_mX, Tr_0_12_0), + SymOp(Rot_Z_mY_mX, Tr_0_12_0), + SymOp(Rot_Z_Y_X, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_0_0_12), + SymOp(Rot_Y_mX_Z, Tr_0_0_12), + SymOp(Rot_mY_X_Z, Tr_0_0_12), + SymOp(Rot_X_Z_mY, Tr_0_0_12), + SymOp(Rot_mX_Z_Y, Tr_0_0_12), + SymOp(Rot_mX_mZ_mY, Tr_0_0_12), + SymOp(Rot_X_mZ_Y, Tr_0_0_12), + SymOp(Rot_Z_Y_mX, Tr_0_0_12), + SymOp(Rot_Z_mY_X, Tr_0_0_12), + SymOp(Rot_mZ_Y_X, Tr_0_0_12), + SymOp(Rot_mZ_mY_mX, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mZ_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_X_Y, Tr_12_12_0), + SymOp(Rot_Z_X_mY, Tr_12_12_0), + SymOp(Rot_Z_mX_Y, Tr_12_12_0), + SymOp(Rot_mY_mZ_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_X, Tr_12_12_0), + SymOp(Rot_mY_Z_X, Tr_12_12_0), + SymOp(Rot_Y_Z_mX, Tr_12_12_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mZ_Y, Tr_0_0_12), + SymOp(Rot_X_mZ_mY, Tr_0_0_12), + SymOp(Rot_X_Z_Y, Tr_0_0_12), + SymOp(Rot_mX_Z_mY, Tr_0_0_12), + SymOp(Rot_mZ_mY_X, Tr_0_0_12), + SymOp(Rot_mZ_Y_mX, Tr_0_0_12), + SymOp(Rot_Z_mY_mX, Tr_0_0_12), + SymOp(Rot_Z_Y_X, Tr_0_0_12), + ], +) sg227 = SpaceGroup( - number = 227, - num_sym_equiv = 192, - num_primitive_sym_equiv = 48, - short_name = "Fd-3m", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "F 41/d -3 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_mZ, Tr_34_14_34), - SymOp(Rot_mY_mX_mZ, Tr_14_14_14), - SymOp(Rot_Y_mX_Z, Tr_14_34_34), - SymOp(Rot_mY_X_Z, Tr_34_34_14), - SymOp(Rot_X_Z_mY, Tr_34_14_34), - SymOp(Rot_mX_Z_Y, Tr_34_34_14), - SymOp(Rot_mX_mZ_mY, Tr_14_14_14), - SymOp(Rot_X_mZ_Y, Tr_14_34_34), - SymOp(Rot_Z_Y_mX, Tr_34_14_34), - SymOp(Rot_Z_mY_X, Tr_14_34_34), - SymOp(Rot_mZ_Y_X, Tr_34_34_14), - SymOp(Rot_mZ_mY_mX, Tr_14_14_14), - SymOp(Rot_mX_mY_mZ, Tr_14_14_14), - SymOp(Rot_X_Y_mZ, Tr_14_34_34), - SymOp(Rot_X_mY_Z, Tr_34_34_14), - SymOp(Rot_mX_Y_Z, Tr_34_14_34), - SymOp(Rot_mZ_mX_mY, Tr_14_14_14), - SymOp(Rot_mZ_X_Y, Tr_34_14_34), - SymOp(Rot_Z_X_mY, Tr_14_34_34), - SymOp(Rot_Z_mX_Y, Tr_34_34_14), - SymOp(Rot_mY_mZ_mX, Tr_14_14_14), - SymOp(Rot_Y_mZ_X, Tr_34_34_14), - SymOp(Rot_mY_Z_X, Tr_34_14_34), - SymOp(Rot_Y_Z_mX, Tr_14_34_34), - SymOp(Rot_mY_mX_Z, Tr_12_0_12), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_0), - SymOp(Rot_mX_mZ_Y, Tr_12_0_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_0_12), - SymOp(Rot_mZ_Y_mX, Tr_0_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_34_34_14), - SymOp(Rot_mY_mX_mZ, Tr_14_34_34), - SymOp(Rot_Y_mX_Z, Tr_14_14_14), - SymOp(Rot_mY_X_Z, Tr_34_14_34), - SymOp(Rot_X_Z_mY, Tr_34_34_14), - SymOp(Rot_mX_Z_Y, Tr_34_14_34), - SymOp(Rot_mX_mZ_mY, Tr_14_34_34), - SymOp(Rot_X_mZ_Y, Tr_14_14_14), - SymOp(Rot_Z_Y_mX, Tr_34_34_14), - SymOp(Rot_Z_mY_X, Tr_14_14_14), - SymOp(Rot_mZ_Y_X, Tr_34_14_34), - SymOp(Rot_mZ_mY_mX, Tr_14_34_34), - SymOp(Rot_mX_mY_mZ, Tr_14_34_34), - SymOp(Rot_X_Y_mZ, Tr_14_14_14), - SymOp(Rot_X_mY_Z, Tr_34_14_34), - SymOp(Rot_mX_Y_Z, Tr_34_34_14), - SymOp(Rot_mZ_mX_mY, Tr_14_34_34), - SymOp(Rot_mZ_X_Y, Tr_34_34_14), - SymOp(Rot_Z_X_mY, Tr_14_14_14), - SymOp(Rot_Z_mX_Y, Tr_34_14_34), - SymOp(Rot_mY_mZ_mX, Tr_14_34_34), - SymOp(Rot_Y_mZ_X, Tr_34_14_34), - SymOp(Rot_mY_Z_X, Tr_34_34_14), - SymOp(Rot_Y_Z_mX, Tr_14_14_14), - SymOp(Rot_mY_mX_Z, Tr_12_12_0), - SymOp(Rot_Y_X_Z, Tr_0_12_12), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_12_0_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_0), - SymOp(Rot_X_mZ_mY, Tr_12_0_12), - SymOp(Rot_X_Z_Y, Tr_0_12_12), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_12_12_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_12_0_12), - SymOp(Rot_Z_Y_X, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_14_14_14), - SymOp(Rot_mY_mX_mZ, Tr_34_14_34), - SymOp(Rot_Y_mX_Z, Tr_34_34_14), - SymOp(Rot_mY_X_Z, Tr_14_34_34), - SymOp(Rot_X_Z_mY, Tr_14_14_14), - SymOp(Rot_mX_Z_Y, Tr_14_34_34), - SymOp(Rot_mX_mZ_mY, Tr_34_14_34), - SymOp(Rot_X_mZ_Y, Tr_34_34_14), - SymOp(Rot_Z_Y_mX, Tr_14_14_14), - SymOp(Rot_Z_mY_X, Tr_34_34_14), - SymOp(Rot_mZ_Y_X, Tr_14_34_34), - SymOp(Rot_mZ_mY_mX, Tr_34_14_34), - SymOp(Rot_mX_mY_mZ, Tr_34_14_34), - SymOp(Rot_X_Y_mZ, Tr_34_34_14), - SymOp(Rot_X_mY_Z, Tr_14_34_34), - SymOp(Rot_mX_Y_Z, Tr_14_14_14), - SymOp(Rot_mZ_mX_mY, Tr_34_14_34), - SymOp(Rot_mZ_X_Y, Tr_14_14_14), - SymOp(Rot_Z_X_mY, Tr_34_34_14), - SymOp(Rot_Z_mX_Y, Tr_14_34_34), - SymOp(Rot_mY_mZ_mX, Tr_34_14_34), - SymOp(Rot_Y_mZ_X, Tr_14_34_34), - SymOp(Rot_mY_Z_X, Tr_14_14_14), - SymOp(Rot_Y_Z_mX, Tr_34_34_14), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_12_0_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_0), - SymOp(Rot_Y_mX_mZ, Tr_0_12_12), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_12_12), - SymOp(Rot_X_Z_Y, Tr_12_0_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_12_12_0), - SymOp(Rot_Z_mY_mX, Tr_0_12_12), - SymOp(Rot_Z_Y_X, Tr_12_0_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_14_34_34), - SymOp(Rot_mY_mX_mZ, Tr_34_34_14), - SymOp(Rot_Y_mX_Z, Tr_34_14_34), - SymOp(Rot_mY_X_Z, Tr_14_14_14), - SymOp(Rot_X_Z_mY, Tr_14_34_34), - SymOp(Rot_mX_Z_Y, Tr_14_14_14), - SymOp(Rot_mX_mZ_mY, Tr_34_34_14), - SymOp(Rot_X_mZ_Y, Tr_34_14_34), - SymOp(Rot_Z_Y_mX, Tr_14_34_34), - SymOp(Rot_Z_mY_X, Tr_34_14_34), - SymOp(Rot_mZ_Y_X, Tr_14_14_14), - SymOp(Rot_mZ_mY_mX, Tr_34_34_14), - SymOp(Rot_mX_mY_mZ, Tr_34_34_14), - SymOp(Rot_X_Y_mZ, Tr_34_14_34), - SymOp(Rot_X_mY_Z, Tr_14_14_14), - SymOp(Rot_mX_Y_Z, Tr_14_34_34), - SymOp(Rot_mZ_mX_mY, Tr_34_34_14), - SymOp(Rot_mZ_X_Y, Tr_14_34_34), - SymOp(Rot_Z_X_mY, Tr_34_14_34), - SymOp(Rot_Z_mX_Y, Tr_14_14_14), - SymOp(Rot_mY_mZ_mX, Tr_34_34_14), - SymOp(Rot_Y_mZ_X, Tr_14_14_14), - SymOp(Rot_mY_Z_X, Tr_14_34_34), - SymOp(Rot_Y_Z_mX, Tr_34_14_34), - SymOp(Rot_mY_mX_Z, Tr_0_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_0), - SymOp(Rot_mY_X_mZ, Tr_12_0_12), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_12_12), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_12_12_0), - SymOp(Rot_mX_Z_mY, Tr_12_0_12), - SymOp(Rot_mZ_mY_X, Tr_0_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_0_12), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_12_12_0)]) + number=227, + num_sym_equiv=192, + num_primitive_sym_equiv=48, + short_name="Fd-3m", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="F 41/d -3 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_mZ, Tr_34_14_34), + SymOp(Rot_mY_mX_mZ, Tr_14_14_14), + SymOp(Rot_Y_mX_Z, Tr_14_34_34), + SymOp(Rot_mY_X_Z, Tr_34_34_14), + SymOp(Rot_X_Z_mY, Tr_34_14_34), + SymOp(Rot_mX_Z_Y, Tr_34_34_14), + SymOp(Rot_mX_mZ_mY, Tr_14_14_14), + SymOp(Rot_X_mZ_Y, Tr_14_34_34), + SymOp(Rot_Z_Y_mX, Tr_34_14_34), + SymOp(Rot_Z_mY_X, Tr_14_34_34), + SymOp(Rot_mZ_Y_X, Tr_34_34_14), + SymOp(Rot_mZ_mY_mX, Tr_14_14_14), + SymOp(Rot_mX_mY_mZ, Tr_14_14_14), + SymOp(Rot_X_Y_mZ, Tr_14_34_34), + SymOp(Rot_X_mY_Z, Tr_34_34_14), + SymOp(Rot_mX_Y_Z, Tr_34_14_34), + SymOp(Rot_mZ_mX_mY, Tr_14_14_14), + SymOp(Rot_mZ_X_Y, Tr_34_14_34), + SymOp(Rot_Z_X_mY, Tr_14_34_34), + SymOp(Rot_Z_mX_Y, Tr_34_34_14), + SymOp(Rot_mY_mZ_mX, Tr_14_14_14), + SymOp(Rot_Y_mZ_X, Tr_34_34_14), + SymOp(Rot_mY_Z_X, Tr_34_14_34), + SymOp(Rot_Y_Z_mX, Tr_14_34_34), + SymOp(Rot_mY_mX_Z, Tr_12_0_12), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_0), + SymOp(Rot_mX_mZ_Y, Tr_12_0_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_0_12), + SymOp(Rot_mZ_Y_mX, Tr_0_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_34_34_14), + SymOp(Rot_mY_mX_mZ, Tr_14_34_34), + SymOp(Rot_Y_mX_Z, Tr_14_14_14), + SymOp(Rot_mY_X_Z, Tr_34_14_34), + SymOp(Rot_X_Z_mY, Tr_34_34_14), + SymOp(Rot_mX_Z_Y, Tr_34_14_34), + SymOp(Rot_mX_mZ_mY, Tr_14_34_34), + SymOp(Rot_X_mZ_Y, Tr_14_14_14), + SymOp(Rot_Z_Y_mX, Tr_34_34_14), + SymOp(Rot_Z_mY_X, Tr_14_14_14), + SymOp(Rot_mZ_Y_X, Tr_34_14_34), + SymOp(Rot_mZ_mY_mX, Tr_14_34_34), + SymOp(Rot_mX_mY_mZ, Tr_14_34_34), + SymOp(Rot_X_Y_mZ, Tr_14_14_14), + SymOp(Rot_X_mY_Z, Tr_34_14_34), + SymOp(Rot_mX_Y_Z, Tr_34_34_14), + SymOp(Rot_mZ_mX_mY, Tr_14_34_34), + SymOp(Rot_mZ_X_Y, Tr_34_34_14), + SymOp(Rot_Z_X_mY, Tr_14_14_14), + SymOp(Rot_Z_mX_Y, Tr_34_14_34), + SymOp(Rot_mY_mZ_mX, Tr_14_34_34), + SymOp(Rot_Y_mZ_X, Tr_34_14_34), + SymOp(Rot_mY_Z_X, Tr_34_34_14), + SymOp(Rot_Y_Z_mX, Tr_14_14_14), + SymOp(Rot_mY_mX_Z, Tr_12_12_0), + SymOp(Rot_Y_X_Z, Tr_0_12_12), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_12_0_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_0), + SymOp(Rot_X_mZ_mY, Tr_12_0_12), + SymOp(Rot_X_Z_Y, Tr_0_12_12), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_12_12_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_12_0_12), + SymOp(Rot_Z_Y_X, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_14_14_14), + SymOp(Rot_mY_mX_mZ, Tr_34_14_34), + SymOp(Rot_Y_mX_Z, Tr_34_34_14), + SymOp(Rot_mY_X_Z, Tr_14_34_34), + SymOp(Rot_X_Z_mY, Tr_14_14_14), + SymOp(Rot_mX_Z_Y, Tr_14_34_34), + SymOp(Rot_mX_mZ_mY, Tr_34_14_34), + SymOp(Rot_X_mZ_Y, Tr_34_34_14), + SymOp(Rot_Z_Y_mX, Tr_14_14_14), + SymOp(Rot_Z_mY_X, Tr_34_34_14), + SymOp(Rot_mZ_Y_X, Tr_14_34_34), + SymOp(Rot_mZ_mY_mX, Tr_34_14_34), + SymOp(Rot_mX_mY_mZ, Tr_34_14_34), + SymOp(Rot_X_Y_mZ, Tr_34_34_14), + SymOp(Rot_X_mY_Z, Tr_14_34_34), + SymOp(Rot_mX_Y_Z, Tr_14_14_14), + SymOp(Rot_mZ_mX_mY, Tr_34_14_34), + SymOp(Rot_mZ_X_Y, Tr_14_14_14), + SymOp(Rot_Z_X_mY, Tr_34_34_14), + SymOp(Rot_Z_mX_Y, Tr_14_34_34), + SymOp(Rot_mY_mZ_mX, Tr_34_14_34), + SymOp(Rot_Y_mZ_X, Tr_14_34_34), + SymOp(Rot_mY_Z_X, Tr_14_14_14), + SymOp(Rot_Y_Z_mX, Tr_34_34_14), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_12_0_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_0), + SymOp(Rot_Y_mX_mZ, Tr_0_12_12), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_12_12), + SymOp(Rot_X_Z_Y, Tr_12_0_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_12_12_0), + SymOp(Rot_Z_mY_mX, Tr_0_12_12), + SymOp(Rot_Z_Y_X, Tr_12_0_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_14_34_34), + SymOp(Rot_mY_mX_mZ, Tr_34_34_14), + SymOp(Rot_Y_mX_Z, Tr_34_14_34), + SymOp(Rot_mY_X_Z, Tr_14_14_14), + SymOp(Rot_X_Z_mY, Tr_14_34_34), + SymOp(Rot_mX_Z_Y, Tr_14_14_14), + SymOp(Rot_mX_mZ_mY, Tr_34_34_14), + SymOp(Rot_X_mZ_Y, Tr_34_14_34), + SymOp(Rot_Z_Y_mX, Tr_14_34_34), + SymOp(Rot_Z_mY_X, Tr_34_14_34), + SymOp(Rot_mZ_Y_X, Tr_14_14_14), + SymOp(Rot_mZ_mY_mX, Tr_34_34_14), + SymOp(Rot_mX_mY_mZ, Tr_34_34_14), + SymOp(Rot_X_Y_mZ, Tr_34_14_34), + SymOp(Rot_X_mY_Z, Tr_14_14_14), + SymOp(Rot_mX_Y_Z, Tr_14_34_34), + SymOp(Rot_mZ_mX_mY, Tr_34_34_14), + SymOp(Rot_mZ_X_Y, Tr_14_34_34), + SymOp(Rot_Z_X_mY, Tr_34_14_34), + SymOp(Rot_Z_mX_Y, Tr_14_14_14), + SymOp(Rot_mY_mZ_mX, Tr_34_34_14), + SymOp(Rot_Y_mZ_X, Tr_14_14_14), + SymOp(Rot_mY_Z_X, Tr_14_34_34), + SymOp(Rot_Y_Z_mX, Tr_34_14_34), + SymOp(Rot_mY_mX_Z, Tr_0_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_0), + SymOp(Rot_mY_X_mZ, Tr_12_0_12), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_12_12), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_12_12_0), + SymOp(Rot_mX_Z_mY, Tr_12_0_12), + SymOp(Rot_mZ_mY_X, Tr_0_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_0_12), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_12_12_0), + ], +) sg228 = SpaceGroup( - number = 228, - num_sym_equiv = 192, - num_primitive_sym_equiv = 48, - short_name = "Fd-3c", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "F 41/d -3 2/c", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_12), - SymOp(Rot_Y_X_mZ, Tr_34_14_34), - SymOp(Rot_mY_mX_mZ, Tr_14_14_14), - SymOp(Rot_Y_mX_Z, Tr_14_34_34), - SymOp(Rot_mY_X_Z, Tr_34_34_14), - SymOp(Rot_X_Z_mY, Tr_34_14_34), - SymOp(Rot_mX_Z_Y, Tr_34_34_14), - SymOp(Rot_mX_mZ_mY, Tr_14_14_14), - SymOp(Rot_X_mZ_Y, Tr_14_34_34), - SymOp(Rot_Z_Y_mX, Tr_34_14_34), - SymOp(Rot_Z_mY_X, Tr_14_34_34), - SymOp(Rot_mZ_Y_X, Tr_34_34_14), - SymOp(Rot_mZ_mY_mX, Tr_14_14_14), - SymOp(Rot_mX_mY_mZ, Tr_34_34_34), - SymOp(Rot_X_Y_mZ, Tr_34_14_14), - SymOp(Rot_X_mY_Z, Tr_14_14_34), - SymOp(Rot_mX_Y_Z, Tr_14_34_14), - SymOp(Rot_mZ_mX_mY, Tr_34_34_34), - SymOp(Rot_mZ_X_Y, Tr_14_34_14), - SymOp(Rot_Z_X_mY, Tr_34_14_14), - SymOp(Rot_Z_mX_Y, Tr_14_14_34), - SymOp(Rot_mY_mZ_mX, Tr_34_34_34), - SymOp(Rot_Y_mZ_X, Tr_14_14_34), - SymOp(Rot_mY_Z_X, Tr_14_34_14), - SymOp(Rot_Y_Z_mX, Tr_34_14_14), - SymOp(Rot_mY_mX_Z, Tr_0_12_0), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_12), - SymOp(Rot_mX_mZ_Y, Tr_0_12_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_12_0), - SymOp(Rot_mZ_Y_mX, Tr_12_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_34_34_14), - SymOp(Rot_mY_mX_mZ, Tr_14_34_34), - SymOp(Rot_Y_mX_Z, Tr_14_14_14), - SymOp(Rot_mY_X_Z, Tr_34_14_34), - SymOp(Rot_X_Z_mY, Tr_34_34_14), - SymOp(Rot_mX_Z_Y, Tr_34_14_34), - SymOp(Rot_mX_mZ_mY, Tr_14_34_34), - SymOp(Rot_X_mZ_Y, Tr_14_14_14), - SymOp(Rot_Z_Y_mX, Tr_34_34_14), - SymOp(Rot_Z_mY_X, Tr_14_14_14), - SymOp(Rot_mZ_Y_X, Tr_34_14_34), - SymOp(Rot_mZ_mY_mX, Tr_14_34_34), - SymOp(Rot_mX_mY_mZ, Tr_34_14_14), - SymOp(Rot_X_Y_mZ, Tr_34_34_34), - SymOp(Rot_X_mY_Z, Tr_14_34_14), - SymOp(Rot_mX_Y_Z, Tr_14_14_34), - SymOp(Rot_mZ_mX_mY, Tr_34_14_14), - SymOp(Rot_mZ_X_Y, Tr_14_14_34), - SymOp(Rot_Z_X_mY, Tr_34_34_34), - SymOp(Rot_Z_mX_Y, Tr_14_34_14), - SymOp(Rot_mY_mZ_mX, Tr_34_14_14), - SymOp(Rot_Y_mZ_X, Tr_14_34_14), - SymOp(Rot_mY_Z_X, Tr_14_14_34), - SymOp(Rot_Y_Z_mX, Tr_34_34_34), - SymOp(Rot_mY_mX_Z, Tr_0_0_12), - SymOp(Rot_Y_X_Z, Tr_12_0_0), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_0_12_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_12), - SymOp(Rot_X_mZ_mY, Tr_0_12_0), - SymOp(Rot_X_Z_Y, Tr_12_0_0), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_0_0_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_0_12_0), - SymOp(Rot_Z_Y_X, Tr_12_0_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_12_0_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_12_0_12), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_X_mZ, Tr_14_14_14), - SymOp(Rot_mY_mX_mZ, Tr_34_14_34), - SymOp(Rot_Y_mX_Z, Tr_34_34_14), - SymOp(Rot_mY_X_Z, Tr_14_34_34), - SymOp(Rot_X_Z_mY, Tr_14_14_14), - SymOp(Rot_mX_Z_Y, Tr_14_34_34), - SymOp(Rot_mX_mZ_mY, Tr_34_14_34), - SymOp(Rot_X_mZ_Y, Tr_34_34_14), - SymOp(Rot_Z_Y_mX, Tr_14_14_14), - SymOp(Rot_Z_mY_X, Tr_34_34_14), - SymOp(Rot_mZ_Y_X, Tr_14_34_34), - SymOp(Rot_mZ_mY_mX, Tr_34_14_34), - SymOp(Rot_mX_mY_mZ, Tr_14_34_14), - SymOp(Rot_X_Y_mZ, Tr_14_14_34), - SymOp(Rot_X_mY_Z, Tr_34_14_14), - SymOp(Rot_mX_Y_Z, Tr_34_34_34), - SymOp(Rot_mZ_mX_mY, Tr_14_34_14), - SymOp(Rot_mZ_X_Y, Tr_34_34_34), - SymOp(Rot_Z_X_mY, Tr_14_14_34), - SymOp(Rot_Z_mX_Y, Tr_34_14_14), - SymOp(Rot_mY_mZ_mX, Tr_14_34_14), - SymOp(Rot_Y_mZ_X, Tr_34_14_14), - SymOp(Rot_mY_Z_X, Tr_34_34_34), - SymOp(Rot_Y_Z_mX, Tr_14_14_34), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_0_12_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_12), - SymOp(Rot_Y_mX_mZ, Tr_12_0_0), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_0_0), - SymOp(Rot_X_Z_Y, Tr_0_12_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_0_0_12), - SymOp(Rot_Z_mY_mX, Tr_12_0_0), - SymOp(Rot_Z_Y_X, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_14_34_34), - SymOp(Rot_mY_mX_mZ, Tr_34_34_14), - SymOp(Rot_Y_mX_Z, Tr_34_14_34), - SymOp(Rot_mY_X_Z, Tr_14_14_14), - SymOp(Rot_X_Z_mY, Tr_14_34_34), - SymOp(Rot_mX_Z_Y, Tr_14_14_14), - SymOp(Rot_mX_mZ_mY, Tr_34_34_14), - SymOp(Rot_X_mZ_Y, Tr_34_14_34), - SymOp(Rot_Z_Y_mX, Tr_14_34_34), - SymOp(Rot_Z_mY_X, Tr_34_14_34), - SymOp(Rot_mZ_Y_X, Tr_14_14_14), - SymOp(Rot_mZ_mY_mX, Tr_34_34_14), - SymOp(Rot_mX_mY_mZ, Tr_14_14_34), - SymOp(Rot_X_Y_mZ, Tr_14_34_14), - SymOp(Rot_X_mY_Z, Tr_34_34_34), - SymOp(Rot_mX_Y_Z, Tr_34_14_14), - SymOp(Rot_mZ_mX_mY, Tr_14_14_34), - SymOp(Rot_mZ_X_Y, Tr_34_14_14), - SymOp(Rot_Z_X_mY, Tr_14_34_14), - SymOp(Rot_Z_mX_Y, Tr_34_34_34), - SymOp(Rot_mY_mZ_mX, Tr_14_14_34), - SymOp(Rot_Y_mZ_X, Tr_34_34_34), - SymOp(Rot_mY_Z_X, Tr_34_14_14), - SymOp(Rot_Y_Z_mX, Tr_14_34_14), - SymOp(Rot_mY_mX_Z, Tr_12_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_12), - SymOp(Rot_mY_X_mZ, Tr_0_12_0), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_0_0), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_0_0_12), - SymOp(Rot_mX_Z_mY, Tr_0_12_0), - SymOp(Rot_mZ_mY_X, Tr_12_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_12_0), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_0_0_12)]) + number=228, + num_sym_equiv=192, + num_primitive_sym_equiv=48, + short_name="Fd-3c", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="F 41/d -3 2/c", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_12), + SymOp(Rot_Y_X_mZ, Tr_34_14_34), + SymOp(Rot_mY_mX_mZ, Tr_14_14_14), + SymOp(Rot_Y_mX_Z, Tr_14_34_34), + SymOp(Rot_mY_X_Z, Tr_34_34_14), + SymOp(Rot_X_Z_mY, Tr_34_14_34), + SymOp(Rot_mX_Z_Y, Tr_34_34_14), + SymOp(Rot_mX_mZ_mY, Tr_14_14_14), + SymOp(Rot_X_mZ_Y, Tr_14_34_34), + SymOp(Rot_Z_Y_mX, Tr_34_14_34), + SymOp(Rot_Z_mY_X, Tr_14_34_34), + SymOp(Rot_mZ_Y_X, Tr_34_34_14), + SymOp(Rot_mZ_mY_mX, Tr_14_14_14), + SymOp(Rot_mX_mY_mZ, Tr_34_34_34), + SymOp(Rot_X_Y_mZ, Tr_34_14_14), + SymOp(Rot_X_mY_Z, Tr_14_14_34), + SymOp(Rot_mX_Y_Z, Tr_14_34_14), + SymOp(Rot_mZ_mX_mY, Tr_34_34_34), + SymOp(Rot_mZ_X_Y, Tr_14_34_14), + SymOp(Rot_Z_X_mY, Tr_34_14_14), + SymOp(Rot_Z_mX_Y, Tr_14_14_34), + SymOp(Rot_mY_mZ_mX, Tr_34_34_34), + SymOp(Rot_Y_mZ_X, Tr_14_14_34), + SymOp(Rot_mY_Z_X, Tr_14_34_14), + SymOp(Rot_Y_Z_mX, Tr_34_14_14), + SymOp(Rot_mY_mX_Z, Tr_0_12_0), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_12), + SymOp(Rot_mX_mZ_Y, Tr_0_12_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_12_0), + SymOp(Rot_mZ_Y_mX, Tr_12_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_34_34_14), + SymOp(Rot_mY_mX_mZ, Tr_14_34_34), + SymOp(Rot_Y_mX_Z, Tr_14_14_14), + SymOp(Rot_mY_X_Z, Tr_34_14_34), + SymOp(Rot_X_Z_mY, Tr_34_34_14), + SymOp(Rot_mX_Z_Y, Tr_34_14_34), + SymOp(Rot_mX_mZ_mY, Tr_14_34_34), + SymOp(Rot_X_mZ_Y, Tr_14_14_14), + SymOp(Rot_Z_Y_mX, Tr_34_34_14), + SymOp(Rot_Z_mY_X, Tr_14_14_14), + SymOp(Rot_mZ_Y_X, Tr_34_14_34), + SymOp(Rot_mZ_mY_mX, Tr_14_34_34), + SymOp(Rot_mX_mY_mZ, Tr_34_14_14), + SymOp(Rot_X_Y_mZ, Tr_34_34_34), + SymOp(Rot_X_mY_Z, Tr_14_34_14), + SymOp(Rot_mX_Y_Z, Tr_14_14_34), + SymOp(Rot_mZ_mX_mY, Tr_34_14_14), + SymOp(Rot_mZ_X_Y, Tr_14_14_34), + SymOp(Rot_Z_X_mY, Tr_34_34_34), + SymOp(Rot_Z_mX_Y, Tr_14_34_14), + SymOp(Rot_mY_mZ_mX, Tr_34_14_14), + SymOp(Rot_Y_mZ_X, Tr_14_34_14), + SymOp(Rot_mY_Z_X, Tr_14_14_34), + SymOp(Rot_Y_Z_mX, Tr_34_34_34), + SymOp(Rot_mY_mX_Z, Tr_0_0_12), + SymOp(Rot_Y_X_Z, Tr_12_0_0), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_0_12_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_12), + SymOp(Rot_X_mZ_mY, Tr_0_12_0), + SymOp(Rot_X_Z_Y, Tr_12_0_0), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_0_0_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_0_12_0), + SymOp(Rot_Z_Y_X, Tr_12_0_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_12_0_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_12_0_12), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_X_mZ, Tr_14_14_14), + SymOp(Rot_mY_mX_mZ, Tr_34_14_34), + SymOp(Rot_Y_mX_Z, Tr_34_34_14), + SymOp(Rot_mY_X_Z, Tr_14_34_34), + SymOp(Rot_X_Z_mY, Tr_14_14_14), + SymOp(Rot_mX_Z_Y, Tr_14_34_34), + SymOp(Rot_mX_mZ_mY, Tr_34_14_34), + SymOp(Rot_X_mZ_Y, Tr_34_34_14), + SymOp(Rot_Z_Y_mX, Tr_14_14_14), + SymOp(Rot_Z_mY_X, Tr_34_34_14), + SymOp(Rot_mZ_Y_X, Tr_14_34_34), + SymOp(Rot_mZ_mY_mX, Tr_34_14_34), + SymOp(Rot_mX_mY_mZ, Tr_14_34_14), + SymOp(Rot_X_Y_mZ, Tr_14_14_34), + SymOp(Rot_X_mY_Z, Tr_34_14_14), + SymOp(Rot_mX_Y_Z, Tr_34_34_34), + SymOp(Rot_mZ_mX_mY, Tr_14_34_14), + SymOp(Rot_mZ_X_Y, Tr_34_34_34), + SymOp(Rot_Z_X_mY, Tr_14_14_34), + SymOp(Rot_Z_mX_Y, Tr_34_14_14), + SymOp(Rot_mY_mZ_mX, Tr_14_34_14), + SymOp(Rot_Y_mZ_X, Tr_34_14_14), + SymOp(Rot_mY_Z_X, Tr_34_34_34), + SymOp(Rot_Y_Z_mX, Tr_14_14_34), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_0_12_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_12), + SymOp(Rot_Y_mX_mZ, Tr_12_0_0), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_0_0), + SymOp(Rot_X_Z_Y, Tr_0_12_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_0_0_12), + SymOp(Rot_Z_mY_mX, Tr_12_0_0), + SymOp(Rot_Z_Y_X, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_14_34_34), + SymOp(Rot_mY_mX_mZ, Tr_34_34_14), + SymOp(Rot_Y_mX_Z, Tr_34_14_34), + SymOp(Rot_mY_X_Z, Tr_14_14_14), + SymOp(Rot_X_Z_mY, Tr_14_34_34), + SymOp(Rot_mX_Z_Y, Tr_14_14_14), + SymOp(Rot_mX_mZ_mY, Tr_34_34_14), + SymOp(Rot_X_mZ_Y, Tr_34_14_34), + SymOp(Rot_Z_Y_mX, Tr_14_34_34), + SymOp(Rot_Z_mY_X, Tr_34_14_34), + SymOp(Rot_mZ_Y_X, Tr_14_14_14), + SymOp(Rot_mZ_mY_mX, Tr_34_34_14), + SymOp(Rot_mX_mY_mZ, Tr_14_14_34), + SymOp(Rot_X_Y_mZ, Tr_14_34_14), + SymOp(Rot_X_mY_Z, Tr_34_34_34), + SymOp(Rot_mX_Y_Z, Tr_34_14_14), + SymOp(Rot_mZ_mX_mY, Tr_14_14_34), + SymOp(Rot_mZ_X_Y, Tr_34_14_14), + SymOp(Rot_Z_X_mY, Tr_14_34_14), + SymOp(Rot_Z_mX_Y, Tr_34_34_34), + SymOp(Rot_mY_mZ_mX, Tr_14_14_34), + SymOp(Rot_Y_mZ_X, Tr_34_34_34), + SymOp(Rot_mY_Z_X, Tr_34_14_14), + SymOp(Rot_Y_Z_mX, Tr_14_34_14), + SymOp(Rot_mY_mX_Z, Tr_12_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_12), + SymOp(Rot_mY_X_mZ, Tr_0_12_0), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_0_0), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_0_0_12), + SymOp(Rot_mX_Z_mY, Tr_0_12_0), + SymOp(Rot_mZ_mY_X, Tr_12_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_12_0), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_0_0_12), + ], +) sg229 = SpaceGroup( - number = 229, - num_sym_equiv = 96, - num_primitive_sym_equiv = 48, - short_name = "Im-3m", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "I 4/m -3 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_0_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_0_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_0_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_0), - SymOp(Rot_mY_mX_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_Z, Tr_0_0_0), - SymOp(Rot_mY_X_Z, Tr_0_0_0), - SymOp(Rot_X_Z_mY, Tr_0_0_0), - SymOp(Rot_mX_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_mZ_Y, Tr_0_0_0), - SymOp(Rot_Z_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_X, Tr_0_0_0), - SymOp(Rot_mZ_mY_mX, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_0_0_0), - SymOp(Rot_Z_X_mY, Tr_0_0_0), - SymOp(Rot_Z_mX_Y, Tr_0_0_0), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_0), - SymOp(Rot_Y_Z_mX, Tr_0_0_0), - SymOp(Rot_mY_mX_Z, Tr_0_0_0), - SymOp(Rot_Y_X_Z, Tr_0_0_0), - SymOp(Rot_mY_X_mZ, Tr_0_0_0), - SymOp(Rot_Y_mX_mZ, Tr_0_0_0), - SymOp(Rot_mX_mZ_Y, Tr_0_0_0), - SymOp(Rot_X_mZ_mY, Tr_0_0_0), - SymOp(Rot_X_Z_Y, Tr_0_0_0), - SymOp(Rot_mX_Z_mY, Tr_0_0_0), - SymOp(Rot_mZ_mY_X, Tr_0_0_0), - SymOp(Rot_mZ_Y_mX, Tr_0_0_0), - SymOp(Rot_Z_mY_mX, Tr_0_0_0), - SymOp(Rot_Z_Y_X, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_mX_Y, Tr_12_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_12_12), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_12), - SymOp(Rot_mY_mZ_X, Tr_12_12_12), - SymOp(Rot_Y_X_mZ, Tr_12_12_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_12_12), - SymOp(Rot_mY_X_Z, Tr_12_12_12), - SymOp(Rot_X_Z_mY, Tr_12_12_12), - SymOp(Rot_mX_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_mZ_Y, Tr_12_12_12), - SymOp(Rot_Z_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_X, Tr_12_12_12), - SymOp(Rot_mZ_mY_mX, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_12), - SymOp(Rot_mZ_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_X_Y, Tr_12_12_12), - SymOp(Rot_Z_X_mY, Tr_12_12_12), - SymOp(Rot_Z_mX_Y, Tr_12_12_12), - SymOp(Rot_mY_mZ_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_X, Tr_12_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_12), - SymOp(Rot_Y_Z_mX, Tr_12_12_12), - SymOp(Rot_mY_mX_Z, Tr_12_12_12), - SymOp(Rot_Y_X_Z, Tr_12_12_12), - SymOp(Rot_mY_X_mZ, Tr_12_12_12), - SymOp(Rot_Y_mX_mZ, Tr_12_12_12), - SymOp(Rot_mX_mZ_Y, Tr_12_12_12), - SymOp(Rot_X_mZ_mY, Tr_12_12_12), - SymOp(Rot_X_Z_Y, Tr_12_12_12), - SymOp(Rot_mX_Z_mY, Tr_12_12_12), - SymOp(Rot_mZ_mY_X, Tr_12_12_12), - SymOp(Rot_mZ_Y_mX, Tr_12_12_12), - SymOp(Rot_Z_mY_mX, Tr_12_12_12), - SymOp(Rot_Z_Y_X, Tr_12_12_12)]) + number=229, + num_sym_equiv=96, + num_primitive_sym_equiv=48, + short_name="Im-3m", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="I 4/m -3 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_0_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_0_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_0_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_0), + SymOp(Rot_mY_mX_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_Z, Tr_0_0_0), + SymOp(Rot_mY_X_Z, Tr_0_0_0), + SymOp(Rot_X_Z_mY, Tr_0_0_0), + SymOp(Rot_mX_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_mZ_Y, Tr_0_0_0), + SymOp(Rot_Z_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_X, Tr_0_0_0), + SymOp(Rot_mZ_mY_mX, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_0_0_0), + SymOp(Rot_Z_X_mY, Tr_0_0_0), + SymOp(Rot_Z_mX_Y, Tr_0_0_0), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_0), + SymOp(Rot_Y_Z_mX, Tr_0_0_0), + SymOp(Rot_mY_mX_Z, Tr_0_0_0), + SymOp(Rot_Y_X_Z, Tr_0_0_0), + SymOp(Rot_mY_X_mZ, Tr_0_0_0), + SymOp(Rot_Y_mX_mZ, Tr_0_0_0), + SymOp(Rot_mX_mZ_Y, Tr_0_0_0), + SymOp(Rot_X_mZ_mY, Tr_0_0_0), + SymOp(Rot_X_Z_Y, Tr_0_0_0), + SymOp(Rot_mX_Z_mY, Tr_0_0_0), + SymOp(Rot_mZ_mY_X, Tr_0_0_0), + SymOp(Rot_mZ_Y_mX, Tr_0_0_0), + SymOp(Rot_Z_mY_mX, Tr_0_0_0), + SymOp(Rot_Z_Y_X, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_mX_Y, Tr_12_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_12_12), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_12), + SymOp(Rot_mY_mZ_X, Tr_12_12_12), + SymOp(Rot_Y_X_mZ, Tr_12_12_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_12_12), + SymOp(Rot_mY_X_Z, Tr_12_12_12), + SymOp(Rot_X_Z_mY, Tr_12_12_12), + SymOp(Rot_mX_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_mZ_Y, Tr_12_12_12), + SymOp(Rot_Z_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_X, Tr_12_12_12), + SymOp(Rot_mZ_mY_mX, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_12), + SymOp(Rot_mZ_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_X_Y, Tr_12_12_12), + SymOp(Rot_Z_X_mY, Tr_12_12_12), + SymOp(Rot_Z_mX_Y, Tr_12_12_12), + SymOp(Rot_mY_mZ_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_X, Tr_12_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_12), + SymOp(Rot_Y_Z_mX, Tr_12_12_12), + SymOp(Rot_mY_mX_Z, Tr_12_12_12), + SymOp(Rot_Y_X_Z, Tr_12_12_12), + SymOp(Rot_mY_X_mZ, Tr_12_12_12), + SymOp(Rot_Y_mX_mZ, Tr_12_12_12), + SymOp(Rot_mX_mZ_Y, Tr_12_12_12), + SymOp(Rot_X_mZ_mY, Tr_12_12_12), + SymOp(Rot_X_Z_Y, Tr_12_12_12), + SymOp(Rot_mX_Z_mY, Tr_12_12_12), + SymOp(Rot_mZ_mY_X, Tr_12_12_12), + SymOp(Rot_mZ_Y_mX, Tr_12_12_12), + SymOp(Rot_Z_mY_mX, Tr_12_12_12), + SymOp(Rot_Z_Y_X, Tr_12_12_12), + ], +) sg230 = SpaceGroup( - number = 230, - num_sym_equiv = 96, - num_primitive_sym_equiv = 48, - short_name = "Ia-3d", - point_group_name = "PGm3barm", - crystal_system = "CUBIC", - pdb_name = "I 41/a -3 2/d", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_Z_mX_mY, Tr_12_12_0), - SymOp(Rot_mZ_mX_Y, Tr_12_0_12), - SymOp(Rot_mZ_X_mY, Tr_0_12_12), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_12), - SymOp(Rot_Y_mZ_mX, Tr_12_12_0), - SymOp(Rot_mY_mZ_X, Tr_12_0_12), - SymOp(Rot_Y_X_mZ, Tr_34_14_14), - SymOp(Rot_mY_mX_mZ, Tr_34_34_34), - SymOp(Rot_Y_mX_Z, Tr_14_14_34), - SymOp(Rot_mY_X_Z, Tr_14_34_14), - SymOp(Rot_X_Z_mY, Tr_34_14_14), - SymOp(Rot_mX_Z_Y, Tr_14_34_14), - SymOp(Rot_mX_mZ_mY, Tr_34_34_34), - SymOp(Rot_X_mZ_Y, Tr_14_14_34), - SymOp(Rot_Z_Y_mX, Tr_34_14_14), - SymOp(Rot_Z_mY_X, Tr_14_14_34), - SymOp(Rot_mZ_Y_X, Tr_14_34_14), - SymOp(Rot_mZ_mY_mX, Tr_34_34_34), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_Z, Tr_0_12_12), - SymOp(Rot_mX_Y_Z, Tr_12_12_0), - SymOp(Rot_mZ_mX_mY, Tr_0_0_0), - SymOp(Rot_mZ_X_Y, Tr_12_12_0), - SymOp(Rot_Z_X_mY, Tr_12_0_12), - SymOp(Rot_Z_mX_Y, Tr_0_12_12), - SymOp(Rot_mY_mZ_mX, Tr_0_0_0), - SymOp(Rot_Y_mZ_X, Tr_0_12_12), - SymOp(Rot_mY_Z_X, Tr_12_12_0), - SymOp(Rot_Y_Z_mX, Tr_12_0_12), - SymOp(Rot_mY_mX_Z, Tr_14_34_34), - SymOp(Rot_Y_X_Z, Tr_14_14_14), - SymOp(Rot_mY_X_mZ, Tr_34_34_14), - SymOp(Rot_Y_mX_mZ, Tr_34_14_34), - SymOp(Rot_mX_mZ_Y, Tr_14_34_34), - SymOp(Rot_X_mZ_mY, Tr_34_14_34), - SymOp(Rot_X_Z_Y, Tr_14_14_14), - SymOp(Rot_mX_Z_mY, Tr_34_34_14), - SymOp(Rot_mZ_mY_X, Tr_14_34_34), - SymOp(Rot_mZ_Y_mX, Tr_34_34_14), - SymOp(Rot_Z_mY_mX, Tr_34_14_34), - SymOp(Rot_Z_Y_X, Tr_14_14_14), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_Z_mX_mY, Tr_0_0_12), - SymOp(Rot_mZ_mX_Y, Tr_0_12_0), - SymOp(Rot_mZ_X_mY, Tr_12_0_0), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_0), - SymOp(Rot_Y_mZ_mX, Tr_0_0_12), - SymOp(Rot_mY_mZ_X, Tr_0_12_0), - SymOp(Rot_Y_X_mZ, Tr_14_34_34), - SymOp(Rot_mY_mX_mZ, Tr_14_14_14), - SymOp(Rot_Y_mX_Z, Tr_34_34_14), - SymOp(Rot_mY_X_Z, Tr_34_14_34), - SymOp(Rot_X_Z_mY, Tr_14_34_34), - SymOp(Rot_mX_Z_Y, Tr_34_14_34), - SymOp(Rot_mX_mZ_mY, Tr_14_14_14), - SymOp(Rot_X_mZ_Y, Tr_34_34_14), - SymOp(Rot_Z_Y_mX, Tr_14_34_34), - SymOp(Rot_Z_mY_X, Tr_34_34_14), - SymOp(Rot_mZ_Y_X, Tr_34_14_34), - SymOp(Rot_mZ_mY_mX, Tr_14_14_14), - SymOp(Rot_mX_mY_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_Z, Tr_12_0_0), - SymOp(Rot_mX_Y_Z, Tr_0_0_12), - SymOp(Rot_mZ_mX_mY, Tr_12_12_12), - SymOp(Rot_mZ_X_Y, Tr_0_0_12), - SymOp(Rot_Z_X_mY, Tr_0_12_0), - SymOp(Rot_Z_mX_Y, Tr_12_0_0), - SymOp(Rot_mY_mZ_mX, Tr_12_12_12), - SymOp(Rot_Y_mZ_X, Tr_12_0_0), - SymOp(Rot_mY_Z_X, Tr_0_0_12), - SymOp(Rot_Y_Z_mX, Tr_0_12_0), - SymOp(Rot_mY_mX_Z, Tr_34_14_14), - SymOp(Rot_Y_X_Z, Tr_34_34_34), - SymOp(Rot_mY_X_mZ, Tr_14_14_34), - SymOp(Rot_Y_mX_mZ, Tr_14_34_14), - SymOp(Rot_mX_mZ_Y, Tr_34_14_14), - SymOp(Rot_X_mZ_mY, Tr_14_34_14), - SymOp(Rot_X_Z_Y, Tr_34_34_34), - SymOp(Rot_mX_Z_mY, Tr_14_14_34), - SymOp(Rot_mZ_mY_X, Tr_34_14_14), - SymOp(Rot_mZ_Y_mX, Tr_14_14_34), - SymOp(Rot_Z_mY_mX, Tr_14_34_14), - SymOp(Rot_Z_Y_X, Tr_34_34_34)]) + number=230, + num_sym_equiv=96, + num_primitive_sym_equiv=48, + short_name="Ia-3d", + point_group_name="PGm3barm", + crystal_system="CUBIC", + pdb_name="I 41/a -3 2/d", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_Z_mX_mY, Tr_12_12_0), + SymOp(Rot_mZ_mX_Y, Tr_12_0_12), + SymOp(Rot_mZ_X_mY, Tr_0_12_12), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_12), + SymOp(Rot_Y_mZ_mX, Tr_12_12_0), + SymOp(Rot_mY_mZ_X, Tr_12_0_12), + SymOp(Rot_Y_X_mZ, Tr_34_14_14), + SymOp(Rot_mY_mX_mZ, Tr_34_34_34), + SymOp(Rot_Y_mX_Z, Tr_14_14_34), + SymOp(Rot_mY_X_Z, Tr_14_34_14), + SymOp(Rot_X_Z_mY, Tr_34_14_14), + SymOp(Rot_mX_Z_Y, Tr_14_34_14), + SymOp(Rot_mX_mZ_mY, Tr_34_34_34), + SymOp(Rot_X_mZ_Y, Tr_14_14_34), + SymOp(Rot_Z_Y_mX, Tr_34_14_14), + SymOp(Rot_Z_mY_X, Tr_14_14_34), + SymOp(Rot_mZ_Y_X, Tr_14_34_14), + SymOp(Rot_mZ_mY_mX, Tr_34_34_34), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_Z, Tr_0_12_12), + SymOp(Rot_mX_Y_Z, Tr_12_12_0), + SymOp(Rot_mZ_mX_mY, Tr_0_0_0), + SymOp(Rot_mZ_X_Y, Tr_12_12_0), + SymOp(Rot_Z_X_mY, Tr_12_0_12), + SymOp(Rot_Z_mX_Y, Tr_0_12_12), + SymOp(Rot_mY_mZ_mX, Tr_0_0_0), + SymOp(Rot_Y_mZ_X, Tr_0_12_12), + SymOp(Rot_mY_Z_X, Tr_12_12_0), + SymOp(Rot_Y_Z_mX, Tr_12_0_12), + SymOp(Rot_mY_mX_Z, Tr_14_34_34), + SymOp(Rot_Y_X_Z, Tr_14_14_14), + SymOp(Rot_mY_X_mZ, Tr_34_34_14), + SymOp(Rot_Y_mX_mZ, Tr_34_14_34), + SymOp(Rot_mX_mZ_Y, Tr_14_34_34), + SymOp(Rot_X_mZ_mY, Tr_34_14_34), + SymOp(Rot_X_Z_Y, Tr_14_14_14), + SymOp(Rot_mX_Z_mY, Tr_34_34_14), + SymOp(Rot_mZ_mY_X, Tr_14_34_34), + SymOp(Rot_mZ_Y_mX, Tr_34_34_14), + SymOp(Rot_Z_mY_mX, Tr_34_14_34), + SymOp(Rot_Z_Y_X, Tr_14_14_14), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_Z_mX_mY, Tr_0_0_12), + SymOp(Rot_mZ_mX_Y, Tr_0_12_0), + SymOp(Rot_mZ_X_mY, Tr_12_0_0), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_0), + SymOp(Rot_Y_mZ_mX, Tr_0_0_12), + SymOp(Rot_mY_mZ_X, Tr_0_12_0), + SymOp(Rot_Y_X_mZ, Tr_14_34_34), + SymOp(Rot_mY_mX_mZ, Tr_14_14_14), + SymOp(Rot_Y_mX_Z, Tr_34_34_14), + SymOp(Rot_mY_X_Z, Tr_34_14_34), + SymOp(Rot_X_Z_mY, Tr_14_34_34), + SymOp(Rot_mX_Z_Y, Tr_34_14_34), + SymOp(Rot_mX_mZ_mY, Tr_14_14_14), + SymOp(Rot_X_mZ_Y, Tr_34_34_14), + SymOp(Rot_Z_Y_mX, Tr_14_34_34), + SymOp(Rot_Z_mY_X, Tr_34_34_14), + SymOp(Rot_mZ_Y_X, Tr_34_14_34), + SymOp(Rot_mZ_mY_mX, Tr_14_14_14), + SymOp(Rot_mX_mY_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_Z, Tr_12_0_0), + SymOp(Rot_mX_Y_Z, Tr_0_0_12), + SymOp(Rot_mZ_mX_mY, Tr_12_12_12), + SymOp(Rot_mZ_X_Y, Tr_0_0_12), + SymOp(Rot_Z_X_mY, Tr_0_12_0), + SymOp(Rot_Z_mX_Y, Tr_12_0_0), + SymOp(Rot_mY_mZ_mX, Tr_12_12_12), + SymOp(Rot_Y_mZ_X, Tr_12_0_0), + SymOp(Rot_mY_Z_X, Tr_0_0_12), + SymOp(Rot_Y_Z_mX, Tr_0_12_0), + SymOp(Rot_mY_mX_Z, Tr_34_14_14), + SymOp(Rot_Y_X_Z, Tr_34_34_34), + SymOp(Rot_mY_X_mZ, Tr_14_14_34), + SymOp(Rot_Y_mX_mZ, Tr_14_34_14), + SymOp(Rot_mX_mZ_Y, Tr_34_14_14), + SymOp(Rot_X_mZ_mY, Tr_14_34_14), + SymOp(Rot_X_Z_Y, Tr_34_34_34), + SymOp(Rot_mX_Z_mY, Tr_14_14_34), + SymOp(Rot_mZ_mY_X, Tr_34_14_14), + SymOp(Rot_mZ_Y_mX, Tr_14_14_34), + SymOp(Rot_Z_mY_mX, Tr_14_34_14), + SymOp(Rot_Z_Y_X, Tr_34_34_34), + ], +) sg1003 = SpaceGroup( - number = 1003, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "P2", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0)]) + number=1003, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P2", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 2", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0)], +) sg1004 = SpaceGroup( - number = 1004, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "P1121", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12)]) + number=1004, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P1121", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 21", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_12)], +) sg3004 = SpaceGroup( - number = 3004, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "I21", - point_group_name = "PG2", - crystal_system = "MONOCLINIC", - pdb_name = "I 1 21 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12)]) + number=3004, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="I21", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="I 1 21 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + ], +) sg1005 = SpaceGroup( - number = 1005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "B2", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "B 1 1 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12)]) + number=1005, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="B2", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="B 1 1 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + ], +) sg2005 = SpaceGroup( - number = 2005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "A2", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "A 2 1 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12)]) + number=2005, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="A2", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="A 2 1 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + ], +) sg3005 = SpaceGroup( - number = 3005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "C21", - point_group_name = "PG2", - crystal_system = "MONOCLINIC", - pdb_name = "C 1 21 1", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0)]) + number=3005, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="C21", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="C 1 21 1", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + ], +) sg1006 = SpaceGroup( - number = 1006, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "P11m", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0)]) + number=1006, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P11m", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 m", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0)], +) sg1007 = SpaceGroup( - number = 1007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = "P11b", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 b", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_12_0)]) + number=1007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P11b", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 b", + symop_list=[SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0)], +) sg1008 = SpaceGroup( - number = 1008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "B11m", - point_group_name = "PG2", - crystal_system = "MONOCLINIC", - pdb_name = "B 1 1 m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12)]) + number=1008, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="B11m", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="B 1 1 m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + ], +) sg1009 = SpaceGroup( - number = 1009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 2, - short_name = "B11b", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "B 1 1 b", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12)]) + number=1009, + num_sym_equiv=4, + num_primitive_sym_equiv=2, + short_name="B11b", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="B 1 1 b", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + ], +) sg1010 = SpaceGroup( - number = 1010, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P112/m", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0)]) + number=1010, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P112/m", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + ], +) sg1011 = SpaceGroup( - number = 1011, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P1121/m", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 21/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_12)]) + number=1011, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P1121/m", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 21/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_12), + ], +) sg1012 = SpaceGroup( - number = 1012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "B112/m", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "B 1 1 2/m", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_mZ, Tr_12_0_12)]) + number=1012, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="B112/m", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="B 1 1 2/m", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_mZ, Tr_12_0_12), + ], +) sg1013 = SpaceGroup( - number = 1013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P112/b", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 2/b", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_12_0)]) + number=1013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P112/b", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 2/b", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + ], +) sg1014 = SpaceGroup( - number = 1014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P1121/b", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "P 1 1 21/b", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_Y_mZ, Tr_0_12_12)]) + number=1014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P1121/b", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 21/b", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_Y_mZ, Tr_0_12_12), + ], +) sg1015 = SpaceGroup( - number = 1015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "B112/b", - point_group_name = "PG2C", - crystal_system = "MONOCLINIC", - pdb_name = "B 1 1 2/b", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_mZ, Tr_12_0_12), - SymOp(Rot_X_Y_mZ, Tr_12_12_12)]) + number=1015, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="B112/b", + point_group_name="PG2C", + crystal_system="MONOCLINIC", + pdb_name="B 1 1 2/b", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_mZ, Tr_12_0_12), + SymOp(Rot_X_Y_mZ, Tr_12_12_12), + ], +) sg1017 = SpaceGroup( - number = 1017, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P2122", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21 2 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_0)]) + number=1017, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2122", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 2 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_0), + ], +) sg2017 = SpaceGroup( - number = 2017, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P2212", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2 21 2", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0)]) + number=2017, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2212", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 21 2", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + ], +) sg1018 = SpaceGroup( - number = 1018, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P21212a", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21 21 2 (a)", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0)]) + number=1018, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21212a", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 21 2 (a)", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + ], +) sg2018 = SpaceGroup( - number = 2018, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P21221", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21 2 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12)]) + number=2018, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21221", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 2 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + ], +) sg3018 = SpaceGroup( - number = 3018, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = "P22121", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 2 21 21", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12)]) + number=3018, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P22121", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 21 21", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + ], +) sg1020 = SpaceGroup( - number = 1020, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "C2221a", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2 2 21a)", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12)]) + number=1020, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="C2221a", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 2 21a)", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + ], +) sg1021 = SpaceGroup( - number = 1021, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "C222a", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "C 2 2 2a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0)]) + number=1021, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="C222a", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 2 2a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + ], +) sg1022 = SpaceGroup( - number = 1022, - num_sym_equiv = 16, - num_primitive_sym_equiv = 4, - short_name = "F222a", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "F 2 2 2a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_0_12_12), - SymOp(Rot_mX_mY_Z, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_12_12_12), - SymOp(Rot_mX_Y_mZ, Tr_0_0_12), - SymOp(Rot_X_Y_Z, Tr_12_0_12), - SymOp(Rot_mX_mY_Z, Tr_0_12_12), - SymOp(Rot_X_mY_mZ, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - SymOp(Rot_X_Y_Z, Tr_12_12_0), - SymOp(Rot_mX_mY_Z, Tr_0_0_0), - SymOp(Rot_X_mY_mZ, Tr_0_12_0), - SymOp(Rot_mX_Y_mZ, Tr_12_0_0)]) + number=1022, + num_sym_equiv=16, + num_primitive_sym_equiv=4, + short_name="F222a", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="F 2 2 2a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_0_12_12), + SymOp(Rot_mX_mY_Z, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_12_12_12), + SymOp(Rot_mX_Y_mZ, Tr_0_0_12), + SymOp(Rot_X_Y_Z, Tr_12_0_12), + SymOp(Rot_mX_mY_Z, Tr_0_12_12), + SymOp(Rot_X_mY_mZ, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_12_12), + SymOp(Rot_X_Y_Z, Tr_12_12_0), + SymOp(Rot_mX_mY_Z, Tr_0_0_0), + SymOp(Rot_X_mY_mZ, Tr_0_12_0), + SymOp(Rot_mX_Y_mZ, Tr_12_0_0), + ], +) sg1023 = SpaceGroup( - number = 1023, - num_sym_equiv = 8, - num_primitive_sym_equiv = 4, - short_name = "I222a", - point_group_name = "PG222", - crystal_system = "ORTHORHOMBIC", - pdb_name = "I 2 2 2a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12)]) + number=1023, + num_sym_equiv=8, + num_primitive_sym_equiv=4, + short_name="I222a", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2 2 2a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + ], +) sg1059 = SpaceGroup( - number = 1059, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "Pmmn2", - point_group_name = "PGmmm", - crystal_system = "ORTHORHOMBIC", - pdb_name = "P 21/m 21/m 2/n", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_mY_mZ, Tr_0_0_0), - SymOp(Rot_X_Y_mZ, Tr_12_12_0), - SymOp(Rot_X_mY_Z, Tr_0_12_0), - SymOp(Rot_mX_Y_Z, Tr_12_0_0)]) + number=1059, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmmn2", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21/m 21/m 2/n", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_mY_mZ, Tr_0_0_0), + SymOp(Rot_X_Y_mZ, Tr_12_12_0), + SymOp(Rot_X_mY_Z, Tr_0_12_0), + SymOp(Rot_mX_Y_Z, Tr_12_0_0), + ], +) sg1094 = SpaceGroup( - number = 1094, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = "P42212a", - point_group_name = "PG422", - crystal_system = "TETRAGONAL", - pdb_name = "P 42 21 2a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_mY_X_Z, Tr_0_12_12), - SymOp(Rot_Y_mX_Z, Tr_12_0_12), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_Y_X_mZ, Tr_0_0_12), - SymOp(Rot_mY_mX_mZ, Tr_12_12_12)]) + number=1094, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="P42212a", + point_group_name="PG422", + crystal_system="TETRAGONAL", + pdb_name="P 42 21 2a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_mY_X_Z, Tr_0_12_12), + SymOp(Rot_Y_mX_Z, Tr_12_0_12), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_Y_X_mZ, Tr_0_0_12), + SymOp(Rot_mY_mX_mZ, Tr_12_12_12), + ], +) sg1197 = SpaceGroup( - number = 1197, - num_sym_equiv = 24, - num_primitive_sym_equiv = 12, - short_name = "I23a", - point_group_name = "PG23", - crystal_system = "CUBIC", - pdb_name = "I 2 3a", - symop_list = [ - SymOp(Rot_X_Y_Z, Tr_0_0_0), - SymOp(Rot_mX_mY_Z, Tr_12_12_0), - SymOp(Rot_X_mY_mZ, Tr_12_0_0), - SymOp(Rot_mX_Y_mZ, Tr_0_12_0), - SymOp(Rot_Y_Z_X, Tr_0_0_0), - SymOp(Rot_mY_mZ_X, Tr_12_12_0), - SymOp(Rot_Y_mZ_mX, Tr_12_0_0), - SymOp(Rot_mY_Z_mX, Tr_0_12_0), - SymOp(Rot_Z_X_Y, Tr_0_0_0), - SymOp(Rot_mZ_mX_Y, Tr_12_12_0), - SymOp(Rot_Z_mX_mY, Tr_12_0_0), - SymOp(Rot_mZ_X_mY, Tr_0_12_0), - SymOp(Rot_X_Y_Z, Tr_12_12_12), - SymOp(Rot_mX_mY_Z, Tr_0_0_12), - SymOp(Rot_X_mY_mZ, Tr_0_12_12), - SymOp(Rot_mX_Y_mZ, Tr_12_0_12), - SymOp(Rot_Y_Z_X, Tr_12_12_12), - SymOp(Rot_mY_mZ_X, Tr_0_0_12), - SymOp(Rot_Y_mZ_mX, Tr_0_12_12), - SymOp(Rot_mY_Z_mX, Tr_12_0_12), - SymOp(Rot_Z_X_Y, Tr_12_12_12), - SymOp(Rot_mZ_mX_Y, Tr_0_0_12), - SymOp(Rot_Z_mX_mY, Tr_0_12_12), - SymOp(Rot_mZ_X_mY, Tr_12_0_12)]) + number=1197, + num_sym_equiv=24, + num_primitive_sym_equiv=12, + short_name="I23a", + point_group_name="PG23", + crystal_system="CUBIC", + pdb_name="I 2 3a", + symop_list=[ + SymOp(Rot_X_Y_Z, Tr_0_0_0), + SymOp(Rot_mX_mY_Z, Tr_12_12_0), + SymOp(Rot_X_mY_mZ, Tr_12_0_0), + SymOp(Rot_mX_Y_mZ, Tr_0_12_0), + SymOp(Rot_Y_Z_X, Tr_0_0_0), + SymOp(Rot_mY_mZ_X, Tr_12_12_0), + SymOp(Rot_Y_mZ_mX, Tr_12_0_0), + SymOp(Rot_mY_Z_mX, Tr_0_12_0), + SymOp(Rot_Z_X_Y, Tr_0_0_0), + SymOp(Rot_mZ_mX_Y, Tr_12_12_0), + SymOp(Rot_Z_mX_mY, Tr_12_0_0), + SymOp(Rot_mZ_X_mY, Tr_0_12_0), + SymOp(Rot_X_Y_Z, Tr_12_12_12), + SymOp(Rot_mX_mY_Z, Tr_0_0_12), + SymOp(Rot_X_mY_mZ, Tr_0_12_12), + SymOp(Rot_mX_Y_mZ, Tr_12_0_12), + SymOp(Rot_Y_Z_X, Tr_12_12_12), + SymOp(Rot_mY_mZ_X, Tr_0_0_12), + SymOp(Rot_Y_mZ_mX, Tr_0_12_12), + SymOp(Rot_mY_Z_mX, Tr_12_0_12), + SymOp(Rot_Z_X_Y, Tr_12_12_12), + SymOp(Rot_mZ_mX_Y, Tr_0_0_12), + SymOp(Rot_Z_mX_mY, Tr_0_12_12), + SymOp(Rot_mZ_X_mY, Tr_12_0_12), + ], +) ## list of the space groups @@ -7592,4 +8150,5 @@ sg1023, sg1059, sg1094, - sg1197] + sg1197, +] diff --git a/src/diffpy/structure/parsers/__init__.py b/src/diffpy/structure/parsers/__init__.py index 00b0479b..142a31ca 100644 --- a/src/diffpy/structure/parsers/__init__.py +++ b/src/diffpy/structure/parsers/__init__.py @@ -32,8 +32,8 @@ """ from diffpy.structure import StructureFormatError -from diffpy.structure.parsers.structureparser import StructureParser from diffpy.structure.parsers.parser_index_mod import parser_index +from diffpy.structure.parsers.structureparser import StructureParser # silence pyflakes checker assert StructureParser @@ -49,24 +49,22 @@ def getParser(format, **kw): if format not in parser_index: emsg = "no parser for '%s' format" % format raise StructureFormatError(emsg) - pmod = parser_index[format]['module'] + pmod = parser_index[format]["module"] ns = {} - import_cmd = 'from diffpy.structure.parsers import %s as pm' % pmod + import_cmd = "from diffpy.structure.parsers import %s as pm" % pmod exec(import_cmd, ns) - return ns['pm'].getParser(**kw) + return ns["pm"].getParser(**kw) def inputFormats(): """Return list of implemented input structure formats""" - input_formats = [ fmt for fmt, prop in parser_index.items() - if prop['has_input'] ] + input_formats = [fmt for fmt, prop in parser_index.items() if prop["has_input"]] input_formats.sort() return input_formats def outputFormats(): """return list of implemented output structure formats""" - output_formats = [ fmt for fmt, prop in parser_index.items() - if prop['has_output'] ] + output_formats = [fmt for fmt, prop in parser_index.items() if prop["has_output"]] output_formats.sort() return output_formats diff --git a/src/diffpy/structure/parsers/p_auto.py b/src/diffpy/structure/parsers/p_auto.py index 523cbf66..2142666b 100644 --- a/src/diffpy/structure/parsers/p_auto.py +++ b/src/diffpy/structure/parsers/p_auto.py @@ -21,8 +21,8 @@ import os from diffpy.structure import StructureFormatError -from diffpy.structure.parsers import StructureParser -from diffpy.structure.parsers import parser_index +from diffpy.structure.parsers import StructureParser, parser_index + class P_auto(StructureParser): """Parser with automatic detection of structure format. @@ -42,22 +42,25 @@ def _getOrderedFormats(self): This only works when self.filename has a known extension. """ from diffpy.structure.parsers import inputFormats - ofmts = [fmt for fmt in inputFormats() if fmt != 'auto'] - if not self.filename: return ofmts + + ofmts = [fmt for fmt in inputFormats() if fmt != "auto"] + if not self.filename: + return ofmts # filename is defined here filebase = os.path.basename(self.filename) from fnmatch import fnmatch + # loop over copy of ofmts for fmt in list(ofmts): - pattern = parser_index[fmt]['file_pattern'] - if pattern in ('*.*', '*'): continue - anymatch = [1 for p in pattern.split('|') if fnmatch(filebase, p)] + pattern = parser_index[fmt]["file_pattern"] + if pattern in ("*.*", "*"): + continue + anymatch = [1 for p in pattern.split("|") if fnmatch(filebase, p)] if anymatch: ofmts.remove(fmt) ofmts.insert(0, fmt) return ofmts - def parseLines(self, lines): """Detect format and create Structure instance from a list of lines. Set format attribute to the detected file format. @@ -66,29 +69,26 @@ def parseLines(self, lines): """ return self._wrapParseMethod("parseLines", lines) - def parse(self, s): """Detect format and create Structure instance from a string. Set format attribute to the detected file format. Return Structure object or raise StructureFormatError exception. """ - return self._wrapParseMethod('parse', s) - + return self._wrapParseMethod("parse", s) def parseFile(self, filename): - '''Detect format and create Structure instance from an existing file. + """Detect format and create Structure instance from an existing file. Set format attribute to the detected file format. filename -- path to structure file Return Structure object. Raise StructureFormatError or IOError. - ''' + """ self.filename = filename return self._wrapParseMethod("parseFile", filename) - def _wrapParseMethod(self, method, *args, **kwargs): """A helper evaluator method. Try the specified parse method with each registered structure parser and return the first successful @@ -99,6 +99,7 @@ def _wrapParseMethod(self, method, *args, **kwargs): Return Structure instance, or raise StructureFormatError. """ from diffpy.structure.parsers import getParser + ofmts = self._getOrderedFormats() stru = None # try all parsers in sequence @@ -115,16 +116,19 @@ def _wrapParseMethod(self, method, *args, **kwargs): except NotImplementedError: pass if stru is None: - emsg = "\n".join([ - "Unknown or invalid structure format.", - "Errors per each tested structure format:"] + parsers_emsgs) + emsg = "\n".join( + ["Unknown or invalid structure format.", "Errors per each tested structure format:"] + + parsers_emsgs + ) raise StructureFormatError(emsg) self.__dict__.update(p.__dict__) return stru + # End of class P_auto # Routines ------------------------------------------------------------------- + def getParser(**kw): return P_auto(**kw) diff --git a/src/diffpy/structure/parsers/p_cif.py b/src/diffpy/structure/parsers/p_cif.py index f0d2bc08..fe87865c 100644 --- a/src/diffpy/structure/parsers/p_cif.py +++ b/src/diffpy/structure/parsers/p_cif.py @@ -18,18 +18,19 @@ http://www.iucr.org/iucr-top/cif/home.html """ -import sys import re +import sys from contextlib import contextmanager + import numpy import six -from diffpy.structure import Structure, Lattice, Atom -from diffpy.structure import StructureFormatError +from diffpy.structure import Atom, Lattice, Structure, StructureFormatError from diffpy.structure.parsers import StructureParser # ---------------------------------------------------------------------------- + class P_cif(StructureParser): """Simple parser for CIF structure format. Reads Structure from the first block containing _atom_site_label key. @@ -64,42 +65,46 @@ class P_cif(StructureParser): # dictionary set of class methods for translating CIF values # to Atom attributes - _atom_setters = dict.fromkeys(( - '_tr_ignore', - '_tr_atom_site_label', - '_tr_atom_site_type_symbol', - '_tr_atom_site_fract_x', - '_tr_atom_site_fract_y', - '_tr_atom_site_fract_z', - '_tr_atom_site_cartn_x', - '_tr_atom_site_cartn_y', - '_tr_atom_site_cartn_z', - '_tr_atom_site_U_iso_or_equiv', - '_tr_atom_site_B_iso_or_equiv', - '_tr_atom_site_adp_type', '_tr_atom_site_thermal_displace_type', - '_tr_atom_site_occupancy', - '_tr_atom_site_aniso_U_11', - '_tr_atom_site_aniso_U_22', - '_tr_atom_site_aniso_U_33', - '_tr_atom_site_aniso_U_12', - '_tr_atom_site_aniso_U_13', - '_tr_atom_site_aniso_U_23', - '_tr_atom_site_aniso_B_11', - '_tr_atom_site_aniso_B_22', - '_tr_atom_site_aniso_B_33', - '_tr_atom_site_aniso_B_12', - '_tr_atom_site_aniso_B_13', - '_tr_atom_site_aniso_B_23', - )) + _atom_setters = dict.fromkeys( + ( + "_tr_ignore", + "_tr_atom_site_label", + "_tr_atom_site_type_symbol", + "_tr_atom_site_fract_x", + "_tr_atom_site_fract_y", + "_tr_atom_site_fract_z", + "_tr_atom_site_cartn_x", + "_tr_atom_site_cartn_y", + "_tr_atom_site_cartn_z", + "_tr_atom_site_U_iso_or_equiv", + "_tr_atom_site_B_iso_or_equiv", + "_tr_atom_site_adp_type", + "_tr_atom_site_thermal_displace_type", + "_tr_atom_site_occupancy", + "_tr_atom_site_aniso_U_11", + "_tr_atom_site_aniso_U_22", + "_tr_atom_site_aniso_U_33", + "_tr_atom_site_aniso_U_12", + "_tr_atom_site_aniso_U_13", + "_tr_atom_site_aniso_U_23", + "_tr_atom_site_aniso_B_11", + "_tr_atom_site_aniso_B_22", + "_tr_atom_site_aniso_B_33", + "_tr_atom_site_aniso_B_12", + "_tr_atom_site_aniso_B_13", + "_tr_atom_site_aniso_B_23", + ) + ) # make _atom_setters case insensitive for k in list(_atom_setters.keys()): _atom_setters[k] = _atom_setters[k.lower()] = k del k - BtoU = 1.0/(8 * numpy.pi**2) + BtoU = 1.0 / (8 * numpy.pi**2) def _tr_ignore(a, value): return + _tr_ignore = staticmethod(_tr_ignore) def _tr_atom_site_label(a, value): @@ -107,107 +112,130 @@ def _tr_atom_site_label(a, value): # set element when not specified by _atom_site_type_symbol if not a.element: P_cif._tr_atom_site_type_symbol(a, value) + _tr_atom_site_label = staticmethod(_tr_atom_site_label) # 3 regexp groups for nucleon number, atom symbol, and oxidation state - _psymb = re.compile(r'(\d+-)?([a-zA-Z]+)(\d[+-])?') + _psymb = re.compile(r"(\d+-)?([a-zA-Z]+)(\d[+-])?") def _tr_atom_site_type_symbol(a, value): rx = P_cif._psymb.match(value) smbl = rx and rx.group(0) or value smbl = str(smbl) a.element = smbl[:1].upper() + smbl[1:].lower() + _tr_atom_site_type_symbol = staticmethod(_tr_atom_site_type_symbol) def _tr_atom_site_fract_x(a, value): a.xyz[0] = leading_float(value) + _tr_atom_site_fract_x = staticmethod(_tr_atom_site_fract_x) def _tr_atom_site_fract_y(a, value): a.xyz[1] = leading_float(value) + _tr_atom_site_fract_y = staticmethod(_tr_atom_site_fract_y) def _tr_atom_site_fract_z(a, value): a.xyz[2] = leading_float(value) + _tr_atom_site_fract_z = staticmethod(_tr_atom_site_fract_z) def _tr_atom_site_cartn_x(a, value): a.xyz_cartn[0] = leading_float(value) + _tr_atom_site_cartn_x = staticmethod(_tr_atom_site_cartn_x) def _tr_atom_site_cartn_y(a, value): a.xyz_cartn[1] = leading_float(value) + _tr_atom_site_cartn_y = staticmethod(_tr_atom_site_cartn_y) def _tr_atom_site_cartn_z(a, value): a.xyz_cartn[2] = leading_float(value) + _tr_atom_site_cartn_z = staticmethod(_tr_atom_site_cartn_z) def _tr_atom_site_U_iso_or_equiv(a, value): a.Uisoequiv = leading_float(value) + _tr_atom_site_U_iso_or_equiv = staticmethod(_tr_atom_site_U_iso_or_equiv) def _tr_atom_site_B_iso_or_equiv(a, value): a.Uisoequiv = P_cif.BtoU * leading_float(value) + _tr_atom_site_B_iso_or_equiv = staticmethod(_tr_atom_site_B_iso_or_equiv) def _tr_atom_site_adp_type(a, value): a.anisotropy = value not in ("Uiso", "Biso") + _tr_atom_site_adp_type = staticmethod(_tr_atom_site_adp_type) _tr_atom_site_thermal_displace_type = _tr_atom_site_adp_type def _tr_atom_site_occupancy(a, value): a.occupancy = leading_float(value, 1.0) + _tr_atom_site_occupancy = staticmethod(_tr_atom_site_occupancy) def _tr_atom_site_aniso_U_11(a, value): a.U11 = leading_float(value) + _tr_atom_site_aniso_U_11 = staticmethod(_tr_atom_site_aniso_U_11) def _tr_atom_site_aniso_U_22(a, value): a.U22 = leading_float(value) + _tr_atom_site_aniso_U_22 = staticmethod(_tr_atom_site_aniso_U_22) def _tr_atom_site_aniso_U_33(a, value): a.U33 = leading_float(value) + _tr_atom_site_aniso_U_33 = staticmethod(_tr_atom_site_aniso_U_33) def _tr_atom_site_aniso_U_12(a, value): a.U12 = leading_float(value) + _tr_atom_site_aniso_U_12 = staticmethod(_tr_atom_site_aniso_U_12) def _tr_atom_site_aniso_U_13(a, value): a.U13 = leading_float(value) + _tr_atom_site_aniso_U_13 = staticmethod(_tr_atom_site_aniso_U_13) def _tr_atom_site_aniso_U_23(a, value): a.U23 = leading_float(value) + _tr_atom_site_aniso_U_23 = staticmethod(_tr_atom_site_aniso_U_23) def _tr_atom_site_aniso_B_11(a, value): a.U11 = P_cif.BtoU * leading_float(value) + _tr_atom_site_aniso_B_11 = staticmethod(_tr_atom_site_aniso_B_11) def _tr_atom_site_aniso_B_22(a, value): a.U22 = P_cif.BtoU * leading_float(value) + _tr_atom_site_aniso_B_22 = staticmethod(_tr_atom_site_aniso_B_22) def _tr_atom_site_aniso_B_33(a, value): a.U33 = P_cif.BtoU * leading_float(value) + _tr_atom_site_aniso_B_33 = staticmethod(_tr_atom_site_aniso_B_33) def _tr_atom_site_aniso_B_12(a, value): a.U12 = P_cif.BtoU * leading_float(value) + _tr_atom_site_aniso_B_12 = staticmethod(_tr_atom_site_aniso_B_12) def _tr_atom_site_aniso_B_13(a, value): a.U13 = P_cif.BtoU * leading_float(value) + _tr_atom_site_aniso_B_13 = staticmethod(_tr_atom_site_aniso_B_13) def _tr_atom_site_aniso_B_23(a, value): a.U23 = P_cif.BtoU * leading_float(value) - _tr_atom_site_aniso_B_23 = staticmethod(_tr_atom_site_aniso_B_23) + _tr_atom_site_aniso_B_23 = staticmethod(_tr_atom_site_aniso_B_23) def _get_atom_setters(cifloop): """Find translators of CifLoop items to data in Atom instance. @@ -220,10 +248,11 @@ def _get_atom_setters(cifloop): rv = [] for p in cifloop.keys(): lcname = "_tr" + p.lower() - fncname = P_cif._atom_setters.get(lcname, '_tr_ignore') + fncname = P_cif._atom_setters.get(lcname, "_tr_ignore") f = getattr(P_cif, fncname) rv.append(f) return rv + _get_atom_setters = staticmethod(_get_atom_setters) # normal methods --------------------------------------------------------- @@ -247,19 +276,17 @@ def __init__(self, eps=None): self.cif_sgname = None pass - def parse(self, s): """Create Structure instance from a string in CIF format. Return Structure instance or raise StructureFormatError. """ self.ciffile = None - self.filename = '' + self.filename = "" fp = six.StringIO(s) rv = self._parseCifDataSource(fp) return rv - def parseLines(self, lines): """Parse list of lines in CIF format. @@ -267,10 +294,9 @@ def parseLines(self, lines): Return Structure instance or raise StructureFormatError. """ - s = "\n".join(lines) + '\n' + s = "\n".join(lines) + "\n" return self.parse(s) - def parseFile(self, filename): """Create Structure from an existing CIF file. @@ -285,7 +311,6 @@ def parseFile(self, filename): # all good here return rv - def _parseCifDataSource(self, datasource): """\ Open and process CIF data from the specified `datasource`. @@ -308,12 +333,13 @@ def _parseCifDataSource(self, datasource): When the data do not constitute a valid CIF format. """ from CifFile import CifFile, StarError + self.stru = None try: with _suppressCifParserOutput(): # Use `grammar` option to digest values with curly-brackets. # Ref: https://bitbucket.org/jamesrhester/pycifrw/issues/19 - self.ciffile = CifFile(datasource, grammar='auto') + self.ciffile = CifFile(datasource, grammar="auto") for blockname in self.ciffile.keys(): self._parseCifBlock(blockname) # stop after reading the first structure @@ -326,7 +352,6 @@ def _parseCifDataSource(self, datasource): six.reraise(StructureFormatError, e, exc_traceback) return self.stru - def _parseCifBlock(self, blockname): """Translate CIF file block, skip blocks without _atom_site_label. Updates data members stru, eau. @@ -336,7 +361,8 @@ def _parseCifBlock(self, blockname): No return value. """ block = self.ciffile[blockname] - if '_atom_site_label' not in block: return + if "_atom_site_label" not in block: + return # here block contains structure, initialize output data self.stru = Structure() self.labelindex.clear() @@ -348,7 +374,6 @@ def _parseCifBlock(self, blockname): self._parse_space_group_symop_operation_xyz(block) return - def _parse_lattice(self, block): """Obtain lattice parameters from a CifBlock. This method updates self.stru.lattice. @@ -357,16 +382,17 @@ def _parse_lattice(self, block): No return value. """ - if '_cell_length_a' not in block: return + if "_cell_length_a" not in block: + return # obtain lattice parameters try: latpars = ( - leading_float(block['_cell_length_a']), - leading_float(block['_cell_length_b']), - leading_float(block['_cell_length_c']), - leading_float(block['_cell_angle_alpha']), - leading_float(block['_cell_angle_beta']), - leading_float(block['_cell_angle_gamma']), + leading_float(block["_cell_length_a"]), + leading_float(block["_cell_length_b"]), + leading_float(block["_cell_length_c"]), + leading_float(block["_cell_angle_alpha"]), + leading_float(block["_cell_angle_beta"]), + leading_float(block["_cell_angle_gamma"]), ) except KeyError as err: exc_type, exc_value, exc_traceback = sys.exc_info() @@ -376,7 +402,6 @@ def _parse_lattice(self, block): self.stru.lattice = Lattice(*latpars) return - def _parse_atom_site_label(self, block): """Obtain atoms in asymmetric unit from a CifBlock. This method inserts Atom instances to self.stru and @@ -387,19 +412,20 @@ def _parse_atom_site_label(self, block): No return value. """ # process _atom_site_label - atom_site_loop = block.GetLoop('_atom_site_label') - does_adp_type = ('_atom_site_adp_type' in atom_site_loop or - '_atom_site_thermal_displace_type' in atom_site_loop) + atom_site_loop = block.GetLoop("_atom_site_label") + does_adp_type = ( + "_atom_site_adp_type" in atom_site_loop or "_atom_site_thermal_displace_type" in atom_site_loop + ) # get a list of setters for atom_site values prop_setters = P_cif._get_atom_setters(atom_site_loop) # index of the _atom_site_label item for the labelindex dictionary - ilb = atom_site_loop.keys().index('_atom_site_label') + ilb = atom_site_loop.keys().index("_atom_site_label") # loop through the values and pass them to the setters sitedatalist = zip(*atom_site_loop.values()) for values in sitedatalist: curlabel = values[ilb] # skip entries that have invalid label - if curlabel == '?': + if curlabel == "?": continue self.labelindex[curlabel] = len(self.stru) self.stru.addNewAtom() @@ -410,7 +436,6 @@ def _parse_atom_site_label(self, block): self.anisotropy[curlabel] = a.anisotropy return - def _parse_atom_site_aniso_label(self, block): """Obtain value of anisotropic thermal displacements from a CifBlock. This method updates U members of Atom instances in self.stru. @@ -420,17 +445,18 @@ def _parse_atom_site_aniso_label(self, block): No return value. """ - if '_atom_site_aniso_label' not in block: return + if "_atom_site_aniso_label" not in block: + return # something to do here: - adp_loop = block.GetLoop('_atom_site_aniso_label') + adp_loop = block.GetLoop("_atom_site_aniso_label") # index of the _atom_site_label column - ilb = adp_loop.keys().index('_atom_site_aniso_label') + ilb = adp_loop.keys().index("_atom_site_aniso_label") # get a list of setters for this loop prop_setters = P_cif._get_atom_setters(adp_loop) sitedatalist = zip(*adp_loop.values()) for values in sitedatalist: lb = values[ilb] - if lb == '?': + if lb == "?": break idx = self.labelindex[lb] a = self.stru[idx] @@ -441,7 +467,6 @@ def _parse_atom_site_aniso_label(self, block): fset(a, val) return - def _parse_space_group_symop_operation_xyz(self, block): """Process symmetry operations from a CifBlock. The method updates spacegroup and eau data according to symmetry @@ -452,12 +477,10 @@ def _parse_space_group_symop_operation_xyz(self, block): No return value. """ - from diffpy.structure.spacegroups import IsSpaceGroupIdentifier - from diffpy.structure.spacegroups import SpaceGroup, GetSpaceGroup - from diffpy.structure.spacegroups import FindSpaceGroup + from diffpy.structure.spacegroups import FindSpaceGroup, GetSpaceGroup, IsSpaceGroupIdentifier, SpaceGroup + self.asymmetric_unit = list(self.stru) - sym_synonyms = ('_space_group_symop_operation_xyz', - '_symmetry_equiv_pos_as_xyz') + sym_synonyms = ("_space_group_symop_operation_xyz", "_symmetry_equiv_pos_as_xyz") sym_loop_name = [n for n in sym_synonyms if n in block] # recover explicit list of symmetry operations symop_list = [] @@ -469,15 +492,14 @@ def _parse_space_group_symop_operation_xyz(self, block): opcif = getSymOp(eqxyz) symop_list.append(opcif) # determine space group number - sg_nameHall = (block.get('_space_group_name_Hall', '') or - block.get('_symmetry_space_group_name_Hall', '')) - sg_nameHM = (block.get('_space_group_name_H-M_alt', '') or - block.get('_space_group_name_H-M_ref', '') or - block.get('_symmetry_space_group_name_H-M', '')) - self.cif_sgname = (sg_nameHall or sg_nameHM or None) - sgid = (block.get('_space_group_IT_number', '') or - block.get('_symmetry_Int_Tables_number', '') or - sg_nameHM) + sg_nameHall = block.get("_space_group_name_Hall", "") or block.get("_symmetry_space_group_name_Hall", "") + sg_nameHM = ( + block.get("_space_group_name_H-M_alt", "") + or block.get("_space_group_name_H-M_ref", "") + or block.get("_symmetry_space_group_name_H-M", "") + ) + self.cif_sgname = sg_nameHall or sg_nameHM or None + sgid = block.get("_space_group_IT_number", "") or block.get("_symmetry_Int_Tables_number", "") or sg_nameHM self.spacegroup = None # try to reuse existing space group from symmetry operations if symop_list: @@ -491,22 +513,19 @@ def _parse_space_group_symop_operation_xyz(self, block): # define new spacegroup when symmetry operations were listed, but # there is no match to an existing definition if symop_list and self.spacegroup is None: - new_short_name = "CIF " + (sg_nameHall or 'data') + new_short_name = "CIF " + (sg_nameHall or "data") new_crystal_system = ( - block.get('_space_group_crystal_system') or - block.get('_symmetry_cell_setting') or - 'TRICLINIC' ).upper() + block.get("_space_group_crystal_system") or block.get("_symmetry_cell_setting") or "TRICLINIC" + ).upper() self.spacegroup = SpaceGroup( - short_name=new_short_name, - crystal_system=new_crystal_system, - symop_list=symop_list) + short_name=new_short_name, crystal_system=new_crystal_system, symop_list=symop_list + ) if self.spacegroup is None: emsg = "CIF file has unknown space group identifier {!r}." raise StructureFormatError(emsg.format(sgid)) self._expandAsymmetricUnit(block) return - def _expandAsymmetricUnit(self, block): """Perform symmetry expansion of self.stru using self.spacegroup. @@ -518,10 +537,10 @@ def _expandAsymmetricUnit(self, block): The top-level block containing crystal structure data. """ from diffpy.structure.symmetryutilities import ExpandAsymmetricUnit + corepos = [a.xyz for a in self.stru] coreUijs = [a.U for a in self.stru] - self.eau = ExpandAsymmetricUnit(self.spacegroup, corepos, coreUijs, - eps=self.eps) + self.eau = ExpandAsymmetricUnit(self.spacegroup, corepos, coreUijs, eps=self.eps) # setup anisotropy according to symmetry requirements # unless it was already explicitly set for ca, uisotropy in zip(self.stru, self.eau.Uisotropy): @@ -531,12 +550,12 @@ def _expandAsymmetricUnit(self, block): # build a nested list of new atoms: newatoms = [] for i, ca in enumerate(self.stru): - eca = [] # expanded core atom + eca = [] # expanded core atom for j in range(self.eau.multiplicity[i]): a = Atom(ca) a.xyz = self.eau.expandedpos[i][j] if j > 0: - a.label += '_' + str(j + 1) + a.label += "_" + str(j + 1) if a.anisotropy: a.U = self.eau.expandedUijs[i][j] eca.append(a) @@ -553,87 +572,115 @@ def toLines(self, stru): Return list of strings. """ import time + lines = [] # may be replaced with filtered Structure.title # for now, we can add the title as a comment if stru.title.strip() != "": - title_lines = stru.title.split('\n') - lines.extend([ "# " + line.strip() for line in title_lines ]) + title_lines = stru.title.split("\n") + lines.extend(["# " + line.strip() for line in title_lines]) lines.append("") lines.append("data_3D") - iso_date = "%04i-%02i-%02i" % time.gmtime()[:3] - lines.extend([ - "%-31s %s" % ("_audit_creation_date", iso_date), - "%-31s %s" % ("_audit_creation_method", "P_cif.py"), - "", - "%-31s %s" % ("_symmetry_space_group_name_H-M", "'P1'"), - "%-31s %s" % ("_symmetry_Int_Tables_number", "1"), - "%-31s %s" % ("_symmetry_cell_setting", "triclinic"), - "" ]) + iso_date = "%04i-%02i-%02i" % time.gmtime()[:3] + lines.extend( + [ + "%-31s %s" % ("_audit_creation_date", iso_date), + "%-31s %s" % ("_audit_creation_method", "P_cif.py"), + "", + "%-31s %s" % ("_symmetry_space_group_name_H-M", "'P1'"), + "%-31s %s" % ("_symmetry_Int_Tables_number", "1"), + "%-31s %s" % ("_symmetry_cell_setting", "triclinic"), + "", + ] + ) # there should be no need to specify equivalent positions for P1 # _symmetry_equiv_posi_as_xyz x,y,z - lines.extend([ - "%-31s %.6g" % ("_cell_length_a", stru.lattice.a), - "%-31s %.6g" % ("_cell_length_b", stru.lattice.b), - "%-31s %.6g" % ("_cell_length_c", stru.lattice.c), - "%-31s %.6g" % ("_cell_angle_alpha", stru.lattice.alpha), - "%-31s %.6g" % ("_cell_angle_beta", stru.lattice.beta), - "%-31s %.6g" % ("_cell_angle_gamma", stru.lattice.gamma), - "" ]) + lines.extend( + [ + "%-31s %.6g" % ("_cell_length_a", stru.lattice.a), + "%-31s %.6g" % ("_cell_length_b", stru.lattice.b), + "%-31s %.6g" % ("_cell_length_c", stru.lattice.c), + "%-31s %.6g" % ("_cell_angle_alpha", stru.lattice.alpha), + "%-31s %.6g" % ("_cell_angle_beta", stru.lattice.beta), + "%-31s %.6g" % ("_cell_angle_gamma", stru.lattice.gamma), + "", + ] + ) # build a list of site labels and adp (displacement factor) types element_count = {} a_site_label = [] a_adp_type = [] for a in stru: - cnt = element_count[a.element] = element_count.get(a.element,0)+1 - a_site_label.append( "%s%i" % (a.element, cnt) ) - if numpy.all(a.U == a.U[0,0]*numpy.identity(3)): + cnt = element_count[a.element] = element_count.get(a.element, 0) + 1 + a_site_label.append("%s%i" % (a.element, cnt)) + if numpy.all(a.U == a.U[0, 0] * numpy.identity(3)): a_adp_type.append("Uiso") else: a_adp_type.append("Uani") # list all atoms - lines.extend([ - "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" ]) + lines.extend( + [ + "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", + ] + ) for i in range(len(stru)): a = stru[i] line = " %-5s %-3s %11.6f %11.6f %11.6f %11.6f %-5s %.4f" % ( - a_site_label[i], a.element, a.xyz[0], a.xyz[1], a.xyz[2], - a.Uisoequiv, a_adp_type[i], a.occupancy ) + a_site_label[i], + a.element, + a.xyz[0], + a.xyz[1], + a.xyz[2], + a.Uisoequiv, + a_adp_type[i], + a.occupancy, + ) lines.append(line) # find anisotropic atoms - idx_aniso = [ i for i in range(len(stru)) if a_adp_type[i] != "Uiso" ] + idx_aniso = [i for i in range(len(stru)) if a_adp_type[i] != "Uiso"] if idx_aniso != []: - lines.extend([ - "loop_", - " _atom_site_aniso_label", - " _atom_site_aniso_U_11", - " _atom_site_aniso_U_22", - " _atom_site_aniso_U_33", - " _atom_site_aniso_U_12", - " _atom_site_aniso_U_13", - " _atom_site_aniso_U_23" ]) + lines.extend( + [ + "loop_", + " _atom_site_aniso_label", + " _atom_site_aniso_U_11", + " _atom_site_aniso_U_22", + " _atom_site_aniso_U_33", + " _atom_site_aniso_U_12", + " _atom_site_aniso_U_13", + " _atom_site_aniso_U_23", + ] + ) for i in idx_aniso: a = stru[i] line = " %-5s %9.6f %9.6f %9.6f %9.6f %9.6f %9.6f" % ( - a_site_label[i], a.U[0,0], a.U[1,1], a.U[2,2], - a.U[0,1], a.U[0,2], a.U[1,2] ) + a_site_label[i], + a.U[0, 0], + a.U[1, 1], + a.U[2, 2], + a.U[0, 1], + a.U[0, 2], + a.U[1, 2], + ) lines.append(line) return lines + # End of class P_cif # Routines ------------------------------------------------------------------- # constant regular expression for leading_float() -rx_float = re.compile(r'[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?') +rx_float = re.compile(r"[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?") + def leading_float(s, d=0.0): """Extract the first float from a string and ignore trailing characters. @@ -662,7 +709,7 @@ def leading_float(s, d=0.0): mx = rx_float.match(sbare) if mx: rv = float(mx.group()) - elif sbare == '.' or sbare == '?': + elif sbare == "." or sbare == "?": # CIF files may contain "." or "?" for unknown values rv = d else: @@ -672,16 +719,17 @@ def leading_float(s, d=0.0): # helper dictionary for getSymOp() symvec = { - 'x' : numpy.array([1, 0, 0], dtype=float), - 'y' : numpy.array([0, 1, 0], dtype=float), - 'z' : numpy.array([0, 0, 1], dtype=float), - '-x' : numpy.array([-1, 0, 0], dtype=float), - '-y' : numpy.array([0, -1, 0], dtype=float), - '-z' : numpy.array([0, 0, -1], dtype=float), + "x": numpy.array([1, 0, 0], dtype=float), + "y": numpy.array([0, 1, 0], dtype=float), + "z": numpy.array([0, 0, 1], dtype=float), + "-x": numpy.array([-1, 0, 0], dtype=float), + "-y": numpy.array([0, -1, 0], dtype=float), + "-z": numpy.array([0, 0, -1], dtype=float), } -symvec['+x'] = symvec['x'] -symvec['+y'] = symvec['y'] -symvec['+z'] = symvec['z'] +symvec["+x"] = symvec["x"] +symvec["+y"] = symvec["y"] +symvec["+z"] = symvec["z"] + def getSymOp(s): """Create SpaceGroups.SymOp instance from a string. @@ -691,20 +739,22 @@ def getSymOp(s): Return instance of SymOp. """ from diffpy.structure.spacegroups import SymOp - snoblanks = s.replace(' ','') - eqlist = snoblanks.split(',') - R = numpy.zeros((3,3), dtype=float) + + snoblanks = s.replace(" ", "") + eqlist = snoblanks.split(",") + R = numpy.zeros((3, 3), dtype=float) t = numpy.zeros(3, dtype=float) for i in (0, 1, 2): - eqparts = re.split('(?i)([+-]?[xyz])', eqlist[i]) + eqparts = re.split("(?i)([+-]?[xyz])", eqlist[i]) for Rpart in eqparts[1::2]: - R[i,:] += symvec[Rpart.lower()] + R[i, :] += symvec[Rpart.lower()] for tpart in eqparts[::2]: - t[i] += eval('1.0*%s+0' % tpart) + t[i] += eval("1.0*%s+0" % tpart) t -= numpy.floor(t) rv = SymOp(R, t) return rv + def getParser(eps=None): """Return new parser object for CIF structure format. @@ -713,17 +763,20 @@ def getParser(eps=None): """ return P_cif(eps=eps) + # Local Helpers -------------------------------------------------------------- + @contextmanager def _suppressCifParserOutput(): """\ Context manager which suppresses diagnostic messages from CIF parser. """ from CifFile import yapps3_compiled_rt + print_error = yapps3_compiled_rt.print_error # replace the print_error function with no-operation - yapps3_compiled_rt.print_error = lambda *a, **kw : None + yapps3_compiled_rt.print_error = lambda *a, **kw: None try: yield print_error finally: diff --git a/src/diffpy/structure/parsers/p_discus.py b/src/diffpy/structure/parsers/p_discus.py index d0334736..0d8014f9 100644 --- a/src/diffpy/structure/parsers/p_discus.py +++ b/src/diffpy/structure/parsers/p_discus.py @@ -18,12 +18,13 @@ import sys from functools import reduce + import six -from diffpy.structure import PDFFitStructure, Lattice -from diffpy.structure import StructureFormatError +from diffpy.structure import Lattice, PDFFitStructure, StructureFormatError from diffpy.structure.parsers import StructureParser + class P_discus(StructureParser): """Parser for DISCUS structure format. The parser chokes on molecule and generator records. @@ -42,7 +43,6 @@ def __init__(self): self.ncell_read = False return - def parseLines(self, lines): """Parse list of lines in DISCUS format. @@ -52,22 +52,24 @@ def parseLines(self, lines): ilines = self._linesIterator() self.stru = PDFFitStructure() record_parsers = { - "cell" : self._parse_cell, - "format" : self._parse_format, - "generator" : self._parse_not_implemented, - "molecule" : self._parse_not_implemented, - "ncell" : self._parse_ncell, - "spcgr" : self._parse_spcgr, - "symmetry" : self._parse_not_implemented, - "title" : self._parse_title, - "shape" : self._parse_shape, + "cell": self._parse_cell, + "format": self._parse_format, + "generator": self._parse_not_implemented, + "molecule": self._parse_not_implemented, + "ncell": self._parse_ncell, + "spcgr": self._parse_spcgr, + "symmetry": self._parse_not_implemented, + "title": self._parse_title, + "shape": self._parse_shape, } try: # parse header for self.line in ilines: words = self.line.split() - if not words or words[0][0] == '#': continue - if words[0] == 'atoms': break + if not words or words[0][0] == "#": + continue + if words[0] == "atoms": + break rp = record_parsers.get(words[0], self._parse_unknown_record) rp(words) # check if cell has been defined @@ -76,24 +78,23 @@ def parseLines(self, lines): raise StructureFormatError(emsg) # parse atoms for self.line in ilines: - words = self.line.replace(',', ' ').split() - if not words or words[0][0] == '#': continue + words = self.line.replace(",", " ").split() + if not words or words[0][0] == "#": + continue self._parse_atom(words) # self consistency check - exp_natoms = reduce(lambda x,y : x*y, self.stru.pdffit['ncell']) + exp_natoms = reduce(lambda x, y: x * y, self.stru.pdffit["ncell"]) # only check if ncell record exists if self.ncell_read and exp_natoms != len(self.stru): - emsg = 'Expected %d atoms, read %d.' % \ - (exp_natoms, len(self.stru)) + emsg = "Expected %d atoms, read %d." % (exp_natoms, len(self.stru)) raise StructureFormatError(emsg) # take care of superlattice - if self.stru.pdffit['ncell'][:3] != [1,1,1]: + if self.stru.pdffit["ncell"][:3] != [1, 1, 1]: latpars = list(self.stru.lattice.abcABG()) - superlatpars = [ latpars[i]*self.stru.pdffit['ncell'][i] - for i in range(3) ] + latpars[3:] + superlatpars = [latpars[i] * self.stru.pdffit["ncell"][i] for i in range(3)] + latpars[3:] superlattice = Lattice(*superlatpars) self.stru.placeInLattice(superlattice) - self.stru.pdffit['ncell'] = [1, 1, 1, exp_natoms] + self.stru.pdffit["ncell"] = [1, 1, 1, exp_natoms] except (ValueError, IndexError): exc_type, exc_value, exc_traceback = sys.exc_info() emsg = "%d: file is not in DISCUS format" % self.nl @@ -101,7 +102,6 @@ def parseLines(self, lines): six.reraise(StructureFormatError, e, exc_traceback) return self.stru - def toLines(self, stru): """Convert Structure stru to a list of lines in DISCUS format. Return list of strings. @@ -118,29 +118,27 @@ def toLines(self, stru): # here we can start self.lines = lines = [] lines.append(("title " + self.stru.title).strip()) - lines.append( "spcgr " + stru_pdffit["spcgr"] ) - if stru_pdffit.get('spdiameter', 0.0) > 0.0: - line = 'shape sphere, %g' % stru_pdffit['spdiameter'] + lines.append("spcgr " + stru_pdffit["spcgr"]) + if stru_pdffit.get("spdiameter", 0.0) > 0.0: + line = "shape sphere, %g" % stru_pdffit["spdiameter"] lines.append(line) - if stru_pdffit.get('stepcut', 0.0) > 0.0: - line = 'shape stepcut, %g' % stru_pdffit['stepcut'] + if stru_pdffit.get("stepcut", 0.0) > 0.0: + line = "shape stepcut, %g" % stru_pdffit["stepcut"] lines.append(line) - lines.append( "cell %9.6f, %9.6f, %9.6f, %9.6f, %9.6f, %9.6f" % - self.stru.lattice.abcABG() ) - lines.append( "ncell %9i, %9i, %9i, %9i" % (1, 1, 1, len(self.stru)) ) - lines.append( "atoms" ) + lines.append("cell %9.6f, %9.6f, %9.6f, %9.6f, %9.6f, %9.6f" % self.stru.lattice.abcABG()) + lines.append("ncell %9i, %9i, %9i, %9i" % (1, 1, 1, len(self.stru))) + lines.append("atoms") for a in self.stru: - lines.append( "%-4s %17.8f %17.8f %17.8f %12.4f" % ( - a.element.upper(), a.xyz[0], a.xyz[1], a.xyz[2], a.Bisoequiv)) + lines.append( + "%-4s %17.8f %17.8f %17.8f %12.4f" % (a.element.upper(), a.xyz[0], a.xyz[1], a.xyz[2], a.Bisoequiv) + ) return lines - def _linesIterator(self): - """Iterator over self.lines, which increments self.nl - """ + """Iterator over self.lines, which increments self.nl""" # ignore trailing empty lines stop = len(self.lines) - while stop > 0 and self.lines[stop-1].strip() == "": + while stop > 0 and self.lines[stop - 1].strip() == "": stop -= 1 self.nl = 0 # read header of PDFFit file @@ -149,76 +147,61 @@ def _linesIterator(self): yield self.line pass - def _parse_cell(self, words): - """Process the cell record from DISCUS structure file. - """ + """Process the cell record from DISCUS structure file.""" # split again on spaces or commas - words = self.line.replace(',', ' ').split() - latpars = [ float(w) for w in words[1:7] ] + words = self.line.replace(",", " ").split() + latpars = [float(w) for w in words[1:7]] try: self.stru.lattice.setLatPar(*latpars) except ZeroDivisionError: - emsg = "%d: Invalid lattice parameters - zero cell volume" % \ - self.nl + emsg = "%d: Invalid lattice parameters - zero cell volume" % self.nl raise StructureFormatError(emsg) self.cell_read = True return - def _parse_format(self, words): - """Process the format record from DISCUS structure file. - """ - if words[1] == 'pdffit': + """Process the format record from DISCUS structure file.""" + if words[1] == "pdffit": emsg = "%d: file is not in DISCUS format" % self.nl raise StructureFormatError(emsg) return - def _parse_ncell(self, words): - """Process the ncell record from DISCUS structure file. - """ + """Process the ncell record from DISCUS structure file.""" # split again on spaces or commas - words = self.line.replace(',', ' ').split() - self.stru.pdffit['ncell'] = [ int(w) for w in words[1:5] ] + words = self.line.replace(",", " ").split() + self.stru.pdffit["ncell"] = [int(w) for w in words[1:5]] self.ncell_read = True return - def _parse_spcgr(self, words): - """Process the spcgr record from DISCUS structure file. - """ - self.stru.pdffit['spcgr'] = ''.join(words[1:]) + """Process the spcgr record from DISCUS structure file.""" + self.stru.pdffit["spcgr"] = "".join(words[1:]) return - def _parse_title(self, words): - """Process the title record from DISCUS structure file. - """ + """Process the title record from DISCUS structure file.""" self.stru.title = self.line.lstrip()[5:].strip() return - def _parse_shape(self, words): - """Process the shape record from DISCUS structure file. - """ + """Process the shape record from DISCUS structure file.""" # strip away any commas - linefixed = " ".join(words).replace(',', ' ') + linefixed = " ".join(words).replace(",", " ") wordsfixed = linefixed.split() shapetype = wordsfixed[1] - if shapetype == 'sphere': - self.stru.pdffit['spdiameter'] = float(words[2]) - elif shapetype == 'stepcut': - self.stru.pdffit['stepcut'] = float(words[2]) + if shapetype == "sphere": + self.stru.pdffit["spdiameter"] = float(words[2]) + elif shapetype == "stepcut": + self.stru.pdffit["stepcut"] = float(words[2]) else: - emsg = 'Invalid type of particle shape correction %r' % shapetype + emsg = "Invalid type of particle shape correction %r" % shapetype raise StructureFormatError(emsg) return - def _parse_atom(self, words): - """Process atom records in DISCUS structure file. - """ + """Process atom records in DISCUS structure file.""" element = words[0][0:1].upper() + words[0][1:].lower() xyz = [float(w) for w in words[1:4]] Biso = float(words[4]) @@ -227,7 +210,6 @@ def _parse_atom(self, words): a.Bisoequiv = Biso return - def _parse_unknown_record(self, words): """Process unknown record in DISCUS structure file. Silently ignores the line and adds it to self.ignored_lines @@ -236,18 +218,18 @@ def _parse_unknown_record(self, words): self.ignored_lines.append(self.line) return - def _parse_not_implemented(self, words): """Process the unimplemented records from DISCUS structure file. Raises NotImplementedError. """ - emsg = "%d: reading of DISCUS record %r is not implemented." % \ - (self.nl, words[0]) + emsg = "%d: reading of DISCUS record %r is not implemented." % (self.nl, words[0]) raise NotImplementedError(emsg) + # End of class P_pdffit # Routines ------------------------------------------------------------------- + def getParser(): return P_discus() diff --git a/src/diffpy/structure/parsers/p_pdb.py b/src/diffpy/structure/parsers/p_pdb.py index 6e325ded..3f6574ce 100644 --- a/src/diffpy/structure/parsers/p_pdb.py +++ b/src/diffpy/structure/parsers/p_pdb.py @@ -22,14 +22,15 @@ """ import sys -import six + import numpy +import six from numpy import pi -from diffpy.structure import Structure -from diffpy.structure import StructureFormatError +from diffpy.structure import Structure, StructureFormatError from diffpy.structure.parsers import StructureParser + class P_pdb(StructureParser): """Simple parser for PDB format. The parser understands following PDB records: TITLE, CRYST1, SCALE1, @@ -43,24 +44,69 @@ class P_pdb(StructureParser): # Static data members orderOfRecords = [ - "HEADER", "OBSLTE", "TITLE", "CAVEAT", "COMPND", "SOURCE", "KEYWDS", - "EXPDTA", "AUTHOR", "REVDAT", "SPRSDE", "JRNL", "REMARK", "REMARK", - "REMARK", "REMARK", "DBREF", "SEQADV", "SEQRES", "MODRES", "HET", - "HETNAM", "HETSYN", "FORMUL", "HELIX", "SHEET", "TURN", "SSBOND", - "LINK", "HYDBND", "SLTBRG", "CISPEP", "SITE", "CRYST1", "ORIGX1", - "ORIGX2", "ORIGX3", "SCALE1", "SCALE2", "SCALE3", "MTRIX1", - "MTRIX2", "MTRIX3", "TVECT", "MODEL", "ATOM", "SIGATM", "ANISOU", - "SIGUIJ", "TER", "HETATM", "ENDMDL", "CONECT", "MASTER", "END", + "HEADER", + "OBSLTE", + "TITLE", + "CAVEAT", + "COMPND", + "SOURCE", + "KEYWDS", + "EXPDTA", + "AUTHOR", + "REVDAT", + "SPRSDE", + "JRNL", + "REMARK", + "REMARK", + "REMARK", + "REMARK", + "DBREF", + "SEQADV", + "SEQRES", + "MODRES", + "HET", + "HETNAM", + "HETSYN", + "FORMUL", + "HELIX", + "SHEET", + "TURN", + "SSBOND", + "LINK", + "HYDBND", + "SLTBRG", + "CISPEP", + "SITE", + "CRYST1", + "ORIGX1", + "ORIGX2", + "ORIGX3", + "SCALE1", + "SCALE2", + "SCALE3", + "MTRIX1", + "MTRIX2", + "MTRIX3", + "TVECT", + "MODEL", + "ATOM", + "SIGATM", + "ANISOU", + "SIGUIJ", + "TER", + "HETATM", + "ENDMDL", + "CONECT", + "MASTER", + "END", ] validRecords = dict.fromkeys(orderOfRecords) - def __init__(self): StructureParser.__init__(self) self.format = "pdb" return - def parseLines(self, lines): """Parse list of lines in PDB format. @@ -74,7 +120,8 @@ def parseLines(self, lines): for line in lines: p_nl += 1 # skip blank lines - if not line.strip(): continue + if not line.strip(): + continue # make sure line has 80 characters if len(line) < 80: line = "%-80s" % line @@ -96,23 +143,22 @@ def parseLines(self, lines): stru.lattice.setLatPar(a, b, c, alpha, beta, gamma) scale = numpy.transpose(stru.lattice.recbase) elif record == "SCALE1": - sc = numpy.zeros((3,3), dtype=float) - sc[0,:] = [float(x) for x in line[10:40].split()] + sc = numpy.zeros((3, 3), dtype=float) + sc[0, :] = [float(x) for x in line[10:40].split()] scaleU[0] = float(line[45:55]) elif record == "SCALE2": - sc[1,:] = [float(x) for x in line[10:40].split()] + sc[1, :] = [float(x) for x in line[10:40].split()] scaleU[1] = float(line[45:55]) elif record == "SCALE3": - sc[2,:] = [float(x) for x in line[10:40].split()] + sc[2, :] = [float(x) for x in line[10:40].split()] scaleU[2] = float(line[45:55]) base = numpy.transpose(numpy.linalg.inv(sc)) abcABGcryst = numpy.array(stru.lattice.abcABG()) stru.lattice.setLatBase(base) abcABGscale = numpy.array(stru.lattice.abcABG()) - reldiff = numpy.fabs(1.0 - abcABGscale/abcABGcryst) + reldiff = numpy.fabs(1.0 - abcABGscale / abcABGcryst) if not numpy.all(reldiff < 1.0e-4): - emsg = "%d: " % p_nl + \ - "SCALE and CRYST1 are not consistent." + emsg = "%d: " % p_nl + "SCALE and CRYST1 are not consistent." raise StructureFormatError(emsg) if numpy.any(scaleU != 0.0): emsg = "Origin offset not yet implemented." @@ -126,7 +172,7 @@ def parseLines(self, lines): occupancy = 1.0 try: B = float(line[60:66]) - uiso = B/(8*pi**2) + uiso = B / (8 * pi**2) except ValueError: uiso = 0.0 element = line[76:78].strip() @@ -134,8 +180,7 @@ def parseLines(self, lines): # get element from the first 2 characters of name element = line[12:14].strip() element = element[0].upper() + element[1:].lower() - stru.addNewAtom(element, - occupancy=occupancy, label=name) + stru.addNewAtom(element, occupancy=occupancy, label=name) last_atom = stru.getLastAtom() last_atom.xyz_cartn = rc last_atom.Uisoequiv = uiso @@ -148,28 +193,28 @@ def parseLines(self, lines): sigo = 0.0 try: sigB = float(line[60:66]) - sigU = numpy.identity(3)*sigB/(8*pi**2) + sigU = numpy.identity(3) * sigB / (8 * pi**2) except ValueError: - sigU = numpy.zeros((3,3), dtype=float) + sigU = numpy.zeros((3, 3), dtype=float) last_atom.sigxyz = sigxyz last_atom.sigo = sigo last_atom.sigU = sigU elif record == "ANISOU": last_atom.anisotropy = True - Uij = [ float(x)*1.0e-4 for x in line[28:70].split() ] + Uij = [float(x) * 1.0e-4 for x in line[28:70].split()] Ua = last_atom.U for i in range(3): - Ua[i,i] = Uij[i] - Ua[0,1] = Ua[1,0] = Uij[3] - Ua[0,2] = Ua[2,0] = Uij[4] - Ua[1,2] = Ua[2,1] = Uij[5] + Ua[i, i] = Uij[i] + Ua[0, 1] = Ua[1, 0] = Uij[3] + Ua[0, 2] = Ua[2, 0] = Uij[4] + Ua[1, 2] = Ua[2, 1] = Uij[5] elif record == "SIGUIJ": - sigUij = [ float(x)*1.0e-4 for x in line[28:70].split() ] + sigUij = [float(x) * 1.0e-4 for x in line[28:70].split()] for i in range(3): - last_atom.sigU[i,i] = sigUij[i] - last_atom.sigU[0,1] = last_atom.sigU[1,0] = sigUij[3] - last_atom.sigU[0,2] = last_atom.sigU[2,0] = sigUij[4] - last_atom.sigU[1,2] = last_atom.sigU[2,1] = sigUij[5] + last_atom.sigU[i, i] = sigUij[i] + last_atom.sigU[0, 1] = last_atom.sigU[1, 0] = sigUij[3] + last_atom.sigU[0, 2] = last_atom.sigU[2, 0] = sigUij[4] + last_atom.sigU[1, 2] = last_atom.sigU[2, 1] = sigUij[5] elif record in P_pdb.validRecords: pass else: @@ -182,7 +227,6 @@ def parseLines(self, lines): six.reraise(StructureFormatError, e, exc_traceback) return stru - def titleLines(self, stru): """build lines corresponding to TITLE record""" lines = [] @@ -191,28 +235,33 @@ def titleLines(self, stru): stop = len(title) # maximum length of title record is 60 if stop > 60: - stop = title.rfind(' ', 10, 60) - if stop < 0: stop = 60 + stop = title.rfind(" ", 10, 60) + if stop < 0: + stop = 60 if len(lines) == 0: continuation = " " else: - continuation = "%2i" % (len(lines)+1) - lines.append( "%-80s" % ("TITLE "+continuation+title[0:stop]) ) + continuation = "%2i" % (len(lines) + 1) + lines.append("%-80s" % ("TITLE " + continuation + title[0:stop])) title = title[stop:] return lines - def cryst1Lines(self, stru): """build lines corresponding to CRYST1 record""" lines = [] - latpar = ( stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma ) + latpar = ( + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ) if latpar != (1.0, 1.0, 1.0, 90.0, 90.0, 90.0): line = "CRYST1%9.3f%9.3f%9.3f%7.2f%7.2f%7.2f" % latpar - lines.append( "%-80s" % line ) + lines.append("%-80s" % line) return lines - def atomLines(self, stru, idx): """build ATOM records and possibly SIGATM, ANISOU or SIGUIJ records for structure stru atom number aidx @@ -222,89 +271,102 @@ def atomLines(self, stru, idx): ad = a.__dict__ rc = a.xyz_cartn B = a.Bisoequiv - atomline = ( "ATOM " + # 1-6 - "%(serial)5i " + # 7-11, 12 - "%(name)-4s" + # 13-16 - "%(altLoc)c" + # 17 - "%(resName)-3s " + # 18-20, 21 - "%(chainID)c" + # 22 - "%(resSeq)4i" + # 23-26 - "%(iCode)c " + # 27, 28-30 - "%(x)8.3f%(y)8.3f%(z)8.3f" + # 31-54 - "%(occupancy)6.2f" + # 55-60 - "%(tempFactor)6.2f " + # 61-66, 67-72 - "%(segID)-4s" + # 73-76 - "%(element)2s" + # 77-78 - "%(charge)-2s" # 79-80 - ) % { - "serial" : idx+1, - "name" : a.label or a.element, "altLoc" : " ", - "resName" : "", "chainID" : " ", "resSeq" : 1, - "iCode" : " ", "x" : rc[0], "y" : rc[1], "z" : rc[2], - "occupancy" : a.occupancy, "tempFactor" : B, "segID" : "", - "element" : a.element, "charge" : "" } + atomline = ( + "ATOM " # 1-6 + + "%(serial)5i " # 7-11, 12 + + "%(name)-4s" # 13-16 + + "%(altLoc)c" # 17 + + "%(resName)-3s " # 18-20, 21 + + "%(chainID)c" # 22 + + "%(resSeq)4i" # 23-26 + + "%(iCode)c " # 27, 28-30 + + "%(x)8.3f%(y)8.3f%(z)8.3f" # 31-54 + + "%(occupancy)6.2f" # 55-60 + + "%(tempFactor)6.2f " # 61-66, 67-72 + + "%(segID)-4s" # 73-76 + + "%(element)2s" # 77-78 + + "%(charge)-2s" # 79-80 + ) % { + "serial": idx + 1, + "name": a.label or a.element, + "altLoc": " ", + "resName": "", + "chainID": " ", + "resSeq": 1, + "iCode": " ", + "x": rc[0], + "y": rc[1], + "z": rc[2], + "occupancy": a.occupancy, + "tempFactor": B, + "segID": "", + "element": a.element, + "charge": "", + } lines.append(atomline) - isotropic = numpy.all(a.U == a.U[0,0]*numpy.identity(3)) + isotropic = numpy.all(a.U == a.U[0, 0] * numpy.identity(3)) if not isotropic: - mid = " %7i%7i%7i%7i%7i%7i " % tuple( numpy.around(1e4 * - numpy.array([ a.U[0,0], a.U[1,1], a.U[2,2], - a.U[0,1], a.U[0,2], a.U[1,2] ])) ) + mid = " %7i%7i%7i%7i%7i%7i " % tuple( + numpy.around(1e4 * numpy.array([a.U[0, 0], a.U[1, 1], a.U[2, 2], a.U[0, 1], a.U[0, 2], a.U[1, 2]])) + ) line = "ANISOU" + atomline[6:27] + mid + atomline[72:80] lines.append(line) # default values of standard deviations d_sigxyz = numpy.zeros(3, dtype=float) d_sigo = 0.0 - d_sigU = numpy.zeros((3,3), dtype=float) + d_sigU = numpy.zeros((3, 3), dtype=float) sigxyz = ad.get("sigxyz", d_sigxyz) sigo = [ad.get("sigo", d_sigo)] sigU = ad.get("sigU", d_sigU) - sigB = [8*pi**2*numpy.average( [sigU[i,i] for i in range(3)] )] - sigmas = numpy.concatenate( (sigxyz, sigo, sigB) ) + sigB = [8 * pi**2 * numpy.average([sigU[i, i] for i in range(3)])] + sigmas = numpy.concatenate((sigxyz, sigo, sigB)) # no need to print sigmas if they all round to zero - hassigmas = \ - numpy.any(numpy.fabs(sigmas) >= numpy.array(3*[5e-4]+2*[5e-3])) \ - or numpy.any(numpy.fabs(sigU) > 5.0e-5) + hassigmas = numpy.any(numpy.fabs(sigmas) >= numpy.array(3 * [5e-4] + 2 * [5e-3])) or numpy.any( + numpy.fabs(sigU) > 5.0e-5 + ) if hassigmas: mid = " %8.3f%8.3f%8.3f%6.2f%6.2f " % tuple(sigmas) line = "SIGATM" + atomline[6:27] + mid + atomline[72:80] lines.append(line) # do we need SIGUIJ record? - if not numpy.all(sigU == sigU[0,0]*numpy.identity(3)): - mid = " %7i%7i%7i%7i%7i%7i " % tuple( numpy.around(1e4 * - numpy.array([ sigU[0,0], sigU[1,1], sigU[2,2], - sigU[0,1], sigU[0,2], sigU[1,2] ])) ) + if not numpy.all(sigU == sigU[0, 0] * numpy.identity(3)): + mid = " %7i%7i%7i%7i%7i%7i " % tuple( + numpy.around( + 1e4 * numpy.array([sigU[0, 0], sigU[1, 1], sigU[2, 2], sigU[0, 1], sigU[0, 2], sigU[1, 2]]) + ) + ) line = "SIGUIJ" + atomline[6:27] + mid + atomline[72:80] lines.append(line) return lines - def toLines(self, stru): """Convert Structure stru to a list of lines in PDFFit format. Return list of strings. """ lines = [] - lines.extend( self.titleLines(stru) ) - lines.extend( self.cryst1Lines(stru) ) + lines.extend(self.titleLines(stru)) + lines.extend(self.cryst1Lines(stru)) for idx in range(len(stru)): - lines.extend( self.atomLines(stru, idx) ) - line = ( "TER " + # 1-6 - "%(serial)5i " + # 7-11, 12-17 - "%(resName)-3s " + # 18-20, 21 - "%(chainID)c" + # 22 - "%(resSeq)4i" + # 23-26 - "%(iCode)c" + # 27 - "%(blank)53s" # 28-80 - ) % { - "serial" : len(stru)+1, "resName" : "", "chainID" : " ", - "resSeq" : 1, "iCode" : " ", "blank" : " " } + lines.extend(self.atomLines(stru, idx)) + line = ( + "TER " # 1-6 + + "%(serial)5i " # 7-11, 12-17 + + "%(resName)-3s " # 18-20, 21 + + "%(chainID)c" # 22 + + "%(resSeq)4i" # 23-26 + + "%(iCode)c" # 27 + + "%(blank)53s" # 28-80 + ) % {"serial": len(stru) + 1, "resName": "", "chainID": " ", "resSeq": 1, "iCode": " ", "blank": " "} lines.append(line) lines.append("%-80s" % "END") return lines + # End of class P_pdb # Routines ------------------------------------------------------------------- + def getParser(): return P_pdb() diff --git a/src/diffpy/structure/parsers/p_pdffit.py b/src/diffpy/structure/parsers/p_pdffit.py index 0ef532d2..c01b9f05 100644 --- a/src/diffpy/structure/parsers/p_pdffit.py +++ b/src/diffpy/structure/parsers/p_pdffit.py @@ -17,13 +17,14 @@ """ import sys +from functools import reduce + import numpy import six -from diffpy.structure import PDFFitStructure, Lattice -from diffpy.structure import StructureFormatError +from diffpy.structure import Lattice, PDFFitStructure, StructureFormatError from diffpy.structure.parsers import StructureParser -from functools import reduce + class P_pdffit(StructureParser): """Parser for PDFfit structure format. @@ -38,7 +39,6 @@ def __init__(self): self.stru = None return - def parseLines(self, lines): """Parse list of lines in PDFfit format. @@ -50,54 +50,54 @@ def parseLines(self, lines): stru = self.stru cell_line_read = False stop = len(lines) - while stop>0 and lines[stop-1].strip() == "": + while stop > 0 and lines[stop - 1].strip() == "": stop -= 1 ilines = iter(lines[:stop]) # read header of PDFFit file for l in ilines: p_nl += 1 words = l.split() - if len(words) == 0 or words[0][0] == '#': + if len(words) == 0 or words[0][0] == "#": continue - elif words[0] == 'title': + elif words[0] == "title": stru.title = l.lstrip()[5:].strip() - elif words[0] == 'scale': - stru.pdffit['scale'] = float(words[1]) - elif words[0] == 'sharp': - l1 = l.replace(',', ' ') - sharp_pars = [ float(w) for w in l1.split()[1:] ] + elif words[0] == "scale": + stru.pdffit["scale"] = float(words[1]) + elif words[0] == "sharp": + l1 = l.replace(",", " ") + sharp_pars = [float(w) for w in l1.split()[1:]] if len(sharp_pars) < 4: - stru.pdffit['delta2'] = sharp_pars[0] - stru.pdffit['sratio'] = sharp_pars[1] - stru.pdffit['rcut'] = sharp_pars[2] + stru.pdffit["delta2"] = sharp_pars[0] + stru.pdffit["sratio"] = sharp_pars[1] + stru.pdffit["rcut"] = sharp_pars[2] else: - stru.pdffit['delta2'] = sharp_pars[0] - stru.pdffit['delta1'] = sharp_pars[1] - stru.pdffit['sratio'] = sharp_pars[2] - stru.pdffit['rcut'] = sharp_pars[3] - elif words[0] == 'spcgr': - key = 'spcgr' + stru.pdffit["delta2"] = sharp_pars[0] + stru.pdffit["delta1"] = sharp_pars[1] + stru.pdffit["sratio"] = sharp_pars[2] + stru.pdffit["rcut"] = sharp_pars[3] + elif words[0] == "spcgr": + key = "spcgr" start = l.find(key) + len(key) value = l[start:].strip() - stru.pdffit['spcgr'] = value - elif words[0] == 'shape': + stru.pdffit["spcgr"] = value + elif words[0] == "shape": self._parse_shape(l) - elif words[0] == 'cell': + elif words[0] == "cell": cell_line_read = True - l1 = l.replace(',', ' ') - latpars = [ float(w) for w in l1.split()[1:7] ] + l1 = l.replace(",", " ") + latpars = [float(w) for w in l1.split()[1:7]] stru.lattice = Lattice(*latpars) - elif words[0] == 'dcell': - l1 = l.replace(',', ' ') - stru.pdffit['dcell'] = [ float(w) for w in l1.split()[1:7] ] - elif words[0] == 'ncell': - l1 = l.replace(',', ' ') - stru.pdffit['ncell'] = [ int(w) for w in l1.split()[1:5] ] - elif words[0] == 'format': - if words[1] != 'pdffit': + elif words[0] == "dcell": + l1 = l.replace(",", " ") + stru.pdffit["dcell"] = [float(w) for w in l1.split()[1:7]] + elif words[0] == "ncell": + l1 = l.replace(",", " ") + stru.pdffit["ncell"] = [int(w) for w in l1.split()[1:5]] + elif words[0] == "format": + if words[1] != "pdffit": emsg = "%d: file is not in PDFfit format" % p_nl raise StructureFormatError(emsg) - elif words[0] == 'atoms' and cell_line_read: + elif words[0] == "atoms" and cell_line_read: break else: self.ignored_lines.append(l) @@ -106,19 +106,19 @@ def parseLines(self, lines): emsg = "%d: file is not in PDFfit format" % p_nl raise StructureFormatError(emsg) # Load data from atom entries. - p_natoms = reduce(lambda x,y : x*y, stru.pdffit['ncell']) + p_natoms = reduce(lambda x, y: x * y, stru.pdffit["ncell"]) # we are now inside data block for l in ilines: p_nl += 1 wl1 = l.split() element = wl1[0][0].upper() + wl1[0][1:].lower() - xyz = [ float(w) for w in wl1[1:4] ] + xyz = [float(w) for w in wl1[1:4]] occ = float(wl1[4]) stru.addNewAtom(element, xyz=xyz, occupancy=occ) a = stru.getLastAtom() p_nl += 1 wl2 = next(ilines).split() - a.sigxyz = [ float(w) for w in wl2[0:3] ] + a.sigxyz = [float(w) for w in wl2[0:3]] a.sigo = float(wl2[3]) p_nl += 1 wl3 = next(ilines).split() @@ -128,32 +128,31 @@ def parseLines(self, lines): wl5 = next(ilines).split() p_nl += 1 wl6 = next(ilines).split() - U = numpy.zeros((3,3), dtype=float) - sigU = numpy.zeros((3,3), dtype=float) - U[0,0] = float(wl3[0]) - U[1,1] = float(wl3[1]) - U[2,2] = float(wl3[2]) - sigU[0,0] = float(wl4[0]) - sigU[1,1] = float(wl4[1]) - sigU[2,2] = float(wl4[2]) - U[0,1] = U[1,0] = float(wl5[0]) - U[0,2] = U[2,0] = float(wl5[1]) - U[1,2] = U[2,1] = float(wl5[2]) - sigU[0,1] = sigU[1,0] = float(wl6[0]) - sigU[0,2] = sigU[2,0] = float(wl6[1]) - sigU[1,2] = sigU[2,1] = float(wl6[2]) + U = numpy.zeros((3, 3), dtype=float) + sigU = numpy.zeros((3, 3), dtype=float) + U[0, 0] = float(wl3[0]) + U[1, 1] = float(wl3[1]) + U[2, 2] = float(wl3[2]) + sigU[0, 0] = float(wl4[0]) + sigU[1, 1] = float(wl4[1]) + sigU[2, 2] = float(wl4[2]) + U[0, 1] = U[1, 0] = float(wl5[0]) + U[0, 2] = U[2, 0] = float(wl5[1]) + U[1, 2] = U[2, 1] = float(wl5[2]) + sigU[0, 1] = sigU[1, 0] = float(wl6[0]) + sigU[0, 2] = sigU[2, 0] = float(wl6[1]) + sigU[1, 2] = sigU[2, 1] = float(wl6[2]) a.anisotropy = stru.lattice.isanisotropic(U) a.U = U a.sigU = sigU if len(stru) != p_natoms: emsg = "expected %d atoms, read %d" % (p_natoms, len(stru)) raise StructureFormatError(emsg) - if stru.pdffit['ncell'][:3] != [1,1,1]: - superlatpars = [ latpars[i]*stru.pdffit['ncell'][i] - for i in range(3) ] + latpars[3:] + if stru.pdffit["ncell"][:3] != [1, 1, 1]: + superlatpars = [latpars[i] * stru.pdffit["ncell"][i] for i in range(3)] + latpars[3:] superlattice = Lattice(*superlatpars) stru.placeInLattice(superlattice) - stru.pdffit['ncell'] = [1, 1, 1, p_natoms] + stru.pdffit["ncell"] = [1, 1, 1, p_natoms] except (ValueError, IndexError): emsg = "%d: file is not in PDFfit format" % p_nl exc_type, exc_value, exc_traceback = sys.exc_info() @@ -161,7 +160,6 @@ def parseLines(self, lines): six.reraise(StructureFormatError, e, exc_traceback) return stru - def toLines(self, stru): """Convert Structure stru to a list of lines in PDFfit format. @@ -176,47 +174,47 @@ def toLines(self, stru): # default values of standard deviations d_sigxyz = numpy.zeros(3, dtype=float) d_sigo = 0.0 - d_sigU = numpy.zeros((3,3), dtype=float) + d_sigU = numpy.zeros((3, 3), dtype=float) # here we can start l = "title " + stru.title - lines.append( l.strip() ) - lines.append( "format pdffit" ) - lines.append( "scale %9.6f" % stru_pdffit["scale"] ) - lines.append( "sharp %9.6f, %9.6f, %9.6f, %9.6f" % ( - stru_pdffit["delta2"], - stru_pdffit["delta1"], - stru_pdffit["sratio"], - stru_pdffit["rcut"]) ) - lines.append( "spcgr " + stru_pdffit["spcgr"] ) - if stru_pdffit.get('spdiameter', 0.0) > 0.0: - line = 'shape sphere, %g' % stru_pdffit['spdiameter'] + lines.append(l.strip()) + lines.append("format pdffit") + lines.append("scale %9.6f" % stru_pdffit["scale"]) + lines.append( + "sharp %9.6f, %9.6f, %9.6f, %9.6f" + % (stru_pdffit["delta2"], stru_pdffit["delta1"], stru_pdffit["sratio"], stru_pdffit["rcut"]) + ) + lines.append("spcgr " + stru_pdffit["spcgr"]) + if stru_pdffit.get("spdiameter", 0.0) > 0.0: + line = "shape sphere, %g" % stru_pdffit["spdiameter"] lines.append(line) - if stru_pdffit.get('stepcut', 0.0) > 0.0: - line = 'shape stepcut, %g' % stru_pdffit['stepcut'] + if stru_pdffit.get("stepcut", 0.0) > 0.0: + line = "shape stepcut, %g" % stru_pdffit["stepcut"] lines.append(line) lat = stru.lattice - lines.append( "cell %9.6f, %9.6f, %9.6f, %9.6f, %9.6f, %9.6f" % ( - lat.a, lat.b, lat.c, lat.alpha, lat.beta, lat.gamma) ) - lines.append( "dcell %9.6f, %9.6f, %9.6f, %9.6f, %9.6f, %9.6f" % - tuple(stru_pdffit["dcell"]) ) - lines.append( "ncell %9i, %9i, %9i, %9i" % (1, 1, 1, len(stru)) ) - lines.append( "atoms" ) + lines.append( + "cell %9.6f, %9.6f, %9.6f, %9.6f, %9.6f, %9.6f" + % (lat.a, lat.b, lat.c, lat.alpha, lat.beta, lat.gamma) + ) + lines.append("dcell %9.6f, %9.6f, %9.6f, %9.6f, %9.6f, %9.6f" % tuple(stru_pdffit["dcell"])) + lines.append("ncell %9i, %9i, %9i, %9i" % (1, 1, 1, len(stru))) + lines.append("atoms") for a in stru: ad = a.__dict__ - lines.append( "%-4s %17.8f %17.8f %17.8f %12.4f" % ( - a.element.upper(), a.xyz[0], a.xyz[1], a.xyz[2], a.occupancy) ) - sigmas = numpy.concatenate( - ( ad.get("sigxyz", d_sigxyz), [ad.get("sigo", d_sigo)] ) ) - lines.append( " %18.8f %17.8f %17.8f %12.4f" % tuple(sigmas) ) + lines.append( + "%-4s %17.8f %17.8f %17.8f %12.4f" % (a.element.upper(), a.xyz[0], a.xyz[1], a.xyz[2], a.occupancy) + ) + sigmas = numpy.concatenate((ad.get("sigxyz", d_sigxyz), [ad.get("sigo", d_sigo)])) + lines.append(" %18.8f %17.8f %17.8f %12.4f" % tuple(sigmas)) sigU = ad.get("sigU", d_sigU) - Uii = ( a.U[0][0], a.U[1][1], a.U[2][2] ) - Uij = ( a.U[0][1], a.U[0][2], a.U[1][2] ) - sigUii = ( sigU[0][0], sigU[1][1], sigU[2][2] ) - sigUij = ( sigU[0][1], sigU[0][2], sigU[1][2] ) - lines.append( " %18.8f %17.8f %17.8f" % Uii ) - lines.append( " %18.8f %17.8f %17.8f" % sigUii ) - lines.append( " %18.8f %17.8f %17.8f" % Uij ) - lines.append( " %18.8f %17.8f %17.8f" % sigUij ) + Uii = (a.U[0][0], a.U[1][1], a.U[2][2]) + Uij = (a.U[0][1], a.U[0][2], a.U[1][2]) + sigUii = (sigU[0][0], sigU[1][1], sigU[2][2]) + sigUij = (sigU[0][1], sigU[0][2], sigU[1][2]) + lines.append(" %18.8f %17.8f %17.8f" % Uii) + lines.append(" %18.8f %17.8f %17.8f" % sigUii) + lines.append(" %18.8f %17.8f %17.8f" % Uij) + lines.append(" %18.8f %17.8f %17.8f" % sigUij) return lines # Protected methods ------------------------------------------------------ @@ -229,22 +227,24 @@ def _parse_shape(self, line): No return value. Raise StructureFormatError for invalid record. """ - line_nocommas = line.replace(',', ' ') + line_nocommas = line.replace(",", " ") words = line_nocommas.split() - assert words[0] == 'shape' + assert words[0] == "shape" shapetype = words[1] - if shapetype == 'sphere': - self.stru.pdffit['spdiameter'] = float(words[2]) - elif shapetype == 'stepcut': - self.stru.pdffit['stepcut'] = float(words[2]) + if shapetype == "sphere": + self.stru.pdffit["spdiameter"] = float(words[2]) + elif shapetype == "stepcut": + self.stru.pdffit["stepcut"] = float(words[2]) else: - emsg = 'Invalid type of particle shape correction %r' % shapetype + emsg = "Invalid type of particle shape correction %r" % shapetype raise StructureFormatError(emsg) return + # End of class P_pdffit # Routines ------------------------------------------------------------------- + def getParser(): return P_pdffit() diff --git a/src/diffpy/structure/parsers/p_rawxyz.py b/src/diffpy/structure/parsers/p_rawxyz.py index f82221c0..efbd095b 100644 --- a/src/diffpy/structure/parsers/p_rawxyz.py +++ b/src/diffpy/structure/parsers/p_rawxyz.py @@ -19,12 +19,13 @@ """ import sys + import six -from diffpy.structure import Structure -from diffpy.structure import StructureFormatError -from diffpy.structure.utils import isfloat +from diffpy.structure import Structure, StructureFormatError from diffpy.structure.parsers import StructureParser +from diffpy.structure.utils import isfloat + class P_rawxyz(StructureParser): """Parser --> StructureParser subclass for RAWXYZ format""" @@ -34,7 +35,6 @@ def __init__(self): self.format = "rawxyz" return - def parseLines(self, lines): """Parse list of lines in RAWXYZ format. @@ -52,18 +52,17 @@ def parseLines(self, lines): break # find the last valid record stop = len(lines) - while stop > start and len(linefields[stop-1]) == 0: + while stop > start and len(linefields[stop - 1]) == 0: stop -= 1 # get out for empty structure if start >= stop: return stru # here we have at least one valid record line # figure out xyz layout from the first line for plain and raw formats - floatfields = [ isfloat(f) for f in linefields[start] ] + floatfields = [isfloat(f) for f in linefields[start]] nfields = len(linefields[start]) if nfields not in (3, 4): - emsg = ("%d: invalid RAWXYZ format, expected 3 or 4 columns" % - (start + 1)) + emsg = "%d: invalid RAWXYZ format, expected 3 or 4 columns" % (start + 1) raise StructureFormatError(emsg) if floatfields[:3] == [True, True, True]: el_idx, x_idx = (None, 0) @@ -75,16 +74,15 @@ def parseLines(self, lines): # now try to read all record lines try: p_nl = start - for fields in linefields[start:] : + for fields in linefields[start:]: p_nl += 1 if fields == []: continue elif len(fields) != nfields: - emsg = ('%d: all lines must have ' + - 'the same number of columns') % p_nl + emsg = ("%d: all lines must have " + "the same number of columns") % p_nl raise StructureFormatError(emsg) element = el_idx is not None and fields[el_idx] or "" - xyz = [ float(f) for f in fields[x_idx:x_idx+3] ] + xyz = [float(f) for f in fields[x_idx : x_idx + 3]] if len(xyz) == 2: xyz.append(0.0) stru.addNewAtom(element, xyz=xyz) @@ -95,7 +93,6 @@ def parseLines(self, lines): six.reraise(StructureFormatError, e, exc_traceback) return stru - def toLines(self, stru): """Convert Structure stru to a list of lines in XYZ format. @@ -108,9 +105,11 @@ def toLines(self, stru): lines.append(s.lstrip()) return lines + # End of class P_rawxyz # Routines ------------------------------------------------------------------- + def getParser(): return P_rawxyz() diff --git a/src/diffpy/structure/parsers/p_xcfg.py b/src/diffpy/structure/parsers/p_xcfg.py index c2467004..252571fc 100644 --- a/src/diffpy/structure/parsers/p_xcfg.py +++ b/src/diffpy/structure/parsers/p_xcfg.py @@ -15,15 +15,15 @@ """Parser for extended CFG format used by atomeye""" -import sys import re +import sys + import numpy import six -from diffpy.structure import Structure -from diffpy.structure import StructureFormatError -from diffpy.structure.utils import isfloat +from diffpy.structure import Structure, StructureFormatError from diffpy.structure.parsers import StructureParser +from diffpy.structure.utils import isfloat # Constants ------------------------------------------------------------------ @@ -31,121 +31,122 @@ # This can be later when PeriodicTable package becomes available. AtomicMass = { - "H" : 1.007947, # 1 H hydrogen 1.007947 - "He" : 4.0026022, # 2 He helium 4.0026022 - "Li" : 6.9412, # 3 Li lithium 6.9412 - "Be" : 9.0121823, # 4 Be beryllium 9.0121823 - "B" : 10.8117, # 5 B boron 10.8117 - "C" : 12.01078, # 6 C carbon 12.01078 - "N" : 14.00672, # 7 N nitrogen 14.00672 - "O" : 15.99943, # 8 O oxygen 15.99943 - "F" : 18.99840325, # 9 F fluorine 18.99840325 - "Ne" : 20.17976, # 10 Ne neon 20.17976 - "Na" : 22.9897702, # 11 Na sodium 22.9897702 - "Mg" : 24.30506, # 12 Mg magnesium 24.30506 - "Al" : 26.9815382, # 13 Al aluminium 26.9815382 - "Si" : 28.08553, # 14 Si silicon 28.08553 - "P" : 30.9737612, # 15 P phosphorus 30.9737612 - "S" : 32.0655, # 16 S sulfur 32.0655 - "Cl" : 35.4532, # 17 Cl chlorine 35.4532 - "Ar" : 39.9481, # 18 Ar argon 39.9481 - "K" : 39.09831, # 19 K potassium 39.09831 - "Ca" : 40.0784, # 20 Ca calcium 40.0784 - "Sc" : 44.9559108, # 21 Sc scandium 44.9559108 - "Ti" : 47.8671, # 22 Ti titanium 47.8671 - "V" : 50.94151, # 23 V vanadium 50.94151 - "Cr" : 51.99616, # 24 Cr chromium 51.99616 - "Mn" : 54.9380499, # 25 Mn manganese 54.9380499 - "Fe" : 55.8452, # 26 Fe iron 55.8452 - "Co" : 58.9332009, # 27 Co cobalt 58.9332009 - "Ni" : 58.69342, # 28 Ni nickel 58.69342 - "Cu" : 63.5463, # 29 Cu copper 63.5463 - "Zn" : 65.4094, # 30 Zn zinc 65.4094 - "Ga" : 69.7231, # 31 Ga gallium 69.7231 - "Ge" : 72.641, # 32 Ge germanium 72.641 - "As" : 74.921602, # 33 As arsenic 74.921602 - "Se" : 78.963, # 34 Se selenium 78.963 - "Br" : 79.9041, # 35 Br bromine 79.9041 - "Kr" : 83.7982, # 36 Kr krypton 83.7982 - "Rb" : 85.46783, # 37 Rb rubidium 85.46783 - "Sr" : 87.621, # 38 Sr strontium 87.621 - "Y" : 88.905852, # 39 Y yttrium 88.905852 - "Zr" : 91.2242, # 40 Zr zirconium 91.2242 - "Nb" : 92.906382, # 41 Nb niobium 92.906382 - "Mo" : 95.942, # 42 Mo molybdenum 95.942 - "Tc" : 98.0, # 43 Tc technetium 98 - "Ru" : 101.072, # 44 Ru ruthenium 101.072 - "Rh" : 102.905502, # 45 Rh rhodium 102.905502 - "Pd" : 106.421, # 46 Pd palladium 106.421 - "Ag" : 107.86822, # 47 Ag silver 107.86822 - "Cd" : 112.4118, # 48 Cd cadmium 112.4118 - "In" : 114.8183, # 49 In indium 114.8183 - "Sn" : 118.7107, # 50 Sn tin 118.7107 - "Sb" : 121.7601, # 51 Sb antimony 121.7601 - "Te" : 127.603, # 52 Te tellurium 127.603 - "I" : 126.904473, # 53 I iodine 126.904473 - "Xe" : 131.2936, # 54 Xe xenon 131.2936 - "Cs" : 132.905452, # 55 Cs caesium 132.905452 - "Ba" : 137.3277, # 56 Ba barium 137.3277 - "La" : 138.90552, # 57 La lanthanum 138.90552 - "Ce" : 140.1161, # 58 Ce cerium 140.1161 - "Pr" : 140.907652, # 59 Pr praseodymium 140.907652 - "Nd" : 144.243, # 60 Nd neodymium 144.243 - "Pm" : 145.0, # 61 Pm promethium 145 - "Sm" : 150.363, # 62 Sm samarium 150.363 - "Eu" : 151.9641, # 63 Eu europium 151.9641 - "Gd" : 157.253, # 64 Gd gadolinium 157.253 - "Tb" : 158.925342, # 65 Tb terbium 158.925342 - "Dy" : 162.5001, # 66 Dy dysprosium 162.5001 - "Ho" : 164.930322, # 67 Ho holmium 164.930322 - "Er" : 167.2593, # 68 Er erbium 167.2593 - "Tm" : 168.934212, # 69 Tm thulium 168.934212 - "Yb" : 173.043, # 70 Yb ytterbium 173.043 - "Lu" : 174.9671, # 71 Lu lutetium 174.9671 - "Hf" : 178.492, # 72 Hf hafnium 178.492 - "Ta" : 180.94791, # 73 Ta tantalum 180.94791 - "W" : 183.841, # 74 W tungsten 183.841 - "Re" : 186.2071, # 75 Re rhenium 186.2071 - "Os" : 190.233, # 76 Os osmium 190.233 - "Ir" : 192.2173, # 77 Ir iridium 192.2173 - "Pt" : 195.0782, # 78 Pt platinum 195.0782 - "Au" : 196.966552, # 79 Au gold 196.966552 - "Hg" : 200.592, # 80 Hg mercury 200.592 - "Tl" : 204.38332, # 81 Tl thallium 204.38332 - "Pb" : 207.21, # 82 Pb lead 207.21 - "Bi" : 208.980382, # 83 Bi bismuth 208.980382 - "Po" : 209.0, # 84 Po polonium 209 - "At" : 210.0, # 85 At astatine 210 - "Rn" : 222.0, # 86 Rn radon 222 - "Fr" : 223.0, # 87 Fr francium 223 - "Ra" : 226.0, # 88 Ra radium 226 - "Ac" : 227.0, # 89 Ac actinium 227 - "Th" : 232.03811, # 90 Th thorium 232.03811 - "Pa" : 231.035882, # 91 Pa protactinium 231.035882 - "U" : 238.028913, # 92 U uranium 238.028913 - "Np" : 237.0, # 93 Np neptunium 237 - "Pu" : 244.0, # 94 Pu plutonium 244 - "Am" : 243.0, # 95 Am americium 243 - "Cm" : 247.0, # 96 Cm curium 247 - "Bk" : 247.0, # 97 Bk berkelium 247 - "Cf" : 251.0, # 98 Cf californium 251 - "Es" : 252.0, # 99 Es einsteinium 252 - "Fm" : 257.0, # 100 Fm fermium 257 - "Md" : 258.0, # 101 Md mendelevium 258 - "No" : 259.0, # 102 No nobelium 259 - "Lr" : 262.0, # 103 Lr lawrencium 262 - "Rf" : 261.0, # 104 Rf rutherfordium 261 - "Db" : 262.0, # 105 Db dubnium 262 - "Sg" : 266.0, # 106 Sg seaborgium 266 - "Bh" : 264.0, # 107 Bh bohrium 264 - "Hs" : 277.0, # 108 Hs hassium 277 - "Mt" : 268.0, # 109 Mt meitnerium 268 - "Ds" : 281.0, # 110 Ds darmstadtium 281 - "Rg" : 272.0, # 111 Rg roentgenium 272 + "H": 1.007947, # 1 H hydrogen 1.007947 + "He": 4.0026022, # 2 He helium 4.0026022 + "Li": 6.9412, # 3 Li lithium 6.9412 + "Be": 9.0121823, # 4 Be beryllium 9.0121823 + "B": 10.8117, # 5 B boron 10.8117 + "C": 12.01078, # 6 C carbon 12.01078 + "N": 14.00672, # 7 N nitrogen 14.00672 + "O": 15.99943, # 8 O oxygen 15.99943 + "F": 18.99840325, # 9 F fluorine 18.99840325 + "Ne": 20.17976, # 10 Ne neon 20.17976 + "Na": 22.9897702, # 11 Na sodium 22.9897702 + "Mg": 24.30506, # 12 Mg magnesium 24.30506 + "Al": 26.9815382, # 13 Al aluminium 26.9815382 + "Si": 28.08553, # 14 Si silicon 28.08553 + "P": 30.9737612, # 15 P phosphorus 30.9737612 + "S": 32.0655, # 16 S sulfur 32.0655 + "Cl": 35.4532, # 17 Cl chlorine 35.4532 + "Ar": 39.9481, # 18 Ar argon 39.9481 + "K": 39.09831, # 19 K potassium 39.09831 + "Ca": 40.0784, # 20 Ca calcium 40.0784 + "Sc": 44.9559108, # 21 Sc scandium 44.9559108 + "Ti": 47.8671, # 22 Ti titanium 47.8671 + "V": 50.94151, # 23 V vanadium 50.94151 + "Cr": 51.99616, # 24 Cr chromium 51.99616 + "Mn": 54.9380499, # 25 Mn manganese 54.9380499 + "Fe": 55.8452, # 26 Fe iron 55.8452 + "Co": 58.9332009, # 27 Co cobalt 58.9332009 + "Ni": 58.69342, # 28 Ni nickel 58.69342 + "Cu": 63.5463, # 29 Cu copper 63.5463 + "Zn": 65.4094, # 30 Zn zinc 65.4094 + "Ga": 69.7231, # 31 Ga gallium 69.7231 + "Ge": 72.641, # 32 Ge germanium 72.641 + "As": 74.921602, # 33 As arsenic 74.921602 + "Se": 78.963, # 34 Se selenium 78.963 + "Br": 79.9041, # 35 Br bromine 79.9041 + "Kr": 83.7982, # 36 Kr krypton 83.7982 + "Rb": 85.46783, # 37 Rb rubidium 85.46783 + "Sr": 87.621, # 38 Sr strontium 87.621 + "Y": 88.905852, # 39 Y yttrium 88.905852 + "Zr": 91.2242, # 40 Zr zirconium 91.2242 + "Nb": 92.906382, # 41 Nb niobium 92.906382 + "Mo": 95.942, # 42 Mo molybdenum 95.942 + "Tc": 98.0, # 43 Tc technetium 98 + "Ru": 101.072, # 44 Ru ruthenium 101.072 + "Rh": 102.905502, # 45 Rh rhodium 102.905502 + "Pd": 106.421, # 46 Pd palladium 106.421 + "Ag": 107.86822, # 47 Ag silver 107.86822 + "Cd": 112.4118, # 48 Cd cadmium 112.4118 + "In": 114.8183, # 49 In indium 114.8183 + "Sn": 118.7107, # 50 Sn tin 118.7107 + "Sb": 121.7601, # 51 Sb antimony 121.7601 + "Te": 127.603, # 52 Te tellurium 127.603 + "I": 126.904473, # 53 I iodine 126.904473 + "Xe": 131.2936, # 54 Xe xenon 131.2936 + "Cs": 132.905452, # 55 Cs caesium 132.905452 + "Ba": 137.3277, # 56 Ba barium 137.3277 + "La": 138.90552, # 57 La lanthanum 138.90552 + "Ce": 140.1161, # 58 Ce cerium 140.1161 + "Pr": 140.907652, # 59 Pr praseodymium 140.907652 + "Nd": 144.243, # 60 Nd neodymium 144.243 + "Pm": 145.0, # 61 Pm promethium 145 + "Sm": 150.363, # 62 Sm samarium 150.363 + "Eu": 151.9641, # 63 Eu europium 151.9641 + "Gd": 157.253, # 64 Gd gadolinium 157.253 + "Tb": 158.925342, # 65 Tb terbium 158.925342 + "Dy": 162.5001, # 66 Dy dysprosium 162.5001 + "Ho": 164.930322, # 67 Ho holmium 164.930322 + "Er": 167.2593, # 68 Er erbium 167.2593 + "Tm": 168.934212, # 69 Tm thulium 168.934212 + "Yb": 173.043, # 70 Yb ytterbium 173.043 + "Lu": 174.9671, # 71 Lu lutetium 174.9671 + "Hf": 178.492, # 72 Hf hafnium 178.492 + "Ta": 180.94791, # 73 Ta tantalum 180.94791 + "W": 183.841, # 74 W tungsten 183.841 + "Re": 186.2071, # 75 Re rhenium 186.2071 + "Os": 190.233, # 76 Os osmium 190.233 + "Ir": 192.2173, # 77 Ir iridium 192.2173 + "Pt": 195.0782, # 78 Pt platinum 195.0782 + "Au": 196.966552, # 79 Au gold 196.966552 + "Hg": 200.592, # 80 Hg mercury 200.592 + "Tl": 204.38332, # 81 Tl thallium 204.38332 + "Pb": 207.21, # 82 Pb lead 207.21 + "Bi": 208.980382, # 83 Bi bismuth 208.980382 + "Po": 209.0, # 84 Po polonium 209 + "At": 210.0, # 85 At astatine 210 + "Rn": 222.0, # 86 Rn radon 222 + "Fr": 223.0, # 87 Fr francium 223 + "Ra": 226.0, # 88 Ra radium 226 + "Ac": 227.0, # 89 Ac actinium 227 + "Th": 232.03811, # 90 Th thorium 232.03811 + "Pa": 231.035882, # 91 Pa protactinium 231.035882 + "U": 238.028913, # 92 U uranium 238.028913 + "Np": 237.0, # 93 Np neptunium 237 + "Pu": 244.0, # 94 Pu plutonium 244 + "Am": 243.0, # 95 Am americium 243 + "Cm": 247.0, # 96 Cm curium 247 + "Bk": 247.0, # 97 Bk berkelium 247 + "Cf": 251.0, # 98 Cf californium 251 + "Es": 252.0, # 99 Es einsteinium 252 + "Fm": 257.0, # 100 Fm fermium 257 + "Md": 258.0, # 101 Md mendelevium 258 + "No": 259.0, # 102 No nobelium 259 + "Lr": 262.0, # 103 Lr lawrencium 262 + "Rf": 261.0, # 104 Rf rutherfordium 261 + "Db": 262.0, # 105 Db dubnium 262 + "Sg": 266.0, # 106 Sg seaborgium 266 + "Bh": 264.0, # 107 Bh bohrium 264 + "Hs": 277.0, # 108 Hs hassium 277 + "Mt": 268.0, # 109 Mt meitnerium 268 + "Ds": 281.0, # 110 Ds darmstadtium 281 + "Rg": 272.0, # 111 Rg roentgenium 272 } # ---------------------------------------------------------------------------- + class P_xcfg(StructureParser): """Parser for AtomEye extended CFG format. @@ -155,13 +156,11 @@ class P_xcfg(StructureParser): cluster_boundary = 2 - def __init__(self): StructureParser.__init__(self) self.format = "xcfg" return - def parseLines(self, lines): """Parse list of lines in PDB format. @@ -169,8 +168,8 @@ def parseLines(self, lines): """ xcfg_Number_of_particles = None xcfg_A = None - xcfg_H0 = numpy.zeros((3,3), dtype=float) - xcfg_H0_set = numpy.zeros((3,3), dtype=bool) + xcfg_H0 = numpy.zeros((3, 3), dtype=float) + xcfg_H0_set = numpy.zeros((3, 3), dtype=bool) xcfg_NO_VELOCITY = False xcfg_entry_count = None p_nl = 0 @@ -191,12 +190,11 @@ def parseLines(self, lines): p_nl += 1 stripped_line = line.strip() # blank lines and lines starting with # are ignored - if stripped_line == "" or line[0] == '#': + if stripped_line == "" or line[0] == "#": continue elif xcfg_Number_of_particles is None: if line.find("Number of particles =") != 0: - emsg = ("%d: first line must " + - "contain 'Number of particles ='") % p_nl + emsg = ("%d: first line must " + "contain 'Number of particles ='") % p_nl raise StructureFormatError(emsg) xcfg_Number_of_particles = int(line[21:].split(None, 1)[0]) p_natoms = xcfg_Number_of_particles @@ -204,8 +202,8 @@ def parseLines(self, lines): xcfg_A = float(line[3:].split(None, 1)[0]) elif line.find("H0(") == 0: i, j = (int(line[3]) - 1, int(line[5]) - 1) - xcfg_H0[i,j] = float(line[10:].split(None, 1)[0]) - xcfg_H0_set[i,j] = True + xcfg_H0[i, j] = float(line[10:].split(None, 1)[0]) + xcfg_H0_set[i, j] = True elif line.find(".NO_VELOCITY.") == 0: xcfg_NO_VELOCITY = True elif line.find("entry_count =") == 0: @@ -213,27 +211,23 @@ def parseLines(self, lines): elif p_auxiliary_re.match(line): m = p_auxiliary_re.match(line) idx = int(m.group(1)) - p_auxiliary[idx] = line[m.end():].split(None, 1)[0] + p_auxiliary[idx] = line[m.end() :].split(None, 1)[0] else: break # check header for consistency if numpy.any(xcfg_H0_set == False): emsg = "H0 tensor is not properly defined" raise StructureFormatError(emsg) - p_auxnum = len(p_auxiliary) and max(p_auxiliary.keys())+1 + p_auxnum = len(p_auxiliary) and max(p_auxiliary.keys()) + 1 for i in range(p_auxnum): if not i in p_auxiliary: p_auxiliary[i] = "aux%d" % i sorted_aux_keys = sorted(p_auxiliary.keys()) if p_auxnum != 0: - stru.xcfg = { - 'auxiliaries' : [ p_auxiliary[k] - for k in sorted_aux_keys ] - } + stru.xcfg = {"auxiliaries": [p_auxiliary[k] for k in sorted_aux_keys]} ecnt = len(p_auxiliary) + (3 if xcfg_NO_VELOCITY else 6) if ecnt != xcfg_entry_count: - emsg = ("%d: auxiliary fields are " - "not consistent with entry_count") % p_nl + emsg = ("%d: auxiliary fields are " "not consistent with entry_count") % p_nl raise StructureFormatError(emsg) # define proper lattice stru.lattice.setLatBase(xcfg_H0) @@ -254,8 +248,7 @@ def parseLines(self, lines): xyz = [xcfg_A * xi for xi in fields[:3]] stru.addNewAtom(p_element, xyz=xyz) a = stru[-1] - _assign_auxiliaries(a, fields, auxiliaries=p_auxiliary, - no_velocity=xcfg_NO_VELOCITY) + _assign_auxiliaries(a, fields, auxiliaries=p_auxiliary, no_velocity=xcfg_NO_VELOCITY) else: emsg = "%d: invalid record" % p_nl raise StructureFormatError(emsg) @@ -269,7 +262,6 @@ def parseLines(self, lines): six.reraise(StructureFormatError, e, exc_traceback) return stru - def toLines(self, stru): """Convert Structure stru to a list of lines in XCFG atomeye format. @@ -284,29 +276,28 @@ def toLines(self, stru): allxyz = numpy.array([a.xyz for a in stru]) lo_xyz = allxyz.min(axis=0) hi_xyz = allxyz.max(axis=0) - max_range_xyz = (hi_xyz-lo_xyz).max() + max_range_xyz = (hi_xyz - lo_xyz).max() if numpy.allclose(stru.lattice.abcABG(), (1, 1, 1, 90, 90, 90)): max_range_xyz += self.cluster_boundary # range of CFG coordinates must be less than 1 p_A = numpy.ceil(max_range_xyz + 1.0e-13) # atomeye draws rubbish when boxsize is less than 3.5 - hi_ucvect = max([numpy.sqrt(numpy.dot(v,v)) for v in stru.lattice.base]) - if hi_ucvect*p_A < 3.5: + hi_ucvect = max([numpy.sqrt(numpy.dot(v, v)) for v in stru.lattice.base]) + if hi_ucvect * p_A < 3.5: p_A = numpy.ceil(3.5 / hi_ucvect) lines.append("A = %.8g Angstrom" % p_A) # how much do we need to shift the coordinates? p_dxyz = numpy.zeros(3, dtype=float) for i in range(3): - if lo_xyz[i]/p_A < 0.0 or hi_xyz[i]/p_A >= 1.0 \ - or (lo_xyz[i] == hi_xyz[i] and lo_xyz[i] == 0.0) : - p_dxyz[i] = 0.5 - (hi_xyz[i]+lo_xyz[i])/2.0/p_A + if lo_xyz[i] / p_A < 0.0 or hi_xyz[i] / p_A >= 1.0 or (lo_xyz[i] == hi_xyz[i] and lo_xyz[i] == 0.0): + p_dxyz[i] = 0.5 - (hi_xyz[i] + lo_xyz[i]) / 2.0 / p_A # H0 tensor for i in range(3): for j in range(3): - lines.append("H0(%i,%i) = %.8g A" % - (i + 1, j + 1, stru.lattice.base[i, j])) + lines.append("H0(%i,%i) = %.8g A" % (i + 1, j + 1, stru.lattice.base[i, j])) # get out for empty structure - if len(stru) == 0: return lines + if len(stru) == 0: + return lines a_first = stru[0] p_NO_VELOCITY = "v" not in a_first.__dict__ if p_NO_VELOCITY: @@ -315,14 +306,13 @@ def toLines(self, stru): # if stru came from xcfg file, it would store original auxiliaries in # xcfg dictionary try: - p_auxiliaries = [ (aux, "a."+aux) - for aux in stru.xcfg['auxiliaries'] ] + p_auxiliaries = [(aux, "a." + aux) for aux in stru.xcfg["auxiliaries"]] except AttributeError: p_auxiliaries = [] # add occupancy if any atom has nonunit occupancy for a in stru: if a.occupancy != 1.0: - p_auxiliaries.append(('occupancy', 'a.occupancy')) + p_auxiliaries.append(("occupancy", "a.occupancy")) break # add temperature factor with as many terms as needed # check whether all temperature factors are zero or isotropic @@ -331,26 +321,24 @@ def toLines(self, stru): for a in stru: if p_allUzero and numpy.any(a.U != 0.0): p_allUzero = False - if not numpy.all(a.U == a.U[0,0]*numpy.identity(3)): + if not numpy.all(a.U == a.U[0, 0] * numpy.identity(3)): p_allUiso = False # here p_allUzero must be false break if p_allUzero: pass elif p_allUiso: - p_auxiliaries.append(('Uiso', 'uflat[0]')) + p_auxiliaries.append(("Uiso", "uflat[0]")) else: - p_auxiliaries.extend([('U11', 'uflat[0]'), - ('U22', 'uflat[4]'), - ('U33', 'uflat[8]')]) + p_auxiliaries.extend([("U11", "uflat[0]"), ("U22", "uflat[4]"), ("U33", "uflat[8]")]) # check if there are off-diagonal elements allU = numpy.array([a.U for a in stru]) - if numpy.any(allU[:,0,1] != 0.0): - p_auxiliaries.append(('U12', 'uflat[1]')) - if numpy.any(allU[:,0,2] != 0.0): - p_auxiliaries.append(('U13', 'uflat[2]')) - if numpy.any(allU[:,1,2] != 0.0): - p_auxiliaries.append(('U23', 'uflat[5]')) + if numpy.any(allU[:, 0, 1] != 0.0): + p_auxiliaries.append(("U12", "uflat[1]")) + if numpy.any(allU[:, 0, 2] != 0.0): + p_auxiliaries.append(("U13", "uflat[2]")) + if numpy.any(allU[:, 1, 2] != 0.0): + p_auxiliaries.append(("U23", "uflat[5]")) # count entries p_entry_count = (3 if p_NO_VELOCITY else 6) + len(p_auxiliaries) lines.append("entry_count = %d" % p_entry_count) @@ -361,8 +349,8 @@ def toLines(self, stru): fmwords = ["{pos[0]:.8g}", "{pos[1]:.8g}", "{pos[2]:.8g}"] if not p_NO_VELOCITY: fmwords += ["{v[0]:.8g}", "{v[1]:.8g}", "{v[2]:.8g}"] - fmwords += (('{' + e + ':.8g}') for p, e in p_auxiliaries) - efmt = ' '.join(fmwords) + fmwords += (("{" + e + ":.8g}") for p, e in p_auxiliaries) + efmt = " ".join(fmwords) # we are ready to output atoms: lines.append("") p_element = None @@ -378,15 +366,19 @@ def toLines(self, stru): lines.append(entry) return lines + # End of class P_xcfg # Routines ------------------------------------------------------------------- + def getParser(): return P_xcfg() + # Local Helpers -------------------------------------------------------------- + def _assign_auxiliaries(a, fields, auxiliaries, no_velocity): """\ Assing auxiliary properties for Atom object when reading CFG format. @@ -415,9 +407,8 @@ def _assign_auxiliaries(a, fields, auxiliaries, no_velocity): a.Uisoequiv = value elif prop == "Biso": a.Bisoequiv = value - elif prop[0] in 'BU' and all(d in '123' for d in prop[1:]): - nm = (prop if prop[1] <= prop[2] - else prop[0] + prop[2] + prop[1]) + elif prop[0] in "BU" and all(d in "123" for d in prop[1:]): + nm = prop if prop[1] <= prop[2] else prop[0] + prop[2] + prop[1] a.anisotropy = True setattr(a, nm, value) else: diff --git a/src/diffpy/structure/parsers/p_xyz.py b/src/diffpy/structure/parsers/p_xyz.py index ea33af83..16bdd319 100644 --- a/src/diffpy/structure/parsers/p_xyz.py +++ b/src/diffpy/structure/parsers/p_xyz.py @@ -20,22 +20,21 @@ """ import sys + import six -from diffpy.structure import Structure -from diffpy.structure import StructureFormatError +from diffpy.structure import Structure, StructureFormatError from diffpy.structure.parsers import StructureParser + class P_xyz(StructureParser): - """Parser for standard XYZ structure format. - """ + """Parser for standard XYZ structure format.""" def __init__(self): StructureParser.__init__(self) self.format = "xyz" return - def parseLines(self, lines): """Parse list of lines in XYZ format. @@ -57,21 +56,19 @@ def parseLines(self, lines): w1 = linefields[start][0] if len(lfs) == 1 and str(int(w1)) == w1: p_natoms = int(w1) - stru.title = lines[start+1].strip() + stru.title = lines[start + 1].strip() start += 2 else: - emsg = ("%d: invalid XYZ format, missing number of atoms" % - (start + 1)) + emsg = "%d: invalid XYZ format, missing number of atoms" % (start + 1) raise StructureFormatError(emsg) except (IndexError, ValueError): exc_type, exc_value, exc_traceback = sys.exc_info() - emsg = ("%d: invalid XYZ format, missing number of atoms" % - (start + 1)) + emsg = "%d: invalid XYZ format, missing number of atoms" % (start + 1) e = StructureFormatError(emsg) six.reraise(StructureFormatError, e, exc_traceback) # find the last valid record stop = len(lines) - while stop > start and len(linefields[stop-1]) == 0: + while stop > start and len(linefields[stop - 1]) == 0: stop -= 1 # get out for empty structure if p_natoms == 0 or start >= stop: @@ -84,17 +81,16 @@ def parseLines(self, lines): # now try to read all record lines try: p_nl = start - for fields in linefields[start:] : + for fields in linefields[start:]: p_nl += 1 if fields == []: continue elif len(fields) != nfields: - emsg = ('%d: all lines must have ' + - 'the same number of columns') % p_nl + emsg = ("%d: all lines must have " + "the same number of columns") % p_nl raise StructureFormatError(emsg) element = fields[0] element = element[0].upper() + element[1:].lower() - xyz = [ float(f) for f in fields[1:4] ] + xyz = [float(f) for f in fields[1:4]] stru.addNewAtom(element, xyz=xyz) except ValueError: exc_type, exc_value, exc_traceback = sys.exc_info() @@ -107,24 +103,25 @@ def parseLines(self, lines): raise StructureFormatError(emsg) return stru - def toLines(self, stru): """Convert Structure stru to a list of lines in XYZ format. Return list of strings. """ lines = [] - lines.append( str(len(stru)) ) - lines.append( stru.title ) + lines.append(str(len(stru))) + lines.append(stru.title) for a in stru: rc = a.xyz_cartn s = "%-3s %g %g %g" % (a.element, rc[0], rc[1], rc[2]) lines.append(s) return lines + # End of class P_xyz # Routines ------------------------------------------------------------------- + def getParser(): return P_xyz() diff --git a/src/diffpy/structure/parsers/parser_index_mod.py b/src/diffpy/structure/parsers/parser_index_mod.py index e8462d9e..48314780 100644 --- a/src/diffpy/structure/parsers/parser_index_mod.py +++ b/src/diffpy/structure/parsers/parser_index_mod.py @@ -19,76 +19,68 @@ """ parser_index = { - # automatic format detection - tries all parsers one by one - 'auto' : { - 'module' : 'p_auto', - 'file_extension' : '', - 'file_pattern' : '*.*', - 'has_input' : True, - 'has_output' : False, - }, - + "auto": { + "module": "p_auto", + "file_extension": "", + "file_pattern": "*.*", + "has_input": True, + "has_output": False, + }, # CIF format - 'cif' : { - 'module' : 'p_cif', - 'file_extension' : '.cif', - 'file_pattern' : '*.cif', - 'has_input' : True, - 'has_output' : True, - }, - + "cif": { + "module": "p_cif", + "file_extension": ".cif", + "file_pattern": "*.cif", + "has_input": True, + "has_output": True, + }, # PDB format - 'pdb' : { - 'module' : 'p_pdb', - 'file_extension' : '.pdb', - 'file_pattern' : '*.pdb', - 'has_input' : True, - 'has_output' : True, - }, - + "pdb": { + "module": "p_pdb", + "file_extension": ".pdb", + "file_pattern": "*.pdb", + "has_input": True, + "has_output": True, + }, # Discus structure format - 'discus' : { - 'module' : 'p_discus', - 'file_extension' : '.stru', - 'file_pattern' : '*.stru|*.rstr', - 'has_input' : True, - 'has_output' : True, - }, - + "discus": { + "module": "p_discus", + "file_extension": ".stru", + "file_pattern": "*.stru|*.rstr", + "has_input": True, + "has_output": True, + }, # PDFfit structure format - 'pdffit' : { - 'module' : 'p_pdffit', - 'file_extension' : '.stru', - 'file_pattern' : '*.stru|*.rstr', - 'has_input' : True, - 'has_output' : True, - }, - + "pdffit": { + "module": "p_pdffit", + "file_extension": ".stru", + "file_pattern": "*.stru|*.rstr", + "has_input": True, + "has_output": True, + }, # standard xyz file - 'xyz' : { - 'module' : 'p_xyz', - 'file_extension' : '.xyz', - 'file_pattern' : '*.xyz', - 'has_input' : True, - 'has_output' : True, - }, - + "xyz": { + "module": "p_xyz", + "file_extension": ".xyz", + "file_pattern": "*.xyz", + "has_input": True, + "has_output": True, + }, # raw xyz file (element labels optional) - 'rawxyz' : { - 'module' : 'p_rawxyz', - 'file_extension' : '.xyz', - 'file_pattern' : '*.xyz', - 'has_input' : True, - 'has_output' : True, - }, - + "rawxyz": { + "module": "p_rawxyz", + "file_extension": ".xyz", + "file_pattern": "*.xyz", + "has_input": True, + "has_output": True, + }, # AtomEye extended configuration format - 'xcfg' : { - 'module' : 'p_xcfg', - 'file_extension' : '', - 'file_pattern' : '*.xcfg|*.eye|*.cfg', - 'has_input' : True, - 'has_output' : True, - }, + "xcfg": { + "module": "p_xcfg", + "file_extension": "", + "file_pattern": "*.xcfg|*.eye|*.cfg", + "has_input": True, + "has_output": True, + }, } diff --git a/src/diffpy/structure/parsers/structureparser.py b/src/diffpy/structure/parsers/structureparser.py index 43326637..1637d86b 100644 --- a/src/diffpy/structure/parsers/structureparser.py +++ b/src/diffpy/structure/parsers/structureparser.py @@ -16,6 +16,7 @@ """Definition of StructureParser, a base class for specific parsers. """ + class StructureParser(object): """Base class for all structure parsers. @@ -29,7 +30,6 @@ def __init__(self): self.filename = None return - def parseLines(self, lines): """Create Structure instance from a list of lines. @@ -39,7 +39,6 @@ def parseLines(self, lines): raise NotImplementedError("parseLines not defined for '%s' format" % self.format) return - def toLines(self, stru): """Convert Structure stru to a list of lines. This method has to be overloaded in derived class. @@ -48,25 +47,21 @@ def toLines(self, stru): """ raise NotImplementedError("toLines not defined for '%s' format" % self.format) - def parse(self, s): """Create Structure instance from a string. Return Structure object or raise StructureFormatError exception. """ - lines = s.rstrip('\r\n').split('\n') + lines = s.rstrip("\r\n").split("\n") stru = self.parseLines(lines) return stru - def tostring(self, stru): - """Convert Structure instance to a string. - """ + """Convert Structure instance to a string.""" lines = self.toLines(stru) - s = '\n'.join(lines) + '\n' + s = "\n".join(lines) + "\n" return s - def parseFile(self, filename): """Create Structure instance from an existing file. @@ -81,4 +76,5 @@ def parseFile(self, filename): stru = self.parse(s) return stru + # End of class StructureParser diff --git a/src/diffpy/structure/pdffitstructure.py b/src/diffpy/structure/pdffitstructure.py index afafc314..c2ed21a1 100644 --- a/src/diffpy/structure/pdffitstructure.py +++ b/src/diffpy/structure/pdffitstructure.py @@ -21,6 +21,7 @@ # ---------------------------------------------------------------------------- + class PDFFitStructure(Structure): """PDFFitStructure --> Structure with extra pdffit member @@ -33,22 +34,21 @@ class PDFFitStructure(Structure): def __init__(self, *args, **kwargs): self.pdffit = { - 'scale' : 1.0, - 'delta1' : 0.0, - 'delta2' : 0.0, - 'sratio' : 1.0, - 'rcut' : 0.0, - 'spcgr' : 'P1', - 'spdiameter' : 0.0, - 'stepcut' : 0.0, - 'dcell' : 6*[0.0], - 'ncell' : [1, 1, 1, 0], + "scale": 1.0, + "delta1": 0.0, + "delta2": 0.0, + "sratio": 1.0, + "rcut": 0.0, + "spcgr": "P1", + "spdiameter": 0.0, + "stepcut": 0.0, + "dcell": 6 * [0.0], + "ncell": [1, 1, 1, 0], } Structure.__init__(self, *args, **kwargs) return - - def read(self, filename, format='auto'): + def read(self, filename, format="auto"): """Same as Structure.read, but update spcgr value in self.pdffit when parser can get spacegroup. @@ -56,12 +56,12 @@ def read(self, filename, format='auto'): See Structure.read() for more info. """ p = Structure.read(self, filename, format) - sg = getattr(p, 'spacegroup', None) - if sg: self.pdffit['spcgr'] = sg.short_name + sg = getattr(p, "spacegroup", None) + if sg: + self.pdffit["spcgr"] = sg.short_name return p - - def readStr(self, s, format='auto'): + def readStr(self, s, format="auto"): """Same as Structure.readStr, but update spcgr value in self.pdffit when parser can get spacegroup. @@ -69,8 +69,10 @@ def readStr(self, s, format='auto'): See Structure.readStr() for more info. """ p = Structure.readStr(self, s, format) - sg = getattr(p, 'spacegroup', None) - if sg: self.pdffit['spcgr'] = sg.short_name + sg = getattr(p, "spacegroup", None) + if sg: + self.pdffit["spcgr"] = sg.short_name return p + # End of class PDFFitStructure diff --git a/src/diffpy/structure/sgtbxspacegroups.py b/src/diffpy/structure/sgtbxspacegroups.py index 1cf198ff..0b5c382a 100644 --- a/src/diffpy/structure/sgtbxspacegroups.py +++ b/src/diffpy/structure/sgtbxspacegroups.py @@ -13,689 +13,704 @@ # ############################################################################## -'''Extra space group representations generated using sgtbx module from cctbx. +"""Extra space group representations generated using sgtbx module from cctbx. Import of this module extends the SpaceGroupList in the SpaceGroups module. Notable variables: sgtbxSpaceGroupList -- list of space group instances defined in this module -''' +""" -from diffpy.structure.spacegroupmod import SpaceGroup, SymOp from diffpy.structure.spacegroupmod import ( - Rot_X_Y_Z, Rot_mX_mY_mZ, Rot_mX_Y_mZ, Rot_X_mY_Z, - Rot_mX_mY_Z, Rot_X_mY_mZ, Rot_mX_Y_Z, Rot_X_Y_mZ, - Tr_0_0_0, Tr_0_12_0, Tr_12_12_0, Tr_0_0_12, - Tr_12_12_12, Tr_0_12_12, Tr_12_0_12, Tr_12_0_0, - Tr_14_14_14, Tr_14_34_34, Tr_34_14_34, Tr_34_34_14, + Rot_mX_mY_mZ, + Rot_mX_mY_Z, + Rot_mX_Y_mZ, + Rot_mX_Y_Z, + Rot_X_mY_mZ, + Rot_X_mY_Z, + Rot_X_Y_mZ, + Rot_X_Y_Z, + SpaceGroup, + SymOp, + Tr_0_0_0, + Tr_0_0_12, + Tr_0_12_0, + Tr_0_12_12, + Tr_12_0_0, + Tr_12_0_12, + Tr_12_12_0, + Tr_12_12_12, + Tr_14_14_14, + Tr_14_34_34, + Tr_34_14_34, + Tr_34_34_14, ) - ############################################################################## # generated using sgtbx_extra_groups.py ############################################################################## sg2003 = SpaceGroup( - number = 2003, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'P211', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 2 1 1', - symop_list = [ + number=2003, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P211", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="P 2 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), - ] + ], ) sg2004 = SpaceGroup( - number = 2004, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'P2111', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 21 1 1', - symop_list = [ + number=2004, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P2111", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="P 21 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), - ] + ], ) sg4005 = SpaceGroup( - number = 4005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A121', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 2 1', - symop_list = [ + number=4005, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A121", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="A 1 2 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), - ] + ], ) sg5005 = SpaceGroup( - number = 5005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I121', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 2 1', - symop_list = [ + number=5005, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I121", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="I 1 2 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), - ] + ], ) sg6005 = SpaceGroup( - number = 6005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A112', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 1 2', - symop_list = [ + number=6005, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A112", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="A 1 1 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_mX_mY_Z, Tr_0_12_12), - ] + ], ) sg7005 = SpaceGroup( - number = 7005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I112', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 1 2', - symop_list = [ + number=7005, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I112", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="I 1 1 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_mX_mY_Z, Tr_12_12_12), - ] + ], ) sg8005 = SpaceGroup( - number = 8005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'B211', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'B 2 1 1', - symop_list = [ + number=8005, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="B211", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="B 2 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_mZ, Tr_12_0_12), - ] + ], ) sg9005 = SpaceGroup( - number = 9005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'C211', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'C 2 1 1', - symop_list = [ + number=9005, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="C211", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="C 2 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), - ] + ], ) sg10005 = SpaceGroup( - number = 10005, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I211', - point_group_name = 'PG2', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 2 1 1', - symop_list = [ + number=10005, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I211", + point_group_name="PG2", + crystal_system="MONOCLINIC", + pdb_name="I 2 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_mZ, Tr_12_12_12), - ] + ], ) sg2006 = SpaceGroup( - number = 2006, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'Pm11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P m 1 1', - symop_list = [ + number=2006, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="Pm11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), - ] + ], ) sg2007 = SpaceGroup( - number = 2007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'P1n1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 n 1', - symop_list = [ + number=2007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P1n1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P 1 n 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), - ] + ], ) sg3007 = SpaceGroup( - number = 3007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'P1a1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 a 1', - symop_list = [ + number=3007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P1a1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P 1 a 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), - ] + ], ) sg4007 = SpaceGroup( - number = 4007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'P11a', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 1 a', - symop_list = [ + number=4007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P11a", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg5007 = SpaceGroup( - number = 5007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'P11n', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 1 n', - symop_list = [ + number=5007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="P11n", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg6007 = SpaceGroup( - number = 6007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'Pb11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P b 1 1', - symop_list = [ + number=6007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="Pb11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P b 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), - ] + ], ) sg7007 = SpaceGroup( - number = 7007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'Pn11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P n 1 1', - symop_list = [ + number=7007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="Pn11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P n 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_12), - ] + ], ) sg8007 = SpaceGroup( - number = 8007, - num_sym_equiv = 2, - num_primitive_sym_equiv = 2, - short_name = 'Pc11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'P c 1 1', - symop_list = [ + number=8007, + num_sym_equiv=2, + num_primitive_sym_equiv=2, + short_name="Pc11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="P c 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), - ] + ], ) sg2008 = SpaceGroup( - number = 2008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A1m1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 m 1', - symop_list = [ + number=2008, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A1m1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="A 1 m 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg3008 = SpaceGroup( - number = 3008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I1m1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 m 1', - symop_list = [ + number=3008, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I1m1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I 1 m 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), - ] + ], ) sg4008 = SpaceGroup( - number = 4008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A11m', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 1 m', - symop_list = [ + number=4008, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A11m", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="A 1 1 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg5008 = SpaceGroup( - number = 5008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I11m', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 1 m', - symop_list = [ + number=5008, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I11m", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I 1 1 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg6008 = SpaceGroup( - number = 6008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Bm11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'B m 1 1', - symop_list = [ + number=6008, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Bm11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="B m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), - ] + ], ) sg7008 = SpaceGroup( - number = 7008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Cm11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'C m 1 1', - symop_list = [ + number=7008, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Cm11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="C m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), - ] + ], ) sg8008 = SpaceGroup( - number = 8008, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Im11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I m 1 1', - symop_list = [ + number=8008, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Im11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), - ] + ], ) sg2009 = SpaceGroup( - number = 2009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A1n1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 n 1', - symop_list = [ + number=2009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A1n1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="A 1 n 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), - ] + ], ) sg3009 = SpaceGroup( - number = 3009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I1a1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 a 1', - symop_list = [ + number=3009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I1a1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I 1 a 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg4009 = SpaceGroup( - number = 4009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A1a1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 a 1', - symop_list = [ + number=4009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A1a1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="A 1 a 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), - ] + ], ) sg5009 = SpaceGroup( - number = 5009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'C1n1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'C 1 n 1', - symop_list = [ + number=5009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="C1n1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="C 1 n 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg6009 = SpaceGroup( - number = 6009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I1c1', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 c 1', - symop_list = [ + number=6009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I1c1", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I 1 c 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), - ] + ], ) sg7009 = SpaceGroup( - number = 7009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A11a', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 1 a', - symop_list = [ + number=7009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A11a", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="A 1 1 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg8009 = SpaceGroup( - number = 8009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'B11n', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'B 1 1 n', - symop_list = [ + number=8009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="B11n", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="B 1 1 n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), SymOp(Rot_X_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg9009 = SpaceGroup( - number = 9009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I11b', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 1 b', - symop_list = [ + number=9009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I11b", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I 1 1 b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg10009 = SpaceGroup( - number = 10009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'A11n', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 1 n', - symop_list = [ + number=10009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="A11n", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="A 1 1 n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), SymOp(Rot_X_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg11009 = SpaceGroup( - number = 11009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'I11a', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 1 a', - symop_list = [ + number=11009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="I11a", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I 1 1 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg12009 = SpaceGroup( - number = 12009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Bb11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'B b 1 1', - symop_list = [ + number=12009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Bb11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="B b 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_Y_Z, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), - ] + ], ) sg13009 = SpaceGroup( - number = 13009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Cn11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'C n 1 1', - symop_list = [ + number=13009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Cn11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="C n 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_Z, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_0_12_12), - ] + ], ) sg14009 = SpaceGroup( - number = 14009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Ic11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I c 1 1', - symop_list = [ + number=14009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Ic11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I c 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_0), - ] + ], ) sg15009 = SpaceGroup( - number = 15009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Cc11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'C c 1 1', - symop_list = [ + number=15009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Cc11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="C c 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_Y_Z, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_12), - ] + ], ) sg16009 = SpaceGroup( - number = 16009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Bn11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'B n 1 1', - symop_list = [ + number=16009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Bn11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="B n 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_Y_Z, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_0_12_12), - ] + ], ) sg17009 = SpaceGroup( - number = 17009, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Ib11', - point_group_name = 'PGm', - crystal_system = 'MONOCLINIC', - pdb_name = 'I b 1 1', - symop_list = [ + number=17009, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Ib11", + point_group_name="PGm", + crystal_system="MONOCLINIC", + pdb_name="I b 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_Y_Z, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), - ] + ], ) sg2010 = SpaceGroup( - number = 2010, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2/m11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 2/m 1 1', - symop_list = [ + number=2010, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2/m11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 2/m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), - ] + ], ) sg2011 = SpaceGroup( - number = 2011, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21/m11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 21/m 1 1', - symop_list = [ + number=2011, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21/m11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 21/m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_0), - ] + ], ) sg2012 = SpaceGroup( - number = 2012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A12/m1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 2/m 1', - symop_list = [ + number=2012, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A12/m1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="A 1 2/m 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -704,18 +719,18 @@ SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg3012 = SpaceGroup( - number = 3012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I12/m1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 2/m 1', - symop_list = [ + number=3012, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I12/m1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 1 2/m 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -724,18 +739,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), - ] + ], ) sg4012 = SpaceGroup( - number = 4012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A112/m', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 1 2/m', - symop_list = [ + number=4012, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A112/m", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="A 1 1 2/m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -744,18 +759,18 @@ SymOp(Rot_mX_mY_Z, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg5012 = SpaceGroup( - number = 5012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I112/m', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 1 2/m', - symop_list = [ + number=5012, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I112/m", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 1 1 2/m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -764,18 +779,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg6012 = SpaceGroup( - number = 6012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2/m11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'B 2/m 1 1', - symop_list = [ + number=6012, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2/m11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="B 2/m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -784,18 +799,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), - ] + ], ) sg7012 = SpaceGroup( - number = 7012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C2/m11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'C 2/m 1 1', - symop_list = [ + number=7012, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C2/m11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="C 2/m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -804,18 +819,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), - ] + ], ) sg8012 = SpaceGroup( - number = 8012, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I2/m11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 2/m 1 1', - symop_list = [ + number=8012, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I2/m11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 2/m 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -824,242 +839,242 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), - ] + ], ) sg2013 = SpaceGroup( - number = 2013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P12/n1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 2/n 1', - symop_list = [ + number=2013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P12/n1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 2/n 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), - ] + ], ) sg3013 = SpaceGroup( - number = 3013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P12/a1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 2/a 1', - symop_list = [ + number=3013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P12/a1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 2/a 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), - ] + ], ) sg4013 = SpaceGroup( - number = 4013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P112/a', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 1 2/a', - symop_list = [ + number=4013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P112/a", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 2/a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg5013 = SpaceGroup( - number = 5013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P112/n', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 1 2/n', - symop_list = [ + number=5013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P112/n", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 2/n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg6013 = SpaceGroup( - number = 6013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2/b11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 2/b 1 1', - symop_list = [ + number=6013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2/b11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 2/b 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), - ] + ], ) sg7013 = SpaceGroup( - number = 7013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2/n11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 2/n 1 1', - symop_list = [ + number=7013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2/n11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 2/n 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_12), - ] + ], ) sg8013 = SpaceGroup( - number = 8013, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2/c11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 2/c 1 1', - symop_list = [ + number=8013, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2/c11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 2/c 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), - ] + ], ) sg2014 = SpaceGroup( - number = 2014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P121/n1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 21/n 1', - symop_list = [ + number=2014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P121/n1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 21/n 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), - ] + ], ) sg3014 = SpaceGroup( - number = 3014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P121/a1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 21/a 1', - symop_list = [ + number=3014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P121/a1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 21/a 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), - ] + ], ) sg4014 = SpaceGroup( - number = 4014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P1121/a', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 1 21/a', - symop_list = [ + number=4014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P1121/a", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 21/a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg5014 = SpaceGroup( - number = 5014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P1121/n', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 1 1 21/n', - symop_list = [ + number=5014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P1121/n", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 1 1 21/n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg6014 = SpaceGroup( - number = 6014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21/b11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 21/b 1 1', - symop_list = [ + number=6014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21/b11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 21/b 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), - ] + ], ) sg7014 = SpaceGroup( - number = 7014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21/n11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 21/n 1 1', - symop_list = [ + number=7014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21/n11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 21/n 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_12_12), - ] + ], ) sg8014 = SpaceGroup( - number = 8014, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21/c11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'P 21/c 1 1', - symop_list = [ + number=8014, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21/c11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="P 21/c 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_12), - ] + ], ) sg2015 = SpaceGroup( - number = 2015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A12/n1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 2/n 1', - symop_list = [ + number=2015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A12/n1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="A 1 2/n 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1068,18 +1083,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), - ] + ], ) sg3015 = SpaceGroup( - number = 3015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I12/a1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 2/a 1', - symop_list = [ + number=3015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I12/a1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 1 2/a 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1088,18 +1103,18 @@ SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg4015 = SpaceGroup( - number = 4015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A12/a1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 2/a 1', - symop_list = [ + number=4015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A12/a1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="A 1 2/a 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1108,18 +1123,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), - ] + ], ) sg5015 = SpaceGroup( - number = 5015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C12/n1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'C 1 2/n 1', - symop_list = [ + number=5015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C12/n1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="C 1 2/n 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1128,18 +1143,18 @@ SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg6015 = SpaceGroup( - number = 6015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I12/c1', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 2/c 1', - symop_list = [ + number=6015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I12/c1", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 1 2/c 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1148,18 +1163,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), - ] + ], ) sg7015 = SpaceGroup( - number = 7015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A112/a', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 1 2/a', - symop_list = [ + number=7015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A112/a", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="A 1 1 2/a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1168,18 +1183,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg8015 = SpaceGroup( - number = 8015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B112/n', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'B 1 1 2/n', - symop_list = [ + number=8015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B112/n", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="B 1 1 2/n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1188,18 +1203,18 @@ SymOp(Rot_mX_mY_Z, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg9015 = SpaceGroup( - number = 9015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I112/b', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 1 2/b', - symop_list = [ + number=9015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I112/b", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 1 1 2/b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1208,18 +1223,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg10015 = SpaceGroup( - number = 10015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A112/n', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'A 1 1 2/n', - symop_list = [ + number=10015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A112/n", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="A 1 1 2/n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1228,18 +1243,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg11015 = SpaceGroup( - number = 11015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I112/a', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 1 1 2/a', - symop_list = [ + number=11015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I112/a", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 1 1 2/a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_12_0_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1248,18 +1263,18 @@ SymOp(Rot_mX_mY_Z, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg12015 = SpaceGroup( - number = 12015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2/b11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'B 2/b 1 1', - symop_list = [ + number=12015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2/b11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="B 2/b 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1268,18 +1283,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), - ] + ], ) sg13015 = SpaceGroup( - number = 13015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C2/n11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'C 2/n 1 1', - symop_list = [ + number=13015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C2/n11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="C 2/n 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1288,18 +1303,18 @@ SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_0_12_12), - ] + ], ) sg14015 = SpaceGroup( - number = 14015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I2/c11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 2/c 1 1', - symop_list = [ + number=14015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I2/c11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 2/c 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1308,18 +1323,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_0), - ] + ], ) sg15015 = SpaceGroup( - number = 15015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C2/c11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'C 2/c 1 1', - symop_list = [ + number=15015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C2/c11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="C 2/c 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1328,18 +1343,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_12), - ] + ], ) sg16015 = SpaceGroup( - number = 16015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2/n11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'B 2/n 1 1', - symop_list = [ + number=16015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2/n11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="B 2/n 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1348,18 +1363,18 @@ SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_0_12_12), - ] + ], ) sg17015 = SpaceGroup( - number = 17015, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I2/b11', - point_group_name = 'PG2/m', - crystal_system = 'MONOCLINIC', - pdb_name = 'I 2/b 1 1', - symop_list = [ + number=17015, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I2/b11", + point_group_name="PG2/m", + crystal_system="MONOCLINIC", + pdb_name="I 2/b 1 1", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_mY_mZ, Tr_0_0_0), @@ -1368,18 +1383,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), - ] + ], ) sg2020 = SpaceGroup( - number = 2020, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A2122', - point_group_name = 'PG222', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A 21 2 2', - symop_list = [ + number=2020, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A2122", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="A 21 2 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -1388,18 +1403,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_Z, Tr_12_12_12), - ] + ], ) sg3020 = SpaceGroup( - number = 3020, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2212', - point_group_name = 'PG222', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B 2 21 2', - symop_list = [ + number=3020, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2212", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="B 2 21 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -1408,18 +1423,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_mY_Z, Tr_12_0_12), - ] + ], ) sg2021 = SpaceGroup( - number = 2021, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A222', - point_group_name = 'PG222', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A 2 2 2', - symop_list = [ + number=2021, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A222", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="A 2 2 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -1428,18 +1443,18 @@ SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_mY_Z, Tr_0_12_12), - ] + ], ) sg3021 = SpaceGroup( - number = 3021, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B222', - point_group_name = 'PG222', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B 2 2 2', - symop_list = [ + number=3021, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B222", + point_group_name="PG222", + crystal_system="ORTHORHOMBIC", + pdb_name="B 2 2 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -1448,626 +1463,626 @@ SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), SymOp(Rot_mX_mY_Z, Tr_12_0_12), - ] + ], ) sg1025 = SpaceGroup( - number = 1025, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2mm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 m m', - symop_list = [ + number=1025, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2mm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg2025 = SpaceGroup( - number = 2025, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pm2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m 2 m', - symop_list = [ + number=2025, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pm2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg1026 = SpaceGroup( - number = 1026, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pcm21', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c m 21', - symop_list = [ + number=1026, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pcm21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c m 21", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_12), SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_0), - ] + ], ) sg2026 = SpaceGroup( - number = 2026, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21ma', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 m a', - symop_list = [ + number=2026, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21ma", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 m a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg3026 = SpaceGroup( - number = 3026, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21am', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 a m', - symop_list = [ + number=3026, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21am", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg4026 = SpaceGroup( - number = 4026, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pb21m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b 21 m', - symop_list = [ + number=4026, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pb21m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b 21 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg5026 = SpaceGroup( - number = 5026, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pm21b', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m 21 b', - symop_list = [ + number=5026, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pm21b", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m 21 b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg1027 = SpaceGroup( - number = 1027, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2aa', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 a a', - symop_list = [ + number=1027, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2aa", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg2027 = SpaceGroup( - number = 2027, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pb2b', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b 2 b', - symop_list = [ + number=2027, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pb2b", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b 2 b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg1028 = SpaceGroup( - number = 1028, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pbm2', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b m 2', - symop_list = [ + number=1028, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pbm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b m 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), - ] + ], ) sg2028 = SpaceGroup( - number = 2028, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2mb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 m b', - symop_list = [ + number=2028, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2mb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg3028 = SpaceGroup( - number = 3028, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2cm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 c m', - symop_list = [ + number=3028, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2cm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg4028 = SpaceGroup( - number = 4028, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pc2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c 2 m', - symop_list = [ + number=4028, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pc2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg5028 = SpaceGroup( - number = 5028, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pm2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m 2 a', - symop_list = [ + number=5028, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pm2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg1029 = SpaceGroup( - number = 1029, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pbc21', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b c 21', - symop_list = [ + number=1029, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pbc21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b c 21", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_12), SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg2029 = SpaceGroup( - number = 2029, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21ab', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 a b', - symop_list = [ + number=2029, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21ab", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg3029 = SpaceGroup( - number = 3029, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21ca', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 c a', - symop_list = [ + number=3029, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21ca", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 c a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg4029 = SpaceGroup( - number = 4029, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pc21b', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c 21 b', - symop_list = [ + number=4029, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pc21b", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c 21 b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg5029 = SpaceGroup( - number = 5029, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pb21a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b 21 a', - symop_list = [ + number=5029, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pb21a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b 21 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg1030 = SpaceGroup( - number = 1030, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pcn2', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c n 2', - symop_list = [ + number=1030, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pcn2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c n 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), - ] + ], ) sg2030 = SpaceGroup( - number = 2030, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2na', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 n a', - symop_list = [ + number=2030, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2na", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 n a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg3030 = SpaceGroup( - number = 3030, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2an', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 a n', - symop_list = [ + number=3030, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2an", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 a n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg4030 = SpaceGroup( - number = 4030, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pb2n', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b 2 n', - symop_list = [ + number=4030, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pb2n", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b 2 n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg5030 = SpaceGroup( - number = 5030, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pn2b', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n 2 b', - symop_list = [ + number=5030, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pn2b", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n 2 b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1031 = SpaceGroup( - number = 1031, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pnm21', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n m 21', - symop_list = [ + number=1031, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pnm21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n m 21", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_12_12), SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_0), - ] + ], ) sg2031 = SpaceGroup( - number = 2031, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21mn', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 m n', - symop_list = [ + number=2031, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21mn", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 m n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg3031 = SpaceGroup( - number = 3031, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21nm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 n m', - symop_list = [ + number=3031, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21nm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 n m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg4031 = SpaceGroup( - number = 4031, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pn21m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n 21 m', - symop_list = [ + number=4031, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pn21m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n 21 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg5031 = SpaceGroup( - number = 5031, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pm21n', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m 21 n', - symop_list = [ + number=5031, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pm21n", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P m 21 n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg1032 = SpaceGroup( - number = 1032, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2cb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 c b', - symop_list = [ + number=1032, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2cb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2032 = SpaceGroup( - number = 2032, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pc2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c 2 a', - symop_list = [ + number=2032, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pc2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1033 = SpaceGroup( - number = 1033, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pbn21', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b n 21', - symop_list = [ + number=1033, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pbn21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P b n 21", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_12), SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), - ] + ], ) sg2033 = SpaceGroup( - number = 2033, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21nb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 n b', - symop_list = [ + number=2033, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21nb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 n b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg3033 = SpaceGroup( - number = 3033, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P21cn', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 21 c n', - symop_list = [ + number=3033, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P21cn", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 21 c n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg4033 = SpaceGroup( - number = 4033, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pc21n', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c 21 n', - symop_list = [ + number=4033, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pc21n", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P c 21 n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg5033 = SpaceGroup( - number = 5033, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pn21a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n 21 a', - symop_list = [ + number=5033, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pn21a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n 21 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1034 = SpaceGroup( - number = 1034, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'P2nn', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P 2 n n', - symop_list = [ + number=1034, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="P2nn", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P 2 n n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2034 = SpaceGroup( - number = 2034, - num_sym_equiv = 4, - num_primitive_sym_equiv = 4, - short_name = 'Pn2n', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n 2 n', - symop_list = [ + number=2034, + num_sym_equiv=4, + num_primitive_sym_equiv=4, + short_name="Pn2n", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="P n 2 n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1035 = SpaceGroup( - number = 1035, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A2mm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A 2 m m', - symop_list = [ + number=1035, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A2mm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A 2 m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), @@ -2076,18 +2091,18 @@ SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2035 = SpaceGroup( - number = 2035, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bm2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m 2 m', - symop_list = [ + number=2035, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bm2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B m 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), @@ -2096,18 +2111,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1036 = SpaceGroup( - number = 1036, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Ccm21', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C c m 21', - symop_list = [ + number=1036, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Ccm21", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C c m 21", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_12), SymOp(Rot_mX_Y_Z, Tr_0_0_12), @@ -2116,18 +2131,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), - ] + ], ) sg2036 = SpaceGroup( - number = 2036, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A21ma', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A 21 m a', - symop_list = [ + number=2036, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A21ma", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A 21 m a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), @@ -2136,18 +2151,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg3036 = SpaceGroup( - number = 3036, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A21am', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A 21 a m', - symop_list = [ + number=3036, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A21am", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A 21 a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), @@ -2156,18 +2171,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg4036 = SpaceGroup( - number = 4036, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bb21m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b 21 m', - symop_list = [ + number=4036, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bb21m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B b 21 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), @@ -2176,18 +2191,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg5036 = SpaceGroup( - number = 5036, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bm21b', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m 21 b', - symop_list = [ + number=5036, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bm21b", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B m 21 b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), @@ -2196,18 +2211,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1037 = SpaceGroup( - number = 1037, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'A2aa', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A 2 a a', - symop_list = [ + number=1037, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="A2aa", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A 2 a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), @@ -2216,18 +2231,18 @@ SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2037 = SpaceGroup( - number = 2037, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bb2b', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b 2 b', - symop_list = [ + number=2037, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bb2b", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B b 2 b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), @@ -2236,18 +2251,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1038 = SpaceGroup( - number = 1038, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bmm2', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m m 2', - symop_list = [ + number=1038, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bmm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B m m 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), @@ -2256,18 +2271,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), - ] + ], ) sg2038 = SpaceGroup( - number = 2038, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2mm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B 2 m m', - symop_list = [ + number=2038, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2mm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B 2 m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), @@ -2276,18 +2291,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg3038 = SpaceGroup( - number = 3038, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C2mm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C 2 m m', - symop_list = [ + number=3038, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C2mm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), @@ -2296,18 +2311,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg4038 = SpaceGroup( - number = 4038, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Cm2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C m 2 m', - symop_list = [ + number=4038, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Cm2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C m 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), @@ -2316,18 +2331,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg5038 = SpaceGroup( - number = 5038, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Am2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A m 2 m', - symop_list = [ + number=5038, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Am2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A m 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), @@ -2336,18 +2351,18 @@ SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1039 = SpaceGroup( - number = 1039, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bma2', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m a 2', - symop_list = [ + number=1039, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bma2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B m a 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_0), @@ -2356,18 +2371,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), - ] + ], ) sg2039 = SpaceGroup( - number = 2039, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2cm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B 2 c m', - symop_list = [ + number=2039, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2cm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B 2 c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), @@ -2376,18 +2391,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg3039 = SpaceGroup( - number = 3039, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C2mb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C 2 m b', - symop_list = [ + number=3039, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C2mb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), @@ -2396,18 +2411,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg4039 = SpaceGroup( - number = 4039, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Cm2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C m 2 a', - symop_list = [ + number=4039, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Cm2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C m 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_0), @@ -2416,18 +2431,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg5039 = SpaceGroup( - number = 5039, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Ac2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A c 2 m', - symop_list = [ + number=5039, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Ac2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A c 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), @@ -2436,18 +2451,18 @@ SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg1040 = SpaceGroup( - number = 1040, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bbm2', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b m 2', - symop_list = [ + number=1040, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bbm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B b m 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), @@ -2456,18 +2471,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), - ] + ], ) sg2040 = SpaceGroup( - number = 2040, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2mb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B 2 m b', - symop_list = [ + number=2040, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2mb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B 2 m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), @@ -2476,18 +2491,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg3040 = SpaceGroup( - number = 3040, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C2cm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C 2 c m', - symop_list = [ + number=3040, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C2cm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), @@ -2496,18 +2511,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg4040 = SpaceGroup( - number = 4040, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Cc2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C c 2 m', - symop_list = [ + number=4040, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Cc2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C c 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), @@ -2516,18 +2531,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg5040 = SpaceGroup( - number = 5040, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Am2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A m 2 a', - symop_list = [ + number=5040, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Am2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A m 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_0), @@ -2536,18 +2551,18 @@ SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1041 = SpaceGroup( - number = 1041, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Bba2', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b a 2', - symop_list = [ + number=1041, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Bba2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B b a 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), @@ -2556,18 +2571,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_0_12), SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), - ] + ], ) sg2041 = SpaceGroup( - number = 2041, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'B2cb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B 2 c b', - symop_list = [ + number=2041, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="B2cb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="B 2 c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), @@ -2576,18 +2591,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg3041 = SpaceGroup( - number = 3041, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'C2cb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C 2 c b', - symop_list = [ + number=3041, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="C2cb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C 2 c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), @@ -2596,18 +2611,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg4041 = SpaceGroup( - number = 4041, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Cc2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C c 2 a', - symop_list = [ + number=4041, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Cc2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="C c 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_12), @@ -2616,18 +2631,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg5041 = SpaceGroup( - number = 5041, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Ac2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A c 2 a', - symop_list = [ + number=5041, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Ac2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="A c 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), @@ -2636,18 +2651,18 @@ SymOp(Rot_mX_Y_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1042 = SpaceGroup( - number = 1042, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'F2mm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'F 2 m m', - symop_list = [ + number=1042, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="F2mm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="F 2 m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), @@ -2664,18 +2679,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg2042 = SpaceGroup( - number = 2042, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Fm2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'F m 2 m', - symop_list = [ + number=2042, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Fm2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="F m 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), @@ -2692,18 +2707,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg1043 = SpaceGroup( - number = 1043, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'F2dd', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'F 2 d d', - symop_list = [ + number=1043, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="F2dd", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="F 2 d d", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_14_14_14), @@ -2720,18 +2735,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_34_34_14), SymOp(Rot_X_Y_mZ, Tr_34_34_14), - ] + ], ) sg2043 = SpaceGroup( - number = 2043, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Fd2d', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'F d 2 d', - symop_list = [ + number=2043, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Fd2d", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="F d 2 d", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_14_14_14), @@ -2748,18 +2763,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_Z, Tr_34_34_14), SymOp(Rot_X_Y_mZ, Tr_34_34_14), - ] + ], ) sg1044 = SpaceGroup( - number = 1044, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I2mm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I 2 m m', - symop_list = [ + number=1044, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I2mm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2 m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), @@ -2768,18 +2783,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2044 = SpaceGroup( - number = 2044, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Im2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I m 2 m', - symop_list = [ + number=2044, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Im2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I m 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_0), @@ -2788,18 +2803,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1045 = SpaceGroup( - number = 1045, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I2cb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I 2 c b', - symop_list = [ + number=1045, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I2cb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2 c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), @@ -2808,18 +2823,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2045 = SpaceGroup( - number = 2045, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Ic2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I c 2 a', - symop_list = [ + number=2045, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Ic2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I c 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), @@ -2828,18 +2843,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1046 = SpaceGroup( - number = 1046, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Ibm2', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I b m 2', - symop_list = [ + number=1046, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Ibm2", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I b m 2", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_mY_Z, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_12_0), @@ -2848,18 +2863,18 @@ SymOp(Rot_mX_mY_Z, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), - ] + ], ) sg2046 = SpaceGroup( - number = 2046, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I2mb', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I 2 m b', - symop_list = [ + number=2046, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I2mb", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2 m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), @@ -2868,18 +2883,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg3046 = SpaceGroup( - number = 3046, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'I2cm', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I 2 c m', - symop_list = [ + number=3046, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="I2cm", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I 2 c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), @@ -2888,18 +2903,18 @@ SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg4046 = SpaceGroup( - number = 4046, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Ic2m', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I c 2 m', - symop_list = [ + number=4046, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Ic2m", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I c 2 m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_0_0_12), @@ -2908,18 +2923,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg5046 = SpaceGroup( - number = 5046, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Im2a', - point_group_name = 'PGmm2', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I m 2 a', - symop_list = [ + number=5046, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Im2a", + point_group_name="PGmm2", + crystal_system="ORTHORHOMBIC", + pdb_name="I m 2 a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_Z, Tr_12_0_0), @@ -2928,18 +2943,18 @@ SymOp(Rot_mX_Y_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1049 = SpaceGroup( - number = 1049, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m a a', - symop_list = [ + number=1049, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -2948,18 +2963,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg2049 = SpaceGroup( - number = 2049, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b m b', - symop_list = [ + number=2049, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -2968,18 +2983,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg1050 = SpaceGroup( - number = 1050, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pncb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n c b', - symop_list = [ + number=1050, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pncb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -2988,18 +3003,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2050 = SpaceGroup( - number = 2050, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pncb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n c b', - symop_list = [ + number=2050, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pncb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), @@ -3008,18 +3023,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg3050 = SpaceGroup( - number = 3050, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcna', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c n a', - symop_list = [ + number=3050, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcna", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c n a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3028,18 +3043,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg4050 = SpaceGroup( - number = 4050, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcna', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c n a', - symop_list = [ + number=4050, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcna", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c n a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), @@ -3048,18 +3063,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg1051 = SpaceGroup( - number = 1051, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m m b', - symop_list = [ + number=1051, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -3068,18 +3083,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg2051 = SpaceGroup( - number = 2051, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b m m', - symop_list = [ + number=2051, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -3088,18 +3103,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg3051 = SpaceGroup( - number = 3051, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c m m', - symop_list = [ + number=3051, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3108,18 +3123,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg4051 = SpaceGroup( - number = 4051, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmcm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m c m', - symop_list = [ + number=4051, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmcm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), @@ -3128,18 +3143,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg5051 = SpaceGroup( - number = 5051, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmam', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m a m', - symop_list = [ + number=5051, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -3148,18 +3163,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg1052 = SpaceGroup( - number = 1052, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnnb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n n b', - symop_list = [ + number=1052, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnnb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n n b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), @@ -3168,18 +3183,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg2052 = SpaceGroup( - number = 2052, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbnn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b n n', - symop_list = [ + number=2052, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbnn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b n n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), @@ -3188,18 +3203,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg3052 = SpaceGroup( - number = 3052, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcnn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c n n', - symop_list = [ + number=3052, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcnn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c n n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), @@ -3208,18 +3223,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg4052 = SpaceGroup( - number = 4052, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pncn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n c n', - symop_list = [ + number=4052, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pncn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n c n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), @@ -3228,18 +3243,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg5052 = SpaceGroup( - number = 5052, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnan', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n a n', - symop_list = [ + number=5052, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnan", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n a n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -3248,18 +3263,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1053 = SpaceGroup( - number = 1053, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n m b', - symop_list = [ + number=1053, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3268,18 +3283,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2053 = SpaceGroup( - number = 2053, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbmn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b m n', - symop_list = [ + number=2053, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbmn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b m n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3288,18 +3303,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg3053 = SpaceGroup( - number = 3053, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcnm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c n m', - symop_list = [ + number=3053, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcnm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c n m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), @@ -3308,18 +3323,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg4053 = SpaceGroup( - number = 4053, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pncm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n c m', - symop_list = [ + number=4053, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pncm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), @@ -3328,18 +3343,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg5053 = SpaceGroup( - number = 5053, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pman', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m a n', - symop_list = [ + number=5053, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pman", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m a n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -3348,18 +3363,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg1054 = SpaceGroup( - number = 1054, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pccb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c c b', - symop_list = [ + number=1054, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pccb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), @@ -3368,18 +3383,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg2054 = SpaceGroup( - number = 2054, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b a a', - symop_list = [ + number=2054, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -3388,18 +3403,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg3054 = SpaceGroup( - number = 3054, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c a a', - symop_list = [ + number=3054, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -3408,18 +3423,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg4054 = SpaceGroup( - number = 4054, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbcb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b c b', - symop_list = [ + number=4054, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbcb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), @@ -3428,18 +3443,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg5054 = SpaceGroup( - number = 5054, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbab', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b a b', - symop_list = [ + number=5054, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbab", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -3448,18 +3463,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg1055 = SpaceGroup( - number = 1055, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmcb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m c b', - symop_list = [ + number=1055, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmcb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), @@ -3468,18 +3483,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2055 = SpaceGroup( - number = 2055, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcma', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c m a', - symop_list = [ + number=2055, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c m a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3488,18 +3503,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1056 = SpaceGroup( - number = 1056, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n a a', - symop_list = [ + number=1056, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -3508,18 +3523,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg2056 = SpaceGroup( - number = 2056, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbnb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b n b', - symop_list = [ + number=2056, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbnb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b n b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), @@ -3528,18 +3543,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1057 = SpaceGroup( - number = 1057, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcam', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c a m', - symop_list = [ + number=1057, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -3548,18 +3563,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg2057 = SpaceGroup( - number = 2057, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmca', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m c a', - symop_list = [ + number=2057, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmca", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m c a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), @@ -3568,18 +3583,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg3057 = SpaceGroup( - number = 3057, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmab', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m a b', - symop_list = [ + number=3057, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmab", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -3588,18 +3603,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg4057 = SpaceGroup( - number = 4057, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbma', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b m a', - symop_list = [ + number=4057, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b m a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -3608,18 +3623,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg5057 = SpaceGroup( - number = 5057, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c m b', - symop_list = [ + number=5057, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -3628,18 +3643,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1058 = SpaceGroup( - number = 1058, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmnn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m n n', - symop_list = [ + number=1058, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmnn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m n n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), @@ -3648,18 +3663,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2058 = SpaceGroup( - number = 2058, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnmn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n m n', - symop_list = [ + number=2058, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnmn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n m n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3668,18 +3683,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2059 = SpaceGroup( - number = 2059, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n m m', - symop_list = [ + number=2059, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), @@ -3688,18 +3703,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_0), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg3059 = SpaceGroup( - number = 3059, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n m m', - symop_list = [ + number=3059, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -3708,18 +3723,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg4059 = SpaceGroup( - number = 4059, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmnm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m n m', - symop_list = [ + number=4059, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmnm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m n m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3728,18 +3743,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_0), - ] + ], ) sg5059 = SpaceGroup( - number = 5059, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmnm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m n m', - symop_list = [ + number=5059, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmnm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m n m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), @@ -3748,18 +3763,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg1060 = SpaceGroup( - number = 1060, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcan', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c a n', - symop_list = [ + number=1060, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcan", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c a n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -3768,18 +3783,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2060 = SpaceGroup( - number = 2060, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnca', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n c a', - symop_list = [ + number=2060, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnca", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n c a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), @@ -3788,18 +3803,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_0), - ] + ], ) sg3060 = SpaceGroup( - number = 3060, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnab', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n a b', - symop_list = [ + number=3060, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnab", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -3808,18 +3823,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_0_0), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg4060 = SpaceGroup( - number = 4060, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbna', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b n a', - symop_list = [ + number=4060, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbna", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b n a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), @@ -3828,18 +3843,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg5060 = SpaceGroup( - number = 5060, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcnb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c n b', - symop_list = [ + number=5060, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcnb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c n b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), @@ -3848,18 +3863,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg1061 = SpaceGroup( - number = 1061, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcab', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c a b', - symop_list = [ + number=1061, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcab", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -3868,18 +3883,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1062 = SpaceGroup( - number = 1062, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmnb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m n b', - symop_list = [ + number=1062, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmnb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m n b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), @@ -3888,18 +3903,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2062 = SpaceGroup( - number = 2062, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pbnm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P b n m', - symop_list = [ + number=2062, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pbnm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P b n m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_12), @@ -3908,18 +3923,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg3062 = SpaceGroup( - number = 3062, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pcmn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P c m n', - symop_list = [ + number=3062, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pcmn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P c m n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -3928,18 +3943,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_0_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg4062 = SpaceGroup( - number = 4062, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pmcn', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P m c n', - symop_list = [ + number=4062, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pmcn", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P m c n", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_12), @@ -3948,18 +3963,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_0), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg5062 = SpaceGroup( - number = 5062, - num_sym_equiv = 8, - num_primitive_sym_equiv = 8, - short_name = 'Pnam', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'P n a m', - symop_list = [ + number=5062, + num_sym_equiv=8, + num_primitive_sym_equiv=8, + short_name="Pnam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="P n a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_12), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -3968,18 +3983,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg1063 = SpaceGroup( - number = 1063, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Ccmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C c m m', - symop_list = [ + number=1063, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Ccmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C c m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -3996,18 +4011,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2063 = SpaceGroup( - number = 2063, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Amma', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A m m a', - symop_list = [ + number=2063, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Amma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A m m a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4024,18 +4039,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg3063 = SpaceGroup( - number = 3063, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Amam', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A m a m', - symop_list = [ + number=3063, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Amam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A m a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4052,18 +4067,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg4063 = SpaceGroup( - number = 4063, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bbmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b m m', - symop_list = [ + number=4063, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bbmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B b m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -4080,18 +4095,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg5063 = SpaceGroup( - number = 5063, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bmmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m m b', - symop_list = [ + number=5063, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bmmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B m m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -4108,18 +4123,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1064 = SpaceGroup( - number = 1064, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Ccmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C c m b', - symop_list = [ + number=1064, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Ccmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C c m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4136,18 +4151,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2064 = SpaceGroup( - number = 2064, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Abma', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A b m a', - symop_list = [ + number=2064, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Abma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A b m a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4164,18 +4179,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg3064 = SpaceGroup( - number = 3064, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Acam', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A c a m', - symop_list = [ + number=3064, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Acam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A c a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -4192,18 +4207,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg4064 = SpaceGroup( - number = 4064, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bbcm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b c m', - symop_list = [ + number=4064, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bbcm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B b c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -4220,18 +4235,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg5064 = SpaceGroup( - number = 5064, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bmab', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m a b', - symop_list = [ + number=5064, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bmab", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B m a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -4248,18 +4263,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1065 = SpaceGroup( - number = 1065, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Ammm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A m m m', - symop_list = [ + number=1065, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Ammm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A m m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4276,18 +4291,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2065 = SpaceGroup( - number = 2065, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bmmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m m m', - symop_list = [ + number=2065, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bmmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B m m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4304,18 +4319,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1066 = SpaceGroup( - number = 1066, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Amaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A m a a', - symop_list = [ + number=1066, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Amaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A m a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4332,18 +4347,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg2066 = SpaceGroup( - number = 2066, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bbmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b m b', - symop_list = [ + number=2066, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bbmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B b m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4360,18 +4375,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1067 = SpaceGroup( - number = 1067, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Cmmb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C m m b', - symop_list = [ + number=1067, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Cmmb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C m m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4388,18 +4403,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg2067 = SpaceGroup( - number = 2067, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Abmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A b m m', - symop_list = [ + number=2067, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Abmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A b m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4416,18 +4431,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg3067 = SpaceGroup( - number = 3067, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Acmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A c m m', - symop_list = [ + number=3067, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Acmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A c m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -4444,18 +4459,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg4067 = SpaceGroup( - number = 4067, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bmcm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m c m', - symop_list = [ + number=4067, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bmcm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B m c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4472,18 +4487,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg5067 = SpaceGroup( - number = 5067, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bmam', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B m a m', - symop_list = [ + number=5067, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bmam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B m a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4500,18 +4515,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_0_12), - ] + ], ) sg1068 = SpaceGroup( - number = 1068, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Cccb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'C c c b', - symop_list = [ + number=1068, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Cccb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="C c c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_12_0_12), @@ -4528,18 +4543,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_0), - ] + ], ) sg2068 = SpaceGroup( - number = 2068, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Abaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A b a a', - symop_list = [ + number=2068, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Abaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A b a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4556,18 +4571,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg3068 = SpaceGroup( - number = 3068, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Abaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A b a a', - symop_list = [ + number=3068, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Abaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A b a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_12_0), @@ -4584,18 +4599,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg4068 = SpaceGroup( - number = 4068, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Acaa', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'A c a a', - symop_list = [ + number=4068, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Acaa", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="A c a a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4612,18 +4627,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg5068 = SpaceGroup( - number = 5068, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bbcb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b c b', - symop_list = [ + number=5068, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bbcb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B b c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4640,18 +4655,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg6068 = SpaceGroup( - number = 6068, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bbcb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b c b', - symop_list = [ + number=6068, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bbcb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B b c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4668,18 +4683,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg7068 = SpaceGroup( - number = 7068, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Bbab', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'B b a b', - symop_list = [ + number=7068, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Bbab", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="B b a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_12_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4696,18 +4711,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg1072 = SpaceGroup( - number = 1072, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Imcb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I m c b', - symop_list = [ + number=1072, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Imcb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I m c b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4724,18 +4739,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2072 = SpaceGroup( - number = 2072, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Icma', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I c m a', - symop_list = [ + number=2072, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Icma", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I c m a", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4752,18 +4767,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_0_12), - ] + ], ) sg1073 = SpaceGroup( - number = 1073, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Icab', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I c a b', - symop_list = [ + number=1073, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Icab", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I c a b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), @@ -4780,18 +4795,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg1074 = SpaceGroup( - number = 1074, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Immb', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I m m b', - symop_list = [ + number=1074, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Immb", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I m m b", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4808,18 +4823,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_0_12_12), - ] + ], ) sg2074 = SpaceGroup( - number = 2074, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Ibmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I b m m', - symop_list = [ + number=2074, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Ibmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I b m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_12), SymOp(Rot_mX_Y_mZ, Tr_0_0_0), @@ -4836,18 +4851,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_0), SymOp(Rot_X_mY_Z, Tr_12_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) sg3074 = SpaceGroup( - number = 3074, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Icmm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I c m m', - symop_list = [ + number=3074, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Icmm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I c m m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_12_0), SymOp(Rot_mX_Y_mZ, Tr_0_12_0), @@ -4864,18 +4879,18 @@ SymOp(Rot_mX_Y_Z, Tr_12_0_12), SymOp(Rot_X_mY_Z, Tr_12_0_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg4074 = SpaceGroup( - number = 4074, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Imcm', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I m c m', - symop_list = [ + number=4074, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Imcm", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I m c m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_12_0_0), SymOp(Rot_mX_Y_mZ, Tr_12_0_0), @@ -4892,18 +4907,18 @@ SymOp(Rot_mX_Y_Z, Tr_0_12_12), SymOp(Rot_X_mY_Z, Tr_0_12_12), SymOp(Rot_X_Y_mZ, Tr_12_12_12), - ] + ], ) sg5074 = SpaceGroup( - number = 5074, - num_sym_equiv = 16, - num_primitive_sym_equiv = 16, - short_name = 'Imam', - point_group_name = 'PGmmm', - crystal_system = 'ORTHORHOMBIC', - pdb_name = 'I m a m', - symop_list = [ + number=5074, + num_sym_equiv=16, + num_primitive_sym_equiv=16, + short_name="Imam", + point_group_name="PGmmm", + crystal_system="ORTHORHOMBIC", + pdb_name="I m a m", + symop_list=[ SymOp(Rot_X_Y_Z, Tr_0_0_0), SymOp(Rot_X_mY_mZ, Tr_0_0_0), SymOp(Rot_mX_Y_mZ, Tr_0_0_12), @@ -4920,7 +4935,7 @@ SymOp(Rot_mX_Y_Z, Tr_12_12_12), SymOp(Rot_X_mY_Z, Tr_12_12_0), SymOp(Rot_X_Y_mZ, Tr_12_12_0), - ] + ], ) ############################################################################## @@ -4929,36 +4944,253 @@ # list of all groups in this module sgtbxSpaceGroupList = [ - sg2003, sg2004, sg4005, sg5005, sg6005, sg7005, sg8005, sg9005, - sg10005, sg2006, sg2007, sg3007, sg4007, sg5007, sg6007, sg7007, - sg8007, sg2008, sg3008, sg4008, sg5008, sg6008, sg7008, sg8008, - sg2009, sg3009, sg4009, sg5009, sg6009, sg7009, sg8009, sg9009, - sg10009, sg11009, sg12009, sg13009, sg14009, sg15009, sg16009, - sg17009, sg2010, sg2011, sg2012, sg3012, sg4012, sg5012, sg6012, - sg7012, sg8012, sg2013, sg3013, sg4013, sg5013, sg6013, sg7013, - sg8013, sg2014, sg3014, sg4014, sg5014, sg6014, sg7014, sg8014, - sg2015, sg3015, sg4015, sg5015, sg6015, sg7015, sg8015, sg9015, - sg10015, sg11015, sg12015, sg13015, sg14015, sg15015, sg16015, - sg17015, sg2020, sg3020, sg2021, sg3021, sg1025, sg2025, sg1026, - sg2026, sg3026, sg4026, sg5026, sg1027, sg2027, sg1028, sg2028, - sg3028, sg4028, sg5028, sg1029, sg2029, sg3029, sg4029, sg5029, - sg1030, sg2030, sg3030, sg4030, sg5030, sg1031, sg2031, sg3031, - sg4031, sg5031, sg1032, sg2032, sg1033, sg2033, sg3033, sg4033, - sg5033, sg1034, sg2034, sg1035, sg2035, sg1036, sg2036, sg3036, - sg4036, sg5036, sg1037, sg2037, sg1038, sg2038, sg3038, sg4038, - sg5038, sg1039, sg2039, sg3039, sg4039, sg5039, sg1040, sg2040, - sg3040, sg4040, sg5040, sg1041, sg2041, sg3041, sg4041, sg5041, - sg1042, sg2042, sg1043, sg2043, sg1044, sg2044, sg1045, sg2045, - sg1046, sg2046, sg3046, sg4046, sg5046, sg1049, sg2049, sg1050, - sg2050, sg3050, sg4050, sg1051, sg2051, sg3051, sg4051, sg5051, - sg1052, sg2052, sg3052, sg4052, sg5052, sg1053, sg2053, sg3053, - sg4053, sg5053, sg1054, sg2054, sg3054, sg4054, sg5054, sg1055, - sg2055, sg1056, sg2056, sg1057, sg2057, sg3057, sg4057, sg5057, - sg1058, sg2058, sg2059, sg3059, sg4059, sg5059, sg1060, sg2060, - sg3060, sg4060, sg5060, sg1061, sg1062, sg2062, sg3062, sg4062, - sg5062, sg1063, sg2063, sg3063, sg4063, sg5063, sg1064, sg2064, - sg3064, sg4064, sg5064, sg1065, sg2065, sg1066, sg2066, sg1067, - sg2067, sg3067, sg4067, sg5067, sg1068, sg2068, sg3068, sg4068, - sg5068, sg6068, sg7068, sg1072, sg2072, sg1073, sg1074, sg2074, - sg3074, sg4074, sg5074, + sg2003, + sg2004, + sg4005, + sg5005, + sg6005, + sg7005, + sg8005, + sg9005, + sg10005, + sg2006, + sg2007, + sg3007, + sg4007, + sg5007, + sg6007, + sg7007, + sg8007, + sg2008, + sg3008, + sg4008, + sg5008, + sg6008, + sg7008, + sg8008, + sg2009, + sg3009, + sg4009, + sg5009, + sg6009, + sg7009, + sg8009, + sg9009, + sg10009, + sg11009, + sg12009, + sg13009, + sg14009, + sg15009, + sg16009, + sg17009, + sg2010, + sg2011, + sg2012, + sg3012, + sg4012, + sg5012, + sg6012, + sg7012, + sg8012, + sg2013, + sg3013, + sg4013, + sg5013, + sg6013, + sg7013, + sg8013, + sg2014, + sg3014, + sg4014, + sg5014, + sg6014, + sg7014, + sg8014, + sg2015, + sg3015, + sg4015, + sg5015, + sg6015, + sg7015, + sg8015, + sg9015, + sg10015, + sg11015, + sg12015, + sg13015, + sg14015, + sg15015, + sg16015, + sg17015, + sg2020, + sg3020, + sg2021, + sg3021, + sg1025, + sg2025, + sg1026, + sg2026, + sg3026, + sg4026, + sg5026, + sg1027, + sg2027, + sg1028, + sg2028, + sg3028, + sg4028, + sg5028, + sg1029, + sg2029, + sg3029, + sg4029, + sg5029, + sg1030, + sg2030, + sg3030, + sg4030, + sg5030, + sg1031, + sg2031, + sg3031, + sg4031, + sg5031, + sg1032, + sg2032, + sg1033, + sg2033, + sg3033, + sg4033, + sg5033, + sg1034, + sg2034, + sg1035, + sg2035, + sg1036, + sg2036, + sg3036, + sg4036, + sg5036, + sg1037, + sg2037, + sg1038, + sg2038, + sg3038, + sg4038, + sg5038, + sg1039, + sg2039, + sg3039, + sg4039, + sg5039, + sg1040, + sg2040, + sg3040, + sg4040, + sg5040, + sg1041, + sg2041, + sg3041, + sg4041, + sg5041, + sg1042, + sg2042, + sg1043, + sg2043, + sg1044, + sg2044, + sg1045, + sg2045, + sg1046, + sg2046, + sg3046, + sg4046, + sg5046, + sg1049, + sg2049, + sg1050, + sg2050, + sg3050, + sg4050, + sg1051, + sg2051, + sg3051, + sg4051, + sg5051, + sg1052, + sg2052, + sg3052, + sg4052, + sg5052, + sg1053, + sg2053, + sg3053, + sg4053, + sg5053, + sg1054, + sg2054, + sg3054, + sg4054, + sg5054, + sg1055, + sg2055, + sg1056, + sg2056, + sg1057, + sg2057, + sg3057, + sg4057, + sg5057, + sg1058, + sg2058, + sg2059, + sg3059, + sg4059, + sg5059, + sg1060, + sg2060, + sg3060, + sg4060, + sg5060, + sg1061, + sg1062, + sg2062, + sg3062, + sg4062, + sg5062, + sg1063, + sg2063, + sg3063, + sg4063, + sg5063, + sg1064, + sg2064, + sg3064, + sg4064, + sg5064, + sg1065, + sg2065, + sg1066, + sg2066, + sg1067, + sg2067, + sg3067, + sg4067, + sg5067, + sg1068, + sg2068, + sg3068, + sg4068, + sg5068, + sg6068, + sg7068, + sg1072, + sg2072, + sg1073, + sg1074, + sg2074, + sg3074, + sg4074, + sg5074, ] diff --git a/src/diffpy/structure/spacegroupmod.py b/src/diffpy/structure/spacegroupmod.py index 2b2a31d8..7a20ba15 100644 --- a/src/diffpy/structure/spacegroupmod.py +++ b/src/diffpy/structure/spacegroupmod.py @@ -9,104 +9,104 @@ import numpy ## 64 unique rotation matricies -Rot_Z_mY_X = numpy.array([[ 0.0, 0.0, 1.0], [ 0.0,-1.0, 0.0], [ 1.0, 0.0, 0.0]], float) -Rot_Y_mX_mZ = numpy.array([[ 0.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_XmY_X_mZ = numpy.array([[ 1.0,-1.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mX_Y_mZ = numpy.array([[-1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_X_mZ_Y = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0], [ 0.0, 1.0, 0.0]], float) -Rot_Y_mXY_Z = numpy.array([[ 0.0, 1.0, 0.0], [-1.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_Y_mX_Z = numpy.array([[ 0.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_XmY_X_Z = numpy.array([[ 1.0,-1.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_mX_mXY_mZ = numpy.array([[-1.0, 0.0, 0.0], [-1.0, 1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_Y_Z_X = numpy.array([[ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0]], float) -Rot_mY_mZ_X = numpy.array([[ 0.0,-1.0, 0.0], [ 0.0, 0.0,-1.0], [ 1.0, 0.0, 0.0]], float) -Rot_X_Z_mY = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0], [ 0.0,-1.0, 0.0]], float) -Rot_XmY_mY_Z = numpy.array([[ 1.0,-1.0, 0.0], [ 0.0,-1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_Y_X_mZ = numpy.array([[ 0.0, 1.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_Y_mZ_X = numpy.array([[ 0.0, 1.0, 0.0], [ 0.0, 0.0,-1.0], [ 1.0, 0.0, 0.0]], float) -Rot_mXY_Y_Z = numpy.array([[-1.0, 1.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_mX_mY_mZ = numpy.array([[-1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_X_Y_mZ = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mXY_mX_Z = numpy.array([[-1.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_mZ_mY_mX = numpy.array([[ 0.0, 0.0,-1.0], [ 0.0,-1.0, 0.0], [-1.0, 0.0, 0.0]], float) -Rot_X_mZ_mY = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0], [ 0.0,-1.0, 0.0]], float) -Rot_X_Y_Z = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_mY_mX_mZ = numpy.array([[ 0.0,-1.0, 0.0], [-1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mY_X_Z = numpy.array([[ 0.0,-1.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_Z_X_Y = numpy.array([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]], float) -Rot_X_XmY_Z = numpy.array([[ 1.0, 0.0, 0.0], [ 1.0,-1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_mY_X_mZ = numpy.array([[ 0.0,-1.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mY_Z_mX = numpy.array([[ 0.0,-1.0, 0.0], [ 0.0, 0.0, 1.0], [-1.0, 0.0, 0.0]], float) -Rot_mY_Z_X = numpy.array([[ 0.0,-1.0, 0.0], [ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0]], float) -Rot_mX_mZ_mY = numpy.array([[-1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0], [ 0.0,-1.0, 0.0]], float) -Rot_mX_Z_Y = numpy.array([[-1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0], [ 0.0, 1.0, 0.0]], float) -Rot_mZ_mX_mY = numpy.array([[ 0.0, 0.0,-1.0], [-1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0]], float) -Rot_X_XmY_mZ = numpy.array([[ 1.0, 0.0, 0.0], [ 1.0,-1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mY_XmY_mZ = numpy.array([[ 0.0,-1.0, 0.0], [ 1.0,-1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_Z_X_mY = numpy.array([[ 0.0, 0.0, 1.0], [ 1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0]], float) -Rot_mZ_mY_X = numpy.array([[ 0.0, 0.0,-1.0], [ 0.0,-1.0, 0.0], [ 1.0, 0.0, 0.0]], float) -Rot_X_Z_Y = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0], [ 0.0, 1.0, 0.0]], float) -Rot_Z_mX_mY = numpy.array([[ 0.0, 0.0, 1.0], [-1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0]], float) -Rot_mX_Z_mY = numpy.array([[-1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0], [ 0.0,-1.0, 0.0]], float) -Rot_X_mY_Z = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_mY_mX_Z = numpy.array([[ 0.0,-1.0, 0.0], [-1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_Z_mY_mX = numpy.array([[ 0.0, 0.0, 1.0], [ 0.0,-1.0, 0.0], [-1.0, 0.0, 0.0]], float) -Rot_mX_mY_Z = numpy.array([[-1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_Z_Y_X = numpy.array([[ 0.0, 0.0, 1.0], [ 0.0, 1.0, 0.0], [ 1.0, 0.0, 0.0]], float) -Rot_mZ_Y_mX = numpy.array([[ 0.0, 0.0,-1.0], [ 0.0, 1.0, 0.0], [-1.0, 0.0, 0.0]], float) -Rot_Y_Z_mX = numpy.array([[ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0], [-1.0, 0.0, 0.0]], float) -Rot_mY_XmY_Z = numpy.array([[ 0.0,-1.0, 0.0], [ 1.0,-1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_mXY_Y_mZ = numpy.array([[-1.0, 1.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mZ_mX_Y = numpy.array([[ 0.0, 0.0,-1.0], [-1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]], float) -Rot_mX_mZ_Y = numpy.array([[-1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0], [ 0.0, 1.0, 0.0]], float) -Rot_mX_Y_Z = numpy.array([[-1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_X_mY_mZ = numpy.array([[ 1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mZ_X_Y = numpy.array([[ 0.0, 0.0,-1.0], [ 1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]], float) -Rot_Y_mZ_mX = numpy.array([[ 0.0, 1.0, 0.0], [ 0.0, 0.0,-1.0], [-1.0, 0.0, 0.0]], float) -Rot_mY_mZ_mX = numpy.array([[ 0.0,-1.0, 0.0], [ 0.0, 0.0,-1.0], [-1.0, 0.0, 0.0]], float) -Rot_mZ_Y_X = numpy.array([[ 0.0, 0.0,-1.0], [ 0.0, 1.0, 0.0], [ 1.0, 0.0, 0.0]], float) -Rot_Z_Y_mX = numpy.array([[ 0.0, 0.0, 1.0], [ 0.0, 1.0, 0.0], [-1.0, 0.0, 0.0]], float) -Rot_mXY_mX_mZ = numpy.array([[-1.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_XmY_mY_mZ = numpy.array([[ 1.0,-1.0, 0.0], [ 0.0,-1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_Z_mX_Y = numpy.array([[ 0.0, 0.0, 1.0], [-1.0, 0.0, 0.0], [ 0.0, 1.0, 0.0]], float) -Rot_mX_mXY_Z = numpy.array([[-1.0, 0.0, 0.0], [-1.0, 1.0, 0.0], [ 0.0, 0.0, 1.0]], float) -Rot_Y_mXY_mZ = numpy.array([[ 0.0, 1.0, 0.0], [-1.0, 1.0, 0.0], [ 0.0, 0.0,-1.0]], float) -Rot_mZ_X_mY = numpy.array([[ 0.0, 0.0,-1.0], [ 1.0, 0.0, 0.0], [ 0.0,-1.0, 0.0]], float) -Rot_Y_X_Z = numpy.array([[ 0.0, 1.0, 0.0], [ 1.0, 0.0, 0.0], [ 0.0, 0.0, 1.0]], float) +Rot_Z_mY_X = numpy.array([[0.0, 0.0, 1.0], [0.0, -1.0, 0.0], [1.0, 0.0, 0.0]], float) +Rot_Y_mX_mZ = numpy.array([[0.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_XmY_X_mZ = numpy.array([[1.0, -1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mX_Y_mZ = numpy.array([[-1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_X_mZ_Y = numpy.array([[1.0, 0.0, 0.0], [0.0, 0.0, -1.0], [0.0, 1.0, 0.0]], float) +Rot_Y_mXY_Z = numpy.array([[0.0, 1.0, 0.0], [-1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_Y_mX_Z = numpy.array([[0.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_XmY_X_Z = numpy.array([[1.0, -1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_mX_mXY_mZ = numpy.array([[-1.0, 0.0, 0.0], [-1.0, 1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_Y_Z_X = numpy.array([[0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0]], float) +Rot_mY_mZ_X = numpy.array([[0.0, -1.0, 0.0], [0.0, 0.0, -1.0], [1.0, 0.0, 0.0]], float) +Rot_X_Z_mY = numpy.array([[1.0, 0.0, 0.0], [0.0, 0.0, 1.0], [0.0, -1.0, 0.0]], float) +Rot_XmY_mY_Z = numpy.array([[1.0, -1.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_Y_X_mZ = numpy.array([[0.0, 1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_Y_mZ_X = numpy.array([[0.0, 1.0, 0.0], [0.0, 0.0, -1.0], [1.0, 0.0, 0.0]], float) +Rot_mXY_Y_Z = numpy.array([[-1.0, 1.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_mX_mY_mZ = numpy.array([[-1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_X_Y_mZ = numpy.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mXY_mX_Z = numpy.array([[-1.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_mZ_mY_mX = numpy.array([[0.0, 0.0, -1.0], [0.0, -1.0, 0.0], [-1.0, 0.0, 0.0]], float) +Rot_X_mZ_mY = numpy.array([[1.0, 0.0, 0.0], [0.0, 0.0, -1.0], [0.0, -1.0, 0.0]], float) +Rot_X_Y_Z = numpy.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_mY_mX_mZ = numpy.array([[0.0, -1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mY_X_Z = numpy.array([[0.0, -1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_Z_X_Y = numpy.array([[0.0, 0.0, 1.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0]], float) +Rot_X_XmY_Z = numpy.array([[1.0, 0.0, 0.0], [1.0, -1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_mY_X_mZ = numpy.array([[0.0, -1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mY_Z_mX = numpy.array([[0.0, -1.0, 0.0], [0.0, 0.0, 1.0], [-1.0, 0.0, 0.0]], float) +Rot_mY_Z_X = numpy.array([[0.0, -1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0]], float) +Rot_mX_mZ_mY = numpy.array([[-1.0, 0.0, 0.0], [0.0, 0.0, -1.0], [0.0, -1.0, 0.0]], float) +Rot_mX_Z_Y = numpy.array([[-1.0, 0.0, 0.0], [0.0, 0.0, 1.0], [0.0, 1.0, 0.0]], float) +Rot_mZ_mX_mY = numpy.array([[0.0, 0.0, -1.0], [-1.0, 0.0, 0.0], [0.0, -1.0, 0.0]], float) +Rot_X_XmY_mZ = numpy.array([[1.0, 0.0, 0.0], [1.0, -1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mY_XmY_mZ = numpy.array([[0.0, -1.0, 0.0], [1.0, -1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_Z_X_mY = numpy.array([[0.0, 0.0, 1.0], [1.0, 0.0, 0.0], [0.0, -1.0, 0.0]], float) +Rot_mZ_mY_X = numpy.array([[0.0, 0.0, -1.0], [0.0, -1.0, 0.0], [1.0, 0.0, 0.0]], float) +Rot_X_Z_Y = numpy.array([[1.0, 0.0, 0.0], [0.0, 0.0, 1.0], [0.0, 1.0, 0.0]], float) +Rot_Z_mX_mY = numpy.array([[0.0, 0.0, 1.0], [-1.0, 0.0, 0.0], [0.0, -1.0, 0.0]], float) +Rot_mX_Z_mY = numpy.array([[-1.0, 0.0, 0.0], [0.0, 0.0, 1.0], [0.0, -1.0, 0.0]], float) +Rot_X_mY_Z = numpy.array([[1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_mY_mX_Z = numpy.array([[0.0, -1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_Z_mY_mX = numpy.array([[0.0, 0.0, 1.0], [0.0, -1.0, 0.0], [-1.0, 0.0, 0.0]], float) +Rot_mX_mY_Z = numpy.array([[-1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_Z_Y_X = numpy.array([[0.0, 0.0, 1.0], [0.0, 1.0, 0.0], [1.0, 0.0, 0.0]], float) +Rot_mZ_Y_mX = numpy.array([[0.0, 0.0, -1.0], [0.0, 1.0, 0.0], [-1.0, 0.0, 0.0]], float) +Rot_Y_Z_mX = numpy.array([[0.0, 1.0, 0.0], [0.0, 0.0, 1.0], [-1.0, 0.0, 0.0]], float) +Rot_mY_XmY_Z = numpy.array([[0.0, -1.0, 0.0], [1.0, -1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_mXY_Y_mZ = numpy.array([[-1.0, 1.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mZ_mX_Y = numpy.array([[0.0, 0.0, -1.0], [-1.0, 0.0, 0.0], [0.0, 1.0, 0.0]], float) +Rot_mX_mZ_Y = numpy.array([[-1.0, 0.0, 0.0], [0.0, 0.0, -1.0], [0.0, 1.0, 0.0]], float) +Rot_mX_Y_Z = numpy.array([[-1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_X_mY_mZ = numpy.array([[1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mZ_X_Y = numpy.array([[0.0, 0.0, -1.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0]], float) +Rot_Y_mZ_mX = numpy.array([[0.0, 1.0, 0.0], [0.0, 0.0, -1.0], [-1.0, 0.0, 0.0]], float) +Rot_mY_mZ_mX = numpy.array([[0.0, -1.0, 0.0], [0.0, 0.0, -1.0], [-1.0, 0.0, 0.0]], float) +Rot_mZ_Y_X = numpy.array([[0.0, 0.0, -1.0], [0.0, 1.0, 0.0], [1.0, 0.0, 0.0]], float) +Rot_Z_Y_mX = numpy.array([[0.0, 0.0, 1.0], [0.0, 1.0, 0.0], [-1.0, 0.0, 0.0]], float) +Rot_mXY_mX_mZ = numpy.array([[-1.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_XmY_mY_mZ = numpy.array([[1.0, -1.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_Z_mX_Y = numpy.array([[0.0, 0.0, 1.0], [-1.0, 0.0, 0.0], [0.0, 1.0, 0.0]], float) +Rot_mX_mXY_Z = numpy.array([[-1.0, 0.0, 0.0], [-1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], float) +Rot_Y_mXY_mZ = numpy.array([[0.0, 1.0, 0.0], [-1.0, 1.0, 0.0], [0.0, 0.0, -1.0]], float) +Rot_mZ_X_mY = numpy.array([[0.0, 0.0, -1.0], [1.0, 0.0, 0.0], [0.0, -1.0, 0.0]], float) +Rot_Y_X_Z = numpy.array([[0.0, 1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], float) ## 32 unique translation vectors -Tr_0_0_34 = numpy.array([ 0.0, 0.0, 3.0/4.0 ], float) -Tr_12_0_34 = numpy.array([ 1.0/2.0, 0.0, 3.0/4.0 ], float) -Tr_0_0_56 = numpy.array([ 0.0, 0.0, 5.0/6.0 ], float) -Tr_12_0_12 = numpy.array([ 1.0/2.0, 0.0, 1.0/2.0 ], float) -Tr_0_12_12 = numpy.array([ 0.0, 1.0/2.0, 1.0/2.0 ], float) -Tr_12_0_14 = numpy.array([ 1.0/2.0, 0.0, 1.0/4.0 ], float) -Tr_0_12_14 = numpy.array([ 0.0, 1.0/2.0, 1.0/4.0 ], float) -Tr_14_14_14 = numpy.array([ 1.0/4.0, 1.0/4.0, 1.0/4.0 ], float) -Tr_0_12_34 = numpy.array([ 0.0, 1.0/2.0, 3.0/4.0 ], float) -Tr_34_14_14 = numpy.array([ 3.0/4.0, 1.0/4.0, 1.0/4.0 ], float) -Tr_0_0_0 = numpy.array([ 0.0, 0.0, 0.0 ], float) -Tr_23_13_56 = numpy.array([ 2.0/3.0, 1.0/3.0, 5.0/6.0 ], float) -Tr_14_14_34 = numpy.array([ 1.0/4.0, 1.0/4.0, 3.0/4.0 ], float) -Tr_12_12_0 = numpy.array([ 1.0/2.0, 1.0/2.0, 0.0 ], float) -Tr_23_13_13 = numpy.array([ 2.0/3.0, 1.0/3.0, 1.0/3.0 ], float) -Tr_13_23_23 = numpy.array([ 1.0/3.0, 2.0/3.0, 2.0/3.0 ], float) -Tr_12_12_12 = numpy.array([ 1.0/2.0, 1.0/2.0, 1.0/2.0 ], float) -Tr_12_12_14 = numpy.array([ 1.0/2.0, 1.0/2.0, 1.0/4.0 ], float) -Tr_14_34_14 = numpy.array([ 1.0/4.0, 3.0/4.0, 1.0/4.0 ], float) -Tr_12_12_34 = numpy.array([ 1.0/2.0, 1.0/2.0, 3.0/4.0 ], float) -Tr_0_0_23 = numpy.array([ 0.0, 0.0, 2.0/3.0 ], float) -Tr_0_12_0 = numpy.array([ 0.0, 1.0/2.0, 0.0 ], float) -Tr_14_34_34 = numpy.array([ 1.0/4.0, 3.0/4.0, 3.0/4.0 ], float) -Tr_34_34_14 = numpy.array([ 3.0/4.0, 3.0/4.0, 1.0/4.0 ], float) -Tr_12_0_0 = numpy.array([ 1.0/2.0, 0.0, 0.0 ], float) -Tr_34_34_34 = numpy.array([ 3.0/4.0, 3.0/4.0, 3.0/4.0 ], float) -Tr_0_0_13 = numpy.array([ 0.0, 0.0, 1.0/3.0 ], float) -Tr_0_0_12 = numpy.array([ 0.0, 0.0, 1.0/2.0 ], float) -Tr_13_23_16 = numpy.array([ 1.0/3.0, 2.0/3.0, 1.0/6.0 ], float) -Tr_0_0_14 = numpy.array([ 0.0, 0.0, 1.0/4.0 ], float) -Tr_0_0_16 = numpy.array([ 0.0, 0.0, 1.0/6.0 ], float) -Tr_34_14_34 = numpy.array([ 3.0/4.0, 1.0/4.0, 3.0/4.0 ], float) +Tr_0_0_34 = numpy.array([0.0, 0.0, 3.0 / 4.0], float) +Tr_12_0_34 = numpy.array([1.0 / 2.0, 0.0, 3.0 / 4.0], float) +Tr_0_0_56 = numpy.array([0.0, 0.0, 5.0 / 6.0], float) +Tr_12_0_12 = numpy.array([1.0 / 2.0, 0.0, 1.0 / 2.0], float) +Tr_0_12_12 = numpy.array([0.0, 1.0 / 2.0, 1.0 / 2.0], float) +Tr_12_0_14 = numpy.array([1.0 / 2.0, 0.0, 1.0 / 4.0], float) +Tr_0_12_14 = numpy.array([0.0, 1.0 / 2.0, 1.0 / 4.0], float) +Tr_14_14_14 = numpy.array([1.0 / 4.0, 1.0 / 4.0, 1.0 / 4.0], float) +Tr_0_12_34 = numpy.array([0.0, 1.0 / 2.0, 3.0 / 4.0], float) +Tr_34_14_14 = numpy.array([3.0 / 4.0, 1.0 / 4.0, 1.0 / 4.0], float) +Tr_0_0_0 = numpy.array([0.0, 0.0, 0.0], float) +Tr_23_13_56 = numpy.array([2.0 / 3.0, 1.0 / 3.0, 5.0 / 6.0], float) +Tr_14_14_34 = numpy.array([1.0 / 4.0, 1.0 / 4.0, 3.0 / 4.0], float) +Tr_12_12_0 = numpy.array([1.0 / 2.0, 1.0 / 2.0, 0.0], float) +Tr_23_13_13 = numpy.array([2.0 / 3.0, 1.0 / 3.0, 1.0 / 3.0], float) +Tr_13_23_23 = numpy.array([1.0 / 3.0, 2.0 / 3.0, 2.0 / 3.0], float) +Tr_12_12_12 = numpy.array([1.0 / 2.0, 1.0 / 2.0, 1.0 / 2.0], float) +Tr_12_12_14 = numpy.array([1.0 / 2.0, 1.0 / 2.0, 1.0 / 4.0], float) +Tr_14_34_14 = numpy.array([1.0 / 4.0, 3.0 / 4.0, 1.0 / 4.0], float) +Tr_12_12_34 = numpy.array([1.0 / 2.0, 1.0 / 2.0, 3.0 / 4.0], float) +Tr_0_0_23 = numpy.array([0.0, 0.0, 2.0 / 3.0], float) +Tr_0_12_0 = numpy.array([0.0, 1.0 / 2.0, 0.0], float) +Tr_14_34_34 = numpy.array([1.0 / 4.0, 3.0 / 4.0, 3.0 / 4.0], float) +Tr_34_34_14 = numpy.array([3.0 / 4.0, 3.0 / 4.0, 1.0 / 4.0], float) +Tr_12_0_0 = numpy.array([1.0 / 2.0, 0.0, 0.0], float) +Tr_34_34_34 = numpy.array([3.0 / 4.0, 3.0 / 4.0, 3.0 / 4.0], float) +Tr_0_0_13 = numpy.array([0.0, 0.0, 1.0 / 3.0], float) +Tr_0_0_12 = numpy.array([0.0, 0.0, 1.0 / 2.0], float) +Tr_13_23_16 = numpy.array([1.0 / 3.0, 2.0 / 3.0, 1.0 / 6.0], float) +Tr_0_0_14 = numpy.array([0.0, 0.0, 1.0 / 4.0], float) +Tr_0_0_16 = numpy.array([0.0, 0.0, 1.0 / 6.0], float) +Tr_34_14_34 = numpy.array([3.0 / 4.0, 1.0 / 4.0, 3.0 / 4.0], float) class SymOp(object): @@ -137,19 +137,13 @@ def __init__(self, R, t): self.t = t return - def __str__(self): - """Printable representation of this SymOp object. - """ - x = "[%6.3f %6.3f %6.3f %6.3f]\n" % ( - self.R[0,0], self.R[0,1], self.R[0,2], self.t[0]) - x += "[%6.3f %6.3f %6.3f %6.3f]\n" % ( - self.R[1,0], self.R[1,1], self.R[1,2], self.t[1]) - x += "[%6.3f %6.3f %6.3f %6.3f]\n" % ( - self.R[2,0], self.R[2,1], self.R[2,2], self.t[2]) + """Printable representation of this SymOp object.""" + x = "[%6.3f %6.3f %6.3f %6.3f]\n" % (self.R[0, 0], self.R[0, 1], self.R[0, 2], self.t[0]) + x += "[%6.3f %6.3f %6.3f %6.3f]\n" % (self.R[1, 0], self.R[1, 1], self.R[1, 2], self.t[1]) + x += "[%6.3f %6.3f %6.3f %6.3f]\n" % (self.R[2, 0], self.R[2, 1], self.R[2, 2], self.t[2]) return x - def __call__(self, vec): """Return symmetry-related position for the specified coordinates. @@ -165,7 +159,6 @@ def __call__(self, vec): """ return numpy.dot(self.R, vec) + self.t - def __eq__(self, symop): """Implement the ``(self == symop)`` test of equality. @@ -174,7 +167,6 @@ def __eq__(self, symop): """ return numpy.allclose(self.R, symop.R) and numpy.allclose(self.t, symop.t) - def is_identity(self): """Check if this SymOp is an identity operation. @@ -184,10 +176,10 @@ def is_identity(self): ``True`` if this is an identity operation within a small round-off. Return ``False`` otherwise. """ - rv = (numpy.allclose(self.R, numpy.identity(3, float)) and - numpy.allclose(self.t, numpy.zeros(3, float))) + rv = numpy.allclose(self.R, numpy.identity(3, float)) and numpy.allclose(self.t, numpy.zeros(3, float)) return rv + # End of class SymOp @@ -243,31 +235,30 @@ class SpaceGroup(object): in this space group. """ - def __init__(self, - number = None, - num_sym_equiv = None, - num_primitive_sym_equiv = None, - short_name = None, - point_group_name = None, - crystal_system = None, - pdb_name = None, - symop_list = None): - - self.number = number - self.num_sym_equiv = num_sym_equiv + def __init__( + self, + number=None, + num_sym_equiv=None, + num_primitive_sym_equiv=None, + short_name=None, + point_group_name=None, + crystal_system=None, + pdb_name=None, + symop_list=None, + ): + + self.number = number + self.num_sym_equiv = num_sym_equiv self.num_primitive_sym_equiv = num_primitive_sym_equiv - self.short_name = short_name - self.point_group_name = point_group_name - self.crystal_system = crystal_system - self.pdb_name = pdb_name - self.symop_list = symop_list + self.short_name = short_name + self.point_group_name = point_group_name + self.crystal_system = crystal_system + self.pdb_name = pdb_name + self.symop_list = symop_list def __repr__(self): """Return a string representation of the space group.""" - return ( - "SpaceGroup #%i (%s, %s). Symmetry matrices: %i, " - "point sym. matr.: %i" - ) % ( + return ("SpaceGroup #%i (%s, %s). Symmetry matrices: %i, " "point sym. matr.: %i") % ( self.number, self.short_name, self.crystal_system[0] + self.crystal_system[1:].lower(), @@ -275,7 +266,6 @@ def __repr__(self): self.num_primitive_sym_equiv, ) - def iter_symops(self): """Iterate over all symmetry operations in the space group. @@ -286,7 +276,6 @@ def iter_symops(self): """ return iter(self.symop_list) - def check_group_name(self, name): """Check if given name matches this space group. @@ -303,13 +292,16 @@ def check_group_name(self, name): Return ``False`` otherwise. """ - if name == self.short_name: return True - if name == self.pdb_name: return True - if name == self.point_group_name: return True - if name == self.number: return True + if name == self.short_name: + return True + if name == self.pdb_name: + return True + if name == self.point_group_name: + return True + if name == self.number: + return True return False - def iter_equivalent_positions(self, vec): """Generate symmetry equivalent positions for the specified position. @@ -334,4 +326,5 @@ def iter_equivalent_positions(self, vec): yield symop(vec) pass + # End of class SpaceGroup diff --git a/src/diffpy/structure/spacegroups.py b/src/diffpy/structure/spacegroups.py index 7f4b0748..b864e9c5 100644 --- a/src/diffpy/structure/spacegroups.py +++ b/src/diffpy/structure/spacegroups.py @@ -13,14 +13,14 @@ # ############################################################################## -'''Space group classes and definitions from mmLib and sgtbx. -''' +"""Space group classes and definitions from mmLib and sgtbx. +""" import six -from diffpy.structure.spacegroupmod import SymOp, SpaceGroup from diffpy.structure.mmlibspacegroups import mmLibSpaceGroupList from diffpy.structure.sgtbxspacegroups import sgtbxSpaceGroupList +from diffpy.structure.spacegroupmod import SpaceGroup, SymOp # all spacegroup definitions SpaceGroupList = mmLibSpaceGroupList + sgtbxSpaceGroupList @@ -45,7 +45,7 @@ def GetSpaceGroup(sgid): raise ValueError(emsg) sgbare = sgid.strip() # short_name case adjusted - sgkey = sgbare.replace(' ', '') + sgkey = sgbare.replace(" ", "") sgkey = sgkey[:1].upper() + sgkey[1:].lower() if sgkey in _sg_lookup_table: return _sg_lookup_table[sgkey] @@ -95,14 +95,16 @@ def FindSpaceGroup(symops, shuffle=False): When `symops` do not match any known SpaceGroup. """ import copy + from six.moves import zip_longest + tb = _getSGHashLookupTable() hh = _hashSymOpList(symops) if not hh in tb: - raise ValueError('Cannot find SpaceGroup for the specified symops.') + raise ValueError("Cannot find SpaceGroup for the specified symops.") rv = tb[hh] if not shuffle: - zz = zip_longest(rv.iter_symops(), symops, fillvalue='') + zz = zip_longest(rv.iter_symops(), symops, fillvalue="") sameorder = all(str(o0) == str(o1) for o0, o1 in zz) if not sameorder: rv = copy.copy(rv) @@ -145,36 +147,37 @@ def _buildSGLookupTable(): # extra aliases obtained from matching code in # cctbx::sgtbx::symbols::find_main_symbol_dict_entry alias_hmname = [ - ('Pm3', 'P m -3'), - ('Pn3', 'P n -3'), - ('Fm3', 'F m -3'), - ('Fd3', 'F d -3'), - ('Im3', 'I m -3'), - ('Pa3', 'P a -3'), - ('Ia3', 'I a -3'), - ('Pm3m', 'P m -3 m'), - ('Pn3n', 'P n -3 n'), - ('Pm3n', 'P m -3 n'), - ('Pn3m', 'P n -3 m'), - ('Fm3m', 'F m -3 m'), - ('Fm3c', 'F m -3 c'), - ('Fd3m', 'F d -3 m'), - ('Fd3c', 'F d -3 c'), - ('Im3m', 'I m -3 m'), - ('Ia3d', 'I a -3 d'), + ("Pm3", "P m -3"), + ("Pn3", "P n -3"), + ("Fm3", "F m -3"), + ("Fd3", "F d -3"), + ("Im3", "I m -3"), + ("Pa3", "P a -3"), + ("Ia3", "I a -3"), + ("Pm3m", "P m -3 m"), + ("Pn3n", "P n -3 n"), + ("Pm3n", "P m -3 n"), + ("Pn3m", "P n -3 m"), + ("Fm3m", "F m -3 m"), + ("Fm3c", "F m -3 c"), + ("Fd3m", "F d -3 m"), + ("Fd3c", "F d -3 c"), + ("Im3m", "I m -3 m"), + ("Ia3d", "I a -3 d"), ] for a, hm in alias_hmname: - hmbare = hm.replace(' ', '') + hmbare = hm.replace(" ", "") _sg_lookup_table.setdefault(a, _sg_lookup_table[hmbare]) # make sure None does not sneak into the dictionary assert not None in _sg_lookup_table return + + _sg_lookup_table = {} def _getSGHashLookupTable(): - """Return lookup table of symop hashes to standard SpaceGroup objects. - """ + """Return lookup table of symop hashes to standard SpaceGroup objects.""" if _sg_hash_lookup_table: return _sg_hash_lookup_table for sg in SpaceGroupList: @@ -182,199 +185,1244 @@ def _getSGHashLookupTable(): _sg_hash_lookup_table[h] = sg assert len(_sg_hash_lookup_table) == len(SpaceGroupList) return _getSGHashLookupTable() + + _sg_hash_lookup_table = {} # Import SpaceGroup objects -------------------------------------------------- -from diffpy.structure.spacegroupmod import ( - Rot_X_Y_Z, Rot_mX_mY_mZ, Rot_mX_Y_mZ, Rot_X_mY_Z, - Rot_mX_mY_Z, Rot_X_mY_mZ, Rot_mX_Y_Z, Rot_X_Y_mZ, - Rot_mY_X_Z, Rot_Y_mX_Z, Rot_Y_mX_mZ, Rot_mY_X_mZ, - Rot_Y_X_mZ, Rot_mY_mX_mZ, Rot_mY_mX_Z, Rot_Y_X_Z, - Rot_mY_XmY_Z, Rot_mXY_mX_Z, Rot_Z_X_Y, Rot_Y_Z_X, - Rot_Y_mXY_mZ, Rot_XmY_X_mZ, Rot_mZ_mX_mY, Rot_mY_mZ_mX, - Rot_mXY_Y_mZ, Rot_X_XmY_mZ, Rot_XmY_mY_mZ, Rot_mX_mXY_mZ, - Rot_mX_mZ_mY, Rot_mZ_mY_mX, Rot_mXY_Y_Z, Rot_X_XmY_Z, - Rot_XmY_mY_Z, Rot_mX_mXY_Z, Rot_X_Z_Y, Rot_Z_Y_X, - Rot_Y_mXY_Z, Rot_XmY_X_Z, Rot_mY_XmY_mZ, Rot_mXY_mX_mZ, - Rot_Z_mX_mY, Rot_mZ_mX_Y, Rot_mZ_X_mY, Rot_mY_Z_mX, - Rot_Y_mZ_mX, Rot_mY_mZ_X, Rot_mZ_X_Y, Rot_Z_X_mY, - Rot_Z_mX_Y, Rot_Y_mZ_X, Rot_mY_Z_X, Rot_Y_Z_mX, - Rot_X_Z_mY, Rot_mX_Z_Y, Rot_X_mZ_Y, Rot_Z_Y_mX, - Rot_Z_mY_X, Rot_mZ_Y_X, Rot_mX_Z_mY, Rot_mX_mZ_Y, - Rot_X_mZ_mY, Rot_Z_mY_mX, Rot_mZ_Y_mX, Rot_mZ_mY_X, - Tr_0_0_0, Tr_0_12_0, Tr_12_12_0, Tr_0_0_12, - Tr_12_12_12, Tr_0_12_12, Tr_12_0_12, Tr_12_0_0, - Tr_14_14_14, Tr_14_34_34, Tr_34_14_34, Tr_34_34_14, - Tr_0_0_14, Tr_0_0_34, Tr_0_12_14, Tr_12_0_34, - Tr_12_12_14, Tr_12_12_34, Tr_0_12_34, Tr_12_0_14, - Tr_0_0_13, Tr_0_0_23, Tr_23_13_13, Tr_13_23_23, - Tr_23_13_56, Tr_13_23_16, Tr_0_0_56, Tr_0_0_16, - Tr_34_14_14, Tr_34_34_34, Tr_14_14_34, Tr_14_34_14, -) - from diffpy.structure.mmlibspacegroups import ( - sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8, - sg9, sg10, sg11, sg12, sg13, sg14, sg15, sg16, - sg17, sg18, sg19, sg20, sg21, sg22, sg23, sg24, - sg25, sg26, sg27, sg28, sg29, sg30, sg31, sg32, - sg33, sg34, sg35, sg36, sg37, sg38, sg39, sg40, - sg41, sg42, sg43, sg44, sg45, sg46, sg47, sg48, - sg49, sg50, sg51, sg52, sg53, sg54, sg55, sg56, - sg57, sg58, sg59, sg60, sg61, sg62, sg63, sg64, - sg65, sg66, sg67, sg68, sg69, sg70, sg71, sg72, - sg73, sg74, sg75, sg76, sg77, sg78, sg79, sg80, - sg81, sg82, sg83, sg84, sg85, sg86, sg87, sg88, - sg89, sg90, sg91, sg92, sg93, sg94, sg95, sg96, - sg97, sg98, sg99, sg100, sg101, sg102, sg103, sg104, - sg105, sg106, sg107, sg108, sg109, sg110, sg111, sg112, - sg113, sg114, sg115, sg116, sg117, sg118, sg119, sg120, - sg121, sg122, sg123, sg124, sg125, sg126, sg127, sg128, - sg129, sg130, sg131, sg132, sg133, sg134, sg135, sg136, - sg137, sg138, sg139, sg140, sg141, sg142, sg143, sg144, - sg145, sg146, sg1146, sg147, sg148, sg1148, sg149, sg150, - sg151, sg152, sg153, sg154, sg155, sg1155, sg156, sg157, - sg158, sg159, sg160, sg1160, sg161, sg1161, sg162, sg163, - sg164, sg165, sg166, sg1166, sg167, sg1167, sg168, sg169, - sg170, sg171, sg172, sg173, sg174, sg175, sg176, sg177, - sg178, sg179, sg180, sg181, sg182, sg183, sg184, sg185, - sg186, sg187, sg188, sg189, sg190, sg191, sg192, sg193, - sg194, sg195, sg196, sg197, sg198, sg199, sg200, sg201, - sg202, sg203, sg204, sg205, sg206, sg207, sg208, sg209, - sg210, sg211, sg212, sg213, sg214, sg215, sg216, sg217, - sg218, sg219, sg220, sg221, sg222, sg223, sg224, sg225, - sg226, sg227, sg228, sg229, sg230, sg1003, sg1004, sg3004, - sg1005, sg2005, sg3005, sg1006, sg1007, sg1008, sg1009, sg1010, - sg1011, sg1012, sg1013, sg1014, sg1015, sg1017, sg2017, sg1018, - sg2018, sg3018, sg1020, sg1021, sg1022, sg1023, sg1059, sg1094, + sg1, + sg2, + sg3, + sg4, + sg5, + sg6, + sg7, + sg8, + sg9, + sg10, + sg11, + sg12, + sg13, + sg14, + sg15, + sg16, + sg17, + sg18, + sg19, + sg20, + sg21, + sg22, + sg23, + sg24, + sg25, + sg26, + sg27, + sg28, + sg29, + sg30, + sg31, + sg32, + sg33, + sg34, + sg35, + sg36, + sg37, + sg38, + sg39, + sg40, + sg41, + sg42, + sg43, + sg44, + sg45, + sg46, + sg47, + sg48, + sg49, + sg50, + sg51, + sg52, + sg53, + sg54, + sg55, + sg56, + sg57, + sg58, + sg59, + sg60, + sg61, + sg62, + sg63, + sg64, + sg65, + sg66, + sg67, + sg68, + sg69, + sg70, + sg71, + sg72, + sg73, + sg74, + sg75, + sg76, + sg77, + sg78, + sg79, + sg80, + sg81, + sg82, + sg83, + sg84, + sg85, + sg86, + sg87, + sg88, + sg89, + sg90, + sg91, + sg92, + sg93, + sg94, + sg95, + sg96, + sg97, + sg98, + sg99, + sg100, + sg101, + sg102, + sg103, + sg104, + sg105, + sg106, + sg107, + sg108, + sg109, + sg110, + sg111, + sg112, + sg113, + sg114, + sg115, + sg116, + sg117, + sg118, + sg119, + sg120, + sg121, + sg122, + sg123, + sg124, + sg125, + sg126, + sg127, + sg128, + sg129, + sg130, + sg131, + sg132, + sg133, + sg134, + sg135, + sg136, + sg137, + sg138, + sg139, + sg140, + sg141, + sg142, + sg143, + sg144, + sg145, + sg146, + sg147, + sg148, + sg149, + sg150, + sg151, + sg152, + sg153, + sg154, + sg155, + sg156, + sg157, + sg158, + sg159, + sg160, + sg161, + sg162, + sg163, + sg164, + sg165, + sg166, + sg167, + sg168, + sg169, + sg170, + sg171, + sg172, + sg173, + sg174, + sg175, + sg176, + sg177, + sg178, + sg179, + sg180, + sg181, + sg182, + sg183, + sg184, + sg185, + sg186, + sg187, + sg188, + sg189, + sg190, + sg191, + sg192, + sg193, + sg194, + sg195, + sg196, + sg197, + sg198, + sg199, + sg200, + sg201, + sg202, + sg203, + sg204, + sg205, + sg206, + sg207, + sg208, + sg209, + sg210, + sg211, + sg212, + sg213, + sg214, + sg215, + sg216, + sg217, + sg218, + sg219, + sg220, + sg221, + sg222, + sg223, + sg224, + sg225, + sg226, + sg227, + sg228, + sg229, + sg230, + sg1003, + sg1004, + sg1005, + sg1006, + sg1007, + sg1008, + sg1009, + sg1010, + sg1011, + sg1012, + sg1013, + sg1014, + sg1015, + sg1017, + sg1018, + sg1020, + sg1021, + sg1022, + sg1023, + sg1059, + sg1094, + sg1146, + sg1148, + sg1155, + sg1160, + sg1161, + sg1166, + sg1167, sg1197, + sg2005, + sg2017, + sg2018, + sg3004, + sg3005, + sg3018, ) - from diffpy.structure.sgtbxspacegroups import ( - sg2003, sg2004, sg4005, sg5005, sg6005, sg7005, sg8005, sg9005, - sg10005, sg2006, sg2007, sg3007, sg4007, sg5007, sg6007, sg7007, - sg8007, sg2008, sg3008, sg4008, sg5008, sg6008, sg7008, sg8008, - sg2009, sg3009, sg4009, sg5009, sg6009, sg7009, sg8009, sg9009, - sg10009, sg11009, sg12009, sg13009, sg14009, sg15009, sg16009, - sg17009, sg2010, sg2011, sg2012, sg3012, sg4012, sg5012, sg6012, - sg7012, sg8012, sg2013, sg3013, sg4013, sg5013, sg6013, sg7013, - sg8013, sg2014, sg3014, sg4014, sg5014, sg6014, sg7014, sg8014, - sg2015, sg3015, sg4015, sg5015, sg6015, sg7015, sg8015, sg9015, - sg10015, sg11015, sg12015, sg13015, sg14015, sg15015, sg16015, - sg17015, sg2020, sg3020, sg2021, sg3021, sg1025, sg2025, sg1026, - sg2026, sg3026, sg4026, sg5026, sg1027, sg2027, sg1028, sg2028, - sg3028, sg4028, sg5028, sg1029, sg2029, sg3029, sg4029, sg5029, - sg1030, sg2030, sg3030, sg4030, sg5030, sg1031, sg2031, sg3031, - sg4031, sg5031, sg1032, sg2032, sg1033, sg2033, sg3033, sg4033, - sg5033, sg1034, sg2034, sg1035, sg2035, sg1036, sg2036, sg3036, - sg4036, sg5036, sg1037, sg2037, sg1038, sg2038, sg3038, sg4038, - sg5038, sg1039, sg2039, sg3039, sg4039, sg5039, sg1040, sg2040, - sg3040, sg4040, sg5040, sg1041, sg2041, sg3041, sg4041, sg5041, - sg1042, sg2042, sg1043, sg2043, sg1044, sg2044, sg1045, sg2045, - sg1046, sg2046, sg3046, sg4046, sg5046, sg1049, sg2049, sg1050, - sg2050, sg3050, sg4050, sg1051, sg2051, sg3051, sg4051, sg5051, - sg1052, sg2052, sg3052, sg4052, sg5052, sg1053, sg2053, sg3053, - sg4053, sg5053, sg1054, sg2054, sg3054, sg4054, sg5054, sg1055, - sg2055, sg1056, sg2056, sg1057, sg2057, sg3057, sg4057, sg5057, - sg1058, sg2058, sg2059, sg3059, sg4059, sg5059, sg1060, sg2060, - sg3060, sg4060, sg5060, sg1061, sg1062, sg2062, sg3062, sg4062, - sg5062, sg1063, sg2063, sg3063, sg4063, sg5063, sg1064, sg2064, - sg3064, sg4064, sg5064, sg1065, sg2065, sg1066, sg2066, sg1067, - sg2067, sg3067, sg4067, sg5067, sg1068, sg2068, sg3068, sg4068, - sg5068, sg6068, sg7068, sg1072, sg2072, sg1073, sg1074, sg2074, - sg3074, sg4074, sg5074, + sg1025, + sg1026, + sg1027, + sg1028, + sg1029, + sg1030, + sg1031, + sg1032, + sg1033, + sg1034, + sg1035, + sg1036, + sg1037, + sg1038, + sg1039, + sg1040, + sg1041, + sg1042, + sg1043, + sg1044, + sg1045, + sg1046, + sg1049, + sg1050, + sg1051, + sg1052, + sg1053, + sg1054, + sg1055, + sg1056, + sg1057, + sg1058, + sg1060, + sg1061, + sg1062, + sg1063, + sg1064, + sg1065, + sg1066, + sg1067, + sg1068, + sg1072, + sg1073, + sg1074, + sg2003, + sg2004, + sg2006, + sg2007, + sg2008, + sg2009, + sg2010, + sg2011, + sg2012, + sg2013, + sg2014, + sg2015, + sg2020, + sg2021, + sg2025, + sg2026, + sg2027, + sg2028, + sg2029, + sg2030, + sg2031, + sg2032, + sg2033, + sg2034, + sg2035, + sg2036, + sg2037, + sg2038, + sg2039, + sg2040, + sg2041, + sg2042, + sg2043, + sg2044, + sg2045, + sg2046, + sg2049, + sg2050, + sg2051, + sg2052, + sg2053, + sg2054, + sg2055, + sg2056, + sg2057, + sg2058, + sg2059, + sg2060, + sg2062, + sg2063, + sg2064, + sg2065, + sg2066, + sg2067, + sg2068, + sg2072, + sg2074, + sg3007, + sg3008, + sg3009, + sg3012, + sg3013, + sg3014, + sg3015, + sg3020, + sg3021, + sg3026, + sg3028, + sg3029, + sg3030, + sg3031, + sg3033, + sg3036, + sg3038, + sg3039, + sg3040, + sg3041, + sg3046, + sg3050, + sg3051, + sg3052, + sg3053, + sg3054, + sg3057, + sg3059, + sg3060, + sg3062, + sg3063, + sg3064, + sg3067, + sg3068, + sg3074, + sg4005, + sg4007, + sg4008, + sg4009, + sg4012, + sg4013, + sg4014, + sg4015, + sg4026, + sg4028, + sg4029, + sg4030, + sg4031, + sg4033, + sg4036, + sg4038, + sg4039, + sg4040, + sg4041, + sg4046, + sg4050, + sg4051, + sg4052, + sg4053, + sg4054, + sg4057, + sg4059, + sg4060, + sg4062, + sg4063, + sg4064, + sg4067, + sg4068, + sg4074, + sg5005, + sg5007, + sg5008, + sg5009, + sg5012, + sg5013, + sg5014, + sg5015, + sg5026, + sg5028, + sg5029, + sg5030, + sg5031, + sg5033, + sg5036, + sg5038, + sg5039, + sg5040, + sg5041, + sg5046, + sg5051, + sg5052, + sg5053, + sg5054, + sg5057, + sg5059, + sg5060, + sg5062, + sg5063, + sg5064, + sg5067, + sg5068, + sg5074, + sg6005, + sg6007, + sg6008, + sg6009, + sg6012, + sg6013, + sg6014, + sg6015, + sg6068, + sg7005, + sg7007, + sg7008, + sg7009, + sg7012, + sg7013, + sg7014, + sg7015, + sg7068, + sg8005, + sg8007, + sg8008, + sg8009, + sg8012, + sg8013, + sg8014, + sg8015, + sg9005, + sg9009, + sg9015, + sg10005, + sg10009, + sg10015, + sg11009, + sg11015, + sg12009, + sg12015, + sg13009, + sg13015, + sg14009, + sg14015, + sg15009, + sg15015, + sg16009, + sg16015, + sg17009, + sg17015, +) +from diffpy.structure.spacegroupmod import ( + Rot_mX_mXY_mZ, + Rot_mX_mXY_Z, + Rot_mX_mY_mZ, + Rot_mX_mY_Z, + Rot_mX_mZ_mY, + Rot_mX_mZ_Y, + Rot_mX_Y_mZ, + Rot_mX_Y_Z, + Rot_mX_Z_mY, + Rot_mX_Z_Y, + Rot_mXY_mX_mZ, + Rot_mXY_mX_Z, + Rot_mXY_Y_mZ, + Rot_mXY_Y_Z, + Rot_mY_mX_mZ, + Rot_mY_mX_Z, + Rot_mY_mZ_mX, + Rot_mY_mZ_X, + Rot_mY_X_mZ, + Rot_mY_X_Z, + Rot_mY_XmY_mZ, + Rot_mY_XmY_Z, + Rot_mY_Z_mX, + Rot_mY_Z_X, + Rot_mZ_mX_mY, + Rot_mZ_mX_Y, + Rot_mZ_mY_mX, + Rot_mZ_mY_X, + Rot_mZ_X_mY, + Rot_mZ_X_Y, + Rot_mZ_Y_mX, + Rot_mZ_Y_X, + Rot_X_mY_mZ, + Rot_X_mY_Z, + Rot_X_mZ_mY, + Rot_X_mZ_Y, + Rot_X_XmY_mZ, + Rot_X_XmY_Z, + Rot_X_Y_mZ, + Rot_X_Y_Z, + Rot_X_Z_mY, + Rot_X_Z_Y, + Rot_XmY_mY_mZ, + Rot_XmY_mY_Z, + Rot_XmY_X_mZ, + Rot_XmY_X_Z, + Rot_Y_mX_mZ, + Rot_Y_mX_Z, + Rot_Y_mXY_mZ, + Rot_Y_mXY_Z, + Rot_Y_mZ_mX, + Rot_Y_mZ_X, + Rot_Y_X_mZ, + Rot_Y_X_Z, + Rot_Y_Z_mX, + Rot_Y_Z_X, + Rot_Z_mX_mY, + Rot_Z_mX_Y, + Rot_Z_mY_mX, + Rot_Z_mY_X, + Rot_Z_X_mY, + Rot_Z_X_Y, + Rot_Z_Y_mX, + Rot_Z_Y_X, + Tr_0_0_0, + Tr_0_0_12, + Tr_0_0_13, + Tr_0_0_14, + Tr_0_0_16, + Tr_0_0_23, + Tr_0_0_34, + Tr_0_0_56, + Tr_0_12_0, + Tr_0_12_12, + Tr_0_12_14, + Tr_0_12_34, + Tr_12_0_0, + Tr_12_0_12, + Tr_12_0_14, + Tr_12_0_34, + Tr_12_12_0, + Tr_12_12_12, + Tr_12_12_14, + Tr_12_12_34, + Tr_13_23_16, + Tr_13_23_23, + Tr_14_14_14, + Tr_14_14_34, + Tr_14_34_14, + Tr_14_34_34, + Tr_23_13_13, + Tr_23_13_56, + Tr_34_14_14, + Tr_34_14_34, + Tr_34_34_14, + Tr_34_34_34, ) # silence pyflakes checker -assert all(o is not None for o in (SpaceGroup, SymOp, - Rot_X_Y_Z, Rot_mX_mY_mZ, Rot_mX_Y_mZ, Rot_X_mY_Z, - Rot_mX_mY_Z, Rot_X_mY_mZ, Rot_mX_Y_Z, Rot_X_Y_mZ, - Rot_mY_X_Z, Rot_Y_mX_Z, Rot_Y_mX_mZ, Rot_mY_X_mZ, - Rot_Y_X_mZ, Rot_mY_mX_mZ, Rot_mY_mX_Z, Rot_Y_X_Z, - Rot_mY_XmY_Z, Rot_mXY_mX_Z, Rot_Z_X_Y, Rot_Y_Z_X, - Rot_Y_mXY_mZ, Rot_XmY_X_mZ, Rot_mZ_mX_mY, Rot_mY_mZ_mX, - Rot_mXY_Y_mZ, Rot_X_XmY_mZ, Rot_XmY_mY_mZ, Rot_mX_mXY_mZ, - Rot_mX_mZ_mY, Rot_mZ_mY_mX, Rot_mXY_Y_Z, Rot_X_XmY_Z, - Rot_XmY_mY_Z, Rot_mX_mXY_Z, Rot_X_Z_Y, Rot_Z_Y_X, - Rot_Y_mXY_Z, Rot_XmY_X_Z, Rot_mY_XmY_mZ, Rot_mXY_mX_mZ, - Rot_Z_mX_mY, Rot_mZ_mX_Y, Rot_mZ_X_mY, Rot_mY_Z_mX, - Rot_Y_mZ_mX, Rot_mY_mZ_X, Rot_mZ_X_Y, Rot_Z_X_mY, - Rot_Z_mX_Y, Rot_Y_mZ_X, Rot_mY_Z_X, Rot_Y_Z_mX, - Rot_X_Z_mY, Rot_mX_Z_Y, Rot_X_mZ_Y, Rot_Z_Y_mX, - Rot_Z_mY_X, Rot_mZ_Y_X, Rot_mX_Z_mY, Rot_mX_mZ_Y, - Rot_X_mZ_mY, Rot_Z_mY_mX, Rot_mZ_Y_mX, Rot_mZ_mY_X, - Tr_0_0_0, Tr_0_12_0, Tr_12_12_0, Tr_0_0_12, - Tr_12_12_12, Tr_0_12_12, Tr_12_0_12, Tr_12_0_0, - Tr_14_14_14, Tr_14_34_34, Tr_34_14_34, Tr_34_34_14, - Tr_0_0_14, Tr_0_0_34, Tr_0_12_14, Tr_12_0_34, - Tr_12_12_14, Tr_12_12_34, Tr_0_12_34, Tr_12_0_14, - Tr_0_0_13, Tr_0_0_23, Tr_23_13_13, Tr_13_23_23, - Tr_23_13_56, Tr_13_23_16, Tr_0_0_56, Tr_0_0_16, - Tr_34_14_14, Tr_34_34_34, Tr_14_14_34, Tr_14_34_14, - sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8, - sg9, sg10, sg11, sg12, sg13, sg14, sg15, sg16, - sg17, sg18, sg19, sg20, sg21, sg22, sg23, sg24, - sg25, sg26, sg27, sg28, sg29, sg30, sg31, sg32, - sg33, sg34, sg35, sg36, sg37, sg38, sg39, sg40, - sg41, sg42, sg43, sg44, sg45, sg46, sg47, sg48, - sg49, sg50, sg51, sg52, sg53, sg54, sg55, sg56, - sg57, sg58, sg59, sg60, sg61, sg62, sg63, sg64, - sg65, sg66, sg67, sg68, sg69, sg70, sg71, sg72, - sg73, sg74, sg75, sg76, sg77, sg78, sg79, sg80, - sg81, sg82, sg83, sg84, sg85, sg86, sg87, sg88, - sg89, sg90, sg91, sg92, sg93, sg94, sg95, sg96, - sg97, sg98, sg99, sg100, sg101, sg102, sg103, sg104, - sg105, sg106, sg107, sg108, sg109, sg110, sg111, sg112, - sg113, sg114, sg115, sg116, sg117, sg118, sg119, sg120, - sg121, sg122, sg123, sg124, sg125, sg126, sg127, sg128, - sg129, sg130, sg131, sg132, sg133, sg134, sg135, sg136, - sg137, sg138, sg139, sg140, sg141, sg142, sg143, sg144, - sg145, sg146, sg1146, sg147, sg148, sg1148, sg149, sg150, - sg151, sg152, sg153, sg154, sg155, sg1155, sg156, sg157, - sg158, sg159, sg160, sg1160, sg161, sg1161, sg162, sg163, - sg164, sg165, sg166, sg1166, sg167, sg1167, sg168, sg169, - sg170, sg171, sg172, sg173, sg174, sg175, sg176, sg177, - sg178, sg179, sg180, sg181, sg182, sg183, sg184, sg185, - sg186, sg187, sg188, sg189, sg190, sg191, sg192, sg193, - sg194, sg195, sg196, sg197, sg198, sg199, sg200, sg201, - sg202, sg203, sg204, sg205, sg206, sg207, sg208, sg209, - sg210, sg211, sg212, sg213, sg214, sg215, sg216, sg217, - sg218, sg219, sg220, sg221, sg222, sg223, sg224, sg225, - sg226, sg227, sg228, sg229, sg230, sg1003, sg1004, sg3004, - sg1005, sg2005, sg3005, sg1006, sg1007, sg1008, sg1009, sg1010, - sg1011, sg1012, sg1013, sg1014, sg1015, sg1017, sg2017, sg1018, - sg2018, sg3018, sg1020, sg1021, sg1022, sg1023, sg1059, sg1094, - sg1197, - sg2003, sg2004, sg4005, sg5005, sg6005, sg7005, sg8005, sg9005, - sg10005, sg2006, sg2007, sg3007, sg4007, sg5007, sg6007, sg7007, - sg8007, sg2008, sg3008, sg4008, sg5008, sg6008, sg7008, sg8008, - sg2009, sg3009, sg4009, sg5009, sg6009, sg7009, sg8009, sg9009, - sg10009, sg11009, sg12009, sg13009, sg14009, sg15009, sg16009, - sg17009, sg2010, sg2011, sg2012, sg3012, sg4012, sg5012, sg6012, - sg7012, sg8012, sg2013, sg3013, sg4013, sg5013, sg6013, sg7013, - sg8013, sg2014, sg3014, sg4014, sg5014, sg6014, sg7014, sg8014, - sg2015, sg3015, sg4015, sg5015, sg6015, sg7015, sg8015, sg9015, - sg10015, sg11015, sg12015, sg13015, sg14015, sg15015, sg16015, - sg17015, sg2020, sg3020, sg2021, sg3021, sg1025, sg2025, sg1026, - sg2026, sg3026, sg4026, sg5026, sg1027, sg2027, sg1028, sg2028, - sg3028, sg4028, sg5028, sg1029, sg2029, sg3029, sg4029, sg5029, - sg1030, sg2030, sg3030, sg4030, sg5030, sg1031, sg2031, sg3031, - sg4031, sg5031, sg1032, sg2032, sg1033, sg2033, sg3033, sg4033, - sg5033, sg1034, sg2034, sg1035, sg2035, sg1036, sg2036, sg3036, - sg4036, sg5036, sg1037, sg2037, sg1038, sg2038, sg3038, sg4038, - sg5038, sg1039, sg2039, sg3039, sg4039, sg5039, sg1040, sg2040, - sg3040, sg4040, sg5040, sg1041, sg2041, sg3041, sg4041, sg5041, - sg1042, sg2042, sg1043, sg2043, sg1044, sg2044, sg1045, sg2045, - sg1046, sg2046, sg3046, sg4046, sg5046, sg1049, sg2049, sg1050, - sg2050, sg3050, sg4050, sg1051, sg2051, sg3051, sg4051, sg5051, - sg1052, sg2052, sg3052, sg4052, sg5052, sg1053, sg2053, sg3053, - sg4053, sg5053, sg1054, sg2054, sg3054, sg4054, sg5054, sg1055, - sg2055, sg1056, sg2056, sg1057, sg2057, sg3057, sg4057, sg5057, - sg1058, sg2058, sg2059, sg3059, sg4059, sg5059, sg1060, sg2060, - sg3060, sg4060, sg5060, sg1061, sg1062, sg2062, sg3062, sg4062, - sg5062, sg1063, sg2063, sg3063, sg4063, sg5063, sg1064, sg2064, - sg3064, sg4064, sg5064, sg1065, sg2065, sg1066, sg2066, sg1067, - sg2067, sg3067, sg4067, sg5067, sg1068, sg2068, sg3068, sg4068, - sg5068, sg6068, sg7068, sg1072, sg2072, sg1073, sg1074, sg2074, - sg3074, sg4074, sg5074, -)) +assert all( + o is not None + for o in ( + SpaceGroup, + SymOp, + Rot_X_Y_Z, + Rot_mX_mY_mZ, + Rot_mX_Y_mZ, + Rot_X_mY_Z, + Rot_mX_mY_Z, + Rot_X_mY_mZ, + Rot_mX_Y_Z, + Rot_X_Y_mZ, + Rot_mY_X_Z, + Rot_Y_mX_Z, + Rot_Y_mX_mZ, + Rot_mY_X_mZ, + Rot_Y_X_mZ, + Rot_mY_mX_mZ, + Rot_mY_mX_Z, + Rot_Y_X_Z, + Rot_mY_XmY_Z, + Rot_mXY_mX_Z, + Rot_Z_X_Y, + Rot_Y_Z_X, + Rot_Y_mXY_mZ, + Rot_XmY_X_mZ, + Rot_mZ_mX_mY, + Rot_mY_mZ_mX, + Rot_mXY_Y_mZ, + Rot_X_XmY_mZ, + Rot_XmY_mY_mZ, + Rot_mX_mXY_mZ, + Rot_mX_mZ_mY, + Rot_mZ_mY_mX, + Rot_mXY_Y_Z, + Rot_X_XmY_Z, + Rot_XmY_mY_Z, + Rot_mX_mXY_Z, + Rot_X_Z_Y, + Rot_Z_Y_X, + Rot_Y_mXY_Z, + Rot_XmY_X_Z, + Rot_mY_XmY_mZ, + Rot_mXY_mX_mZ, + Rot_Z_mX_mY, + Rot_mZ_mX_Y, + Rot_mZ_X_mY, + Rot_mY_Z_mX, + Rot_Y_mZ_mX, + Rot_mY_mZ_X, + Rot_mZ_X_Y, + Rot_Z_X_mY, + Rot_Z_mX_Y, + Rot_Y_mZ_X, + Rot_mY_Z_X, + Rot_Y_Z_mX, + Rot_X_Z_mY, + Rot_mX_Z_Y, + Rot_X_mZ_Y, + Rot_Z_Y_mX, + Rot_Z_mY_X, + Rot_mZ_Y_X, + Rot_mX_Z_mY, + Rot_mX_mZ_Y, + Rot_X_mZ_mY, + Rot_Z_mY_mX, + Rot_mZ_Y_mX, + Rot_mZ_mY_X, + Tr_0_0_0, + Tr_0_12_0, + Tr_12_12_0, + Tr_0_0_12, + Tr_12_12_12, + Tr_0_12_12, + Tr_12_0_12, + Tr_12_0_0, + Tr_14_14_14, + Tr_14_34_34, + Tr_34_14_34, + Tr_34_34_14, + Tr_0_0_14, + Tr_0_0_34, + Tr_0_12_14, + Tr_12_0_34, + Tr_12_12_14, + Tr_12_12_34, + Tr_0_12_34, + Tr_12_0_14, + Tr_0_0_13, + Tr_0_0_23, + Tr_23_13_13, + Tr_13_23_23, + Tr_23_13_56, + Tr_13_23_16, + Tr_0_0_56, + Tr_0_0_16, + Tr_34_14_14, + Tr_34_34_34, + Tr_14_14_34, + Tr_14_34_14, + sg1, + sg2, + sg3, + sg4, + sg5, + sg6, + sg7, + sg8, + sg9, + sg10, + sg11, + sg12, + sg13, + sg14, + sg15, + sg16, + sg17, + sg18, + sg19, + sg20, + sg21, + sg22, + sg23, + sg24, + sg25, + sg26, + sg27, + sg28, + sg29, + sg30, + sg31, + sg32, + sg33, + sg34, + sg35, + sg36, + sg37, + sg38, + sg39, + sg40, + sg41, + sg42, + sg43, + sg44, + sg45, + sg46, + sg47, + sg48, + sg49, + sg50, + sg51, + sg52, + sg53, + sg54, + sg55, + sg56, + sg57, + sg58, + sg59, + sg60, + sg61, + sg62, + sg63, + sg64, + sg65, + sg66, + sg67, + sg68, + sg69, + sg70, + sg71, + sg72, + sg73, + sg74, + sg75, + sg76, + sg77, + sg78, + sg79, + sg80, + sg81, + sg82, + sg83, + sg84, + sg85, + sg86, + sg87, + sg88, + sg89, + sg90, + sg91, + sg92, + sg93, + sg94, + sg95, + sg96, + sg97, + sg98, + sg99, + sg100, + sg101, + sg102, + sg103, + sg104, + sg105, + sg106, + sg107, + sg108, + sg109, + sg110, + sg111, + sg112, + sg113, + sg114, + sg115, + sg116, + sg117, + sg118, + sg119, + sg120, + sg121, + sg122, + sg123, + sg124, + sg125, + sg126, + sg127, + sg128, + sg129, + sg130, + sg131, + sg132, + sg133, + sg134, + sg135, + sg136, + sg137, + sg138, + sg139, + sg140, + sg141, + sg142, + sg143, + sg144, + sg145, + sg146, + sg1146, + sg147, + sg148, + sg1148, + sg149, + sg150, + sg151, + sg152, + sg153, + sg154, + sg155, + sg1155, + sg156, + sg157, + sg158, + sg159, + sg160, + sg1160, + sg161, + sg1161, + sg162, + sg163, + sg164, + sg165, + sg166, + sg1166, + sg167, + sg1167, + sg168, + sg169, + sg170, + sg171, + sg172, + sg173, + sg174, + sg175, + sg176, + sg177, + sg178, + sg179, + sg180, + sg181, + sg182, + sg183, + sg184, + sg185, + sg186, + sg187, + sg188, + sg189, + sg190, + sg191, + sg192, + sg193, + sg194, + sg195, + sg196, + sg197, + sg198, + sg199, + sg200, + sg201, + sg202, + sg203, + sg204, + sg205, + sg206, + sg207, + sg208, + sg209, + sg210, + sg211, + sg212, + sg213, + sg214, + sg215, + sg216, + sg217, + sg218, + sg219, + sg220, + sg221, + sg222, + sg223, + sg224, + sg225, + sg226, + sg227, + sg228, + sg229, + sg230, + sg1003, + sg1004, + sg3004, + sg1005, + sg2005, + sg3005, + sg1006, + sg1007, + sg1008, + sg1009, + sg1010, + sg1011, + sg1012, + sg1013, + sg1014, + sg1015, + sg1017, + sg2017, + sg1018, + sg2018, + sg3018, + sg1020, + sg1021, + sg1022, + sg1023, + sg1059, + sg1094, + sg1197, + sg2003, + sg2004, + sg4005, + sg5005, + sg6005, + sg7005, + sg8005, + sg9005, + sg10005, + sg2006, + sg2007, + sg3007, + sg4007, + sg5007, + sg6007, + sg7007, + sg8007, + sg2008, + sg3008, + sg4008, + sg5008, + sg6008, + sg7008, + sg8008, + sg2009, + sg3009, + sg4009, + sg5009, + sg6009, + sg7009, + sg8009, + sg9009, + sg10009, + sg11009, + sg12009, + sg13009, + sg14009, + sg15009, + sg16009, + sg17009, + sg2010, + sg2011, + sg2012, + sg3012, + sg4012, + sg5012, + sg6012, + sg7012, + sg8012, + sg2013, + sg3013, + sg4013, + sg5013, + sg6013, + sg7013, + sg8013, + sg2014, + sg3014, + sg4014, + sg5014, + sg6014, + sg7014, + sg8014, + sg2015, + sg3015, + sg4015, + sg5015, + sg6015, + sg7015, + sg8015, + sg9015, + sg10015, + sg11015, + sg12015, + sg13015, + sg14015, + sg15015, + sg16015, + sg17015, + sg2020, + sg3020, + sg2021, + sg3021, + sg1025, + sg2025, + sg1026, + sg2026, + sg3026, + sg4026, + sg5026, + sg1027, + sg2027, + sg1028, + sg2028, + sg3028, + sg4028, + sg5028, + sg1029, + sg2029, + sg3029, + sg4029, + sg5029, + sg1030, + sg2030, + sg3030, + sg4030, + sg5030, + sg1031, + sg2031, + sg3031, + sg4031, + sg5031, + sg1032, + sg2032, + sg1033, + sg2033, + sg3033, + sg4033, + sg5033, + sg1034, + sg2034, + sg1035, + sg2035, + sg1036, + sg2036, + sg3036, + sg4036, + sg5036, + sg1037, + sg2037, + sg1038, + sg2038, + sg3038, + sg4038, + sg5038, + sg1039, + sg2039, + sg3039, + sg4039, + sg5039, + sg1040, + sg2040, + sg3040, + sg4040, + sg5040, + sg1041, + sg2041, + sg3041, + sg4041, + sg5041, + sg1042, + sg2042, + sg1043, + sg2043, + sg1044, + sg2044, + sg1045, + sg2045, + sg1046, + sg2046, + sg3046, + sg4046, + sg5046, + sg1049, + sg2049, + sg1050, + sg2050, + sg3050, + sg4050, + sg1051, + sg2051, + sg3051, + sg4051, + sg5051, + sg1052, + sg2052, + sg3052, + sg4052, + sg5052, + sg1053, + sg2053, + sg3053, + sg4053, + sg5053, + sg1054, + sg2054, + sg3054, + sg4054, + sg5054, + sg1055, + sg2055, + sg1056, + sg2056, + sg1057, + sg2057, + sg3057, + sg4057, + sg5057, + sg1058, + sg2058, + sg2059, + sg3059, + sg4059, + sg5059, + sg1060, + sg2060, + sg3060, + sg4060, + sg5060, + sg1061, + sg1062, + sg2062, + sg3062, + sg4062, + sg5062, + sg1063, + sg2063, + sg3063, + sg4063, + sg5063, + sg1064, + sg2064, + sg3064, + sg4064, + sg5064, + sg1065, + sg2065, + sg1066, + sg2066, + sg1067, + sg2067, + sg3067, + sg4067, + sg5067, + sg1068, + sg2068, + sg3068, + sg4068, + sg5068, + sg6068, + sg7068, + sg1072, + sg2072, + sg1073, + sg1074, + sg2074, + sg3074, + sg4074, + sg5074, + ) +) diff --git a/src/diffpy/structure/structure.py b/src/diffpy/structure/structure.py index bfec639e..2c2f3c89 100644 --- a/src/diffpy/structure/structure.py +++ b/src/diffpy/structure/structure.py @@ -16,18 +16,19 @@ """This module defines class Structure. """ +import codecs import copy as copymod + import numpy -import codecs import six -from diffpy.structure.lattice import Lattice from diffpy.structure.atom import Atom -from diffpy.structure.utils import _linkAtomAttribute, atomBareSymbol -from diffpy.structure.utils import isiterable +from diffpy.structure.lattice import Lattice +from diffpy.structure.utils import _linkAtomAttribute, atomBareSymbol, isiterable # ---------------------------------------------------------------------------- + class Structure(list): """Structure --> group of atoms @@ -43,13 +44,11 @@ class Structure(list): # default values for instance attributes - title = '' + title = "" _lattice = None pdffit = None - - def __init__(self, atoms=None, lattice=None, title=None, - filename=None, format=None): + def __init__(self, atoms=None, lattice=None, title=None, filename=None, format=None): """define group of atoms in a specified lattice. atoms -- list of Atom instances to be included in this Structure. @@ -75,7 +74,7 @@ def __init__(self, atoms=None, lattice=None, title=None, if any((atoms, lattice, title)): emsg = "Cannot use filename and atoms arguments together." raise ValueError(emsg) - readkwargs = (format is not None) and {'format' : format} or {} + readkwargs = (format is not None) and {"format": format} or {} self.read(filename, **readkwargs) return # copy initialization, must be first to allow lattice, title override @@ -93,22 +92,19 @@ def __init__(self, atoms=None, lattice=None, title=None, self.extend(atoms) return - def copy(self): - '''Return a copy of this Structure object. - ''' + """Return a copy of this Structure object.""" return copymod.copy(self) - def __copy__(self, target=None): - '''Create a deep copy of this instance. + """Create a deep copy of this instance. target -- optional target instance for copying, useful for copying a derived class. Defaults to new instance of the same type as self. Return a duplicate instance of this object. - ''' + """ if target is None: target = Structure() elif target is self: @@ -121,13 +117,11 @@ def __copy__(self, target=None): target[:] = self return target - def __str__(self): """simple string representation""" s_lattice = "lattice=%s" % self.lattice - s_atoms = '\n'.join([str(a) for a in self]) - return s_lattice + '\n' + s_atoms - + s_atoms = "\n".join([str(a) for a in self]) + return s_lattice + "\n" + s_atoms def addNewAtom(self, *args, **kwargs): """Add new Atom instance to the end of this Structure. @@ -136,19 +130,16 @@ def addNewAtom(self, *args, **kwargs): No return value. """ - kwargs['lattice'] = self.lattice + kwargs["lattice"] = self.lattice a = Atom(*args, **kwargs) self.append(a, copy=False) return - def getLastAtom(self): - """Return Reference to the last Atom in this structure. - """ + """Return Reference to the last Atom in this structure.""" last_atom = self[-1] return last_atom - def assignUniqueLabels(self): """Set a unique label string for each atom in this structure. The label strings are formatted as "%(baresymbol)s%(index)i", @@ -160,14 +151,14 @@ def assignUniqueLabels(self): # support duplicate atom instances islabeled = set() for a in self: - if a in islabeled: continue + if a in islabeled: + continue baresmbl = atomBareSymbol(a.element) elnum[baresmbl] = elnum.get(baresmbl, 0) + 1 a.label = baresmbl + str(elnum[baresmbl]) islabeled.add(a) return - def distance(self, aid0, aid1): """Distance between 2 atoms, no periodic boundary conditions. @@ -182,7 +173,6 @@ def distance(self, aid0, aid1): a0, a1 = self[aid0, aid1] return self.lattice.dist(a0.xyz, a1.xyz) - def angle(self, aid0, aid1, aid2): """The bond angle at the second of three atoms in degrees. @@ -200,7 +190,6 @@ def angle(self, aid0, aid1, aid2): u12 = a2.xyz - a1.xyz return self.lattice.angle(u10, u12) - def placeInLattice(self, new_lattice): """place structure into new_lattice coordinate system @@ -218,8 +207,7 @@ def placeInLattice(self, new_lattice): self.lattice = new_lattice return self - - def read(self, filename, format='auto'): + def read(self, filename, format="auto"): """Load structure from a file, any original data become lost. filename -- file to be loaded @@ -231,6 +219,7 @@ def read(self, filename, format='auto'): """ import diffpy.structure import diffpy.structure.parsers + getParser = diffpy.structure.parsers.getParser p = getParser(format) new_structure = p.parseFile(filename) @@ -242,13 +231,13 @@ def read(self, filename, format='auto'): self[:] = new_structure if not self.title: import os.path + tailname = os.path.basename(filename) tailbase = os.path.splitext(tailname)[0] self.title = tailbase return p - - def readStr(self, s, format='auto'): + def readStr(self, s, format="auto"): """Load structure from a string, any original data become lost. s -- string with structure definition @@ -259,6 +248,7 @@ def readStr(self, s, format='auto'): can be inspected for information related to particular format. """ from diffpy.structure.parsers import getParser + p = getParser(format) new_structure = p.parse(s) # reinitialize data after successful parsing @@ -269,7 +259,6 @@ def readStr(self, s, format='auto'): self[:] = new_structure return p - def write(self, filename, format): """Save structure to file in the specified format @@ -279,14 +268,14 @@ def write(self, filename, format): from parsers import formats """ from diffpy.structure.parsers import getParser + p = getParser(format) p.filename = filename s = p.tostring(self) - with codecs.open(filename, 'w', encoding='UTF-8') as fp: + with codecs.open(filename, "w", encoding="UTF-8") as fp: fp.write(s) return - def writeStr(self, format): """return string representation of the structure in specified format @@ -294,14 +283,13 @@ def writeStr(self, format): from parsers import formats """ from diffpy.structure.parsers import getParser + p = getParser(format) s = p.tostring(self) return s - def tolist(self): - '''Return atoms in this Structure as a standard Python list. - ''' + """Return atoms in this Structure as a standard Python list.""" rv = [a for a in self] return rv @@ -321,7 +309,6 @@ def append(self, a, copy=True): super(Structure, self).append(adup) return - def insert(self, idx, a, copy=True): """Insert atom a before position idx in this Structure. @@ -337,7 +324,6 @@ def insert(self, idx, a, copy=True): super(Structure, self).insert(idx, adup) return - def extend(self, atoms, copy=None): """Extend Structure with an iterable of atoms. @@ -359,19 +345,17 @@ def extend(self, atoms, copy=None): newatoms = adups else: memo = set(id(a) for a in self) - nextatom = lambda a: (a if id(a) not in memo - else copymod.copy(a)) + nextatom = lambda a: (a if id(a) not in memo else copymod.copy(a)) mark = lambda a: (memo.add(id(a)), a)[-1] newatoms = (mark(nextatom(a)) for a in atoms) elif copy: newatoms = adups else: newatoms = atoms - setlat = lambda a: (setattr(a, 'lattice', self.lattice), a)[-1] + setlat = lambda a: (setattr(a, "lattice", self.lattice), a)[-1] super(Structure, self).extend(setlat(a) for a in newatoms) return - def __getitem__(self, idx): """Get one or more atoms in this structure. @@ -406,8 +390,8 @@ def __getitem__(self, idx): # check if there is any string label that should be resolved scalarstringlabel = isinstance(idx, six.string_types) hasstringlabel = scalarstringlabel or ( - isiterable(idx) and - any(isinstance(ii, six.string_types) for ii in idx)) + isiterable(idx) and any(isinstance(ii, six.string_types) for ii in idx) + ) # if not, use numpy indexing to resolve idx if not hasstringlabel: idx1 = idx @@ -423,8 +407,8 @@ def __getitem__(self, idx): duplicate = object() labeltoindex = {} for i, a in enumerate(self): - labeltoindex[a.label] = ( - duplicate if a.label in labeltoindex else i) + labeltoindex[a.label] = duplicate if a.label in labeltoindex else i + def _resolveindex(aid): aid1 = aid if type(aid) is str: @@ -434,6 +418,7 @@ def _resolveindex(aid): if aid1 is duplicate: raise IndexError("Atom label %r is not unique." % aid) return aid1 + # generate new index object that has no strings if scalarstringlabel: idx2 = _resolveindex(idx) @@ -446,7 +431,6 @@ def _resolveindex(aid): rv = self[idx2] return rv - def __setitem__(self, idx, value, copy=True): """Assign self[idx] atom to value. @@ -459,9 +443,11 @@ def __setitem__(self, idx, value, copy=True): """ # handle slice assignment if isinstance(idx, slice): + def _fixlat(a): a.lattice = self.lattice return a + v1 = value if copy: keep = set(super(Structure, self).__getitem__(idx)) @@ -474,63 +460,58 @@ def _fixlat(a): super(Structure, self).__setitem__(idx, vfinal) return - def __add__(self, other): - '''Return new Structure object with appended atoms from other. + """Return new Structure object with appended atoms from other. other -- sequence of Atom instances Return new Structure with a copy of Atom instances. - ''' + """ rv = copymod.copy(self) rv += other return rv - def __iadd__(self, other): - '''Extend this Structure with atoms from other. + """Extend this Structure with atoms from other. other -- sequence of Atom instances Return self. - ''' + """ self.extend(other, copy=True) return self - def __sub__(self, other): - '''Return new Structure that has atoms from the other removed. + """Return new Structure that has atoms from the other removed. other -- sequence of Atom instances Return new Structure with a copy of Atom instances. - ''' + """ otherset = set(other) keepindices = [i for i, a in enumerate(self) if not a in otherset] rv = copymod.copy(self[keepindices]) return rv - def __isub__(self, other): - '''Remove other atoms if present in this structure. + """Remove other atoms if present in this structure. other -- sequence of Atom instances Return self. - ''' + """ otherset = set(other) self[:] = [a for a in self if a not in otherset] return self - def __mul__(self, n): - '''Return new Structure with n-times concatenated atoms from self. + """Return new Structure with n-times concatenated atoms from self. Atoms and lattice in the new structure are all copies. n -- integer multiple Return new Structure. - ''' + """ rv = copymod.copy(self[:0]) rv += n * self.tolist() return rv @@ -538,16 +519,15 @@ def __mul__(self, n): # right-side multiplication is the same as left-side __rmul__ = __mul__ - def __imul__(self, n): - '''Concatenate this Structure to n-times more atoms. + """Concatenate this Structure to n-times more atoms. For positive multiple the current Atom objects remain at the beginning of this Structure. n -- integer multiple Return self. - ''' + """ if n <= 0: self[:] = [] else: @@ -562,12 +542,12 @@ def _get_lattice(self): return self._lattice def _set_lattice(self, value): - for a in self: a.lattice = value + for a in self: + a.lattice = value self._lattice = value return - lattice = property(_get_lattice, _set_lattice, doc = - "Coordinate system for this Structure.") + lattice = property(_get_lattice, _set_lattice, doc="Coordinate system for this Structure.") # composition @@ -577,114 +557,160 @@ def _get_composition(self): rv[a.element] = rv.get(a.element, 0.0) + a.occupancy return rv - composition = property(_get_composition, - doc="Dictionary of chemical symbols and their total occupancies.") + composition = property(_get_composition, doc="Dictionary of chemical symbols and their total occupancies.") # linked atom attributes - element = _linkAtomAttribute('element', - '''Character array of atom types. Assignment updates - the element attribute of the respective atoms.''', - toarray=numpy.char.array) - - xyz = _linkAtomAttribute('xyz', - '''Array of fractional coordinates of all atoms. - Assignment updates xyz attribute of all atoms.''') - - x = _linkAtomAttribute('x', - '''Array of all fractional coordinates x. - Assignment updates xyz attribute of all atoms.''') - - y = _linkAtomAttribute('y', - '''Array of all fractional coordinates y. - Assignment updates xyz attribute of all atoms.''') - - z = _linkAtomAttribute('z', - '''Array of all fractional coordinates z. - Assignment updates xyz attribute of all atoms.''') - - label = _linkAtomAttribute('label', - '''Character array of atom names. Assignment updates - the label attribute of all atoms.''', - toarray=numpy.char.array) - - occupancy = _linkAtomAttribute('occupancy', - '''Array of atom occupancies. Assignment updates the - occupancy attribute of all atoms.''') - - xyz_cartn = _linkAtomAttribute('xyz_cartn', - '''Array of absolute Cartesian coordinates of all atoms. - Assignment updates the xyz attribute of all atoms.''') - - anisotropy = _linkAtomAttribute('anisotropy', - '''Boolean array for anisotropic thermal displacement flags. - Assignment updates the anisotropy attribute of all atoms.''') - - U = _linkAtomAttribute('U', - '''Array of anisotropic thermal displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - Uisoequiv = _linkAtomAttribute('Uisoequiv', - '''Array of isotropic thermal displacement or equivalent values. - Assignment updates the U attribute of all atoms.''') - - U11 = _linkAtomAttribute('U11', - '''Array of U11 elements of the anisotropic displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - U22 = _linkAtomAttribute('U22', - '''Array of U22 elements of the anisotropic displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - U33 = _linkAtomAttribute('U33', - '''Array of U33 elements of the anisotropic displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - U12 = _linkAtomAttribute('U12', - '''Array of U12 elements of the anisotropic displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - U13 = _linkAtomAttribute('U13', - '''Array of U13 elements of the anisotropic displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - U23 = _linkAtomAttribute('U23', - '''Array of U23 elements of the anisotropic displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - Bisoequiv = _linkAtomAttribute('Bisoequiv', - '''Array of Debye-Waller isotropic thermal displacement or equivalent - values. Assignment updates the U attribute of all atoms.''') - - B11 = _linkAtomAttribute('B11', - '''Array of B11 elements of the Debye-Waller displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - B22 = _linkAtomAttribute('B22', - '''Array of B22 elements of the Debye-Waller displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - B33 = _linkAtomAttribute('B33', - '''Array of B33 elements of the Debye-Waller displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - B12 = _linkAtomAttribute('B12', - '''Array of B12 elements of the Debye-Waller displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - B13 = _linkAtomAttribute('B13', - '''Array of B13 elements of the Debye-Waller displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') - - B23 = _linkAtomAttribute('B23', - '''Array of B23 elements of the Debye-Waller displacement tensors. - Assignment updates the U and anisotropy attributes of all atoms.''') + element = _linkAtomAttribute( + "element", + """Character array of atom types. Assignment updates + the element attribute of the respective atoms.""", + toarray=numpy.char.array, + ) + + xyz = _linkAtomAttribute( + "xyz", + """Array of fractional coordinates of all atoms. + Assignment updates xyz attribute of all atoms.""", + ) + + x = _linkAtomAttribute( + "x", + """Array of all fractional coordinates x. + Assignment updates xyz attribute of all atoms.""", + ) + + y = _linkAtomAttribute( + "y", + """Array of all fractional coordinates y. + Assignment updates xyz attribute of all atoms.""", + ) + + z = _linkAtomAttribute( + "z", + """Array of all fractional coordinates z. + Assignment updates xyz attribute of all atoms.""", + ) + + label = _linkAtomAttribute( + "label", + """Character array of atom names. Assignment updates + the label attribute of all atoms.""", + toarray=numpy.char.array, + ) + + occupancy = _linkAtomAttribute( + "occupancy", + """Array of atom occupancies. Assignment updates the + occupancy attribute of all atoms.""", + ) + + xyz_cartn = _linkAtomAttribute( + "xyz_cartn", + """Array of absolute Cartesian coordinates of all atoms. + Assignment updates the xyz attribute of all atoms.""", + ) + + anisotropy = _linkAtomAttribute( + "anisotropy", + """Boolean array for anisotropic thermal displacement flags. + Assignment updates the anisotropy attribute of all atoms.""", + ) + + U = _linkAtomAttribute( + "U", + """Array of anisotropic thermal displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + Uisoequiv = _linkAtomAttribute( + "Uisoequiv", + """Array of isotropic thermal displacement or equivalent values. + Assignment updates the U attribute of all atoms.""", + ) + + U11 = _linkAtomAttribute( + "U11", + """Array of U11 elements of the anisotropic displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + U22 = _linkAtomAttribute( + "U22", + """Array of U22 elements of the anisotropic displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + U33 = _linkAtomAttribute( + "U33", + """Array of U33 elements of the anisotropic displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + U12 = _linkAtomAttribute( + "U12", + """Array of U12 elements of the anisotropic displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + U13 = _linkAtomAttribute( + "U13", + """Array of U13 elements of the anisotropic displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + U23 = _linkAtomAttribute( + "U23", + """Array of U23 elements of the anisotropic displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + Bisoequiv = _linkAtomAttribute( + "Bisoequiv", + """Array of Debye-Waller isotropic thermal displacement or equivalent + values. Assignment updates the U attribute of all atoms.""", + ) + + B11 = _linkAtomAttribute( + "B11", + """Array of B11 elements of the Debye-Waller displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + B22 = _linkAtomAttribute( + "B22", + """Array of B22 elements of the Debye-Waller displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + B33 = _linkAtomAttribute( + "B33", + """Array of B33 elements of the Debye-Waller displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + B12 = _linkAtomAttribute( + "B12", + """Array of B12 elements of the Debye-Waller displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + B13 = _linkAtomAttribute( + "B13", + """Array of B13 elements of the Debye-Waller displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) + + B23 = _linkAtomAttribute( + "B23", + """Array of B23 elements of the Debye-Waller displacement tensors. + Assignment updates the U and anisotropy attributes of all atoms.""", + ) # Private Methods -------------------------------------------------------- def __emptySharedStructure(self): - '''Return empty Structure with standard attributes same as in self. - ''' + """Return empty Structure with standard attributes same as in self.""" rv = Structure() rv.__dict__.update([(k, getattr(self, k)) for k in rv.__dict__]) return rv @@ -702,4 +728,5 @@ def __setslice__(self, lo, hi, sequence): # ------------------------------------------------------------------------ + # End of class Structure diff --git a/src/diffpy/structure/structureerrors.py b/src/diffpy/structure/structureerrors.py index 80fdf87d..2669b6e1 100644 --- a/src/diffpy/structure/structureerrors.py +++ b/src/diffpy/structure/structureerrors.py @@ -16,19 +16,20 @@ """Exceptions used in Structure package. """ + class StructureFormatError(Exception): - """Exception for failed IO from Structure file - """ + """Exception for failed IO from Structure file""" + pass class LatticeError(Exception): - """Exception for impossible lattice parameters. - """ + """Exception for impossible lattice parameters.""" + pass class SymmetryError(Exception): - """Exception raised for invalid symmetry operations. - """ + """Exception raised for invalid symmetry operations.""" + pass diff --git a/src/diffpy/structure/symmetryutilities.py b/src/diffpy/structure/symmetryutilities.py index dfaba6be..5364f04a 100644 --- a/src/diffpy/structure/symmetryutilities.py +++ b/src/diffpy/structure/symmetryutilities.py @@ -17,8 +17,9 @@ and generation of positional constraints. """ -import sys import re +import sys + import numpy from diffpy.structure.structureerrors import SymmetryError @@ -31,10 +32,11 @@ # Standard symbols denoting elements of anisotropic thermal # displacement tensor. -stdUsymbols = ['U11', 'U22', 'U33', 'U12', 'U13', 'U23'] +stdUsymbols = ["U11", "U22", "U33", "U12", "U13", "U23"] # ---------------------------------------------------------------------------- + def isSpaceGroupLatPar(spacegroup, a, b, c, alpha, beta, gamma): """Check if space group allows passed lattice parameters. @@ -43,34 +45,41 @@ def isSpaceGroupLatPar(spacegroup, a, b, c, alpha, beta, gamma): Return bool. """ + # crystal system rules # ref: Benjamin, W. A., Introduction to crystallography, # New York (1969), p.60 def check_triclinic(): return True + def check_monoclinic(): rv = (alpha == gamma == 90) or (alpha == beta == 90) return rv + def check_orthorhombic(): - return (alpha == beta == gamma == 90) + return alpha == beta == gamma == 90 + def check_tetragonal(): - return (a == b and alpha == beta == gamma == 90) + return a == b and alpha == beta == gamma == 90 + def check_trigonal(): - rv = (a == b == c and alpha == beta == gamma) or \ - (a == b and alpha == beta == 90 and gamma == 120) + rv = (a == b == c and alpha == beta == gamma) or (a == b and alpha == beta == 90 and gamma == 120) return rv + def check_hexagonal(): - return (a == b and alpha == beta == 90 and gamma == 120) + return a == b and alpha == beta == 90 and gamma == 120 + def check_cubic(): - return (a == b == c and alpha == beta == gamma == 90) + return a == b == c and alpha == beta == gamma == 90 + crystal_system_rules = { - "TRICLINIC" : check_triclinic, - "MONOCLINIC" : check_monoclinic, - "ORTHORHOMBIC" : check_orthorhombic, - "TETRAGONAL" : check_tetragonal, - "TRIGONAL" : check_trigonal, - "HEXAGONAL" : check_hexagonal, - "CUBIC" : check_cubic + "TRICLINIC": check_triclinic, + "MONOCLINIC": check_monoclinic, + "ORTHORHOMBIC": check_orthorhombic, + "TETRAGONAL": check_tetragonal, + "TRIGONAL": check_trigonal, + "HEXAGONAL": check_hexagonal, + "CUBIC": check_cubic, } rule = crystal_system_rules[spacegroup.crystal_system] return rule() @@ -80,8 +89,8 @@ def check_cubic(): # isconstantFormula runs faster when regular expression is not # compiled per every single call. -_rx_constant_formula = re.compile( - r'[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)??(/[-+]?\d+)?$') +_rx_constant_formula = re.compile(r"[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)??(/[-+]?\d+)?$") + def isconstantFormula(s): """Check if formula string is constant. True when argument @@ -91,11 +100,13 @@ def isconstantFormula(s): Return bool. """ - res = _rx_constant_formula.match(s.replace(' ', '')) + res = _rx_constant_formula.match(s.replace(" ", "")) return bool(res) + # Helper class intended for this module only: + class _Position2Tuple(object): """Create callable object that converts fractional coordinates to a tuple of integers with given precision. For presision close to zero @@ -108,6 +119,7 @@ class _Position2Tuple(object): eps -- cutoff for equivalent coordinates. When two coordiantes map to the same tuple, they are closer than eps. """ + def __init__(self, eps=None): """Initialize _Position2Tuple @@ -119,11 +131,10 @@ def __init__(self, eps=None): self.eps = eps + 1.0 self.eps = self.eps - 1.0 # no conversions for very small eps - if self.eps == 0.0 or 1.0/self.eps > sys.maxsize: + if self.eps == 0.0 or 1.0 / self.eps > sys.maxsize: self.eps = 0.0 return - def __call__(self, xyz): """Convert array of fractional coordinates to a tuple. @@ -136,9 +147,10 @@ def __call__(self, xyz): tpl = tuple(xyz % 1.0) return tpl # here we convert to integer - tpl = tuple( [int((xi - numpy.floor(xi))/self.eps) for xi in xyz] ) + tpl = tuple([int((xi - numpy.floor(xi)) / self.eps) for xi in xyz]) return tpl + # End of class _Position2Tuple @@ -152,7 +164,7 @@ def positionDifference(xyz0, xyz1): dxyz = numpy.asarray(xyz0) - xyz1 # map differences to [0,0.5] dxyz = dxyz - numpy.floor(dxyz) - mask = (dxyz > 0.5) + mask = dxyz > 0.5 dxyz[mask] = 1.0 - dxyz[mask] return dxyz @@ -184,7 +196,7 @@ def equalPositions(xyz0, xyz1, eps): return numpy.all(dxyz <= eps) -def expandPosition(spacegroup, xyz, sgoffset=[0,0,0], eps=None): +def expandPosition(spacegroup, xyz, sgoffset=[0, 0, 0], eps=None): """Obtain unique equivalent positions and corresponding operations. spacegroup -- instance of SpaceGroup @@ -200,7 +212,7 @@ def expandPosition(spacegroup, xyz, sgoffset=[0,0,0], eps=None): eps = epsilon pos2tuple = _Position2Tuple(eps) positions = [] - site_symops = {} # position tuples with [related symops] + site_symops = {} # position tuples with [related symops] for symop in spacegroup.iter_symops(): # operate on coordinates in non-shifted spacegroup pos = symop(xyz + sgoffset) - sgoffset @@ -216,9 +228,10 @@ def expandPosition(spacegroup, xyz, sgoffset=[0,0,0], eps=None): # is it an equivalent position? if equalPositions(nearpos, pos, eps): # tpl should map to the same list as nearpos - site_symops[tpl] = site_symops[ pos2tuple(nearpos) ] + site_symops[tpl] = site_symops[pos2tuple(nearpos)] pos_is_new = False - if pos_is_new: positions.append(pos) + if pos_is_new: + positions.append(pos) # here tpl is inside site_symops site_symops[tpl].append(symop) # pos_symops is nested list of symops associated with each position @@ -228,9 +241,9 @@ def expandPosition(spacegroup, xyz, sgoffset=[0,0,0], eps=None): def nullSpace(A): - """Null space of matrix A. - """ + """Null space of matrix A.""" from numpy import linalg + u, s, v = linalg.svd(A) # s may have smaller dimension than v vnrows = numpy.shape(v)[0] @@ -256,14 +269,17 @@ def _findInvariants(symops): if numpy.all(op.R == R0) and numpy.all(op.t == t0): invrnts = ops break - if invrnts: break + if invrnts: + break if invrnts is None: emsg = "Could not find identity operation." raise ValueError(emsg) return invrnts + # ---------------------------------------------------------------------------- + class GeneratorSite(object): """Storage of data related to a generator positions. @@ -286,19 +302,20 @@ class GeneratorSite(object): Uparameters -- list of (U symbol, value) pairs """ - Ucomponents = numpy.array([ - [[1, 0, 0], [0, 0, 0], [0, 0, 0]], - [[0, 0, 0], [0, 1, 0], [0, 0, 0]], - [[0, 0, 0], [0, 0, 0], [0, 0, 1]], - [[0, 1, 0], [1, 0, 0], [0, 0, 0]], - [[0, 0, 1], [0, 0, 0], [1, 0, 0]], - [[0, 0, 0], [0, 0, 1], [0, 1, 0]],], dtype=float) - idx2Usymbol = { 0 : 'U11', 1 : 'U12', 2 : 'U13', - 3 : 'U12', 4 : 'U22', 5 : 'U23', - 6 : 'U13', 7 : 'U23', 8 : 'U33' } - - def __init__(self, spacegroup, xyz, Uij=numpy.zeros((3,3)), - sgoffset=[0,0,0], eps=None): + Ucomponents = numpy.array( + [ + [[1, 0, 0], [0, 0, 0], [0, 0, 0]], + [[0, 0, 0], [0, 1, 0], [0, 0, 0]], + [[0, 0, 0], [0, 0, 0], [0, 0, 1]], + [[0, 1, 0], [1, 0, 0], [0, 0, 0]], + [[0, 0, 1], [0, 0, 0], [1, 0, 0]], + [[0, 0, 0], [0, 0, 1], [0, 1, 0]], + ], + dtype=float, + ) + idx2Usymbol = {0: "U11", 1: "U12", 2: "U13", 3: "U12", 4: "U22", 5: "U23", 6: "U13", 7: "U23", 8: "U33"} + + def __init__(self, spacegroup, xyz, Uij=numpy.zeros((3, 3)), sgoffset=[0, 0, 0], eps=None): """Initialize GeneratorSite. spacegroup -- instance of SpaceGroup @@ -331,16 +348,14 @@ def __init__(self, spacegroup, xyz, Uij=numpy.zeros((3,3)), invariants = _findInvariants(ops) # shift self.xyz exactly to the special position if mult > 1: - xyzdups = numpy.array([op(xyz + self.sgoffset) - self.sgoffset - for op in invariants]) + xyzdups = numpy.array([op(xyz + self.sgoffset) - self.sgoffset for op in invariants]) dxyz = xyzdups - xyz dxyz = numpy.mean(dxyz - dxyz.round(), axis=0) # recalculate if needed if numpy.any(dxyz != 0.0): self.xyz = xyz + dxyz self.xyz[numpy.fabs(self.xyz) < self.eps] = 0.0 - sites, ops, mult = expandPosition(spacegroup, - self.xyz, self.sgoffset, eps) + sites, ops, mult = expandPosition(spacegroup, self.xyz, self.sgoffset, eps) invariants = _findInvariants(ops) # self.xyz, sites, ops are all adjusted here self.eqxyz = sites @@ -354,7 +369,6 @@ def __init__(self, spacegroup, xyz, Uij=numpy.zeros((3,3)), self._findeqUij() return - def signedRatStr(self, x): """Convert floating point number to signed rational representation. Possible fractional are multiples of 1/3, 1/6, 1/7, 1/9, if these @@ -363,30 +377,32 @@ def signedRatStr(self, x): Return string. """ s = "{:.8g}".format(x) - if len(s) < 6: return "%+g" % x + if len(s) < 6: + return "%+g" % x den = numpy.array([3.0, 6.0, 7.0, 9.0]) nom = x * den idx = numpy.where(numpy.fabs(nom - nom.round()) < self.eps)[0] - if idx.size == 0: return "%+g" % x + if idx.size == 0: + return "%+g" % x # here we have fraction return "%+.0f/%.0f" % (nom[idx[0]], den[idx[0]]) - def _findNullSpace(self): """Calculate self.null_space from self.invariants. Try to represent self.null_space using small integers. """ R0 = self.invariants[0].R - Rdiff = [ (symop.R - R0) for symop in self.invariants ] + Rdiff = [(symop.R - R0) for symop in self.invariants] Rdiff = numpy.concatenate(Rdiff, axis=0) self.null_space = nullSpace(Rdiff) - if self.null_space.size == 0: return + if self.null_space.size == 0: + return # reverse sort rows of null_space rows by absolute value key = tuple(numpy.fabs(numpy.transpose(self.null_space))[::-1]) order = numpy.lexsort(key) self.null_space = self.null_space[order[::-1]] # rationalize by the smallest element larger than cutoff - cutoff = 1.0/32 + cutoff = 1.0 / 32 for row in self.null_space: abrow = numpy.abs(row) sgrow = numpy.sign(row) @@ -402,25 +418,22 @@ def _findNullSpace(self): row[:] = (sgrow * abrow) / sgrow[idx] / abrow[idx] return - def _findPosParameters(self): - """Find pparameters and their values for expressing self.xyz. - """ + """Find pparameters and their values for expressing self.xyz.""" usedsymbol = {} # parameter values depend on offset of self.xyz txyz = self.xyz # define txyz such that most of its elements are zero for nvec in self.null_space: idx = numpy.where(numpy.fabs(nvec) >= epsilon)[0][0] - varvalue = txyz[idx]/nvec[idx] - txyz = txyz - varvalue*nvec + varvalue = txyz[idx] / nvec[idx] + txyz = txyz - varvalue * nvec # determine standard parameter name vname = [s for s in "xyz"[idx:] if not s in usedsymbol][0] - self.pparameters.append( (vname, varvalue) ) + self.pparameters.append((vname, varvalue)) usedsymbol[vname] = True return - def _findUSpace(self): """Find independent U components with respect to invariant rotations. @@ -428,64 +441,57 @@ def _findUSpace(self): n = len(self.invariants) R6zall = numpy.tile(-numpy.identity(6, dtype=float), (n, 1)) R6zall_iter = numpy.split(R6zall, n, axis=0) - i6kl = ((0, (0, 0)), (1, (1, 1)), (2, (2, 2)), - (3, (0, 1)), (4, (0, 2)), (5, (1, 2))) + i6kl = ((0, (0, 0)), (1, (1, 1)), (2, (2, 2)), (3, (0, 1)), (4, (0, 2)), (5, (1, 2))) for op, R6z in zip(self.invariants, R6zall_iter): R = op.R for j, Ucj in enumerate(self.Ucomponents): Ucj2 = numpy.dot(R, numpy.dot(Ucj, R.T)) for i, kl in i6kl: - R6z[i,j] += Ucj2[kl] + R6z[i, j] += Ucj2[kl] Usp6 = nullSpace(R6zall) # normalize Usp6 by its maximum component mxcols = numpy.argmax(numpy.fabs(Usp6), axis=1) mxrows = numpy.arange(len(mxcols)) - Usp6 /= Usp6[mxrows,mxcols].reshape(-1, 1) + Usp6 /= Usp6[mxrows, mxcols].reshape(-1, 1) Usp6 = numpy.around(Usp6, 2) # normalize again after rounding to get correct signs mxcols = numpy.argmax(numpy.fabs(Usp6), axis=1) - Usp6 /= Usp6[mxrows,mxcols].reshape(-1, 1) + Usp6 /= Usp6[mxrows, mxcols].reshape(-1, 1) self.Uspace = numpy.tensordot(Usp6, self.Ucomponents, axes=(1, 0)) - self.Uisotropy = (len(self.Uspace) == 1) + self.Uisotropy = len(self.Uspace) == 1 return - def _findUParameters(self): - """Find Uparameters and their values for expressing self.Uij. - """ + """Find Uparameters and their values for expressing self.Uij.""" # permute indices as 00 11 22 01 02 12 10 20 21 diagorder = numpy.array((0, 4, 8, 1, 2, 5, 3, 6, 7)) Uijflat = self.Uij.flatten() for Usp in self.Uspace: Uspflat = Usp.flatten() Uspnorm2 = numpy.dot(Uspflat, Uspflat) - permidx = next(i for i, x in enumerate(Uspflat[diagorder]) - if x == 1) + permidx = next(i for i, x in enumerate(Uspflat[diagorder]) if x == 1) idx = diagorder[permidx] vname = self.idx2Usymbol[idx] varvalue = numpy.dot(Uijflat, Uspflat) / Uspnorm2 - self.Uparameters.append( (vname, varvalue) ) + self.Uparameters.append((vname, varvalue)) return - def _findeqUij(self): - """Adjust self.Uij and self.eqUij to be consistent with spacegroup - """ - self.Uij = numpy.zeros((3,3), dtype=float) + """Adjust self.Uij and self.eqUij to be consistent with spacegroup""" + self.Uij = numpy.zeros((3, 3), dtype=float) for i in range(len(self.Uparameters)): Usp = self.Uspace[i] varvalue = self.Uparameters[i][1] - self.Uij += varvalue*Usp + self.Uij += varvalue * Usp # now determine eqUij for ops in self.symops: # take first rotation matrix R = ops[0].R Rt = R.transpose() - self.eqUij.append( numpy.dot(R, numpy.dot(self.Uij, Rt)) ) + self.eqUij.append(numpy.dot(R, numpy.dot(self.Uij, Rt))) return - - def positionFormula(self, pos, xyzsymbols=("x","y","z")): + def positionFormula(self, pos, xyzsymbols=("x", "y", "z")): """Formula of equivalent position with respect to generator site pos -- fractional coordinates of possibly equivalent site @@ -499,7 +505,8 @@ def positionFormula(self, pos, xyzsymbols=("x","y","z")): # find pos in eqxyz idx = nearestSiteIndex(self.eqxyz, pos) eqpos = self.eqxyz[idx] - if not equalPositions(eqpos, pos, self.eps): return {} + if not equalPositions(eqpos, pos, self.eps): + return {} # any rotation matrix should do fine R = self.symops[idx][0].R nsrotated = numpy.dot(self.null_space, numpy.transpose(R)) @@ -510,22 +517,21 @@ def positionFormula(self, pos, xyzsymbols=("x","y","z")): teqpos -= nvec * varvalue # map varnames to xyzsymbols name2sym = dict(zip(("x", "y", "z"), xyzsymbols)) - xyzformula = 3*[""] + xyzformula = 3 * [""] for nvec, (vname, ignore) in zip(nsrotated, self.pparameters): for i in range(3): - if abs(nvec[i]) < epsilon: continue - xyzformula[i] += "%s*%s " % \ - (self.signedRatStr(nvec[i]), name2sym[vname]) + if abs(nvec[i]) < epsilon: + continue + xyzformula[i] += "%s*%s " % (self.signedRatStr(nvec[i]), name2sym[vname]) # add constant offset teqpos to all formulas for i in range(3): - if xyzformula[i] and abs(teqpos[i]) < epsilon: continue + if xyzformula[i] and abs(teqpos[i]) < epsilon: + continue xyzformula[i] += self.signedRatStr(teqpos[i]) # reduce unnecessary +1* and -1* - xyzformula = [ re.sub('^[+]1[*]|(?<=[+-])1[*]', '', f).strip() - for f in xyzformula ] + xyzformula = [re.sub("^[+]1[*]|(?<=[+-])1[*]", "", f).strip() for f in xyzformula] return dict(zip(("x", "y", "z"), xyzformula)) - def UFormula(self, pos, Usymbols=stdUsymbols): """List of atom displacement formulas with custom parameter symbols. @@ -539,12 +545,13 @@ def UFormula(self, pos, Usymbols=stdUsymbols): # find pos in eqxyz idx = nearestSiteIndex(self.eqxyz, pos) eqpos = self.eqxyz[idx] - if not equalPositions(eqpos, pos, self.eps): return {} + if not equalPositions(eqpos, pos, self.eps): + return {} # any rotation matrix should do fine R = self.symops[idx][0].R Rt = R.transpose() Usrotated = [numpy.dot(R, numpy.dot(Us, Rt)) for Us in self.Uspace] - Uformula = dict.fromkeys(stdUsymbols, '') + Uformula = dict.fromkeys(stdUsymbols, "") name2sym = dict(zip(stdUsymbols, Usymbols)) for Usr, (vname, ignore) in zip(Usrotated, self.Uparameters): # avoid adding off-diagonal elements twice @@ -552,16 +559,16 @@ def UFormula(self, pos, Usymbols=stdUsymbols): Usr -= numpy.tril(Usr, -1) Usrflat = Usr.flatten() for i in numpy.where(Usrflat)[0]: - f = '%+g*%s' % (Usrflat[i], name2sym[vname]) + f = "%+g*%s" % (Usrflat[i], name2sym[vname]) smbl = self.idx2Usymbol[i] Uformula[smbl] += f for smbl, f in Uformula.items(): - if not f: f = '0' - f = re.sub(r'^[+]?1[*]|^[+](?=\d)|(?<=[+-])1[*]', '', f).strip() + if not f: + f = "0" + f = re.sub(r"^[+]?1[*]|^[+](?=\d)|(?<=[+-])1[*]", "", f).strip() Uformula[smbl] = f return Uformula - def eqIndex(self, pos): """Index of the nearest generator equivalent site @@ -571,10 +578,12 @@ def eqIndex(self, pos): """ return nearestSiteIndex(self.eqxyz, pos) + # End of class GeneratorSite # ---------------------------------------------------------------------------- + class ExpandAsymmetricUnit(object): """Expand asymmetric unit and anisotropic thermal displacement @@ -594,8 +603,7 @@ class ExpandAsymmetricUnit(object): # By design Atom instances are not accepted as arguments to keep # number of required imports low. - def __init__(self, spacegroup, corepos, coreUijs=None, - sgoffset=[0,0,0], eps=None): + def __init__(self, spacegroup, corepos, coreUijs=None, sgoffset=[0, 0, 0], eps=None): """Initialize and calculate instance of ExpandAsymmetricUnit spacegroup -- instance of SpaceGroup @@ -622,22 +630,23 @@ def __init__(self, spacegroup, corepos, coreUijs=None, if coreUijs: self.coreUijs = coreUijs else: - self.coreUijs = numpy.zeros((corelen,3,3), dtype=float) + self.coreUijs = numpy.zeros((corelen, 3, 3), dtype=float) for cpos, cUij in zip(self.corepos, self.coreUijs): - gen = GeneratorSite(self.spacegroup, cpos, cUij, - self.sgoffset, self.eps) + gen = GeneratorSite(self.spacegroup, cpos, cUij, self.sgoffset, self.eps) self.multiplicity.append(gen.multiplicity) self.Uisotropy.append(gen.Uisotropy) self.expandedpos.append(gen.eqxyz) self.expandedUijs.append(gen.eqUij) return + # End of class ExpandAsymmetricUnit # Helper function for SymmetryConstraints class. It may be useful # elsewhere therefore its name does not start with underscore. + def pruneFormulaDictionary(eqdict): """Remove constant items from formula dictionary. @@ -648,7 +657,8 @@ def pruneFormulaDictionary(eqdict): """ pruned = {} for smb, eq in eqdict.items(): - if not isconstantFormula(eq): pruned[smb] = eq + if not isconstantFormula(eq): + pruned[smb] = eq return pruned @@ -679,8 +689,7 @@ class SymmetryConstraints(object): Uisotropy -- list of bool flags for isotropic thermal displacements """ - def __init__(self, spacegroup, positions, Uijs=None, - sgoffset=[0, 0, 0], eps=None): + def __init__(self, spacegroup, positions, Uijs=None, sgoffset=[0, 0, 0], eps=None): """Initialize and calculate SymmetryConstraints. spacegroup -- instance of SpaceGroup @@ -721,46 +730,45 @@ def __init__(self, spacegroup, positions, Uijs=None, self.Uijs = numpy.array(Uijs, dtype=float) else: self.Uijs = numpy.zeros((numpos, 3, 3), dtype=float) - self.poseqns = numpos*[None] - self.Ueqns = numpos*[None] - self.Uisotropy = numpos*[False] + self.poseqns = numpos * [None] + self.Ueqns = numpos * [None] + self.Uisotropy = numpos * [False] # all members should be initialized here self._findConstraints() return - def _findConstraints(self): - """Find constraints for positions and anisotropic displacements Uij - """ + """Find constraints for positions and anisotropic displacements Uij""" numpos = len(self.positions) # canonical xyzsymbols and Usymbols - xyzsymbols = [ smbl+str(i) for i in range(numpos) for smbl in "xyz" ] - Usymbols = [smbl+str(i) for i in range(numpos) for smbl in stdUsymbols] + xyzsymbols = [smbl + str(i) for i in range(numpos) for smbl in "xyz"] + Usymbols = [smbl + str(i) for i in range(numpos) for smbl in stdUsymbols] independent = set(range(numpos)) for genidx in range(numpos): - if not genidx in independent: continue + if not genidx in independent: + continue # it is a generator self.coremap[genidx] = [] genpos = self.positions[genidx] genUij = self.Uijs[genidx] - gen = GeneratorSite(self.spacegroup, genpos, genUij, - self.sgoffset, self.eps) + gen = GeneratorSite(self.spacegroup, genpos, genUij, self.sgoffset, self.eps) # append new pparameters if there are any - gxyzsymbols = xyzsymbols[3*genidx : 3*(genidx+1)] + gxyzsymbols = xyzsymbols[3 * genidx : 3 * (genidx + 1)] for k, v in gen.pparameters: smbl = gxyzsymbols["xyz".index(k)] - self.pospars.append( (smbl, v) ) - gUsymbols = Usymbols[6*genidx : 6*(genidx+1)] + self.pospars.append((smbl, v)) + gUsymbols = Usymbols[6 * genidx : 6 * (genidx + 1)] for k, v in gen.Uparameters: smbl = gUsymbols[stdUsymbols.index(k)] - self.Upars.append( (smbl, v) ) + self.Upars.append((smbl, v)) # search for equivalents inside indies indies = sorted(independent) for indidx in indies: indpos = self.positions[indidx] formula = gen.positionFormula(indpos, gxyzsymbols) # formula is empty when indidx is independent - if not formula: continue + if not formula: + continue # indidx is dependent here independent.remove(indidx) self.coremap[genidx].append(indidx) @@ -777,19 +785,14 @@ def _findConstraints(self): self.corepos = [self.positions[i] for i in coreidx] return - def posparSymbols(self): - """Return list of standard position parameter symbols. - """ + """Return list of standard position parameter symbols.""" return [n for n, v in self.pospars] - def posparValues(self): - """Return list of position parameters values. - """ + """Return list of position parameters values.""" return [v for n, v in self.pospars] - def positionFormulas(self, xyzsymbols=None): """List of position formulas with custom parameter symbols. @@ -799,17 +802,19 @@ def positionFormulas(self, xyzsymbols=None): keys are from ("x", "y", "z") and the values are formatted as [[-]{symbol}] [{+|-}%g], for example: "x0", "-sym", "@7 +0.5", "0.25". """ - if not xyzsymbols: return list(self.poseqns) + if not xyzsymbols: + return list(self.poseqns) # check xyzsymbols if len(xyzsymbols) < len(self.pospars): - emsg = ("Not enough symbols for %i position parameters" % - len(self.pospars)) + emsg = "Not enough symbols for %i position parameters" % len(self.pospars) raise SymmetryError(emsg) # build translation dictionary trsmbl = dict(zip(self.posparSymbols(), xyzsymbols)) + def translatesymbol(matchobj): return trsmbl[matchobj.group(0)] - pat = re.compile(r'\b[xyz]\d+') + + pat = re.compile(r"\b[xyz]\d+") rv = [] for eqns in self.poseqns: treqns = {} @@ -818,7 +823,6 @@ def translatesymbol(matchobj): rv.append(treqns) return rv - def positionFormulasPruned(self, xyzsymbols=None): """List of position formula dictionaries with constant items removed. See also positionFormulas(). @@ -827,23 +831,17 @@ def positionFormulasPruned(self, xyzsymbols=None): Return list of coordinate formula dictionaries. """ - rv = [pruneFormulaDictionary(eqns) - for eqns in self.positionFormulas(xyzsymbols)] + rv = [pruneFormulaDictionary(eqns) for eqns in self.positionFormulas(xyzsymbols)] return rv - def UparSymbols(self): - """Return list of standard atom displacement parameter symbols. - """ + """Return list of standard atom displacement parameter symbols.""" return [n for n, v in self.Upars] - def UparValues(self): - """Return list of atom displacement parameters values. - """ + """Return list of atom displacement parameters values.""" return [v for n, v in self.Upars] - def UFormulas(self, Usymbols=None): """List of atom displacement formulas with custom parameter symbols. @@ -854,16 +852,19 @@ def UFormulas(self, Usymbols=None): and the values are formatted as {[%g*][Usymbol]|0}, for example: "U11", "0.5*@37", "0". """ - if not Usymbols: return list(self.Ueqns) + if not Usymbols: + return list(self.Ueqns) # check Usymbols if len(Usymbols) < len(self.Upars): emsg = "Not enough symbols for %i U parameters" % len(self.Upars) raise SymmetryError(emsg) # build translation dictionary trsmbl = dict(zip(self.UparSymbols(), Usymbols)) + def translatesymbol(matchobj): return trsmbl[matchobj.group(0)] - pat = re.compile(r'\bU\d\d\d+') + + pat = re.compile(r"\bU\d\d\d+") rv = [] for eqns in self.Ueqns: treqns = {} @@ -872,7 +873,6 @@ def translatesymbol(matchobj): rv.append(treqns) return rv - def UFormulasPruned(self, Usymbols=None): """List of atom displacement formula dictionaries with constant items removed. See also UFormulas(). @@ -882,10 +882,10 @@ def UFormulasPruned(self, Usymbols=None): Return list of atom displacement formulas in tuples of (U11, U22, U33, U12, U13, U23). """ - rv = [ pruneFormulaDictionary(eqns) - for eqns in self.UFormulas(Usymbols) ] + rv = [pruneFormulaDictionary(eqns) for eqns in self.UFormulas(Usymbols)] return rv + # End of class SymmetryConstraints # ---------------------------------------------------------------------------- @@ -893,8 +893,9 @@ def UFormulasPruned(self, Usymbols=None): # basic demonstration if __name__ == "__main__": from diffpy.structure.spacegroups import sg100 - site = [.125, .625, .13] - Uij = [[1,2,3],[2,4,5],[3,5,6]] + + site = [0.125, 0.625, 0.13] + Uij = [[1, 2, 3], [2, 4, 5], [3, 5, 6]] g = GeneratorSite(sg100, site, Uij=Uij) fm100 = g.positionFormula(site) print("g = GeneratorSite(sg100, %r)" % site) diff --git a/src/diffpy/structure/tests/__init__.py b/src/diffpy/structure/tests/__init__.py index f5bfe145..fc6afec6 100644 --- a/src/diffpy/structure/tests/__init__.py +++ b/src/diffpy/structure/tests/__init__.py @@ -19,8 +19,8 @@ import unittest -def testsuite(pattern=''): - '''Create a unit tests suite for diffpy.structure package. +def testsuite(pattern=""): + """Create a unit tests suite for diffpy.structure package. Parameters ---------- @@ -33,14 +33,16 @@ def testsuite(pattern=''): ------- suite : `unittest.TestSuite` The TestSuite object containing the matching tests. - ''' + """ import re - from os.path import dirname from itertools import chain + from os.path import dirname + from pkg_resources import resource_filename + loader = unittest.defaultTestLoader - thisdir = resource_filename(__name__, '') - depth = __name__.count('.') + 1 + thisdir = resource_filename(__name__, "") + depth = __name__.count(".") + 1 topdir = thisdir for i in range(depth): topdir = dirname(topdir) @@ -50,12 +52,12 @@ def testsuite(pattern=''): rx = re.compile(pattern) tsuites = list(chain.from_iterable(suite_all)) tsok = all(isinstance(ts, unittest.TestSuite) for ts in tsuites) - if not tsok: # pragma: no cover + if not tsok: # pragma: no cover return suite_all tcases = chain.from_iterable(tsuites) for tc in tcases: - tcwords = tc.id().split('.') - shortname = '.'.join(tcwords[-3:]) + tcwords = tc.id().split(".") + shortname = ".".join(tcwords[-3:]) if rx.search(shortname): suite.addTest(tc) # verify all tests are found for an empty pattern. @@ -64,12 +66,12 @@ def testsuite(pattern=''): def test(): - '''Execute all unit tests for the diffpy.structure package. + """Execute all unit tests for the diffpy.structure package. Returns ------- result : `unittest.TestResult` - ''' + """ suite = testsuite() runner = unittest.TextTestRunner() result = runner.run(suite) diff --git a/src/diffpy/structure/tests/run.py b/src/diffpy/structure/tests/run.py index 5bd8b2a8..4b9b58ee 100644 --- a/src/diffpy/structure/tests/run.py +++ b/src/diffpy/structure/tests/run.py @@ -19,14 +19,18 @@ """ -if __name__ == '__main__': +if __name__ == "__main__": import sys + # show warnings by default if not sys.warnoptions: - import os, warnings + import os + import warnings + warnings.simplefilter("default") # also affect subprocesses os.environ["PYTHONWARNINGS"] = "default" from diffpy.structure.tests import test + # produce zero exit code for a successful test sys.exit(not test().wasSuccessful()) diff --git a/src/diffpy/structure/tests/testatom.py b/src/diffpy/structure/tests/testatom.py index dc6073f6..67009e80 100644 --- a/src/diffpy/structure/tests/testatom.py +++ b/src/diffpy/structure/tests/testatom.py @@ -19,6 +19,7 @@ import unittest + import numpy from diffpy.structure.atom import Atom @@ -26,77 +27,76 @@ # ---------------------------------------------------------------------------- + class TestAtom(unittest.TestCase): def test___init__(self): - """check Atom.__init__() - """ + """check Atom.__init__()""" a = Atom() - self.assertEqual('', a.element) + self.assertEqual("", a.element) self.assertTrue((a.xyz == 0).all()) - self.assertEqual('', a.label) + self.assertEqual("", a.label) self.assertEqual(1.0, a.occupancy) self.assertFalse(a.anisotropy) self.assertTrue((a.U == 0).all()) self.assertTrue(a.lattice is None) # check initialization with arguments - a1 = Atom('C', xyz=(1, 2, 3), Uisoequiv=0.005) - self.assertEqual('C', a1.element) + a1 = Atom("C", xyz=(1, 2, 3), Uisoequiv=0.005) + self.assertEqual("C", a1.element) self.assertTrue(numpy.array_equal([1, 2, 3], a1.xyz)) self.assertFalse(a1.anisotropy) self.assertEqual(0.005, a1.Uisoequiv) # initialize with anisotropic displacement parameters - uani = numpy.identity(3, dtype=float) * numpy.array([1, 2, 3]) * .01 - a2 = Atom('C', U=uani) + uani = numpy.identity(3, dtype=float) * numpy.array([1, 2, 3]) * 0.01 + a2 = Atom("C", U=uani) self.assertTrue(numpy.array_equal(uani, a2.U)) self.assertTrue(a2.anisotropy) - a3 = Atom('C', Uisoequiv=0.02, anisotropy=True) + a3 = Atom("C", Uisoequiv=0.02, anisotropy=True) self.assertTrue(a3.anisotropy) self.assertEqual(a3.U[2, 2], 0.02) - self.assertRaises(ValueError, Atom, - 'C', Uisoequiv=0.02, U=uani) + self.assertRaises(ValueError, Atom, "C", Uisoequiv=0.02, U=uani) return -# def test_msdLat(self): -# """check Atom.msdLat() -# """ -# return -# -# def test_msdCart(self): -# """check Atom.msdCart() -# """ -# return -# -# def test___repr__(self): -# """check Atom.__repr__() -# """ -# return -# -# def test___copy__(self): -# """check Atom.__copy__() -# """ -# return + # def test_msdLat(self): + # """check Atom.msdLat() + # """ + # return + # + # def test_msdCart(self): + # """check Atom.msdCart() + # """ + # return + # + # def test___repr__(self): + # """check Atom.__repr__() + # """ + # return + # + # def test___copy__(self): + # """check Atom.__copy__() + # """ + # return def test_xyz_cartn(self): - """check Atom.xyz_cartn property - """ + """check Atom.xyz_cartn property""" hexagonal = Lattice(1, 1, 1, 90, 90, 120) - a0 = Atom('C', [0, 0, 0], lattice=hexagonal) - a1 = Atom('C', [1, 1, 1], lattice=hexagonal) + a0 = Atom("C", [0, 0, 0], lattice=hexagonal) + a1 = Atom("C", [1, 1, 1], lattice=hexagonal) self.assertTrue(all(a0.xyz_cartn == 0)) - rc1 = numpy.array([0.75 ** 0.5, 0.5, 1]) + rc1 = numpy.array([0.75**0.5, 0.5, 1]) self.assertTrue(numpy.allclose(rc1, a1.xyz_cartn)) a1.xyz_cartn[2] = 0 self.assertTrue(numpy.allclose([1, 1, 0], a1.xyz)) a1.xyz_cartn[:2] = 0 self.assertTrue(all(a1.xyz == 0)) - a3 = Atom('C', [1, 2, 3]) + a3 = Atom("C", [1, 2, 3]) self.assertTrue(numpy.array_equal(a3.xyz, a3.xyz_cartn)) a3.xyz_cartn = 1.3 self.assertTrue(all(1.3 == a3.xyz_cartn)) self.assertTrue(all(1.3 == a3.xyz)) return + # def test__get_anisotropy(self): # """check Atom._get_anisotropy() # """ @@ -151,5 +151,5 @@ def test_xyz_cartn(self): # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testdata/CdSe_bulk.stru b/src/diffpy/structure/tests/testdata/CdSe_bulk.stru index 8ad56e85..dbd3179c 100644 --- a/src/diffpy/structure/tests/testdata/CdSe_bulk.stru +++ b/src/diffpy/structure/tests/testdata/CdSe_bulk.stru @@ -2,11 +2,11 @@ title Cell structure file of CdSe #186 format pdffit scale 0.846685 sharp 0.366927, 0.591251, 3.700000 -spcgr P63mc +spcgr P63mc cell 4.235204, 4.235204, 6.906027, 90.000000, 90.000000,120.000000 dcell 0.000493, 0.000493, 0.001368, 0.000000, 0.000000, 0.000000 ncell 1, 1, 1, 4 -atoms +atoms CD 0.33340001 0.66670001 0.00000000 1.0000 0.00000000 0.00000000 0.00000000 0.0000 0.01303035 0.01303035 0.01401959 diff --git a/src/diffpy/structure/tests/testdata/LiCl-bad.cif b/src/diffpy/structure/tests/testdata/LiCl-bad.cif index e1a30c3c..4c6f6f83 100644 --- a/src/diffpy/structure/tests/testdata/LiCl-bad.cif +++ b/src/diffpy/structure/tests/testdata/LiCl-bad.cif @@ -2,15 +2,15 @@ data_LithiumChloride -_audit_creation_method 'Crystallographica 2' -_cell_angle_alpha 90 -_cell_angle_beta 90 -_cell_angle_gamma 90 -_cell_formula_units_Z 4 -_cell_length_a 5.12952 -_cell_length_b 5.12952 -_cell_length_c 5.12952 -_cell_volume 134.968 +_audit_creation_method 'Crystallographica 2' +_cell_angle_alpha 90 +_cell_angle_beta 90 +_cell_angle_gamma 90 +_cell_formula_units_Z 4 +_cell_length_a 5.12952 +_cell_length_b 5.12952 +_cell_length_c 5.12952 +_cell_volume 134.968 _cgraph_comments 'Praezisionsbestimmung von Gitterkonstanten hygroskopischer Verbindungen (Li Cl. Na Br). ' @@ -229,4 +229,3 @@ loop_ _eof #### End of Crystallographic Information File #### - diff --git a/src/diffpy/structure/tests/testdata/Ni-bad.stru b/src/diffpy/structure/tests/testdata/Ni-bad.stru index f7b5469c..766ca134 100644 --- a/src/diffpy/structure/tests/testdata/Ni-bad.stru +++ b/src/diffpy/structure/tests/testdata/Ni-bad.stru @@ -2,11 +2,11 @@ title structure Ni FCC format pdffit scale 1.000000 sharp 0.000000, 0.000000, 1.000000, 0.000000 -spcgr Fm-3m +spcgr Fm-3m cell 3.520000, 3.520000, 3.520000, 90.000000, 90.000000, 90.000000 dcell 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000 ncell 1, 1, 1, 4 -atoms +atoms NI 0.00000000 0.00000000 0.00000000 1.0000 0.00000000 0.00000000 0.00000000 0.0000 0.00126651 0.00126651 0.00126651 diff --git a/src/diffpy/structure/tests/testdata/Ni-discus.stru b/src/diffpy/structure/tests/testdata/Ni-discus.stru index 8d8e64c7..3e5fab07 100644 --- a/src/diffpy/structure/tests/testdata/Ni-discus.stru +++ b/src/diffpy/structure/tests/testdata/Ni-discus.stru @@ -1,8 +1,8 @@ title structure Ni FCC -spcgr Fm-3m +spcgr Fm-3m cell 3.520000, 3.520000, 3.520000, 90.000000, 90.000000, 90.000000 ncell 1, 1, 1, 4 -atoms +atoms NI 0.00000000 0.00000000 0.00000000 0.1000 NI 0.00000000 0.50000000 0.50000000 0.1000 NI 0.50000000 0.00000000 0.50000000 0.1000 diff --git a/src/diffpy/structure/tests/testdata/Ni.stru b/src/diffpy/structure/tests/testdata/Ni.stru index 5d39b959..e13f2693 100644 --- a/src/diffpy/structure/tests/testdata/Ni.stru +++ b/src/diffpy/structure/tests/testdata/Ni.stru @@ -2,11 +2,11 @@ title structure Ni FCC format pdffit scale 1.000000 sharp 0.000000, 0.000000, 1.000000, 0.000000 -spcgr Fm-3m +spcgr Fm-3m cell 3.520000, 3.520000, 3.520000, 90.000000, 90.000000, 90.000000 dcell 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000 ncell 1, 1, 1, 4 -atoms +atoms NI 0.00000000 0.00000000 0.00000000 1.0000 0.00000000 0.00000000 0.00000000 0.0000 0.00126651 0.00126651 0.00126651 diff --git a/src/diffpy/structure/tests/testdata/Ni_ref.cif b/src/diffpy/structure/tests/testdata/Ni_ref.cif index 82232f42..858dd3c6 100644 --- a/src/diffpy/structure/tests/testdata/Ni_ref.cif +++ b/src/diffpy/structure/tests/testdata/Ni_ref.cif @@ -18,4 +18,3 @@ _atom_site_occupancy _atom_site_adp_type _atom_site_U_iso_or_equiv Ni Ni 0.00000000 0.00000000 0.00000000 1.00000000 Uiso 0.025 - diff --git a/src/diffpy/structure/tests/testdata/arginine.pdb b/src/diffpy/structure/tests/testdata/arginine.pdb index c0a13ae8..008c09ce 100644 --- a/src/diffpy/structure/tests/testdata/arginine.pdb +++ b/src/diffpy/structure/tests/testdata/arginine.pdb @@ -1,28 +1,28 @@ -ATOM 1 N ARG 1 0.735 2.219 1.389 1.00 0.00 -ATOM 2 CA ARG 1 2.189 2.285 1.274 1.00 0.00 -ATOM 3 C ARG 1 2.600 3.010 0.014 1.00 0.00 -ATOM 4 O ARG 1 1.774 3.463 -0.774 1.00 0.00 -ATOM 5 CB ARG 1 2.760 0.838 1.308 1.00 0.00 -ATOM 6 CG ARG 1 4.302 0.731 1.473 1.00 0.00 -ATOM 7 CD ARG 1 4.786 -0.729 1.460 1.00 0.00 -ATOM 8 NE ARG 1 6.267 -0.770 1.642 1.00 0.00 -ATOM 9 CZ ARG 1 7.007 -1.874 1.673 1.00 0.00 -ATOM 10 NH1 ARG 1 6.518 -3.074 1.538 1.00 0.00 -ATOM 11 NH2 ARG 1 8.285 -1.752 1.846 1.00 0.00 -ATOM 12 H ARG 1 0.115 2.627 0.682 1.00 0.00 -ATOM 13 H ARG 1 0.273 1.763 2.183 1.00 0.00 -ATOM 14 HA ARG 1 2.575 2.864 2.134 1.00 0.00 -ATOM 15 HB ARG 1 2.277 0.276 2.132 1.00 0.00 -ATOM 16 HB ARG 1 2.438 0.307 0.388 1.00 0.00 -ATOM 17 HG ARG 1 4.812 1.292 0.662 1.00 0.00 -ATOM 18 HG ARG 1 4.604 1.231 2.416 1.00 0.00 -ATOM 19 HD ARG 1 4.269 -1.296 2.264 1.00 0.00 -ATOM 20 HD ARG 1 4.490 -1.205 0.499 1.00 0.00 -ATOM 21 HE ARG 1 6.806 0.094 1.761 1.00 0.00 -ATOM 22 HH1 ARG 1 7.154 -3.872 1.573 1.00 0.00 -ATOM 23 HH1 ARG 1 5.505 -3.100 1.403 1.00 0.00 -ATOM 24 HH2 ARG 1 8.649 -0.803 1.949 1.00 0.00 -ATOM 25 HH2 ARG 1 8.837 -2.612 1.868 1.00 0.00 -ATOM 26 OC ARG 1 4.007 3.160 -0.192 1.00 0.00 -ATOM 27 HC ARG 1 4.448 3.496 0.676 1.00 0.00 -TER +ATOM 1 N ARG 1 0.735 2.219 1.389 1.00 0.00 +ATOM 2 CA ARG 1 2.189 2.285 1.274 1.00 0.00 +ATOM 3 C ARG 1 2.600 3.010 0.014 1.00 0.00 +ATOM 4 O ARG 1 1.774 3.463 -0.774 1.00 0.00 +ATOM 5 CB ARG 1 2.760 0.838 1.308 1.00 0.00 +ATOM 6 CG ARG 1 4.302 0.731 1.473 1.00 0.00 +ATOM 7 CD ARG 1 4.786 -0.729 1.460 1.00 0.00 +ATOM 8 NE ARG 1 6.267 -0.770 1.642 1.00 0.00 +ATOM 9 CZ ARG 1 7.007 -1.874 1.673 1.00 0.00 +ATOM 10 NH1 ARG 1 6.518 -3.074 1.538 1.00 0.00 +ATOM 11 NH2 ARG 1 8.285 -1.752 1.846 1.00 0.00 +ATOM 12 H ARG 1 0.115 2.627 0.682 1.00 0.00 +ATOM 13 H ARG 1 0.273 1.763 2.183 1.00 0.00 +ATOM 14 HA ARG 1 2.575 2.864 2.134 1.00 0.00 +ATOM 15 HB ARG 1 2.277 0.276 2.132 1.00 0.00 +ATOM 16 HB ARG 1 2.438 0.307 0.388 1.00 0.00 +ATOM 17 HG ARG 1 4.812 1.292 0.662 1.00 0.00 +ATOM 18 HG ARG 1 4.604 1.231 2.416 1.00 0.00 +ATOM 19 HD ARG 1 4.269 -1.296 2.264 1.00 0.00 +ATOM 20 HD ARG 1 4.490 -1.205 0.499 1.00 0.00 +ATOM 21 HE ARG 1 6.806 0.094 1.761 1.00 0.00 +ATOM 22 HH1 ARG 1 7.154 -3.872 1.573 1.00 0.00 +ATOM 23 HH1 ARG 1 5.505 -3.100 1.403 1.00 0.00 +ATOM 24 HH2 ARG 1 8.649 -0.803 1.949 1.00 0.00 +ATOM 25 HH2 ARG 1 8.837 -2.612 1.868 1.00 0.00 +ATOM 26 OC ARG 1 4.007 3.160 -0.192 1.00 0.00 +ATOM 27 HC ARG 1 4.448 3.496 0.676 1.00 0.00 +TER diff --git a/src/diffpy/structure/tests/testdata/bucky-bad2.xyz b/src/diffpy/structure/tests/testdata/bucky-bad2.xyz index e08b94d6..5f4012bf 100644 --- a/src/diffpy/structure/tests/testdata/bucky-bad2.xyz +++ b/src/diffpy/structure/tests/testdata/bucky-bad2.xyz @@ -60,5 +60,3 @@ bucky-ball C 1.95470 -1.42020 -2.57930 C 1.57570 -2.58660 -1.82130 C 2.33370 -2.58660 -0.59480 - - diff --git a/src/diffpy/structure/tests/testdata/bucky.xyz b/src/diffpy/structure/tests/testdata/bucky.xyz index fc75501a..539793b5 100644 --- a/src/diffpy/structure/tests/testdata/bucky.xyz +++ b/src/diffpy/structure/tests/testdata/bucky.xyz @@ -63,5 +63,3 @@ bucky-ball C 1.95470 -1.42020 -2.57930 C 1.57570 -2.58660 -1.82130 C 2.33370 -2.58660 -0.59480 - - diff --git a/src/diffpy/structure/tests/testlattice.py b/src/diffpy/structure/tests/testlattice.py index 8a724ee8..6b539634 100644 --- a/src/diffpy/structure/tests/testlattice.py +++ b/src/diffpy/structure/tests/testlattice.py @@ -17,6 +17,7 @@ """ import unittest + import numpy import numpy.linalg as numalg @@ -24,6 +25,7 @@ # ---------------------------------------------------------------------------- + class TestLattice(unittest.TestCase): """test methods of Lattice class""" @@ -32,15 +34,10 @@ def setUp(self): self.places = 12 return - def test___init__(self): - '''Check Lattice.__init__ processing of arguments. - ''' - self.assertRaises(ValueError, Lattice, - self.lattice, c=4) - self.assertRaises(ValueError, Lattice, - base=self.lattice.base, - baserot=self.lattice.baserot) + """Check Lattice.__init__ processing of arguments.""" + self.assertRaises(ValueError, Lattice, self.lattice, c=4) + self.assertRaises(ValueError, Lattice, base=self.lattice.base, baserot=self.lattice.baserot) self.assertRaises(ValueError, Lattice, 1, 2, 3) self.assertRaises(ValueError, Lattice, 1, 2, 3, 80, 90) L0 = self.lattice @@ -55,30 +52,26 @@ def test___init__(self): self.assertTrue(numpy.allclose(L0.isotropicunit, L3.isotropicunit)) return - def test_setLatPar(self): """check calculation of standard unit cell vectors""" + from math import cos, radians, sqrt + from numpy import dot - from math import radians, sqrt, cos - norm = lambda x : sqrt(sum([xi**2 for xi in x])) - cosd = lambda x : cos(radians(x)) + + norm = lambda x: sqrt(sum([xi**2 for xi in x])) + cosd = lambda x: cos(radians(x)) self.lattice.setLatPar(1.0, 2.0, 3.0, 80, 100, 120) base = self.lattice.base self.assertAlmostEqual(1.0, norm(base[0]), self.places) self.assertAlmostEqual(2.0, norm(base[1]), self.places) self.assertAlmostEqual(3.0, norm(base[2]), self.places) - self.assertAlmostEqual(cosd(80.0), - dot(base[1],base[2])/(2*3), self.places) - self.assertAlmostEqual(cosd(100.0), - dot(base[0],base[2])/(1*3), self.places) - self.assertAlmostEqual(cosd(120.0), - dot(base[0],base[1])/(1*2), self.places) + self.assertAlmostEqual(cosd(80.0), dot(base[1], base[2]) / (2 * 3), self.places) + self.assertAlmostEqual(cosd(100.0), dot(base[0], base[2]) / (1 * 3), self.places) + self.assertAlmostEqual(cosd(120.0), dot(base[0], base[1]) / (1 * 2), self.places) return - def test_latpar_properties(self): - '''check assignment to a, b, c, alpha, beta, gamma. - ''' + """check assignment to a, b, c, alpha, beta, gamma.""" lat = self.lattice lat.a = 2 lat.b = 4 @@ -91,81 +84,56 @@ def test_latpar_properties(self): self.assertTrue(numpy.array_equal(lat1.base, lat.base)) return - def test_readonly_properties(self): - '''Check that read-only properties are indeed such. - ''' + """Check that read-only properties are indeed such.""" lat = self.lattice lat.b = 2 lat.c = 6 self.assertEqual(1.0, lat.unitvolume) - self.assertRaises(AttributeError, setattr, - lat, 'unitvolume', 3.33) + self.assertRaises(AttributeError, setattr, lat, "unitvolume", 3.33) self.assertEqual(12, lat.volume) - self.assertRaises(AttributeError, setattr, - lat, 'volume', 3.33) + self.assertRaises(AttributeError, setattr, lat, "volume", 3.33) self.assertEqual(0.0, lat.ca) - self.assertRaises(AttributeError, setattr, - lat, 'ca', 3.33) + self.assertRaises(AttributeError, setattr, lat, "ca", 3.33) self.assertEqual(0.0, lat.cb) - self.assertRaises(AttributeError, setattr, - lat, 'cb', 3.33) + self.assertRaises(AttributeError, setattr, lat, "cb", 3.33) self.assertEqual(0.0, lat.cg) - self.assertRaises(AttributeError, setattr, - lat, 'cg', 3.33) + self.assertRaises(AttributeError, setattr, lat, "cg", 3.33) self.assertEqual(1.0, lat.sa) - self.assertRaises(AttributeError, setattr, - lat, 'sa', 3.33) + self.assertRaises(AttributeError, setattr, lat, "sa", 3.33) self.assertEqual(1.0, lat.sb) - self.assertRaises(AttributeError, setattr, - lat, 'sb', 3.33) + self.assertRaises(AttributeError, setattr, lat, "sb", 3.33) self.assertEqual(1.0, lat.sg) - self.assertRaises(AttributeError, setattr, - lat, 'sg', 3.33) + self.assertRaises(AttributeError, setattr, lat, "sg", 3.33) self.assertEqual(1.0, lat.ar) - self.assertRaises(AttributeError, setattr, - lat, 'ar', 3.33) + self.assertRaises(AttributeError, setattr, lat, "ar", 3.33) self.assertEqual(0.5, lat.br) - self.assertRaises(AttributeError, setattr, - lat, 'br', 3.33) - self.assertAlmostEqual(1.0/6, lat.cr, self.places) - self.assertRaises(AttributeError, setattr, - lat, 'cr', 3.33) + self.assertRaises(AttributeError, setattr, lat, "br", 3.33) + self.assertAlmostEqual(1.0 / 6, lat.cr, self.places) + self.assertRaises(AttributeError, setattr, lat, "cr", 3.33) self.assertEqual(90.0, lat.alphar) - self.assertRaises(AttributeError, setattr, - lat, 'alphar', 3.33) + self.assertRaises(AttributeError, setattr, lat, "alphar", 3.33) self.assertEqual(90.0, lat.betar) - self.assertRaises(AttributeError, setattr, - lat, 'betar', 3.33) + self.assertRaises(AttributeError, setattr, lat, "betar", 3.33) self.assertEqual(90.0, lat.gammar) - self.assertRaises(AttributeError, setattr, - lat, 'gammar', 3.33) + self.assertRaises(AttributeError, setattr, lat, "gammar", 3.33) self.assertEqual(0.0, lat.car) - self.assertRaises(AttributeError, setattr, - lat, 'car', 3.33) + self.assertRaises(AttributeError, setattr, lat, "car", 3.33) self.assertEqual(0.0, lat.cbr) - self.assertRaises(AttributeError, setattr, - lat, 'cbr', 3.33) + self.assertRaises(AttributeError, setattr, lat, "cbr", 3.33) self.assertEqual(0.0, lat.cgr) - self.assertRaises(AttributeError, setattr, - lat, 'cgr', 3.33) + self.assertRaises(AttributeError, setattr, lat, "cgr", 3.33) self.assertEqual(1.0, lat.sar) - self.assertRaises(AttributeError, setattr, - lat, 'sar', 3.33) + self.assertRaises(AttributeError, setattr, lat, "sar", 3.33) self.assertEqual(1.0, lat.sbr) - self.assertRaises(AttributeError, setattr, - lat, 'sbr', 3.33) + self.assertRaises(AttributeError, setattr, lat, "sbr", 3.33) self.assertEqual(1.0, lat.sgr) - self.assertRaises(AttributeError, setattr, - lat, 'sgr', 3.33) + self.assertRaises(AttributeError, setattr, lat, "sgr", 3.33) return - def test_setLatBase(self): """check calculation of unit cell rotation""" - base = numpy.array([[1.0, 1.0, 0.0], - [0.0, 1.0, 1.0], - [1.0, 0.0, 1.0]]) + base = numpy.array([[1.0, 1.0, 0.0], [0.0, 1.0, 1.0], [1.0, 0.0, 1.0]]) self.lattice.setLatBase(base) self.assertAlmostEqual(self.lattice.a, numpy.sqrt(2.0), self.places) self.assertAlmostEqual(self.lattice.b, numpy.sqrt(2.0), self.places) @@ -184,15 +152,12 @@ def test_setLatBase(self): self.assertTrue(numpy.allclose(base[1], self.lattice.base[1])) self.assertTrue(numpy.allclose(base[2], self.lattice.base[2])) # try base checking - self.assertRaises(LatticeError, self.lattice.setLatBase, - [[1, 0, 0], [1,0,0], [0,0,1]]) - self.assertRaises(LatticeError, self.lattice.setLatBase, - [[1, 0, 0], [0,0,1], [0,1,0]]) + self.assertRaises(LatticeError, self.lattice.setLatBase, [[1, 0, 0], [1, 0, 0], [0, 0, 1]]) + self.assertRaises(LatticeError, self.lattice.setLatBase, [[1, 0, 0], [0, 0, 1], [0, 1, 0]]) return - def test_reciprocal(self): - '''check calculation of reciprocal lattice.''' + """check calculation of reciprocal lattice.""" r1 = self.lattice.reciprocal() self.assertEqual((1, 1, 1, 90, 90, 90), r1.abcABG()) L2 = Lattice(2, 4, 8, 90, 90, 90) @@ -202,9 +167,8 @@ def test_reciprocal(self): self.assertTrue(numpy.array_equal(L2.base, rr2.base)) return - def test_dot(self): - '''check dot product of lattice vectors.''' + """check dot product of lattice vectors.""" L = self.lattice L.setLatPar(gamma=120) self.assertAlmostEqual(-0.5, L.dot([1, 0, 0], [0, 1, 0]), self.places) @@ -215,9 +179,8 @@ def test_dot(self): self.assertTrue(numpy.array_equal(5 * [-0.5], L.dot(va5, vb5[0]))) return - def test_norm(self): - '''check norm of a lattice vector.''' + """check norm of a lattice vector.""" self.assertEqual(1, self.lattice.norm([1, 0, 0])) u = numpy.array([[3, 4, 0], [1, 1, 1]]) self.assertTrue(numpy.allclose([5, 3**0.5], self.lattice.norm(u))) @@ -225,9 +188,8 @@ def test_norm(self): self.assertAlmostEqual(1, self.lattice.norm([1, 1, 0]), self.places) return - def test_rnorm(self): - '''check norm of a reciprocal vector.''' + """check norm of a reciprocal vector.""" L = self.lattice L.setLatPar(1, 1.5, 2.3, 80, 95, 115) r = L.reciprocal() @@ -237,9 +199,8 @@ def test_rnorm(self): self.assertTrue(numpy.allclose(5 * [r.norm(hkl)], L.rnorm(hkl5))) return - def test_dist(self): - '''check dist function for distance between lattice points.''' + """check dist function for distance between lattice points.""" L = self.lattice L.setLatPar(1, 1.5, 2.3, 80, 95, 115) u = [0.1, 0.3, 0.7] @@ -254,18 +215,17 @@ def test_dist(self): self.assertTrue(numpy.allclose(5 * [d0], L.dist(v5, u5))) return - def test_angle(self): - '''check angle calculation between lattice vectors.''' - from math import degrees, acos + """check angle calculation between lattice vectors.""" + from math import acos, degrees + L = self.lattice L.setLatPar(1, 1.5, 2.3, 80, 95, 115) u = [0.1, 0.3, 0.7] v = [0.3, 0.7, 0.7] uc = L.cartesian(u) vc = L.cartesian(v) - a0 = degrees(acos(numpy.dot(uc, vc) / - (numalg.norm(uc) * numalg.norm(vc)))) + a0 = degrees(acos(numpy.dot(uc, vc) / (numalg.norm(uc) * numalg.norm(vc)))) self.assertAlmostEqual(a0, L.angle(u, v), self.places) self.assertAlmostEqual(a0, L.angle(v, u), self.places) u5 = numpy.tile(u, (5, 1)) @@ -275,8 +235,6 @@ def test_angle(self): self.assertTrue(numpy.allclose(5 * [a0], L.angle(v5, u5))) return - - def test_repr(self): """check string representation of this lattice""" r = repr(self.lattice) @@ -285,16 +243,15 @@ def test_repr(self): r = repr(self.lattice) r0 = "Lattice(a=1, b=2, c=3, alpha=10, beta=20, gamma=30)" self.assertEqual(r, r0) - base = [[1.0, 1.0, 0.0], - [0.0, 2.0, 2.0], - [3.0, 0.0, 3.0]] + base = [[1.0, 1.0, 0.0], [0.0, 2.0, 2.0], [3.0, 0.0, 3.0]] self.lattice.setLatBase(base) r = repr(self.lattice) self.assertEqual(r, "Lattice(base=%r)" % self.lattice.base) + # End of class TestLattice # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testloadstructure.py b/src/diffpy/structure/tests/testloadstructure.py index bbcaf8ad..f5bbd470 100644 --- a/src/diffpy/structure/tests/testloadstructure.py +++ b/src/diffpy/structure/tests/testloadstructure.py @@ -4,71 +4,60 @@ """ import unittest + +from diffpy.structure import PDFFitStructure, Structure, StructureFormatError, loadStructure from diffpy.structure.tests.testutils import datafile -from diffpy.structure import loadStructure -from diffpy.structure import Structure, PDFFitStructure, StructureFormatError ############################################################################## class TestLoadStructure(unittest.TestCase): def test_xcfg(self): - """check loading of atomeye xcfg format - """ - f = datafile('BubbleRaftShort.xcfg') + """check loading of atomeye xcfg format""" + f = datafile("BubbleRaftShort.xcfg") stru = loadStructure(f) self.assertTrue(type(stru) is Structure) - self.assertRaises(StructureFormatError, - loadStructure, f, 'xyz') + self.assertRaises(StructureFormatError, loadStructure, f, "xyz") return - def test_discus(self): - """check loading of discus file format - """ - f = datafile('Ni-discus.stru') + """check loading of discus file format""" + f = datafile("Ni-discus.stru") stru = loadStructure(f) self.assertTrue(type(stru) is PDFFitStructure) return - def test_cif(self): - """check loading of CIF file format - """ - f = datafile('PbTe.cif') + """check loading of CIF file format""" + f = datafile("PbTe.cif") stru = loadStructure(f) self.assertTrue(isinstance(stru, Structure)) self.assertFalse(isinstance(stru, PDFFitStructure)) return - def test_badfile(self): - """check loading of CIF file format - """ - f = datafile('Ni-bad.stru') + """check loading of CIF file format""" + f = datafile("Ni-bad.stru") self.assertRaises(StructureFormatError, loadStructure, f) return - def test_goodkwarg(self): - """check loading of CIF file and passing of parser keyword argument. - """ - f = datafile('graphite.cif') + """check loading of CIF file and passing of parser keyword argument.""" + f = datafile("graphite.cif") stru = loadStructure(f, eps=1e-10) self.assertEqual(8, len(stru)) return - def test_badkwarg(self): - """check loading of xyz file format with invalid keyword argument - """ - f = datafile('bucky.xyz') + """check loading of xyz file format with invalid keyword argument""" + f = datafile("bucky.xyz") self.assertRaises(TypeError, loadStructure, f, eps=1e-10) return + # End of class TestLoadStructure # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testoldimports.py b/src/diffpy/structure/tests/testoldimports.py index a0a3852a..9c6ff11d 100644 --- a/src/diffpy/structure/tests/testoldimports.py +++ b/src/diffpy/structure/tests/testoldimports.py @@ -18,61 +18,60 @@ """ -import sys -import warnings import importlib +import sys import unittest +import warnings import diffpy # ---------------------------------------------------------------------------- + class TestOldImports(unittest.TestCase): @classmethod def setUpClass(cls): "Uncache any already-imported old modules." for modname in tuple(sys.modules): - if modname.startswith('diffpy.Structure'): - del sys.modules[modname] # pragma: no cover + if modname.startswith("diffpy.Structure"): + del sys.modules[modname] # pragma: no cover return - def test_00TopImport(self): - """check import of diffpy.Structure - """ + """check import of diffpy.Structure""" with warnings.catch_warnings(): - warnings.simplefilter('ignore', category=DeprecationWarning) + warnings.simplefilter("ignore", category=DeprecationWarning) import diffpy.Structure as m0 self.assertIs(diffpy.structure, m0) # second import should raise no warning with warnings.catch_warnings(): - warnings.simplefilter('error') + warnings.simplefilter("error") import diffpy.Structure as m1 self.assertIs(diffpy.structure, m1) return - def test_O1SubmoduleImport(self): - """check import of diffpy.Structure submodules. - """ + """check import of diffpy.Structure submodules.""" with warnings.catch_warnings(record=True) as w: - warnings.simplefilter('always', category=DeprecationWarning) + warnings.simplefilter("always", category=DeprecationWarning) import diffpy.Structure.SymmetryUtilities as symutil + self.assertIs(DeprecationWarning, w[0].category) self.assertIs(diffpy.structure.symmetryutilities, symutil) with warnings.catch_warnings(record=True) as w: - warnings.simplefilter('always', category=DeprecationWarning) + warnings.simplefilter("always", category=DeprecationWarning) import diffpy.Structure.Parsers.P_cif as pcif + self.assertIs(DeprecationWarning, w[0].category) self.assertIs(diffpy.structure.parsers.p_cif, pcif) - self.assertRaises(ImportError, importlib.import_module, - 'diffpy.Structure.SSpaceGroups') + self.assertRaises(ImportError, importlib.import_module, "diffpy.Structure.SSpaceGroups") return + # End of class TestOldImports # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testp_cif.py b/src/diffpy/structure/tests/testp_cif.py index b6eb66c7..2451a632 100644 --- a/src/diffpy/structure/tests/testp_cif.py +++ b/src/diffpy/structure/tests/testp_cif.py @@ -17,17 +17,18 @@ """ import unittest + import numpy import six -from diffpy.structure.tests.testutils import datafile -from diffpy.structure.parsers.p_cif import P_cif, leading_float, getSymOp +from diffpy.structure import Structure, StructureFormatError from diffpy.structure.parsers import getParser -from diffpy.structure import Structure -from diffpy.structure import StructureFormatError +from diffpy.structure.parsers.p_cif import P_cif, getSymOp, leading_float +from diffpy.structure.tests.testutils import datafile # ---------------------------------------------------------------------------- + class TestRoutines(unittest.TestCase): def setUp(self): @@ -36,45 +37,43 @@ def setUp(self): def tearDown(self): return - def test_leading_float(self): - """check leading_float() - """ - self.assertEqual(0.37, leading_float('0.37(3)')) - self.assertEqual(0.37, leading_float('0.37ab\ncd')) - self.assertRaises(ValueError, leading_float, 'q1') + """check leading_float()""" + self.assertEqual(0.37, leading_float("0.37(3)")) + self.assertEqual(0.37, leading_float("0.37ab\ncd")) + self.assertRaises(ValueError, leading_float, "q1") return - def test_getSymOp(self): - """check getSymOp() - """ - from diffpy.structure.spacegroups import SymOp - from diffpy.structure.spacegroups import Rot_X_mY_Z, Tr_0_12_12 - op = getSymOp('x,1/2-y,1/2+z') + """check getSymOp()""" + from diffpy.structure.spacegroups import Rot_X_mY_Z, SymOp, Tr_0_12_12 + + op = getSymOp("x,1/2-y,1/2+z") op_std = SymOp(Rot_X_mY_Z, Tr_0_12_12) self.assertEqual(str(op_std), str(op)) from diffpy.structure.spacegroups import Rot_mX_mXY_Z, Tr_0_0_12 - op1 = getSymOp('-x,-x+y,1/2+z') + + op1 = getSymOp("-x,-x+y,1/2+z") op1_std = SymOp(Rot_mX_mXY_Z, Tr_0_0_12) self.assertEqual(str(op1_std), str(op1)) return + # End of class TestRoutines # ---------------------------------------------------------------------------- + class TestP_cif(unittest.TestCase): - pbteciffile = datafile('PbTe.cif') - badciffile = datafile('LiCl-bad.cif') - graphiteciffile = datafile('graphite.cif') - cdsebulkpdffitfile = datafile('CdSe_bulk.stru') - teiciffile = datafile('TeI.cif') - refciffile = datafile('Ni_ref.cif') + pbteciffile = datafile("PbTe.cif") + badciffile = datafile("LiCl-bad.cif") + graphiteciffile = datafile("graphite.cif") + cdsebulkpdffitfile = datafile("CdSe_bulk.stru") + teiciffile = datafile("TeI.cif") + refciffile = datafile("Ni_ref.cif") places = 6 - def setUp(self): self.ptest = P_cif() self.pfile = P_cif() @@ -83,10 +82,8 @@ def setUp(self): def tearDown(self): return - def test_parse(self): - """check P_cif.parse() - """ + """check P_cif.parse()""" with open(self.pbteciffile) as fp1: sgood = fp1.read() with open(self.badciffile) as fp2: @@ -96,17 +93,13 @@ def test_parse(self): stru = ptest.parse(sgood) self.assertEqual(str(stru_check), str(stru)) self.assertEqual(str(stru_check.lattice), str(stru.lattice)) - self.assertEqual(pfile.spacegroup.short_name, - ptest.spacegroup.short_name) + self.assertEqual(pfile.spacegroup.short_name, ptest.spacegroup.short_name) ptestb = P_cif() - self.assertRaises(StructureFormatError, - ptestb.parse, sbad) + self.assertRaises(StructureFormatError, ptestb.parse, sbad) return - def test_parseLines(self): - """check P_cif.parseLines() - """ + """check P_cif.parseLines()""" with open(self.pbteciffile) as fp1: goodlines = fp1.readlines() with open(self.badciffile) as fp2: @@ -116,17 +109,13 @@ def test_parseLines(self): stru = ptest.parseLines(goodlines) self.assertEqual(str(stru_check), str(stru)) self.assertEqual(str(stru_check.lattice), str(stru.lattice)) - self.assertEqual(pfile.spacegroup.short_name, - ptest.spacegroup.short_name) + self.assertEqual(pfile.spacegroup.short_name, ptest.spacegroup.short_name) ptest2 = P_cif() - self.assertRaises(StructureFormatError, - ptest2.parseLines, badlines) + self.assertRaises(StructureFormatError, ptest2.parseLines, badlines) return - def test_parseFile(self): - """check P_cif.parseFile() - """ + """check P_cif.parseFile()""" # pbteciffile stru = self.pfile.parseFile(self.pbteciffile) self.assertEqual(8, len(stru)) @@ -136,7 +125,7 @@ def test_parseFile(self): self.assertEqual(90.0, stru.lattice.alpha) self.assertEqual(90.0, stru.lattice.beta) self.assertEqual(90.0, stru.lattice.gamma) - self.assertEqual('Fm-3m', self.pfile.spacegroup.short_name) + self.assertEqual("Fm-3m", self.pfile.spacegroup.short_name) a0 = stru[0] self.assertEqual(0.5, a0.x) self.assertEqual(0.5, a0.y) @@ -146,134 +135,129 @@ def test_parseFile(self): self.assertEqual(0.0225566, a0.Uisoequiv) # badciffile pfile2 = P_cif() - self.assertRaises(StructureFormatError, - pfile2.parseFile, self.badciffile) + self.assertRaises(StructureFormatError, pfile2.parseFile, self.badciffile) # graphite pgraphite = P_cif() graphite = pgraphite.parseFile(self.graphiteciffile) self.assertEqual(4, len(graphite)) c1 = graphite[0] self.assertEqual(str, type(c1.element)) - self.assertEqual('C', c1.element) + self.assertEqual("C", c1.element) self.assertEqual(str, type(c1.label)) - self.assertEqual('C1', c1.label) + self.assertEqual("C1", c1.label) # filename with unicode encoding - hasbs = '\\' in self.graphiteciffile - uciffile = six.u(self.graphiteciffile.replace('\\', '/')) - if hasbs: # pragma: no cover - uciffile = uciffile.replace(u'/', u'\\') + hasbs = "\\" in self.graphiteciffile + uciffile = six.u(self.graphiteciffile.replace("\\", "/")) + if hasbs: # pragma: no cover + uciffile = uciffile.replace("/", "\\") ugraphite = P_cif().parseFile(uciffile) self.assertEqual(4, len(ugraphite)) # File with full space group name ptei = P_cif().parseFile(self.teiciffile) - self.assertEqual(16 , len(ptei)) + self.assertEqual(16, len(ptei)) return -# def test__parseCifBlock(self): -# """check P_cif._parseCifBlock() -# """ -# return -# -# def test__parse_lattice(self): -# """check P_cif._parse_lattice() -# """ -# return -# -# def test__parse_atom_site_label(self): -# """check P_cif._parse_atom_site_label() -# """ -# return -# -# def test__parse_atom_site_aniso_label(self): -# """check P_cif._parse_atom_site_aniso_label() -# """ -# return -# -# def test__parse_space_group_symop_operation_xyz(self): -# """check P_cif._parse_space_group_symop_operation_xyz() -# """ -# return -# -# def test__expandAsymmetricUnit(self): -# """check P_cif._expandAsymmetricUnit() -# """ -# return -# -# def test_toLines(self): -# """check P_cif.toLines() -# """ -# return -# -# def test_tostring(self): -# """check P_cif.tostring() -# """ -# return + # def test__parseCifBlock(self): + # """check P_cif._parseCifBlock() + # """ + # return + # + # def test__parse_lattice(self): + # """check P_cif._parse_lattice() + # """ + # return + # + # def test__parse_atom_site_label(self): + # """check P_cif._parse_atom_site_label() + # """ + # return + # + # def test__parse_atom_site_aniso_label(self): + # """check P_cif._parse_atom_site_aniso_label() + # """ + # return + # + # def test__parse_space_group_symop_operation_xyz(self): + # """check P_cif._parse_space_group_symop_operation_xyz() + # """ + # return + # + # def test__expandAsymmetricUnit(self): + # """check P_cif._expandAsymmetricUnit() + # """ + # return + # + # def test_toLines(self): + # """check P_cif.toLines() + # """ + # return + # + # def test_tostring(self): + # """check P_cif.tostring() + # """ + # return def test_write_and_read(self): - """high-level check of P_cif.tostring() - """ + """high-level check of P_cif.tostring()""" # high-level check stru_check = Structure() stru_check.read(self.cdsebulkpdffitfile) - s_s = stru_check.writeStr('cif') + s_s = stru_check.writeStr("cif") stru = Structure() - stru.readStr(s_s, 'cif') + stru.readStr(s_s, "cif") self.assertAlmostEqual(4.2352, stru.lattice.a, self.places) self.assertAlmostEqual(4.2352, stru.lattice.b, self.places) self.assertAlmostEqual(6.90603, stru.lattice.c, self.places) self.assertEqual(4, len(stru)) a0 = stru[0] - self.assertEqual('Cd', a0.element) + self.assertEqual("Cd", a0.element) self.assertTrue(numpy.allclose([0.3334, 0.6667, 0.0], a0.xyz)) self.assertTrue(a0.anisotropy) - self.assertAlmostEqual(0.01303, a0.U[0,0]) - self.assertAlmostEqual(0.01303, a0.U[1,1]) - self.assertAlmostEqual(0.01402, a0.U[2,2]) + self.assertAlmostEqual(0.01303, a0.U[0, 0]) + self.assertAlmostEqual(0.01303, a0.U[1, 1]) + self.assertAlmostEqual(0.01402, a0.U[2, 2]) a3 = stru[3] - self.assertEqual('Se', a3.element) + self.assertEqual("Se", a3.element) self.assertTrue(numpy.allclose([0.6666, 0.333300, 0.87667], a3.xyz)) - self.assertAlmostEqual(0.015673, a3.U[0,0]) - self.assertAlmostEqual(0.015673, a3.U[1,1]) - self.assertAlmostEqual(0.046164, a3.U[2,2]) + self.assertAlmostEqual(0.015673, a3.U[0, 0]) + self.assertAlmostEqual(0.015673, a3.U[1, 1]) + self.assertAlmostEqual(0.046164, a3.U[2, 2]) return - def test_eps(self): - """Test the P_cif.eps coordinates resolution. - """ + """Test the P_cif.eps coordinates resolution.""" pcif = P_cif() pcif.eps = 1e-8 grph = pcif.parseFile(self.graphiteciffile) self.assertEqual(8, len(grph)) - self.assertTrue(all(a.label.startswith('C1') for a in grph[:2])) - self.assertTrue(all(a.label.startswith('C2') for a in grph[2:])) + self.assertTrue(all(a.label.startswith("C1") for a in grph[:2])) + self.assertTrue(all(a.label.startswith("C2") for a in grph[2:])) pcif2 = P_cif() pcif2.eps = 1e-3 grph2 = pcif2.parseFile(self.graphiteciffile) self.assertEqual(4, len(grph2)) return - def test_unknown_occupancy(self): "test CIF file with unknown occupancy data" - stru = self.ptest.parseFile(datafile('TeI-unkocc.cif')) + stru = self.ptest.parseFile(datafile("TeI-unkocc.cif")) self.assertTrue(numpy.array_equal(16 * [1], stru.occupancy)) return - def test_unknown_spacegroup_number(self): "test CIF file with unknown space group symbol" from diffpy.structure.spacegroups import GetSpaceGroup, _hashSymOpList + with open(self.pbteciffile) as fp: lines = fp.readlines() - self.assertTrue(lines[16].startswith('_symmetry_space_group')) - self.assertTrue(lines[17].startswith('_symmetry_space_group')) + self.assertTrue(lines[16].startswith("_symmetry_space_group")) + self.assertTrue(lines[17].startswith("_symmetry_space_group")) lines[16:18] = [ - '_space_group_IT_number ?\n', - '_symmetry_space_group_name_H-M ?\n', - '_symmetry_space_group_name_Hall ?\n', + "_space_group_IT_number ?\n", + "_symmetry_space_group_name_H-M ?\n", + "_symmetry_space_group_name_Hall ?\n", ] - ciftxt = ''.join(lines) + ciftxt = "".join(lines) stru = self.ptest.parse(ciftxt) self.assertEqual(8, len(stru)) h225 = _hashSymOpList(GetSpaceGroup(225).iter_symops()) @@ -281,54 +265,45 @@ def test_unknown_spacegroup_number(self): self.assertEqual(h225, _hashSymOpList(sgcif.iter_symops())) return - def test_nosites_cif(self): - """Test reading of CIF file with no valid sites. - """ + """Test reading of CIF file with no valid sites.""" ptest = self.ptest - stru = ptest.parseFile(datafile('nosites.cif')) + stru = ptest.parseFile(datafile("nosites.cif")) self.assertEqual(0, len(stru)) self.assertEqual(10.413, stru.lattice.a) self.assertEqual(10.413, stru.lattice.b) self.assertEqual(10.413, stru.lattice.c) return - def test_badspacegroup_cif(self): - """Test reading of CIF file with unrecognized space group. - """ + """Test reading of CIF file with unrecognized space group.""" ptest = self.ptest - filename = datafile('badspacegroup.cif') + filename = datafile("badspacegroup.cif") self.assertRaises(StructureFormatError, ptest.parseFile, filename) return - def test_custom_spacegroup_cif(self): - """Test parsing of nonstandard symops-defined space group. - """ + """Test parsing of nonstandard symops-defined space group.""" pfile = self.pfile - filename = datafile('customsg.cif') + filename = datafile("customsg.cif") pfile.parseFile(filename) sg = pfile.spacegroup - self.assertEqual('CIF data', sg.short_name) + self.assertEqual("CIF data", sg.short_name) self.assertEqual(6, len(sg.symop_list)) return - def test_spacegroup_isotropy(self): "verify site isotropy due to site symmetry." # remove the _atom_site_thermal_displace_type field with open(self.pbteciffile) as fp: - lines = [line.replace(' Uiso ', ' ') for line in fp - if '_atom_site_thermal_displace_type' not in line] - ciftxt = ''.join(lines) + lines = [line.replace(" Uiso ", " ") for line in fp if "_atom_site_thermal_displace_type" not in line] + ciftxt = "".join(lines) ptest = self.ptest stru = ptest.parse(ciftxt) self.assertFalse(any(stru.anisotropy)) self.assertTrue(all(not a.anisotropy for a in ptest.asymmetric_unit)) return - def test_spacegroup_anisotropy(self): "verify site anisotropy due to site symmetry." stru = self.ptest.parseFile(self.graphiteciffile) @@ -340,7 +315,7 @@ def test_spacegroup_ref(self): pfile = self.pfile pfile.parseFile(self.refciffile) sg = pfile.spacegroup - self.assertEqual('Fm-3m', sg.short_name) + self.assertEqual("Fm-3m", sg.short_name) return @@ -348,72 +323,66 @@ def test_adp_type_ani(self): "verify adp type override to anisotropic" with open(self.pbteciffile) as fp: ciftxt = fp.read() - ciftxt = ciftxt.replace(' Uiso ', ' Uani ') + ciftxt = ciftxt.replace(" Uiso ", " Uani ") stru = self.ptest.parse(ciftxt) self.assertTrue(all(stru.anisotropy)) return - def test_adp_type_iso(self): "verify adp type override to isotropic" with open(self.graphiteciffile) as fp: lines = fp.readlines() - lines.insert(-2, '_atom_site_adp_type\n') - lines[-2] = lines[-2].rstrip() + ' Uiso\n' - lines[-1] = lines[-1].rstrip() + ' Uiso\n' - ciftxt = ''.join(lines) + lines.insert(-2, "_atom_site_adp_type\n") + lines[-2] = lines[-2].rstrip() + " Uiso\n" + lines[-1] = lines[-1].rstrip() + " Uiso\n" + ciftxt = "".join(lines) stru = self.ptest.parse(ciftxt) self.assertFalse(any(a.anisotropy for a in stru)) return - def test_adp_aniso_label(self): "verify ADP type setting from _atom_site_aniso_label loop" with open(self.teiciffile) as fp: - lines = [line.replace(' Uani ', ' ') for line in fp - if not '_atom_site_adp_type' in line] - ciftxt = ''.join(lines) + lines = [line.replace(" Uani ", " ") for line in fp if not "_atom_site_adp_type" in line] + ciftxt = "".join(lines) stru = self.ptest.parse(ciftxt) self.assertTrue(all(stru.anisotropy)) return - def test_unknown_aniso(self): "test CIF file with unknown values in the aniso block." with open(self.teiciffile) as fp: lines = fp.readlines() - lines[-4:] = [' ? ? ? ? ? ? ?\n'] - ciftxt = ''.join(lines) + lines[-4:] = [" ? ? ? ? ? ? ?\n"] + ciftxt = "".join(lines) stru = self.ptest.parse(ciftxt) self.assertEqual(16, len(stru)) self.assertTrue(all(stru.anisotropy)) return - def test_curly_brace(self): "verify loading of a CIF file with unquoted curly brace" ptest = self.ptest - stru = ptest.parseFile(datafile('curlybrackets.cif')) + stru = ptest.parseFile(datafile("curlybrackets.cif")) self.assertEqual(20, len(stru)) return - def test_getParser(self): - """Test passing of eps keyword argument by getParser function. - """ - pcif = getParser('cif', eps=1e-6) + """Test passing of eps keyword argument by getParser function.""" + pcif = getParser("cif", eps=1e-6) grph = pcif.parseFile(self.graphiteciffile) self.assertEqual(8, len(grph)) - self.assertTrue(all(a.label.startswith('C1') for a in grph[:2])) - self.assertTrue(all(a.label.startswith('C2') for a in grph[2:])) - pcif2 = getParser('cif') + self.assertTrue(all(a.label.startswith("C1") for a in grph[:2])) + self.assertTrue(all(a.label.startswith("C2") for a in grph[2:])) + pcif2 = getParser("cif") grph2 = pcif2.parseFile(self.graphiteciffile) self.assertEqual(4, len(grph2)) return + # End of class TestP_cif # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testp_discus.py b/src/diffpy/structure/tests/testp_discus.py index a748f452..5f30a42f 100644 --- a/src/diffpy/structure/tests/testp_discus.py +++ b/src/diffpy/structure/tests/testp_discus.py @@ -16,36 +16,35 @@ """Unit tests for diffpy.structure.parsers.p_discus module """ -import unittest import re +import unittest -from diffpy.structure.tests.testutils import datafile from diffpy.structure import Structure, StructureFormatError +from diffpy.structure.tests.testutils import datafile # ---------------------------------------------------------------------------- + class TestP_discus(unittest.TestCase): """test Parser for PDFFit file format""" - def setUp(self): self.stru = Structure() self.format = "discus" self.places = 8 - def test_read_discus_Ni(self): """check reading of Ni structure in discus format""" stru = self.stru - stru.read(datafile('Ni-discus.stru'), self.format) - f_title = 'structure Ni FCC' + stru.read(datafile("Ni-discus.stru"), self.format) + f_title = "structure Ni FCC" self.assertEqual(f_title, stru.title) - self.assertEqual('Fm-3m', stru.pdffit['spcgr']) + self.assertEqual("Fm-3m", stru.pdffit["spcgr"]) # cell record abcABG = (3.52, 3.52, 3.52, 90.0, 90.0, 90.0) self.assertEqual(abcABG, stru.lattice.abcABG()) # ncell - self.assertEqual([1, 1, 1, 4], stru.pdffit['ncell']) + self.assertEqual([1, 1, 1, 4], stru.pdffit["ncell"]) self.assertEqual(4, len(stru)) # first atom a0 = stru[0] @@ -55,39 +54,35 @@ def test_read_discus_Ni(self): self.assertAlmostEqual(Biso0, a0.Bisoequiv, self.places) return - def test_except_other_formats(self): """check exceptions when reading files in other formats""" badfiles = [ - 'LiCl-bad.cif', - 'PbTe.cif', - 'arginine.pdb', - 'ZnSb_RT_Q28X_VM_20_fxiso.rstr', - 'Ni-bad.stru', - 'Ni.stru', - 'BubbleRaftShort.xcfg', - 'bucky-bad1.xyz', - 'bucky-bad2.xyz', - 'bucky-plain-bad.xyz', - 'bucky-plain.xyz', - 'bucky-raw.xyz', - 'bucky.xyz', - 'hexagon-raw-bad.xyz', - 'hexagon-raw.xyz', + "LiCl-bad.cif", + "PbTe.cif", + "arginine.pdb", + "ZnSb_RT_Q28X_VM_20_fxiso.rstr", + "Ni-bad.stru", + "Ni.stru", + "BubbleRaftShort.xcfg", + "bucky-bad1.xyz", + "bucky-bad2.xyz", + "bucky-plain-bad.xyz", + "bucky-plain.xyz", + "bucky-raw.xyz", + "bucky.xyz", + "hexagon-raw-bad.xyz", + "hexagon-raw.xyz", ] for ft in badfiles: ff = datafile(ft) - self.assertRaises(StructureFormatError, - self.stru.read, ff, format=self.format) + self.assertRaises(StructureFormatError, self.stru.read, ff, format=self.format) return - def test_ignored_lines(self): - """check skipping of ignored lines in the header - """ - r1 = 'ignored record 1\n' - r2 = 'ignored record 2\n' - with open(datafile('Ni-discus.stru')) as fp: + """check skipping of ignored lines in the header""" + r1 = "ignored record 1\n" + r2 = "ignored record 2\n" + with open(datafile("Ni-discus.stru")) as fp: ni_lines = fp.readlines() ni_lines.insert(2, r1) ni_lines.insert(4, r2) @@ -96,56 +91,49 @@ def test_ignored_lines(self): self.assertEqual([r1.rstrip(), r2.rstrip()], p.ignored_lines) ni_lines.append(r1) s_s2 = "".join(ni_lines) - self.assertRaises(StructureFormatError, self.stru.readStr, - s_s2, self.format) + self.assertRaises(StructureFormatError, self.stru.readStr, s_s2, self.format) return - def test_spdiameter_parsing(self): - """check parsing of spdiameter record from a file. - """ + """check parsing of spdiameter record from a file.""" stru = self.stru - stru.read(datafile('Ni-discus.stru'), self.format) - self.assertEqual(0, stru.pdffit['spdiameter']) + stru.read(datafile("Ni-discus.stru"), self.format) + self.assertEqual(0, stru.pdffit["spdiameter"]) snoshape = stru.writeStr(format=self.format) - self.assertTrue(not re.search('(?m)^shape', snoshape)) + self.assertTrue(not re.search("(?m)^shape", snoshape)) # produce a string with non-zero spdiameter - stru.pdffit['spdiameter'] = 13 + stru.pdffit["spdiameter"] = 13 s13 = stru.writeStr(format=self.format) - self.assertTrue(re.search('(?m)^shape +sphere, ', s13)) + self.assertTrue(re.search("(?m)^shape +sphere, ", s13)) stru13 = Structure() stru13.readStr(s13) - self.assertEqual(13, stru13.pdffit['spdiameter']) - with open(datafile('Ni.stru')) as fp: + self.assertEqual(13, stru13.pdffit["spdiameter"]) + with open(datafile("Ni.stru")) as fp: ni_lines = fp.readlines() - ni_lines.insert(3, 'shape invalid, 7\n') - sbad = ''.join(ni_lines) - self.assertRaises(StructureFormatError, self.stru.readStr, - sbad, format=self.format) + ni_lines.insert(3, "shape invalid, 7\n") + sbad = "".join(ni_lines) + self.assertRaises(StructureFormatError, self.stru.readStr, sbad, format=self.format) return - def test_stepcut_parsing(self): - """check parsing of stepcut record from a file. - """ + """check parsing of stepcut record from a file.""" stru = self.stru - stru.read(datafile('Ni-discus.stru'), self.format) - self.assertEqual(0, stru.pdffit['stepcut']) + stru.read(datafile("Ni-discus.stru"), self.format) + self.assertEqual(0, stru.pdffit["stepcut"]) snoshape = stru.writeStr(format=self.format) - self.assertTrue(not re.search('(?m)^shape', snoshape)) + self.assertTrue(not re.search("(?m)^shape", snoshape)) # produce a string with non-zero stepcut - stru.pdffit['stepcut'] = 13 + stru.pdffit["stepcut"] = 13 s13 = stru.writeStr(format=self.format) - self.assertTrue(re.search('(?m)^shape +stepcut, ', s13)) + self.assertTrue(re.search("(?m)^shape +stepcut, ", s13)) stru13 = Structure() stru13.readStr(s13) - self.assertEqual(13, stru13.pdffit['stepcut']) - with open(datafile('Ni.stru')) as fp: + self.assertEqual(13, stru13.pdffit["stepcut"]) + with open(datafile("Ni.stru")) as fp: ni_lines = fp.readlines() - ni_lines.insert(3, 'shape invalid, 7\n') - sbad = ''.join(ni_lines) - self.assertRaises(StructureFormatError, self.stru.readStr, - sbad, format=self.format) + ni_lines.insert(3, "shape invalid, 7\n") + sbad = "".join(ni_lines) + self.assertRaises(StructureFormatError, self.stru.readStr, sbad, format=self.format) return @@ -153,5 +141,5 @@ def test_stepcut_parsing(self): # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testp_pdffit.py b/src/diffpy/structure/tests/testp_pdffit.py index 56b9f0f7..cd9b21de 100644 --- a/src/diffpy/structure/tests/testp_pdffit.py +++ b/src/diffpy/structure/tests/testp_pdffit.py @@ -16,15 +16,17 @@ """Unit tests for diffpy.structure.parsers.p_pdffit module """ -import unittest import re +import unittest + import numpy -from diffpy.structure.tests.testutils import datafile from diffpy.structure import Structure, StructureFormatError +from diffpy.structure.tests.testutils import datafile # ---------------------------------------------------------------------------- + class TestP_pdffit(unittest.TestCase): """test Parser for PDFFit file format""" @@ -33,130 +35,138 @@ def setUp(self): self.format = "pdffit" self.places = 8 - def test_read_pdffit_ZnSb(self): """check reading of ZnSb pdffit structure file""" stru = self.stru - stru.read(datafile('ZnSb_RT_Q28X_VM_20_fxiso.rstr'), self.format) + stru.read(datafile("ZnSb_RT_Q28X_VM_20_fxiso.rstr"), self.format) f_title = "Cell structure file of Zn4Sb3 #167 interstitial" self.assertEqual(stru.title, f_title) - self.assertAlmostEqual(stru.pdffit['scale'], 0.826145) - self.assertAlmostEqual(stru.pdffit['delta2'], 4.687951) - self.assertAlmostEqual(stru.pdffit['delta1'], 0.01) - self.assertAlmostEqual(stru.pdffit['sratio'], 1.02) - self.assertAlmostEqual(stru.pdffit['rcut'], 0.03) - self.assertEqual(stru.pdffit['spcgr'], 'R-3c') - s_lat = [ stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma ] + self.assertAlmostEqual(stru.pdffit["scale"], 0.826145) + self.assertAlmostEqual(stru.pdffit["delta2"], 4.687951) + self.assertAlmostEqual(stru.pdffit["delta1"], 0.01) + self.assertAlmostEqual(stru.pdffit["sratio"], 1.02) + self.assertAlmostEqual(stru.pdffit["rcut"], 0.03) + self.assertEqual(stru.pdffit["spcgr"], "R-3c") + s_lat = [ + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ] f_lat = [12.309436, 12.309436, 12.392839, 90.0, 90.0, 120.0] self.assertTrue(numpy.allclose(s_lat, f_lat)) - s_dcell = stru.pdffit['dcell'] + s_dcell = stru.pdffit["dcell"] f_dcell = [0.000008, 0.000008, 0.000013, 0.0, 0.0, 0.0] self.assertTrue(numpy.allclose(s_dcell, f_dcell)) - self.assertEqual(stru.pdffit['ncell'], [1,1,1,66]) + self.assertEqual(stru.pdffit["ncell"], [1, 1, 1, 66]) s_els = [a.element for a in stru] - self.assertEqual(s_els, 36*['Zn']+30*['Sb']) + self.assertEqual(s_els, 36 * ["Zn"] + 30 * ["Sb"]) a0 = stru[0] s_xyz = a0.xyz - f_xyz = [0.09094387, 0.24639539, 0.40080261]; + f_xyz = [0.09094387, 0.24639539, 0.40080261] s_o = a0.occupancy f_o = 0.9 s_sigxyz = a0.sigxyz - f_sigxyz = [ 0.00000079, 0.00000076, 0.00000064]; + f_sigxyz = [0.00000079, 0.00000076, 0.00000064] s_sigo = a0.sigo f_sigo = 0.0 - s_U = [ a0.U[i][i] for i in range(3) ] - f_U = 3*[0.01] + s_U = [a0.U[i][i] for i in range(3)] + f_U = 3 * [0.01] self.assertTrue(numpy.allclose(s_xyz, f_xyz)) self.assertTrue(numpy.allclose(s_sigxyz, f_sigxyz)) self.assertTrue(numpy.allclose(s_U, f_U)) self.assertAlmostEqual(s_o, f_o) self.assertAlmostEqual(s_sigo, f_sigo) - def test_read_pdffit_Ni(self): """check reading of Ni pdffit structure file""" stru = self.stru - stru.read(datafile('Ni.stru'), self.format) + stru.read(datafile("Ni.stru"), self.format) f_title = "structure Ni FCC" self.assertEqual(stru.title, f_title) - self.assertEqual(stru.pdffit['spcgr'], 'Fm-3m') - s_lat = [ stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma ] + self.assertEqual(stru.pdffit["spcgr"], "Fm-3m") + s_lat = [ + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ] f_lat = [3.52, 3.52, 3.52, 90.0, 90.0, 90.0] for i in range(len(s_lat)): self.assertAlmostEqual(s_lat[i], f_lat[i]) - self.assertEqual(stru.pdffit['ncell'], [1,1,1,4]) + self.assertEqual(stru.pdffit["ncell"], [1, 1, 1, 4]) s_els = [a.element for a in stru] - self.assertEqual(s_els, 4*['Ni']) + self.assertEqual(s_els, 4 * ["Ni"]) a0 = stru[0] s_xyz = a0.xyz - f_xyz = [0.0, 0.0, 0.0]; + f_xyz = [0.0, 0.0, 0.0] s_o = a0.occupancy f_o = 1.0 - s_U = [ a0.U[i][i] for i in range(3) ] - f_U = 3*[0.00126651] + s_U = [a0.U[i][i] for i in range(3)] + f_U = 3 * [0.00126651] for i in range(3): self.assertAlmostEqual(s_xyz[i], f_xyz[i]) self.assertAlmostEqual(s_U[i], f_U[i]) self.assertAlmostEqual(s_o, f_o) - def test_read_pdffit_Ni_prim123(self): """check reading of Ni_prim supercell 1x2x3""" stru = self.stru - stru.read(datafile('Ni_prim123.stru'), self.format) - s_lat = [ stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma ] - f_lat = [2.489016, 2*2.489016, 3*2.489016, 60.0, 60.0, 60.0] + stru.read(datafile("Ni_prim123.stru"), self.format) + s_lat = [ + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ] + f_lat = [2.489016, 2 * 2.489016, 3 * 2.489016, 60.0, 60.0, 60.0] for i in range(len(s_lat)): self.assertAlmostEqual(s_lat[i], f_lat[i]) s_els = [a.element for a in stru] - self.assertEqual(s_els, 6*['Ni']) + self.assertEqual(s_els, 6 * ["Ni"]) a5 = stru[5] s_xyz = a5.xyz - f_xyz = [0.0, 1.0/2.0, 2.0/3.0]; + f_xyz = [0.0, 1.0 / 2.0, 2.0 / 3.0] for i in range(3): self.assertAlmostEqual(s_xyz[i], f_xyz[i]) s_o = a5.occupancy f_o = 1.0 self.assertAlmostEqual(s_o, f_o) - s_U = [ a5.U[ij[0],ij[1]] - for ij in [(0,0), (1,1), (2,2), (0,1), (0,2), (1,2)] ] - f_U = 3*[0.00126651] + 3*[-0.00042217] + s_U = [a5.U[ij[0], ij[1]] for ij in [(0, 0), (1, 1), (2, 2), (0, 1), (0, 2), (1, 2)]] + f_U = 3 * [0.00126651] + 3 * [-0.00042217] for i in range(len(s_U)): self.assertAlmostEqual(s_U[i], f_U[i]) return - def test_read_pdffit_bad(self): """check exceptions when reading invalid pdffit file""" stru = self.stru - self.assertRaises(StructureFormatError, stru.read, - datafile('Ni-bad.stru'), self.format) - self.assertRaises(StructureFormatError, stru.read, - datafile('bucky.xyz'), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("Ni-bad.stru"), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("bucky.xyz"), self.format) return - def test_writeStr_pdffit(self): """check writing of normal xyz file""" stru = self.stru - stru.read(datafile('Ni.stru'), self.format) - with open(datafile('Ni.stru')) as fp: + stru.read(datafile("Ni.stru"), self.format) + with open(datafile("Ni.stru")) as fp: f_s = fp.read() - f_s = re.sub('[ \t]+', ' ', f_s) - f_s = re.sub('[ \t]+\n', '\n', f_s) + f_s = re.sub("[ \t]+", " ", f_s) + f_s = re.sub("[ \t]+\n", "\n", f_s) s_s = stru.writeStr(self.format) - s_s = re.sub('[ \t]+', ' ', s_s) + s_s = re.sub("[ \t]+", " ", s_s) self.assertEqual(f_s, s_s) return - def test_huge_occupancy(self): - """check structure with huge occupancy can be read. - """ - self.stru.read(datafile('Ni.stru'), self.format) + """check structure with huge occupancy can be read.""" + self.stru.read(datafile("Ni.stru"), self.format) self.stru[0].occupancy = 16e16 s_s = self.stru.writeStr(self.format) stru1 = Structure() @@ -164,71 +174,62 @@ def test_huge_occupancy(self): self.assertEqual(16e16, stru1[0].occupancy) return - def test_ignored_lines(self): - """check skipping of ignored lines in the header - """ - r1 = 'ignored record 1' - r2 = 'ignored record 2' - with open(datafile('Ni.stru')) as fp: + """check skipping of ignored lines in the header""" + r1 = "ignored record 1" + r2 = "ignored record 2" + with open(datafile("Ni.stru")) as fp: ni_lines = fp.readlines() - ni_lines.insert(2, r1 + '\n') - ni_lines.insert(4, r2 + '\n') + ni_lines.insert(2, r1 + "\n") + ni_lines.insert(4, r2 + "\n") s_s1 = "".join(ni_lines) p = self.stru.readStr(s_s1, self.format) self.assertEqual([r1, r2], p.ignored_lines) - ni_lines.insert(-3, r1 + '\n') + ni_lines.insert(-3, r1 + "\n") s_s2 = "".join(ni_lines) - self.assertRaises(StructureFormatError, self.stru.readStr, - s_s2, self.format) + self.assertRaises(StructureFormatError, self.stru.readStr, s_s2, self.format) return - def test_spdiameter_parsing(self): - """check parsing of spdiameter record from a file. - """ + """check parsing of spdiameter record from a file.""" stru = self.stru - stru.read(datafile('Ni.stru'), self.format) - self.assertEqual(0, stru.pdffit['spdiameter']) + stru.read(datafile("Ni.stru"), self.format) + self.assertEqual(0, stru.pdffit["spdiameter"]) snoshape = stru.writeStr(format=self.format) - self.assertTrue(not re.search('(?m)^shape', snoshape)) + self.assertTrue(not re.search("(?m)^shape", snoshape)) # produce a string with non-zero spdiameter - stru.pdffit['spdiameter'] = 13 + stru.pdffit["spdiameter"] = 13 s13 = stru.writeStr(format=self.format) - self.assertTrue(re.search('(?m)^shape +sphere, ', s13)) + self.assertTrue(re.search("(?m)^shape +sphere, ", s13)) stru13 = Structure() stru13.readStr(s13) - self.assertEqual(13, stru13.pdffit['spdiameter']) - with open(datafile('Ni.stru')) as fp: + self.assertEqual(13, stru13.pdffit["spdiameter"]) + with open(datafile("Ni.stru")) as fp: ni_lines = fp.readlines() - ni_lines.insert(3, 'shape invalid, 7\n') - sbad = ''.join(ni_lines) - self.assertRaises(StructureFormatError, self.stru.readStr, - sbad, format=self.format) + ni_lines.insert(3, "shape invalid, 7\n") + sbad = "".join(ni_lines) + self.assertRaises(StructureFormatError, self.stru.readStr, sbad, format=self.format) return - def test_stepcut_parsing(self): - """check parsing of stepcut record from a file. - """ + """check parsing of stepcut record from a file.""" stru = self.stru - stru.read(datafile('Ni.stru'), self.format) - self.assertEqual(0, stru.pdffit['stepcut']) + stru.read(datafile("Ni.stru"), self.format) + self.assertEqual(0, stru.pdffit["stepcut"]) snoshape = stru.writeStr(format=self.format) - self.assertTrue(not re.search('(?m)^shape', snoshape)) + self.assertTrue(not re.search("(?m)^shape", snoshape)) # produce a string with non-zero stepcut - stru.pdffit['stepcut'] = 13 + stru.pdffit["stepcut"] = 13 s13 = stru.writeStr(format=self.format) - self.assertTrue(re.search('(?m)^shape +stepcut, ', s13)) + self.assertTrue(re.search("(?m)^shape +stepcut, ", s13)) stru13 = Structure() stru13.readStr(s13) - self.assertEqual(13, stru13.pdffit['stepcut']) - with open(datafile('Ni.stru')) as fp: + self.assertEqual(13, stru13.pdffit["stepcut"]) + with open(datafile("Ni.stru")) as fp: ni_lines = fp.readlines() - ni_lines.insert(3, 'shape invalid, 7\n') - sbad = ''.join(ni_lines) - self.assertRaises(StructureFormatError, self.stru.readStr, - sbad, format=self.format) + ni_lines.insert(3, "shape invalid, 7\n") + sbad = "".join(ni_lines) + self.assertRaises(StructureFormatError, self.stru.readStr, sbad, format=self.format) return @@ -236,5 +237,5 @@ def test_stepcut_parsing(self): # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testparsers.py b/src/diffpy/structure/tests/testparsers.py index 34cd038f..7ebe7d8a 100644 --- a/src/diffpy/structure/tests/testparsers.py +++ b/src/diffpy/structure/tests/testparsers.py @@ -16,103 +16,89 @@ """Unit tests for structure.parsers module. """ -import unittest import os import re import tempfile +import unittest + import numpy +from diffpy.structure import Atom, Lattice, Structure, StructureFormatError from diffpy.structure.tests.testutils import datafile -from diffpy.structure import Structure, StructureFormatError -from diffpy.structure import Lattice -from diffpy.structure import Atom # ---------------------------------------------------------------------------- + class TestP_xyz(unittest.TestCase): """test Parser for xyz file format""" def setUp(self): self.stru = Structure() - self.format = 'xyz' + self.format = "xyz" self.tmpnames = [] return - def tearDown(self): for f in self.tmpnames: os.remove(f) return - def mktmpfile(self): with tempfile.NamedTemporaryFile(delete=False) as ftmp: self.tmpnames.append(ftmp.name) return self.tmpnames[-1] - def test_read_xyz(self): """check reading of normal xyz file""" stru = self.stru - stru.read(datafile('bucky.xyz'), self.format) + stru.read(datafile("bucky.xyz"), self.format) s_els = [a.element for a in stru] - self.assertEqual(stru.title, 'bucky-ball') - self.assertEqual(s_els, 60*['C']) + self.assertEqual(stru.title, "bucky-ball") + self.assertEqual(s_els, 60 * ["C"]) return - def test_read_xyz_bad(self): """check exceptions when reading invalid xyz file""" stru = self.stru - self.assertRaises(StructureFormatError, stru.read, - datafile('bucky-bad1.xyz'), self.format) - self.assertRaises(StructureFormatError, stru.read, - datafile('bucky-bad2.xyz'), self.format) - self.assertRaises(StructureFormatError, stru.read, - datafile('bucky-plain.xyz'), self.format) - self.assertRaises(StructureFormatError, stru.read, - datafile('hexagon-raw.xy'), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("bucky-bad1.xyz"), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("bucky-bad2.xyz"), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("bucky-plain.xyz"), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("hexagon-raw.xy"), self.format) return - def test_writeStr_xyz(self): """check string representation of normal xyz file""" stru = self.stru stru.title = "test of writeStr" stru.lattice = Lattice(1.0, 2.0, 3.0, 90.0, 90.0, 90.0) - stru[:] = [ - Atom('H', [1., 1., 1.]), - Atom('Cl', [3., 2., 1.]) - ] + stru[:] = [Atom("H", [1.0, 1.0, 1.0]), Atom("Cl", [3.0, 2.0, 1.0])] s1 = stru.writeStr(self.format) - s1 = re.sub('[ \t]+', ' ', s1) + s1 = re.sub("[ \t]+", " ", s1) s0 = "2\n%s\nH 1 2 3\nCl 3 4 3\n" % stru.title self.assertEqual(s1, s0) return - def test_write_xyz(self): """check writing of normal xyz file""" stru = self.stru stru.title = "test of writeStr" stru.lattice = Lattice(1.0, 2.0, 3.0, 90.0, 90.0, 90.0) - stru[:] = [ - Atom('H', [1., 1., 1.]), - Atom('Cl', [3., 2., 1.]) - ] + stru[:] = [Atom("H", [1.0, 1.0, 1.0]), Atom("Cl", [3.0, 2.0, 1.0])] filename = self.mktmpfile() stru.write(filename, self.format) with open(filename) as fp: f_s = fp.read() - f_s = re.sub('[ \t]+', ' ', f_s) + f_s = re.sub("[ \t]+", " ", f_s) s_s = "2\n%s\nH 1 2 3\nCl 3 4 3\n" % stru.title self.assertEqual(f_s, s_s) return + # End of class TestP_xyz # ---------------------------------------------------------------------------- + class TestP_rawxyz(unittest.TestCase): """test Parser for rawxyz file format""" @@ -121,57 +107,49 @@ def setUp(self): self.format = "rawxyz" return - def test_read_plainxyz(self): """check reading of a plain xyz file""" stru = self.stru - stru.read(datafile('bucky-plain.xyz'), self.format) + stru.read(datafile("bucky-plain.xyz"), self.format) s_els = [a.element for a in stru] - self.assertEqual(stru.title, 'bucky-plain') - self.assertEqual(s_els, 60*['C']) + self.assertEqual(stru.title, "bucky-plain") + self.assertEqual(s_els, 60 * ["C"]) return - def test_read_plainxyz_bad(self): """check exceptions when reading invalid plain xyz file""" stru = self.stru - self.assertRaises(StructureFormatError, stru.read, - datafile('bucky-plain-bad.xyz'), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("bucky-plain-bad.xyz"), self.format) return - def test_read_rawxyz(self): """check reading of raw xyz file""" stru = self.stru - stru.read(datafile('bucky-raw.xyz'), self.format) + stru.read(datafile("bucky-raw.xyz"), self.format) s_els = [a.element for a in stru] - self.assertEqual(stru.title, 'bucky-raw') - self.assertEqual(s_els, 60*['']) - stru.read(datafile('hexagon-raw.xyz'), self.format) + self.assertEqual(stru.title, "bucky-raw") + self.assertEqual(s_els, 60 * [""]) + stru.read(datafile("hexagon-raw.xyz"), self.format) zs = [a.xyz[-1] for a in stru] - self.assertEqual(zs, 6*[0.0]) + self.assertEqual(zs, 6 * [0.0]) return - def test_read_rawxyz_bad(self): """check exceptions when reading unsupported xy file""" stru = self.stru - self.assertRaises(StructureFormatError, stru.read, - datafile('hexagon-raw-bad.xyz'), self.format) - self.assertRaises(StructureFormatError, stru.read, - datafile('hexagon-raw.xy'), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("hexagon-raw-bad.xyz"), self.format) + self.assertRaises(StructureFormatError, stru.read, datafile("hexagon-raw.xy"), self.format) return - def test_writeStr_rawxyz(self): """check writing of normal xyz file""" stru = self.stru stru.title = "test of writeStr" stru.lattice = Lattice(1.0, 2.0, 3.0, 90.0, 90.0, 90.0) # plain version - stru[:] = [Atom('H', [1., 1., 1.])] + stru[:] = [Atom("H", [1.0, 1.0, 1.0])] s1 = stru.writeStr(self.format) - s1 = re.sub('[ \t]+', ' ', s1) + s1 = re.sub("[ \t]+", " ", s1) s0 = "H 1 2 3\n" # brutal raw version stru[0].element = "" @@ -180,10 +158,12 @@ def test_writeStr_rawxyz(self): self.assertEqual(s1, s0) return + # End of class TestP_rawxyz # ---------------------------------------------------------------------------- + class TestP_pdb(unittest.TestCase): """test Parser for PDB file format""" @@ -192,57 +172,95 @@ def setUp(self): self.format = "pdb" self.places = 3 - def test_read_pdb_arginine(self): """check reading of arginine PDB file""" stru = self.stru - stru.read(datafile('arginine.pdb'), self.format) - f_els = ["N", "C", "C", "O", "C", "C", "C", "N", "C", "N", "N", "H", - "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", - "H", "O", "H"] + stru.read(datafile("arginine.pdb"), self.format) + f_els = [ + "N", + "C", + "C", + "O", + "C", + "C", + "C", + "N", + "C", + "N", + "N", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "H", + "O", + "H", + ] s_els = [a.element for a in stru] self.assertEqual(s_els, f_els) - s_lat = [stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma] + s_lat = [ + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ] f_lat = [1.0, 1.0, 1.0, 90.0, 90.0, 90.0] self.assertEqual(s_lat, f_lat) a0 = stru[0] self.assertTrue(numpy.allclose(a0.xyz, [0.735, 2.219, 1.389])) - def test_rwStr_pdb_CdSe(self): """check conversion to PDB file format""" stru = self.stru - stru.read(datafile('CdSe_bulk.stru'), 'pdffit') + stru.read(datafile("CdSe_bulk.stru"), "pdffit") s = stru.writeStr(self.format) # all lines should be 80 characters long - linelens = [len(l) for l in s.split('\n') if l != ""] - self.assertEqual(linelens, len(linelens)*[80]) + linelens = [len(l) for l in s.split("\n") if l != ""] + self.assertEqual(linelens, len(linelens) * [80]) # now clean and re-read structure stru = Structure() stru.readStr(s, self.format) s_els = [a.element for a in stru] - f_els = ['Cd', 'Cd', 'Se', 'Se'] + f_els = ["Cd", "Cd", "Se", "Se"] self.assertEqual(s_els, f_els) - s_lat = [stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma] + s_lat = [ + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ] f_lat = [4.235204, 4.235204, 6.906027, 90.0, 90.0, 120.0] self.assertTrue(numpy.allclose(s_lat, f_lat, atol=5e-4)) a0 = stru[0] - s_Uii = [a0.U[i,i] for i in range(3)] + s_Uii = [a0.U[i, i] for i in range(3)] f_Uii = [0.01303035, 0.01303035, 0.01401959] self.assertTrue(numpy.allclose(s_Uii, f_Uii, atol=5e-4)) - s_sigUii = [a0.sigU[i,i] for i in range(3)] + s_sigUii = [a0.sigU[i, i] for i in range(3)] f_sigUii = [0.00011127, 0.00011127, 0.00019575] self.assertTrue(numpy.allclose(s_sigUii, f_sigUii, atol=5e-4)) s_title = stru.title f_title = "Cell structure file of CdSe #186" self.assertEqual(s_title, f_title) + # End of class TestP_pdb # ---------------------------------------------------------------------------- + class TestP_xcfg(unittest.TestCase): """test Parser for XCFG file format""" @@ -251,44 +269,55 @@ def setUp(self): self.format = "xcfg" self.places = 6 - def test_read_xcfg(self): """check reading of BubbleRaft XCFG file""" stru = self.stru - stru.read(datafile('BubbleRaftShort.xcfg'), self.format) + stru.read(datafile("BubbleRaftShort.xcfg"), self.format) f_els = 500 * ["Ar"] s_els = [a.element for a in stru] self.assertEqual(s_els, f_els) self.assertAlmostEqual(stru.distance(82, 357), 47.5627, 3) - s_lat = [stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma] + s_lat = [ + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ] f_lat = [127.5, 119.5, 3.0, 90.0, 90.0, 90.0] self.assertTrue(numpy.allclose(s_lat, f_lat)) return - def test_rwStr_xcfg_CdSe(self): """check conversion to XCFG file format""" stru = self.stru - stru.read(datafile('CdSe_bulk.stru'), 'pdffit') + stru.read(datafile("CdSe_bulk.stru"), "pdffit") s = stru.writeStr(self.format) stru = Structure() stru.readStr(s, self.format) s_els = [a.element for a in stru] - f_els = ['Cd', 'Cd', 'Se', 'Se'] + f_els = ["Cd", "Cd", "Se", "Se"] self.assertEqual(s_els, f_els) - s_lat = [stru.lattice.a, stru.lattice.b, stru.lattice.c, - stru.lattice.alpha, stru.lattice.beta, stru.lattice.gamma] + s_lat = [ + stru.lattice.a, + stru.lattice.b, + stru.lattice.c, + stru.lattice.alpha, + stru.lattice.beta, + stru.lattice.gamma, + ] f_lat = [4.235204, 4.235204, 6.906027, 90.0, 90.0, 120.0] self.assertTrue(numpy.allclose(s_lat, f_lat)) a0 = stru[0] - s_Uii = [a0.U[i,i] for i in range(3)] + s_Uii = [a0.U[i, i] for i in range(3)] f_Uii = [0.01303035, 0.01303035, 0.01401959] self.assertTrue(numpy.allclose(s_Uii, f_Uii)) + # End of class TestP_xcfg # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testspacegroups.py b/src/diffpy/structure/tests/testspacegroups.py index 40c87927..c9980e17 100644 --- a/src/diffpy/structure/tests/testspacegroups.py +++ b/src/diffpy/structure/tests/testspacegroups.py @@ -19,36 +19,46 @@ import unittest -from diffpy.structure.spacegroups import SpaceGroupList, _hashSymOpList -from diffpy.structure.spacegroups import GetSpaceGroup, FindSpaceGroup +from diffpy.structure.spacegroups import FindSpaceGroup, GetSpaceGroup, SpaceGroupList, _hashSymOpList # ---------------------------------------------------------------------------- + class TestRoutines(unittest.TestCase): def setUp(self): return - def test_old_alt_name(self): "check GetSpaceGroup lookup from deprecated alt_name values" # alt_name values which do not map to short_name or pdb_name altnames_sgnos = ( - ("P M 3", 200), ("P N 3", 201), ("F M 3", 202), - ("F D 3", 203), ("I M 3", 204), ("P A 3", 205), - ("I A 3", 206), ("P M 3 M", 221), ("P N 3 N", 222), - ("P M 3 N", 223), ("P N 3 M", 224), ("F M 3 M", 225), - ("F M 3 C", 226), ("F D 3 M", 227), ("F D 3 C", 228), - ("I M 3 M", 229), ("I A 3 D", 230) + ("P M 3", 200), + ("P N 3", 201), + ("F M 3", 202), + ("F D 3", 203), + ("I M 3", 204), + ("P A 3", 205), + ("I A 3", 206), + ("P M 3 M", 221), + ("P N 3 N", 222), + ("P M 3 N", 223), + ("P N 3 M", 224), + ("F M 3 M", 225), + ("F M 3 C", 226), + ("F D 3 M", 227), + ("F D 3 C", 228), + ("I M 3 M", 229), + ("I A 3 D", 230), ) for name, sgno in altnames_sgnos: self.assertIs(GetSpaceGroup(sgno), GetSpaceGroup(name)) return - def test_GetSpaceGroup(self): "check GetSpaceGroup function" from diffpy.structure.spacegroups import sg125 + self.assertRaises(ValueError, GetSpaceGroup, 0) self.assertRaises(ValueError, GetSpaceGroup, 300) self.assertRaises(ValueError, GetSpaceGroup, "300") @@ -62,7 +72,6 @@ def test_GetSpaceGroup(self): self.assertIs(sg125, GetSpaceGroup("P 4/N 2/B 2/M")) return - def test_FindSpaceGroup(self): "check FindSpaceGroup function" sg123 = GetSpaceGroup(123) @@ -74,12 +83,10 @@ def test_FindSpaceGroup(self): self.assertIsNot(sg123, sg123r) self.assertIsNot(sg123.symop_list, sg123r.symop_list) self.assertEqual(ops123[::-1], sg123r.symop_list) - self.assertEqual(_hashSymOpList(sg123.symop_list), - _hashSymOpList(sg123r.symop_list)) + self.assertEqual(_hashSymOpList(sg123.symop_list), _hashSymOpList(sg123r.symop_list)) self.assertIs(sg123, FindSpaceGroup(ops123[::-1], shuffle=True)) return - def test__hashSymOpList(self): "verify _hashSymOpList is unique for each spacegroup" hset = set(_hashSymOpList(sg.symop_list) for sg in SpaceGroupList) @@ -89,44 +96,34 @@ def test__hashSymOpList(self): def test_spacegroup_representation(self): """Verify SpaceGroup.__repr__().""" self.assertEqual( - repr(GetSpaceGroup(1)), - "SpaceGroup #1 (P1, Triclinic). Symmetry matrices: 1, point sym. matr.: 1" + repr(GetSpaceGroup(1)), "SpaceGroup #1 (P1, Triclinic). Symmetry matrices: 1, point sym. matr.: 1" ) self.assertEqual( - repr(GetSpaceGroup(3)), - "SpaceGroup #3 (P2, Monoclinic). Symmetry matrices: 2, point sym. matr.: 2" + repr(GetSpaceGroup(3)), "SpaceGroup #3 (P2, Monoclinic). Symmetry matrices: 2, point sym. matr.: 2" ) self.assertEqual( repr(GetSpaceGroup(16)), - ( - "SpaceGroup #16 (P222, Orthorhombic). Symmetry matrices: 4, point sym. " - "matr.: 4" - ) + ("SpaceGroup #16 (P222, Orthorhombic). Symmetry matrices: 4, point sym. " "matr.: 4"), ) self.assertEqual( - repr(GetSpaceGroup(75)), - "SpaceGroup #75 (P4, Tetragonal). Symmetry matrices: 4, point sym. matr.: 4" + repr(GetSpaceGroup(75)), "SpaceGroup #75 (P4, Tetragonal). Symmetry matrices: 4, point sym. matr.: 4" ) self.assertEqual( - repr(GetSpaceGroup(143)), - "SpaceGroup #143 (P3, Trigonal). Symmetry matrices: 3, point sym. matr.: 3" + repr(GetSpaceGroup(143)), "SpaceGroup #143 (P3, Trigonal). Symmetry matrices: 3, point sym. matr.: 3" ) self.assertEqual( - repr(GetSpaceGroup(168)), - "SpaceGroup #168 (P6, Hexagonal). Symmetry matrices: 6, point sym. matr.: 6" + repr(GetSpaceGroup(168)), "SpaceGroup #168 (P6, Hexagonal). Symmetry matrices: 6, point sym. matr.: 6" ) self.assertEqual( repr(GetSpaceGroup(229)), - ( - "SpaceGroup #229 (Im-3m, Cubic). Symmetry matrices: 96, point sym. " - "matr.: 48" - ) + ("SpaceGroup #229 (Im-3m, Cubic). Symmetry matrices: 96, point sym. " "matr.: 48"), ) return + # End of class TestRoutines # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/teststructure.py b/src/diffpy/structure/tests/teststructure.py index 5086f97d..37f89a59 100644 --- a/src/diffpy/structure/tests/teststructure.py +++ b/src/diffpy/structure/tests/teststructure.py @@ -20,50 +20,47 @@ import copy import pickle import unittest + import numpy +from diffpy.structure import Atom, Lattice, Structure from diffpy.structure.tests.testutils import datafile -from diffpy.structure import Structure -from diffpy.structure import Lattice -from diffpy.structure import Atom # useful variables -cdsefile = datafile('CdSe_bulk.stru') -teifile = datafile('TeI.cif') -pbtefile = datafile('PbTe.cif') +cdsefile = datafile("CdSe_bulk.stru") +teifile = datafile("TeI.cif") +pbtefile = datafile("PbTe.cif") # ---------------------------------------------------------------------------- + class TestStructure(unittest.TestCase): """test methods of Structure class""" _loaded_structures = {} def setUp(self): - self.stru = Structure( [ Atom('C', [0,0,0]), Atom('C', [1,1,1]) ], - lattice=Lattice(1, 1, 1, 90, 90, 120) ) + self.stru = Structure([Atom("C", [0, 0, 0]), Atom("C", [1, 1, 1])], lattice=Lattice(1, 1, 1, 90, 90, 120)) if not self._loaded_structures: - self._loaded_structures.update([ - ('cdse', Structure(filename=cdsefile)), - ('tei', Structure(filename=teifile)), - ('pbte', Structure(filename=pbtefile)), - ]) + self._loaded_structures.update( + [ + ("cdse", Structure(filename=cdsefile)), + ("tei", Structure(filename=teifile)), + ("pbte", Structure(filename=pbtefile)), + ] + ) self.__dict__.update(self._loaded_structures) self.places = 12 return - def test___init__(self): - """check Structure.__init__() - """ - atoms = [Atom('C', [0, 0, 0]), Atom('C', [0.5, 0.5, 0.5])] + """check Structure.__init__()""" + atoms = [Atom("C", [0, 0, 0]), Atom("C", [0.5, 0.5, 0.5])] self.assertRaises(ValueError, Structure, atoms, filename=teifile) - self.assertRaises(ValueError, Structure, - lattice=Lattice(), filename=teifile) - self.assertRaises(ValueError, Structure, - title='test', filename=teifile) - stru1 = Structure(title='my title') - self.assertEqual('my title', stru1.title) + self.assertRaises(ValueError, Structure, lattice=Lattice(), filename=teifile) + self.assertRaises(ValueError, Structure, title="test", filename=teifile) + stru1 = Structure(title="my title") + self.assertEqual("my title", stru1.title) stru2a = Structure(atoms) stru2b = Structure(iter(atoms)) stru2c = Structure(a for a in atoms) @@ -72,168 +69,151 @@ def test___init__(self): self.assertEqual(s2a, str(stru2c)) return - def test_copy(self): - """check Structure.copy() - """ + """check Structure.copy()""" + class MyDerivedStructure(Structure): def __copy__(self): rv = MyDerivedStructure() Structure.__copy__(self, target=rv) return rv + pass + pbte = self.pbte pbte2 = pbte.copy() self.assertFalse(pbte2.lattice is pbte.lattice) self.assertTrue(numpy.array_equal(pbte.xyz_cartn, pbte2.xyz_cartn)) self.assertTrue(numpy.array_equal(pbte.U, pbte2.U)) stru = MyDerivedStructure() - stru += pbte2[pbte2.element.startswith('Pb')] + stru += pbte2[pbte2.element.startswith("Pb")] pb3 = stru.copy() self.assertTrue(isinstance(pb3, MyDerivedStructure)) - self.assertTrue(all(pb3.element == 'Pb2+')) + self.assertTrue(all(pb3.element == "Pb2+")) self.assertEqual(4, len(pb3)) return - def test___copy__(self): - """check Structure.__copy__() - """ + """check Structure.__copy__()""" cdse = Structure(filename=cdsefile) - cdse_str = cdse.writeStr('pdffit') + cdse_str = cdse.writeStr("pdffit") cdse2 = copy.copy(cdse) - self.assertEqual(cdse_str, cdse2.writeStr('pdffit')) + self.assertEqual(cdse_str, cdse2.writeStr("pdffit")) self.assertFalse(cdse.lattice is cdse2.lattice) sameatoms = set(cdse).intersection(cdse2) self.assertFalse(sameatoms) return -# def test___str__(self): -# """check Structure.__str__() -# """ -# return -# -# def test_addNewAtom(self): -# """check Structure.addNewAtom() -# """ -# return -# -# def test_getLastAtom(self): -# """check Structure.getLastAtom() -# """ -# return - + # def test___str__(self): + # """check Structure.__str__() + # """ + # return + # + # def test_addNewAtom(self): + # """check Structure.addNewAtom() + # """ + # return + # + # def test_getLastAtom(self): + # """check Structure.getLastAtom() + # """ + # return def test_assignUniqueLabels(self): - """check Structure.assignUniqueLabels() - """ - self.assertEqual('', ''.join([a.label for a in self.stru])) + """check Structure.assignUniqueLabels()""" + self.assertEqual("", "".join([a.label for a in self.stru])) self.stru.assignUniqueLabels() - self.assertEqual('C1', self.stru[0].label) - self.assertEqual('C2', self.stru[1].label) + self.assertEqual("C1", self.stru[0].label) + self.assertEqual("C2", self.stru[1].label) return - def test_distance(self): - """check Structure.distance() - """ + """check Structure.distance()""" from math import sqrt + self.stru.assignUniqueLabels() self.assertRaises(IndexError, self.stru.distance, 333, "C1") self.assertRaises(IndexError, self.stru.distance, "C", "C1") - self.assertAlmostEqual(sqrt(2.0), - self.stru.distance(0, 1), self.places) - self.assertAlmostEqual(sqrt(2.0), - self.stru.distance("C1", "C2"), self.places) + self.assertAlmostEqual(sqrt(2.0), self.stru.distance(0, 1), self.places) + self.assertAlmostEqual(sqrt(2.0), self.stru.distance("C1", "C2"), self.places) self.assertEqual(0, self.stru.distance(0, "C1")) return - def test_angle(self): - """check Structure.angle() - """ + """check Structure.angle()""" cdse = Structure(filename=cdsefile) cdse.assignUniqueLabels() self.assertEqual(109, round(cdse.angle(0, 2, 1))) self.assertEqual(109, round(cdse.angle("Cd1", "Se1", "Cd2"))) return - def test_placeInLattice(self): - """check Structure.placeInLattice() -- conversion of coordinates - """ + """check Structure.placeInLattice() -- conversion of coordinates""" stru = self.stru - new_lattice = Lattice(.5, .5, .5, 90, 90, 60) + new_lattice = Lattice(0.5, 0.5, 0.5, 90, 90, 60) stru.placeInLattice(new_lattice) a0 = stru[0] self.assertTrue(numpy.allclose(a0.xyz, [0.0, 0.0, 0.0])) a1 = stru[1] self.assertTrue(numpy.allclose(a1.xyz, [2.0, 0.0, 2.0])) -# def test_read(self): -# """check Structure.read() -# """ -# return -# -# def test_readStr(self): -# """check Structure.readStr() -# """ -# return -# -# def test_write(self): -# """check Structure.write() -# """ -# return -# -# def test_writeStr(self): -# """check Structure.writeStr() -# """ -# return + # def test_read(self): + # """check Structure.read() + # """ + # return + # + # def test_readStr(self): + # """check Structure.readStr() + # """ + # return + # + # def test_write(self): + # """check Structure.write() + # """ + # return + # + # def test_writeStr(self): + # """check Structure.writeStr() + # """ + # return def test_aslist(self): - """check Structure.tolist() - """ + """check Structure.tolist()""" lst = self.stru.tolist() self.assertEqual(tuple(lst), tuple(self.stru)) self.assertEqual(list, type(lst)) return - def test_append(self): - """check Structure.append() - """ + """check Structure.append()""" a = Atom("Si", (0.1, 0.2, 0.3)) lat = self.stru.lattice self.stru.append(a) alast = self.stru[-1] self.assertEqual(3, len(self.stru)) - self.assertEqual('Si', alast.element) + self.assertEqual("Si", alast.element) self.assertTrue(lat is alast.lattice) self.assertTrue(numpy.array_equal(a.xyz, alast.xyz)) self.assertFalse(a is alast) self.assertFalse(lat is a.lattice) return - def test_insert(self): - """check Structure.insert() - """ + """check Structure.insert()""" a = Atom("Si", (0.1, 0.2, 0.3)) lat = self.stru.lattice self.stru.insert(1, a) a1 = self.stru[1] self.assertEqual(3, len(self.stru)) - self.assertEqual('Si', a1.element) + self.assertEqual("Si", a1.element) self.assertTrue(lat is a1.lattice) self.assertTrue(numpy.array_equal(a.xyz, a1.xyz)) self.assertFalse(a is a1) self.assertFalse(lat is a.lattice) return - def test_extend(self): - """check Structure.extend() - """ + """check Structure.extend()""" stru = self.stru cdse = Structure(filename=cdsefile) lst = stru.tolist() @@ -244,99 +224,86 @@ def test_extend(self): self.assertFalse(stru[-1] is cdse[-1]) return - def test___getitem__(self): - """check Structure.__getitem__() - """ + """check Structure.__getitem__()""" stru = self.stru self.assertTrue(stru[0] is stru.tolist()[0]) intidx = list(range(len(stru)))[::-1] self.assertEqual(stru[intidx].tolist(), stru.tolist()[::-1]) - flagidx = (numpy.arange(len(stru)) > 0) + flagidx = numpy.arange(len(stru)) > 0 self.assertEqual(stru[flagidx].tolist(), stru.tolist()[1:]) cdse = Structure(self.cdse) self.assertEqual([cdse[0], cdse[-2]], cdse[0, -2].tolist()) cdse013 = cdse.tolist() cdse013.pop(2) - self.assertEqual(cdse013, cdse[:2,3].tolist()) - self.assertRaises(IndexError, cdse.__getitem__, 'Cd1') + self.assertEqual(cdse013, cdse[:2, 3].tolist()) + self.assertRaises(IndexError, cdse.__getitem__, "Cd1") cdse.assignUniqueLabels() - self.assertTrue(cdse[0] is cdse['Cd1']) - cdse[0].label = 'Hohenzollern' - self.assertRaises(IndexError, cdse.__getitem__, 'Cd1') - self.assertTrue(cdse[0] is cdse['Hohenzollern']) - self.assertEqual([cdse[0], cdse[3], cdse[1]], - cdse['Hohenzollern', 3:0:-2].tolist()) - stru.label = ['A', 'B'] - self.assertTrue(stru[0] is stru['A']) - self.assertTrue(stru[1] is stru['B']) - stru[1].label = 'A' - self.assertRaises(IndexError, stru.__getitem__, 'A') + self.assertTrue(cdse[0] is cdse["Cd1"]) + cdse[0].label = "Hohenzollern" + self.assertRaises(IndexError, cdse.__getitem__, "Cd1") + self.assertTrue(cdse[0] is cdse["Hohenzollern"]) + self.assertEqual([cdse[0], cdse[3], cdse[1]], cdse["Hohenzollern", 3:0:-2].tolist()) + stru.label = ["A", "B"] + self.assertTrue(stru[0] is stru["A"]) + self.assertTrue(stru[1] is stru["B"]) + stru[1].label = "A" + self.assertRaises(IndexError, stru.__getitem__, "A") return - def test___getitem__slice(self): - """check Structure.__getitem__() with a slice argument - """ + """check Structure.__getitem__() with a slice argument""" stru = self.stru self.assertEqual([stru[0]], stru[:1].tolist()) self.assertEqual([stru[1], stru[0]], stru[::-1].tolist()) return - def test___setitem__(self): - """check Structure.__setitem__() - """ + """check Structure.__setitem__()""" a = Atom("Si", (0.1, 0.2, 0.3)) lat = self.stru.lattice self.stru[1] = a a1 = self.stru[1] self.assertEqual(2, len(self.stru)) - self.assertEqual('Si', a1.element) + self.assertEqual("Si", a1.element) self.assertTrue(lat is a1.lattice) self.assertTrue(numpy.array_equal(a.xyz, a1.xyz)) self.assertFalse(a is a1) self.assertFalse(lat is a.lattice) return - def test___setitem__slice(self): - """check Structure.__setitem__() with a slice argument - """ + """check Structure.__setitem__() with a slice argument""" a = Atom("Si", (0.1, 0.2, 0.3)) lat = self.stru.lattice self.stru[:] = [a] a0 = self.stru[0] self.assertEqual(1, len(self.stru)) - self.assertEqual('Si', a0.element) + self.assertEqual("Si", a0.element) self.assertTrue(lat is a0.lattice) self.assertTrue(numpy.array_equal(a.xyz, a0.xyz)) self.assertFalse(a is a0) self.assertFalse(lat is a.lattice) return - def test___add__(self): - """check Structure.__add__() - """ + """check Structure.__add__()""" stru = self.stru cdse = Structure(filename=cdsefile) total = stru + cdse self.assertEqual(6, len(total)) ta0 = total[0] tam1 = total[-1] - self.assertEqual('C', ta0.element) + self.assertEqual("C", ta0.element) self.assertTrue(numpy.array_equal(stru[0].xyz, ta0.xyz)) - self.assertEqual('Se', tam1.element) + self.assertEqual("Se", tam1.element) self.assertTrue(numpy.array_equal(cdse[-1].xyz, tam1.xyz)) self.assertFalse(total.lattice in (stru.lattice, cdse.lattice)) self.assertTrue(all([a.lattice is total.lattice for a in total])) return - def test___iadd__(self): - """check Structure.__iadd__() - """ + """check Structure.__iadd__()""" stru = self.stru lat0 = stru.lattice lst = stru.tolist() @@ -345,65 +312,55 @@ def test___iadd__(self): self.assertEqual(6, len(stru)) self.assertEqual(lst, stru[:2].tolist()) am1 = stru[-1] - self.assertEqual('Se', am1.element) + self.assertEqual("Se", am1.element) self.assertTrue(numpy.array_equal(cdse[-1].xyz, am1.xyz)) self.assertTrue(lat0 is stru.lattice) self.assertFalse(stru.lattice is cdse.lattice) self.assertTrue(all([a.lattice is stru.lattice for a in stru])) return - def test___sub__(self): - """check Structure.__sub__() - """ + """check Structure.__sub__()""" cdse = Structure(filename=cdsefile) cadmiums = cdse - cdse[2:] self.assertEqual(2, len(cadmiums)) - self.assertEqual('Cd', cadmiums[0].element) - self.assertEqual('Cd', cadmiums[1].element) + self.assertEqual("Cd", cadmiums[0].element) + self.assertEqual("Cd", cadmiums[1].element) self.assertTrue(numpy.array_equal(cdse[0].xyz, cadmiums[0].xyz)) self.assertTrue(numpy.array_equal(cdse[1].xyz, cadmiums[1].xyz)) self.assertFalse(cdse[0] is cadmiums[0]) self.assertFalse(cdse.lattice is cadmiums.lattice) return - def test___isub__(self): - """check Structure.__isub__() - """ + """check Structure.__isub__()""" cdse = Structure(filename=cdsefile) lat = cdse.lattice lst = cdse.tolist() cdse -= cdse[2:] self.assertEqual(2, len(cdse)) self.assertEqual(4, len(lst)) - self.assertEqual('Cd', cdse[0].element) - self.assertEqual('Cd', cdse[1].element) + self.assertEqual("Cd", cdse[0].element) + self.assertEqual("Cd", cdse[1].element) self.assertEqual(lat, cdse.lattice) self.assertEqual(lst[:2], cdse.tolist()) return - def test___mul__(self): - """check Structure.__mul__() - """ + """check Structure.__mul__()""" cdse = Structure(filename=cdsefile) self.assertEqual(12, len(set(3 * cdse))) self.assertEqual(12, len(set(cdse * 3))) cdsex3 = 3 * cdse self.assertEqual(12, len(cdsex3)) - self.assertEqual(3 * 'Cd Cd Se Se'.split(), - [a.element for a in cdsex3]) - self.assertTrue(numpy.array_equal(3 * [a.xyz for a in cdse], - [a.xyz for a in cdsex3])) + self.assertEqual(3 * "Cd Cd Se Se".split(), [a.element for a in cdsex3]) + self.assertTrue(numpy.array_equal(3 * [a.xyz for a in cdse], [a.xyz for a in cdsex3])) self.assertFalse(set(cdse).intersection(cdsex3)) self.assertFalse(cdse.lattice is cdsex3.lattice) return - def test___imul__(self): - """check Structure.__imul__() - """ + """check Structure.__imul__()""" cdse = Structure(filename=cdsefile) lat = cdse.lattice els = cdse.element @@ -420,10 +377,8 @@ def test___imul__(self): self.assertEqual(0, len(self.stru)) return - def test__get_lattice(self): - """check Structure._get_lattice() - """ + """check Structure._get_lattice()""" lat = Lattice() stru = Structure() self.assertEqual((1, 1, 1, 90, 90, 90), stru.lattice.abcABG()) @@ -431,43 +386,35 @@ def test__get_lattice(self): self.assertTrue(lat is stru2.lattice) return - def test__set_lattice(self): - """check Structure._set_lattice() - """ + """check Structure._set_lattice()""" lat = Lattice() self.stru.lattice = lat self.assertEqual(2 * [lat], [a.lattice for a in self.stru]) return - def test_composition(self): - """check Structure.composition property - """ + """check Structure.composition property""" stru = self.stru - self.assertEqual({'C' : 2}, stru.composition) + self.assertEqual({"C": 2}, stru.composition) stru *= 2 - self.assertEqual({'C' : 4}, stru.composition) + self.assertEqual({"C": 4}, stru.composition) stru[:] = [] self.assertEqual({}, stru.composition) return - def test_element(self): - """check Structure.element - """ + """check Structure.element""" stru = self.stru cdse = self.cdse - self.assertEqual('Cd Cd Se Se'.split(), cdse.element.tolist()) - self.assertEqual(cdse[:2], cdse[cdse.element == 'Cd']) - stru.element = stru.element.replace('C', 'Si') - self.assertEqual('Si', stru[0].element) + self.assertEqual("Cd Cd Se Se".split(), cdse.element.tolist()) + self.assertEqual(cdse[:2], cdse[cdse.element == "Cd"]) + stru.element = stru.element.replace("C", "Si") + self.assertEqual("Si", stru[0].element) return - def test_xyz(self): - """check Structure.xyz - """ + """check Structure.xyz""" stru = self.stru self.assertEqual((2, 3), stru.xyz.shape) self.assertTrue(numpy.array_equal([1, 1, 1], stru.xyz[1])) @@ -484,10 +431,8 @@ def test_xyz(self): self.assertTrue(numpy.array_equal(xyz0, stru.xyz)) return - def test_x(self): - """check Structure.x - """ + """check Structure.x""" cdse = self.cdse self.assertEqual((4,), cdse.x.shape) self.assertAlmostEqual(0.6666, cdse.x[3], 5) @@ -497,10 +442,8 @@ def test_x(self): self.assertEqual(4, stru[1].xyz[0]) return - def test_y(self): - """check Structure.y - """ + """check Structure.y""" cdse = self.cdse self.assertEqual((4,), cdse.y.shape) self.assertAlmostEqual(0.3333, cdse.y[3], 5) @@ -510,10 +453,8 @@ def test_y(self): self.assertEqual(4, stru[1].xyz[1]) return - def test_z(self): - """check Structure.z - """ + """check Structure.z""" cdse = self.cdse self.assertEqual((4,), cdse.z.shape) self.assertAlmostEqual(0.87667, cdse.z[3], 5) @@ -523,22 +464,18 @@ def test_z(self): self.assertEqual(4, stru[1].xyz[2]) return - def test_label(self): - """check Structure.label - """ + """check Structure.label""" cdse = Structure(filename=cdsefile) - self.assertEqual(4 * [''], cdse.label.tolist()) + self.assertEqual(4 * [""], cdse.label.tolist()) cdse.assignUniqueLabels() - self.assertEqual('Cd1 Cd2 Se1 Se2'.split(), cdse.label.tolist()) + self.assertEqual("Cd1 Cd2 Se1 Se2".split(), cdse.label.tolist()) cdse.label = cdse.label.lower() - self.assertEqual('cd1 cd2 se1 se2'.split(), cdse.label.tolist()) + self.assertEqual("cd1 cd2 se1 se2".split(), cdse.label.tolist()) return - def test_occupancy(self): - """check Structure.occupancy - """ + """check Structure.occupancy""" cdse = self.cdse self.assertTrue(numpy.array_equal(numpy.ones(4), cdse.occupancy)) self.stru.occupancy *= 0.5 @@ -547,23 +484,18 @@ def test_occupancy(self): self.assertTrue(all(isinstance(a.occupancy, int) for a in cdse)) return - def test_xyz_cartn(self): - """check Structure.xyz_cartn - """ + """check Structure.xyz_cartn""" pbte = copy.copy(self.pbte) self.assertEqual((8, 3), pbte.xyz_cartn.shape) - self.assertTrue(numpy.allclose(6.461 / 2.0 * numpy.ones(3), - pbte.xyz_cartn[0])) + self.assertTrue(numpy.allclose(6.461 / 2.0 * numpy.ones(3), pbte.xyz_cartn[0])) pbte.xyz_cartn += numpy.array([0.1, 0.2, 0.3]) * 6.461 self.assertTrue(numpy.allclose([0.6, 0.7, 0.8], pbte[0].xyz)) self.assertTrue(numpy.allclose([0.6, 0.7, 0.3], pbte[7].xyz)) return - def test_anisotropy(self): - """check Structure.anisotropy - """ + """check Structure.anisotropy""" self.assertEqual((2,), self.stru.anisotropy.shape) self.assertFalse(numpy.any(self.stru.anisotropy)) tei = copy.copy(self.tei) @@ -574,16 +506,13 @@ def test_anisotropy(self): self.assertAlmostEqual(0.019227, tei[0].U22, 6) self.assertAlmostEqual(0.019227, tei[0].U33, 6) self.assertAlmostEqual(0.0, tei[0].U12, 6) - self.assertAlmostEqual(0.019227 * -numpy.cos(numpy.radians(128.09)), - tei[0].U13, 6) + self.assertAlmostEqual(0.019227 * -numpy.cos(numpy.radians(128.09)), tei[0].U13, 6) self.assertAlmostEqual(0.0, tei[0].U23, 6) self.assertAlmostEqual(0.019227, tei[0].Uisoequiv, 6) return - def test_U(self): - """check Structure.U - """ + """check Structure.U""" stru = self.stru self.assertEqual((2, 3, 3), stru.U.shape) self.assertFalse(numpy.any(stru.anisotropy)) @@ -604,10 +533,8 @@ def test_U(self): self.assertTrue(numpy.all(stru[1].U == 1.0)) return - def test_Uisoequiv(self): - """check Structure.Uisoequiv - """ + """check Structure.Uisoequiv""" tei = copy.copy(self.tei) self.assertEqual((16,), tei.Uisoequiv.shape) self.assertAlmostEqual(0.019227, tei.Uisoequiv[0], 6) @@ -616,13 +543,11 @@ def test_Uisoequiv(self): self.assertAlmostEqual(0.026878, tei.Uisoequiv[12], 6) u11old = tei[0].U11 tei.Uisoequiv = 0.001 - self.assertAlmostEqual(u11old * 0.001/0.019227, tei[0].U[0,0]) + self.assertAlmostEqual(u11old * 0.001 / 0.019227, tei[0].U[0, 0]) return - def test_Uij(self): - """check Structure.Uij - """ + """check Structure.Uij""" stru = self.stru stru[1].anisotropy = True stru[1].U = [[1.1, 0.12, 0.13], [0.12, 2.2, 0.23], [0.13, 0.23, 3.3]] @@ -636,10 +561,8 @@ def test_Uij(self): self.assertFalse(numpy.any(stru.U != 0.0)) return - def test_Bisoequiv(self): - """check Structure.Bisoequiv - """ + """check Structure.Bisoequiv""" utob = 8 * numpy.pi**2 tei = copy.copy(self.tei) self.assertEqual((16,), tei.Bisoequiv.shape) @@ -649,13 +572,11 @@ def test_Bisoequiv(self): self.assertAlmostEqual(utob * 0.026878, tei.Bisoequiv[12], 4) b11old = tei[0].B11 tei.Bisoequiv = 0.1 - self.assertAlmostEqual(b11old * 0.1/(utob * 0.019227), tei[0].B11, 5) + self.assertAlmostEqual(b11old * 0.1 / (utob * 0.019227), tei[0].B11, 5) return - def test_Bij(self): - """check Structure.Bij - """ + """check Structure.Bij""" stru = self.stru stru[1].anisotropy = True stru[1].U = [[1.1, 0.12, 0.13], [0.12, 2.2, 0.23], [0.13, 0.23, 3.3]] @@ -670,10 +591,8 @@ def test_Bij(self): self.assertFalse(numpy.any(stru.U != 0.0)) return - def test_pickling(self): - """Make sure Atom in Structure can be consistently pickled. - """ + """Make sure Atom in Structure can be consistently pickled.""" stru = self.stru a = stru[0] self.assertTrue(a is stru[0]) @@ -681,9 +600,10 @@ def test_pickling(self): self.assertTrue(a1 is stru1[0]) return + # End of class TestStructure # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testsupercell.py b/src/diffpy/structure/tests/testsupercell.py index 52a563e2..2ca5d72e 100644 --- a/src/diffpy/structure/tests/testsupercell.py +++ b/src/diffpy/structure/tests/testsupercell.py @@ -19,18 +19,18 @@ import unittest -from diffpy.structure.tests.testutils import datafile from diffpy.structure import Structure from diffpy.structure.expansion import supercell +from diffpy.structure.tests.testutils import datafile # ---------------------------------------------------------------------------- + class TestSuperCell(unittest.TestCase): stru_cdse = None stru_ni = None - def setUp(self): # load test structures once if TestSuperCell.stru_cdse is None: @@ -44,54 +44,45 @@ def setUp(self): self.stru_ni = TestSuperCell.stru_ni return - def tearDown(self): return - def test_exceptions(self): - """check argument checking of supercell. - """ - self.assertRaises(ValueError, - supercell, self.stru_ni, (0, 1, 1)) - self.assertRaises(ValueError, - supercell, self.stru_ni, (0, 1)) - self.assertRaises(TypeError, - supercell, list(self.stru_ni), (1, 1, 1)) + """check argument checking of supercell.""" + self.assertRaises(ValueError, supercell, self.stru_ni, (0, 1, 1)) + self.assertRaises(ValueError, supercell, self.stru_ni, (0, 1)) + self.assertRaises(TypeError, supercell, list(self.stru_ni), (1, 1, 1)) return - def test_ni_supercell(self): - """check supercell expansion for Ni. - """ + """check supercell expansion for Ni.""" ni_123 = supercell(self.stru_ni, (1, 2, 3)) - self.assertEqual(6*len(self.stru_ni), len(ni_123)) + self.assertEqual(6 * len(self.stru_ni), len(ni_123)) a, b, c = self.stru_ni.lattice.abcABG()[:3] a1, b2, c3 = ni_123.lattice.abcABG()[:3] self.assertAlmostEqual(a, a1, 8) - self.assertAlmostEqual(b*2, b2, 8) - self.assertAlmostEqual(c*3, c3, 8) + self.assertAlmostEqual(b * 2, b2, 8) + self.assertAlmostEqual(c * 3, c3, 8) x, y, z = self.stru_ni[-1].xyz - x1, y2, z3 = ni_123[-1*2*3].xyz - self.assertAlmostEqual(x/1, x1, 8) - self.assertAlmostEqual(y/2, y2, 8) - self.assertAlmostEqual(z/3, z3, 8) + x1, y2, z3 = ni_123[-1 * 2 * 3].xyz + self.assertAlmostEqual(x / 1, x1, 8) + self.assertAlmostEqual(y / 2, y2, 8) + self.assertAlmostEqual(z / 3, z3, 8) return - def test_cdse_supercell(self): - """check supercell expansion for CdSe. - """ + """check supercell expansion for CdSe.""" cdse_222 = supercell(self.stru_cdse, (2, 2, 2)) # new atoms should be grouped together - elems = sum([8*[a.element] for a in self.stru_cdse], []) + elems = sum([8 * [a.element] for a in self.stru_cdse], []) elems_222 = [a.element for a in cdse_222] self.assertEqual(elems, elems_222) return + # End of class TestRoutines # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testsymmetryutilities.py b/src/diffpy/structure/tests/testsymmetryutilities.py index d607ed97..cbbe57a6 100644 --- a/src/diffpy/structure/tests/testsymmetryutilities.py +++ b/src/diffpy/structure/tests/testsymmetryutilities.py @@ -16,19 +16,27 @@ """Unit tests for SymmetryUtilities.py """ -import sys import re +import sys import unittest + import numpy from diffpy.structure.spacegroups import GetSpaceGroup -from diffpy.structure.symmetryutilities import (isSpaceGroupLatPar, - expandPosition, pruneFormulaDictionary, isconstantFormula, - GeneratorSite, ExpandAsymmetricUnit, SymmetryConstraints) -from diffpy.structure.symmetryutilities import _Position2Tuple +from diffpy.structure.symmetryutilities import ( + ExpandAsymmetricUnit, + GeneratorSite, + SymmetryConstraints, + _Position2Tuple, + expandPosition, + isconstantFormula, + isSpaceGroupLatPar, + pruneFormulaDictionary, +) # ---------------------------------------------------------------------------- + class TestRoutines(unittest.TestCase): def setUp(self): @@ -38,8 +46,7 @@ def tearDown(self): return def test_isSpaceGroupLatPar(self): - """check isSpaceGroupLatPar() - """ + """check isSpaceGroupLatPar()""" triclinic = GetSpaceGroup("P1") monoclinic = GetSpaceGroup("P2") orthorhombic = GetSpaceGroup("P222") @@ -63,18 +70,16 @@ def test_isSpaceGroupLatPar(self): return def test_sgtbx_spacegroup_aliases(self): - """check GetSpaceGroup for non-standard aliases from sgtbx. - """ - self.assertIs(GetSpaceGroup('Fm3m'), GetSpaceGroup(225)) - self.assertIs(GetSpaceGroup('Ia3d'), GetSpaceGroup('I a -3 d')) + """check GetSpaceGroup for non-standard aliases from sgtbx.""" + self.assertIs(GetSpaceGroup("Fm3m"), GetSpaceGroup(225)) + self.assertIs(GetSpaceGroup("Ia3d"), GetSpaceGroup("I a -3 d")) return def test_expandPosition(self): - """check expandPosition() - """ + """check expandPosition()""" # ok again Ni example fcc = GetSpaceGroup(225) - pos,pops,pmult = expandPosition(fcc, [0,0,0]) + pos, pops, pmult = expandPosition(fcc, [0, 0, 0]) self.assertTrue(numpy.all(pos[0] == 0.0)) self.assertEqual(4, len(pos)) self.assertEqual(192, sum([len(l) for l in pops])) @@ -82,27 +87,27 @@ def test_expandPosition(self): return def test_pruneFormulaDictionary(self): - """check pruneFormulaDictionary() - """ - fmdict = {"x" : "3*y-0.17", "y" : '0', "z" : "0.13"} + """check pruneFormulaDictionary()""" + fmdict = {"x": "3*y-0.17", "y": "0", "z": "0.13"} pruned = pruneFormulaDictionary(fmdict) - self.assertEqual({"x" : "3*y-0.17"}, pruned) + self.assertEqual({"x": "3*y-0.17"}, pruned) return def test_isconstantFormula(self): - """check isconstantFormula() - """ - self.assertFalse(isconstantFormula('x-y+z')) - self.assertTrue(isconstantFormula('6.023e23')) - self.assertTrue(isconstantFormula('22/7')) - self.assertTrue(isconstantFormula('- 22/7')) - self.assertTrue(isconstantFormula('+13/ 9')) + """check isconstantFormula()""" + self.assertFalse(isconstantFormula("x-y+z")) + self.assertTrue(isconstantFormula("6.023e23")) + self.assertTrue(isconstantFormula("22/7")) + self.assertTrue(isconstantFormula("- 22/7")) + self.assertTrue(isconstantFormula("+13/ 9")) return + # End of class TestRoutines # ---------------------------------------------------------------------------- + class Test_Position2Tuple(unittest.TestCase): def setUp(self): @@ -115,29 +120,29 @@ def tearDown(self): return def test___init__(self): - """check _Position2Tuple.__init__() - """ + """check _Position2Tuple.__init__()""" self.assertNotEqual(0.0, self.pos2tuple.eps) - self.pos2tuple = _Position2Tuple(1.0/sys.maxsize/2) + self.pos2tuple = _Position2Tuple(1.0 / sys.maxsize / 2) self.assertEqual(0.0, self.pos2tuple.eps) return def test___call__(self): - """check _Position2Tuple.__call__() - """ + """check _Position2Tuple.__call__()""" pos2tuple = self.pos2tuple - positions = numpy.zeros((100,3), dtype=float) - positions[:,0] = numpy.arange(100)/100.0*pos2tuple.eps + 0.1 + positions = numpy.zeros((100, 3), dtype=float) + positions[:, 0] = numpy.arange(100) / 100.0 * pos2tuple.eps + 0.1 positions = positions - numpy.floor(positions) # pos2tuple should generate at most 2 distinct tuples alltuples = dict.fromkeys([pos2tuple(xyz) for xyz in positions]) self.assertFalse(len(alltuples) > 2) return + # End of class Test_Position2Tuple # ---------------------------------------------------------------------------- + class TestGeneratorSite(unittest.TestCase): generators = {} @@ -151,15 +156,15 @@ def setUp(self): sg117 = GetSpaceGroup(117) sg143 = GetSpaceGroup(143) sg164 = GetSpaceGroup(164) - sg167h = GetSpaceGroup('H-3c') - sg167r = GetSpaceGroup('R-3c') + sg167h = GetSpaceGroup("H-3c") + sg167r = GetSpaceGroup("R-3c") sg186 = GetSpaceGroup(186) sg227 = GetSpaceGroup(227) g117c = GeneratorSite(sg117, [0, 0.5, 0]) - g117h = GeneratorSite(sg117, [x, x+0.5, 0.5]) + g117h = GeneratorSite(sg117, [x, x + 0.5, 0.5]) g143a = GeneratorSite(sg143, [0, 0, z]) - g143b = GeneratorSite(sg143, [1./3, 2./3, z]) - g143c = GeneratorSite(sg143, [2./3, 1./3, z]) + g143b = GeneratorSite(sg143, [1.0 / 3, 2.0 / 3, z]) + g143c = GeneratorSite(sg143, [2.0 / 3, 1.0 / 3, z]) g143d = GeneratorSite(sg143, [x, y, z]) g164e = GeneratorSite(sg164, (0.5, 0, 0)) g164f = GeneratorSite(sg164, (0.5, 0, 0.5)) @@ -169,19 +174,27 @@ def setUp(self): gr167e = GeneratorSite(sg167r, (0.1, 0.4, 0.25)) g186c = GeneratorSite(sg186, (0.1695, 1.0 - 0.1695, 0.6365)) g227a = GeneratorSite(sg227, [0, 0, 0]) - g227c = GeneratorSite(sg227, 3*[1./8]) - g227oa = GeneratorSite(sg227, 3*[1./8], sgoffset=3*[1./8]) - g227oc = GeneratorSite(sg227, [0, 0, 0], sgoffset=3*[1./8]) + g227c = GeneratorSite(sg227, 3 * [1.0 / 8]) + g227oa = GeneratorSite(sg227, 3 * [1.0 / 8], sgoffset=3 * [1.0 / 8]) + g227oc = GeneratorSite(sg227, [0, 0, 0], sgoffset=3 * [1.0 / 8]) TestGeneratorSite.generators = { - 'g117c' : g117c, 'g117h' : g117h, - 'g143a' : g143a, 'g143b' : g143b, - 'g143c' : g143c, 'g143d' : g143d, - 'g164e' : g164e, 'g164f' : g164f, - 'g164g' : g164g, 'g164h' : g164h, - 'gh167e' : gh167e, 'gr167e' : gr167e, - 'g186c' : g186c, - 'g227a' : g227a, 'g227c' : g227c, - 'g227oa' : g227oa, 'g227oc' : g227oc + "g117c": g117c, + "g117h": g117h, + "g143a": g143a, + "g143b": g143b, + "g143c": g143c, + "g143d": g143d, + "g164e": g164e, + "g164f": g164f, + "g164g": g164g, + "g164h": g164h, + "gh167e": gh167e, + "gr167e": gr167e, + "g186c": g186c, + "g227a": g227a, + "g227c": g227c, + "g227oa": g227oa, + "g227oc": g227oc, } self.__dict__.update(TestGeneratorSite.generators) return @@ -190,39 +203,35 @@ def tearDown(self): return def test___init__(self): - """check GeneratorSite.__init__() - """ + """check GeneratorSite.__init__()""" # check multiplicities - self.assertEqual(2, self.g117c.multiplicity) - self.assertEqual(4, self.g117h.multiplicity) - self.assertEqual(1, self.g143a.multiplicity) - self.assertEqual(1, self.g143b.multiplicity) - self.assertEqual(1, self.g143c.multiplicity) - self.assertEqual(3, self.g143d.multiplicity) - self.assertEqual(3, self.g164e.multiplicity) - self.assertEqual(3, self.g164f.multiplicity) - self.assertEqual(6, self.g164g.multiplicity) - self.assertEqual(6, self.g164h.multiplicity) - self.assertEqual(18, self.gh167e.multiplicity) - self.assertEqual(6, self.gr167e.multiplicity) - self.assertEqual(8, self.g227a.multiplicity) + self.assertEqual(2, self.g117c.multiplicity) + self.assertEqual(4, self.g117h.multiplicity) + self.assertEqual(1, self.g143a.multiplicity) + self.assertEqual(1, self.g143b.multiplicity) + self.assertEqual(1, self.g143c.multiplicity) + self.assertEqual(3, self.g143d.multiplicity) + self.assertEqual(3, self.g164e.multiplicity) + self.assertEqual(3, self.g164f.multiplicity) + self.assertEqual(6, self.g164g.multiplicity) + self.assertEqual(6, self.g164h.multiplicity) + self.assertEqual(18, self.gh167e.multiplicity) + self.assertEqual(6, self.gr167e.multiplicity) + self.assertEqual(8, self.g227a.multiplicity) self.assertEqual(16, self.g227c.multiplicity) - self.assertEqual(8, self.g227oa.multiplicity) + self.assertEqual(8, self.g227oa.multiplicity) self.assertEqual(16, self.g227oc.multiplicity) return - def test_signedRatStr(self): "check GeneratorSite.signedRatStr()" g = self.g117c - self.assertEqual('-1', g.signedRatStr(-1.00000000000002)) - self.assertEqual('+1', g.signedRatStr(1.00000000000002)) + self.assertEqual("-1", g.signedRatStr(-1.00000000000002)) + self.assertEqual("+1", g.signedRatStr(1.00000000000002)) return - def test_positionFormula(self): - """check GeneratorSite.positionFormula() - """ + """check GeneratorSite.positionFormula()""" # 117c self.assertEqual([], self.g117c.pparameters) self.assertEqual([("x", self.x)], self.g117h.pparameters) @@ -233,9 +242,9 @@ def test_positionFormula(self): self.assertEqual("z", pfm143c["z"]) # 143d x, y, z = self.x, self.y, self.z - pfm143d = self.g143d.positionFormula([-x+y, -x, z]) - self.assertEqual("-x+y", pfm143d["x"].replace(' ','')) - self.assertEqual("-x+1", pfm143d["y"].replace(' ','')) + pfm143d = self.g143d.positionFormula([-x + y, -x, z]) + self.assertEqual("-x+y", pfm143d["x"].replace(" ", "")) + self.assertEqual("-x+1", pfm143d["y"].replace(" ", "")) self.assertTrue(re.match("[+]?z", pfm143d["z"].strip())) # 227a self.assertEqual([], self.g227a.pparameters) @@ -245,41 +254,30 @@ def test_positionFormula(self): self.assertEqual([], self.g227oc.pparameters) return - def test_positionFormula_sg209(self): "check positionFormula at [x, 1-x, -x] site of the F432 space group." - sg209 = GetSpaceGroup('F 4 3 2') + sg209 = GetSpaceGroup("F 4 3 2") xyz = [0.05198, 0.94802, -0.05198] g209e = GeneratorSite(sg209, xyz) pfm = g209e.positionFormula(xyz) - self.assertEqual('x', pfm['x']) - self.assertEqual('-x+1', pfm['y'].replace(' ', '')) - self.assertEqual('-x+1', pfm['z'].replace(' ', '')) + self.assertEqual("x", pfm["x"]) + self.assertEqual("-x+1", pfm["y"].replace(" ", "")) + self.assertEqual("-x+1", pfm["z"].replace(" ", "")) return - def test_UFormula(self): - """check GeneratorSite.UFormula() - """ + """check GeneratorSite.UFormula()""" # Ref: Willis and Pryor, Thermal Vibrations in Crystallography, # Cambridge University Press 1975, p. 104-110 - smbl = ('A', 'B', 'C', 'D', 'E', 'F') - norule = { 'U11':'A', 'U22':'B', 'U33':'C', - 'U12':'D', 'U13':'E', 'U23':'F' } - rule05 = { 'U11':'A', 'U22':'A', 'U33':'C', - 'U12':'D', 'U13':'0', 'U23':'0' } - rule06 = { 'U11':'A', 'U22':'A', 'U33':'C', - 'U12':'D', 'U13':'E', 'U23':'E' } - rule07 = { 'U11':'A', 'U22':'A', 'U33':'C', - 'U12':'D', 'U13':'E', 'U23':'-E' } - rule15 = { 'U11':'A', 'U22':'B', 'U33':'C', - 'U12':'0.5*B', 'U13':'0.5*F', 'U23':'F' } - rule16 = { 'U11':'A', 'U22':'A', 'U33':'C', - 'U12':'0.5*A', 'U13':'0', 'U23':'0' } - rule17 = { 'U11':'A', 'U22':'A', 'U33':'A', - 'U12':'0', 'U13':'0', 'U23':'0' } - rule18 = { 'U11':'A', 'U22':'A', 'U33':'A', - 'U12':'D', 'U13':'D', 'U23':'D' } + smbl = ("A", "B", "C", "D", "E", "F") + norule = {"U11": "A", "U22": "B", "U33": "C", "U12": "D", "U13": "E", "U23": "F"} + rule05 = {"U11": "A", "U22": "A", "U33": "C", "U12": "D", "U13": "0", "U23": "0"} + rule06 = {"U11": "A", "U22": "A", "U33": "C", "U12": "D", "U13": "E", "U23": "E"} + rule07 = {"U11": "A", "U22": "A", "U33": "C", "U12": "D", "U13": "E", "U23": "-E"} + rule15 = {"U11": "A", "U22": "B", "U33": "C", "U12": "0.5*B", "U13": "0.5*F", "U23": "F"} + rule16 = {"U11": "A", "U22": "A", "U33": "C", "U12": "0.5*A", "U13": "0", "U23": "0"} + rule17 = {"U11": "A", "U22": "A", "U33": "A", "U12": "0", "U13": "0", "U23": "0"} + rule18 = {"U11": "A", "U22": "A", "U33": "A", "U12": "D", "U13": "D", "U23": "D"} ufm = self.g117c.UFormula(self.g117c.xyz, smbl) self.assertEqual(rule05, ufm) ufm = self.g117h.UFormula(self.g117h.xyz, smbl) @@ -317,61 +315,47 @@ def test_UFormula(self): self.assertEqual(rule06, ufm) return - def test_UFormula_g186c_eqxyz(self): - '''Check rotated U formulas at the symmetry positions of c-site in 186. - ''' + """Check rotated U formulas at the symmetry positions of c-site in 186.""" sg186 = GetSpaceGroup(186) crules = [ - {'U11': 'A', 'U22': 'A', 'U33': 'C', - 'U12': 'D', 'U13': 'E', 'U23': '-E'}, - {'U11': 'A', 'U22': '2*A-2*D', 'U33': 'C', - 'U12': 'A-D', 'U13': 'E', 'U23': '2*E'}, - {'U11': '2*A-2*D', 'U22': 'A', 'U33': 'C', - 'U12': 'A-D', 'U13': '-2*E', 'U23': '-E'}, - {'U11': 'A', 'U22': 'A', 'U33': 'C', - 'U12': 'D', 'U13': '-E', 'U23': 'E'}, - {'U11': 'A', 'U22': '2*A-2*D', 'U33': 'C', - 'U12': 'A-D', 'U13': '-E', 'U23': '-2*E'}, - {'U11': '2*A-2*D', 'U22': 'A', 'U33': 'C', - 'U12': 'A-D', 'U13': '2*E', 'U23': 'E'}, - ] + {"U11": "A", "U22": "A", "U33": "C", "U12": "D", "U13": "E", "U23": "-E"}, + {"U11": "A", "U22": "2*A-2*D", "U33": "C", "U12": "A-D", "U13": "E", "U23": "2*E"}, + {"U11": "2*A-2*D", "U22": "A", "U33": "C", "U12": "A-D", "U13": "-2*E", "U23": "-E"}, + {"U11": "A", "U22": "A", "U33": "C", "U12": "D", "U13": "-E", "U23": "E"}, + {"U11": "A", "U22": "2*A-2*D", "U33": "C", "U12": "A-D", "U13": "-E", "U23": "-2*E"}, + {"U11": "2*A-2*D", "U22": "A", "U33": "C", "U12": "A-D", "U13": "2*E", "U23": "E"}, + ] self.assertEqual(6, len(self.g186c.eqxyz)) gc = self.g186c for idx in range(6): - self.assertEqual(crules[idx], gc.UFormula(gc.eqxyz[idx], 'ABCDEF')) + self.assertEqual(crules[idx], gc.UFormula(gc.eqxyz[idx], "ABCDEF")) uiso = numpy.array([[2, 1, 0], [1, 2, 0], [0, 0, 2]]) eau = ExpandAsymmetricUnit(sg186, [gc.xyz], [uiso]) for u in eau.expandedUijs: du = numpy.linalg.norm((uiso - u).flatten()) self.assertAlmostEqual(0.0, du, 8) - symcon = SymmetryConstraints(sg186, sum(eau.expandedpos, []), - sum(eau.expandedUijs, [])) + symcon = SymmetryConstraints(sg186, sum(eau.expandedpos, []), sum(eau.expandedUijs, [])) upd = dict(symcon.Upars) - self.assertEqual(2.0, upd['U110']) - self.assertEqual(2.0, upd['U330']) - self.assertEqual(1.0, upd['U120']) - self.assertEqual(0.0, upd['U130']) - uisod = {'U11' : 2.0, 'U22' : 2.0, 'U33' : 2.0, - 'U12' : 1.0, 'U13' : 0.0, 'U23' : 0.0} + self.assertEqual(2.0, upd["U110"]) + self.assertEqual(2.0, upd["U330"]) + self.assertEqual(1.0, upd["U120"]) + self.assertEqual(0.0, upd["U130"]) + uisod = {"U11": 2.0, "U22": 2.0, "U33": 2.0, "U12": 1.0, "U13": 0.0, "U23": 0.0} for ufms in symcon.UFormulas(): for n, fm in ufms.items(): self.assertEqual(uisod[n], eval(fm, upd)) return - def test_UFormula_self_reference(self): "Ensure U formulas have no self reference such as U13=0.5*U13." for g in self.generators.values(): - badformulas = [(n, fm) for n, fm in g.UFormula(g.xyz).items() - if n in fm and n != fm] + badformulas = [(n, fm) for n, fm in g.UFormula(g.xyz).items() if n in fm and n != fm] self.assertEqual([], badformulas) return - def test__findUParameters(self): - """check GeneratorSite._findUParameters() - """ + """check GeneratorSite._findUParameters()""" # by default all Uparameters equal zero, this would fail for NaNs for gen in TestGeneratorSite.generators.values(): for usym, uval in gen.Uparameters: @@ -381,22 +365,23 @@ def test__findUParameters(self): sg117 = GetSpaceGroup(117) g117h = GeneratorSite(sg117, self.g117h.xyz, Uij) upd = dict(g117h.Uparameters) - self.assertEqual(1, upd['U11']) - self.assertEqual(2, upd['U33']) - self.assertEqual(3, upd['U12']) - self.assertEqual(4, upd['U13']) + self.assertEqual(1, upd["U11"]) + self.assertEqual(2, upd["U33"]) + self.assertEqual(3, upd["U12"]) + self.assertEqual(4, upd["U13"]) return def test_eqIndex(self): - """check GeneratorSite.eqIndex() - """ + """check GeneratorSite.eqIndex()""" self.assertEqual(13, self.g227oc.eqIndex(self.g227oc.eqxyz[13])) return + # End of class TestGeneratorSite # ---------------------------------------------------------------------------- + class TestSymmetryConstraints(unittest.TestCase): def setUp(self): @@ -406,8 +391,7 @@ def tearDown(self): return def test___init__(self): - """check SymmetryConstraints.__init__() - """ + """check SymmetryConstraints.__init__()""" sg225 = GetSpaceGroup(225) # initialize from nested lists and arrays from ExpandAsymmetricUnit eau = ExpandAsymmetricUnit(sg225, [[0, 0, 0]]) @@ -431,8 +415,7 @@ def test___init__(self): return def test_corepos(self): - """test_corepos - find positions in the asymmetric unit. - """ + """test_corepos - find positions in the asymmetric unit.""" sg225 = GetSpaceGroup(225) corepos = [[0, 0, 0], [0.1, 0.13, 0.17]] eau = ExpandAsymmetricUnit(sg225, corepos) @@ -444,12 +427,11 @@ def test_corepos(self): mapped_count = sum(len(idcs) for idcs in sc.coremap.values()) self.assertEqual(len(sc.positions), mapped_count) self.assertTrue(sc.coremap[0] == list(range(4))) - self.assertTrue(sc.coremap[4] == list(range(4, 4+192))) + self.assertTrue(sc.coremap[4] == list(range(4, 4 + 192))) return def test_Uisotropy(self): - """check isotropy value for ADP-s at specified sites. - """ + """check isotropy value for ADP-s at specified sites.""" sg225 = GetSpaceGroup(225) corepos = [[0, 0, 0], [0.1, 0.13, 0.17]] eau = ExpandAsymmetricUnit(sg225, corepos) @@ -458,34 +440,33 @@ def test_Uisotropy(self): self.assertEqual(4 * [True] + 192 * [False], sc.Uisotropy) return -# def test__findConstraints(self): -# """check SymmetryConstraints._findConstraints() -# """ -# return -# -# def test_posparSymbols(self): -# """check SymmetryConstraints.posparSymbols() -# """ -# return -# -# def test_posparValues(self): -# """check SymmetryConstraints.posparValues() -# """ -# return -# -# def test_positionFormulas(self): -# """check SymmetryConstraints.positionFormulas() -# """ -# return -# -# def test_positionFormulasPruned(self): -# """check SymmetryConstraints.positionFormulasPruned() -# """ -# return -# + # def test__findConstraints(self): + # """check SymmetryConstraints._findConstraints() + # """ + # return + # + # def test_posparSymbols(self): + # """check SymmetryConstraints.posparSymbols() + # """ + # return + # + # def test_posparValues(self): + # """check SymmetryConstraints.posparValues() + # """ + # return + # + # def test_positionFormulas(self): + # """check SymmetryConstraints.positionFormulas() + # """ + # return + # + # def test_positionFormulasPruned(self): + # """check SymmetryConstraints.positionFormulasPruned() + # """ + # return + # def test_UparSymbols(self): - """check SymmetryConstraints.UparSymbols() - """ + """check SymmetryConstraints.UparSymbols()""" sg1 = GetSpaceGroup(1) sg225 = GetSpaceGroup(225) pos = [[0, 0, 0]] @@ -493,19 +474,16 @@ def test_UparSymbols(self): sc1 = SymmetryConstraints(sg1, pos, Uijs) self.assertEqual(6, len(sc1.UparSymbols())) sc225 = SymmetryConstraints(sg225, pos, Uijs) - self.assertEqual(['U110'], sc225.UparSymbols()) + self.assertEqual(["U110"], sc225.UparSymbols()) return def test_UparValues(self): - """check SymmetryConstraints.UparValues() - """ + """check SymmetryConstraints.UparValues()""" places = 12 sg1 = GetSpaceGroup(1) sg225 = GetSpaceGroup(225) pos = [[0, 0, 0]] - Uijs = [[[0.1, 0.4, 0.5], - [0.4, 0.2, 0.6], - [0.5, 0.6, 0.3]]] + Uijs = [[[0.1, 0.4, 0.5], [0.4, 0.2, 0.6], [0.5, 0.6, 0.3]]] sc1 = SymmetryConstraints(sg1, pos, Uijs) duv = 0.1 * numpy.arange(1, 7) - sc1.UparValues() self.assertAlmostEqual(0, max(numpy.fabs(duv)), places) @@ -514,6 +492,7 @@ def test_UparValues(self): self.assertAlmostEqual(0.2, sc225.UparValues()[0], places) return + # def test_UFormulas(self): # """check SymmetryConstraints.UFormulas() # """ @@ -528,5 +507,5 @@ def test_UparValues(self): # ---------------------------------------------------------------------------- -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/diffpy/structure/tests/testutils.py b/src/diffpy/structure/tests/testutils.py index 572fc537..18d64dbd 100644 --- a/src/diffpy/structure/tests/testutils.py +++ b/src/diffpy/structure/tests/testutils.py @@ -18,7 +18,9 @@ # helper functions + def datafile(filename): from pkg_resources import resource_filename + rv = resource_filename(__name__, "testdata/" + filename) return rv diff --git a/src/diffpy/structure/utils.py b/src/diffpy/structure/utils.py index 33b83b20..d37127b2 100644 --- a/src/diffpy/structure/utils.py +++ b/src/diffpy/structure/utils.py @@ -16,8 +16,8 @@ """Small shared functions. """ -import six import numpy +import six if six.PY2: from collections import Iterable as _Iterable @@ -42,20 +42,22 @@ def isfloat(s): def atomBareSymbol(smbl): - '''Remove atom type string stripped of isotope and ion charge symbols. + """Remove atom type string stripped of isotope and ion charge symbols. This removes blank and leading [0-9-] or trailing [1-9][+-] characters. smbl -- atom type string such as "Cl-", "Ca2+" or "12-C". Return bare element symbol. - ''' - rv = smbl.strip().lstrip('0123456789-').rstrip('123456789+-') + """ + rv = smbl.strip().lstrip("0123456789-").rstrip("123456789+-") return rv + # Helpers for the Structure class -------------------------------------------- + def _linkAtomAttribute(attrname, doc, toarray=numpy.array): - '''Create property wrapper that maps the specified atom attribute. + """Create property wrapper that maps the specified atom attribute. The returned property object provides convenient access to atom attributes from the owner Structure class. @@ -71,13 +73,16 @@ def _linkAtomAttribute(attrname, doc, toarray=numpy.array): Use `numpy.char.array` for string attributes. Return a property object. - ''' + """ from itertools import repeat from operator import setitem + _all = slice(None) + def fget(self): va = toarray([getattr(a, attrname) for a in self]) return va + def fset(self, value): n = len(self) if n == 0: @@ -96,5 +101,6 @@ def fset(self, value): for a, v in zip(self, genvalues): setvalue(a, v) return + rv = property(fget, fset, doc=doc) return rv