openModeller
Version 1.4.0
|
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