schrodinger.application.matsci.jagwidgets module

Contains widgets for MatSci jaguar-related panels.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.jagwidgets.BasisSetSelector(label, default_selection, layout=None, stretch=True)

Bases: schrodinger.ui.qt.swidgets.SelectorWithPopUp

A frame that allows the user to specify a basis from a pop up list

TOOL_BUTTON_CLASS

alias of schrodinger.application.jaguar.gui.basis_selector.BasisSelectorFilterListToolButton

selectionChanged()

Set the line edit to a newly selected basis set

setBasis(basis)

Set the basis for the widget

Parameters

basis (str) – The basis to set

Raises

ValueError – If basis is invalid

reset()

Reset the widget

setStructure(struct)

Set the structure to determine valid basis sets

Parameters

struct (structure.Structure) – The structure to set

validate()

Check if the basis set is valid

Return type

(False, msg) or True

Returns

False and error message if something is wrong, True if everything is OK

class schrodinger.application.matsci.jagwidgets.TheorySelector(label, default_selection, layout=None, stretch=True)

Bases: schrodinger.ui.qt.swidgets.SelectorWithPopUp

A frame that allows the user to specify a theory from a pop up list

TOOL_BUTTON_CLASS

alias of schrodinger.application.jaguar.gui.theory_selector.DftTheorySelectorFilterListToolButton

new_method_selected

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

selectionChanged()

Set the line edit to the newly selected theory

setTheory(theory)

Set the theory for the widget

Parameters

theory (str) – The theory to set

Raises

ValueError – If the theory is not valid

reset()

Reset the widget

class schrodinger.application.matsci.jagwidgets.KeywordEdit(label_text='', keyword_dict=None, keyword_string='', **kwargs)

Bases: schrodinger.ui.qt.swidgets.SLabeledEdit

A labeled edit for displaying, editing and retrieving Jaguar keywords

__init__(label_text='', keyword_dict=None, keyword_string='', **kwargs)

Create a KeywordEdit instance.

Any unrecognized keyword arguments are passed to the SLabeledEdit class

Parameters
  • label_text (str) – The text of the label for the KeywordEdit. By default, there is no label.

  • keyword_dict (dict) – A dictionary of keyword/value pairs for the KeywordEdit to display. If both keyword_dict and keyword_string are supplied, the keyword_dict keywords appear first.

  • keyword_string (str) – The string to display in the KeywordEdit. If both keyword_dict and keyword_string are supplied, the keyword_dict keywords appear first.

getKeywordString()

Return the keyword string in the QLineEdit

Return type

str

Returns

The string in the QLineEdit. No validity checking is done.

getKeywordDict(keystring=None)

Return a dictionary whose keys are keywords and values are keyword values

Parameters

keystring (str) – If provided, the keywords are taken from this string rather than the QLineEdit. The default is to take the keywords from the QLineEdit

Return type

dict

Returns

Dictionary of keyword/value pairs

Raises

ValueError – if any tokens do not match the keyword=value format

setKeywords(keyword_dict=None, keyword_string='')

Set the text of the KeywordEdit

Parameters
  • keyword_dict (dict) – A dictionary of keyword/value pairs for the KeywordEdit to display. If both keyword_dict and keyword_string are supplied, the keyword_dict keywords appear first.

  • keyword_string (str) – The string to display in the KeywordEdit. If both keyword_dict and keyword_string are supplied, the keyword_dict keywords appear first.

validateKeywords(emptyok=False)

Validate the contents to ensure they are valid Jaguar keywords. The return value of this is compatible with appframework2 validation methods - i.e. an af2 validation method can just call: return self.keyword_le.validateKeywords()

Parameters

emptyok (bool) – Whether it is OK for the keyword input to be empty

Return type

True or (False, str)

Returns

True if no errors are found, otherwise a tuple containing False and an error message.

class schrodinger.application.matsci.jagwidgets.CompactSolventSelector(parent=None, layout=None, indent=False, keywords=None, **extra_args)

Bases: schrodinger.ui.qt.swidgets.SFrame

A single line of widgets that displays the currently chosen solvent and a button that will open a dialog allowing a new solvent model/solvent choice. Tracks the necessary Jaguar keywords to implement the user’s choice.

solventChanged

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

__init__(parent=None, layout=None, indent=False, keywords=None, **extra_args)

Create a CompactSolventSelector object

Additional keyword arguments are passed on to the SolventDialog that is opened by this widget.

