Source code for aiida_castep.data.utils
"""
Utilities module
This module does not have top level AiiDA orm imports
"""
import os
import re
[docs]def split_otfg_entry(otfg):
"""
Split an entry of otfg in the form of element_settings
:returns (element, entry):
"""
otfg = otfg.strip()
# Check it is a library
lib = re.match(r"^[A-Za-z]+\d+$", otfg)
if lib:
element = "LIBRARY"
return element, otfg
# It not a library, try to get the element
match = re.match(r"^([A-Z][a-z]?)[ _]+(.+)$", otfg)
if match:
element, setting = match.group(1), match.group(2)
else:
element = None
setting = otfg
return element, setting
[docs]def get_usp_element(filepath):
"""
infer element from usp/recpot filename
:return element: a string of element name or None if not found
"""
# Convert to string -> allow Path object to be passed
filepath = str(filepath)
re_fn = re.compile(r"^([a-z]+)[_-].+\.(usp|recpot)$", flags=re.IGNORECASE)
filename = os.path.split(filepath)[1]
match = re_fn.match(filename)
if match:
element = match.group(1)
element = element.capitalize()
return element
return None