schrodinger.ui.qt.mapperwidgets.plptable module

Framework to simplify creating Qt tables based on parameters.ParamListParam (PLP). A PLP is a type of list param where each element is itself a compound param. These can be naturally represented as tables where each item in the list is a row in the table, and individual subparams (fields) of the item are shown as cells in the row. See scripts/examples/models/plptable_gui.py for an example.

To create a plptable, you first need a model object with a ParamListParam that contains the source data. Each item in the list corresponds to a row in the table, and the cells in that row are based on the fields in that item. For example:

class Contact(parameters.CompoundParam):
    name = parameters.StringParam()
    phone_number = parameters.StringParam()
    email = parameters.StringParam()

class Model(parameters.CompoundParam):
    contacts = parameters.ParamListParam(item_class=Contact)

In the simplest case, a PLPTableWidget can be instantiated with autospec=True, resulting in a very basic table with one column for each field in the PLP item class:

model = Model()
table = plptable.PLPTableWidget(plp=model.contacts, autospec=True)

Typically, it is desirable to customize the column contents and how the data in the list item is used to populate the columns. This is accomplished by sub- classing the TableSpec class to create a table specification. A table spec defines the columns in a table and provides the data methods used to populate the cells in each column.

In the example above, we might want to split the name into separate first and last name columns and turn the email into a hyperlink. This could be done with the following table spec:

class ContactTableSpec(plptable.TableSpec):
    @plptable.FieldColumn(Contact.name)
    def first_name(self, field):
        return field.split()[0]

    @plptable.FieldColumn(Contact.name)
    def last_name(self, field):
        return field.split()[-1]

    phone_number = plptable.FieldColumn(Contact.phone_number)

    @plptable.FieldColumn(Contact.email)
    def email(self, field):
        return f'<a href = "mailto: {field}">{field}</a>'

Notice that there are two ways to declare a column - either with a class attribute or a decorated data method.

Once a spec is defined, it can be applied to a PLPTableWidget using the setSpec method.

For more information, see TableSpec as well as the various column classes.

class schrodinger.ui.qt.mapperwidgets.plptable.FieldColumn(*args, **kwargs)

Bases: schrodinger.ui.qt.mapperwidgets.plptable._BaseColumn

A FieldColumn is a column in which each cell receives the data from a single subparam (i.e. field) of one item in the PLP.:

@FieldColumn(ItemClass.subparam)
def my_data_method(self, field)
    field: the value of the param field associated with this row
__init__(field, **kwargs)
Parameters

field (parameters.Param) – An abstract param representing the field this column represents or uses.

setData(all_rows, this_row, data, role=ItemDataRole.EditRole)
data(all_rows, this_row, role=ItemDataRole.DisplayRole)

Get the corresponding data for the column for the specified role.

data_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a data method for the column. The method will be used as the data method whenever data for role or roles is requested.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

generateColumn(table_spec)

Creates a copy of this column to be used as instance members of TableSpec instances. This allows separate instances and subclasses of a TableSpec to modify columns without altering the original class attribute, which is considered an “abstract” column.

Parameters

table_spec (TableSpec) – the table spec instance that will own the generated column instance.

getNumColumns(all_rows)

Get the number of columns this column has. Generally this is just one but some children classes define more than one column.

Parameters

all_rows (list(parameters.CompoundParam)) – A list of the rows that make up the table.

Returns

The number of columns.

Return type

int

headerData(all_rows, role=ItemDataRole.DisplayRole)
headerData_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a header data method for the column. The method will be used as the data method whenever data for role or roles is requested for the header row. Header data methods are passed the entire PLP.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

setData_method(role=ItemDataRole.EditRole)

A decorator for specifying a setData method for the column.

class schrodinger.ui.qt.mapperwidgets.plptable.ParamColumn(*args, **kwargs)

Bases: schrodinger.ui.qt.mapperwidgets.plptable._BaseColumn

A ParamColumn is a column in which each cell receives one entire item from the PLP. It’s up to the data method to decide how to convert the item into something that can be used by the cell.

@ParamColumn()
def my_data_method(self, this_row)
    this_row: the model object for this row.
__init__(title=None, editable=False, tooltip=None, sample_data='')
Parameters
  • title (str or None) – The title of the column. This string will be shown in the header cell of the column. If None, the title will default to the variable name the column is set to.

  • editable (bool) – Whether the cells in the column are editable. If editable is set to True, then double clicking a cell in the column will allow the user to input a string.

  • tooltip (str or None) – The string to populate the tooltip with.

data(all_rows, this_row, role=ItemDataRole.DisplayRole)

Get the corresponding data for the column for the specified role.

data_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a data method for the column. The method will be used as the data method whenever data for role or roles is requested.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

generateColumn(table_spec)

Creates a copy of this column to be used as instance members of TableSpec instances. This allows separate instances and subclasses of a TableSpec to modify columns without altering the original class attribute, which is considered an “abstract” column.

Parameters

table_spec (TableSpec) – the table spec instance that will own the generated column instance.

getNumColumns(all_rows)

Get the number of columns this column has. Generally this is just one but some children classes define more than one column.

Parameters

all_rows (list(parameters.CompoundParam)) – A list of the rows that make up the table.

Returns

The number of columns.

Return type

int

headerData(all_rows, role=ItemDataRole.DisplayRole)
headerData_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a header data method for the column. The method will be used as the data method whenever data for role or roles is requested for the header row. Header data methods are passed the entire PLP.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

setData(all_rows, this_row, data, role=ItemDataRole.EditRole)
setData_method(role=ItemDataRole.EditRole)

