コード例 #1
0
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;
}
コード例 #2
0
ファイル: knn.cpp プロジェクト: drussel/imp
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;
  }
}
コード例 #3
0
ファイル: Object.cpp プロジェクト: newtonjoo/imp
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
}
コード例 #4
0
ファイル: KernelParameters.cpp プロジェクト: apolitis/imp
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];
}