schrodinger.application.matsci.mswidgets module

Contains widgets that are useful in MatSci panels.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.mswidgets.SavedASLItem(text, asl)

Bases: QWidget

Widget that includes atomselector.ASLItem and a button for deleting the asl

itemClicked

A pyqtSignal emitted by instances of the class.

deleteClicked

A pyqtSignal emitted by instances of the class.

__init__(text, asl)
Parameters:
  • text (str) – Display text of the asl item

  • asl (str) – Asl of the item

class schrodinger.application.matsci.mswidgets.MSAtomSelector(master, title, status_label=True, get_name_func=None, set_name_func=None, command=None, flat=False, layout=None, **kwargs)

Bases: AtomSelector, MessageBoxMixin, ItemsManagerMixin

Modify the parent class to support saving ASLs, make the reset button clear asl text only, and add a status label if needed.

ASL_NOT_ALLOWED = {'entry.id', 'entry.name', 'set'}
ASL_ITEMS = {'Displayed Atoms': 'displayed_atoms', 'Heavy Atoms': 'heavy_atoms', 'Hydrogens-All': 'all_hydrogens', 'Hydrogens-Nonpolar': 'non_polar_hydrogens', 'Hydrogens-Polar': 'polar_hydrogens', 'Ions': 'ions', 'Membrane': 'membrane', 'Metal Atoms': 'metals', 'Nucleic Acids': 'nucleic_acids', 'Protein': '(protein) and not ligand', 'Protein Backbone': '(backbone) and not ligand', 'Protein Side Chains': '(withinbonds 1 sidechain) and not ligand', 'Waters': 'water', 'Workspace Selection': 'workspace_selection'}
PREF_KEY = 'asl_selector_saved_asls'
PLUS_TIP_WITH_SAVE = '<nobr>Click to choose from saved ASLs, the Workspace </nobr>selection or predefined atom sets, or to open the Atom Selection dialog'
ITEM_TYPE_TEXT = 'ASL'
__init__(master, title, status_label=True, get_name_func=None, set_name_func=None, command=None, flat=False, layout=None, **kwargs)

See the parent class for documentation

Parameters:
  • master (QWidget) – The parent of this atomselector widget

  • title (str) – label over atom selection box

  • status_label (bool) – If True, add a status label to indicate the number of selected atoms.

  • get_name_func (callable) – Function to call to get the suggested name for the asl. Should take no args and return a string.

  • set_name_func (callable) – Function to call to set the name for the selected saved ASL. Should take a string arg.

  • command (function or None) – Command to execute when the asl is modified. Signal is triggered only when editing finishes.

  • flat (bool) – Apply flat style to the groupbox, by default it is false in qt.

  • layout (QBoxLayout) – The layout to put this frame into

clearAslText()

Currently, the reset button is used to clear asl string

pickMolecule()

Set the pick_menu with pick molecule option.

checkASL(asl)

Check if asl contains sets, entry.id or entry.name

Parameters:

asl (str) – asl in the line edit

validateAsl(struct=None)

Validate the ASL, optionally against a structure as well

Parameters:

struct (structure.Structure or None) – The structure to validate the ASL against

Return type:

bool

Returns:

True if the ASL is valid, False otherwise

setupSaveWidgets()

Set up the widgets required for saving and loading ASLs

updateSavedASLs()

Update the saved asl items in the menu

aslItemClicked(asl, text=None)

Overwrite parent method to update the name in addition to the asl

Parameters:
  • asl (str) – The asl for the item that was clicked

  • text (str) – The name for the item that was clicked

saveASL()

Save the current asl using the name the user provides

class schrodinger.application.matsci.mswidgets.StageFrame(master, layout=None, copy_stage=None, stage_type=None, icons=None)

Bases: SFrame

The base frame for a stage in a MultiStageArea

Contains a Toolbutton for a title and some Window-manager-like control buttons in the upper right corner

STAGE_DELETED

A pyqtSignal emitted by instances of the class.

__init__(master, layout=None, copy_stage=None, stage_type=None, icons=None)

Create a DesmondStageFrame instance

Parameters:
  • master (MultiStageArea) – The panel widget

  • layout (QLayout) – The layout the frame should be placed into

  • copy_stage (StageFrame) – The StageFrame this StageFrame should be a copy of. The default is None, which will create a new default stage.

  • stage_type – The type of stage to create, should be something meaningful to the subclass. The value is stored but not used in this parent class.

  • icons (set) – A set of module constants indicating which icons should be made into control buttons in the upper right corner. UP, DOWN, OPEN, CLOSE, DELETE, COPY

