def conditional_transition_probability(self, steps, ensemble, force=False): """ This transition's conditional transition probability for a given ensemble. The conditional transition probability for an ensemble is the probability that a path in that ensemble makes the transition from state A to state B. Parameters ---------- steps : iterable of :class:`.MCStep` cycles to analyze ensemble : Ensemble which ensemble to calculate the CTP for force : bool (False) if true, cached results are overwritten """ samples = sampleset_sample_generator(steps) n_acc = 0 n_try = 0 for samp in samples: if samp.ensemble is ensemble: if self.stateB(samp.trajectory.get_as_proxy(-1)): n_acc += 1 n_try += 1 ctp = float(n_acc)/n_try logger.info("CTP: " + str(n_acc) + "/" + str(n_try) + "=" + str(ctp) + "\n") try: self.ctp[ensemble] = ctp except AttributeError: self.ctp = { ensemble : ctp } return ctp
def all_statistics(self, steps, weights=None, force=False): """ Run all statistics for all ensembles. """ # TODO: speed this up by just running over all samples once and # dealing them out to the appropriate histograms for ens in self.ensembles: samples = sampleset_sample_generator(steps) self.ensemble_statistics(ens, samples, weights, force)