IMP  2.0.1
The Integrative Modeling Platform
IMP::example::ExamplePairScore Class Reference

Apply a harmonic to the distance between two particles. More...

#include <IMP/example/ExamplePairScore.h>

+ Inheritance diagram for IMP::example::ExamplePairScore:

Public Member Functions

 ExamplePairScore (double x0, double k)
 
virtual void do_show (std::ostream &out) const
 
- Public Member Functions inherited from IMP::kernel::PairScore
 PairScore (std::string name="PairScore %1%")
 
Restraints create_current_decomposition (Model *m, const ParticleIndexPair &vt) const
 
virtual double evaluate (const ParticlePair &vt, DerivativeAccumulator *da) const
 Compute the score and the derivative if needed.
 
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, unsigned int lower_bound, unsigned int upper_bound) 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, unsigned int lower_bound, unsigned int upper_bound) const
 
ContainersTemp get_input_containers (Particle *p) const
 
ParticlesTemp get_input_particles (Particle *p) const
 
ModelObjectsTemp get_inputs (Model *m, const ParticleIndexes &pis) const
 
- Public Member Functions inherited from IMP::base::Object
virtual void clear_caches ()
 
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. More...
 
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)
 

Related Functions

(Note that these are not member functions.)

typedef IMP::base::Vector
< IMP::base::WeakPointer
< ExamplePairScore > > 
ExamplePairScoresTemp
 

Additional Inherited Members

- Public Types inherited from IMP::kernel::PairScore
typedef ParticlePair Argument
 
typedef ParticleIndexPair IndexArgument
 
typedef PairModifier Modifier
 
typedef const ParticlePairPassArgument
 
typedef const ParticleIndexPairPassIndexArgument
 
- Protected Member Functions inherited from IMP::kernel::PairScore
virtual Restraints do_create_current_decomposition (Model *m, const ParticleIndexPair &vt) const
 
virtual ModelObjectsTemp do_get_inputs (Model *m, const ParticleIndexes &pis) const =0
 

Detailed Description

The source code is as follows:

/**
* \file IMP/example/ExamplePairScore.h
* \brief A Score on the distance between a pair of particles.
*
* Copyright 2007-2013 IMP Inventors. All rights reserved.
*/
#ifndef IMPEXAMPLE_EXAMPLE_PAIR_SCORE_H
#define IMPEXAMPLE_EXAMPLE_PAIR_SCORE_H
#include <IMP/example/example_config.h>
#include <IMP/core/XYZ.h>
#include <IMP/PairScore.h>
#include <IMP/Pointer.h>
IMPEXAMPLE_BEGIN_NAMESPACE
//! Apply a harmonic to the distance between two particles.
/** The source code is as follows:
\include ExamplePairScore.h
\include ExamplePairScore.cpp
*/
class IMPEXAMPLEEXPORT ExamplePairScore : public PairScore
{
double x0_, k_;
public:
ExamplePairScore(double x0, double k);
IMP_PAIR_SCORE(ExamplePairScore);
};
IMP_OBJECTS(ExamplePairScore, ExamplePairScores);
IMPEXAMPLE_END_NAMESPACE
#endif /* IMPEXAMPLE_EXAMPLE_PAIR_SCORE_H */
/**
* \file ExamplePairScore.cpp
* \brief A Score on the distance between a pair of particles.
*
* Copyright 2007-2013 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,
{
// 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();
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;
}
// 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);
}
// 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

Definition at line 25 of file ExamplePairScore.h.

Friends And Related Function Documentation

Pass a set of objects.

Definition at line 33 of file ExamplePairScore.h.


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