property icons
Return type:

dict(str=QtGui.QIcon)

Returns:

dictionary whose keys are the names of the stage icons and whose values are the icon widgets

layOut(copy_stage=None)

Lay out any custom widgets

Parameters:

copy_stage (StageFrame) – The StageFrame this StageFrame should be a copy of. The default is None, which will create a new default stage.

initialize(copy_stage=None)

Perform any custom initialization before the widget is finalized

Parameters:

copy_stage (StageFrame) – The StageFrame this StageFrame should be a copy of. The default is None, which will create a new default stage.

createControlButtons()

Create upper-right corner control buttons as requested by the user

toggleVisibility(checked=None, show=None)

Show or hide the stage

Parameters:
  • checked (bool) – Not used, but swallows the PyQt clicked signal argument so that show doesn’t get overwritten

  • show (bool) – If True

updateLabel()

Set the label of the title button that toggles the stage open and closed

moveUp()

Move the stage up towards the top of the panel 1 stage

moveDown()

Move the stage down towards the bottom of the panel 1 stage

delete()

Delete this stage

copy()

Create a copy of this stage

reset()

Resets the parameters to their default values.

class schrodinger.application.matsci.mswidgets.MultiStageArea(layout=None, append_button=True, append_stretch=True, stage_class=<class 'schrodinger.application.matsci.mswidgets.StageFrame'>, control_all_buttons=False, start_staged=True)

Bases: QScrollArea

A scrollable frame meant to hold multiple stages. See the MatSci Desmond Multistage Simulation Workflow as one example.

APPEND = 'Append Stage'
__init__(layout=None, append_button=True, append_stretch=True, stage_class=<class 'schrodinger.application.matsci.mswidgets.StageFrame'>, control_all_buttons=False, start_staged=True)

Create a MultiStageArea instance

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

  • append_button (bool) – Whether to add an “Append Stage” button to a Horizontal layout below the scrolling area

  • append_button – Whether to add a QSpacer to the layout containing the append button. Use False if additional widgets will be added after creating the area.

  • stage_class (StageFrame) – The class used to create new stages

  • control_all_buttons (bool) – True if buttons to control the open/closed state of all stages should be added above the stage area, False if not. Note that if layout is not supplied, the top_control_layout will have to be added to a layout manually.

  • start_staged (bool) – Whether or not resetting this widget should populate the area with a stage. Defaults to True.

addStage(copy_stage=None, stage_type=None, **kwargs)

Add a new stage

Parameters:
  • copy_stage (StageFrame) – The stage to copy. The default is None, which will create a new default stage.

  • stage_type – What type of stage to add. Must be dealt with in the StageFrame subclass

Return type:

StageFrame

Returns:

The newly created stage

Note:

All other keyword arguments are passed to the stage class

getStageIndex(stage)

Return which stage number this is

Parameters:

stage (StageFrame) – Returns the index for this stage in the stage list

Return type:

int

Returns:

The stage number (starting at 0)

moveStageUp(stage)

Shift the given stage up one stage

Parameters:

stage (StageFrame) – The stage to move up

moveStageDown(stage)

Shift the given stage down one stage

Parameters:

stage (StageFrame) – The stage to move down

moveStage(current, new)

Move the a stage

Parameters:
  • current (int) – The current position of the stage

  • new (int) – The desired new position of the stage

copyStage(stage, **kwargs)

Create a copy of stage and add it directly below stage

Parameters:

stage (StageFrame) – The stage to copy

Note:

All keyword arguments are passed to addStage

deleteStage(stage, update=True)

Delete a stage

Parameters:
  • stage (StageFrame) – The stage to be deleted

  • update (bool) – True if stage labels should be updated, False if not (use False if all stages are being deleted)

updateStageLabels(start_at=0)

Update stage labels - usually due to a change in stage numbering

Parameters:

start_at (int) – All stages from this stage to the end of the stage list will be updated

reset()

Reset the stage area

expandAll()

Expand all stages

collapseAll()

Collapse all stages

focusOnStage(stage)

Make this stage the only stage that is expanded and ensure it is visible

Parameters:

stage (StageFrame) – The stage to focus on

class schrodinger.application.matsci.mswidgets.StageControlButton(icon, layout, command)

Bases: QToolButton

The QToolButtons on the right of each StageFrame

__init__(icon, layout, command)

Create a StageControlButton instance

Parameters:
  • icon (QIcon) – The icon for the button

  • layout (QLayout) – The layout the button should be placed in

  • command (callable) – The slot for the clicked() signal

class schrodinger.application.matsci.mswidgets.Divider(layout)

Bases: QFrame

