# pymatgen.io.feff.inputs module

This module defines classes for reading/manipulating/writing the main sections of FEFF input file(feff.inp), namely HEADER, ATOMS, POTENTIAL and the program control tags.

XANES and EXAFS input files, are available, for non-spin case at this time.

class Atoms(struct, absorbing_atom, radius)

  Bases: `monty.json.MSONable`

  Atomic cluster centered around the absorbing atom.

  Parameters

    - struct (Structure) – input structure

    - absorbing_atom (str/int) – Symbol for absorbing atom or site index

    - radius (float) – radius of the atom cluster in Angstroms.

  static atoms_string_from_file(filename)

    Reads atomic shells from file such as feff.inp or ATOMS file The lines are arranged as follows:

    x y z ipot Atom Symbol Distance Number

    with distance being the shell radius and ipot an integer identifying the potential used.

    Parameters

      filename – File name containing atomic coord data.

    Returns

      Atoms string.

  property cluster

    Returns the atomic cluster as a Molecule object.

  static cluster_from_file(filename)

    Parse the feff input file and return the atomic cluster as a Molecule object.

    Parameters

      filename (str) – path the feff input file

    Returns

      the atomic cluster as Molecule object. The absorbing atom

        is the one at the origin.

    Return type

      Molecule

  get_lines()

    Returns a list of string representations of the atomic configuration information(x, y, z, ipot, atom_symbol, distance, id).

    Returns

      list of strings, sorted by the distance from the absorbing

        atom.

    Return type

      list

  write_file(filename='ATOMS')

    Write Atoms list to file.

    Parameters

      filename – path for file to be written

exception FeffParserError

  Bases: `Exception`

  Exception class for Structure. Raised when the structure has problems, e.g., atoms that are too close.

class Header(struct, source='', comment='')

  Bases: `monty.json.MSONable`

  Creates Header for the FEFF input file.

  Has the following format:

      * This feff.inp file generated by pymatgen, www.materialsproject.org
      TITLE comment:
      TITLE Source: CoO19128.cif
      TITLE Structure Summary: (Co2 O2)
      TITLE Reduced formula: CoO
      TITLE space group: P1,   space number: 1
      TITLE abc: 3.297078 3.297078 5.254213
      TITLE angles: 90.0 90.0 120.0
      TITLE sites: 4
      * 1 Co     0.666666     0.333332     0.496324
      * 2 Co     0.333333     0.666667     0.996324
      * 3 O     0.666666     0.333332     0.878676
      * 4 O     0.333333     0.666667     0.378675

  Parameters

    - struct – Structure object, See pymatgen.core.structure.Structure.

    - source – User supplied identifier, i.e. for Materials Project this would be the material ID number

    - comment – Comment for first header line

  property formula

    Formula of structure

  static from_cif_file(cif_file, source='', comment='')

    Static method to create Header object from cif_file

    Parameters

      - cif_file – cif_file path and name

      - source – User supplied identifier, i.e. for Materials Project this would be the material ID number

      - comment – User comment that goes in header

    Returns

      Header Object

  static from_file(filename)

    Returns Header object from file

  static from_string(header_str)

    Reads Header string and returns Header object if header was generated by pymatgen. Note: Checks to see if generated by pymatgen, if not it is impossible

    > to generate structure object so it is not possible to generate header object and routine ends

    Parameters

      header_str – pymatgen generated feff.inp header

    Returns

      Structure object.

  static header_string_from_file(filename='feff.inp')

    Reads Header string from either a HEADER file or feff.inp file Will also read a header from a non-pymatgen generated feff.inp file

    Parameters

      filename – File name containing the Header data.

    Returns

      Reads header string.

  property structure_symmetry

    Returns space number and space group

    Returns

      Space number and space group list

  write_file(filename='HEADER')

    Writes Header into filename on disk.

    Parameters

      filename – Filename and path for file to be written to disk

class Paths(atoms, paths, degeneracies=None)

  Bases: `monty.json.MSONable`

  Set FEFF scattering paths(‘paths.dat’ file used by the ‘genfmt’ module).

  Parameters

    - atoms (Atoms) – Atoms object

    - paths (list(list)) – list of paths. Each path is a list of atom indices in the atomic cluster(the molecular cluster created by Atoms class). e.g. [[0, 1, 2], [5, 9, 4, 1]] -> 2 paths: one with 3 legs and the other with 4 legs.

    - degeneracies (list) – list of degeneracies, one for each path. Set to 1 if not specified.

  write_file(filename='paths.dat')

    Write paths.dat.

class Potential(struct, absorbing_atom)

  Bases: `monty.json.MSONable`

  FEFF atomic potential.

  Parameters

    - struct (Structure) – Structure object.

    - absorbing_atom (str/int) – Absorbing atom symbol or site index

  static pot_dict_from_string(pot_data)

    Creates atomic symbol/potential number dictionary forward and reverse

    Arg:

      pot_data: potential data in string format

    Returns

      forward and reverse atom symbol and potential number dictionaries.

  static pot_string_from_file(filename='feff.inp')

    Reads Potential parameters from a feff.inp or FEFFPOT file. The lines are arranged as follows:

    > ipot Z element lmax1 lmax2 stoichometry spinph

    Parameters

      filename – file name containing potential data.

    Returns

      FEFFPOT string.

  write_file(filename='POTENTIALS')

    Write to file.

    Parameters

      filename – filename and path to write potential file to.

class Tags(params=None)

  Bases: `dict`

  FEFF control parameters.

  Parameters

    params – A set of input parameters as a dictionary.

  as_dict()

    Dict representation.

    Returns

      Dictionary of parameters from fefftags object

  diff(other)

    Diff function. Compares two PARAMETER files and indicates which parameters are the same and which are not. Useful for checking whether two runs were done using the same parameters.

    Parameters

      other – The other PARAMETER dictionary to compare to.

    Returns

      parameters_that_are_the_same, “Different”: parameters_that_are_different} Note that the parameters are return as full dictionaries of values.

    Return type

      Dict of the format {“Same”

  static from_dict(d)

    Creates Tags object from a dictionary.

    Parameters

      d – Dict of feff parameters and values.

    Returns

      Tags object

  static from_file(filename='feff.inp')

    Creates a Feff_tag dictionary from a PARAMETER or feff.inp file.

    Parameters

      filename – Filename for either PARAMETER or feff.inp file

    Returns

      Feff_tag object

  get_string(sort_keys=False, pretty=False)

    Returns a string representation of the Tags. The reason why this method is different from the __str__ method is to provide options for pretty printing.

    Parameters

      - sort_keys – Set to True to sort the Feff parameters alphabetically. Defaults to False.

      - pretty – Set to True for pretty aligned output. Defaults to False.

    Returns

      String representation of Tags.

  static proc_val(key, val)

    Static helper method to convert Feff parameters to proper types, e.g. integers, floats, lists, etc.

    Parameters

      - key – Feff parameter key

      - val – Actual value of Feff parameter.

  write_file(filename='PARAMETERS')

    Write Tags to a Feff parameter tag file.

    Parameters

      filename – filename and path to write to.

get_absorbing_atom_symbol_index(absorbing_atom, structure)

  Return the absorbing atom symboll and site index in the given structure.

  Parameters

    - absorbing_atom (str/int) – symbol or site index

    - structure (Structure) –

  Returns

    symbol and site index

  Return type

    str, int

get_atom_map(structure)

  Returns a dict that maps each atomic symbol to a unique integer starting from 1.

  Parameters

    structure (Structure) –

  Returns

    dict