schrodinger.application.matsci.nano.space_groups module

Classes and functions for creating crystals by unit cell.

Copyright Schrodinger, LLC. All rights reserved.

schrodinger.application.matsci.nano.space_groups.get_spacegroups()

Get space groups object.

Return type

SpaceGroups

Returns

Cached space groups object, do not modify!!

schrodinger.application.matsci.nano.space_groups.get_symmops_from_spglib(symm)

Get set of symmetry operators from a set of rotations and translations. Symmetry operator is defined with a 4 x 4 matrix, top left 3 x 3 is rotation matrix, top right column 1 x 3 is translation, rest, bottom row is [0 0 0 1]

Parameters

symm (dict of two keys: 'rotations': list of 3 x 3 matrices, 'translations': list of 1 x 3 matrices) – dictionary of list of rotations and translations

Returns

list of 4x4 matrices

Return type

list of symmetry operators

class schrodinger.application.matsci.nano.space_groups.CrystalSystems

Bases: object

Manage the properties of the seven crystal systems.

TRICLINIC_NAME = 'triclinic'
MONOCLINIC_NAME = 'monoclinic'
ORTHORHOMBIC_NAME = 'orthorhombic'
TETRAGONAL_NAME = 'tetragonal'
TRIGONAL_NAME = 'trigonal'
HEXAGONAL_NAME = 'hexagonal'
CUBIC_NAME = 'cubic'
class Triclinic(name)

Bases: object

Manage the triclinic system.

__init__(name)

Create an instance.

Parameters

name (str) – crystal system name

class Monoclinic(name)

Bases: object

Manage the monoclinic system.

__init__(name)

Create an instance.

Parameters

name (str) – crystal system name

class Orthorhombic(name)

Bases: object

Manage the orthorhombic system.

__init__(name)

Create an instance.

Parameters

name (str) – crystal system name

class Tetragonal(name)

Bases: object

Manage the tetragonal system.

__init__(name)

Create an instance.

Parameters

name (str) – crystal system name

class Trigonal(name)

Bases: object

Manage the trigonal system.

__init__(name)

Create an instance.

Parameters

name (str) – crystal system name

class Hexagonal(name)

Bases: object

Manage the hexagonal system.

__init__(name)

Create an instance.

Parameters

name (str) – crystal system name

class Cubic(name)

Bases: object

Manage the cubic system.

__init__(name)

Create an instance.

Parameters

name (str) – crystal system name

getCrystalSystem(name)

Return the crystal system object for the crystem system of the provided name.

Parameters

name (str) – crystal system name

Return type

one of the seven crystal system objects

Returns

crystal_system_obj

class schrodinger.application.matsci.nano.space_groups.SpaceGroup(definition_id: int, space_group_id: int, ichoice: int, num_choices: int, space_group_short_name: str, space_group_full_name: str, point_group_name: str, centering_opers: List, primary_opers: List, symmetry_opers: List, num_centering_opers: int, num_primary_opers: int, num_symmetry_opers: int, centering_opers_strs: List, primary_opers_strs: List, symmetry_opers_strs: List, crystal_system: schrodinger.application.matsci.nano.space_groups.CrystalSystems, xyzasu: str, spg_setting: str)

Bases: NamedTuple

Collect the properties of a space group.

DEFINITION_ID = 'Def. ID'
SPACE_GROUP_ID = 'Space Group ID'
CRYSTAL_SYSTEM = 'Crystal System'
SHORT_HERMANN_MAUGUIN_SYMBOL = 'Short H.-M. Symbol'
FULL_HERMANN_MAUGUIN_SYMBOL = 'Full H.-M. Symbol'
POINT_GROUP_NAME = 'Point Group'
NUM_CENTERING_OPERS = 'N Centering Ops.'
NUM_PRIMARY_OPERS = 'N Primary Ops.'
NUM_SYMMETRY_OPERS = 'N Symmetry Ops.'
CENTERING_OPERS = 'Centering Operators'
PRIMARY_OPERS = 'Primary Operators'
SYMMETRY_OPERS = 'Symmetry Operators'
SPACE_GROUP_SETTING = 'Space Group Setting'
ID_TAG = 'spgid  '
SHORT_NAME_TAG = 'sspgname  '
FULL_NAME_TAG = 'fspgname  '
POINT_GROUP_TAG = 'pgname    '
CRYSTAL_SYSTEM_TAG = 'crysym    '
SETTING_TAG = 'setting   '
ASU_TAG = 'xyzasu    '
PRIMARY_OPERATIONS_TAG = 'primoper  '
CENTERING_OPERATIONS_TAG = 'centoper  '
END_OF_DEF_TAG = 'endofdef'
definition_id: int

