Excluded volume in IMP
There are many options for computing excluded volume like scores in IMP, each with advantages and disadvantages as well as different domains of applicability.
All the following produce a score that is the sum of the harmonic lower bound over all pairs of overlapping balls (minus ones that are filtered out or, when appropriate, excluded by the ClosePairsFinder used).
Method |
advantages |
disadvantages |
IMP::container::PairsRestraint using an IMP::container::ClosePairContainer coupled with an IMP::core::HarmonicLowerBoundSphereDistancePairScore |
This is the most flexible method as you can replace the pair score used with any other one, e.g. IMP::atom::DopePairScore or a Lennard-Jones term |
can be slower than something that is less flexible |
IMP::core::ExcludedVolumeRestraint |
it should be faster (it is on benchmarks). If a maximum score is set and domino is used, it can be much faster as it can abort score evaluation when the maximum is exceeded |
less flexible, the scoring function cannot be changed |
IMP::container::PairsRestraint using an IMP::container::AllPairContainer and an IMP::core::HarmonicLowerBoundSphereDistancePairScore |
this can be faster than the above scoring functions when there are relatively few particles involved as it is much simpler |
always computes all pairs so slow when there are many pairs |
Lots of IMP::core::PairRestraints using IMP::core::HarmonicLowerBoundSphereDistancePairScore |
none, really (although, internally, most of the above are converted to this when DOMINO is used) |
slow |
IMP::container::PairsRestraint using an IMP::container::ClosePairContainer or IMP::core::PairRestraints on the rigid bodies coupled with an IMP::core::ClosePairsPairScore |
not clear this ever makes sense |
generally slower and more cumbersome to set up |
The methods below produce slightly different scores, that may be more or less appropriate depending on the context.
In the last one the IMP::core::ClosePairsPairScore can be replaced by an IMP::core::KClosePairsPairScore with k=1. This will be non-zero only if the rigid bodies intersect and can be quite fast.