A raised divider line

__init__(layout)

Create a Divider instance

Parameters:

layout (QLayout) – The layout the Divider should be added to

class schrodinger.application.matsci.mswidgets.SaveDesmondFilesWidget(combined_trj=False, layout=None, **kwargs)

Bases: SFrame

Widget that provides options for saving intermediate Desmond job files.

__init__(combined_trj=False, layout=None, **kwargs)

Create an instance.

Parameters:

combined_trj (bool) – Whether the checkbox for combining trajectory should be added.

Param:

layout: Layout to add this widget to

getCommandLineArgs()

Return the command line flags to be used based on the widget state. Note that this expects driver classes to the parserutils.SAVE_FLAG with the allowed options found in parserutils.SAVE_FLAG_OPTS.

Returns:

List of command line args to use

Return type:

list

getSaveOptions()

Return the save options based on the widget state.

Returns:

The save options

Return type:

str

setFromCommandLineFlags(flags)

Set the state of these widgets from command line flag values

Parameters:

flags (dict) – Keys are command line flags, values are flag values. For flags that take no value, the value is ignored - the presence of the key indicates the flag is present.

setWidgetState(value)

Set the state of save widgets based on the input value.

Parameters:

value (str) – The value to set the save widgets to

reset()

Reset the frame

class schrodinger.application.matsci.mswidgets.RandomSeedWidget(layout=None, minimum=0, maximum=2147483647, default=1234, **kwargs)

Bases: SCheckBoxWithSubWidget

Standardized checkbox with spinbox to provide option to specify random seed. The spinbox is hidden when the checkbox is not checked.

__init__(layout=None, minimum=0, maximum=2147483647, default=1234, **kwargs)
Parameters:
  • layout (QtWidgets.QLayout) – Layout to add this widget to

  • minimum (int) – The minimum acceptable random seed value

  • maximum (int) – The maximum acceptable random seed value

  • default (int) – The default custom random seed value

getSeed()

Return the value specified in the spinbox if widget is checked otherwise returns default value.

Returns:

seed for random number generator

Return type:

int

getCommandLineFlag()

Return a list containing the proper random seed flag and argument specified by the state of this widget. Meant to be added onto a command list, e.g.:

cmd = [EXEC, infile_path]
cmd += rs_widget.getCommandLineFlag()
Returns:

A list containing the random seed flag followed by either “random”, or the string representation of the seed specified in this widget’s spinbox.

Return type:

list of two str

setFromCommandLineFlags(flags)

Set the state of these widgets from command line flag values

Parameters:

flags (dict) – Keys are command line flags, values are flag values. For flags that take no value, the value is ignored - the presence of the key indicates the flag is present.

setWidgetFromSeed(seed)

Set the state of widget from the input seed value.

Parameters:

seed (str) – The seed value to set the widget to

setVisible(state)

Overwrite the parent method to allow the checkbox state to control the visibility of the subwidget

class schrodinger.application.matsci.mswidgets.DefineASLDialog(master, help_topic='', show_markers=False, struct=None)

Bases: SDialog

Manage defining an ASL.

__init__(master, help_topic='', show_markers=False, struct=None)

Create an instance.

Parameters:
  • master (QtWidgets.QWidget) – the window to which this dialog should be WindowModal

  • help_topic (str) – an optional help topic

  • show_markers (bool) – whether to show the Markers checkbox

  • struct (schrodinger.structure.Structure) – an optional structure against which the ASL will be validated

layOut()

Lay out the widgets.

getAsl()

Return the ASL.

Return type:

str

Returns:

the ASL

getIndices()

If a structure was provided at instantiation then return the atom indices of the provided structure that match the specified ASL.

Return type:

list

Returns:

matching atom indices or None if no structure was provided

isValid()

Return True if valid, (False, msg) otherwise.

Return type:

bool, pair tuple

Returns:

True if valid, (False, msg) otherwise

accept()

Callback for the Accept (OK) button.

reject()

Callback for the Reject (Cancel) button.

reset()

Reset it.

class schrodinger.application.matsci.mswidgets.StructureLoader(master, label, maestro, parent_layout, *, max_title_len=25, allow_cms=False)

Bases: SFrame

A set of widgets that allow the user to load a structure.

structure_changed

A pyqtSignal emitted by instances of the class.

WORKSPACE = 'Included entry'
FILE = 'From file'
BUTTON_TEXT = {'From file': 'Browse...', 'Included entry': 'Import'}
NOT_LOADED = 'Not loaded'
NOT_LOADED_TIP = 'Structure is not yet loaded'
DIALOG_ID = 'STRUCTURE_LOADER_IR'
__init__(master, label, maestro, parent_layout, *, max_title_len=25, allow_cms=False)

