SORTIE Core C++ Documentation
|
Ripley's K Calculator Version 1.0. More...
#include <RipleysKCalculator.h>
Public Member Functions | |
clRipleysKCalculator (clSimManager *p_oSimManager) | |
Constructor. More... | |
~clRipleysKCalculator () | |
Destructor. More... | |
void | Action () |
Calculates Ripley's K. More... | |
void | GetData (xercesc::DOMDocument *p_oDoc) |
Does setup for this behavior. More... | |
Public Member Functions inherited from clBehaviorBase | |
virtual float | GetBehaviorVersion () |
Gets the behavior version number. More... | |
clBehaviorBase (clSimManager *p_oSimManager) | |
Constructor. More... | |
virtual | ~clBehaviorBase () |
Destructor. More... | |
virtual short int | ValidateVersionNumber (float fTestVersion) |
Makes sure that the version number of a file passed is between the minimum and current version numbers. More... | |
virtual void | RegisterTreeDataMembers () |
Registers tree data members. More... | |
virtual void | SetSpeciesTypeCombos (short int iNumCombos, stcSpeciesTypeCombo *p_whatCombos) |
Sets the species/type combos for a behavior. More... | |
virtual void | SetNameData (std::string sNameString) |
Sets the string for the parameter file behavior. More... | |
virtual short int | GetNewTreeInts () |
Gets the number of new tree integer data members this behavior wants to register. More... | |
virtual short int | GetNewTreeFloats () |
Gets the number of new tree float data members this behavior wants to register. More... | |
virtual short int | GetNewTreeChars () |
Gets the number of new tree character data members this behavior wants to register. More... | |
virtual short int | GetNewTreeBools () |
Gets the number of new tree bool data members this behavior wants to register. More... | |
virtual short int | GetNumSpeciesTypeCombos () |
Gets the number of species/type combos to which this behavior applies. More... | |
virtual short int | GetNumBehaviorSpecies () |
Gets the number of unique tree species to which this behavior applies. More... | |
struct stcSpeciesTypeCombo | GetSpeciesTypeCombo (short int iIndex) |
Gets one of this behavior's type/species combos. More... | |
virtual short int | GetBehaviorSpecies (short int iIndex) |
Gets one of the behavior's species. More... | |
short int | GetBehaviorListNumber () |
Gets the behavior list number for this behavior, which differentiates between multiple copies of the behavior in the behavior list. More... | |
void | SetBehaviorListNumber (short int iNumber) |
Sets the behavior list number for this behavior, which differentiates between multiple copies of the behavior in the behavior list. More... | |
std::string | FormatSpeciesTypeQueryString () |
Formats the string for species/types query. More... | |
virtual DOMElement * | GetParentParametersElement (xercesc::DOMDocument *p_oDoc) |
This will get the correct set of parameters for this behavior based on the behavior list position number. More... | |
Public Member Functions inherited from clWorkerBase | |
clWorkerBase (clSimManager *p_oSimManager) | |
Constructor. More... | |
virtual | ~clWorkerBase () |
Destructor. More... | |
std::string | GetName () |
Gets the object's namestring. More... | |
clSimManager * | GetSimManager () |
void | DoObjectSetup (xercesc::DOMDocument *p_oDoc, fileType iFileType) |
Triggers the setup process. More... | |
virtual void | TimestepCleanup () |
Performs any necessary cleanup operations at the end of a timestep. More... | |
virtual void | EndOfRunCleanup () |
Performs any necessary cleanup operations at the end of a run. More... | |
Protected Member Functions | |
void | GetParameterFileData (xercesc::DOMDocument *p_oDoc) |
Reads values from the parameter file and performs setup related to the parameters. More... | |
void | SetupGrid () |
Sets up the "Ripley's K" grid and registers the data members. More... | |
void | GetTreeCodes (clTreePopulation *p_oPop) |
Gets the X and Y tree data codes. More... | |
void | SetUpSearching (clTreePopulation *p_oPop) |
Sets up the structures for searching controls. More... | |
void | ProcessCell (clTreePopulation *p_oPop, clTree *p_oFirstTree, const int &iX, const int &iY, const int &iNeighX, const int &iNeighY) |
Processes a neighboring cell's trees to find distance pairs. More... | |
void | ProcessOwnCell (clTree *p_oFirstTree, float *p_fNumTrees, const int &iX, const int &iY) |
Processes a single cell's trees to find distance pairs. More... | |
Protected Member Functions inherited from clWorkerBase | |
void | AssembleFileCode (int iFileType, int iFileVersion, char *cCode) |
Creates the proper identifying filecode for an XML file. More... | |
Protected Attributes | |
clGrid * | mp_oGrid |
Grid holding Ripley's K values for the plot plus each species. More... | |
float ** | mp_fKValues |
Values holding Ripley's K for each timestep. More... | |
short int ** | mp_iGridCodes |
Holds the codes for the "Ripley's K" grid. More... | |
short int ** | mp_iXCodes |
Holds codes for X data member. More... | |
short int ** | mp_iYCodes |
Holds codes for Y data member. More... | |
bool ** | mp_bCellsSearched |
Which cells have already been paired the current timestep. More... | |
float * | mp_fIncs |
Distance increment values - array size is m_iNumIncs. More... | |
double | m_fMaxDistance |
The max distance to which to calculate Ripley's K. More... | |
double | m_fIncrement |
The distance increment used to step out to the max distance. More... | |
int | m_iNumIncs |
Number of increments for which to calculate Ripley's K. More... | |
int | m_iNumXToSearch |
The number of cells to search in the X direction - if the plot is a rectangle and the search distance is long the distances along the two axes may be different. More... | |
int | m_iNumYToSearch |
The number of cells to search in the Y direction - if the plot is a rectangle and the search distance is long the distances along the two axes may be different. More... | |
int | m_iNumXCells |
Number of tree population grid cells in X direction. More... | |
int | m_iNumYCells |
Number of tree population grid cells in Y direction. More... | |
short int | m_iNumTotalSpecies |
Total number of species. More... | |
Protected Attributes inherited from clBehaviorBase | |
short int | m_iNumSpeciesTypeCombos |
How many type/species combos a behavior will act on. More... | |
short int | m_iNumBehaviorSpecies |
How many distinct species are in the combo list - important for filling species-specific values from parameter file. More... | |
short int * | mp_iWhatSpecies |
List of distinct species - for filling species-specific values from parameter file. More... | |
stcSpeciesTypeCombo * | mp_whatSpeciesTypeCombos |
Array of species/type combos that the behavior will act on. More... | |
short int | m_iNewTreeInts |
The number of new tree integer data members this behavior wants to add. More... | |
short int | m_iNewTreeFloats |
The number of new tree float data members this behavior wants to add. More... | |
short int | m_iNewTreeChars |
The number of new tree character data members this behavior wants to add. More... | |
short int | m_iNewTreeBools |
The number of new tree boolean data members this behavior wants to add. More... | |
short int | m_iBehaviorListNumber |
The number of this behavior in the behavior list, to differentiate between possible multiple copies of this behavior. More... | |
float | m_fVersionNumber |
Version number - this will be rounded to 2 digits after the decimal place. More... | |
std::string | m_sXMLRoot |
XML root that encloses the parameters for this behavior. More... | |
float | m_fMinimumVersionNumber |
Minimum version number - this behavior will run parameter data for a file marked between this number and the current version number, inclusive. More... | |
Protected Attributes inherited from clWorkerBase | |
std::string | m_sNameString |
If a behavior has registered a command line command with the sim manager, this allows it to be called. More... | |
clSimManager * | mp_oSimManager |
Pointer to the simulation manager object. More... | |
int * | mp_iAllowedFileTypes |
List of the input file types this object can handle. More... | |
int | m_iNumAllowedTypes |
Number of input file types this object can handle. More... | |
Friends | |
class | clTestRipleysKCalculator |
Ripley's K Calculator Version 1.0.
This behavior calculates Ripley's K. Ripley's K is calculated for successive distances out to a maximum. The user sets the maximum distance and the increment. Ripley's K for a given distance t is calculated as:
K(t) = AX / n2
where A is the area of the plot in square meters, X is the number of pairs of trees <= t meters apart, and n is the total number of trees in the plot. All saplings and adults are counted. All other types are ignored.
When searching for tree pairs it is important to make sure we only find each pair a single time. So the search proceeds by tree population grid cell. For each cell, a square of cells around it is searched. A matrix is used to keep track of which cells have already been paired so they are not paired again.
The statistic is calculated both for all trees and for individual species.
The values are collected into a grid called "Ripley's K".
This class's namestring and parameter file call string are "RipleysK". Any tree type/species assignments are ignored.
Edit history:
--------------—
October 20, 2011 - Wiped the slate clean for SORTIE 7.0 (LEM)
clRipleysKCalculator::clRipleysKCalculator | ( | clSimManager * | p_oSimManager | ) |
Constructor.
p_oSimManager | clSimManager object. |
clRipleysKCalculator::~clRipleysKCalculator | ( | ) |
Destructor.
|
virtual |
Calculates Ripley's K.
First, the values in the "Ripley's K" grid are cleared. Then this moves through the grid cells looking for tree pairs. For each cell this searches cells in a circle, using ProcessCell() and ProcessOwnCell() to find pairs. Once tree pairs have been found, this finishes the Ripley's K calculation.
Reimplemented from clBehaviorBase.
|
virtual |
Does setup for this behavior.
Calls:
p_oDoc | DOM tree of parsed input file. |
Implements clWorkerBase.
|
protected |
Reads values from the parameter file and performs setup related to the parameters.
This validates the increment and distance.
p_oDoc | DOM tree of parsed input file. |
modelErr | if either the increment or the max distance are less than or equal to zero, or if the increment is less than the max distance. |
|
protected |
Gets the X and Y tree data codes.
p_oPop | Tree population object |
|
protected |
Processes a neighboring cell's trees to find distance pairs.
This finds all pairs of saplings and adults within the max distance and counts each pair into the appropriate bins in the Ripley's K calculator array.
p_oPop | Tree population object. |
p_oFirstTree | The shortest valid tree in the home cell. |
iX | X coordinate of home cell. |
iY | Y coordinate of home cell. |
iNeighX | X coordinate of the neighbor cell to search for tree pairs. |
iNeighY | Y coordinate of the neighbor cell to search for tree pairs. |
|
protected |
Processes a single cell's trees to find distance pairs.
This finds all pairs of saplings and adults within the max distance, being careful not to pair a tree with itself, and counts each pair into the appropriate bins in the Ripley's K calculator array. This also counts all the trees in the cell for the purposes of finding the plot's grand total.
p_oFirstTree | The shortest valid tree in the home cell. |
p_fNumTrees | The array for number of saplings and adults in the cell for each species. |
iX | X coordinate of home cell. |
iY | Y coordinate of home cell. |
|
protected |
Sets up the "Ripley's K" grid and registers the data members.
|
protected |
Sets up the structures for searching controls.
This sets up the mp_bCellsSearched matrix and finds the search distances in the X and Y directions. If the search distance is more than half the plot length in either direction, then it will be limited to half the plot length. This also sets up the mp_fIncs array.
p_oPop | Tree population object |
|
friend |
|
protected |
The distance increment used to step out to the max distance.
|
protected |
The max distance to which to calculate Ripley's K.
|
protected |
Number of increments for which to calculate Ripley's K.
|
protected |
Total number of species.
For the destructor.
|
protected |
Number of tree population grid cells in X direction.
|
protected |
The number of cells to search in the X direction - if the plot is a rectangle and the search distance is long the distances along the two axes may be different.
|
protected |
Number of tree population grid cells in Y direction.
|
protected |
The number of cells to search in the Y direction - if the plot is a rectangle and the search distance is long the distances along the two axes may be different.
|
protected |
Which cells have already been paired the current timestep.
The matrix size is number of total cells by number of total cells (flattening the 2D tree population cell matrix into a single array). The index for a tree population grid cell is number of X cells * X cell index + Y cell index. Since every grid cell is paired with every other, once a pair of grid cells is searched, two matrix cells must be switched to true.
|
protected |
Distance increment values - array size is m_iNumIncs.
|
protected |
Values holding Ripley's K for each timestep.
I tried to make this a temp array each timestep but I got weird crashes. Array size is number of species plus 1 by m_iNumIncs.
|
protected |
Holds the codes for the "Ripley's K" grid.
The first array index is number of species, with array size being m_iNumTotalSpecies + 1 (the last index holds the all-species codes). The second array index is buckets for values along the distance line, and is sized m_iNumIncs.
|
protected |
Holds codes for X data member.
First array index is total # species, second is number types (2 - sapling, adult).
|
protected |
Holds codes for Y data member.
First array index is total # species, second is number types (2 - sapling, adult).
|
protected |
Grid holding Ripley's K values for the plot plus each species.
The grid name is "Ripley's K". It has one data member for each increment step out to the max for each species, plus one more set for the all-species values. For example, if the max distance is 50 meters and the increment is 1 meter, it will have 50 * (X + 1) data members, where X is the number of species. The names are X_Y, where X is the increment step number (starting at zero) and Y is the species number (starting at zero). It also has two more for the length of distance increment ("inc") and the max distance ("dist"), to make output display easier.
This grid is always one cell per plot. Changes to grid cell resolution are ignored.