Parameters
  • layout (QBoxLayout) – The layout to place this widget into

  • indent (bool) – If true indent frame layout

  • keywords (dict) – Dictionary of solvent-related Jaguar key/value pairs to initialize/reset the widgets with

chooseSolvent()

Open a dialog that lets the user choose solvent parameters (model, solvent, solvent properties) and store the choices

solventKeywordsChanged(keywords, options={}, update=False)

Called when the user clicks accept on the SolventDialog

Parameters
  • keywords (dict) – A dictionary of Jaguar solvent model keywords

  • update (bool) – whether keywords should be updated or replaced

isSolventModelUsed()

Has a solvent model been chosen?

Return type

bool

Returns

True if yes, False if no

getSolventName()

Get the name of the chosen solvent

Return type

str

Returns

The user-facing name of the chosen solvent, or NO_SOLVENT if no model has been chosen

getKeystring()

Get a string containing all the keywords specified by the user’s choices

Return type

(str, str)

Returns

First item is a string containing keywords that define the user’s choices. An empty string is returned if no model has been selected. The second item is a string containing any keywords set for solvent=other.

reset()

Reset all the widgets to their original values

class schrodinger.application.matsci.jagwidgets.SolventDialog(parent, keywords=None, **extra_args)

Bases: PyQt6.QtWidgets.QDialog

A Dialog that allows the user to pick a solvent model, solvent and parameters.

Emits a keywordsChanged signal when the user clicks Accept and passes a dictionary of the Jaguar keywords that reflect the selected settings.

keywordsChanged

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

__init__(parent, keywords=None, **extra_args)

Create a SolventDialog object

Additional keyword arguments are passed to the EmbeddedSolventWidget object

Parameters
  • parent (QWidget) – The parent widget for this dialog

  • keywords (dict) – A dictionary of jaguar key/value pairs that define the initial solvent settings for the dialog

help()

Show the Jaguar solvent help

accept()

Gather the options and emit a keyword dictionary with the keywords/values they define, then close the dialog.

class schrodinger.application.matsci.jagwidgets.EmbeddedSolventWidget(parent=None, layout=None, dielectric=True, reference=False, keywords=None, models=None, force_solvent=None)

Bases: schrodinger.application.jaguar.gui.tabs.solvation_tab.SolvationTab

A master widget that contains the widgets from the Jaguar Solvation tab and is convenient to use outside the Jaguar gui environment.

__init__(parent=None, layout=None, dielectric=True, reference=False, keywords=None, models=None, force_solvent=None)

Create a EmbeddedSolventWidget object

Parameters
  • parent (QWidget) – The parent widget for this widget

  • layout (QBoxLayout) – The layout to place this widget into

  • dielectric (bool) – If True, show the dielectric widgets, if False, do not

  • reference (bool) – If True, show the reference energy widgets, if False, do not

  • keywords (dict) – The Jaguar solvent-related key/value pairs that define the initial widget values

  • models (dict) – The allowed solvent models. keys are strings displayed to the user, values are Jaguar keywords. See parent class SOLVENT_MODELS constant for example. Use an OrderedDict to control the order of the solvent models in the model combobox

  • force_solvent (str) – If provided, set as solvent and disable the solvent selector

solventModelChanged()

React to a change in the solvent model

loadSettingsFromKeywords(keywords)

Set the widget states based on the given keyword dictionary

Parameters

keywords (dict) – Keys are jaguar keywords, values are keyword values

reset()

Reset the widgets to their initial values

class schrodinger.application.matsci.jagwidgets.NewPresetDialog(master, user_accept_function=None, standard_buttons=None, nonstandard_buttons=None, help_topic='', title=None)

Bases: schrodinger.ui.qt.swidgets.SDialog

Dialog for getting the name for a new preset

layOut()

Lay out the widgets for the dialog

accept()

Overwrite parent’s accept method to check if the name is valid

classmethod getName(master, keywords, existing_names)

Get a name from the user for the new preset

Parameters
  • master (QtWidget) – The parent widget

  • keywords (str) – The keywords in string format

  • existing_names (set) – Names for existing presets

Return type

str or None

Returns

The preset name, or None if the user cancels

class schrodinger.application.matsci.jagwidgets.PresetsDialog(master, *, keyword_setter, keyword_getter, keyword_validator=None, schrodinger_defaults_str='', title='Jaguar Option Sets', preferences_group='', **kwargs)