Create StructureLoader object.

Parameters:
  • master (QWidget) – Master widget

  • label (str) – Label for the SLabeledComboBox widget

  • maestro (schrodinger.maestro.maestro) – Maestro instance

  • parent_layout (QLayout) – Parent layout

  • max_title_len (int) – Maximum length of the loaded entry label

  • allow_cms (bool) – Whether to try to read CMS and msys instead of structure

typeChanged()

React to a change in the type of scaffold

reset()

Reset the widgets

updateLabel()

Update the status label.

static getStructure(struct)

Return structure.

Parameters:

struct (structure.Structure or desmondutils.DesmondModel) – Input structure

Return type:

structure.Structure

Returns:

Structure

loadStructure()

Load a structure from the selected source.

validate(struct)

Validate structure.

Parameters:

struct (structure.Structure) – Structure to be validated

Return type:

bool or bool and str

Returns:

True if everything is fine, or False and error message

importFromWorkspace()

Import a structure from the workspace.

Return type:

bool or None

Returns:

True if a structure was loaded successfully, None if not

importFromFile()

Import a structure from a file, including opening the dialog to allow the user to select the file.

Return type:

bool or None

Returns:

True if the structure was loaded successfully, None if not

getMolecularWeight()

Get the molecular weight of the structure.

Returns:

the molecular weight of the structure

Return type:

float

class schrodinger.application.matsci.mswidgets.WaterTypesComboBox(ff_combo_box=None, **kwargs)

Bases: SLabeledComboBox

Combobox containing all water molecule types available in msconst. Replaces the user-facing ‘None’ with ‘current’.

__init__(ff_combo_box=None, **kwargs)

Create the combobox.

Parameters:

ff_combo_box (QtWidgets.QComboBox) – Forcefield QComboBox widget

updateValidWaterModels(name=None)

Update water combobox items based on water force field.

Parameters:

name (str) – name of force-field

selectInitialModel(initial_model)

Update combobbox items to initially selected model

Parameters:

initial_model (str) – name of the water force field

getWaterModelDict(is_opls_2005=False)

Get valid water models based on force field

Parameters:

is_opls_2005 (bool) – True if OPLS2005 force field used else False

Return type:

dict

Returns:

Dictionary of valid water force field dict

class schrodinger.application.matsci.mswidgets.PlaneSelectorMixin

Bases: object

Set of widgets to create plane and directional arrow using various methods like best fit to selected atoms, crystal vector, and plane using 3 atoms.

NPX = array([1., 0., 0.])
NPY = array([0., 1., 0.])
NPZ = array([0., 0., 1.])
NPO = array([0., 0., 0.])
FIT_SELECTED_ATOMS = 'Best fit to selected atoms'
CRYSTAL_VECTOR = 'Crystal vector:'
CHOOSE_ATOMS = 'Choose at least 3 atoms to define the plane'
PLANE_SCALE = 2.0
addWidgetsToLayout(layout)

Add PlaneSelectorMixin widgets to the passed layout

Parameters:

layout (QBoxLayout) – The layout to place this panel into

methodToggled()

React to the plane determination method being changed

flipDirection()

Flip the direction of the interface normal

getBuffer()

Get the buffer between the cell contents and the PBC boundary

Return type:

float

Returns:

The buffer space

pickToggled()

React to a change in state of the pick atom checkbox

atomPicked(asl)

React to the user picking another atom while defining the plane

Parameters:

asl (str) – The asl defining the picked atom

clearPicked()

Clear all the picked atom information, including the WS markers

computePlaneFromAtoms(struct=None, atoms=None)

Compute the interface plane as the best fit plane to a set of atoms

Parameters:
  • struct (schrodinger.structure.Structure) – The structure containing the atoms. If not given, the previously loaded structure will be used.

  • atoms (list) – List of atom indexes of the atoms to fit. If not given, all atoms will be fit.

updateArrowAndPlane()

Update the workspace arrow and plane to the new coordinates.

setStructure(struct)

Set the scaffold structure that will define the interface plane

Parameters:

struct (schrodinger.structure.Structure) – The scaffold structure that will define the interface

loadStructureIntoWorkspace()

Put the loaded structure into the workspace so the user can view it

crystalVectorPicked()

React to the user choosing one of the crystal lattice vectors to define the plane

computePlaneFromEntry(use_selected_xtal_vector=False)

