def add_param_logs(self, logger): """ Add entires to the logfile corresponding to individual feature substition rates if rate variation is configured. """ if self.config.admin.log_fine_probs: xml.log(logger, idref="sphericalGeographyLikelihood")
def add_logging(self, beastxml, tracer_logger): super().add_logging(beastxml, tracer_logger) # Fine-grained logging if beastxml.config.admin.log_fine_probs: xml.log(tracer_logger, idref="YuleModel.t:beastlingTree") xml.log(tracer_logger, idref="YuleBirthRatePrior.t:beastlingTree")
def add_param_logs(self, logger): BaseClock.add_param_logs(self, logger) xml.log(logger, id="rate.c:%s" % self.name, spec="beast.evolution.branchratemodel.RateStatistic", branchratemodel="@%s" % self.branchrate_model_id, tree="@Tree.t:beastlingTree")
def add_trait_logger(self, suffix=""): """Add a logger referencing all AncestralStateLogger likelihoods in the tree.""" trait_logger = xml.logger(self.run, fileName=self.config.admin.path(suffix + ".log"), logEvery=self.config.admin.log_every, id="traitLogger" + suffix) for model in self.config.models: for reference in model.metadata: xml.log(trait_logger, idref=reference)
def add_logging(self, beastxml, tracer_logger): # Log tree height if not beastxml.config.tree_logging_pointless: xml.log(tracer_logger, id="treeStats", spec="beast.evolution.tree.TreeStatLogger", tree="@Tree.t:beastlingTree") # Fine-grained logging if beastxml.config.admin.log_params: self.add_fine_logging(tracer_logger)
def add_tracer_logger(self): """ Add file logger, if configured to do so. """ if not (self.config.admin.log_probabilities or self.config.admin.log_params): return tracer_logger = xml.logger(self.run, id="tracelog", fileName=self.config.admin.path(".log"), logEvery=self.config.admin.log_every, sort="smart") # Log prior, likelihood and posterior if self.config.admin.log_probabilities: xml.log(tracer_logger, idref="prior") xml.log(tracer_logger, idref="likelihood") xml.log(tracer_logger, idref="posterior") if self.config.admin.log_params: # Log tree metadata self.config.treeprior.add_logging(self, tracer_logger) for clock in self.config.clocks: clock.add_param_logs(tracer_logger) for model in self.config.all_models: model.add_param_logs(tracer_logger) # Log calibration clade heights for clade, cal in sorted( itertools.chain(self.config.calibrations.items(), self.config.tip_calibrations.items())): # Don't log unchanging tip heights if cal.dist == "point": continue xml.log(tracer_logger, idref="%sMRCA" % clade.replace(" ", "_"))
def add_param_logs(self, logger): BinaryModel.add_param_logs(self, logger) for fname in self.parameter_identifiers(): xml.log(logger, idref="covarion_alpha.s:%s" % fname) xml.log(logger, idref="covarion_s.s:%s" % fname) if self.config.admin.log_fine_probs: xml.log(logger, idref="covarion_alpha_prior.s:%s" % fname) xml.log(logger, idref="covarion_s_prior.s:%s" % fname)
def add_logging(self, beastxml, tracer_logger): # Log tree model parameters if self.type in ["yule", "birthdeath"]: xml.log(tracer_logger, idref="birthRate.t:beastlingTree") if self.type in ["birthdeath"]: xml.log(tracer_logger, idref="deathRate.t:beastlingTree") xml.log(tracer_logger, idref="sampling.t:beastlingTree") elif self.type == "coalescent": xml.log(tracer_logger, idref="popSize.t:beastlingTree") # Log tree height if not beastxml.config.tree_logging_pointless: xml.log(tracer_logger, id="treeStats", spec="beast.evolution.tree.TreeStatLogger", tree="@Tree.t:beastlingTree")
def add_screen_logger(self): """ Add the screen logger, if configured to do so. """ if self.config.admin.screenlog: screen_logger = xml.logger(self.run, id="screenlog", logEvery=self.config.admin.log_every) xml.log(screen_logger, arg="@posterior", id="ESS.0", spec="util.ESS") xml.log(screen_logger, idref="prior") xml.log(screen_logger, idref="likelihood") xml.log(screen_logger, idref="posterior")
def add_trait_tree_logger(self, suffix=""): tree_logger = xml.logger(self.run, mode="tree", fileName=self.config.admin.path(suffix + ".nex"), logEvery=self.config.admin.log_every, id="treeLogger" + suffix) log = xml.log(tree_logger, id="ReconstructedStateTreeLogger", spec="beast.evolution.tree.TreeWithTraitLogger", tree="@{:}".format(self.config.treeprior.tree_id)) for model in self.config.models: for md in model.treedata: xml.metadata(log, idref=md)
def add_param_logs(self, logger): """ Add entires to the logfile corresponding to individual feature substition rates if rate variation is configured. """ if self.config.admin.log_fine_probs: if not self.single_sitemodel: plate = xml.plate(logger, var="feature", range=self.features) xml.log(plate, idref="featureLikelihood:%s:$(feature)" % self.name) if self.rate_variation: xml.log(logger, idref="featureClockRatePrior.s:%s" % self.name) xml.log(logger, idref="featureClockRateGammaScalePrior.s:%s" % self.name) if self.frequencies == "estimate": self.add_frequency_logs(logger) if self.rate_variation: plate = xml.plate(logger, var="rate", range=self.all_rates) xml.log(plate, idref="featureClockRate:%s:$(rate)" % self.name) # Log the scale, but not the shape, as it is always 1 / scale # We prefer the scale because it is positively correlated with extent of variation xml.log(logger, idref="featureClockRateGammaShape:%s" % self.name)
def add_tree_logger(self, suffix="", branchrate_model_id=None, locations=False): tree_logger = xml.logger(self.run, mode="tree", fileName=self.config.admin.path(suffix + ".nex"), logEvery=self.config.admin.log_every, id="treeLogger" + suffix) log = xml.log(tree_logger, id="TreeLoggerWithMetaData" + suffix, spec="beast.evolution.tree.TreeWithMetaDataLogger", tree="@{:}".format(self.config.treeprior.tree_id), dp=self.config.admin.log_dp) if branchrate_model_id: xml.branchratemodel(log, idref=branchrate_model_id) if locations: xml.metadata(log, text="0.0", id="location", spec="sphericalGeo.TraitFunction", likelihood="@sphericalGeographyLikelihood")
def add_param_logs(self, logger): RelaxedClock.add_param_logs(self, logger) # Log lognormal stddev xml.log(logger, idref="ucldSdev.c:%s" % self.name)
def add_fine_logging(self, tracer_logger): # Log tree model parameters xml.log(tracer_logger, idref="birthRate.t:beastlingTree") xml.log(tracer_logger, idref="YuleModel.t:beastlingTree") xml.log(tracer_logger, idref="YuleBirthRatePrior.t:beastlingTree")
def add_logging(self, beastxml, tracer_logger): super().add_logging(beastxml, tracer_logger) xml.log( tracer_logger, idref="birthRate.t:beastlingTree")
def add_fine_logging(self, tracer_logger): # Log tree model parameters xml.log(tracer_logger, idref="birthRate.t:beastlingTree") xml.log(tracer_logger, idref="deathRate.t:beastlingTree") xml.log(tracer_logger, idref="sampling.t:beastlingTree")
def add_param_logs(self, logger): BaseModel.add_param_logs(self, logger) if self.gamma_categories > 0: xml.log(logger, idref="gammaShape.s:%s" % self.name)
def add_frequency_logs(self, logger): for fname in self.parameter_identifiers(): xml.log(logger, idref="%s:visiblefrequencies.s" % fname)
def add_frequency_logs(self, logger): for f in self.features: fname = "%s:%s" % (self.name, f) xml.log(logger, idref="feature_freqs_param.s:%s" % fname)
def add_param_logs(self, logger): # Log mean clock rate xml.log(logger, idref="clockRate.c:%s" % self.name)
def add_param_logs(self, logger): BinaryModel.add_param_logs(self, logger) for fname in self.parameter_identifiers(): xml.log(logger, idref="%s:pdcovarion_s.s" % fname) xml.log(logger, idref="%s:pdcovarion_origin.s" % fname) xml.log(logger, idref="%s:pdcovarion_death.s" % fname) if self.config.admin.log_fine_probs: xml.log(logger, idref="%s:pdcovarion_s_prior.s" % fname) xml.log(logger, idref="%s:pdcovarion_origin_prior.s" % fname) xml.log(logger, idref="%s:pdcovarion_death_prior.s" % fname)
def add_param_logs(self, logger): RelaxedClock.add_param_logs(self, logger) xml.log(logger, idref="clockRateGammaShape:%s" % self.name)
def add_fine_logging(self, tracer_logger): xml.log(tracer_logger, idref="popSize.t:beastlingTree")
def add_param_logs(self, logger): BaseClock.add_param_logs(self, logger) xml.log(logger, idref="Indicators.c:%s" % self.name) xml.log(logger, idref="clockrates.c:%s" % self.name) xml.log(logger, idref="RandomRateChangesCount:%s" % self.name) xml.log(logger, idref=self.shape_id)
def add_frequency_logs(self, logger): for name in self.parameter_identifiers(): xml.log(logger, idref="freqs_param.s:%s" % name)
def add_param_logs(self, logger): BaseModel.add_param_logs(self, logger) for f in self.features: fname = "%s:%s" % (self.name, f) xml.log(logger, idref="rateIndicator.s:%s" % fname) xml.log(logger, idref="relativeGeoRates.s:%s" % fname)