| FOX/ObjCryst++
    1.10.X (development)
    | 
Algorithm class to find the correct indexing from observed peak positions. More...
 Inheritance diagram for ObjCryst::CellExplorer:
 Inheritance diagram for ObjCryst::CellExplorer: Collaboration diagram for ObjCryst::CellExplorer:
 Collaboration diagram for ObjCryst::CellExplorer:| Public Member Functions | |
| CellExplorer (const PeakList &dhkl, const CrystalSystem lattice, const unsigned int nbSpurious) | |
| void | Evolution (unsigned int ng, const bool randomize=true, const float f=0.7, const float cr=0.5, unsigned int np=100) | 
| void | SetLengthMinMax (const float min, const float max) | 
| void | SetAngleMinMax (const float min, const float max) | 
| void | SetVolumeMinMax (const float min, const float max) | 
| void | SetNbSpurious (const unsigned int nb) | 
| void | SetD2Error (const float err) | 
| Allowed error on 1/d (squared!), used for dicvol. | |
| void | SetMinMaxZeroShift (const float min, const float max) | 
| void | SetCrystalSystem (const CrystalSystem system) | 
| void | SetCrystalCentering (const CrystalCentering cent) | 
| virtual const string & | GetClassName () const | 
| Name for this class ("RefinableObj", "Crystal",...).  More... | |
| virtual const string & | GetName () const | 
| Name of the object. | |
| virtual void | Print () const | 
| virtual unsigned int | GetNbLSQFunction () const | 
| Number of LSQ functions. | |
| virtual const CrystVector_REAL & | GetLSQCalc (const unsigned int) const | 
| Get the current calculated value for the LSQ function. | |
| virtual const CrystVector_REAL & | GetLSQObs (const unsigned int) const | 
| Get the observed values for the LSQ function. | |
| virtual const CrystVector_REAL & | GetLSQWeight (const unsigned int) const | 
| Get the weight values for the LSQ function. | |
| virtual const CrystVector_REAL & | GetLSQDeriv (const unsigned int, RefinablePar &) | 
| Get the first derivative values for the LSQ function, for a given parameter.  More... | |
| virtual void | BeginOptimization (const bool allowApproximations=false, const bool enableRestraints=false) | 
| This should be called by any optimization class at the begining of an optimization.  More... | |
| void | LSQRefine (int nbCycle=1, bool useLevenbergMarquardt=true, const bool silent=false) | 
| void | DicVol (const float minScore=10, const unsigned int minDepth=3, const float stopOnScore=50.0, const unsigned int stopOnDepth=6) | 
| Run DicVOl algorithm, store only solutions with score >minScore or depth>=minDepth, stop at the end of one volume interval (~400 A^3) if best score>stopOnScore, or if one solution was found at depth>=stopOnDepth.  More... | |
| void | ReduceSolutions (const bool updateReportThreshold=false) | 
| Sort all solutions by score, remove duplicates.  More... | |
| float | GetBestScore () const | 
| const std::list< std::pair < RecUnitCell, float > > & | GetSolutions () const | 
| std::list< std::pair < RecUnitCell, float > > & | GetSolutions () | 
|  Public Member Functions inherited from ObjCryst::RefinableObj | |
| RefinableObj () | |
| Constructor. | |
| RefinableObj (const bool internalUseOnly) | |
| Constructor.  More... | |
| RefinableObj (const RefinableObj &old) | |
| Defined not implemented...  More... | |
| virtual | ~RefinableObj () | 
| Destructor. | |
| virtual void | SetName (const string &name) | 
| Name of the object. | |
| void | operator= (const RefinableObj &old) | 
| Defined not implemented...  More... | |
| void | PrepareForRefinement () const | 
| Find which parameters are used and not fixed, for a refinement /optimization.  More... | |
| void | FixAllPar () | 
| Fix All parameters. | |
| void | UnFixAllPar () | 
| UnFix All parameters. | |
| void | SetParIsFixed (const long parIndex, const bool fix) | 
| Fix/un-fix one parameter from its #. | |
| void | SetParIsFixed (const string &parName, const bool fix) | 
| Fix/un-fix one parameter from its name. | |
| void | SetParIsFixed (const RefParType *type, const bool fix) | 
| Fix/un-fix one family of parameters. | |
| void | SetParIsUsed (const string &parName, const bool use) | 
| Set whether a parameter is used. | |
| void | SetParIsUsed (const RefParType *type, const bool use) | 
| Set whether a family of parameters is used. | |
| long | GetNbPar () const | 
| Total number of refinable parameter in the object.  More... | |
| long | GetNbParNotFixed () const | 
| Total number of non-fixed parameters. Is initialized by PrepareForRefinement() | |
| RefinablePar & | GetPar (const long i) | 
| Access all parameters in the order they were inputted. | |
| const RefinablePar & | GetPar (const long i) const | 
| Access all parameters in the order they were inputted. | |
| RefinablePar & | GetPar (const string &name) | 
| Access all parameters from their name. | |
| const RefinablePar & | GetPar (const string &name) const | 
| Access all parameters from their name. | |
| RefinablePar & | GetPar (const REAL *) | 
| Access parameter from its adress. | |
| const RefinablePar & | GetPar (const REAL *) const | 
| Access parameter from its adress. | |
| RefinablePar & | GetParNotFixed (const long i) | 
| Access all parameters in the order they were inputted, skipping fixed parameters.  More... | |
| const RefinablePar & | GetParNotFixed (const long i) const | 
| Access all parameters in the order they were inputed, skipping fixed parameters.  More... | |
| void | AddPar (const RefinablePar &newRefPar) | 
| Add a refinable parameter.  More... | |
| void | AddPar (RefinablePar *newRefPar) | 
| Add a refinable parameter.  More... | |
| void | AddPar (RefinableObj &newRefParList, const bool copyParam=false) | 
| Add all the parameters in another RefinableObj.  More... | |
| vector< RefinablePar * >::iterator | RemovePar (RefinablePar *refPar) | 
| Remove a refinable parameter.  More... | |
| unsigned long | CreateParamSet (const string name="") const | 
| Save the current set of refined values in a new set.  More... | |
| void | ClearParamSet (const unsigned long id) const | 
| Erase the param set with the given id, releasing memory. | |
| void | SaveParamSet (const unsigned long id) const | 
| Save the current set of refined values over a previously-created set of saved values.  More... | |
| void | RestoreParamSet (const unsigned long id) | 
| Restore a saved set of values.  More... | |
| const CrystVector_REAL & | GetParamSet (const unsigned long setId) const | 
| Access one save refpar set.  More... | |
| CrystVector_REAL & | GetParamSet (const unsigned long setId) | 
| Access one save refpar set.  More... | |
| REAL | GetParamSet_ParNotFixedHumanValue (const unsigned long setId, const long parNumber) const | 
| Access the (human) value of one refined parameter in a saved set of parameters.  More... | |
| const void | EraseAllParamSet () | 
| Erase all saved refpar sets.  More... | |
| const string & | GetParamSetName (const unsigned long setId) const | 
| Get the name associated to a refpar set.  More... | |
| void | SetLimitsAbsolute (const string &parName, const REAL min, const REAL max) | 
| Change the limits for a given parameter, giving absolute new limits. | |
| void | SetLimitsAbsolute (const RefParType *type, const REAL min, const REAL max) | 
| Change the limits for a category of parameters, giving absolute new limits. | |
| void | SetLimitsRelative (const string &parName, const REAL min, const REAL max) | 
| Change the limits for a given parameter, 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 | SetLimitsRelative (const RefParType *type, const REAL min, const REAL max) | 
| Change the limits for a category of parameters, giving relative new limits (eg giving -.1 and +.1 will set new limits at the current value + min and current value + max).  More... | |
| void | SetLimitsProportional (const string &parName, const REAL min, const REAL max) | 
| Change the limits for a given parameter, proportionnaly to the current value.  More... | |
| void | SetLimitsProportional (const RefParType *type, const REAL min, const REAL max) | 
| Change the limits for a category of parameters, proportionnaly to their current value.  More... | |
| void | SetGlobalOptimStep (const RefParType *type, const REAL step) | 
| Change the maximum step to use during Global Optimization algorithms. | |
| ObjRegistry< RefinableObj > & | GetSubObjRegistry () | 
| Access to the registry of RefinableObj used by this object. | |
| const ObjRegistry< RefinableObj > & | GetSubObjRegistry () const | 
| Access to the registry of RefinableObj used by this object. | |
| virtual void | RegisterClient (RefinableObj &) const | 
| Register a new object using this object.  More... | |
| virtual void | DeRegisterClient (RefinableObj &) const | 
| Deregister an object (which not any more) using this object. | |
| virtual const ObjRegistry < RefinableObj > & | GetClientRegistry () const | 
| Get the list of clients. | |
| virtual ObjRegistry < RefinableObj > & | GetClientRegistry () | 
| Get the list of clients. | |
| bool | IsBeingRefined () const | 
| Is the object being refined ? (Can be refined by one algorithm at a time only.) | |
| virtual void | EndOptimization () | 
| This should be called by any optimization class at the end of an optimization.  More... | |
| virtual void | SetApproximationFlag (const bool allow) | 
| Enable or disable numerical approximations.  More... | |
| virtual void | RandomizeConfiguration () | 
| Randomize Configuration (before a global optimization).  More... | |
| virtual void | GlobalOptRandomMove (const REAL mutationAmplitude, const RefParType *type=gpRefParTypeObjCryst) | 
| Make a random move of the current configuration.  More... | |
| void | BeginGlobalOptRandomMove () | 
| Raise a flag, to be sure not to make a random change more than once in each RefinableObj.  More... | |
| virtual REAL | GetLogLikelihood () const | 
| Get -log(likelihood) of the current configuration for the object.  More... | |
| virtual std::map< RefinablePar *, CrystVector_REAL > & | GetLSQ_FullDeriv (const unsigned int, std::set< RefinablePar * > &vPar) | 
| Get the first derivative for the LSQ function for each parameter supplied in a list.  More... | |
| void | ResetParList () | 
| Re-init the list of refinable parameters, removing all parameters.  More... | |
| virtual void | XMLOutput (ostream &os, int indent=0) const | 
| Output to stream in well-formed XML.  More... | |
| virtual void | XMLInput (istream &is, const XMLCrystTag &tag) | 
| Input From stream.  More... | |
| virtual void | UpdateDisplay () const | 
| If there is an interface, this should be automatically be called each time there is a 'new, significant' configuration to report.  More... | |
| unsigned int | GetNbOption () const | 
| Number of Options for this object. | |
| RefObjOpt & | GetOption (const unsigned int i) | 
| Access to the options. | |
| const RefObjOpt & | GetOption (const unsigned int i) const | 
| const access to the options | |
| virtual void | GetGeneGroup (const RefinableObj &obj, CrystVector_uint &groupIndex, unsigned int &firstGroup) const | 
| Get the gene group assigned to each parameter.  More... | |
| void | SetDeleteRefParInDestructor (const bool b) | 
| Set this object not to delete its list of parameters when destroyed.  More... | |
| const RefinableObjClock & | GetRefParListClock () const | 
| What was the last time a RefinablePar was added/removed ?  More... | |
| virtual REAL | GetRestraintCost () const | 
| Get the restraint cost (overall penalty of all restraints)  More... | |
| void | AddRestraint (Restraint *pNewRestraint) | 
| Add a new restraint.  More... | |
| vector< Restraint * >::iterator | RemoveRestraint (Restraint *pRestraint) | 
| Remove a restraint from the list of known restraints.  More... | |
| virtual void | TagNewBestConfig () const | 
| During a global optimization, tells the object that the current config is the latest "best" config.  More... | |
| const RefinableObjClock & | GetClockMaster () const | 
| This clocks records any change in the object. See refinableObj::mClockMaster. | |
| Private Member Functions | |
| unsigned int | RDicVol (RecUnitCell uc0, RecUnitCell uc1, unsigned int depth, unsigned long &nbCalc, const float minV, const float maxV, vector< unsigned int > vdepth=vector< unsigned int >()) | 
| void | Init () | 
| Private Attributes | |
| std::list< std::pair < RecUnitCell, float > > | mvSolution | 
| Max number of obs reflections to use. | |
| unsigned int | mnpar | 
| const PeakList * | mpPeakList | 
| float | mLengthMin | 
| float | mLengthMax | 
| float | mAngleMin | 
| float | mAngleMax | 
| float | mVolumeMin | 
| float | mVolumeMax | 
| float | mZeroShiftMin | 
| float | mZeroShiftMax | 
| float | mMin [7] | 
| Min values for all parameters (7=unit cell +zero) | |
| float | mAmp [7] | 
| Max amplitude (max=min+amplitude) for all parameters All parameters are treated as periodic for DE (??) | |
| CrystalSystem | mlattice | 
| Lattice type for which we search. | |
| CrystalCentering | mCentering | 
| Centering type. | |
| unsigned int | mNbSpurious | 
| float | mD2Error | 
| LSQNumObj | mLSQObj | 
| CrystVector_REAL | mObs | 
| CrystVector_REAL | mCalc | 
| CrystVector_REAL | mWeight | 
| CrystVector_REAL | mDeriv | 
| RecUnitCell | mRecUnitCell | 
| Reciprocal unit cell used for least squares refinement. | |
| float | mBestScore | 
| Current best score. | |
| std::vector< unsigned int > | mvNbSolutionDepth | 
| Number of solutions found during dicvol search, at each depth. | |
| float | mMinScoreReport | 
| unsigned int | mMaxDicVolDepth | 
| unsigned int | mDicVolDepthReport | 
| float | mCosAngMax | 
| Stored value of cos(max ang) for tricilinic search - we do not want to recompute the cos at every dicvol iteration. | |
| unsigned int | mNbLSQExcept | 
| Number of exceptions caught during LSQ, in a given search - above 20 LSQ is disabled. | |
| Additional Inherited Members | |
|  Protected Member Functions inherited from ObjCryst::RefinableObj | |
| long | FindPar (const string &name) const | 
| Find a refinable parameter with a given name. | |
| long | FindPar (const REAL *) const | 
| Find a refinable parameter from the adress of its value. | |
| void | AddSubRefObj (RefinableObj &) | 
| void | RemoveSubRefObj (RefinableObj &) | 
| void | AddOption (RefObjOpt *opt) | 
| virtual void | Prepare () | 
| map< unsigned long, pair < CrystVector_REAL, string > >::iterator | FindParamSet (unsigned long id) const | 
| Find a parameter set with a given id (and check if it is there) | |
|  Protected Attributes inherited from ObjCryst::RefinableObj | |
| string | mName | 
| Name for this RefinableObject. Should be unique, at least in the same scope.+. | |
| vector< RefinablePar * > | mvpRefPar | 
| Vector of pointers to the refinable parameters. | |
| vector< Restraint * > | mvpRestraint | 
| Vector of pointers to the restraints for this object.  More... | |
| map< unsigned long, pair < CrystVector_REAL, string > > | mvpSavedValuesSet | 
| Map of (index,pointers to arrays) used to save sets of values for all parameters.  More... | |
| long | mNbRefParNotFixed | 
| Total of not-fixed parameters. | |
| CrystVector_long | mRefparNotFixedIndex | 
| Index of not-fixed parameters. | |
| int | mOptimizationDepth | 
| Is the object being refined or optimized ? if mOptimizationDepth=0, no optimization is taking place.  More... | |
| ObjRegistry< RefinableObj > | mSubObjRegistry | 
| Registry of RefinableObject needed for this object (owned by this object or not) | |
| ObjRegistry< RefinableObj > | mClientObjRegistry | 
| Registry of RefinableObject using this object.  More... | |
| ObjRegistry< RefObjOpt > | mOptionRegistry | 
| List of options for this object.  More... | |
| bool | mDeleteRefParInDestructor | 
| If true (the default), then all RefinablePar will be deleted when the the object is deleted.  More... | |
| RefinableObjClock | mRefParListClock | 
| Last time the RefinableParList was modified (a parameter added or removed). | |
| bool | mRandomMoveIsDone | 
| CrystVector_REAL | mLSQDeriv | 
| Temporary array used to return derivative values of the LSQ function for given parameters.  More... | |
| std::map< unsigned int, std::map< RefinablePar *, CrystVector_REAL > > | mLSQ_FullDeriv | 
| Temporary map to return the derivative of the LSQ function versus a list of parameters.  More... | |
| RefinableObjClock | mClockMaster | 
| Master clock, which is changed whenever the object has been altered.  More... | |
Algorithm class to find the correct indexing from observed peak positions.
Definition at line 212 of file Indexing.h.
| 
 | virtual | 