Compute the interface plane based on an entire entry. In order of preference, this would be the crystal lattice vector most parallel with the moment of inertia. If the lattice vectors are not known, then we fit a plane to the entire structure. In either case, we then move the plane so that the entry lies entirely on one side of the plane and slide the vector to be right over the centroid of the entry.

Parameters:

use_selected_xtal_vector (bool) – Instead of picking the best plane based on a heirarchy of options, use the one defined by the currently selected crystal lattice vector.

pointVectorAwayFromStructure(struct, vector, origin)

Pick the 180 degree direction of the vector that points it away from the centroid of the given structure

Parameters:
  • struct (schrodinger.structure.Structure) – The structure to point the vector away from

  • vector (numpy.array) – The vector to potentially flip 180

  • origin (numpy.array) – The point the vector will originate from

Return type:

numpy.array

Returns:

The given vector, possibly flipped 180 degrees so that it points away from the given structure

createPlane()

Create or update the square in the workspace that represents the interface plane

createArrow(head_coords, tail_coords)

Create the arrow that represents the interface plane normal in the workspace

Parameters:
  • head_coords (numpy.array) – The coordinates of the tip of the arrow

  • tail_coords (numpy.array) – The coordinates of the base of the arrow

defineNewNormal(vector=None, origin=None, allow_flip=True)

Store the new normal vector and origin for the interface plane, optionally updating the workspace graphics to show the new vector/plane

Parameters:
  • vector (numpy.array) – The new xyz values of the plane normal vector. If not given, the previous vector will be used.

  • origin (numpy.array) – The new origin of the vector. If not given, the previous origin will be used.

  • allow_flip (bool) – Whether to potentially flip the vector 180 degrees so that it points away from the structure

setBestXtalVectorProperty()

Set the crystal lattice vector that is most parallel with the largest moment of inertia of the loaded structure in best_btext. This vector most likely aligns with the desired interface plane normal vector.

cleanUp()

Clean up the everything in the workspace from this dialog, including restoring the molecules that were in the workspace prior to it opening. Also resets some properties to their default values

cleanArrowAndPlanes()

Remove the arrow and markers from the workspace

resetFrame()

Reset the dialog widgets and clean up the workspace

class schrodinger.application.matsci.mswidgets.LipidImporter(layout=None, label=None, command=None)

Bases: SFrame

Manage importing a forcefield supported lipid into the Maestro workspace.

lipidImported

A pyqtSignal emitted by instances of the class.

__init__(layout=None, label=None, command=None)

Create an instance.

Parameters:
  • layout (QLayout or None) – the layout to which this widget will be added or None if there isn’t one

  • label (str or None) – the label of the button or None if the default is to be used

  • command (function or None) – a function to call on lipid import or None if none to call

setStructureDict()

Set the structure dictionary.

getStructure()

Return the structure for the chosen lipid.

Return type:

schrodinger.structure.Structure

Returns:

the structure

importLipid(struct=None)

Import the lipid into the Maestro workspace.

Parameters:

struct (schrodinger.structure.Structure or None) – The structure to be imported into the Maestro workspace or None if we should get the structure from the lipid structure dictionary

reset()

Reset.

class schrodinger.application.matsci.mswidgets.Stepper(label, units, start, points, step, parent_layout, multiple=False)

Bases: SFrame

A set of widgets that allow inputting a start, stepsize and number of points

class StepperData(start, num, stepsize)

Bases: tuple

num

Alias for field number 1

start

Alias for field number 0

stepsize

Alias for field number 2

ADD_TIP = 'This increment will be added to the previous\nstep value to get the new step value.'
MULT_TIP = 'This multiplier will be multiplied times the previous\nstep value to get the new step value.'
__init__(label, units, start, points, step, parent_layout, multiple=False)

Create a Stepper instance

Parameters:
  • label (str) – The label for the line of widgets

  • units (str) – The label to put after the starting and stepsize value widgets

  • start (float) – The initial starting value

  • points (int) – The initial number of points

  • step (float) – The initial stepsize

  • parent_layout (swidgets.SBoxLayout) – The layout to place the Stepper into

  • multiple (bool) – Whether the step is a multiplier (True) or additive (False)

numPointsChanged(value)

React to the number of points changing

Parameters:

value (int) – The current number of points

getData()

Get the current settings

Return type:

StepperData

Returns:

The current settings

reset()

Reset the widgets

values()

A generator for the values produced by the current settings

Return type:

generator of float

Returns:

Each item generated is a value defined by the current settings

class schrodinger.application.matsci.mswidgets.AtomNameWidgetItem(value, type_value=<class 'str'>, default='')

Bases: QTableWidgetItem

QTableWidgetItem validated as type provided.

