Source code for pymatgen.cli.feff_plot_dos
#!/usr/bin/env python
# coding: utf-8
# Copyright (c) Pymatgen Development Team.
# Distributed under the terms of the MIT License.
"""
Script to plot density of states (DOS) generated by an FEFF run
either by site, element, or orbital
"""
__author__ = "Alan Dozier"
__credits__ = "Anubhav Jain, Shyue Ping Ong"
__copyright__ = "Copyright 2012, The Materials Project"
__version__ = "1.0"
__maintainer__ = "Alan Dozier"
__email__ = "adozier@uky.edu"
__date__ = "April 7, 2012"
import argparse
from collections import OrderedDict
from pymatgen.electronic_structure.plotter import DosPlotter
from pymatgen.io.feff.outputs import LDos
[docs]def main():
"""
Main function.
"""
parser = argparse.ArgumentParser(
description="""Convenient DOS Plotter for Feff runs.
Author: Alan Dozier
Version: 1.0
Last updated: April, 2013"""
)
parser.add_argument(
"filename",
metavar="filename",
type=str,
nargs=1,
help="ldos%% file set to plot",
)
parser.add_argument("filename1", metavar="filename1", type=str, nargs=1, help="feff.inp input file ")
parser.add_argument(
"-s",
"--site",
dest="site",
action="store_const",
const=True,
help="plot site projected DOS",
)
parser.add_argument(
"-e",
"--element",
dest="element",
action="store_const",
const=True,
help="plot element projected DOS",
)
parser.add_argument(
"-o",
"--orbital",
dest="orbital",
action="store_const",
const=True,
help="plot orbital projected DOS",
)
args = parser.parse_args()
f = LDos.from_file(args.filename1[0], args.filename[0])
dos = f.complete_dos
all_dos = OrderedDict()
all_dos["Total"] = dos
structure = f.complete_dos.structure
if args.site:
for i, site in enumerate(structure):
all_dos["Site " + str(i) + " " + site.specie.symbol] = dos.get_site_dos(site)
if args.element:
all_dos.update(dos.get_element_dos())
if args.orbital:
all_dos.update(dos.get_spd_dos())
plotter = DosPlotter()
plotter.add_dos_dict(all_dos)
plotter.show()
if __name__ == "__main__":
main()