Ejemplo n.º 1
0
 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")
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
 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")
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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(" ", "_"))
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
    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")
Ejemplo n.º 9
0
 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")
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
 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")
Ejemplo n.º 13
0
 def add_param_logs(self, logger):
     RelaxedClock.add_param_logs(self, logger)
     # Log lognormal stddev
     xml.log(logger, idref="ucldSdev.c:%s" % self.name)
Ejemplo n.º 14
0
 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")
Ejemplo n.º 15
0
 def add_logging(self, beastxml, tracer_logger):
     super().add_logging(beastxml, tracer_logger)
     xml.log(
         tracer_logger,
         idref="birthRate.t:beastlingTree")
Ejemplo n.º 16
0
 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")
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
 def add_frequency_logs(self, logger):
     for fname in self.parameter_identifiers():
         xml.log(logger, idref="%s:visiblefrequencies.s" % fname)
Ejemplo n.º 19
0
 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)
Ejemplo n.º 20
0
 def add_param_logs(self, logger):
     # Log mean clock rate
     xml.log(logger, idref="clockRate.c:%s" % self.name)
Ejemplo n.º 21
0
 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)
Ejemplo n.º 22
0
 def add_param_logs(self, logger):
     RelaxedClock.add_param_logs(self, logger)
     xml.log(logger, idref="clockRateGammaShape:%s" % self.name)
Ejemplo n.º 23
0
 def add_fine_logging(self, tracer_logger):
     xml.log(tracer_logger, idref="popSize.t:beastlingTree")
Ejemplo n.º 24
0
 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)
Ejemplo n.º 25
0
 def add_frequency_logs(self, logger):
     for name in self.parameter_identifiers():
         xml.log(logger, idref="freqs_param.s:%s" % name)
Ejemplo n.º 26
0
 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)