IMP  2.0.0
The Integrative Modeling Platform
atom/dope_and_excluded_volume.cpp

This example shows you a way to create a pair score that combines IMP::score_functor::Dope and excluded volume (via IMP::score_functor::HarmonicLowerBound).

/** \example atom/dope_and_excluded_volume.cpp
This example shows you a way to create a pair score that combines
IMP::score_functor::Dope and excluded volume (via
IMP::score_functor::HarmonicLowerBound).
*/
#include <IMP/atom/Chain.h>
#include <IMP/atom/Atom.h>
#include <IMP/core/XYZR.h>
#include <IMP/base/flags.h>
namespace {
const double dope_threshold=16;
const double spring_constant=1;
// create some pairs that can be score with dope
IMP::atom::Chain chain=IMP::atom::Chain::setup_particle(m, rpi, 'A');
for (unsigned int i=0; i< 2; ++i) {
IMP::ParticleIndex rpi= m->add_particle("residue");
IMP::atom::ALA, i);
chain.add_child(residue);
IMP::atom::AT_CA);
IMP::algebra::Vector3D coords(0,10*i, 0);
residue.add_child(atom);
atoms.push_back(api);
}
// add Dope atom types
for (unsigned int i=0; i< atoms.size(); ++i) {
for (unsigned int j=0; j< i; ++j) {
all_pairs.push_back(IMP::ParticleIndexPair(atoms[i], atoms[j]));
}
}
return all_pairs;
}
}
int main(int argc, char *argv[]) {
try {
// do normal IMP initialization of command line arguments
// Run with --help to see options.
"Show to to use dope and excluded volume");
SoftSphere> Score;
DopeAndExcludedVolumeDistancePairScore;
// create one
score= new DopeAndExcludedVolumeDistancePairScore
(Score(IMP::score_functor::Dope(dope_threshold),
SoftSphere(Harmonic(spring_constant))));
// Now let's use it
IMP::ParticleIndexPairs pips= setup_pairs(model);
for (unsigned int i=0; i< pips.size(); ++i) {
std::cout << "Score is " << score->evaluate_index(model, pips[i],
IMP_NULLPTR)
<< std::endl;
}
return 0;
} catch (const std::exception &e) {
std::cerr << "ERROR: " << e.what() << std::endl;
return 1;
}
}