From dd07c2ada71de2dee19cb5c6b0f343442309ca9f Mon Sep 17 00:00:00 2001 From: James Graham <J.A.Graham@soton.ac.uk> Date: Wed, 20 Jul 2016 17:09:50 +0100 Subject: [PATCH] Added tqdm progress bar to Boltzmann Inversion --- pycgtool/bondset.py | 26 ++++++++++++++++++++------ pycgtool/pycgtool.py | 2 +- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/pycgtool/bondset.py b/pycgtool/bondset.py index 8449467..b61b11d 100644 --- a/pycgtool/bondset.py +++ b/pycgtool/bondset.py @@ -8,7 +8,11 @@ import itertools import numpy as np import math -import random + +try: + from tqdm import tqdm +except ImportError: + pass from .util import stat_moments, sliding, dist_with_pbc, transpose_and_sample from .util import extend_graph_chain, cross, backup_file @@ -351,14 +355,24 @@ class BondSet: # TypeError is raised when residues on end of chain calc bond to next pass - def boltzmann_invert(self): + def boltzmann_invert(self, progress=False): """ Perform Boltzmann Inversion of all bonds to calculate equilibrium value and force constant. + + :param progress: Display a progress bar using tqdm if available """ - for mol in self._molecules: - for bond in self._molecules[mol]: - bond.boltzmann_invert(temp=self._temperature, - angle_default_fc=self._angle_default_fc) + bond_iter = itertools.chain(*self._molecules.values()) + bond_iter_wrap = bond_iter + if progress: + try: + total = sum(map(len, self._molecules.values())) + bond_iter_wrap = tqdm(bond_iter, total=total) + except NameError: + pass + + for bond in bond_iter_wrap: + bond.boltzmann_invert(temp=self._temperature, + angle_default_fc=self._angle_default_fc) def dump_values(self, target_number=100000): """ diff --git a/pycgtool/pycgtool.py b/pycgtool/pycgtool.py index 2660c1d..deae69e 100755 --- a/pycgtool/pycgtool.py +++ b/pycgtool/pycgtool.py @@ -56,7 +56,7 @@ def main(args, config): if args.bnd: if args.map: logger.info("Beginning Boltzmann inversion") - bonds.boltzmann_invert() + bonds.boltzmann_invert(progress=True) if config.output_forcefield: logger.info("Creating GROMACS forcefield directory") ff = ForceField("ff" + config.output_name + ".ff") -- GitLab