Alias for field number 0

space_group_id: int

Alias for field number 1

ichoice: int

Alias for field number 2

num_choices: int

Alias for field number 3

space_group_short_name: str

Alias for field number 4

space_group_full_name: str

Alias for field number 5

point_group_name: str

Alias for field number 6

centering_opers: List

Alias for field number 7

primary_opers: List

Alias for field number 8

symmetry_opers: List

Alias for field number 9

num_centering_opers: int

Alias for field number 10

num_primary_opers: int

Alias for field number 11

num_symmetry_opers: int

Alias for field number 12

centering_opers_strs: List

Alias for field number 13

primary_opers_strs: List

Alias for field number 14

symmetry_opers_strs: List

Alias for field number 15

crystal_system: schrodinger.application.matsci.nano.space_groups.CrystalSystems

Alias for field number 16

xyzasu: str

Alias for field number 17

spg_setting: str

Alias for field number 18

classmethod fromData(definition_id, space_group_id, ichoice, num_choices, space_group_short_name, space_group_full_name, point_group_name, centering_opers, primary_opers, symmetry_opers, centering_opers_strs, primary_opers_strs, symmetry_opers_strs, crystal_system, xyzasu, spg_setting)

Create an instance.

Parameters
  • definition_id (int) – the id of the definition, i.e. a number ranging from 1 to 291 (some of the 230 space groups have more than a single unit cell definition).

  • space_group_id (int) – the id of the space group, i.e. a number ranging from 1 to 230, which the number of space groups.

  • ichoice (int) – the space group setting index

  • num_choices (int) – the number of different unit cell settings for this space group. For example, a setting may be a choice of axes, etc.

  • space_group_short_name (string) – the short Hermann-Mauguin symbol of the space group.

  • space_group_full_name (string) – the full Hermann-Mauguin symbol of the space group.

  • point_group_name (string) – the name of the point group of the space group.

  • centering_opers (list of numpy.array) – contains the centering matricies of the space group.

  • primary_opers (list of numpy.array) – contains the primary matricies of the space group.

  • symmetry_opers (list of numpy.array) – contains the symmetry matricies of the space group, i.e. the combinations of the centering and primary matricies.

  • centering_opers_strs (list) – string representation of the centering operators.

  • primary_opers_strs (list) – string representation of the primary operators.

  • symmetry_opers_strs (list) – string representation of the symmetry operators, i.e. the combination of the centering and primary string representations.

  • crystal_system (one of the sevel crystal system objects) – the crystal system.

  • xyzasu (str) – the xyzasu descriptor which will be parsed but not used

  • spgsetting – the setting of the space group

isSohnckeGroup()

Return whether this group is Sohncke or not.

:rtype bool :return: Whether this group is Sohncke or not.

printSymmetryOpers(logger=None)

Log a formatted print of all of the symmetry operators for this space group.

Parameters

logger (logging.getLogger) – output logger

printDatabaseEntry(logger=None)

Print a space group object in mmspg/spgbase.dat format.

Parameters

logger (logging.getLogger) – output logger

class schrodinger.application.matsci.nano.space_groups.SpaceGroups

Bases: object

Manage space group objects.

NUM_SPACE_GROUPS = 230
CRYSTAL_SYSTEMS = <schrodinger.application.matsci.nano.space_groups.CrystalSystems object>
CENTERING = 'centering'
PRIMARY = 'primary'
SYMMETRY = 'symmetry'
__init__()

Create an instance.

getAllSpaceGroups()

Make a list of all SpaceGroup objects each of which contains some space group parameters from mmspg/spgbase.dat.

getSpgObjByName(name, first=True)

Get a space group object by name.

Parameters
  • name (str) – short name (HM symbol) checked first. If short_only=False, long symbol checked second. The first space group encountered with such a name is returned.

  • first (bool) – If True, returns the first occurrence based on the symmetry operators

Return type

SpaceGroup or None

Returns

Space group object or None if not found

printAllSpgInfo(verbose, logger)

Print all space group information.

Parameters
  • verbose (bool) – verbose log

  • logger (logging.getLogger) – output logger

schrodinger.application.matsci.nano.space_groups.equal_rotations(rotations1, rotations2)

Check if rotations are equal.

Parameters
  • rotations1 (3D numpy.array) – Array of rotation matrices (2D arrays) associated with a space group

  • rotations2 (3D numpy.array) – Array of rotation matrices (2D arrays) associated with a space group

Return type

bool

Returns

True, if rotations are the same, otherwise False