A decorator for specifying a setData method for the column.

class schrodinger.ui.qt.mapperwidgets.plptable.PLPColumn(*args, **kwargs)

Bases: schrodinger.ui.qt.mapperwidgets.plptable._BaseColumn

A PLPColumn is a column in which each cell receives the entire PLP (i.e. the entire table’s data). This allows each cell’s contents to account for data in other rows in the table. It’s up to the data method to decide how to use the entire table data in each individual cell.

@PLPColumn()
def my_data_method(self, all_rows, this_row):
    all_rows: a list where each element is the model object for one row
    this_row: the model object for this row
__init__(title=None, editable=False, tooltip=None, sample_data='')
Parameters
  • title (str or None) – The title of the column. This string will be shown in the header cell of the column. If None, the title will default to the variable name the column is set to.

  • editable (bool) – Whether the cells in the column are editable. If editable is set to True, then double clicking a cell in the column will allow the user to input a string.

  • tooltip (str or None) – The string to populate the tooltip with.

data(all_rows, this_row, role=ItemDataRole.DisplayRole)

Get the corresponding data for the column for the specified role.

data_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a data method for the column. The method will be used as the data method whenever data for role or roles is requested.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

generateColumn(table_spec)

Creates a copy of this column to be used as instance members of TableSpec instances. This allows separate instances and subclasses of a TableSpec to modify columns without altering the original class attribute, which is considered an “abstract” column.

Parameters

table_spec (TableSpec) – the table spec instance that will own the generated column instance.

getNumColumns(all_rows)

Get the number of columns this column has. Generally this is just one but some children classes define more than one column.

Parameters

all_rows (list(parameters.CompoundParam)) – A list of the rows that make up the table.

Returns

The number of columns.

Return type

int

headerData(all_rows, role=ItemDataRole.DisplayRole)
headerData_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a header data method for the column. The method will be used as the data method whenever data for role or roles is requested for the header row. Header data methods are passed the entire PLP.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

setData(all_rows, this_row, data, role=ItemDataRole.EditRole)
setData_method(role=ItemDataRole.EditRole)

A decorator for specifying a setData method for the column.

class schrodinger.ui.qt.mapperwidgets.plptable.ColumnSeries(*args, **kwargs)

Bases: schrodinger.ui.qt.mapperwidgets.plptable.PLPColumn

getNumColumns(all_rows)

Call the column_count method to see how many columns make up the series.

Parameters

all_rows (list(parameters.CompoundParam)) – A list of the rows that make up the table.

Returns

The number of columns in the series

Return type

int

column_count(*args)

Decorator to designate a function to calculate the number of columns in the series.

data(col_idx, all_rows, this_row, role=ItemDataRole.DisplayRole)

Get the corresponding data for the column for the specified role.

setData(all_rows, this_row, data, role=ItemDataRole.EditRole)
headerData(col_idx, all_rows, role=ItemDataRole.DisplayRole)
__init__(title=None, editable=False, tooltip=None, sample_data='')
Parameters
  • title (str or None) – The title of the column. This string will be shown in the header cell of the column. If None, the title will default to the variable name the column is set to.

  • editable (bool) – Whether the cells in the column are editable. If editable is set to True, then double clicking a cell in the column will allow the user to input a string.

  • tooltip (str or None) – The string to populate the tooltip with.

data_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a data method for the column. The method will be used as the data method whenever data for role or roles is requested.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

generateColumn(table_spec)

Creates a copy of this column to be used as instance members of TableSpec instances. This allows separate instances and subclasses of a TableSpec to modify columns without altering the original class attribute, which is considered an “abstract” column.

Parameters

table_spec (TableSpec) – the table spec instance that will own the generated column instance.

headerData_method(*roles, role=ItemDataRole.DisplayRole)

A decorator that marks a method to be used as a header data method for the column. The method will be used as the data method whenever data for role or roles is requested for the header row. Header data methods are passed the entire PLP.

Parameters
  • roles – The roles that this data method should be used for. All positional arguments will be considered a part of roles and should be hashable.

  • role (Hashable) – Keyword-only argument. The role to assign to the data method. Usually enums are used for roles but theoretically any hashable object can be used.

setData_method(role=ItemDataRole.EditRole)

A decorator for specifying a setData method for the column.

class schrodinger.ui.qt.mapperwidgets.plptable.TableSpec(*args, _param_type=<object object>, **kwargs)

Bases: schrodinger.models.parameters.CompoundParam

A class that represents the specification of a PLPTable. The spec’s role is to specify what columns to display, in what order, and with what data.

To create a table spec, subclass TableSpec and add columns and data methods to define the behavior of the table.

Abstract columns are used to specify the order and existence of columns in the table. They are class attributes (e.g. AtomWeightsSpec.atom_number).

The default set of abstract columns on a spec is given by inheritance from the TableSpec base class. This may be customized with the corresponding getter and setter, e.g.:

cols = spec.getAbstractColumns()
cols.remove(spec.atom_number)
spec.setAbstractColumns(cols)

Concrete columns (or simply “columns”, without “abstract”) are a ListParam defined on TableSpec instances. The list of concrete columns is read-only, but attributes of individual column objects may be mutated on a table instance.

__init__()
columns: list

A Param to represent lists. Values of this param will have a mutated signal that will be emitted whenever any mutation method is called.

The constructor optionally takes a item_class keyword argument to specify what type of class the items in the list will be. This information will be used for jsonifying the list if specified.

getColumns()

Returns the concrete columns, according to their current ordering.

Returns

List of concrete columns according to the spec’s current column ordering.

Return type

