Hi Frido,
these are the methods I implemented so far in a new class Morse.h.
The first one returns a constant score if feature is greater then threshold. At the moment the returned score is the Harmonic potential calculated when feature >= threshold (i.e. when feature is >= threshold, the returned score will always be Harmonic::evaluate(threshold) ).
The second one implements the Morse potential as described by Marc.
These methods are still in a development phase since there are some parameters which need to be better defined, such as the threshold to be applied and the parameters that define the Morse potential.
Regards,
Davide
/** If the feature is greater than or equal to the threshold, the score is constant.
\param[in] feature Value of feature being tested.
\return Score
*/
virtual Float evaluate(Float feature) const {
Float k = Harmonic::get_k();
Float mean = Harmonic::get_mean();
Float threshold = 1.0 * mean + XYZRDecorator::get_radius();
if ( feature <= threshold ) {
return Harmonic::evaluate(feature);
} else {
return evaluate_with_derivative(threshold, k).first;
}
}
/** If the feature is greater than or equal to the threshold, apply the Morse potential.
\param[in] feature Value of feature being tested.
\return Score
*/
virtual Float evaluate(Float feature) const {
Float mean = Harmonic::get_mean();
Float k = Harmonic::get_k();
Float threshold = 1.0 * mean + XYZRDecorator::get_radius();
// MORSE POTENTIAL PARAMETERS
Float var = 1.0/k;
Float alpha = 2.0;
Float De = 40.0;
Float beta = 1.0;
Float swf = 0.0;
if ( feature <= threshold ) {
return Harmonic::evaluate(feature);
} else {
swf = beta * pow( ( 1.0 - exp( - sqrt( alpha/De ) * ( feature - threshold )/2.0 ) ), 2 ); // MORSE POTENTIAL
return swf;
}
}
Hi Frido,Indeed we are also in need of similar stuff. Davide Bau (a postdoc in my lab and also in the IMP-Dev list) has already implemented a sort of a MORSE potential in IMP restraints, which is not what you ask but may be similar. I implemented many many many years ago something similar in CHARMM (http://sgu.bioinfo.cipf.es/martirenom/Thesis/pdf/Thesis.pdf, Chapter 4 page 86).Unfortunately, we are NOT yet ready to commit the changes in the code to the SVN since we are in the middle of production phase (ie, making models) thus would prefer not to update IMP. But I am sure we could do soon.Davide, any comments? :-)m-------Marc A. Marti-Renom, Head of the Structural Genomics UnitBioinformatics & Genomics Department, Prince Felipe Research CenterAvda. Autopista del Saler, 16 , 46012 Valencia, SpainTel +34 96 328 96 80 (ext. 1015) Fax +34 96 328 97 01email mmarti@cipf.es web http://sgu.bioinfo.cipf.es*** Consider the environment. Print responsibly. ***On Jan 8, 2009, at 10:00 AM, Friedrich Foerster wrote:hi all,
when dealing with experimental restraints i often feel that harmonic restraints are somewhat unsatisfactory:
experimental data can be wrong and thus there is not necessarily a solution that fulfills all restraints (score=0). in those cases, a model with a lower score is not necessarily any more correct than a higher scoring one. thus, i think it'd be good to have an additional scoring function that levels off if the feature exceeds a certain value. for example, i'd suggest the following two functions alternatively to Harmonic:
1. a function that is a Harmonic for x<std and constant for x>std
2. a function that is a Harmonic for x<std and asymptotically approaches a constant value for x-> inf:
e.g.: f=x^2 for x<1 and f=2-x^-2 for x>1 (would even be continuous in 1st derivative)
is anyone else also interested in something like that?
any better suggestions?
is any IMP core expert interested and willing to code that (including analogous functions for Upper and Lower Harmonic)? probably i'd be one of the slowest and clumsiest persons in doing that...
thanks
frido
--
Friedrich Foerster
Max-Planck Institut fuer Biochemie
Am Klopferspitz 18
D-82152 Martinsried
Tel: +49 89 8578 2651
Fax: +49 89 8578 2641
foerster@biochem.mpg.de
www.tomotronic.org
_______________________________________________
IMP-dev mailing list
IMP-dev@salilab.org
https://salilab.org/mailman/listinfo/imp-dev
_______________________________________________
IMP-dev mailing list
IMP-dev@salilab.org
https://salilab.org/mailman/listinfo/imp-dev