IMP logo
Public Member Functions | Static Public Member Functions
IMP::example::ExamplePairScore Class Reference

Detailed Description

Apply a harmonic to the distance between two particles.

The source code is as follows:

/**
* \file example_system_local/ExamplePairScore.h
* \brief A Score on the distance between a pair of particles.
*
* Copyright 2007-2012 IMP Inventors. All rights reserved.
*/
#ifndef IMP_EXAMPLE_SYSTEM_LOCAL_EXAMPLE_PAIR_SCORE_H
#define IMP_EXAMPLE_SYSTEM_LOCAL_EXAMPLE_PAIR_SCORE_H
#include "example_system_local_config.h"
#include <IMP/core/XYZ.h>
#include <IMP/PairScore.h>
#include <IMP/Pointer.h>
IMPEXAMPLESYSTEMLOCAL_BEGIN_NAMESPACE
//! Apply a harmonic to the distance between two particles.
/** The source code is as follows:
\include ExampleRestraint.h
\include ExampleRestraint.cpp
*/
class IMPEXAMPLESYSTEMLOCALEXPORT ExamplePairScore : public PairScore
{
double x0_, k_;
public:
ExamplePairScore(double x0, double k);
IMP_PAIR_SCORE(ExamplePairScore);
};
IMP_OBJECTS(ExamplePairScore, ExamplePairScores);
IMPEXAMPLESYSTEMLOCAL_END_NAMESPACE
#endif /* IMP_EXAMPLE_SYSTEM_LOCAL_EXAMPLE_PAIR_SCORE_H */
/**
* \file ExamplePairScore.cpp
* \brief A Score on the distance between a pair of particles.
*
* Copyright 2007-2012 IMP Inventors. All rights reserved.
*/
#include <IMP/core/XYZ.h>
#include <boost/lambda/lambda.hpp>
IMPEXAMPLE_BEGIN_NAMESPACE
ExamplePairScore::ExamplePairScore(double x0, double k): x0_(x0), k_(k) {}
Float ExamplePairScore::evaluate(const ParticlePair &p,
DerivativeAccumulator *da) const
{
// turn on logging for this method
// assume they have coordinates
core::XYZ d0(p[0]);
core::XYZ d1(p[1]);
// log something
double diff = (d0.get_coordinates()-d1.get_coordinates()).get_magnitude()-x0_;
IMP_LOG(VERBOSE, "The distance off from x0 is " << diff << std::endl);
double score= .5*k_*square(diff);
if (da) {
// derivatives are requested
algebra::Vector3D delta= d0.get_coordinates()-d1.get_coordinates();
algebra::Vector3D udelta= delta.get_unit_vector();
double dv= k_*diff;
// add to the particle derivatives
d0.add_to_derivatives(udelta*dv, *da);
d1.add_to_derivatives(-udelta*dv, *da);
}
return score;
}
ParticlesTemp ExamplePairScore::get_input_particles(Particle *p) const {
// return any particles that would be read if p is one of the particles
// being scored. Don't worry about returning duplicates.
return ParticlesTemp(1,p);
}
ContainersTemp ExamplePairScore::get_input_containers(Particle *) const {
// return any containers that would be read if p is one of the particles
// being scored. Don't worry about returning duplicates.
return ContainersTemp();
}
void ExamplePairScore::do_show(std::ostream &out) const {
out << "x0=" << x0_ << " and k=" << k_ << std::endl;
}
IMPEXAMPLE_END_NAMESPACE
+ Inheritance diagram for IMP::example::ExamplePairScore:

List of all members.

Public Member Functions

 ExamplePairScore (double x0, double k)
- Public Member Functions inherited from IMP::PairScore
 PairScore (std::string name="PairScore %1%")
Restraints create_current_decomposition (const ParticlePair &vt) const
virtual double evaluate (const ParticlePair &vt, DerivativeAccumulator *da) const =0
 Compute the score and the derivative if needed.
virtual double evaluate (const ParticlePairsTemp &o, DerivativeAccumulator *da) const
virtual double evaluate_if_good_index (Model *m, const ParticleIndexPair &vt, DerivativeAccumulator *da, double max) const
 Compute the score and the derivative if needed.
virtual double evaluate_if_good_indexes (Model *m, const ParticleIndexPairs &o, DerivativeAccumulator *da, double max) const
virtual double evaluate_index (Model *m, const ParticleIndexPair &vt, DerivativeAccumulator *da) const
 Compute the score and the derivative if needed.
virtual double evaluate_indexes (Model *m, const ParticleIndexPairs &o, DerivativeAccumulator *da) const
virtual ContainersTemp get_input_containers (Particle *p) const =0
virtual ParticlesTemp get_input_particles (Particle *p) const =0
- Public Member Functions inherited from IMP::base::Object
std::size_t __hash__ () const
virtual std::string get_type_name () const =0
 Return a string identifying the type of the object.
virtual IMP::base::VersionInfo get_version_info () const =0
 Get information about the module and version of the object.
void set_check_level (CheckLevel l)
void set_log_level (LogLevel l)
 Set the logging level used in this object.
void set_was_used (bool tf) const
void show (std::ostream &out=std::cout) const
const std::string & get_name () const
void set_name (std::string name)

Static Public Member Functions

static ExamplePairScoreget_from (IMP::base::Object *o)

Additional Inherited Members

- Public Types inherited from IMP::PairScore
typedef ParticlePair Argument
typedef ParticleIndexPair IndexArgument

The documentation for this class was generated from the following file:

Generated on Tue May 22 2012 23:33:35 for IMP by doxygen 1.8.1