IMPMULTIFIT_BEGIN_NAMESPACE WeightedExcludedVolumeRestraint::WeightedExcludedVolumeRestraint( core::RigidBodies rbs, Refiner *refiner, FloatKey weight_key) : Restraint(IMP::internal::get_model(rbs), "Weighted Excluded Volume Restraint") { IMP_LOG_TERSE("Load WeightedExcludedVolumeRestraint \n"); rb_refiner_ = refiner; add_particles(rbs); rbs_ = rbs; initialize_model_density_map(weight_key); }
IMPEM_BEGIN_NAMESPACE FitRestraint::FitRestraint( ParticlesTemp ps, DensityMap *em_map, FloatPair norm_factors, FloatKey weight_key, float scale, bool use_rigid_bodies, KernelType kt ): Restraint(IMP::internal::get_model(ps), "Fit restraint"),kt_(kt) { use_rigid_bodies_=use_rigid_bodies; IMP_LOG(TERSE,"Load fit restraint with the following input:"<< "number of particles:"<<ps.size()<<" scale:"<<scale<< "\n"); // special_treatment_of_particles_outside_of_density_= // special_treatment_of_particles_outside_of_density; target_dens_map_ = em_map; weight_key_=weight_key; norm_factors_=norm_factors; IMP_IF_CHECK(USAGE) { for (unsigned int i=0; i< ps.size(); ++i) { IMP_USAGE_CHECK(core::XYZR::particle_is_instance(ps[i]), "Particle " << ps[i]->get_name() << " is not XYZR" << std::endl); IMP_USAGE_CHECK(ps[i]->has_attribute(weight_key), "Particle " << ps[i]->get_name() << " is missing the mass "<< weight_key << std::endl); } } scalefac_ = scale; store_particles(ps); IMP_LOG(TERSE,"after adding "<< all_ps_.size()<<" particles"<<std::endl); model_dens_map_ = new SampledDensityMap(*em_map->get_header(),kt_); model_dens_map_->set_particles(get_as<ParticlesTemp>(all_ps_),weight_key); kernel_params_=model_dens_map_->get_kernel_params(); dist_mask_=new DistanceMask(model_dens_map_->get_header()); IMP_LOG(TERSE,"going to initialize_model_density_map"<<std::endl); initialize_model_density_map(weight_key); IMP_LOG(TERSE,"going to initialize derivatives"<<std::endl); // initialize the derivatives dv_.insert(dv_.end(),all_ps_.size(),algebra::Vector3D(0.,0.,0.)); // normalize the target density data //target_dens_map->std_normalize(); IMP_LOG(TERSE, "Finish initialization" << std::endl); }