Index: include/IMP/restraints/DistanceRestraint.h =================================================================== --- include/IMP/restraints/DistanceRestraint.h (revision 651) +++ include/IMP/restraints/DistanceRestraint.h (working copy) @@ -28,23 +28,18 @@ class IMPDLLEXPORT DistanceRestraint : public Restraint { public: - - DistanceRestraint(Model* model, Particle* p1, Particle* p2, + //! Create the distance restraint. + /** \param[in] p1 Pointer to first particle in distance restraint. + \param[in] p2 Pointer to second particle in distance restraint. + \param[in] score_func Scoring function for the restraint. + */ + DistanceRestraint(Particle* p1, Particle* p2, ScoreFunc* score_func); virtual ~DistanceRestraint(); IMP_RESTRAINT("0.5", "Daniel Russel") protected: - //! Do set up for the distance restraint constructors. - /** \param[in] model Pointer to the model. - \param[in] p1 Pointer to first particle in distance restraint. - \param[in] p2 Pointer to second particle in distance restraint. - \param[in] score_func Scoring function for the restraint. - */ - void set_up(Model* model, Particle* p1, Particle* p2, - ScoreFunc* score_func); - //! scoring function for this restraint ScoreFunc* score_func_; }; Index: include/IMP/restraints/SphericalRestraint.h =================================================================== --- include/IMP/restraints/SphericalRestraint.h (revision 651) +++ include/IMP/restraints/SphericalRestraint.h (working copy) @@ -22,8 +22,8 @@ class IMPDLLEXPORT SphericalRestraint : public Restraint { public: + // Create the SphericalRestraint. /** - \param[in] model \param[in] p The particle to restrict. \param[in] x The x coordinate to take distance to. \param[in] y The y coordinate to take distance to. @@ -31,7 +31,7 @@ \param[in] score_func The scoring function. It is deleted in the destructor. */ - SphericalRestraint(Model* model, Particle* p, + SphericalRestraint(Particle* p, Float x, Float y, Float z, ScoreFunc* score_func); virtual ~SphericalRestraint(); Index: src/restraints/ProximityRestraint.cpp =================================================================== --- src/restraints/ProximityRestraint.cpp (revision 651) +++ src/restraints/ProximityRestraint.cpp (working copy) @@ -39,7 +39,7 @@ // create the restraint ScoreFunc *sf = score_func_params->create_score_func(); - dist_rsrs_[idx] = new DistanceRestraint(model, get_particle(i), + dist_rsrs_[idx] = new DistanceRestraint(get_particle(i), get_particle(j), sf); idx++; @@ -84,8 +84,7 @@ IMP_LOG(VERBOSE, i << " " << j << " add distance: " << actual_mean); score_func_params->set_mean(actual_mean); ScoreFunc *sf = score_func_params->create_score_func(); - dist_rsrs_[idx] = new DistanceRestraint(model, - get_particle(i), + dist_rsrs_[idx] = new DistanceRestraint(get_particle(i), get_particle(j), sf); idx++; Index: src/restraints/DistanceRestraint.cpp =================================================================== --- src/restraints/DistanceRestraint.cpp (revision 651) +++ src/restraints/DistanceRestraint.cpp (working copy) @@ -19,29 +19,9 @@ //! particles must be at least this far apart to calculate the restraint static const Float MIN_DISTANCE = 0.0000001; -//! Constructor - set up the restraint using a given mean. -/** \param[in] model Pointer to the model. - \param[in] p1 Pointer to first particle in distance restraint. - \param[in] p2 Pointer to second particle in distance restraint. - \param[in] score_func Scoring function for the restraint. - */ -DistanceRestraint::DistanceRestraint(Model* model, Particle* p1, Particle* p2, +DistanceRestraint::DistanceRestraint(Particle* p1, Particle* p2, ScoreFunc* score_func) { - set_up(model, p1, p2, score_func); -} - - -//! Do set up for the distance restraint constructors. -/** \param[in] model Pointer to the model. - \param[in] p1 Pointer to first particle in distance restraint. - \param[in] p2 Pointer to second particle in distance restraint. - \param[in] score_func_params Score function parameters for the restraint. - */ -void DistanceRestraint::set_up(Model* , Particle* p1, Particle* p2, - ScoreFunc* score_func) -{ - // LogMsg(VERBOSE, "Set up distance restraint."); add_particle(p1); add_particle(p2); @@ -100,7 +80,10 @@ score = (*score_func_)(distance); } - IMP_LOG(VERBOSE, "distance: " << distance << " score: " << score); + IMP_LOG(VERBOSE, "For " << get_particle(0)->get_index() + << " and " << get_particle(1)->get_index() + << " distance: " << distance + << " score: " << score << std::endl); return score; } @@ -122,6 +105,7 @@ out << " and " << get_particle(1)->get_index(); out << " "; score_func_->show(out); + out << std::endl; } } // namespace IMP Index: src/restraints/PairConnectivityRestraint.cpp =================================================================== --- src/restraints/PairConnectivityRestraint.cpp (revision 651) +++ src/restraints/PairConnectivityRestraint.cpp (working copy) @@ -53,8 +53,7 @@ } else { IMP_LOG(VERBOSE, "Adding possible restraint: " << i << " " << j); ScoreFunc *sf = score_func_params->create_score_func(); - rs_iter->rsr_ = new DistanceRestraint(model, - get_particle(i), + rs_iter->rsr_ = new DistanceRestraint(get_particle(i), get_particle(j), sf); @@ -118,8 +117,7 @@ } else { IMP_LOG(VERBOSE, "Adding possible restraint: " << i << " " << j); ScoreFunc *sf = score_func_params->create_score_func(); - rs_iter->rsr_ = new DistanceRestraint(model, - get_particle(i), + rs_iter->rsr_ = new DistanceRestraint(get_particle(i), get_particle(j), sf); Index: src/restraints/SphericalRestraint.cpp =================================================================== --- src/restraints/SphericalRestraint.cpp (revision 651) +++ src/restraints/SphericalRestraint.cpp (working copy) @@ -22,7 +22,7 @@ -SphericalRestraint::SphericalRestraint(Model*, Particle* p, +SphericalRestraint::SphericalRestraint(Particle* p, Float x, Float y, Float z, ScoreFunc* score_func) { @@ -79,10 +79,13 @@ out << "Spherical restraint (inactive):" << std::endl; } - out << "version: " << version() << " "; - out << "last_modified_by: " << last_modified_by() << std::endl; + out << " version: " << version() << " "; + out << " last_modified_by: " << last_modified_by() << std::endl; out << " particle: " << get_particle(0)->get_index(); + out << " "; + score_func_->show(out); out << std::endl; + out << std::endl; } } // namespace IMP Index: src/restraints/ConnectivityRestraint.cpp =================================================================== --- src/restraints/ConnectivityRestraint.cpp (revision 651) +++ src/restraints/ConnectivityRestraint.cpp (working copy) @@ -51,8 +51,7 @@ // create the restraint ScoreFunc *sf = score_func_params->create_score_func(); - rs_iter->rsr_ = new DistanceRestraint(model, - get_particle(i), + rs_iter->rsr_ = new DistanceRestraint(get_particle(i), get_particle(j), sf); ++rs_iter; @@ -109,8 +108,7 @@ // create the restraint ScoreFunc *sf = score_func_params->create_score_func(); - rs_iter->rsr_ = new DistanceRestraint(model, - get_particle(i), + rs_iter->rsr_ = new DistanceRestraint(get_particle(i), get_particle(j), sf); ++rs_iter; Index: src/restraints/ExclusionVolumeRestraint.cpp =================================================================== --- src/restraints/ExclusionVolumeRestraint.cpp (revision 651) +++ src/restraints/ExclusionVolumeRestraint.cpp (working copy) @@ -74,8 +74,7 @@ // create the restraint ScoreFunc *sf = score_func_params->create_score_func(); - dist_rsrs_.push_back(new DistanceRestraint(model, - get_particle(i), + dist_rsrs_.push_back(new DistanceRestraint(get_particle(i), get_particle(j), sf)); } @@ -128,8 +127,7 @@ // create the restraint ScoreFunc *sf = score_func_params->create_score_func(); - dist_rsrs_.push_back(new DistanceRestraint(model, - get_particle(i), + dist_rsrs_.push_back(new DistanceRestraint(get_particle(i), get_particle(j), sf)); idx++; Index: test/coordinate/test_coordinate.py =================================================================== --- test/coordinate/test_coordinate.py (revision 651) +++ test/coordinate/test_coordinate.py (working copy) @@ -25,8 +25,7 @@ def _do_test(self, center, sf): """All coordinate values should be greater than the set minimum""" - r= IMP.SphericalRestraint(self.model, - self.model.get_particle(self.pi), + r= IMP.SphericalRestraint(self.model.get_particle(self.pi), center[0], center[1], center[2], sf) ri=self.model.add_restraint(r) Index: test/distance/test_distance.py =================================================================== --- test/distance/test_distance.py (revision 651) +++ test/distance/test_distance.py (working copy) @@ -35,7 +35,7 @@ for sf in (IMP.HarmonicUpperBound(mean, 0.1), IMP.HarmonicLowerBound(mean, 0.1), IMP.Harmonic(mean, 0.1)): - r = IMP.DistanceRestraint(self.imp_model, p1, p2, sf) + r = IMP.DistanceRestraint(p1, p2, sf) self.rsrs.append(r) def _make_restraints(self): @@ -53,27 +53,27 @@ # all should be 0.0 for fs in (IMP.HarmonicUpperBound(3.0, 0.1), IMP.HarmonicLowerBound(3.0, 0.1), IMP.Harmonic(3.0, 0.1)): - r = IMP.DistanceRestraint(self.imp_model, self.particles[1], + r = IMP.DistanceRestraint(self.particles[1], self.particles[0], fs) self.rsrs.append(r) # exceed lower bound for fs in (IMP.HarmonicUpperBound(5.0, 0.1), IMP.HarmonicLowerBound(5.0, 0.1), IMP.Harmonic(5.0, 0.1)): - r = IMP.DistanceRestraint(self.imp_model, self.particles[1], + r = IMP.DistanceRestraint(self.particles[1], self.particles[2], fs) self.rsrs.append(r) # exceed upper bound for fs in (IMP.HarmonicUpperBound(4.0, 0.1), IMP.HarmonicLowerBound(4.0, 0.1), IMP.Harmonic(4.0, 0.1)): - r = IMP.DistanceRestraint(self.imp_model, self.particles[0], + r = IMP.DistanceRestraint(self.particles[0], self.particles[2], fs) self.rsrs.append(r) def test_show(self): """Test Restraint::show() method""" - r = IMP.DistanceRestraint(self.imp_model, self.particles[1], + r = IMP.DistanceRestraint(self.particles[1], self.particles[0], IMP.Harmonic(0.0, 0.1)) r.show() Index: test/misc/test_restraint_sets.py =================================================================== --- test/misc/test_restraint_sets.py (revision 651) +++ test/misc/test_restraint_sets.py (working copy) @@ -17,7 +17,7 @@ 20.0, 74.0, -80.0)) # separate particles by 5.0: - self.distrsr = IMP.DistanceRestraint(self.model, self.particles[0], + self.distrsr = IMP.DistanceRestraint(self.particles[0], self.particles[1], IMP.Harmonic(5.0, 0.1)) Index: test/modeller/test_exclusion_volumes.py =================================================================== --- test/modeller/test_exclusion_volumes.py (revision 651) +++ test/modeller/test_exclusion_volumes.py (working copy) @@ -126,14 +126,14 @@ p2 = self.particles[i+1] mean = p1.get_value(radius) + p2.get_value(radius) sf = IMP.HarmonicUpperBound(mean, 0.1) - rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf)) + rsrs.append(IMP.DistanceRestraint(p1, p2, sf)) for i in range(5, 11): p1 = self.particles[i] p2 = self.particles[i+1] mean = p1.get_value(radius) + p2.get_value(radius) sf = IMP.HarmonicUpperBound(mean, 0.1) - rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf)) + rsrs.append(IMP.DistanceRestraint(p1, p2, sf)) # create the exclusion volume for each protein score_func_params_lb = IMP.BasicScoreFuncParams("harmonic_lower_bound", 0.0, 0.1) @@ -192,14 +192,14 @@ p2 = self.particles[i+1] mean = p1.get_value(radius) + p2.get_value(radius) sf = IMP.HarmonicUpperBound(mean, 0.1) - rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf)) + rsrs.append(IMP.DistanceRestraint(p1, p2, sf)) for i in range(5, 11): p1 = self.particles[i] p2 = self.particles[i+1] mean = p1.get_value(radius) + p2.get_value(radius) sf = IMP.HarmonicUpperBound(mean, 0.1) - rsrs.append(IMP.DistanceRestraint(self.imp_model, p1, p2, sf)) + rsrs.append(IMP.DistanceRestraint(p1, p2, sf)) # create the exclusion volume for each protein score_func_params_lb = IMP.BasicScoreFuncParams("harmonic_lower_bound", 0.0, 0.1) Index: test/sd_optimizer/test_sd_optimizer.py =================================================================== --- test/sd_optimizer/test_sd_optimizer.py (revision 651) +++ test/sd_optimizer/test_sd_optimizer.py (working copy) @@ -36,7 +36,7 @@ p2 = self.particles[pairs[1]] mean = p1.get_value(radkey) + p2.get_value(radkey) sf = IMP.Harmonic(mean, 0.1) - rsr = IMP.DistanceRestraint(self.imp_model, p1, p2, sf) + rsr = IMP.DistanceRestraint(p1, p2, sf) self.rsrs.append(rsr) # add restraints Index: pyext/IMP/utils.py =================================================================== --- pyext/IMP/utils.py (revision 651) +++ pyext/IMP/utils.py (working copy) @@ -88,7 +88,7 @@ mean = particles[i].get_value(radius_name) \ + particles[j].get_value(radius_name) sf = IMP.HarmonicLowerBound(mean, sd) - rsrs.append(IMP.DistanceRestraint(model, particles[i], particles[j], + rsrs.append(IMP.DistanceRestraint(particles[i], particles[j], sf)) Index: pyext/IMP/xml_loader.py =================================================================== --- pyext/IMP/xml_loader.py (revision 651) +++ pyext/IMP/xml_loader.py (working copy) @@ -198,7 +198,7 @@ score_func_params = get_basic_score_func_params(score_func_str, distance, sd) sf = score_func_params.create_score_func() - model.restraints.append(IMP.DistanceRestraint(model, p1, p2, sf)) + model.restraints.append(IMP.DistanceRestraint(p1, p2, sf)) model.restraint_sets[rs_idx].add_restraint(model.restraints[len(model.restraints)-1]) Index: pyext/IMP.i =================================================================== --- pyext/IMP.i (revision 651) +++ pyext/IMP.i (working copy) @@ -25,10 +25,10 @@ args[1].thisown=0 %} %pythonprepend DistanceRestraint::DistanceRestraint %{ - args[3].thisown=0 + args[2].thisown=0 %} %pythonprepend SphericalRestraint::SphericalRestraint %{ - args[5].thisown=0 + args[4].thisown=0 %} }