list(_BaseColumn)

getAbstractColumns()

Getter method for column ordering.

Returns

List of abstract columns according to the spec’s current column ordering.

Return type

list(_BaseColumn)

setAbstractColumns(new_order: list(_BaseColumn)) None

Setter method for column ordering.

Parameters

new_order (list(_BaseColumn)) – List of abstract columns in the new desired column order.

classmethod makeAutoSpec(plp: schrodinger.models.parameters.ParamListParam) schrodinger.ui.qt.mapperwidgets.plptable.TableSpec

Make a TableSpec instance from a PLP (from a table’s model.)

Parameters

plp (parameters.ParamListParam) – a ParamListParam to use as the domain model for this table

headerData(col_idx, all_rows, role)
data(col_idx, all_rows, this_row, role)
setData(col_idx, all_rows, this_row, value, role=ItemDataRole.EditRole)
getColumn(col_idx, all_rows)
getNumColumns(all_rows)
getColumnIndex(column, all_rows)

Note that for column of type ColumnSeries we return the index of the 0th column in the series.

Parameters
  • column (Subclass instance of _BaseColumn) – Column to return the index for.

  • all_rows (parameters.ParamListParam) – All rows of the plp table.

Returns

Column index.

Return type

int

Raises

KeyError – If column not found in the table spec.

DataClass

This class can be used to declare a public attribute on a CompoundParam. Declared public attributes can be used without error.

Example usage:

class Coord(CompoundParam):
    x: int
    y: int
    note = NonParamAttribute()

coord = Coord()
coord.note = "hello" # No error
classmethod addSubParam(name, param, update_owner=True)
blockSignals(self, b: bool) bool
block_signal_propagation()
childEvent(self, a0: QChildEvent)
children(self) List[QObject]
columnsChanged
columnsReplaced
classmethod configureParam()

Override this class method to set up the abstract param class (e.g. setParamReference on child params.)

connectNotify(self, signal: QMetaMethod)
customEvent(self, a0: QEvent)
classmethod defaultValue()

Returns the default value for this abstract param:

default_atom = Atom.defaultValue()
assert Atom.coord.x == 0
deleteLater(self)
destroyed

destroyed(self, object: typing.Optional[QObject] = None) [signal]

