8 #ifndef SWOOSEUTILITIES_SETTINGSPOPULATOR_H
9 #define SWOOSEUTILITIES_SETTINGSPOPULATOR_H
20 namespace SwooseUtilities {
33 bool setEmptyDefault =
true);
63 bool includeReadWriteMode =
true);
110 sfamAtomTypeLevel.addOption(
"elements");
111 sfamAtomTypeLevel.addOption(
"low");
112 sfamAtomTypeLevel.addOption(
"high");
113 sfamAtomTypeLevel.addOption(
"unique");
114 sfamAtomTypeLevel.setDefaultOption(
"high");
115 settings.push_back(SettingsNames::sfamAtomTypeLevel, std::move(sfamAtomTypeLevel));
121 "Sets the option to have a very verbose output from the MM calculation, which includes the individual energy "
123 printContributionsMolecularMechanics.setDefaultValue(
false);
124 settings.push_back(SettingsNames::printContributionsMolecularMechanics, std::move(printContributionsMolecularMechanics));
127 inline void SettingsPopulator::addOnlyCalculateBondedContribution(Utils::UniversalSettings::DescriptorCollection& settings) {
128 Utils::UniversalSettings::BoolDescriptor onlyCalculateBondedContribution(
129 "Sets the option to only calculate covalent contributions within the MM model.");
130 onlyCalculateBondedContribution.setDefaultValue(
false);
131 settings.push_back(SettingsNames::onlyCalculateBondedContribution, std::move(onlyCalculateBondedContribution));
134 inline void SettingsPopulator::addParameterAndConnectivityFile(Utils::UniversalSettings::DescriptorCollection& settings,
135 bool setEmptyDefault) {
136 Utils::UniversalSettings::StringDescriptor parameterFilePath(
137 "Path to the MM parameter file (for reading and writing).");
139 parameterFilePath.setDefaultValue(
"");
141 parameterFilePath.setDefaultValue(
"Parameters.dat");
142 settings.push_back(Utils::SettingsNames::parameterFilePath, std::move(parameterFilePath));
144 Utils::UniversalSettings::StringDescriptor connectivityFilePath(
145 "Path to the system connectivity file (for reading and writing).");
147 connectivityFilePath.setDefaultValue(
"");
149 connectivityFilePath.setDefaultValue(
"Connectivity.dat");
150 settings.push_back(SettingsNames::connectivityFilePath, std::move(connectivityFilePath));
153 inline void SettingsPopulator::addDetectBondsWithCovalentRadiiOption(Utils::UniversalSettings::DescriptorCollection& settings) {
154 Utils::UniversalSettings::BoolDescriptor detectBonds(
155 "Decides whether the connectivity should be determined by bond detection based on covalent radii instead of "
156 "reading the connectivity file.");
157 detectBonds.setDefaultValue(
false);
158 settings.push_back(SettingsNames::detectBondsWithCovalentRadii, std::move(detectBonds));
161 inline void SettingsPopulator::addNonCovalentCutoffRadius(Utils::UniversalSettings::DescriptorCollection& settings) {
162 Utils::UniversalSettings::DoubleDescriptor cutoffRadius(
163 "The cutoff radius for non covalent interactions in Angstrom.");
164 cutoffRadius.setMinimum(0.0);
165 cutoffRadius.setDefaultValue(1200.0);
166 settings.push_back(SettingsNames::nonCovalentCutoffRadius, std::move(cutoffRadius));
169 inline void SettingsPopulator::addHydrogenBondCorrection(Utils::UniversalSettings::DescriptorCollection& settings) {
170 Utils::UniversalSettings::BoolDescriptor hydrogenBondCorrection(
"Include hydrogen bond interaction in MM model.");
171 hydrogenBondCorrection.setDefaultValue(
true);
172 settings.push_back(SettingsNames::hydrogenBondCorrection, std::move(hydrogenBondCorrection));
175 inline void SettingsPopulator::addApplyCutoffDuringInitializationOption(Utils::UniversalSettings::DescriptorCollection& settings) {
176 Utils::UniversalSettings::BoolDescriptor applyCutoffDuringInitialization(
177 "Decides whether the non-covalent cutoff radius should be enforced during the initialization of the calculator "
179 "exclude the interactions beyond the distance cutoff.");
180 applyCutoffDuringInitialization.setDefaultValue(
false);
181 settings.push_back(SettingsNames::applyCutoffDuringInitialization, std::move(applyCutoffDuringInitialization));
184 inline void SettingsPopulator::addGaffAtomicChargesFile(Utils::UniversalSettings::DescriptorCollection& settings) {
185 Utils::UniversalSettings::StringDescriptor atomicChargeFilePath(
"Path to atomic charges file for GAFF.");
186 atomicChargeFilePath.setDefaultValue(
"");
187 settings.push_back(SettingsNames::gaffAtomicChargesFile, std::move(atomicChargeFilePath));
190 inline void SettingsPopulator::addTitrationSiteFile(Utils::UniversalSettings::DescriptorCollection& settings) {
191 Utils::UniversalSettings::StringDescriptor titrationSiteFile(
"Path to titation sites for MM parametrization.");
192 titrationSiteFile.setDefaultValue(
"titrable_sites.dat");
193 settings.push_back(SettingsNames::titrationSiteFile, std::move(titrationSiteFile));
196 inline void SettingsPopulator::addGaffAtomTypesFile(Utils::UniversalSettings::DescriptorCollection& settings) {
197 Utils::UniversalSettings::StringDescriptor atomTypesFilePath(
"Path to atom types file for GAFF.");
198 atomTypesFilePath.setDefaultValue(
"");
199 settings.push_back(SettingsNames::gaffAtomTypesFile, std::move(atomTypesFilePath));
202 inline void SettingsPopulator::addQmAtomsOption(Utils::UniversalSettings::DescriptorCollection& settings) {
203 Utils::UniversalSettings::IntListDescriptor qmAtoms(
"A list containing the indices of the atoms in the QM region.");
204 qmAtoms.setDefaultValue({});
205 settings.push_back(Utils::SettingsNames::qmAtomsList, std::move(qmAtoms));
208 inline void SettingsPopulator::addChargeRedistributionOption(Utils::UniversalSettings::DescriptorCollection& settings) {
209 Utils::UniversalSettings::OptionListDescriptor chargeRedistr(
210 "Sets the charge redistribution scheme for the MM atoms close to the QM-MM boundary.");
211 chargeRedistr.addOption(OptionNames::redistributedChargeOption);
212 chargeRedistr.addOption(OptionNames::redistributedChargeAndDipolesOption);
213 chargeRedistr.setDefaultOption(OptionNames::redistributedChargeOption);
214 settings.push_back(SettingsNames::chargeRedistributionKey, std::move(chargeRedistr));
217 inline void SettingsPopulator::addElectrostaticEmbeddingOption(Utils::UniversalSettings::DescriptorCollection& settings) {
218 Utils::UniversalSettings::BoolDescriptor electrostaticEmbeddingOption(
219 "Sets whether electrostatic embedding is used in QM/MM. The alternative is applying mechanical embedding only.");
220 electrostaticEmbeddingOption.setDefaultValue(
false);
221 settings.push_back(Utils::SettingsNames::electrostaticEmbedding, std::move(electrostaticEmbeddingOption));
224 inline void SettingsPopulator::addQmRegionXyzFileOption(Utils::UniversalSettings::DescriptorCollection& settings) {
225 Utils::UniversalSettings::StringDescriptor qmRegionXyzFile(
226 "The path to a file to which the QM region can be dumped in XYZ format.");
227 qmRegionXyzFile.setDefaultValue(
"");
228 settings.push_back(SettingsNames::qmRegionXyzFile, std::move(qmRegionXyzFile));
231 inline void SettingsPopulator::addIgnoreQmOption(Utils::UniversalSettings::DescriptorCollection& settings) {
232 Utils::UniversalSettings::BoolDescriptor ignoreQm(
233 "Whether to ignore all contributions from the QM calculation, and therefore, not performing it.");
234 ignoreQm.setDefaultValue(
false);
235 settings.push_back(Utils::SettingsNames::ignoreQmOption, std::move(ignoreQm));
238 inline void SettingsPopulator::addOptimizeLinksOption(Utils::UniversalSettings::DescriptorCollection& settings) {
239 Utils::UniversalSettings::BoolDescriptor optLinks(
240 "Whether to optimize the position of the link nuclei before reporting an energy.");
241 optLinks.setDefaultValue(
false);
242 settings.push_back(Utils::SettingsNames::optimizeLinks, std::move(optLinks));
245 inline void SettingsPopulator::addSilenceOption(Utils::UniversalSettings::DescriptorCollection& settings) {
246 Utils::UniversalSettings::BoolDescriptor silence(
"Whether to silence the standard output of the subcalculators.");
247 silence.setDefaultValue(
false);
248 settings.push_back(SettingsNames::silenceUnderlyingCalculators, std::move(silence));
251 inline void SettingsPopulator::addReducedQmMmEnergyOption(Utils::UniversalSettings::DescriptorCollection& settings) {
252 Utils::UniversalSettings::BoolDescriptor reducedEnergyOption(
253 "Sets whether an additional MM calculation shall be performed to evaluate the reduced QM/MM energy without any "
254 "MM contributions for atoms located solely within the environment.");
255 reducedEnergyOption.setDefaultValue(
false);
256 settings.push_back(SettingsNames::calculateReducedQmMmEnergy, std::move(reducedEnergyOption));
259 inline void SettingsPopulator::addBondOrderThreshold(Utils::UniversalSettings::DescriptorCollection& settings) {
260 Utils::UniversalSettings::DoubleDescriptor bondOrderThreshold(
261 "Sets the threshold for which bond orders to consider as bonds.");
262 bondOrderThreshold.setMinimum(0.0);
263 bondOrderThreshold.setMaximum(2.0);
264 bondOrderThreshold.setDefaultValue(0.5);
265 settings.push_back(SettingsNames::bondOrderThreshold, std::move(bondOrderThreshold));
268 inline void SettingsPopulator::addConnectivityRefinementOption(Utils::UniversalSettings::DescriptorCollection& settings) {
269 Utils::UniversalSettings::BoolDescriptor refineConnectivity(
270 "Whether the connectivities of the atoms obtained from covalent radii shall be refined applying quantum-chemical "
272 refineConnectivity.setDefaultValue(
true);
273 settings.push_back(SettingsNames::refineConnectivity, std::move(refineConnectivity));
276 inline void SettingsPopulator::addExistingParameterFile(Utils::UniversalSettings::DescriptorCollection& settings) {
277 Utils::UniversalSettings::StringDescriptor existingParameters(
278 "Path to an MM parameter file, which already contains some parameters that can be re-used for the "
280 existingParameters.setDefaultValue(
"");
281 settings.push_back(SettingsNames::existingParameters, std::move(existingParameters));
284 inline void SettingsPopulator::addConstrainMMParametersOption(Utils::UniversalSettings::DescriptorCollection& settings) {
285 Utils::UniversalSettings::BoolDescriptor constrainMMParameters(
286 "Decides whether there should be constraints during the MM parameter optimization.");
287 constrainMMParameters.setDefaultValue(
true);
288 settings.push_back(SettingsNames::constrainMMParameters, std::move(constrainMMParameters));
292 SettingsPopulator::addOptimizeImproperDihedralForceConstantsOption(Utils::UniversalSettings::DescriptorCollection& settings) {
293 Utils::UniversalSettings::BoolDescriptor optImproperDihedralForceConstants(
294 "Decides whether the improper dihedral force constants of non-planar groups should be optimized during the MM "
295 "parameter optimization.");
296 optImproperDihedralForceConstants.setDefaultValue(
true);
297 settings.push_back(SettingsNames::optimizeImproperDihedralForceConstants, std::move(optImproperDihedralForceConstants));
300 inline void SettingsPopulator::addNumberAtomsThreshold(Utils::UniversalSettings::DescriptorCollection& settings) {
301 Utils::UniversalSettings::IntDescriptor numberAtomsThreshold(
302 "The maximum number of atoms where reference data is still generated for the whole system.");
303 numberAtomsThreshold.setMinimum(1);
304 numberAtomsThreshold.setMaximum(200);
305 numberAtomsThreshold.setDefaultValue(150);
306 settings.push_back(SettingsNames::numberAtomsThreshold, std::move(numberAtomsThreshold));
309 inline void SettingsPopulator::addGaussianMethodAndBasisSet(Utils::UniversalSettings::DescriptorCollection& settings) {
310 Utils::UniversalSettings::StringDescriptor gaussianMethod(
311 "The method used in the Gaussian calculation for the CM5 charges.");
312 gaussianMethod.setDefaultValue(
"PBEPBE");
313 settings.push_back(SettingsNames::gaussianMethod, std::move(gaussianMethod));
315 Utils::UniversalSettings::StringDescriptor gaussianBasisSet(
316 "The basis set used in the Gaussian calculation for the CM5 charges.");
317 gaussianBasisSet.setDefaultValue(
"def2SVP");
318 settings.push_back(SettingsNames::gaussianBasisSet, std::move(gaussianBasisSet));
321 inline void SettingsPopulator::addBaseWorkingDirectory(Utils::UniversalSettings::DescriptorCollection& settings) {
322 Utils::UniversalSettings::StringDescriptor baseWorkingDirectory(
"Base directory for the calculations.");
324 settings.push_back(Utils::ExternalQC::SettingsNames::baseWorkingDirectory, std::move(baseWorkingDirectory));
327 inline void SettingsPopulator::addExternalProgramNProcs(Utils::UniversalSettings::DescriptorCollection& settings) {
328 Utils::UniversalSettings::IntDescriptor externalProgramNProcs(
329 "Number of processes for a reference calculation by an external program.");
330 externalProgramNProcs.setDefaultValue(1);
331 externalProgramNProcs.setMinimum(1);
332 settings.push_back(Utils::SettingsNames::externalProgramNProcs, std::move(externalProgramNProcs));
335 inline void SettingsPopulator::addReferenceMethodAndBasisSet(Utils::UniversalSettings::DescriptorCollection& settings) {
336 Utils::UniversalSettings::StringDescriptor referenceMethod(
"The method used in reference calculations.");
337 referenceMethod.setDefaultValue(
"");
338 settings.push_back(SettingsNames::referenceMethod, std::move(referenceMethod));
340 Utils::UniversalSettings::StringDescriptor referenceBasisSet(
"The basis set used in reference calculations.");
341 referenceBasisSet.setDefaultValue(
"");
342 settings.push_back(SettingsNames::referenceBasisSet, std::move(referenceBasisSet));
345 inline void SettingsPopulator::addSubsystemRadius(Utils::UniversalSettings::DescriptorCollection& settings) {
346 Utils::UniversalSettings::DoubleDescriptor subsystemRadius(
347 "The radius of the spheres defining the volume of the subsystems. Unit: Angstrom.");
348 subsystemRadius.setMinimum(5.0);
349 subsystemRadius.setMaximum(12.0);
350 subsystemRadius.setDefaultValue(6.0);
351 settings.push_back(SettingsNames::subsystemRadius, std::move(subsystemRadius));
354 inline void SettingsPopulator::addReferenceDataGenerationOptions(Utils::UniversalSettings::DescriptorCollection& settings,
355 bool includeReadWriteMode) {
356 if (includeReadWriteMode) {
357 Utils::UniversalSettings::StringDescriptor refDataDir(
358 "The name of the directory where the reference calculation files are loaded from and to which the molecular "
359 "structure data is written.");
360 refDataDir.setDefaultValue(
"reference_data");
361 settings.push_back(SettingsNames::referenceDataDirectory, std::move(refDataDir));
364 Utils::UniversalSettings::OptionListDescriptor refDataMode(
365 "Mode of the reference data generation (direct, reading, writing, database)");
366 refDataMode.addOption(OptionNames::directMode);
367 refDataMode.addOption(OptionNames::databaseMode);
368 if (includeReadWriteMode) {
369 refDataMode.addOption(OptionNames::readFromFilesMode);
370 refDataMode.addOption(OptionNames::writeToFilesMode);
372 refDataMode.setDefaultOption(OptionNames::directMode);
373 settings.push_back(SettingsNames::referenceDataMode, std::move(refDataMode));
376 inline void SettingsPopulator::addDatabaseSettings(Utils::UniversalSettings::DescriptorCollection& settings,
377 std::string defaultDatabaseName) {
378 Utils::UniversalSettings::StringDescriptor databaseHost(
"The name or IP address of the database host.");
379 databaseHost.setDefaultValue(
"localhost");
380 settings.push_back(SettingsNames::databaseHost, std::move(databaseHost));
382 Utils::UniversalSettings::StringDescriptor databaseName(
"The name of the database.");
383 databaseName.setDefaultValue(defaultDatabaseName);
384 settings.push_back(SettingsNames::databaseName, std::move(databaseName));
386 Utils::UniversalSettings::IntDescriptor databasePort(
"The port through which to connect to the database.");
387 databasePort.setMinimum(27000);
388 databasePort.setMaximum(27999);
389 databasePort.setDefaultValue(27017);
390 settings.push_back(SettingsNames::databasePort, std::move(databasePort));
393 inline void SettingsPopulator::addDatabaseSleepTime(Utils::UniversalSettings::DescriptorCollection& settings) {
394 Utils::UniversalSettings::IntDescriptor databaseSleepTime(
395 "The sleep time in seconds inbetween database operations in reference data generation phase.");
396 databaseSleepTime.setMinimum(1);
397 databaseSleepTime.setMaximum(86400);
398 databaseSleepTime.setDefaultValue(60);
399 settings.push_back(SettingsNames::databaseSleepTime, std::move(databaseSleepTime));
402 inline void SettingsPopulator::addAtomicInformationFile(Utils::UniversalSettings::DescriptorCollection& settings,
403 bool setEmptyDefault) {
404 Utils::UniversalSettings::StringDescriptor atomicInfoFile(
405 "Path to file containing the information about formal charges and unpaired electrons.");
406 if (setEmptyDefault) {
407 atomicInfoFile.setDefaultValue(
"");
410 atomicInfoFile.setDefaultValue(
"atomic_info.dat");
412 settings.push_back(SettingsNames::atomicInformationFile, std::move(atomicInfoFile));
415 inline void SettingsPopulator::addUseGaussianOption(Utils::UniversalSettings::DescriptorCollection& settings) {
416 Utils::UniversalSettings::BoolDescriptor useGaussianOption(
417 "Decides whether to apply the Gaussian program to calculate CM5 charges.");
418 useGaussianOption.setDefaultValue(
false);
419 settings.push_back(SettingsNames::useGaussianOptionKey, std::move(useGaussianOption));
422 inline void SettingsPopulator::addReferenceProgram(Utils::UniversalSettings::DescriptorCollection& settings) {
423 Utils::UniversalSettings::OptionListDescriptor referenceProgram(
424 "Set program for the reference calculations in SFAM parametrization.");
425 referenceProgram.addOption(OptionNames::turbomoleOption);
426 referenceProgram.addOption(OptionNames::orcaOption);
427 referenceProgram.addOption(OptionNames::sparrowOption);
428 referenceProgram.addOption(OptionNames::xtbOption);
429 referenceProgram.setDefaultOption(OptionNames::orcaOption);
430 settings.push_back(SettingsNames::referenceProgram, std::move(referenceProgram));
433 inline void SettingsPopulator::addIncreaseScfSafetyOption(Utils::UniversalSettings::DescriptorCollection& settings) {
434 Utils::UniversalSettings::BoolDescriptor increaseScfSafety(
435 "Decides whether options for a safer SCF convergence should be applied.");
436 increaseScfSafety.setDefaultValue(
false);
437 settings.push_back(SettingsNames::increaseScfSafetyKey, std::move(increaseScfSafety));
440 inline void SettingsPopulator::addEarlyTerminationOption(Utils::UniversalSettings::DescriptorCollection& settings) {
441 Utils::UniversalSettings::BoolDescriptor earlyTermination(
442 "Decides whether the reference data generation should be terminated early when enough data has been collected.");
443 earlyTermination.setDefaultValue(
true);
444 settings.push_back(SettingsNames::enableEarlyTerminationKey, std::move(earlyTermination));
447 inline void SettingsPopulator::addReuseDatabaseOption(Utils::UniversalSettings::DescriptorCollection& settings) {
448 Utils::UniversalSettings::BoolDescriptor reuseDatabase(
"Decides whether an existing database should be employed as "
449 "the basis for the parametrization by reusing its data.");
450 reuseDatabase.setDefaultValue(
false);
451 settings.push_back(SettingsNames::reuseDatabaseKey, std::move(reuseDatabase));
455 SettingsPopulator::addTerminateAfterReferenceDataGenerationOption(Utils::UniversalSettings::DescriptorCollection& settings) {
456 Utils::UniversalSettings::BoolDescriptor refDataOnly(
457 "Decides whether to terminate program after reference data generation step of parametrization. Can only be set "
458 "to true in case of the database or write mode.");
459 refDataOnly.setDefaultValue(
false);
460 settings.push_back(SettingsNames::terminateAfterReferenceDataGeneration, std::move(refDataOnly));
463 inline void SettingsPopulator::addUseCsvInputFormatOption(Utils::UniversalSettings::DescriptorCollection& settings) {
464 Utils::UniversalSettings::BoolDescriptor useCsv(
"Whether to use the CSV input format during read mode.");
465 useCsv.setDefaultValue(
true);
466 settings.push_back(SettingsNames::useCsvInputFormat, std::move(useCsv));
469 inline void SettingsPopulator::addConvertToCm5Option(Utils::UniversalSettings::DescriptorCollection& settings) {
470 Utils::UniversalSettings::BoolDescriptor convertChargesCm5(
471 "Whether to convert atomic charges with the Charge Model 5 algorithm.");
472 convertChargesCm5.setDefaultValue(
true);
473 settings.push_back(SettingsNames::convertChargesCm5, std::move(convertChargesCm5));
476 inline void SettingsPopulator::addYamlSettingsForDirectMode(Utils::UniversalSettings::DescriptorCollection& settings) {
477 Utils::UniversalSettings::StringDescriptor yamlSettingsFilePath(
"");
478 yamlSettingsFilePath.setDefaultValue(
"");
479 settings.push_back(SettingsNames::yamlSettingsFilePath, std::move(yamlSettingsFilePath));
482 inline void SettingsPopulator::addQmRegionCenterAtoms(Utils::UniversalSettings::DescriptorCollection& settings) {
483 Utils::UniversalSettings::IntListDescriptor centerAtoms(
484 "The center atom(s) around which the QM Region will be constructed.");
485 centerAtoms.setDefaultValue({0});
486 settings.push_back(SettingsNames::qmRegionCenterAtoms, std::move(centerAtoms));
489 inline void SettingsPopulator::addInitialRadius(Utils::UniversalSettings::DescriptorCollection& settings) {
490 Utils::UniversalSettings::DoubleDescriptor initialRadius(
"The initial radius for the QM region generation.");
491 initialRadius.setMinimum(2.0);
492 initialRadius.setMaximum(12.0);
493 initialRadius.setDefaultValue(6.0);
494 settings.push_back(SettingsNames::initialRadiusForQmRegionSelection, std::move(initialRadius));
497 inline void SettingsPopulator::addCuttingProbability(Utils::UniversalSettings::DescriptorCollection& settings) {
498 Utils::UniversalSettings::DoubleDescriptor cuttingProbability(
499 "The cutting probability for the QM region generation.");
500 cuttingProbability.setMinimum(0.1);
501 cuttingProbability.setMaximum(1.0);
502 cuttingProbability.setDefaultValue(1.0);
503 settings.push_back(SettingsNames::cuttingProbability, std::move(cuttingProbability));
506 inline void SettingsPopulator::addQmRegionSizesSettings(Utils::UniversalSettings::DescriptorCollection& settings) {
507 Utils::UniversalSettings::IntDescriptor minSize(
"Minimum size of the QM region.");
508 minSize.setMinimum(1);
509 minSize.setDefaultValue(100);
510 settings.push_back(SettingsNames::qmRegionCandidateMinSize, std::move(minSize));
512 Utils::UniversalSettings::IntDescriptor maxSize(
"Maximum size of the QM region.");
513 maxSize.setMinimum(1);
514 maxSize.setDefaultValue(120);
515 settings.push_back(SettingsNames::qmRegionCandidateMaxSize, std::move(maxSize));
517 Utils::UniversalSettings::IntDescriptor refMaxSize(
"Maximum size for the reference QM regions.");
518 refMaxSize.setMinimum(1);
519 refMaxSize.setDefaultValue(200);
520 settings.push_back(SettingsNames::qmRegionRefMaxSize, std::move(refMaxSize));
523 inline void SettingsPopulator::addNumAttemptsPerRadiusOption(Utils::UniversalSettings::DescriptorCollection& settings) {
524 Utils::UniversalSettings::IntDescriptor numAttemptsPerRadius(
525 "Number of QM region generation attempts for a given initial radius.");
526 numAttemptsPerRadius.setMinimum(1);
527 numAttemptsPerRadius.setDefaultValue(100);
528 settings.push_back(SettingsNames::numAttemptsPerRadius, std::move(numAttemptsPerRadius));
531 inline void SettingsPopulator::addMaxNumRefModelsOption(Utils::UniversalSettings::DescriptorCollection& settings) {
532 Utils::UniversalSettings::IntDescriptor maxNumRefModels(
"Maximum number of reference models to be evaluated.");
533 maxNumRefModels.setMinimum(1);
534 maxNumRefModels.setDefaultValue(10);
535 settings.push_back(SettingsNames::maxNumRefModels, std::move(maxNumRefModels));
538 inline void SettingsPopulator::addTolerancesForQmRegionSelection(Utils::UniversalSettings::DescriptorCollection& settings) {
539 Utils::UniversalSettings::DoubleDescriptor tolPercentageError(
540 "The tolerance in percent for the mean absolute error of forces for the QM region selection.");
541 tolPercentageError.setMinimum(0.0);
542 tolPercentageError.setDefaultValue(20.0);
543 settings.push_back(SettingsNames::tolerancePercentageError, std::move(tolPercentageError));
545 Utils::UniversalSettings::DoubleDescriptor tolPercentageSymmetryScore(
546 "The tolerance in percent for the symmetry score based on the minimum symmetry score of all candidate models.");
547 tolPercentageSymmetryScore.setMinimum(0.0);
548 tolPercentageError.setDefaultValue(50.0);
549 settings.push_back(SettingsNames::tolerancePercentageSymmetryScore, std::move(tolPercentageSymmetryScore));
552 inline void SettingsPopulator::addQmRegionSelectionRandomSeed(Utils::UniversalSettings::DescriptorCollection& settings) {
553 Utils::UniversalSettings::IntDescriptor randomSeed(
"Random seed for the QM region selection.");
554 randomSeed.setDefaultValue(42);
555 settings.push_back(SettingsNames::qmRegionSelectionRandomSeed, std::move(randomSeed));
558 inline void SettingsPopulator::addPreparationDataDirectory(Utils::UniversalSettings::DescriptorCollection& settings) {
559 Utils::UniversalSettings::StringDescriptor preparationDataDirectory(
"Base directory for the preparation.");
560 preparationDataDirectory.setDefaultValue(
"preparation_data");
561 settings.push_back(SettingsNames::preparationDataDirectory, std::move(preparationDataDirectory));
564 inline void SettingsPopulator::addSolvation(Utils::UniversalSettings::DescriptorCollection& settings) {
565 Utils::UniversalSettings::BoolDescriptor solvateStructure(
"Solvates the input structure.");
566 solvateStructure.setDefaultValue(
false);
567 settings.push_back(SettingsNames::solvateStructure, std::move(solvateStructure));
570 inline void SettingsPopulator::addNumberOfSolventShells(Utils::UniversalSettings::DescriptorCollection& settings) {
571 Utils::UniversalSettings::IntDescriptor numberOfSolventShells(
"Defines the number of solvent shells");
572 numberOfSolventShells.setDefaultValue(1);
573 settings.push_back(SettingsNames::numberOfSolventShells, std::move(numberOfSolventShells));
576 inline void SettingsPopulator::addChargedCandNTermini(Utils::UniversalSettings::DescriptorCollection& settings) {
577 Utils::UniversalSettings::BoolDescriptor chargedCandNTermini(
578 "Whether to protonate C and N termini in their charged (NH3+, COO-) form");
579 chargedCandNTermini.setDefaultValue(
true);
580 settings.push_back(SettingsNames::chargedCandNTermini, std::move(chargedCandNTermini));
583 inline void SettingsPopulator::addPhValueOfSystem(Utils::UniversalSettings::DescriptorCollection& settings) {
584 Utils::UniversalSettings::DoubleDescriptor phValueOfSystem(
"pH value for the protonation.");
585 phValueOfSystem.setDefaultValue(7.0);
586 settings.push_back(SettingsNames::phValueOfSystem, std::move(phValueOfSystem));
589 inline void SettingsPopulator::addTitration(Utils::UniversalSettings::DescriptorCollection& settings) {
590 Utils::UniversalSettings::BoolDescriptor titrate(
591 "Titrates the structure to protonate amino acids according to the pH value.");
592 titrate.setDefaultValue(
false);
593 settings.push_back(SettingsNames::titrate, std::move(titrate));
596 inline void SettingsPopulator::addUseThermochemistryForTitration(Utils::UniversalSettings::DescriptorCollection& settings) {
597 Utils::UniversalSettings::BoolDescriptor useThermoChemistryForTitration(
598 "Sets whether thermochemical data (gibbs free energy) should be used for calculation of pka values and "
599 "protonation states.");
600 useThermoChemistryForTitration.setDefaultValue(
false);
601 settings.push_back(SettingsNames::useThermoChemistryForTitration, std::move(useThermoChemistryForTitration));
604 inline void SettingsPopulator::addTrainingDataDirectory(Utils::UniversalSettings::DescriptorCollection& settings) {
605 Utils::UniversalSettings::StringDescriptor trainingDataDirectory(
606 "Sets the directory in which the reference calculation for the training data are stored.");
607 trainingDataDirectory.setDefaultValue(
"");
608 settings.push_back(SettingsNames::trainingDataDirectory, std::move(trainingDataDirectory));
611 inline void SettingsPopulator::addMethodFamily(Utils::UniversalSettings::DescriptorCollection& settings) {
612 Utils::UniversalSettings::StringDescriptor methodFamily(
"The method family such as 'DFT/SFAM'.");
613 methodFamily.setDefaultValue(
"PM6/SFAM");
614 settings.push_back(Utils::SettingsNames::methodFamily, std::move(methodFamily));
617 inline void SettingsPopulator::addProgram(Utils::UniversalSettings::DescriptorCollection& settings) {
618 Utils::UniversalSettings::StringDescriptor program(
"The underlying programs such as 'Turbomole/SFAM'.");
619 program.setDefaultValue(
"Any/Swoose");
620 settings.push_back(Utils::SettingsNames::program, std::move(program));
626 #endif // SWOOSEUTILITIES_SETTINGSPOPULATOR_H
SettingsPopulator()=delete
Deleted constructor.
Class with only static functions to populate settings.
Definition: SettingsPopulator.h:26
static std::string currentDirectory()