int main(int argc, char *argv[]) { IMP::setup_from_argv(argc, argv, "Test ConsecutivePairContainer."); IMP_NEW(IMP::Model, m, ()); IMP::ParticleIndexes ps; IMP::algebra::BoundingBox3D bb(IMP::algebra::Vector3D(0, 0, 0), IMP::algebra::Vector3D(10, 10, 10)); for (unsigned int i = 0; i < 15; ++i) { ps.push_back(m->add_particle("P")); IMP::core::XYZ::setup_particle(m, ps.back(), IMP::algebra::get_random_vector_in(bb)); } IMP_NEW(IMP::container::ConsecutivePairContainer, cpc, (m, ps)); IMP_NEW(IMP::core::HarmonicDistancePairScore, hdps, (0, 1)); IMP::Pointer<IMP::Restraint> r = IMP::container::create_restraint(hdps.get(), cpc.get()); IMP_USAGE_CHECK(r->evaluate(false) > 0, "zero evaluate"); IMP::Pointer<IMP::Restraint> rd = r->create_decomposition(); IMP::RestraintsTemp rds = IMP::get_restraints(IMP::RestraintsTemp(1, rd)); IMP_USAGE_CHECK(rds.size() == ps.size() - 1, "Bad lengths: " << rds.size() << " vs " << ps.size() - 1); double re = r->evaluate(false); double rde = rd->evaluate(false); IMP_CHECK_VARIABLE(re); IMP_CHECK_VARIABLE(rde); IMP_USAGE_CHECK(std::abs(rde - re) < .1, "Invalid decomposed score: " << re << " vs " << rde); return 0; }
void KNNData::fill_nearest_neighbors_v(const algebra::VectorKD &g, unsigned int k, double eps, Ints &ret) const { VectorWithIndex d(std::numeric_limits<int>::max(), g); RealRCTree:: K_neighbor_search search(dynamic_cast<RealRCTree*>(tree_.get()) ->tree, d, k, eps); IMP_IF_CHECK(base::USAGE_AND_INTERNAL) { int nump=std::distance(dynamic_cast<RealRCTree*>(tree_.get()) ->tree.begin(), dynamic_cast<RealRCTree*>(tree_.get()) ->tree.end()); int realk=std::min<int>(nump, k); IMP_CHECK_VARIABLE(realk); IMP_INTERNAL_CHECK(std::distance(search.begin(), search.end()) == static_cast<int>(realk), "Got the wrong number of points out from CGAL neighbor" << " search. Expected " << realk << " got " << std::distance(search.begin(), search.end())); } Ints::iterator rit = ret.begin(); for ( RealRCTree::K_neighbor_search::iterator it = search.begin(); it != search.end(); ++it) { *rit= it->first; ++rit; } }
void Object::set_log_level(LogLevel l) { IMP_CHECK_VARIABLE(l); IMP_USAGE_CHECK(l <= MEMORY && l >= DEFAULT, "Setting to invalid log level " << l); #if IMP_HAS_LOG != IMP_SILENT if (l != log_level_) { log_level_ = l; } #endif }
const RadiusDependentKernelParameters& KernelParameters::set_params(float radius) { IMP_USAGE_CHECK(initialized_, "The Kernel Parameters are not initialized"); std::map<float ,const RadiusDependentKernelParameters *>::iterator iter = radii2params_.find(radius); IMP_CHECK_VARIABLE(iter); IMP_USAGE_CHECK(iter == radii2params_.end(), "The Kernel Parameters for the radius " << radius << " have already been calculated"); radii2params_[radius]=new RadiusDependentKernelParameters( radius,rsigsq_,timessig_,sq2pi3_, inv_rsigsq_,rnormfac_,rkdist_); return *radii2params_[radius]; }