pymatgen.io.cif module

class CifBlock(data, loops, header)[source]

Bases: object

Object for storing cif data. All data is stored in a single dictionary. Data inside loops are stored in lists in the data dictionary, and information on which keys are grouped together are stored in the loops attribute.

Parameters:
  • data – dict or OrderedDict of data to go into the cif. Values should be convertible to string, or lists of these if the key is in a loop
  • loops – list of lists of keys, grouped by which loop they should appear in
  • header – name of the block (appears after the data_ on the first line)
classmethod from_string(string)[source]
maxlen = 70
class CifFile(data, orig_string=None, comment=None)[source]

Bases: object

Reads and parses CifBlocks from a .cif file or string

Parameters:
  • data (OrderedDict) – Of CifBlock objects.å
  • orig_string (str) – The original cif string.
  • comment (str) – Comment string.
classmethod from_file(filename)[source]
classmethod from_string(string)[source]
class CifParser(filename, occupancy_tolerance=1.0, site_tolerance=0.0001)[source]

Bases: object

Parses a cif file

Parameters:
  • filename (str) – Cif filename. bzipped or gzipped cifs are fine too.
  • occupancy_tolerance (float) – If total occupancy of a site is between 1 and occupancy_tolerance, the occupancies will be scaled down to 1.
  • site_tolerance (float) – This tolerance is used to determine if two sites are sitting in the same position, in which case they will be combined to a single disordered site. Defaults to 1e-4.
as_dict()[source]
static from_string(cif_string, occupancy_tolerance=1.0)[source]

Creates a CifParser from a string.

Parameters:
  • cif_string (str) – String representation of a CIF.
  • occupancy_tolerance (float) – If total occupancy of a site is between 1 and occupancy_tolerance, the occupancies will be scaled down to 1.
Returns:

CifParser

get_bibtex_strings()[source]

(Beta) Get BibTeX reference from CIF file. :param data: :return: BibTeX string

get_lattice(data, length_strings=('a', 'b', 'c'), angle_strings=('alpha', 'beta', 'gamma'), lattice_type=None)[source]

Generate the lattice from the provided lattice parameters. In the absence of all six lattice parameters, the crystal system and necessary parameters are parsed

get_magsymops(data)[source]

Equivalent to get_symops except for magnetic symmetry groups. Separate function since additional operation for time reversal symmetry (which changes magnetic moments on sites) needs to be returned.

get_structures(primitive=True)[source]

Return list of structures in CIF file. primitive boolean sets whether a conventional cell structure or primitive cell structure is returned.

Parameters:primitive (bool) – Set to False to return conventional unit cells. Defaults to True.
Returns:List of Structures.
get_symops(data)[source]

In order to generate symmetry equivalent positions, the symmetry operations are parsed. If the symops are not present, the space group symbol is parsed, and symops are generated.

parse_magmoms(data, lattice=None)[source]

Parse atomic magnetic moments from data dictionary

parse_oxi_states(data)[source]

Parse oxidation states from data dictionary

class CifWriter(struct, symprec=None, write_magmoms=False)[source]

Bases: object

A wrapper around CifFile to write CIF files from pymatgen structures.

Parameters:
  • struct (Structure) – structure to write
  • symprec (float) – If not none, finds the symmetry of the structure and writes the cif with symmetry information. Passes symprec to the SpacegroupAnalyzer
  • write_magmoms (bool) – If True, will write magCIF file. Incompatible with symprec
write_file(filename)[source]

Write the cif file.

str2float(text)[source]

Remove uncertainty brackets from strings and return the float.