schrodinger.ui.qt.forcefield.metals_forcefield module¶
- class schrodinger.ui.qt.forcefield.metals_forcefield.SettingsButtonState¶
Bases:
Enum- SELECTED = 'selected'¶
- WARNING = 'warning'¶
- class schrodinger.ui.qt.forcefield.metals_forcefield.MetalsForcefieldPopUp(parent, *args, **kwargs)¶
-
A pop-up widget for configuring and analyzing the Metals force field compatibility of given structures.
Usage Example:
pop_up = MetalsForcefieldPopUp(parent) pop_up.registerInputGetter(get_input_system_callback) pop_up.onInputChanged() # After analysis is_selected = pop_up.shouldUseMetalsForcefield() if is_selected: prepared_file_path = pop_up.getAnalyzedOutput()
- ui_module = <module 'schrodinger.ui.qt.forcefield.metals_forcefield_gui_dir.metals_forcefield_ui' from '/scr/buildbot/builds/build/internal/lib/python3.11/site-packages/schrodinger/ui/qt/forcefield/metals_forcefield_gui_dir/metals_forcefield_ui.py'>¶
- __init__(parent, *args, **kwargs)¶
- Parameters:
parent – Parent widget
- initSetUp()¶
Creates widget from
uiand stores itui_widget.Suggested subclass use: create and initialize subwidgets, and connect signals.
- initSetDefaults()¶
Set widget to its default state. If the widget uses a model/mapper, it’s preferable to reset the widget state by resetting the model.
- registerInputGetter(callback)¶
Register a callback to get the input system when analysis is run.
Note: The callback should return either a file path to the input system, a Structure object, or an iterable of Structure objects or a FEPMap object.
- Parameters:
callback – A callable that returns the input system.
- registerCustomOplsDirGetter(callback)¶
Register a callback that returns the custom OPLS directory path from the force field selector, or None if custom OPLS is not in use.
- Parameters:
callback – A callable returning str or None.
- setAlwaysEnableMetalsCheckbox(enable: bool)¶
Set whether to enable the use of metals force field checkbox
- Parameters:
enable – If True, allows the checkbox to remain always enabled else follows default enabling/disabling logic
- shouldUseMetalsForcefield() bool¶
Return whether the Metals force field option is currently selected by the user.
- getAnalyzedOutput() str¶
Get the file path to the prepared metal complex file.
- Raises:
RuntimeError – If the analysis has not been run yet.
- Returns:
The file path to the prepared metal complex file.
- onInputChanged()¶
Reset the pop-up when input structures change.
Note: This has to be called by the parent widget when input structures change.
- setup()¶
Subclass-specific initialization. Subclasses can re-implement this function with custom set up code.
- enableMetalsForceFieldOption(enable: bool)¶
Enable or disable the Metals force field checkbox.
When
_always_enable_metals_cbis True, the checkbox remains enabled regardless of the enable parameter.- Parameters:
enable – True to enable the checkbox, False to disable it.
- class schrodinger.ui.qt.forcefield.metals_forcefield.MetalsForcefieldSettingsButton(parent, always_enable_metals_cb=False, *args, **kwargs)¶
Bases:
InitMixin,FlatButtonWithPopUpA button to open the Metals Force Field configuration pop-up.
Usage Example:
button = MetalsForcefieldSettingsButton(parent) button.registerInputGetter(get_input_system_callback) button.onInputChanged() # After analysis is_selected = button.shouldUseMetalsForcefield() if is_selected: prepared_file_path = button.getAnalyzedOutput()
- PRESSED_ICON_PATH = ':icons/settings-ON-light.png'¶
- STYLESHEET_PROPERTY = 'state'¶
- __init__(parent, always_enable_metals_cb=False, *args, **kwargs)¶
- Parameters:
parent – Parent widget
always_enable_metals_cb – If True, keep the checkbox enabled regardless of analysis status
- initSetUp()¶
Creates widget from
uiand stores itui_widget.Suggested subclass use: create and initialize subwidgets, and connect signals.
- initSetDefaults()¶
Set widget to its default state. If the widget uses a model/mapper, it’s preferable to reset the widget state by resetting the model.
- registerInputGetter(callback)¶
Register a callback to get the input system when analysis is run.
Note: The callback should return either a file path to the input system, a Structure object, or an iterable of Structure objects or a FEPMap object.
- Parameters:
callback – A callable that returns the input system.
- registerCustomOplsDirGetter(callback)¶
Register a callback that returns the custom OPLS directory path, or None if custom OPLS is not in use.
- Parameters:
callback – A callable returning str or None.
- onInputChanged()¶
Set the button to warning state if input changes and the Metals force field was previously selected. Also notify the pop-up of the input change.
Note: This has to be called by the parent widget when input changes.
- shouldUseMetalsForcefield() bool¶
Return whether the Metals force field option is currently selected (checked) by the user in the pop-up.
- getAnalyzedOutput() str¶
Get the file path to the prepared metal complex file
- Raises:
RuntimeError – If the analysis has not been run yet.
- Returns:
The file path to the prepared metal complex file.
- updateStyleSheet()¶
Override to update the stylesheet based on the button state.
- class schrodinger.ui.qt.forcefield.metals_forcefield.MetalsForcefieldMixin(*args, **kwargs)¶
Bases:
objectA mixin class to add metals forcefield settings button functionality to a forcefield selector widget.
- Note: Subclasses must implement the
getOPLSVersionmethod to return the selected OPLS version
Usage Example:
# Approach 1: Set via constructor parameter (preferred) class MyForcefieldSelector(MetalsForcefieldMixin, ForcefieldSelector): def __init__(self, parent=None, supports_metals_forcefield=False): super().__init__(parent) def getOPLSVersion(self): return self._opls_version # Approach 2: Set after initialization (if constructor parameter cannot be used) class MyForcefieldSelector(MetalsForcefieldMixin, ForcefieldSelector): def __init__(self, parent=None): super().__init__(parent) self.setSupportsMetalsForcefield(supports_metals_forcefield=True) def getOPLSVersion(self): return self._opls_version
- __init__(*args, **kwargs)¶
- Parameters:
supports_metals_forcefield (bool, optional) – Whether to enable metals forcefield button functionality. Defaults to False.
always_enable_metals_cb (bool, optional) – If True, keep the metals forcefield checkbox enabled regardless of analysis status. Defaults to False.
- setSupportsMetalsForcefield(supports_metals_forcefield: bool = False)¶
Set whether to support the metals settings button in the UI
- Parameters:
supports_metals_forcefield – True to support metals settings button, False otherwise
- resetMetalsForcefieldSettings()¶
Reset the metals forcefield settings button to default state.
- registerInputGetter(callback)¶
Register a callback to get the input system for the metals forcefield configuration.
Note: The callback should return either a file path to the input system, a Structure object, or an iterable of Structure objects or a FEPMap object.
- Parameters:
callback – A callable that returns the input system.
- onInputChanged()¶
Notify the metals forcefield settings button of input changes.
Note: This has to be called by the parent widget when input changes.
- shouldUseMetalsForcefield() bool¶
Return whether the metals forcefield option is currently selected.
- Returns:
True if metals forcefield should be used, False otherwise
- getMetalsForcefieldAnalyzedOutput() str¶
Get the file path to the prepared metal complex file from analysis.
- Returns:
The file path to the prepared metal complex file
- Raises:
RuntimeError – If metals settings button is not enabled or analysis not run
- getOPLSVersion() OPLSVersion¶
Get the selected OPLS version.
- Returns:
The selected OPLS version.
- Raises:
NotImplementedError – This method must be implemented by subclasses.
- getActiveCustomOplsDir() str | None¶
Return the custom OPLS directory currently in use by the force field selector, or None if no custom OPLS directory is actively in use.
Subclasses must override this method. The returned value is used by the metals force field analysis to determine whether to pass a custom OPLS directory to the analysis script.
- Returns:
Path to the custom OPLS directory, or None.
- Raises:
NotImplementedError – Must be implemented by subclasses.
- Note: Subclasses must implement the