This should be called by any optimization class at the begining of an optimization.
This will also check that everything is ready, eg call the RefinableObj::Prepare() function. This also affects all sub-objects.
| allowApproximations | if true, then the object can use faster but less precise functions during the optimization. This is useful for global optimization not using derivatives. | 
| enableRestraints | xrefitem deprecated 28. | 
Reimplemented from ObjCryst::RefinableObj.
Definition at line 1481 of file Indexing.cpp.
| void ObjCryst::CellExplorer::DicVol | ( | const float | minScore = 10, | 
| const unsigned int | minDepth = 3, | ||
| const float | stopOnScore = 50.0, | ||
| const unsigned int | stopOnDepth = 6 | ||
| ) | 
Run DicVOl algorithm, store only solutions with score >minScore or depth>=minDepth, stop at the end of one volume interval (~400 A^3) if best score>stopOnScore, or if one solution was found at depth>=stopOnDepth.
If stopOnDepth==0, do not stop for any depth
Definition at line 2126 of file Indexing.cpp.
| 
 | virtual | 
Name for this class ("RefinableObj", "Crystal",...).
This is only useful to distinguish different classes when picking up objects from the RefinableObj Global Registry
Reimplemented from ObjCryst::RefinableObj.
Definition at line 1410 of file Indexing.cpp.
| 
 | virtual | 
Get the first derivative values for the LSQ function, for a given parameter.
Note that the default method in the base RefinableObj class is to use numerical derivatives, so it should be overridden for better precision.
Reimplemented from ObjCryst::RefinableObj.
Definition at line 1451 of file Indexing.cpp.
| void ObjCryst::CellExplorer::ReduceSolutions | ( | const bool | updateReportThreshold = false | ) | 
Sort all solutions by score, remove duplicates.
| updateReportThreshold | if true, when too many solutions are produced, the threshold above which solutions are reported will be updated to get less solutions. | 
Definition at line 2628 of file Indexing.cpp.