def get_code()

in pplbench/ppls/jags/noisy_or_topic.py [0:0]


    def get_code(self) -> str:
        code = "model {\n"
        # generate the node probabilities
        code += "  prob[1] <- 1\n"  # leak node
        for node in 1 + np.arange(self.num_topics + self.num_words):
            # note that JAGS has 1-based arrays so we have to add one
            code += f"  prob[{node+1}] <- 1 - exp(-("
            for par, wt in enumerate(self.edge_weight[node, :]):
                if wt:
                    code += f"active[{par+1}]*{wt} + "
            code += "0))\n"
        # generate the topic nodes
        code += "  active[1] <- 1\n"  # leak node
        for node in 1 + np.arange(self.num_topics):
            code += f"  active[{node+1}] ~ dbern(prob[{node+1}])\n"
        # generate the word nodes
        for node in 1 + self.num_topics + np.arange(self.num_words):
            code += f"  S[{node-self.num_topics}] ~ dbern(prob[{node+1}])\n"
        code += "}"
        LOGGER.debug(code)
        return code