Bases: schrodinger.ui.qt.swidgets.SDialog

Dialog for saving and applying jaguar keyword presets and setting default preset

__init__(master, *, keyword_setter, keyword_getter, keyword_validator=None, schrodinger_defaults_str='', title='Jaguar Option Sets', preferences_group='', **kwargs)
Parameters
  • master (QDialog) – The parent dialog

  • keyword_setter (callable) – The function to call to set keywords. Should take keywords in string format as a single argument

  • keyword_getter (callable) – The function to call to get keywords. Should return keywords in string format

  • keyword_validator (callable) – The function to call to validate keywords. Should return a af2.validation.ValidationResult object

  • schrodinger_defaults_str (str) – Default keywords for the Schrodinger preset in string format

  • preferences_group (str) – The preference group to use for storing the presets. If not provided, a name will be created from the parent’s window title. NOTE: duplicate titles will break things when not specifying a preferences_group

  • title (str) – The title for the dialog

layOut()

Lay out the widgets for the dialog

setUpPreferences()

Set up the preferences for the presets

updatePreferences()

Update user preferences due to a change in Schrodinger defaults

getCustomPresetsNames()

Get a list of custom preset names

Return type

list

Returns

list of custom preset names

populateList()

Populate the list with presets

getSelectedPreset()

Get the selected preset in the list, removing “(default)” if it is the default preset

Return type

str or None

Returns

The name of the selected preset or None if there’s no selection

listSelectionChanged()

Update the widgets based on the selected preset in the list

newPreset()

Ask the user for a new preset name and save the current keywords as a new preset

setDefaultPreset(*, preset_name=None)

Set the default preset. If preset_name is provided, set the default to it. Otherwise use the selected preset.

Parameters

str – preset_name: The name of the preset, or None

applyPreset()

Apply the selected preset

deletePreset()

Delete the selected preset after confirming with the user

getDefaultPresetName()

Get the name of the current default preset

Return type

str

Returns

The name of the current default

getDefaultKeywords()

Get the keywords for the default preset

Return type

str

Returns

The keywords for the default preset

class schrodinger.application.matsci.jagwidgets.JaguarOptionsDialog(master, button_label='Jaguar Options...', title=None, help_topic=None, preference_group='', layout=None, show_optimization=True, optional_optimization=False, pass_optimization_keyword=True, show_geopt_iterations=True, show_spin_treatment=False, show_charge=True, show_multiplicity=True, show_hamiltonian=False, show_tddft=False, solvent_kwargs=None, keyword_validator=None, default_keywords='', tip=None)

Bases: schrodinger.ui.qt.swidgets.SDialog

OVERWRITE_QUESTION_KEY = 'JAGOPTS_OVERWRITE_KEYWORDS'
SPIN_AUTOMATIC = 'Automatic'
SPIN_UNRESTRICTED = 'Unrestricted'
SPIN_RESTRICTED = 'Restricted'
UHF_LABELS = {0: 'Restricted', 1: 'Unrestricted', 2: 'Automatic'}
DEFAULT_THEORY = 'B3LYP-D3'
DEFAULT_BASIS_SET = '6-31G**'
NON_ANALYTICAL_SCF_ACCURACIES = [3, 2, 1]
GEOPT_CONV_CRITERIA = {'Default': 2, 'Loose': 3, 'Tight': 5}
OPTIMIZATION_KEYWORDS = ['igeopt', 'maxitg', 'iaccg', 'nops_opt_switch']
ALL_SOLVENT_KEYWORDS = {'isolv', 'nogas', 'pbf_after_pcm', 'pcm_model', 'pcm_radii', 'solvent'}
EXCITED_STATE_KEYWORDS = ['itddft', 'itda', 'rsinglet', 'rtriplet', 'nroot']
panelLabelChanged

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

__init__(master, button_label='Jaguar Options...', title=None, help_topic=None, preference_group='', layout=None, show_optimization=True, optional_optimization=False, pass_optimization_keyword=True, show_geopt_iterations=True, show_spin_treatment=False, show_charge=True, show_multiplicity=True, show_hamiltonian=False, show_tddft=False, solvent_kwargs=None, keyword_validator=None, default_keywords='', tip=None)

Create a JaguarOptionsDialog instance

