def __init__(self, mln, db): self.mln = mln.materialize(db) self._evidence = [] # self.evidenceBackup = {} self._variables = {} self._variables_by_idx = {} # gnd atom idx -> variable self._variables_by_gndatomidx = {} # gnd atom idx self._gndatoms = {} self._gndatoms_by_idx = {} # get combined domain self.domains = mergedom(self.mln.domains, db.domains) # self.softEvidence = list(mln.posteriorProbReqs) # constraints on posterior # probabilities are nothing but # soft evidence and can be handled in exactly the same way # ground members self.formulas = list(self.mln.formulas) # self.gndAtoms = {} # self.gndBlockLookup = {} # self.gndBlocks = {} # self.gndAtomsByIdx = {} # self.gndFormulas = [] # self.gndAtomOccurrencesInGFs = [] if isinstance(db, basestring): db = Database.load(self.mln, dbfile=db) elif isinstance(db, Database): pass elif db is None: db = Database(self.mln) else: raise Exception("Not a valid database argument (type %s)" % (str(type(db)))) self.db = db # materialize formula weights self._materialize_weights() return
def __init__(self, db): self.mln = db.mln self.domains = mergedom(self.mln.domains, db.domains) self.gndatoms = Database.PseudoMRF.GroundAtomGen() # duplicate the database to avoid side effects self.evidence = Database.PseudoMRF.WorldValues(db.copy())