8 #ifndef SWOOSEUTILITIES_SETTINGSPOPULATOR_H
9 #define SWOOSEUTILITIES_SETTINGSPOPULATOR_H
20 namespace SwooseUtilities {
33 bool setEmptyDefault =
true);
61 bool includeReadWriteMode =
true);
94 sfamAtomTypeLevel.addOption(
"elements");
95 sfamAtomTypeLevel.addOption(
"low");
96 sfamAtomTypeLevel.addOption(
"high");
97 sfamAtomTypeLevel.addOption(
"unique");
98 sfamAtomTypeLevel.setDefaultOption(
"high");
99 settings.push_back(SettingsNames::sfamAtomTypeLevel, std::move(sfamAtomTypeLevel));
105 "Sets the option to have a very verbose output from the MM calculation, which includes the individual energy "
107 printContributionsMolecularMechanics.setDefaultValue(
false);
108 settings.push_back(SettingsNames::printContributionsMolecularMechanics, std::move(printContributionsMolecularMechanics));
111 inline void SettingsPopulator::addOnlyCalculateBondedContribution(Utils::UniversalSettings::DescriptorCollection& settings) {
112 Utils::UniversalSettings::BoolDescriptor onlyCalculateBondedContribution(
113 "Sets the option to only calculate covalent contributions within the MM model.");
114 onlyCalculateBondedContribution.setDefaultValue(
false);
115 settings.push_back(SettingsNames::onlyCalculateBondedContribution, std::move(onlyCalculateBondedContribution));
118 inline void SettingsPopulator::addParameterAndConnectivityFile(Utils::UniversalSettings::DescriptorCollection& settings,
119 bool setEmptyDefault) {
120 Utils::UniversalSettings::StringDescriptor parameterFilePath(
121 "Path to the MM parameter file (for reading and writing).");
123 parameterFilePath.setDefaultValue(
"");
125 parameterFilePath.setDefaultValue(
"Parameters.dat");
126 settings.push_back(SettingsNames::parameterFilePath, std::move(parameterFilePath));
128 Utils::UniversalSettings::StringDescriptor connectivityFilePath(
129 "Path to the system connectivity file (for reading and writing).");
131 connectivityFilePath.setDefaultValue(
"");
133 connectivityFilePath.setDefaultValue(
"Connectivity.dat");
134 settings.push_back(SettingsNames::connectivityFilePath, std::move(connectivityFilePath));
137 inline void SettingsPopulator::addDetectBondsWithCovalentRadiiOption(Utils::UniversalSettings::DescriptorCollection& settings) {
138 Utils::UniversalSettings::BoolDescriptor detectBonds(
139 "Decides whether the connectivity should be determined by bond detection based on covalent radii instead of "
140 "reading the connectivity file.");
141 detectBonds.setDefaultValue(
false);
142 settings.push_back(SettingsNames::detectBondsWithCovalentRadii, std::move(detectBonds));
145 inline void SettingsPopulator::addNonCovalentCutoffRadius(Utils::UniversalSettings::DescriptorCollection& settings) {
146 Utils::UniversalSettings::DoubleDescriptor cutoffRadius(
147 "The cutoff radius for non covalent interactions in Angstrom.");
148 cutoffRadius.setMinimum(0.0);
149 cutoffRadius.setDefaultValue(12.0);
150 settings.push_back(SettingsNames::nonCovalentCutoffRadius, std::move(cutoffRadius));
153 inline void SettingsPopulator::addHydrogenBondCorrection(Utils::UniversalSettings::DescriptorCollection& settings) {
154 Utils::UniversalSettings::BoolDescriptor hydrogenBondCorrection(
"Include hydrogen bond interaction in MM model.");
155 hydrogenBondCorrection.setDefaultValue(
true);
156 settings.push_back(SettingsNames::hydrogenBondCorrection, std::move(hydrogenBondCorrection));
159 inline void SettingsPopulator::addApplyCutoffDuringInitializationOption(Utils::UniversalSettings::DescriptorCollection& settings) {
160 Utils::UniversalSettings::BoolDescriptor applyCutoffDuringInitialization(
161 "Decides whether the non-covalent cutoff radius should be enforced during the initialization of the calculator "
163 "exclude the interactions beyond the distance cutoff.");
164 applyCutoffDuringInitialization.setDefaultValue(
false);
165 settings.push_back(SettingsNames::applyCutoffDuringInitialization, std::move(applyCutoffDuringInitialization));
168 inline void SettingsPopulator::addGaffAtomicChargesFile(Utils::UniversalSettings::DescriptorCollection& settings) {
169 Utils::UniversalSettings::StringDescriptor atomicChargeFilePath(
"Path to atomic charges file for GAFF.");
170 atomicChargeFilePath.setDefaultValue(
"");
171 settings.push_back(SettingsNames::gaffAtomicChargesFile, std::move(atomicChargeFilePath));
174 inline void SettingsPopulator::addGaffAtomTypesFile(Utils::UniversalSettings::DescriptorCollection& settings) {
175 Utils::UniversalSettings::StringDescriptor atomTypesFilePath(
"Path to atom types file for GAFF.");
176 atomTypesFilePath.setDefaultValue(
"");
177 settings.push_back(SettingsNames::gaffAtomTypesFile, std::move(atomTypesFilePath));
180 inline void SettingsPopulator::addQmAtomsOption(Utils::UniversalSettings::DescriptorCollection& settings) {
181 Utils::UniversalSettings::IntListDescriptor qmAtoms(
"A list containing the indices of the atoms in the QM region.");
182 qmAtoms.setDefaultValue({});
183 settings.push_back(SettingsNames::qmAtomsList, std::move(qmAtoms));
186 inline void SettingsPopulator::addChargeRedistributionOption(Utils::UniversalSettings::DescriptorCollection& settings) {
187 Utils::UniversalSettings::OptionListDescriptor chargeRedistr(
188 "Sets the charge redistribution scheme for the MM atoms close to the QM-MM boundary.");
189 chargeRedistr.addOption(OptionNames::redistributedChargeOption);
190 chargeRedistr.addOption(OptionNames::redistributedChargeAndDipolesOption);
191 chargeRedistr.setDefaultOption(OptionNames::redistributedChargeOption);
192 settings.push_back(SettingsNames::chargeRedistributionKey, std::move(chargeRedistr));
195 inline void SettingsPopulator::addElectrostaticEmbeddingOption(Utils::UniversalSettings::DescriptorCollection& settings) {
196 Utils::UniversalSettings::BoolDescriptor electrostaticEmbeddingOption(
197 "Sets whether electrostatic embedding is used in QM/MM. The alternative is applying mechanical embedding only.");
198 electrostaticEmbeddingOption.setDefaultValue(
true);
199 settings.push_back(SettingsNames::electrostaticEmbedding, std::move(electrostaticEmbeddingOption));
202 inline void SettingsPopulator::addQmRegionXyzFileOption(Utils::UniversalSettings::DescriptorCollection& settings) {
203 Utils::UniversalSettings::StringDescriptor qmRegionXyzFile(
204 "The path to a file to which the QM region can be dumped in XYZ format.");
205 qmRegionXyzFile.setDefaultValue(
"");
206 settings.push_back(SettingsNames::qmRegionXyzFile, std::move(qmRegionXyzFile));
209 inline void SettingsPopulator::addIgnoreQmOption(Utils::UniversalSettings::DescriptorCollection& settings) {
210 Utils::UniversalSettings::BoolDescriptor ignoreQm(
211 "Whether to ignore all contributions from the QM calculation, and therefore, not performing it.");
212 ignoreQm.setDefaultValue(
false);
213 settings.push_back(SettingsNames::ignoreQmOption, std::move(ignoreQm));
216 inline void SettingsPopulator::addReducedQmMmEnergyOption(Utils::UniversalSettings::DescriptorCollection& settings) {
217 Utils::UniversalSettings::BoolDescriptor reducedEnergyOption(
218 "Sets whether an additional MM calculation shall be performed to evaluate the reduced QM/MM energy without any "
219 "MM contributions for atoms located solely within the environment.");
220 reducedEnergyOption.setDefaultValue(
false);
221 settings.push_back(SettingsNames::calculateReducedQmMmEnergy, std::move(reducedEnergyOption));
224 inline void SettingsPopulator::addBondOrderThreshold(Utils::UniversalSettings::DescriptorCollection& settings) {
225 Utils::UniversalSettings::DoubleDescriptor bondOrderThreshold(
226 "Sets the threshold for which bond orders to consider as bonds.");
227 bondOrderThreshold.setMinimum(0.0);
228 bondOrderThreshold.setMaximum(2.0);
229 bondOrderThreshold.setDefaultValue(0.5);
230 settings.push_back(SettingsNames::bondOrderThreshold, std::move(bondOrderThreshold));
233 inline void SettingsPopulator::addConnectivityRefinementOption(Utils::UniversalSettings::DescriptorCollection& settings) {
234 Utils::UniversalSettings::BoolDescriptor refineConnectivity(
235 "Whether the connectivities of the atoms obtained from covalent radii shall be refined applying quantum-chemical "
237 refineConnectivity.setDefaultValue(
true);
238 settings.push_back(SettingsNames::refineConnectivity, std::move(refineConnectivity));
241 inline void SettingsPopulator::addExistingParameterFile(Utils::UniversalSettings::DescriptorCollection& settings) {
242 Utils::UniversalSettings::StringDescriptor existingParameters(
243 "Path to an MM parameter file, which already contains some parameters that can be re-used for the "
245 existingParameters.setDefaultValue(
"");
246 settings.push_back(SettingsNames::existingParameters, std::move(existingParameters));
249 inline void SettingsPopulator::addConstrainMMParametersOption(Utils::UniversalSettings::DescriptorCollection& settings) {
250 Utils::UniversalSettings::BoolDescriptor constrainMMParameters(
251 "Decides whether there should be constraints during the MM parameter optimization.");
252 constrainMMParameters.setDefaultValue(
true);
253 settings.push_back(SettingsNames::constrainMMParameters, std::move(constrainMMParameters));
257 SettingsPopulator::addOptimizeImproperDihedralForceConstantsOption(Utils::UniversalSettings::DescriptorCollection& settings) {
258 Utils::UniversalSettings::BoolDescriptor optImproperDihedralForceConstants(
259 "Decides whether the improper dihedral force constants of non-planar groups should be optimized during the MM "
260 "parameter optimization.");
261 optImproperDihedralForceConstants.setDefaultValue(
true);
262 settings.push_back(SettingsNames::optimizeImproperDihedralForceConstants, std::move(optImproperDihedralForceConstants));
265 inline void SettingsPopulator::addNumberAtomsThreshold(Utils::UniversalSettings::DescriptorCollection& settings) {
266 Utils::UniversalSettings::IntDescriptor numberAtomsThreshold(
267 "The maximum number of atoms where reference data is still generated for the whole system.");
268 numberAtomsThreshold.setMinimum(1);
269 numberAtomsThreshold.setMaximum(200);
270 numberAtomsThreshold.setDefaultValue(150);
271 settings.push_back(SettingsNames::numberAtomsThreshold, std::move(numberAtomsThreshold));
274 inline void SettingsPopulator::addGaussianMethodAndBasisSet(Utils::UniversalSettings::DescriptorCollection& settings) {
275 Utils::UniversalSettings::StringDescriptor gaussianMethod(
276 "The method used in the Gaussian calculation for the CM5 charges.");
277 gaussianMethod.setDefaultValue(
"PBEPBE");
278 settings.push_back(SettingsNames::gaussianMethod, std::move(gaussianMethod));
280 Utils::UniversalSettings::StringDescriptor gaussianBasisSet(
281 "The basis set used in the Gaussian calculation for the CM5 charges.");
282 gaussianBasisSet.setDefaultValue(
"def2SVP");
283 settings.push_back(SettingsNames::gaussianBasisSet, std::move(gaussianBasisSet));
286 inline void SettingsPopulator::addBaseWorkingDirectory(Utils::UniversalSettings::DescriptorCollection& settings) {
287 Utils::UniversalSettings::StringDescriptor baseWorkingDirectory(
"Base directory for the calculations.");
289 settings.push_back(Utils::ExternalQC::SettingsNames::baseWorkingDirectory, std::move(baseWorkingDirectory));
292 inline void SettingsPopulator::addExternalProgramNProcs(Utils::UniversalSettings::DescriptorCollection& settings) {
293 Utils::UniversalSettings::IntDescriptor externalProgramNProcs(
294 "Number of processes for a reference calculation by an external program.");
295 externalProgramNProcs.setDefaultValue(1);
296 externalProgramNProcs.setMinimum(1);
297 settings.push_back(Utils::SettingsNames::externalProgramNProcs, std::move(externalProgramNProcs));
300 inline void SettingsPopulator::addReferenceMethodAndBasisSet(Utils::UniversalSettings::DescriptorCollection& settings) {
301 Utils::UniversalSettings::StringDescriptor referenceMethod(
"The method used in reference calculations.");
302 referenceMethod.setDefaultValue(
"");
303 settings.push_back(SettingsNames::referenceMethod, std::move(referenceMethod));
305 Utils::UniversalSettings::StringDescriptor referenceBasisSet(
"The basis set used in reference calculations.");
306 referenceBasisSet.setDefaultValue(
"");
307 settings.push_back(SettingsNames::referenceBasisSet, std::move(referenceBasisSet));
310 inline void SettingsPopulator::addSubsystemRadius(Utils::UniversalSettings::DescriptorCollection& settings) {
311 Utils::UniversalSettings::DoubleDescriptor subsystemRadius(
312 "The radius of the spheres defining the volume of the subsystems. Unit: Angstrom.");
313 subsystemRadius.setMinimum(5.0);
314 subsystemRadius.setMaximum(12.0);
315 subsystemRadius.setDefaultValue(6.0);
316 settings.push_back(SettingsNames::subsystemRadius, std::move(subsystemRadius));
319 inline void SettingsPopulator::addReferenceDataGenerationOptions(Utils::UniversalSettings::DescriptorCollection& settings,
320 bool includeReadWriteMode) {
321 if (includeReadWriteMode) {
322 Utils::UniversalSettings::StringDescriptor refDataDir(
323 "The name of the directory where the reference calculation files are loaded from and to which the molecular "
324 "structure data is written.");
325 refDataDir.setDefaultValue(
"reference_data");
326 settings.push_back(SettingsNames::referenceDataDirectory, std::move(refDataDir));
329 Utils::UniversalSettings::OptionListDescriptor refDataMode(
330 "Mode of the reference data generation (direct, reading, writing, database)");
331 refDataMode.addOption(OptionNames::directMode);
332 refDataMode.addOption(OptionNames::databaseMode);
333 if (includeReadWriteMode) {
334 refDataMode.addOption(OptionNames::readFromFilesMode);
335 refDataMode.addOption(OptionNames::writeToFilesMode);
337 refDataMode.setDefaultOption(OptionNames::directMode);
338 settings.push_back(SettingsNames::referenceDataMode, std::move(refDataMode));
341 inline void SettingsPopulator::addDatabaseSettings(Utils::UniversalSettings::DescriptorCollection& settings,
342 std::string defaultDatabaseName) {
343 Utils::UniversalSettings::StringDescriptor databaseHost(
"The name or IP address of the database host.");
344 databaseHost.setDefaultValue(
"localhost");
345 settings.push_back(SettingsNames::databaseHost, std::move(databaseHost));
347 Utils::UniversalSettings::StringDescriptor databaseName(
"The name of the database.");
348 databaseName.setDefaultValue(defaultDatabaseName);
349 settings.push_back(SettingsNames::databaseName, std::move(databaseName));
351 Utils::UniversalSettings::IntDescriptor databasePort(
"The port through which to connect to the database.");
352 databasePort.setMinimum(27000);
353 databasePort.setMaximum(27999);
354 databasePort.setDefaultValue(27017);
355 settings.push_back(SettingsNames::databasePort, std::move(databasePort));
358 inline void SettingsPopulator::addDatabaseSleepTime(Utils::UniversalSettings::DescriptorCollection& settings) {
359 Utils::UniversalSettings::IntDescriptor databaseSleepTime(
360 "The sleep time in seconds inbetween database operations in reference data generation phase.");
361 databaseSleepTime.setMinimum(1);
362 databaseSleepTime.setMaximum(86400);
363 databaseSleepTime.setDefaultValue(60);
364 settings.push_back(SettingsNames::databaseSleepTime, std::move(databaseSleepTime));
367 inline void SettingsPopulator::addAtomicInformationFile(Utils::UniversalSettings::DescriptorCollection& settings) {
368 Utils::UniversalSettings::StringDescriptor atomicInfoFile(
369 "Path to file containing the information about formal charges and unpaired electrons.");
370 atomicInfoFile.setDefaultValue(
"");
371 settings.push_back(SettingsNames::atomicInformationFile, std::move(atomicInfoFile));
374 inline void SettingsPopulator::addUseGaussianOption(Utils::UniversalSettings::DescriptorCollection& settings) {
375 Utils::UniversalSettings::BoolDescriptor useGaussianOption(
376 "Decides whether to apply the Gaussian program to calculate CM5 charges.");
377 useGaussianOption.setDefaultValue(
false);
378 settings.push_back(SettingsNames::useGaussianOptionKey, std::move(useGaussianOption));
381 inline void SettingsPopulator::addReferenceProgram(Utils::UniversalSettings::DescriptorCollection& settings) {
382 Utils::UniversalSettings::OptionListDescriptor referenceProgram(
383 "Set program for the reference calculations in SFAM parametrizations.");
384 referenceProgram.addOption(OptionNames::turbomoleOption);
385 referenceProgram.addOption(OptionNames::orcaOption);
386 referenceProgram.addOption(OptionNames::sparrowOption);
387 referenceProgram.addOption(OptionNames::xtbOption);
388 referenceProgram.setDefaultOption(OptionNames::orcaOption);
389 settings.push_back(SettingsNames::referenceProgram, std::move(referenceProgram));
392 inline void SettingsPopulator::addIncreaseScfSafetyOption(Utils::UniversalSettings::DescriptorCollection& settings) {
393 Utils::UniversalSettings::BoolDescriptor increaseScfSafety(
394 "Decides whether options for a safer SCF convergence should be applied.");
395 increaseScfSafety.setDefaultValue(
false);
396 settings.push_back(SettingsNames::increaseScfSafetyKey, std::move(increaseScfSafety));
399 inline void SettingsPopulator::addEarlyTerminationOption(Utils::UniversalSettings::DescriptorCollection& settings) {
400 Utils::UniversalSettings::BoolDescriptor earlyTermination(
401 "Decides whether the reference data generation should be terminated early when enough data has been collected.");
402 earlyTermination.setDefaultValue(
true);
403 settings.push_back(SettingsNames::enableEarlyTerminationKey, std::move(earlyTermination));
406 inline void SettingsPopulator::addReuseDatabaseOption(Utils::UniversalSettings::DescriptorCollection& settings) {
407 Utils::UniversalSettings::BoolDescriptor reuseDatabase(
"Decides whether an existing database should be employed as "
408 "the basis for the parametrization by reusing its data.");
409 reuseDatabase.setDefaultValue(
false);
410 settings.push_back(SettingsNames::reuseDatabaseKey, std::move(reuseDatabase));
414 SettingsPopulator::addTerminateAfterReferenceDataGenerationOption(Utils::UniversalSettings::DescriptorCollection& settings) {
415 Utils::UniversalSettings::BoolDescriptor refDataOnly(
416 "Decides whether to terminate program after reference data generation step of parametrization. Can only be set "
417 "to true in case of the database or write mode.");
418 refDataOnly.setDefaultValue(
false);
419 settings.push_back(SettingsNames::terminateAfterReferenceDataGeneration, std::move(refDataOnly));
422 inline void SettingsPopulator::addUseCsvInputFormatOption(Utils::UniversalSettings::DescriptorCollection& settings) {
423 Utils::UniversalSettings::BoolDescriptor useCsv(
"Whether to use the CSV input format during read mode.");
424 useCsv.setDefaultValue(
true);
425 settings.push_back(SettingsNames::useCsvInputFormat, std::move(useCsv));
428 inline void SettingsPopulator::addConvertToCm5Option(Utils::UniversalSettings::DescriptorCollection& settings) {
429 Utils::UniversalSettings::BoolDescriptor convertChargesCm5(
430 "Whether to convert atomic charges with the Charge Model 5 algorithm.");
431 convertChargesCm5.setDefaultValue(
true);
432 settings.push_back(SettingsNames::convertChargesCm5, std::move(convertChargesCm5));
435 inline void SettingsPopulator::addYamlSettingsForDirectMode(Utils::UniversalSettings::DescriptorCollection& settings) {
436 Utils::UniversalSettings::StringDescriptor yamlSettingsFilePath(
"");
437 yamlSettingsFilePath.setDefaultValue(
"");
438 settings.push_back(SettingsNames::yamlSettingsFilePath, std::move(yamlSettingsFilePath));
441 inline void SettingsPopulator::addQmRegionCenterAtom(Utils::UniversalSettings::DescriptorCollection& settings) {
442 Utils::UniversalSettings::IntDescriptor centerAtom(
"The center atom around which the QM Region will be constructed.");
443 centerAtom.setDefaultValue(0);
444 settings.push_back(SettingsNames::qmRegionCenterAtom, std::move(centerAtom));
447 inline void SettingsPopulator::addInitialRadius(Utils::UniversalSettings::DescriptorCollection& settings) {
448 Utils::UniversalSettings::DoubleDescriptor initialRadius(
"The initial radius for the QM region generation.");
449 initialRadius.setMinimum(5.0);
450 initialRadius.setMaximum(12.0);
451 initialRadius.setDefaultValue(6.0);
452 settings.push_back(SettingsNames::initialRadiusForQmRegionSelection, std::move(initialRadius));
455 inline void SettingsPopulator::addCuttingProbability(Utils::UniversalSettings::DescriptorCollection& settings) {
456 Utils::UniversalSettings::DoubleDescriptor cuttingProbability(
457 "The cutting probability for the QM region generation.");
458 cuttingProbability.setMinimum(0.1);
459 cuttingProbability.setMaximum(1.0);
460 cuttingProbability.setDefaultValue(1.0);
461 settings.push_back(SettingsNames::cuttingProbability, std::move(cuttingProbability));
464 inline void SettingsPopulator::addQmRegionSizesSettings(Utils::UniversalSettings::DescriptorCollection& settings) {
465 Utils::UniversalSettings::IntDescriptor minSize(
"Minimum size of the QM region.");
466 minSize.setMinimum(1);
467 minSize.setDefaultValue(100);
468 settings.push_back(SettingsNames::qmRegionCandidateMinSize, std::move(minSize));
470 Utils::UniversalSettings::IntDescriptor maxSize(
"Maximum size of the QM region.");
471 maxSize.setMinimum(1);
472 maxSize.setDefaultValue(120);
473 settings.push_back(SettingsNames::qmRegionCandidateMaxSize, std::move(maxSize));
475 Utils::UniversalSettings::IntDescriptor refMaxSize(
"Maximum size for the reference QM regions.");
476 refMaxSize.setMinimum(1);
477 refMaxSize.setDefaultValue(200);
478 settings.push_back(SettingsNames::qmRegionRefMaxSize, std::move(refMaxSize));
481 inline void SettingsPopulator::addNumAttemptsPerRadiusOption(Utils::UniversalSettings::DescriptorCollection& settings) {
482 Utils::UniversalSettings::IntDescriptor numAttemptsPerRadius(
483 "Number of QM region generation attempts for a given initial radius.");
484 numAttemptsPerRadius.setMinimum(1);
485 numAttemptsPerRadius.setDefaultValue(100);
486 settings.push_back(SettingsNames::numAttemptsPerRadius, std::move(numAttemptsPerRadius));
489 inline void SettingsPopulator::addMaxNumRefModelsOption(Utils::UniversalSettings::DescriptorCollection& settings) {
490 Utils::UniversalSettings::IntDescriptor maxNumRefModels(
"Maximum number of reference models to be evaluated.");
491 maxNumRefModels.setMinimum(1);
492 maxNumRefModels.setDefaultValue(10);
493 settings.push_back(SettingsNames::maxNumRefModels, std::move(maxNumRefModels));
496 inline void SettingsPopulator::addTolerancesForQmRegionSelection(Utils::UniversalSettings::DescriptorCollection& settings) {
497 Utils::UniversalSettings::DoubleDescriptor tolPercentageError(
498 "The tolerance in percent for the mean absolute error of forces for the QM region selection.");
499 tolPercentageError.setMinimum(0.0);
500 tolPercentageError.setDefaultValue(20.0);
501 settings.push_back(SettingsNames::tolerancePercentageError, std::move(tolPercentageError));
503 Utils::UniversalSettings::DoubleDescriptor tolPercentageSymmetryScore(
504 "The tolerance in percent for the symmetry score based on the minimum symmetry score of all candidate models.");
505 tolPercentageSymmetryScore.setMinimum(0.0);
506 tolPercentageError.setDefaultValue(50.0);
507 settings.push_back(SettingsNames::tolerancePercentageSymmetryScore, std::move(tolPercentageSymmetryScore));
510 inline void SettingsPopulator::addQmRegionSelectionRandomSeed(Utils::UniversalSettings::DescriptorCollection& settings) {
511 Utils::UniversalSettings::IntDescriptor randomSeed(
"Random seed for the QM region selection.");
512 randomSeed.setDefaultValue(42);
513 settings.push_back(SettingsNames::qmRegionSelectionRandomSeed, std::move(randomSeed));
519 #endif // SWOOSEUTILITIES_SETTINGSPOPULATOR_H
SettingsPopulator()=delete
Deleted constructor.
Class with only static functions to populate settings.
Definition: SettingsPopulator.h:26
static std::string currentDirectory()