Source code for pymatgen.cli.pmg_potcar

#!/usr/bin/env python
# coding: utf-8

"""
Implementation for `pmg potcar` CLI.
"""


import os

from pymatgen.io.vasp import Potcar


[docs]def proc_dir(dirname, procfilefunction): """ Process a directory. Args: dirname (str): Directory name. procfilefunction (callable): Callable to execute on directory. """ for f in os.listdir(dirname): if os.path.isdir(os.path.join(dirname, f)): proc_dir(os.path.join(dirname, f), procfilefunction) else: procfilefunction(dirname, f)
[docs]def gen_potcar(dirname, filename): """ Generate POTCAR from POTCAR.spec in directories. Args: dirname (str): Directory name. filename (str): Filename in directory. """ if filename == "POTCAR.spec": fullpath = os.path.join(dirname, filename) f = open(fullpath, "r") elements = f.readlines() f.close() symbols = [el.strip() for el in elements if el.strip() != ""] potcar = Potcar(symbols) potcar.write_file(os.path.join(dirname, "POTCAR"))
[docs]def generate_potcar(args): """ Generate POTCAR. Args: args (dict): Args from argparse. """ if args.recursive: proc_dir(args.recursive, gen_potcar) elif args.symbols: try: p = Potcar(args.symbols, functional=args.functional) p.write_file("POTCAR") except Exception as ex: print("An error has occurred: {}".format(str(ex))) else: print("No valid options selected.")
if __name__ == "__main__": proc_dir(os.getcwd(), gen_potcar)