__init__(value, type_value=<class 'str'>, default='')

Initialize item object.

Parameters:
  • value – Input value

  • type_value – type to which value must be converted. Default type of value is str

  • default – Value default, must be of type type_value

getCurrentValue(value)

Get value of the correct type and save it.

Parameters:

value – Input value to be converted to the typed value

Returns:

typed value

Return type:

type

setData(role, value)

Validates table cell data value by converting it to float.

Parameters:
  • role (int) – Item role.

  • value – Value of the item’s data.

userData()

Get user data.

Return type:

any or None

Returns:

User data or None

class schrodinger.application.matsci.mswidgets.MultiComboWithCount(text=None, item_name='item', layout=None, items=None, max_selected_items=None, command=None, stretch=True, width=80, **kwargs)

Bases: MultiComboBox

A MultiComboBox that shows the number of selected items as the combobox text instead of item names.

__init__(text=None, item_name='item', layout=None, items=None, max_selected_items=None, command=None, stretch=True, width=80, **kwargs)

Create a MultiComboWithCount instance

Parameters:
  • layout (QBoxLayout) – The layout for this widget

  • items (list) – The items to add to the combobox

  • max_selected_items (int) – The maximum number of items that the user may select before the rest disabled for selection.

  • command (callable) – The command to call when the selection changes

property max_selected_items
recordChange(*args)

Record that the selection has changed

currentText()

Override the parent class to only show the number of selected items rather than all the item names

Return type:

str

Returns:

The text to display in the combobox

changeToolTip()

Change the tooltip to show all selected items

hideWidgets(hidden)

Hide (or show) the combobox and clear the selection

Parameters:

hidden (bool) – Whether to hide the combobox or show it

updateSelectability()

If the number of selected items is greater than or equal to the maximum, then make sure that the remaining, unselected items are disabled. Otherwise, make sure that all items are enabled.

enableAllItems()

Enables all items in the combo box

disableUnselectedItems()

Disables all unselected items in the combo box

setVisible(visible)

Show or hide the combobox

Parameters:

visible (bool) – Whether the combobox should be shown

class schrodinger.application.matsci.mswidgets.OPLS5ForceFieldSelector(*args, allow_opls5=True, **kwargs)

Bases: ForceFieldSelector

A force field selector that defaults to allowing OPLS5

__init__(*args, allow_opls5=True, **kwargs)

Create an instance

Parameters:

allow_opls5 (bool or None) – If True then OPLS5 will be available. If False, it will not be

class schrodinger.application.matsci.mswidgets.MSForceFieldSelector(*args, **kwargs)

Bases: OPLS5ForceFieldSelector

__init__(*args, **kwargs)

Extend the ForceFieldSelector by applying a Materials-Science-specific default force field

class schrodinger.application.matsci.mswidgets.ProcessBusyDialog(text, process, *args, **kwargs)

Bases: SDialog

A dialog that indicates a subprocess is running and gives the user a cancel button to kill it.

The class is designed to show/exec the dialog via the activate function. The dialog is modal and will block until the subprocess finishes.

KILLED = -9
SUCCESS = 0
__init__(text, process, *args, **kwargs)

Create a ProcessBusyDialog instance

Parameters:
  • text (str) – The text to display in the dialog

  • process (subprocess.Popen) – The running subprocess

Additional arguments are passed to the parent class

layOut()

Lay out the dialog widgets

setNewData(text, process)

Set the new text and process for this dialog - used for dialogs that have activate called with persistent=True

Parameters:
  • text (str) – The new text of the dialog

  • process (subprocess.Popen) – The new running subprocess

activate(persistent=False)

Show the dialog, wait for the process to finish (either naturally or by the user cancelling it) and return the process return code.

Parameters:

persistent (bool) – If False, close the dialog before returning. If True, do not close the dialog and caller is responsible for calling dialog.accept() to close.

Return type:

int

Returns:

0 if the process finished successfully, -9 if killed by the user, or a non-zero integer if the process died with an error

reject()

Called when the user selects the Cancel button or the window manager X button. Kill the process but do not close the dialog. Allow the dialog to close naturally via the activate while loop when the process terminates.

class schrodinger.application.matsci.mswidgets.OptionalInputSelector(parent, **kwargs)

Bases: InputSelector

An InputSelector object that does not act when disabled

setEnabled(enable, *args, **kwargs)

Override the parent method to block signals when disabled

validate(*args, **kwargs)

Override the parent method to not validate when disabled

writePTEntries(*args, **kwargs)

Override the parent method to not write when disabled

setup(jobname, *args, **kwargs)

