#!/usr/bin/env python import openpnl #print dir(openpnl) model = openpnl.pnlExCreateRndArHMM() #model = openpnl.pnlExCreateKjaerulfsBNet() pArHMM = openpnl.CDBN_Create(model) pInfEng = openpnl.C1_5SliceJtreeInfEngine_Create(pArHMM) nTimeSlices = 5 # set up evidence ... pEvidences = openpnl.newCEvidences(nTimeSlices) for i in range(0,nTimeSlices): ev = openpnl.mkEvidence( pArHMM, [1], [1.0] ); openpnl.assignEvidence( pEvidences, ev, i ) pInfEng.DefineProcedure(openpnl.ptSmoothing, nTimeSlices) pInfEng.EnterEvidence(pEvidences, nTimeSlices) pInfEng.Smoothing() queryPrior = [0] #queryPrior = openpnl.intVector([0]) queryPriorSize = 1 slice_ = 0 pInfEng.MarginalNodes(queryPrior, queryPriorSize, slice_) pQueryJPD = pInfEng.GetQueryJPD(); mdl = pQueryJPD.GetModelDomain() mat = pQueryJPD.GetMatrix(openpnl.matTable)
#!/usr/bin/env python import openpnl pWSBnet = openpnl.pnlExCreateWaterSprinklerBNet() pWSBnet.GetGraph().Dump() pEvidForWS = openpnl.mkEvidence(pWSBnet, [0], [1]) pNaiveInf = openpnl.CNaiveInfEngine.Create(pWSBnet) pNaiveInf.EnterEvidence(pEvidForWS) nodes = [1, 3] pNaiveInf.MarginalNodes(nodes) pMarg = pNaiveInf.GetQueryJPD() obsVls = openpnl.pConstValueVector() #print obsVls #pEvidForWS.GetObsNodesWithValues( openpnl.toIntVector(nodes), obsVls ) print openpnl.convertVector( pMarg.GetMatrix(openpnl.matTable).ConvertToDense().GetVector())
]: parents = pGraph.GetParents(node); print "node: ", node, " parents: ", parents domain = list(parents) + [node] cCPD = openpnl.CTabularCPD.Create( pBNet.GetModelDomain() , openpnl.toConstIntVector(domain) ) cCPD.AllocMatrix( cpdvals, openpnl.matTable ) cCPD.NormalizeCPD() pBNet.AttachFactor(cCPD) # Set up the inference engine infEngine = openpnl.CPearlInfEngine.Create( pBNet ); # Problem 1 P(W|C=0) ev = openpnl.mkEvidence( pBNet, [0], [0] ) infEngine.EnterEvidence(ev) infEngine.pyMarginalNodes( [3], 0 ) infEngine.GetQueryJPD().Dump() m = openpnl.convertVector(infEngine.GetQueryJPD().GetMatrix(openpnl.matTable).ConvertToDense().GetVector()) index = np.arange(0,2,1) plt.figure() plt.bar(index, m) plt.title("Marginal of P(WetGrass|Cloudy=False)") plt.ylabel("P(WetGress = x)"); plt.xticks(index+0.5, ('WetGrass=False', "WetGrass=True")) # Problem 1 P(W|C=1) ev = openpnl.mkEvidence( pBNet, [0], [1] ) infEngine.EnterEvidence(ev)
#!/usr/bin/env python import openpnl pWSBnet = openpnl.pnlExCreateWaterSprinklerBNet() pWSBnet.GetGraph().Dump() pEvidForWS = openpnl.mkEvidence(pWSBnet, [0], [1]) pNaiveInf = openpnl.CNaiveInfEngine.Create(pWSBnet) pNaiveInf.EnterEvidence(pEvidForWS) nodes = [1, 3] pNaiveInf.MarginalNodes(nodes) pMarg = pNaiveInf.GetQueryJPD() obsVls = openpnl.pConstValueVector() # print obsVls # pEvidForWS.GetObsNodesWithValues( openpnl.toIntVector(nodes), obsVls ) print openpnl.convertVector(pMarg.GetMatrix(openpnl.matTable).ConvertToDense().GetVector())