void GreyhoundReader::prepared(PointTableRef table) { MetadataNode queryNode(table.privateMetadata("greyhound")); queryNode.add("info", dense(m_info)); queryNode.add("root", m_params.root()); queryNode.add("params", dense(m_params.toJson())); }
void BallTree<_Scalar>::computeNeighbors(const VectorType& x, Neighborhood<Scalar>* pNei) const { if (!mTreeIsUptodate) const_cast<BallTree*>(this)->rebuild(); pNei->clear(); mQueryPosition = x; queryNode(*mRootNode, pNei); }
void BallTree<_Scalar>::queryNode(Node& node, Neighborhood<Scalar>* pNei) const { if (node.leaf) { for (unsigned int i=0 ; i<node.size ; ++i) { int id = node.indices[i]; Scalar d2 = vcg::SquaredNorm(mQueryPosition - mPoints[id]); Scalar r = mRadiusScale * mRadii[id]; if (d2<r*r) pNei->insert(id, d2); } } else { if (mQueryPosition[node.dim] - node.splitValue < 0) queryNode(*node.children[0], pNei); else queryNode(*node.children[1], pNei); } }
int GibbsForMixtureBNet( float eps) { std::cout<<std::endl<<"Gibbs for mixture gaussian BNet"<<std::endl; CBNet* pMixBNet = pnlExCreateSimpleGauMix(); //create evidence for inference int nObsNds = 3; int obsNds[] = { 2, 3, 4 }; valueVector obsVals; obsVals.assign( 3, (Value)0 ); obsVals[0].SetFlt(-.5f); obsVals[1].SetFlt(2.0f); obsVals[2].SetFlt(1.0f); CEvidence* evid = CEvidence::Create( pMixBNet, nObsNds, obsNds, obsVals ); //create inference CNaiveInfEngine* infNaive = CNaiveInfEngine::Create( pMixBNet ); CGibbsSamplingInfEngine* infGibbs = CGibbsSamplingInfEngine::Create( pMixBNet ); //start inference with maximization intVector queryNode(1, 0); intVecVector queryes; queryes.push_back(queryNode); //naive inference infNaive->EnterEvidence( evid); infNaive->MarginalNodes( &queryNode.front(), 1 ); const CPotential* pQueryPot1 = infNaive->GetQueryJPD(); std::cout<<"Results of Naive"<<std::endl; pQueryPot1->Dump(); infGibbs->SetQueries(queryes); infGibbs->EnterEvidence( evid); infGibbs->MarginalNodes( &queryNode.front(), 1 ); const CPotential* pQueryPot2 = infGibbs->GetQueryJPD(); std::cout<<"Results of Gibbs"<<std::endl; pQueryPot2->Dump(); int ret = pQueryPot1->IsFactorsDistribFunEqual( pQueryPot2, eps, 0 ); delete evid; delete infNaive; delete infGibbs; delete pMixBNet; return ret; }
JsonNode* Settings::getNode(const char* path) { JsonNode* node = queryNode(path); JsonArray* array = json_node_get_array (node); return json_array_get_element(array, 0); }