openModeller  Version 1.4.0
GenericBestSubsets.cpp
Go to the documentation of this file.
00001 
00030 #include "GenericBestSubsets.hh"
00031 
00032 #include <openmodeller/om.hh>
00033 #include <openmodeller/Random.hh>
00034 #include <openmodeller/Sampler.hh>
00035 
00036 #include <stdlib.h>
00037 #include <stdio.h>
00038 #include <math.h>
00039 
00040 #define NUM_PARAM 8
00041 
00042 /************************************/
00043 /*** Algorithm parameter metadata ***/
00044 
00045 AlgParamMetadata parameters_bs[NUM_PARAM] = 
00046 {
00047   // Best Subsets Parameters
00048   {
00049     "SubAlgorithm",
00050     "SubAlgorithm",
00051     "String",
00052     "Name of the algorithm to use.",
00053     "",
00054     0,
00055     0,
00056     0,
00057     0,
00058     "DG_GARP"
00059   },
00060   {
00061     "TrainingProportion",          // Id.
00062     "Training Proportion",          // Name.
00063     "Double",                      // Type.
00064 
00065     // Overview.
00066     "Proportion of the occurrence data to be used to train the models.",
00067 
00068     // Description.
00069     "",
00070 
00071     1,      // Not zero if the parameter has lower limit.
00072     0,      // Parameter's lower limit.
00073     1,      // Not zero if the parameter has upper limit.
00074     1,      // Parameter's upper limit.
00075     "0.5"   // Parameter's typical (default) value.
00076   },
00077 
00078   {
00079     "TotalRuns",            // Id.
00080     "Total Runs",           // Name.
00081     "Integer",              // Type.
00082 
00083     // Overview.
00084     "Maximum number of GARP runs to be performed.",
00085 
00086     // Description.
00087     "",
00088 
00089     1,      // Not zero if the parameter has lower limit.
00090     0,      // Parameter's lower limit.
00091     1,      // Not zero if the parameter has upper limit.
00092     10000,  // Parameter's upper limit.
00093     "10"   // Parameter's typical (default) value.
00094   },
00095 
00096   {
00097     "HardOmissionThreshold",          // Id.
00098     "Hard Omission Threshold",        // Name.
00099     "Double",                         // Type.
00100 
00101     // Overview.
00102     "Maximum acceptable omission error. Set to 100% to use only soft omission",
00103 
00104     // Description.
00105     "",
00106 
00107     1,      // Not zero if the parameter has lower limit.
00108     0,      // Parameter's lower limit.
00109     1,      // Not zero if the parameter has upper limit.
00110     100,    // Parameter's upper limit.
00111     "100"    // Parameter's typical (default) value.
00112   },
00113 
00114   {
00115     "ModelsUnderOmissionThreshold",                   // Id.
00116     "Models Under Omission Threshold",                // Name.
00117     "Integer",                                        // Type.
00118 
00119     // Overview.
00120     "Minimum number of models below omission threshold.",
00121 
00122     // Description.
00123     "",
00124 
00125     1,      // Not zero if the parameter has lower limit.
00126     0,      // Parameter's lower limit.
00127     1,      // Not zero if the parameter has upper limit.
00128     10000,  // Parameter's upper limit.
00129     "20"    // Parameter's typical (default) value.
00130   },
00131 
00132   {
00133     "CommissionThreshold",          // Id.
00134     "Commission Threshold",         // Name.
00135     "Double",                       // Type.
00136 
00137     // Overview.
00138     "Percentage of distribution of models to be taken regarding commission error.",
00139 
00140     // Description.
00141     "",
00142 
00143     1,      // Not zero if the parameter has lower limit.
00144     0,      // Parameter's lower limit.
00145     1,      // Not zero if the parameter has upper limit.
00146     100,    // Parameter's upper limit.
00147     "50"    // Parameter's typical (default) value.
00148   },
00149 
00150   {
00151     "CommissionSampleSize",          // Id.
00152     "Commission Sample Size",        // Name.
00153     "Integer",                       // Type.
00154 
00155     // Overview.
00156     "Number of samples used to calculate commission error.",
00157 
00158     // Description.
00159     "",
00160 
00161     1,        // Not zero if the parameter has lower limit.
00162     1,        // Parameter's lower limit.
00163     0,        // Not zero if the parameter has upper limit.
00164     0,        // Parameter's upper limit.
00165     "10000"   // Parameter's typical (default) value.
00166   },
00167 
00168   {
00169     "MaxThreads",                       // Id.
00170     "Maximum Number of Threads",        // Name.
00171     "Integer",                          // Type.
00172 
00173     // Overview.
00174     "Maximum number of threads of executions to run simultaneously.",
00175 
00176     // Description.
00177     "",
00178 
00179     1,        // Not zero if the parameter has lower limit.
00180     1,        // Parameter's lower limit.
00181     1,        // Not zero if the parameter has upper limit.
00182     1024,     // Parameter's upper limit.
00183     "1"       // Parameter's typical (default) value.
00184   }
00185 };
00186 
00187 /************************************/
00188 /*** Algorithm's general metadata ***/
00189 
00190 AlgMetadata metadata_bs = {
00191   
00192   "BestSubsets",                        // Id.
00193   "Generic Best Subsets",  // Name.
00194   "3.0.1 alpha",                       // Version.
00195 
00196   // Overview.
00197   "",
00198 
00199   // Description.
00200   "",
00201 
00202   // Author
00203   "",  
00204 
00205   // Bibliography.
00206   "",
00207 
00208   "Ricardo Scachetti Pereira",  // Code author.
00209   "rpereira [at] ku.edu",       // Code author's contact.
00210 
00211   0,  // Does not accept categorical data.
00212   1,  // Does not need (pseudo)absence points.
00213 
00214   NUM_PARAM,   // Algorithm's parameters.
00215   parameters_bs
00216 };
00217 
00218 
00219 /****************************************************************/
00220 /****************** Algorithm's factory function ****************/
00221 
00222 OM_ALG_DLL_EXPORT 
00223 AlgorithmImpl * 
00224 algorithmFactory()
00225 {
00226   return new GenericBestSubsets();
00227 }
00228 
00229 OM_ALG_DLL_EXPORT
00230 AlgMetadata const *
00231 algorithmMetadata()
00232 {
00233   return &metadata_bs;
00234 }
00235 
00236 /****************************************************************/
00237 /****************** Garp class **********************************/
00238 
00239 GenericBestSubsets::GenericBestSubsets()
00240   : AbstractBestSubsets(& metadata_bs)
00241 {
00242 }
00243 
00244 // ****************************************************************
00245 GenericBestSubsets::~GenericBestSubsets()
00246 {
00247 }
00248