Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
rkingsbury committed Jul 20, 2024
2 parents 81a9c60 + 27d90b7 commit c74fcd6
Show file tree
Hide file tree
Showing 65 changed files with 101,022 additions and 1,196 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.9"
python-version: '3.x'

- name: Install dependencies
run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ jobs:
resolution: highest
extras: ci,optional
- os: ubuntu-latest
python: "3.12"
python: '>3.9'
resolution: lowest-direct
extras: ci,optional
- os: macos-latest
python: "3.10"
python: '3.10'
resolution: lowest-direct
extras: ci # test with only required dependencies installed

Expand Down
7 changes: 4 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ repos:
- id: trailing-whitespace

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.10.0
rev: v1.10.1
hooks:
- id: mypy

Expand All @@ -33,6 +33,7 @@ repos:
stages: [ commit, commit-msg ]
exclude_types: [ html ]
additional_dependencies: [ tomli ] # needed to read pyproject.toml below py3.11
exclude: src/pymatgen/analysis/aflow_prototypes.json

- repo: https://github.com/MarcoGorelli/cython-lint
rev: v0.16.2
Expand All @@ -42,7 +43,7 @@ repos:
- id: double-quote-cython-strings

- repo: https://github.com/adamchainz/blacken-docs
rev: 1.16.0
rev: 1.18.0
hooks:
- id: blacken-docs

Expand All @@ -64,6 +65,6 @@ repos:
args: [ --drop-empty-cells, --keep-output ]

- repo: https://github.com/RobertCraigie/pyright-python
rev: v1.1.366
rev: v1.1.369
hooks:
- id: pyright
95 changes: 95 additions & 0 deletions dev_scripts/update_spacegroup_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
"""Script to update symm_ops.json and symm_data.yaml in symmetry module due to issues #3845 and #3862.
symm_ops.json:
- adds Hermann_mauguin point group key and short Hermann Mauguin space group symbol
- converts screw axis notation to symm_data standard
symm_data.json
- removes mapping of rhombohedral space group types onto symbol + appended H
- replaces I/P2_12_121 key with I/P2_12_12_1
"""

from __future__ import annotations

import sys

from monty.serialization import dumpfn, loadfn
from pymatgen.symmetry.groups import PointGroup

__author__ = "Katharina Ueltzen @kaueltzen"
__date__ = "2024-06-06"

SYMM_OPS = loadfn("../src/pymatgen/symmetry/symm_ops.json")
SYMM_DATA = loadfn("../src/pymatgen/symmetry/symm_data.json")


def convert_symmops_to_sg_encoding(symbol: str) -> str:
"""
Utility function to convert SYMMOPS space group type symbol notation
into SYMM_DATA["space_group_encoding"] key notation with underscores before
translational part of screw axes.
Args:
symbol (str): "hermann_mauguin" or "universal_h_m" key of symmops.json
Returns:
symbol in the format of SYMM_DATA["space_group_encoding"] keys
"""
symbol_representation = symbol.split(":")
representation = ":" + "".join(symbol_representation[1].split(" ")) if len(symbol_representation) > 1 else ""

blickrichtungen = symbol_representation[0].split(" ")
blickrichtungen_new = []
for br in blickrichtungen:
if len(br) > 1 and br[0].isdigit() and br[1].isdigit():
blickrichtungen_new.append(br[0] + "_" + br[1:])
else:
blickrichtungen_new.append(br)
return "".join(blickrichtungen_new) + representation


def remove_identity_from_full_hermann_mauguin(symbol: str) -> str:
"""
Utility function to remove identity along blickrichtung (except in P1).
Args:
symbol (str): "hermann_mauguin" key of symmops.json
Returns:
short "hermann_mauguin" key
"""
if symbol in ("P 1", "C 1", "P 1 "):
return symbol
blickrichtungen = symbol.split(" ")
blickrichtungen_new = []
for br in blickrichtungen:
if br != "1":
blickrichtungen_new.append(br + " ")
return "".join(blickrichtungen_new)


new_symm_data = {}
for k, v in SYMM_DATA["space_group_encoding"].items():
if k.endswith("H"):
new_symm_data[k.removesuffix("H")] = v
elif k == "I2_12_121":
new_symm_data["I2_12_12_1"] = v
elif k == "P2_12_121":
new_symm_data["P2_12_12_1"] = v
else:
new_symm_data[k] = v

SYMM_DATA["space_group_encoding"] = new_symm_data

for spg_idx, spg in enumerate(SYMM_OPS):
if "(" in spg["hermann_mauguin"]:
SYMM_OPS[spg_idx]["hermann_mauguin"] = spg["hermann_mauguin"].split("(")[0]

short_h_m = remove_identity_from_full_hermann_mauguin(SYMM_OPS[spg_idx]["hermann_mauguin"])
SYMM_OPS[spg_idx]["short_h_m"] = convert_symmops_to_sg_encoding(short_h_m)
SYMM_OPS[spg_idx]["hermann_mauguin_u"] = convert_symmops_to_sg_encoding(spg["hermann_mauguin"])

for spg_idx, spg in enumerate(SYMM_OPS):
try:
pg = PointGroup.from_space_group(spg["short_h_m"])
except AssertionError as e:
print(spg, str(e))
sys.exit(1)
SYMM_OPS[spg_idx]["point_group"] = pg.symbol

dumpfn(SYMM_DATA, "../src/pymatgen/symmetry/symm_data.json")
dumpfn(SYMM_OPS, "../src/pymatgen/symmetry/symm_ops.json")
8 changes: 8 additions & 0 deletions docs/CHANGES.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions docs/compatibility.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 1 addition & 12 deletions docs/modules.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit c74fcd6

Please sign in to comment.