Source code for schrodinger.application.jaguar.macro_pka_keywords

"""
This module documents all possible Macro-pKa input keywords.
"""

# Contributors: Mark A. Watson

import schrodinger.application.jaguar.macro_pka_constants as constants

from schrodinger.application.jaguar.workflow_keywords import Choices
from schrodinger.application.jaguar.workflow_keywords import WorkflowKeyword

MACROKA_KEYWORDS = {}

INPUT_MOLECULE = 'infile'
AUTOCONF_INPUT = 'autoconf_config'
TRAINING_INPUT = 'training_data'
CONFORMER_INPUT = 'conformer_files'
GAS_GEOPT = 'gas_geopt'
QM_PROTOCOL = 'qm_protocol'
RELATIVE_CHARGES = 'relative_charges'
ACTIVE_ATOMS = 'active_atoms'


[docs]def keyword(name, valid_type, default, description): """ Convenience function to create a dictionary of WorkflowKeyword's """ if name in MACROKA_KEYWORDS: raise ValueError('keyword %s is duplicated' % name) # Define all keywords in lower case MACROKA_KEYWORDS[name.lower()] = WorkflowKeyword(name=name.lower(), valid_type=valid_type, default=default, description=description)
[docs]def generate_all_keywords(): #------------------------------------------------------------------------------ # Add new "list of strings" Macro-pKa keywords here #------------------------------------------------------------------------------ description = '.mae files containing precomputed conformations for each charge.' description += f' These keywords are mutually exclusive: {constants.MUTUALLY_EXCLUSIVE_1}' keyword(name=CONFORMER_INPUT, valid_type=[str], default=[], description=description) #------------------------------------------------------------------------------ # Add new "list of int" Macro-pKa keywords here #------------------------------------------------------------------------------ keyword(name=RELATIVE_CHARGES, valid_type=[int], default=constants.SCAN_CHARGES, description='Included charge states relative to input structure.') keyword(name=ACTIVE_ATOMS, valid_type=[int], default=[], description='Atom indices of tautomeric active sites.') keyword(name='chiral_atoms', valid_type=[int], default=[], description='Atom indices for chiral centers to racemize.') #------------------------------------------------------------------------------ # Add new "list of float" Macro-pKa keywords here #------------------------------------------------------------------------------ # keyword(name='do_pka_delta_filtering', # valid_type=[float], # default=FIXME, # description='Enable filtering of tautomers using fast-pKa delta values.') #------------------------------------------------------------------------------ # Add new "boolean" Macro-pKa keywords here #------------------------------------------------------------------------------ keyword(name='debug', valid_type=bool, default=False, description='Print extra debugging information.') keyword(name='protonate', valid_type=bool, default=False, description='Protonate input structure.') keyword(name='deprotonate', valid_type=bool, default=False, description='Deprotonate input structure.') keyword( name=GAS_GEOPT, valid_type=bool, default=False, description='Use gas-phase for QM geometry optimizations instead of PCM.' ) keyword(name='add_extended_confs', valid_type=bool, default=False, description='Add extended structures to the pool of conformers.') keyword( name='use_opls2005', valid_type=bool, default=False, description= 'Use OPLS2005 forcefield for conformational search (no license required).' ) keyword(name='truncate', valid_type=bool, default=False, description="Compute micro-pKa's using truncation.") keyword(name='qrnn_csrch', valid_type=bool, default=False, description= "Use QRNN to accelerate the filtering of conformers and tautomers.") #------------------------------------------------------------------------------ # Add new "integer" Macro-pKa keywords here #------------------------------------------------------------------------------ description = 'Do conformational search with <N> confs per tautomer.' description += f' These keywords are mutually exclusive: {constants.MUTUALLY_EXCLUSIVE_1}' keyword(name='csrch', valid_type=int, default=0, description=description) description = 'Do MD-QM conf search with <N> confs per tautomer.' description += f' These keywords are mutually exclusive: {constants.MUTUALLY_EXCLUSIVE_1}' keyword(name='md_csrch', valid_type=int, default=0, description=description) #------------------------------------------------------------------------------ # Add new "float" Macro-pKa keywords here #------------------------------------------------------------------------------ keyword(name='pka_min', valid_type=float, default=constants.PKA_MIN_DEFAULT, description='Minimum macro-pKa sweep cut-off value.') keyword(name='pka_max', valid_type=float, default=constants.PKA_MAX_DEFAULT, description='Maximum macro-pKa sweep cut-off value.') keyword(name='pH', valid_type=float, default=constants.PH_DEFAULT, description='pH for tautomer populations.') #------------------------------------------------------------------------------ # Add new "string" Macro-pKa keywords here #------------------------------------------------------------------------------ keyword(name=INPUT_MOLECULE, valid_type=str, default='', description='Input .mae file containing one structure.') keyword(name=QM_PROTOCOL, valid_type=Choices(*constants.QM_PROTOCOL_CHOICES), default=constants.QM_PROTOCOL_DEFAULT, description='Choice of DFT functional to compute the raw pKa') description = 'Custom AutoConf config file for generating conformers and tautomers.' description += f' These keywords are mutually exclusive: {constants.MUTUALLY_EXCLUSIVE_1}' keyword(name=AUTOCONF_INPUT, valid_type=str, default='', description=description) keyword(name=TRAINING_INPUT, valid_type=str, default='', description='Custom .mae file for empirical training data.')