diff --git a/pycgtool.py b/pycgtool.py index a33e6b04f4cc7e47fce41b9935e4d840df89a15a..c30d7150ff40327cfd2beda3e22a2fa349e67a4f 100755 --- a/pycgtool.py +++ b/pycgtool.py @@ -2,6 +2,7 @@ import argparse import sys +import logging from pycgtool.frame import Frame from pycgtool.mapping import Mapping @@ -9,6 +10,8 @@ from pycgtool.bondset import BondSet from pycgtool.forcefield import ForceField from pycgtool.interface import Progress, Options +logger = logging.getLogger(__name__) + def main(args, config): """ @@ -23,11 +26,17 @@ def main(args, config): if args.bnd: bonds = BondSet(args.bnd, config) + logger.info("Bond measurements will be made") + else: + logger.info("Bond measurements will not be made") if args.map: mapping = Mapping(args.map, config, itp=args.itp) cgframe = mapping.apply(frame, exclude={"SOL"}) cgframe.output(config.output_name + ".gro", format=config.output) + logger.info("Mapping will be performed") + else: + logger.info("Mapping will not be performed") # Main loop - perform mapping and measurement on every frame in XTC def main_loop(): @@ -43,18 +52,23 @@ def main(args, config): bonds.apply(cgframe) numframes = frame.numframes - args.begin if args.end == -1 else args.end - args.begin + logger.info("Beginning analysis of {0} frames".format(numframes)) Progress(numframes, postwhile=main_loop).run() if args.bnd: if args.map: + logger.info("Beginning Boltzmann inversion") bonds.boltzmann_invert() if config.output_forcefield: + logger.info("Creating GROMACS forcefield directory") ff = ForceField("ff" + config.output_name + ".ff") ff.write_rtp(config.output_name + ".rtp", mapping, bonds) + logger.info("GROMACS forcefield directory created") else: bonds.write_itp(config.output_name + ".itp", mapping=mapping) if config.dump_measurements: + logger.info("Dumping bond measurements to file") bonds.dump_values(config.dump_n_values) @@ -71,8 +85,6 @@ def map_only(args, config): cgframe.output(config.output_name + ".gro", format=config.output) if args.xtc and (config.output_xtc or args.outputxtc): - numframes = frame.numframes - args.begin if args.end == -1 else args.end - args.begin - # Main loop - perform mapping and measurement on every frame in XTC def main_loop(): nonlocal cgframe @@ -80,6 +92,8 @@ def map_only(args, config): cgframe = mapping.apply(frame, cgframe=cgframe, exclude={"SOL"}) cgframe.write_xtc(config.output_name + ".xtc") + numframes = frame.numframes - args.begin if args.end == -1 else args.end - args.begin + logger.info("Beginning analysis of {0} frames".format(numframes)) Progress(numframes, postwhile=main_loop).run() @@ -126,6 +140,10 @@ if __name__ == "__main__": print("Using XTC: {0}".format(args.xtc)) if config.map_only: + logger.info("Starting: mapping only") map_only(args, config) else: + logger.info("Starting: parameter measurement") main(args, config) + + logger.info("Analysis complete") diff --git a/pycgtool/interface.py b/pycgtool/interface.py index 02c80a6d83cb7180bf5c5c2f84b57f66cd4d8e03..d22d3ed2d8b6cf88446870cb41d2fb1d68fecce5 100644 --- a/pycgtool/interface.py +++ b/pycgtool/interface.py @@ -264,6 +264,7 @@ class Progress: Iterate through self until stopped by maximum iterations or False condition. """ collections.deque(self, maxlen=0) + return self._its @property def _bar(self):