Exemplo n.º 1
0
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()));
}
Exemplo n.º 2
0
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);
}
Exemplo n.º 3
0
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);
	}
}
Exemplo n.º 4
0
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;

}
Exemplo n.º 5
0
JsonNode* Settings::getNode(const char* path)
{
  JsonNode* node = queryNode(path);
  JsonArray* array = json_node_get_array (node);
  return json_array_get_element(array, 0);
}