Override the parent method to store the structure file name but do nothing else when disabled

class schrodinger.application.matsci.mswidgets.ConvenientSelectorWithPopUp(label, default_selection, list_items, filter_cbs=(), command=None, layout=None, stretch=True)

Bases: SFrame

Convenient selector with popup that doesn’t need subclassing the selector, the button and the popup classes to use.

NOTE: This class hasn’t been tested with filter checkboxes yet, and might need more functionalities NOTE: Can use autowidth option of TemplateSelectorFilterListPopUp

selectionChanged

A pyqtSignal emitted by instances of the class.

__init__(label, default_selection, list_items, filter_cbs=(), command=None, layout=None, stretch=True)

Create an instance

Parameters:
  • label (str) – The selector label

  • default_selection (str) – Default selection in the list

  • list_items (iterable(QListWidgetItem) or iterable(str)) – Items or strings to add to the popup filtered list

  • filter_cbs (tuple(FilterCheckBox)) – tuple of filter checkboxes for the popup

  • command (callable) – The command to call when the selection changes

  • layout (QLayout) – The layout to place the frame in

  • stretch (bool) – Whether to add a stretch after the button

getSelection()

Get the current selection

Return type:

str

Returns:

The current selection

setSelection(selection)

Set the current selection for the selector

Parameters:

selection (str) – The text for the item

Raises:

ValueError – If no items are found with the text

updateLineEdit()

Update the line edit text with the list’s current selection

reset()

Reset the selector

class schrodinger.application.matsci.mswidgets.PopupMenu(parent=None, minimum_value=0, maximum_value=100, decimals=1, float_step=1)

Bases: QWidget

A popup window widget to adjust the thumb positions in the multislider. Fine control is available by using the spinbox to set the value of the thumbs. Button allows to adjust the number of thumbs.

value_changed

A pyqtSignal emitted by instances of the class.

__init__(parent=None, minimum_value=0, maximum_value=100, decimals=1, float_step=1)
Parameters:
  • parent (QtWidgets.Qwidget) – Parent widget

  • minimum_value (float) – Minimum value for spinbox

  • maximum_value (float) – Maximum value for spinbox

  • decimals (float) – Number of decimal places required to represent the float step

  • float_step (float) – Step size on the slider

emitValueChanged()

Emit the valueChanged signal only if the value have changed for spinbox

focusOutEvent(event)

Closes the popup window

Parameters:

event (QtGui.QMouseEvent) – Mouse press event

show(pos, value)

Displays the popup window at given location. The spinbox values are updated.

Parameters:
  • pos (int) – Pixel position

  • value (int) – Slider value

class schrodinger.application.matsci.mswidgets.MultiSlider(*, parent=None, num_thumbs=2, minimum=0, maximum=100, ticks=True, num_ticks=10, command=None, thumb_name=None, float_step=1, label=None, layout=None)

Bases: QSlider

A horizontal slider widget with variable number of thumbs that can be moved independently. The slider can be used to select a range of values or to select multiple values. The number of thumbs can be changed by using the spinbox.

SC_HANDLE = 2
SC_GROOVE = 1
CC_SLIDER = 3
GROOVE_THICKNESS = 1
THICKNESS = 4
HIGHLIGHT_COLOR = <PyQt6.QtGui.QColor object>
MAX_THUMBS = 20
valueChanged

A pyqtSignal emitted by instances of the class.

__init__(*, parent=None, num_thumbs=2, minimum=0, maximum=100, ticks=True, num_ticks=10, command=None, thumb_name=None, float_step=1, label=None, layout=None)
Parameters:
  • parent (QtWidgets.QWidget) – Parent widget

  • num_thumbs (int) – The initial number of thumbs

  • minimum (float or int) – Minimum value of the slider

  • maximum (float or int) – Maximum value of the slider

  • ticks (bool) – Whether to show tick marks

  • num_ticks (int) – Number of tick marks to show, excluding the minimum and maximum values of the slider

  • command (callable) – Function to call when the slider values are changed

  • thumb_name (None or str) – The user facing name of the thumbs.

  • float_step (float) – Step size of the slider

  • label (None or str) – label for the slider

  • layout (QtWidgets.QLayout) – Layout to add the slider to

setupLayout(thumb_name)

Adds the multislider, spinboxes and combo box to the layout

Parameters:

thumb_name (str) – The user facing name of the thumb

event(event)

Override the event method to show a tooltip when the mouse cursor is over a thumb only.

Parameters:

event (QtCore.QEvent) – Event

emitValueChanged()

Emit the valueChanged signal only if the values have changed

property values

