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.

  • 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

  • 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

  • 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.
static from_string(occupancy_tolerance=1.0)[source]

Creates a CifParser from a string.

  • 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.



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


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.


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. With magnetic CIF files, will return primitive magnetic cell which may be larger than nuclear primitive cell.
Returns:List of Structures.

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 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.

  • 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 the cif file.


Remove uncertainty brackets from strings and return the float.