76 lines
1.9 KiB
Python
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()
|