List of values of the thumbs in the slider. Note that the values are the actual values and not the slider positions.

Returns:

List of values of the thumbs

Return type:

list(float)

valueAt(index)

Get the value of the thumb at the specified index

Parameters:

index (int) – Index of the thumb

Returns:

Value of the thumb

Return type:

float

Raises:

IndexError – If the index is out of range

getValues()

Get the integer positions of the thumbs in the slider

Returns:

List of integer positions of the thumbs

Return type:

list(int)

setValues(values)

Set the values of the thumbs in the slider

Parameters:

values (list(float)) – List of values

Raises:

ValueError – If the number of values does not match the number

setRange(minimum, maximum)

Set the range of the slider.

Parameters:
  • minimum (float) – Minimum value

  • maximum (float) – Maximum value

initPositions()

Initialize the positions of the thumbs in the slider such that they are evenly spaced.

setNumThumbs(num_thumbs)

Set the number of thumbs in the slider

Parameters:

num_thumbs (int) – Number of thumbs

setSelectedThumb(index)

Update the selected thumb

Parameters:

index (int) – Index of the selected thumb

setDraggableThumb(index)

Update the draggable thumb

Parameters:

index (int) – Index of the draggable thumb

updateSpinBox()

Update the spin box value, react to the slider value being changed

updateSliderPosition(float_value)

Update the slider position based on the spin box value

Parameters:

float_value (float) – New value for the selected thumb set by the spin box

addThumb(value)

Add a thumb to the slider

Parameters:

value (int) – Value of the thumb

removeThumb(index)

Remove a thumb from the slider

Parameters:

index (int) – Index of the thumb to remove

paintEvent(event)

Paint the slider

Parameters:

event (QtGui.QPaintEvent) – Paint event

showMenu(event)

Displays the popup menu to add thumb, remove thumb and change the thumb position. Add a new thumb if the right mouse button is clicked and no thumb was clicked. Remove the thumb if the right mouse button is clicked and a thumb was clicked.

Parameters:

event (QtGui.QMouseEvent) – Mouse right click event

mousePressEvent(event)

Handle mouse press events to select, add thumbs, and remove thumbs

Parameters:

event (QtGui.QMouseEvent) – Mouse press event

mouseMoveEvent(event)

Move the selected thumb to the new position if the mouse is moved while the left mouse button is pressed down (dragging)

Parameters:

event (QtGui.QMouseEvent) – Mouse move event

mouseReleaseEvent(event)

Handle mouse release event

Parameters:

event (QtGui.QMouseEvent) – Mouse release event

setDefault()

Redistributes thumbs in the data range, and reset spinboxes and combobox to default.

reset()

Reset the multislider when loaded file in the panel is changed. The slider is set to the default state with updated data range. The numbers of thumbs are reset to initial state and redistributed.

setEnabled(enabled=True)

Disable or enable the multislider.

Parameters:

enabled (bool) – True if multislider is in enabled state else False.

class schrodinger.application.matsci.mswidgets.MSMoleculeSelector(*args, **kwargs)

Bases: MSAtomSelector

Atom selector which only allows selecting whole molecules

__init__(*args, **kwargs)

Create an instance. See parent for argument docs.

class schrodinger.application.matsci.mswidgets.SystemInformationFrame(parent, parent_layout, use_defaults=True, custom_headers=None)

Bases: SFrame

A frame which displays some information about the system.

ATOM_NUM = 'Atom #'
MOLECULE_NUM = 'Molecule #'
TOTAL_WEIGHT = 'Total Weight'
TOTAL_CHARGE = 'Total Charge'
DEFAULT_HEADERS = ['Atom #', 'Molecule #', 'Total Weight', 'Total Charge']
__init__(parent, parent_layout, use_defaults=True, custom_headers=None)

Create an instance of the frame.

Parameters:
  • parent (QtWidget) – The parent of this frame

  • parent_layout (QBoxLayout) – The layout to place this frame into

  • use_defaults (bool) – Whether to use the default headers

  • custom_headers (list) – A list of custom headers to use

layOut()

Lay out the widgets in the frame.

setSystemInfo(updated_items=None)

Set the system information labels. Note, this should be called after the parent structure has been loaded.

Parameters:

updated_items (dict) – A dictionary of headers that are already passed in self.custom_headers and their values.

Raises:

ValueError – If using custom headers, updated_items must be provided. Also, updated_items must contain all headers in custom_headers.

setDefaultItems()

Set the default system information labels.

getTotalCharge()

Get the sum of formal charges of atoms in the structure.

Return type:

float

Returns:

total charge

reset()

Reset all the labels in the frame.