FOX/ObjCryst++
1.10.X (development)
|
Generic class for parameters of refinable objects. More...
Public Member Functions | |
void | XMLOutput (ostream &os, const string &name, int indent=0) const |
XMLOutput to stream in well-formed XML. More... | |
void | XMLOutput (ostream &os, int indent=0) const |
XMLOutput to stream in well-formed XML. More... | |
void | XMLInput (istream &is, const XMLCrystTag &tag) |
XMLInput From stream. More... | |
Destructor & Constructors | |
RefinablePar () | |
Default Constructor. | |
RefinablePar (const string &name, REAL *refPar, const REAL min, const REAL max, const RefParType *type, RefParDerivStepModel derivMode=REFPAR_DERIV_STEP_RELATIVE, const bool hasLimits=true, const bool isFixed=false, const bool isUsed=true, const bool isPeriodic=false, const REAL humanScale=1., REAL period=1.) | |
Constructor. More... | |
RefinablePar (const RefinablePar &ref) | |
Copy Constructor. | |
~RefinablePar () | |
void | Init (const string &name, REAL *refPar, const REAL min, const REAL max, const RefParType *type, RefParDerivStepModel derivMode=REFPAR_DERIV_STEP_RELATIVE, const bool hasLimits=true, const bool isFixed=false, const bool isUsed=true, const bool isPeriodic=false, const REAL humanScale=1., REAL period=1.) |
Constructor. More... | |
void | CopyAttributes (const RefinablePar &) |
Copy all attributes (limits, flags, etc...) from another RefinablePar object. More... | |
Access & change the current value of the parameter | |
REAL | GetValue () const |
of the parameter. More... | |
const REAL * | GetPointer () const |
Access to a const pointer to the refined value. More... | |
void | SetValue (const REAL value) |
of the parameter. More... | |
const REAL & | GetHumanValue () const |
Current value of parameter, scaled if necessary (for angles) to a human-understandable value. | |
void | SetHumanValue (const REAL &) |
Current value of parameter, scaled if necessary (for angles) to a human-understandable value. | |
void | Mutate (const REAL mutateValue) |
Add the given amount to the parameter current value. More... | |
void | MutateTo (const REAL newValue) |
Change the current value to the given one. More... | |
REAL | GetSigma () const |
REAL | GetHumanSigma () const |
void | SetSigma (const REAL) |
General info | |
string | GetName () const |
Get the parameter's name. | |
void | SetName (const string &) |
Set the name of the parameter. It should be unique in the RefinableObj. | |
void | Print () const |
bool | IsFixed () const |
void | SetIsFixed (const bool) |
bool | IsLimited () const |
void | SetIsLimited (const bool) |
bool | IsUsed () const |
Is the parameter used (if not, it is simply irrelevant in the model) ? | |
void | SetIsUsed (const bool) |
Is the parameter used (if not, it is simply irrelevant in the model) ? | |
bool | IsPeriodic () const |
void | SetIsPeriodic (const bool, REAL period=1) |
REAL | GetHumanScale () const |
Human scale for this parameter : for angles, this is equal to 180/pi. | |
void | SetHumanScale (const REAL) |
Human scale for this parameter : for angles, this is equal to 180/pi. | |
Min, max values | |
REAL | GetMin () const |
Minimum value allowed (if limited or periodic) | |
void | SetMin (const REAL) |
Set the Minimum value allowed (if limited) | |
REAL | GetHumanMin () const |
Get the minimum value allowed (if limited) | |
void | SetHumanMin (const REAL) |
Set the minimum value allowed (if limited) | |
REAL | GetMax () const |
Get the maximum value allowed (if limited) | |
void | SetMax (const REAL) |
Get the maximum value allowed (if limited) | |
REAL | GetHumanMax () const |
Get the maximum value allowed (if limited) | |
void | SetHumanMax (const REAL) |
Get the maximum value allowed (if limited) | |
REAL | GetPeriod () const |
Get the period (if periodic) | |
void | SetPeriod (const REAL) |
Set the period value (if periodic) | |
Steps during refinement | |
REAL | GetDerivStep () const |
Fixed step to use to compute numerical derivative. | |
void | SetDerivStep (const REAL) |
Fixed step to use to compute numerical derivative. | |
REAL | GetGlobalOptimStep () const |
Maximum step to use during Global Optimization algorithms. | |
void | SetGlobalOptimStep (const REAL) |
Maximum step to use during Global Optimization algorithms. | |
Parameter's Clock | |
void | AssignClock (RefinableObjClock &clock) |
Change Limits | |
void | SetLimitsAbsolute (const REAL min, const REAL max) |
Change the limits for this object, giving absolute new limits. | |
void | SetLimitsRelative (const REAL min, const REAL max) |
Change the limits for this object, giving relative new limits (eg giving -.1 and +.1 will set new limits at the current value + min and current value + max) Thus min should logically be <0 and max >0. More... | |
void | SetLimitsProportional (const REAL min, const REAL max) |
Change the limits for this object, proportionnaly to the current value. More... | |
Public Member Functions inherited from ObjCryst::Restraint | |
Restraint () | |
Default constructor, sets RefParType to gpRefParTypeObjCryst. | |
Restraint (const RefParType *type) | |
constructor specifying the type | |
virtual const RefParType * | GetType () const |
virtual void | SetType (const RefParType *type) |
virtual REAL | GetLogLikelihood () const |
Get -ln(likelihood) for this restraint. | |
Private Member Functions | |
void | Click () |
Click the Clock ! to telle the RefinableObj it has been modified. | |
Private Attributes | |
string | mName |
name of the refinable parameter | |
REAL * | mpValue |
Pointer to the refinable value. | |
REAL | mMin |
Hard lower and upper limits. | |
REAL | mMax |
bool | mHasLimits |
Does the refinable parameter need limits (min and max) ? | |
bool | mIsFixed |
is the parameter currently fixed ? | |
bool | mIsUsed |
Is the parameter currently used ? | |
bool | mIsPeriodic |
Is the parameter periodic ? If this is the case, then when using the RefinablePar::Mutate() function, if the parameter goes beyond its limits, it will be shifted by the value of its period. More... | |
REAL | mPeriod |
Period value (if relevant) | |
REAL | mGlobalOptimStep |
Step to use for global method search (simulated annealing,...) | |
REAL | mDerivStep |
Step to use for numerical derivative calculation. | |
RefParDerivStepModel | mRefParDerivStepModel |
Model followed for derivation. | |
REAL | mSigma |
Calculated sigma on value. | |
REAL | mHumanScale |
Scale to be used to display 'human' value. More... | |
bool | mHasAssignedClock |
Is there a clock associated with this parameter ? If yes, then it must Click() it each time it is modified. | |
RefinableObjClock * | mpClock |
Friends | |
class | RefinableObj |
Generic class for parameters of refinable objects.
These must be continuous.
: define parameters using equations between parameters.
: for complex objects with lots of parameters, give the possibility to define vectors of parameters, all with the same properties, to reduce memory usage.
Definition at line 223 of file RefinableObj.h.
ObjCryst::RefinablePar::RefinablePar | ( | const string & | name, |
REAL * | refPar, | ||
const REAL | min, | ||
const REAL | max, | ||
const RefParType * | type, | ||
RefParDerivStepModel | derivMode = REFPAR_DERIV_STEP_RELATIVE , |
||
const bool | hasLimits = true , |
||
const bool | isFixed = false , |
||
const bool | isUsed = true , |
||
const bool | isPeriodic = false , |
||
const REAL | humanScale = 1. , |
||
REAL | period = 1. |
||
) |
Constructor.
Definition at line 234 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::AssignClock | ( | RefinableObjClock & | clock | ) |
Assign a clock to this parameter. Any time this parameter is modified, the clock will be ticked !
Definition at line 663 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::CopyAttributes | ( | const RefinablePar & | old | ) |
Copy all attributes (limits, flags, etc...) from another RefinablePar object.
This is useful in RefinableObj copy constructors. Everything is copied but the pointer to the value refined, and the pointer to the clock.
Definition at line 315 of file RefinableObj.cpp.
const REAL * ObjCryst::RefinablePar::GetPointer | ( | ) | const |
Access to a const pointer to the refined value.
This can be used to identify the parameter
Definition at line 352 of file RefinableObj.cpp.
REAL ObjCryst::RefinablePar::GetValue | ( | ) | const |
of the parameter.
Use the The Mutate() and MutateTo() function to change this value.
Definition at line 337 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::Init | ( | const string & | name, |
REAL * | refPar, | ||
const REAL | min, | ||
const REAL | max, | ||
const RefParType * | type, | ||
RefParDerivStepModel | derivMode = REFPAR_DERIV_STEP_RELATIVE , |
||
const bool | hasLimits = true , |
||
const bool | isFixed = false , |
||
const bool | isUsed = true , |
||
const bool | isPeriodic = false , |
||
const REAL | humanScale = 1. , |
||
REAL | period = 1. |
||
) |
Constructor.
Definition at line 267 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::Mutate | ( | const REAL | mutateValue | ) |
Add the given amount to the parameter current value.
If limit is hit, set to limit. If the limit is hit and the parameter is periodic, shift by period to bring back to allowed values.
Definition at line 444 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::MutateTo | ( | const REAL | newValue | ) |
Change the current value to the given one.
If the limit is hit, then set to the limit (unless the pameter is periodic, then shift by the period amount back to allowed values).
Definition at line 487 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::SetLimitsProportional | ( | const REAL | min, |
const REAL | max | ||
) |
Change the limits for this object, proportionnaly to the current value.
min should be < 1. and max > 1.
Definition at line 693 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::SetLimitsRelative | ( | const REAL | min, |
const REAL | max | ||
) |
Change the limits for this object, giving relative new limits (eg giving -.1 and +.1 will set new limits at the current value + min and current value + max) Thus min should logically be <0 and max >0.
Definition at line 685 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::SetValue | ( | const REAL | value | ) |
of the parameter.
Use the The Mutate() and MutateTo() function to change this value.
Definition at line 357 of file RefinableObj.cpp.
void ObjCryst::RefinablePar::XMLInput | ( | istream & | is, |
const XMLCrystTag & | tag | ||
) |
XMLInput From stream.
Definition at line 229 of file RefinableObj/IO.cpp.
void ObjCryst::RefinablePar::XMLOutput | ( | ostream & | os, |
const string & | name, | ||
int | indent = 0 |
||
) | const |
XMLOutput to stream in well-formed XML.
this will save the fixed & limited flags, as well as limits
name | the name to use instead of the RefPar name. |
Definition at line 184 of file RefinableObj/IO.cpp.
void ObjCryst::RefinablePar::XMLOutput | ( | ostream & | os, |
int | indent = 0 |
||
) | const |
XMLOutput to stream in well-formed XML.
this will save the fixed & limited flags, as well as limits. In this function the name used is that of the RefPar.
Definition at line 224 of file RefinableObj/IO.cpp.
|
private |
Scale to be used to display 'human' value.
This is for angular parameters: the computer stores values in radians, whil the user only understands degrees. So a scale factor of 180/pi is necessary.
Definition at line 516 of file RefinableObj.h.
|
private |
Is the parameter periodic ? If this is the case, then when using the RefinablePar::Mutate() function, if the parameter goes beyond its limits, it will be shifted by the value of its period.
Definition at line 502 of file RefinableObj.h.