Parameters
  • master (QWidget) – The parent widget

  • button_label (str) – The label for the button in the panel

  • title (str) – The dialog title. If not provided, a title will be created from the panel’s title

  • help_topic (str) – The help topic for this dialog. If not provided, an id will be created from the panel’s id

  • preferences_group (str) – The preference group to use for storing the presets. If not provided, a name will be created from this dialog’s title. NOTE: duplicate titles will break things when not specifying a preferences_group

  • layout (QLayout) – The layout to add the panel widgets to

  • show_optimization (bool) – Whether geometry optimization group should be shown

  • optional_optimization (bool) – Whether geometry optimization is optional

  • pass_optimization_keyword (bool) – Whether geometry optimization keyword (igeopt) should be returned when getting current keywords

  • show_geopt_iterations (bool) – Whether maximum iterations for geometry optimization should be shown

  • show_spin_treatment (bool) – Whether spin treatment rbg should be shown

  • show_charge (bool) – Whether charge spinbox should be shown

  • show_multiplicity (bool) – Whether multiplicity spinbox should be shown

  • solvent_kwargs (None or dict) – The kwargs to be passed to the solvent widget. If None, the widget won’t be created. An empty dict can be passed to create the solvent widget with default kwargs.

  • keyword_validator (callable) – Optional function to call to validate the keywords. Should raise KeyError if there are any issues with the keywords.

  • default_keywords (str or dict) – The default keywords for the dialog

  • tip (str) – The tooltip

layOut()

Lay out the widgets for the dialog

enforceBasis(method)

Ensure that methods that require a specific basis set use that basis set

Parameters

method (str) – The chosen method

updateWidgets(keyword_dict)

Update the widgets to match the current keywords

Parameters

keyword_dict (dict) – The keywords to update widgets with

Return type

bool

Returns

True if everything was OK, False if something went wrong

setUpDefaults()

Create a PresetsDialog instance for this dialog and set and validate default keywords

restrictJaguarTheoryOptions(text)

Restrict the level of theory option in jaguar dialog box by text. Text should be one of the predefined options. Acceptable text values are “Recommended”, “Long range corrected DFT”, “Hybrid DFT”, “Meta GGA DFT”, “GGA DFT”, “LDA DFT”

Parameters

text (str) – specifier to select level of theory.

setEditEnabled(state)

Set the enabled state of the edit button in the panel and the label after it

Parameters

state (bool) – Whether the widgets should be enabled

isEditEnabled()

Return True if the edit button and label after it in the panel are enabled.

Return type

bool

Returns

True if enabled

updatePanelLabel()

Update the label in the panel with the new options

showForEdit()

Show the dialog

showPresets()

Show the presets dialog for this dialog

setKeywords(keywords, save_as_current=True)

Set the keywords for the dialog. Widgets that are not modified by the passed keywords will be reset to default.

Parameters
  • keywords (str or dict) – The keywords to set

  • save_as_current (bool) – Whether the keywords should be saved so cancelling the dialog doesn’t undo the changes

getKeywordDict()

Get current keywords as a dict

Return type

dict

Returns

The current keywords as dict

getKeywordString()

Get current keywords as a string

Return type

str

Returns

The current keywords as a string

accept()

Update the keywords and close the dialog if the inputs are valid

reject()

Close the dialog and reset it back to when it was opened

reset(keywords=None, save_as_current=True)

Reset the dialog and update the widgets with any passed keywords

Parameters
  • keywords (dict or None) – The keywords to update widgets with

  • save_as_current (bool) – Whether the keywords should be saved so cancelling the dialog doesn’t undo the changes

validate()

Validate the dialog keywords

Return type

bool or (bool, str)

Returns

True if everything is OK, (False, msg) if the state is invalid and an error should be shown to the user in a warning dialog.

validateBasisSet(structs)

Validate that the passed structures are compatible with the current basis set

Parameters

structs (iterable) – The structures to validate

Return type

bool or (bool, str)

Returns

True if everything is OK, (False, msg) if the state is invalid and an error should be shown to the user.

static makeDict(keywords)

Create a keyword dictionary if the passed keywords are in string format

Parameters

keywords (str or dict) – Keyword dict or string

Return type

dict

Returns

Keyword dictionary

static makeString(keywords)

Create a keyword string if the passed keywords are in dictionary format

Parameters

keywords (str or dict) – Keyword dict or string

Return type

str

Returns

Keyword string

assertInKeywords(keywords)

Assert that the passed keywords are a subset of the dialog’s keywords

Used for unittests.

Parameters

keywords (str or dict) – Keyword dict or string