[mlpack] Range search with periodic boundary conditions
董理
dongli at lasg.iap.ac.cn
Wed May 13 11:14:58 EDT 2015
Dear Ryan,
I have encountered the following error when compiling my search codes with CoverTree:
/opt/packman/mlpack/1.0.12/0/include/mlpack/methods/range_search/range_search_impl.hpp:245:63: error: implicit instantiation of undefined template
'mlpack::tree::CoverTree<geomtk::DomainMetric<geomtk::SphereDomain>, mlpack::tree::FirstPointIsRoot,
mlpack::tree::EmptyStatistic>::SingleTreeTraverser<mlpack::range::RangeSearchRules<geomtk::DomainMetric<geomtk::SphereDomain>,
mlpack::tree::CoverTree<geomtk::DomainMetric<geomtk::SphereDomain>, mlpack::tree::FirstPointIsRoot, mlpack::tree::EmptyStatistic> > >'
typename TreeType::template SingleTreeTraverser<RuleType> traverser(rules);
^
/Users/dongli/Works/lasm/src/AdvectionManager.cpp:206:12: note: in instantiation of member function
'mlpack::range::RangeSearch<geomtk::DomainMetric<geomtk::SphereDomain>, mlpack::tree::CoverTree<geomtk::DomainMetric<geomtk::SphereDomain>,
mlpack::tree::FirstPointIsRoot, mlpack::tree::EmptyStatistic> >::Search' requested here
search.Search(r, neighbors, distances);
^
…
/opt/packman/mlpack/1.0.12/0/include/mlpack/core/tree/cover_tree/cover_tree.hpp:212:9: note: template is declared here
class SingleTreeTraverser;
^
1 error generated.
The metric class is defined in my codes as:
template <class DomainType>
class DomainMetric {
public:
static const DomainType *domain;
DomainMetric() {}
template <typename VecType1, typename VecType2>
static double
Evaluate(const VecType1 &x, const VecType2 &y) {
return domain->calcDistance(x, y);
}
string
ToString() const {
return "Implement me!”;
}
}; // DomainMetric
template <class DomainType>
const DomainType* DomainMetric<DomainType>::domain = NULL;
And I define the RangeSearch template as
typedef geomtk::DomainMetric<typename Mesh::DomainType> MetricType;
typedef mlpack::tree::CoverTree<MetricType> TreeType;
typedef mlpack::range::RangeSearch<MetricType, TreeType> SearchType;
Any idea? Thanks in advance!
Best regards,
Li
> On 2015年5月13日, at 上午6:46, 董理 <dongli at lasg.iap.ac.cn> wrote:
>
> Never mind! I should modify my SpaceCoord to provide vec data.
>
>> On 2015年5月12日, at 下午2:44, 董理 <dongli at lasg.iap.ac.cn> wrote:
>>
>> Dear Ryan,
>>
>> One more thing. I would like to directly use the space coordinate class in my project instead of arma::mat in CoverTree, such as arma::field<SpaceCoord> (There is ‘col’ method in arma::field, but no ‘unsafe_col’). Because there are auxiliary data like cosLat, etc. It seems that arma::mat is hard-coded. Could I change this easily?
>>
>> Best regards,
>> Li
>>
>>> On 2015年5月12日, at 上午10:45, Ryan Curtin <ryan at ratml.org> wrote:
>>>
>>> On Tue, May 12, 2015 at 06:45:43AM +0800, 董理 wrote:
>>>> Dear Ryan,
>>>>
>>>> Thanks for your reply! I searched out on the internet, and found the following question:
>>>>
>>>> http://stackoverflow.com/questions/6917664/nearest-neighbor-search-with-periodic-boundary-conditions <http://stackoverflow.com/questions/6917664/nearest-neighbor-search-with-periodic-boundary-conditions>
>>>>
>>>> It seems ‘cover tree’ can be used for periodic boundary condition. I see there already is an implementation of cover tree. Could I use it?
>>>
>>> Yes, you could do that also; I didn't think of that. If you write a
>>> periodic metric (and it satisfies the conditions of a metric,
>>> importantly, the triangle inequality; I haven't thought about this),
>>> then you can plug that in as the MetricType template parameter to the
>>> CoverTree class, and then use that with the NeighborSearch class and you
>>> will get your results correctly.
>>>
>>> --
>>> Ryan Curtin | "No... not without incident."
>>> ryan at ratml.org | - John Preston
>>
>
>
> _______________________________________________
> mlpack mailing list
> mlpack at cc.gatech.edu
> https://mailman.cc.gatech.edu/mailman/listinfo/mlpack
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.cc.gatech.edu/pipermail/mlpack/attachments/20150513/3e9cff24/attachment.html>
More information about the mlpack
mailing list