Hi Ben,

Yes, my group was using this Restrainer module as you mentioned with a very early version of IMP. Thanks for the detailed info about the two IMP modules and how to use them.

Kind regards,

Altair



El vie., 17 abr. 2020 0:08, Ben Webb <ben@salilab.org> escribió:
On 4/16/20 11:22 AM, Altair Hernández wrote:
> I used to work with a Diameter restraint in the past using IMP version
> 2.2 where I specified in a XML file the *max_diameter* and *std_dev*
> between pairs of particles. I would like to know how to use this
> function with the latest version of IMP (2.12).

XML input implies you were using IMP.restrainer, which was removed from
the code a long long time ago. But IMP.core.DiameterRestraint is still
there:
https://integrativemodeling.org/nightly/doc/ref/classIMP_1_1core_1_1DiameterRestraint.html

DiameterRestraint takes an input a UnaryFunction (usually we use
IMP.core.HarmonicUpperBound) and a SingletonContainer. If you just have
a simple list of particles you want to restrain, use
IMP.container.ListSingletonContainer.

You can see how IMP.restrainer set up the restraint (in C++) at
https://github.com/salilab/imp/blob/2.1.1/modules/restrainer/src/simplify_restraint.cpp#L113-L115

> Also I would be grateful to know which is the main difference between
> the DiameterRestraint and the Harmonic Upper Bound

HarmonicUpperBound scores the distance between two particles, keeping
them from exceeding a certain distance. DiameterRestraint scores the
distance between each of a set of particles and the center of mass.

> and how to justify a
> given k value when using the HarmonicUpperBound restraint.

The larger the value of k the less likely particles are to exceed the
diameter.

See also
https://integrativemodeling.org/nightly/doc/ref/classIMP_1_1core_1_1Harmonic.html#a34646455a8a2e301f2895d99a525b914
to convert std_dev to k.

        Ben
--
ben@salilab.org                      https://salilab.org/~ben/
"It is a capital mistake to theorize before one has data."
        - Sir Arthur Conan Doyle