Files
CrystalPol/crystalpol/__main__.py

76 lines
1.9 KiB
Python

from crystalpol import VERSION
from crystalpol.polarization import Polarization
from crystalpol.shared.config import Config
from crystalpol.shared.utils.log import Log
import setproctitle
import yaml
from yaml.loader import SafeLoader
import argparse
import logging
import os
from pathlib import Path
os.nice(+19)
setproctitle.setproctitle("crystalpol-{}".format(VERSION))
def main():
"""
Read and store the arguments passed to the program
and set the usage and help messages.
"""
parser = argparse.ArgumentParser(prog="CrystalPol")
parser.add_argument(
"-v", "--version", action="version", version=f"crystalpol-{VERSION}"
)
parser.add_argument(
"-c",
"--config",
dest="config",
default="config.yml",
metavar="INFILE",
help="Config file of crystalpol [default = config.yml]",
)
parser.add_argument(
"-i",
"--input",
dest="infile",
default="crystal.xyz",
metavar="INFILE",
help="Input file of crystalpol [default = crystal.xyz]",
)
parser.add_argument(
"-o",
"--output",
dest="outfile",
default="run.log",
metavar="OUTFILE",
help="Output file of crystalpol [default = run.log]",
)
args = parser.parse_args()
log_file = Path("run.log")
if log_file.exists():
log_file.rename(log_file.with_suffix(".log.backup"))
logging.basicConfig(filename=args.outfile, format="%(message)s", level=logging.INFO)
try:
with open(args.config) as file:
data = yaml.load(file, Loader=SafeLoader)
config = Config(**data.get("crystal_pol"))
except IOError:
raise RuntimeError("Invalid or Missing Config File.")
Log.make_header(VERSION, config.to_dict())
pol = Polarization(args.infile, args.outfile, config)
pol.run()
if __name__ == "__main__":
main()