disconnect(a0: QMetaObject.Connection) bool
disconnect(self) None
disconnectNotify(self, signal: QMetaMethod)
dumpObjectInfo(self)
dumpObjectTree(self)
dynamicPropertyNames(self) List[QByteArray]
event(self, a0: QEvent) bool
eventFilter(self, a0: QObject, a1: QEvent) bool
findChild(self, type: type, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) QObject
findChild(self, types: Tuple, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) QObject
findChildren(self, type: type, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
findChildren(self, types: Tuple, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
findChildren(self, type: type, re: QRegularExpression, options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
findChildren(self, types: Tuple, re: QRegularExpression, options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
classmethod fromJson(json_obj)

A factory method which constructs a new object from a given dict loaded from a json string or file.

Parameters

json_obj (dict) – A json-loaded dictionary to create an object from.

Returns

An instance of this class.

Return type

cls

classmethod fromJsonImplementation(json_dict)

Sets the value of this compound param value object from a JSON dict.

Warning

This should never be called directly.

getAbstractParam()

Return the corresponding abstract param for this instance.

classmethod getJsonBlacklist()

Override to customize what params are serialized.

Implementations should return a list of abstract params that should be omitted from serialization.

..NOTE

Returned abstract params must be direct child params of cls, e.g. cls.name, not cls.coord.x.

classmethod getParamSignal(obj, signal_type='Changed')
classmethod getParamValue(obj)

Enables access to a param value on a compound param via an abstract param reference:

a = Atom()
assert Atom.coord.x.getParamValue(a) == 0 # ints default to 0
a.coord.x = 3
assert Atom.coord.x.getParamValue(a) == 3
Parameters

param (CompoundParam) – The owner param to get a param value from

classmethod getSubParam(name)

Get the value of a subparam using the string name:

c = Coord()
assert c.getSubParam('x') == 0

Note

Using the string name to access params is generally discouraged, but can be useful for serializing/deserializing param data.

Parameters

name (str) – The name of the subparam to get the value for.

classmethod getSubParams()

Return a dictionary mapping subparam names to their values.

getTypeHint()
get_version()

Method to get the version of a particular object. Defaults to the current version of mmshare. This class can be overridden for custom versioning behavior.

inherits(self, classname: str) bool
initAbstract()
initConcrete()

Override to customize initialization of concrete params.

initializeValue()

Override to dynamically set up the default value of the param. Useful for default values that are determined at runtime. This is called any time the param is reset.

installEventFilter(self, a0: QObject)
classmethod isAbstract()

Whether the param is an “abstract” param.

isDefault()

Whether the current value of this instance matches the default value.

isSignalConnected(self, signal: QMetaMethod) bool
isWidgetType(self) bool
isWindowType(self) bool
killTimer(self, id: int)
metaObject(self) QMetaObject
moveToThread(self, thread: QThread)
objectName(self) str
objectNameChanged

objectNameChanged(self, objectName: str) [signal]

classmethod owner()

Get the owner of the param:

# Can be called on an abstract param:
assert Coord.x.owner() == Coord

# ...or on an instance of a CompoundParam
a = Atom()
assert a.coord.owner() == a
classmethod ownerChain()

Returns a list of param owners starting from the toplevel param and ending with self. Examples:

foo.bar.atom.coord.ownerChain() will return [foo, bar, atom, coord] where every item is a concrete param.

Foo.bar.atom.coord.x.ownerChain() will return [Foo, Foo.bar, Foo.atom.coord, Foo.atom.coord.x] where every item is an abstract params.

classmethod paramName()

Get the name of the param:

# Can be called on an abstract param:
print(Coord.x.paramName()) # 'x'

# ...or on an instance of a CompoundParam
a = Atom()
a.coord.paramName() # 'coord'
parent(self) QObject
property(self, name: str) Any
pyqtConfigure(...)

Each keyword argument is either the name of a Qt property or a Qt signal. For properties the property is set to the given value which should be of an appropriate type. For signals the signal is connected to the given value which should be a callable.

receivers(self, signal: PYQT_SIGNAL) int
removeEventFilter(self, a0: QObject)
reset(*abstract_params)

Resets this compound param to its default value:

class Line(CompoundParam):
    start = Coord(x=1, y=2)
    end = Coord(x=4, y=5)
line = Line()
line.start.x = line.end.x = 10
assert line.start.x == line.end.x == 10
line.reset()
assert line.start.x == 1
assert line.end.x == 4

Any number of abstract params may be passed in to perform a partial reset of only the specified params:

line.start.x = line.end.x = 10
line.reset(Line.start.x)  # resets just start.x
assert line.start.x == 1
assert line.end.x == 10

line.reset(Line.end)      # resets the entire end point
assert line.end.x == 4

line.start.y = line.end.y = 10
line.reset(Line.start.y, Line.end.y)  # resets the y-coord of both
assert line.start.y == 2
assert line.end.y == 5
sender(self) QObject
senderSignalIndex(self) int
setObjectName(self, name: str)
classmethod setParamValue(obj, value)

Set the value of a param on an object by specifying the instance and the value:

# Setting the param value of a basic param
a = Atom()
Atom.coord.x.setParamValue(a, 5)
assert a.coord.x == 5

# setParamValue can also be used to set the value of CompoundParams
c = Coord()
c.x = 10
atom.coord.setParamValue(a, c)
assert atom.coord.x == 10
Parameters
  • param – The owner param to set a subparam value of.

  • value – The value to set the subparam value to.

setParent(self, a0: QObject)
setProperty(self, name: str, value: Any) bool
classmethod setReference(param1, param2)

Call this class method from configureParam to indicate that two params should be kept in sync. The initial values will start with the default value of param1. Example:

class Square(CompoundParam):
    width: float = 5
    height: float = 10

    @classmethod
    def configureParam(cls):
        super().configureParam()
        cls.setReference(cls.width, cls.height)

square = Square()
assert square.width == square.height == 5 # Default value of width
                                          # takes priority
square.height = 7
assert square.width == square.height == 7
square.width = 6
assert square.width == square.height == 6
Parameters
  • param1 – The first abstract param to keep synced

  • param2 – The second abstract param. After instantiation, this param will take on the value of param1.

setValue(value=None, **kwargs)

Set the value of this CompoundParam to match value.

Parameters
  • value – The value to set this CompoundParam to. It should be the same type as this CompoundParam.

  • kwargs – For internal use only.

signalsBlocked(self) bool
skip_eq_check()
startTimer(self, interval: int, timerType: Qt.TimerType = Qt.CoarseTimer) int
staticMetaObject = <PyQt6.QtCore.QMetaObject object>
thread(self) QThread
timerEvent(self, a0: QTimerEvent)
toDict()

Return a dictionary version of this CompoundParam. The returned dictionary is fully nested and contains no CompoundParam instances

a = Atom()
a_dict = a.toDict()
assert a_dict['coord']['x'] == 0
assert a_dict['coord'] == {'x':0, 'y':0}
toJson(_mark_version=True)

Create and returns a data structure made up of jsonable items.

Return type

An instance of one the classes from NATIVE_JSON_DATATYPES

toJsonImplementation()

Returns a JSON representation of this value object.

Warning

This should never be called directly.

tr(sourceText: str, disambiguation: typing.Optional[str] = None, n: int = - 1) str
valueChanged
class schrodinger.ui.qt.mapperwidgets.plptable.PLPTableWidget(*args, spec=None, autospec=False, plp=None, view=None, **kwargs)

Bases: schrodinger.models.mappers.TargetMixin, schrodinger.ui.qt.basewidgets.BaseWidget

A table widget for displaying data in a ParamListParam. Compatible with mappers.TargetParamMapper and mappers.MapperMixin.

Typically this class is instantiated directly, and defining the behavior of the table is done by creating a custom TableSpec subclass.

__init__(*args, spec=None, autospec=False, plp=None, view=None, **kwargs)
Parameters
  • spec (TableSpec) – Table specification. Will be ignored if autospec is True.

  • autospec (bool) – Whether to automatically generate the table specification from the PLP item fields.

  • plp (parameters.ParamListParam) – ParamListParam containing data. It is more common to set the plp using mappers.

  • view (QtWidgets.QTableView) – Custom table view instance. If None, an instance of table_helper.SampleDataTableView will be created.

property spec
setSpec(new_spec)

Apply a new table specification to this table.

Parameters

new_spec (TableSpec or None) – the new table spec

initSetUp()

Creates widget from ui and stores it ui_widget.

Suggested subclass use: create and initialize subwidgets, and connect signals.

initLayOut()

Create a vertical layout for the widget (widget_layout) and populate it with two vertical sub-layouts: main_layout and bottom_layout.

If the user has specified the ui data member, insert the resultant ui_widget into main_layout.

If the widget already has a layout defined, this method will produce a warning (but not a traceback). main_layout and bottom_layout will be inserted into the existing widget layout, which will not be the same as widget_layout. It is therefore recommended that this mixin is used only with widgets that do not already have a layout.

Suggested subclass use: create, initialize, and populate layouts.

addProxy(proxy_model)
targetGetValue()

Implementation of an abstract method in TargetMixin.

targetSetValue(value)

Implementation of an abstract method in TargetMixin.

Creates a table model based on the spec, loads the PLP as data, and sets the newly created table model on the view.

makeAutoSpec(plp: schrodinger.models.parameters.ParamListParam) schrodinger.ui.qt.mapperwidgets.plptable.TableSpec

Wrapper for backwards compatibility.

loadPLP(plp)

Replace the current contents of the table PLP with the contents of the supplied plp argument.

Parameters

plp (parameters.ParamListParam) – a ParamListParam of the same type that is used as the domain model for this table

setPLP(plp)

Set the supplied PLP as the new model for the table.

Parameters

plp (list(parameters.CompoundParam)) – The PLP representing the table data.

selectedParams()
removeSelectedParams()

Deletes parameters if they are selected in the table.

setSelectedParams(params)

Selects the table rows corresponding to the specified params.

Parameters

params – a list of params to select

removeRow(row_num)
exportToCsv(filename)
getRowData()
Returns

a list of lists, where each list represents the row of a table

Return type

list[list[object]]

getColumnIndex(column)

Note that for column of type ColumnSeries we return the index of the 0th column in the series.

Parameters

column (Subclass instance of _BaseColumn) – Column to return the index for.

Returns

Column index.

Return type

int

Raises

KeyError – If column not found in the table.

APPLY_LEGACY_STYLESHEET = True
APPLY_PANELX_STYLESHEET = False
class BtnPos(value)

Bases: enum.IntEnum

An enumeration.

Left = 0
Middle = 1
Right = 2
DrawChildren = 2
DrawWindowBackground = 1
IgnoreMask = 4
class PaintDeviceMetric(value)

Bases: enum.Enum

An enumeration.

PdmWidth = 1
PdmHeight = 2
PdmWidthMM = 3
PdmHeightMM = 4
PdmNumColors = 5
PdmDepth = 6
PdmDpiX = 7
PdmDpiY = 8
PdmPhysicalDpiX = 9
PdmPhysicalDpiY = 10
PdmDevicePixelRatio = 11
PdmDevicePixelRatioScaled = 12
PdmDepth = 6
PdmDevicePixelRatio = 11
PdmDevicePixelRatioScaled = 12
PdmDpiX = 7
PdmDpiY = 8
PdmHeight = 2
PdmHeightMM = 4
PdmNumColors = 5
PdmPhysicalDpiX = 9
PdmPhysicalDpiY = 10
PdmWidth = 1
PdmWidthMM = 3
class RenderFlag(value)

Bases: enum.Flag

An enumeration.

DrawWindowBackground = 1
DrawChildren = 2
IgnoreMask = 4
SHOW_AS_WINDOW = False
class StdBtn(value)

Bases: enum.IntEnum

An enumeration.

Ok = 0
Cancel = 1
Reset = 2
Help = 3
acceptDrops(self) bool
property accepted
accessibleDescription(self) str
accessibleName(self) str
actionEvent(self, a0: QActionEvent)
actions(self) List[QAction]
activateWindow(self)
addAction(self, action: QAction)
addActions(self, actions: Iterable[QAction])
adjustSize(self)
autoFillBackground(self) bool
auto_update_model = True
auto_update_target = True
backgroundRole(self) QPalette.ColorRole
baseSize(self) QSize
blockSignals(self, b: bool) bool
changeEvent(self, a0: QEvent)
childAt(self, p: QPoint) QWidget
childAt(self, ax: int, ay: int) QWidget
childEvent(self, a0: QChildEvent)
children(self) List[QObject]
childrenRect(self) QRect
childrenRegion(self) QRegion
clearFocus(self)
clearMask(self)
close(self) bool
closeEvent(event)

Ensures proper handling of OK, Cancel, and [X] button clicks

colorCount(self) int
connectNotify(self, signal: QMetaMethod)
contentsMargins(self) QMargins
contentsRect(self) QRect
contextMenuEvent(self, a0: QContextMenuEvent)
contextMenuPolicy(self) Qt.ContextMenuPolicy
create(self, window: PyQt6.sip.voidptr = 0, initializeWindow: bool = True, destroyOldWindow: bool = True)
createWindowContainer(window: QWindow, parent: typing.Optional[QWidget] = None, flags: Qt.WindowType = Qt.WindowFlags()) QWidget
cursor(self) QCursor
customContextMenuRequested

customContextMenuRequested(self, pos: QPoint) [signal]

customEvent(self, a0: QEvent)
debug()
deleteLater(self)
depth(self) int
destroy(self, destroyWindow: bool = True, destroySubWindows: bool = True)
destroyed

destroyed(self, object: typing.Optional[QObject] = None) [signal]

devType(self) int
devicePixelRatio(self) float
devicePixelRatioF(self) float
devicePixelRatioFScale() float
disconnect(a0: QMetaObject.Connection) bool
disconnect(self) None
disconnectNotify(self, signal: QMetaMethod)
dragEnterEvent(self, a0: QDragEnterEvent)
dragLeaveEvent(self, a0: QDragLeaveEvent)
dragMoveEvent(self, a0: QDragMoveEvent)
dropEvent(self, a0: QDropEvent)
dumpObjectInfo(self)
dumpObjectTree(self)
dynamicPropertyNames(self) List[QByteArray]
effectiveWinId(self) PyQt6.sip.voidptr
ensurePolished(self)
enterEvent(self, event: QEnterEvent)
error(*args, **kwargs)

Shows a popup error message box. For parameter documentation see messagebox.MessageBox.

event(self, a0: QEvent) bool
eventFilter(self, a0: QObject, a1: QEvent) bool
find(a0: PyQt6.sip.voidptr) QWidget
findChild(self, type: type, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) QObject
findChild(self, types: Tuple, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) QObject
findChildren(self, type: type, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
findChildren(self, types: Tuple, name: str = '', options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
findChildren(self, type: type, re: QRegularExpression, options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
findChildren(self, types: Tuple, re: QRegularExpression, options: Qt.FindChildOption = Qt.FindChildrenRecursively) List[QObject]
focusInEvent(self, a0: QFocusEvent)
focusNextChild(self) bool
focusNextPrevChild(self, next: bool) bool
focusOutEvent(self, a0: QFocusEvent)
focusPolicy(self) Qt.FocusPolicy
focusPreviousChild(self) bool
focusProxy(self) QWidget
focusWidget(self) QWidget
font(self) QFont
fontInfo(self) QFontInfo
fontMetrics(self) QFontMetrics
foregroundRole(self) QPalette.ColorRole
forgetMessageBoxResponse(key)

Forgets any previously saved response that was stored via a save_response_key.

Parameters

key – the key for the response to forget

frameGeometry(self) QRect
frameSize(self) QSize
geometry(self) QRect
grab(self, rectangle: QRect = QRect(QPoint(0, 0), QSize(- 1, - 1))) QPixmap
grabGesture(self, type: Qt.GestureType, flags: Qt.GestureFlag = Qt.GestureFlags())
grabKeyboard(self)
grabMouse(self)
grabMouse(self, a0: Union[QCursor, Qt.CursorShape]) None
grabShortcut(self, key: Union[QKeySequence, QKeySequence.StandardKey, str, int], context: Qt.ShortcutContext = Qt.WindowShortcut) int
graphicsEffect(self) QGraphicsEffect
graphicsProxyWidget(self) QGraphicsProxyWidget
hasFocus(self) bool
hasHeightForWidth(self) bool
hasMouseTracking(self) bool
hasTabletTracking(self) bool
height(self) int
heightForWidth(self, a0: int) int
heightMM(self) int
hide(self)
hideEvent(self, a0: QHideEvent)
info(*args, **kwargs)

Shows a popup information message box. For parameter documentation see messagebox.MessageBox.

inherits(self, classname: str) bool
initFinalize()

Suggested subclass use: perform any remaining initialization.

initPainter(self, painter: QPainter)
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.

initSetOptions()

Suggested subclass use: set instance variables, excluding layouts and subwidgets. Also use here to (optionally) apply the legacy stylesheet spacing settings (PANEL-19101).

inputMethodEvent(self, a0: QInputMethodEvent)
inputMethodHints(self) Qt.InputMethodHint
inputMethodQuery(self, a0: Qt.InputMethodQuery) Any
insertAction(self, before: QAction, action: QAction)
insertActions(self, before: QAction, actions: Iterable[QAction])
installEventFilter(self, a0: QObject)
isActiveWindow(self) bool
isAncestorOf(self, child: QWidget) bool
isEnabled(self) bool
isEnabledTo(self, a0: QWidget) bool
isFullScreen(self) bool
isHidden(self) bool
isLeftToRight(self) bool
isMaximized(self) bool
isMinimized(self) bool
isModal(self) bool
isRightToLeft(self) bool
isSignalConnected(self, signal: QMetaMethod) bool
isVisible(self) bool
isVisibleTo(self, a0: QWidget) bool
isWidgetType(self) bool
isWindow(self) bool
isWindowModified(self) bool
isWindowType(self) bool
keyPressEvent(self, a0: QKeyEvent)
keyReleaseEvent(self, a0: QKeyEvent)
keyboardGrabber() QWidget
killTimer(self, id: int)
layout(self) QLayout
layoutDirection(self) Qt.LayoutDirection
leaveEvent(self, a0: QEvent)
locale(self) QLocale
logicalDpiX(self) int
logicalDpiY(self) int
lower(self)
mapFrom(self, a0: QWidget, a1: QPoint) QPoint
mapFrom(self, a0: QWidget, a1: QPointF) QPointF
mapFromGlobal(self, a0: QPoint) QPoint
mapFromGlobal(self, a0: QPointF) QPointF
mapFromParent(self, a0: QPoint) QPoint
mapFromParent(self, a0: QPointF) QPointF
mapTo(self, a0: QWidget, a1: QPoint) QPoint
mapTo(self, a0: QWidget, a1: QPointF) QPointF
mapToGlobal(self, a0: QPoint) QPoint
mapToGlobal(self, a0: QPointF) QPointF
mapToParent(self, a0: QPoint) QPoint
mapToParent(self, a0: QPointF) QPointF
mask(self) QRegion
maximumHeight(self) int
maximumSize(self) QSize
maximumWidth(self) int
metaObject(self) QMetaObject
metric(self, a0: QPaintDevice.PaintDeviceMetric) int
minimumHeight(self) int
minimumSize(self) QSize
minimumSizeHint(self) QSize
minimumWidth(self) int
mouseDoubleClickEvent(self, a0: QMouseEvent)
mouseGrabber() QWidget
mouseMoveEvent(self, a0: QMouseEvent)
mousePressEvent(self, a0: QMouseEvent)
mouseReleaseEvent(self, a0: QMouseEvent)
move(self, a0: QPoint)
move(self, ax: int, ay: int) None
moveEvent(self, a0: QMoveEvent)
moveToThread(self, thread: QThread)
nativeEvent(self, eventType: QByteArray, message: PyQt6.sip.voidptr) Tuple[bool, PyQt6.sip.voidptr]
nativeParentWidget(self) QWidget
nextInFocusChain(self) QWidget
normalGeometry(self) QRect
objectName(self) str
objectNameChanged

objectNameChanged(self, objectName: str) [signal]

overrideWindowFlags(self, type: Qt.WindowType)
overrideWindowState(self, state: Qt.WindowState)
paintEngine(self) QPaintEngine
paintEvent(self, a0: QPaintEvent)
paintingActive(self) bool
palette(self) QPalette
parent(self) QObject
parentWidget(self) QWidget
physicalDpiX(self) int
physicalDpiY(self) int
pos(self) QPoint
previousInFocusChain(self) QWidget
property(self, name: str) Any
pyqtConfigure(...)

Each keyword argument is either the name of a Qt property or a Qt signal. For properties the property is set to the given value which should be of an appropriate type. For signals the signal is connected to the given value which should be a callable.

question(*args, **kwargs)

Shows a popup question message box. For parameter documentation see messagebox.QuestionMessageBox.

raise_(self)
receivers(self, signal: PYQT_SIGNAL) int
rect(self) QRect
releaseKeyboard(self)
releaseMouse(self)
releaseShortcut(self, id: int)
removeAction(self, action: QAction)
removeEventFilter(self, a0: QObject)
render(self, target: QPaintDevice, targetOffset: QPoint = QPoint(), sourceRegion: QRegion = QRegion(), flags: QWidget.RenderFlag = QWidget.RenderFlags(QWidget.DrawWindowBackground | QWidget.DrawChildren))
render(self, painter: QPainter, targetOffset: QPoint = QPoint(), sourceRegion: QRegion = QRegion(), flags: QWidget.RenderFlag = QWidget.RenderFlags(QWidget.DrawWindowBackground | QWidget.DrawChildren)) None
repaint(self)
repaint(self, x: int, y: int, w: int, h: int) None
repaint(self, a0: QRect) None
repaint(self, a0: QRegion) None
reportValidation(results)

Present validation messages to the user. This is an implmentation of the ValidationMixin interface and does not need to be called directly.

This method assumes that error and question methods have been defined in the subclass, as in e.g. widget_mixins.MessageBoxMixin.

Parameters

results (validation.ValidationResults) – Set of validation results generated by validate

Returns

if True, there were no validation errors and the user decided to continue despite any warnings. If False, there was at least one validation error or the user decided to abort when faced with a warning.

resize(self, a0: QSize)
resize(self, w: int, h: int) None
resizeEvent(self, a0: QResizeEvent)
restoreGeometry(self, geometry: QByteArray) bool
run(blocking=False, modal=False, finished_callback=None)

Show this widget, while optionally blocking, making the widget window modal, and registering a callback for when the widget is closed again.

Parameters
  • blocking (bool) – if True, block progress in the calling method until the widget is closed again.

  • modal (bool) – if True, open this widget as window modal. Otherwise, open this widget as nonmodal.

  • finished_callback (a callable object) – an object that will be called with no arguments when this widget is closed.

runValidation(silent=False, validate_children=True, stop_on_fail=True)

Runs validation and reports the results (unless run silently).

Parameters
  • silent (bool) – run without any reporting (i.e. error messages to the user). This is useful if we want to programmatically test validity. Changes return value of this method from ValidationResults to a boolean.

  • validate_children (bool) – run validation on all child objects. See _validateChildren for documentation on what this entails.

  • stop_on_fail (bool) – stop validation when first failure is encountered

Returns

if silent is False, returns the validation results. If silent is True, returns a boolean generated by reportValidation.

Return type

ValidationResults or bool

saveGeometry(self) QByteArray
screen(self) QScreen
scroll(self, dx: int, dy: int)
scroll(self, dx: int, dy: int, a2: QRect) None
sender(self) QObject
senderSignalIndex(self) int
setAcceptDrops(self, on: bool)
setAccessibleDescription(self, description: str)
setAccessibleName(self, name: str)
setAttribute(self, attribute: Qt.WidgetAttribute, on: bool = True)
setAutoFillBackground(self, enabled: bool)
setBackgroundRole(self, a0: QPalette.ColorRole)
setBaseSize(self, basew: int, baseh: int)
setBaseSize(self, s: QSize) None
setContentsMargins(self, left: int, top: int, right: int, bottom: int)
setContentsMargins(self, margins: QMargins) None
setContextMenuPolicy(self, policy: Qt.ContextMenuPolicy)
setCursor(self, a0: Union[QCursor, Qt.CursorShape])
setDisabled(self, a0: bool)
setEnabled(self, a0: bool)
setFixedHeight(self, h: int)
setFixedSize(self, a0: QSize)
setFixedSize(self, w: int, h: int) None
setFixedWidth(self, w: int)
setFocus(self)
setFocus(self, reason: Qt.FocusReason) None
setFocusPolicy(self, policy: Qt.FocusPolicy)
setFocusProxy(self, a0: QWidget)
setFont(self, a0: QFont)
setForegroundRole(self, a0: QPalette.ColorRole)
setGeometry(self, a0: QRect)
setGeometry(self, ax: int, ay: int, aw: int, ah: int) None
setGraphicsEffect(self, effect: QGraphicsEffect)
setHidden(self, hidden: bool)
setInputMethodHints(self, hints: Qt.InputMethodHint)
setLayout(self, a0: QLayout)
setLayoutDirection(self, direction: Qt.LayoutDirection)
setLocale(self, locale: QLocale)
setMask(self, a0: QBitmap)
setMask(self, a0: QRegion) None
setMaximumHeight(self, maxh: int)
setMaximumSize(self, maxw: int, maxh: int)
setMaximumSize(self, s: QSize) None
setMaximumWidth(self, maxw: int)
setMinimumHeight(self, minh: int)
setMinimumSize(self, minw: int, minh: int)
setMinimumSize(self, s: QSize) None
setMinimumWidth(self, minw: int)
setMouseTracking(self, enable: bool)
setObjectName(self, name: str)
setPalette(self, a0: QPalette)
setParent(self, parent: QWidget)
setParent(self, parent: QWidget, f: Qt.WindowType) None
setProperty(self, name: str, value: Any) bool
setScreen(self, a0: QScreen)
setShortcutAutoRepeat(self, id: int, enabled: bool = True)
setShortcutEnabled(self, id: int, enabled: bool = True)
setSizeIncrement(self, w: int, h: int)
setSizeIncrement(self, s: QSize) None
setSizePolicy(self, a0: QSizePolicy)
setSizePolicy(self, hor: QSizePolicy.Policy, ver: QSizePolicy.Policy) None
setStatusTip(self, a0: str)
setStyle(self, a0: QStyle)
setStyleSheet(self, styleSheet: str)
setTabOrder(a0: QWidget, a1: QWidget)
setTabletTracking(self, enable: bool)
setToolTip(self, a0: str)
setToolTipDuration(self, msec: int)
setUpdatesEnabled(self, enable: bool)
setVisible(self, visible: bool)
setWhatsThis(self, a0: str)
setWidgetLayout()

Set the widget layout

setWindowFilePath(self, filePath: str)
setWindowFlag(self, a0: Qt.WindowType, on: bool = True)
setWindowFlags(self, type: Qt.WindowType)
setWindowFlagsForRun()
setWindowIcon(self, icon: QIcon)
setWindowIconText(self, a0: str)
setWindowModality(self, windowModality: Qt.WindowModality)
setWindowModified(self, a0: bool)
setWindowOpacity(self, level: float)
setWindowRole(self, a0: str)
setWindowState(self, state: Qt.WindowState)
setWindowTitle(self, a0: str)
sharedPainter(self) QPainter
show()

Override the show method to clear and previous value of self.accepted

showEvent(self, a0: QShowEvent)
showFullScreen(self)
showMaximized(self)
showMessageBox(*args, **kwargs)

Shows a popup message box. For parameter documentation see messagebox.MessageBox.

showMinimized(self)
showNormal(self)
signalsBlocked(self) bool
size(self) QSize
sizeHint(self) QSize
sizeIncrement(self) QSize
sizePolicy(self) QSizePolicy
stackUnder(self, a0: QWidget)
startTimer(self, interval: int, timerType: Qt.TimerType = Qt.CoarseTimer) int
staticMetaObject = <PyQt6.QtCore.QMetaObject object>
statusTip(self) str
style(self) QStyle
styleSheet(self) str
tabletEvent(self, a0: QTabletEvent)
targetValueChanged
testAttribute(self, attribute: Qt.WidgetAttribute) bool
thread(self) QThread
timerEvent(self, a0: QTimerEvent)
toolTip(self) str
toolTipDuration(self) int
tr(sourceText: str, disambiguation: typing.Optional[str] = None, n: int = - 1) str
ui_module = None
underMouse(self) bool
ungrabGesture(self, type: Qt.GestureType)
unsetCursor(self)
unsetLayoutDirection(self)
unsetLocale(self)
update(self)
update(self, a0: QRect) None
update(self, a0: QRegion) None
update(self, ax: int, ay: int, aw: int, ah: int) None
updateGeometry(self)
updateMicroFocus(self, query: Qt.InputMethodQuery = Qt.ImQueryAll)
updatesEnabled(self) bool
visibleRegion(self) QRegion
warning(*args, **kwargs)

Shows a popup warning message box. For parameter documentation see messagebox.MessageBox.

whatsThis(self) str
wheelEvent(self, a0: QWheelEvent)
width(self) int
widthMM(self) int
winId(self) PyQt6.sip.voidptr
window(self) QWidget
windowFilePath(self) str
windowFlags(self) Qt.WindowType
windowHandle(self) QWindow
windowIcon(self) QIcon
windowIconChanged

windowIconChanged(self, icon: QIcon) [signal]

windowIconText(self) str
windowIconTextChanged

windowIconTextChanged(self, iconText: str) [signal]

windowModality(self) Qt.WindowModality
windowOpacity(self) float
windowRole(self) str
windowState(self) Qt.WindowState
windowTitle(self) str
windowTitleChanged

windowTitleChanged(self, title: str) [signal]

windowType(self) Qt.WindowType
x(self) int
y(self) int
schrodinger.ui.qt.mapperwidgets.plptable.export_plp_to_csv(plp: schrodinger.models.parameters.ParamListParam, spec_class: schrodinger.ui.qt.mapperwidgets.plptable.TableSpec, output_file: str, role: int = ItemDataRole.DisplayRole, header_role: int = ItemDataRole.DisplayRole) None

Write the supplied PLP to CSV. Formatting is determined by the specified table spec.

Parameters
  • plp – The PLP to write

  • spec_class – The TableSpec class to determine CSV formatting

  • output_file – The name of the desired output file

  • role – The data role to export for the table contents

  • header_role – The data role to export for the table headers