Changelog¶
Changes made in the Schrödinger API between releases are documented below. We recommend skimming at least the API Changes, as your code will need to be modified if it uses these functions.
Suite 2014-2¶
New Features¶
- schrodinger.structutils.interactions.steric_clash.clash_iterator iterates over all pairs of atoms closer together than 0.4Å.
- Allow custom retry behavior for schrodinger.job.queue.JobDJ jobs. This is
done by subclassing schrodinger.job.queue.JobControlJob and overriding the
schrodinger.job.queue.JobControlJob.retryFailure method. Simple
job-specific behavior can be obtained by specifying
max_retries
inJobControlJob
construction.
Changes in Behavior¶
- Attempting to delete a core schrodinger.structure.Structure or schrodinger.structure._StructureAtom property results in a ValueError instead of an Exception.
Suite 2013-3¶
Changes in Behavior¶
The definition of hydrogen bonds in schrodinger.structutils.analyze.match_hbond has changed. It now matches the definition used in Maestro and elsewhere in the Schrödinger Suite.
New Features¶
New Modules¶
The schrodinger.utils.pymol module provides utilities for loading Maestro projects into PyMOL.
New Functions, Classes, or Methods¶
- schrodinger.structure.get_residues_by_connectivity returns a residue iterator that is ordered by N->C connectivity.
- The schrodinger.structutils.build.reorder_protein_atoms_by_sequence
function provides an easy way to reorder the atoms in a protein
Structure
by connectivity (as opposed to residue numbering). - The schrodinger.structutils.build.mutate function now supports non-standard and modified amino acids.
- The schrodinger.project.ProjectRow class now supports adding rows to and removing rows from groups (with the schrodinger.project.ProjectRow.moveToGroup and schrodinger.project.ProjectRow.ungroup methods, respectively).
Suite 2013-2¶
Deprecated Functions, Methods, and Modules¶
The schrodinger.utils.cmdline.SingleDashOptionParser class is now
deprecated. The Python standard library ArgumentParser class (added in Python
2.7) is capable of handling everything the SingleDashOptionParser
handled
and is the recommended argument parser for Python going forward.
Suite 2013-1¶
New Features¶
The Schrödinger-specific virtualenv is now supported on Windows and OS X.
Bug Fixes¶
- A bug in schrodinger.structutils.rmsd.calculate_in_place_rmsd when called
with
use_symmetry=True
was fixed. - A bug in opening prjzip (zipped Maestro project) files was fixed.
Suite 2012¶
For Suite 2012, Schrödinger Python was upgraded to Python 2.7.1.
One installation change is in the name of the directory for product-specific python library installations. This used to be product-v*/lib/$OS_CPU/python
, but the python
directory has been renamed to python_packages
.
API Changes¶
- The schrodinger.structure._Residue string representation no longer includes “residue()” and always includes the chain ID (i.e. “residue(A:306)” will now be “A:306”).
- The schrodinger.structure.PDBReader can now be used to read obsolete PDB
files, and the default is to allow this without complaint. To get the old
behavior (i.e. raise an exception on an obsolete file), create the
PDBReader
withallow_obsolete=False
. - Product-specific module imports have changed. Importing
from schrodinger_X
(where X is jaguar, psp, canvas) is no longer supported; insteadimport from schrodinger.application.X.packages
. - The arguments to schrodinger.structutils.minimize.Minimizer.getBondedEnergyComponents output arguments are no longer updated in-place. The values are instead returned as a tuple.
schrodinger.infra.mm.mmjob_selection
now returns a single string instead of a tuple of (return_code, string).schrodinger.infra.mm.mmct_atom_get_alt_xyz
now returns a tuple of 3 coordinates, instead of a instead of a 4-tuple of 3 coordinates and a return code. If the call fails, an exception is now raised.- The
schrodinger.application.vsw.stages.mopac
module was moved to schrodinger.pipeline.stages.semiemp and theMopacStage
class was renamed toSemiEmpStage
.
Bug Fixes¶
- schrodinger.structutils.structalign.StructAlign now re-orders the given
structures by sequence before calling
$SCHRODINGER/ska
. This ensures that structures with different atom ordering will be aligned properly.
New Features¶
New Modules¶
- The schrodinger.protein.helix module allows creation of α-helices from a residue sequence.
- The schrodinger.utils.preferences module provides for serialized storage of user preferences.
- The schrodinger.application.moldescriptors module allows calculation of molecular descriptors.
New Functions, Classes, or Methods¶
- The static method schrodinger.structure.Structure.read
facilitates reading a single structure from a file. This should replace
the
.mae
-specific read_ct function. - The static method, schrodinger.structure.StructureReader.fromString,
helps make the
StructureReader
constructor cleaner and should be preferred to usingStructureReader(input_string=value)
. - The schrodinger.structure.StructureReader.close method enables better control of open file handle cleanup.
- The new schrodinger.structutils.io.MultiFileReader allows for easy iteration over structures in multiple files, and the schrodinger.structutils.io.MultiFileWriter class provides for easy creation of structure files with a maximum number of structures per file.
- Added new and improved surface-accessible surface area methods - schrodinger.structutils.analyze.calculate_sasa and schrodinger.structutils.analyze.calculate_sasa_by_atom.
- The schrodinger.structutils.analyze.center_of_mass function calculates center of mass for a whole molecule or a subset of atoms.
- The schrodinger.structure.StructureWriter.setOption method allows the support of format-specific options and was implemented to provide new stereo support for writing SD files (see schrodinger.structure.SDWriter).
- Added new schrodinger.structutils.minimize.Minimizer methods to calculate various energies: getBondedEnergies, getInteractionEnergyComponents, getInteractionEnergy, getNonBondedEnergies, getSelfEnergy, and getSubsetEnergy.
- The schrodinger.structure._Residue.isConnectedToResidue method determines whether two protein residues are backbone connected.
- schrodinger.structure._StructureAtom now has methods to set and get the atom color by RGB: setColorRGB and getColorRGB treat color as a tuple of red, green and blue integer values in the range 0-255, while setColorRGBString and getColorRGBString treat color as a string of the form “#FFFFFF”.
- The schrodinger.graphics3d.box.Box class added the ability to set the line
width via the
line_width
property. - For job control, the schrodinger.job.jobcontrol._Backend.addRequiredOutputFile method allows addition of an output file that must be present.
Deprecated Functions, Methods, and Modules¶
- The
schrodinger.structutils.analyze.get_approximate_sasa
andschrodinger.structutils.analyze.get_approximate_atomic_sasa
functions have been deprecated, as the results are only rough approximations. Use the newcalculate_sasa
andcalculate_sasa_by_atom
functions noted above. - The
schrodinger.structure._StructureBond.style
attribute is now deprecated. Use the new _StructureBond.to_style and _StructureBond.from_style attributes instead.
Pending Deprecation¶
- The
pipeline
,pipeio
,pipeutils
,stage
, andinput
modules and thestages
package inschrodinger.application.vsw
have been moved to the schrodinger.pipeline package. Use of the modules from the new locations is preferred.
Suite 2011¶
For Suite 2011, Schrödinger Python has been upgraded to Python 2.7. See the
What’s New in Python 2.7 document on the
Python website for new features in this version. Note that
DeprecationWarning
messages have been disabled by default
in Python 2.7 because they are only of interest to developers. So, if you
are developing code, we recommend that you re-enable these warnings. You can
get the old (Python 2.6) behavior by setting the PYTHONWARNINGS
environment variable to default,ignore::PendingDeprecationWarning
.
Some of the third-party packages that we include with Schrödinger Python have been upgraded:
- Numpy has been upgraded to 1.4.1 from 1.3.0.
- SciPy has been upgraded to 0.8rc2 from 0.7.1.
- matplotlib has been upgraded to 1.0 from 0.99.1.
API Changes¶
The following features that were previously deprecated have been removed:
- The
schrodinger.ui.propertyselectorqt
andschrodinger.ui.widgettableqt
modules have been removed.
Bug Fixes¶
- The schrodinger.application.canvas.fingerprint.CanvasFingerprintGenerator class now correctly sets the default atom typing scheme based on the fingerprint type. This may result in slightly different fingerprints being generated for those scripts that were using CanvasFingerprintGenerator but not explicitly calling the getDefaultAtomTypingScheme method.
- The schrodinger.structutils.analyze.find_ligands function and schrodinger.structutils.analyze.AslLigandSearcher class now use the Maestro defaults for minimum (5) and maximum (130) atom count.
- The schrodinger.job.jobcontrol.Job.succeeded method now return False if the job died, even if the job was incorporated.
New Features¶
New Modules¶
- The schrodinger.graphics3d.polyhedron module adds new OpenGL polyhedron representations, including Cube, Tetrahedron, Octahedron, Dodecahedron, and Icosahedron.
- The schrodinger.structutils.interactions module adds functions to find pi-pi and pi-cation interactions.
- The schrodinger.trajectory.rmsd2d module adds the ability to calculate an RMSD matrix for Desmond trajectories.
- The schrodinger.application.desmond.meta module adds tools for Desmond metadynamics analysis.
- The schrodinger.application.desmond.gchart module adds tools for creating charts with the Google chart APIs.
New Functions, Classes, or Methods¶
- New hydrogen-bonding analysis functionality has been added to the schrodinger.structutils.analyze module. The get_num_hbonds function returns the number of hydrogen bonds in a Structure, and the hbond_iterator iterates over the hydrogen bonds.
- The schrodinger.structutils.minimize.Minimizer class adds methods for getting the total stretch, bending, torsion, and improper torsion energies, the Lennard-Jones and electrostatic energy terms, the bonded and non-bonded energy components. See the class API docs for details.
- The schrodinger.structutils.minimize.Minimizer class adds methods for angle and distance restraints, and frozen atoms.
- Two new maestro callbacks are available.
- The schrodinger.maestro.maestro.command_callback_add function registers a function to be called upon every successful completion of a Maestro command. The callback function will be called with a single argument that is the full string of the just completed command.
- The schrodinger.maestro.maestro.right_click_callback_add function registers a function to be called when the user clicks with the right mouse button in the Maestro Workspace. The callback function will be called with a single integer argument that corresponds to the atom index of the atom under the cursor, or -1 if no atom was under the cursor.
- A new parameter has been added to the schrodinger.maestro.maestro.redraw function to allow the caller to indicate what has been updated. See the function documentation for details.
- Atom objects accessed via the Structure class now have a read-only
property
pdbcode
. This returns the one-letter residue code for the residue that atom is associated with. If the residue is not a standard type then “X” is returned. - An
applyStyle
method was added to the schrodinger.structure substructure classes - _Molecule, _Residue, and _Chain, _Ring. - The new schrodinger.structutils.rmsd.ConformerRmsdX class superimposes conformers and can supply the transform after superimposing.
- New schrodinger.project.Project class functionality was added: selectAllRows, clearSelection, and invertSelection methods.
General Improvements¶
- Iterating over rings in a Structure object should be faster for large structures. The calculation of whether rings are aromatic is now only done once isAromatic() is called for a given ring; it was previously being done each time the iteration over all rings began.
- The running speed of the schrodinger.utils.sea module is improved.
Deprecated Functions, Methods, and Modules¶
- The
schrodinger.ui.qt.widgettable
,schrodinger.ui.structdata_table
andschrodinger.ui.multilist
modules have been deprecated and should be replaced with functionality fromschrodinger.ui.qt.table
. - The
ProjectRow.inWorkspace
method has been deprecated and should be replaced with the ProjectRow.in_workspace property. - The
schrodinger.utils.subproc
module is deprecated and should be replaced with the schrodinger.utils.subprocess module. The new module adds support for a wrapper that creates Popen instances.
Pending Deprecation¶
- The
atom_name
property of the schrodinger.structure._StructureAtom class is pending deprecation and should be replaced by the name property.
Suite 2010¶
These are the changes between Suite 2009 (v3.7) and Suite 2010 (v3.8).
API Changes¶
- The deprecated
schrodinger.application.glide.glideanalysis.Enrichment
class has been replaced by schrodinger.analysis.enrichment.Calculator. - In the schrodinger.structutils.minimize.Minimizer class, the
getEnergy
method now defaults to recalculating the energy, where it used to default to not recalculating the energy. A warning is issued if no explicit user preference is made.
Bug Fixes¶
Significant bug fixes include the following:
- The schrodinger.project module is now usable outside of Maestro, though some functionality is only available from within Maestro.
- The atomic_weight and total_weight properties of schrodinger.structure.Structure were incorrect for molecules with mmat generalized atom types (uncommon).
- A resource leak in schrodinger.structutils.build.mutate was plugged.
- Setting
Structure
bond angles greater greater than 180 degrees with the schrodinger.structure.Structure.adjust method was buggy and has been fixed.
New Features¶
- The schrodinger.structutils.analyze.evaluate_smarts and schrodinger.structutils.analyze.evaluate_multiple_smarts functions now have an option to restrict matches to unique sets of atoms.
- Sorting files with the schrodinger.structutils.sort.StructureFileSorter has been significantly sped up.
- Testing for ring aromaticity in the
Structure
ring iterator is much faster. - Reading of compressed SDF files has been significantly sped up.
- In-place RMSD calculations are much faster.
New Modules¶
- The schrodinger.job.queue module is a replacement for
schrodinger.job.jobdj
. It adds the ability to specify dependencies between jobs. - New structure utility modules were added to help organize the growing
number of functions:
- The schrodinger.structutils.analyze module has structure analysis functions.
- The schrodinger.structutils.rmsd module facilitates RMSD calculations.
- The schrodinger.utils.urllib module adds wrappers for handling URL requests with proxy servers.
- New product-specific modules were added:
- The schrodinger.application.desmond package added the
ana
module for analysis, theconfig
module to handle config files, theffiostructure
module to handle reading of structures with force field data, theremd
module for REMD utilities, and thepredict_remd_temp
module to predict temperature profiles for REMD simulations. - The schrodinger.application.glide.xpdes module modularizes access to Glide XP Descriptor (.xpdes) files.
- The schrodinger.application.medchem package was added for medicinal chemistry-oriented modules.
- The schrodinger.application.report2d module was added to generade 2D report files in HTML and PDF.
- The schrodinger.application.desmond package added the
New Functions, Classes, or Methods¶
- schrodinger.structutils.analyze.AslLigandSearcher is a new class to
identify putative ligand molecules within a
Structure
object, and the find_ligands function is a simpler interface to it. - The new schrodinger.structure.Structure.addBonds method allows you to add multiple bonds to a structure much faster.
- schrodinger.structutils.analyze.rotatable_bonds_iterator has been added to provide access to rotatable bonds.
- The new function schrodinger.structutils.build.reorder_atoms makes it
easy to reorder atoms in a given
Structure
. - An additional Diverse Enrichment Factor metric is available in schrodinger.analysis.enrichment.Calculator. This is a modified form of the standard metric where an EF value is penalized for screens that rank only congeneric ligands.
- A new MacroModel com file class — schrodinger.application.macromodel.utils.ComUtil_2010 — has been added with defaults that are closer to Maestro’s.
Deprecated Functions, Methods, and Modules¶
- The
schrodinger.job.jobdj
module has been deprecated and should be replaced with schrodinger.job.queue. - The
schrodinger.structutils.properties
module has been deprecated. All functions from theproperties
module have been moved to the schrodinger.structutils.analyze module. - Various keywords have been deprecated for use in the
schrodinger.application.glide.glide module.
- XCENT, YCENT, and ZCENT are obsolete.
- READBASE is obsolete; use GRIDFILE instead.
- The MM_FORCEFIELD keyword used in schrodinger.application.vsw.stages.qsite has been deprecated.
- The
schrodinger.ui.propertyselectorqt
andschrodinger.ui.widgettableqt
modules have been deprecated and should be replaced byschrodinger.ui.qt.propertyselector
andschrodinger.ui.qt.widgettable
.
Pending Deprecation¶
- The
schrodinger.structureutil
module is pending deprecation. All functions were moved into appropriate modules under the schrodinger.structutils package. - Use of the
projecttable
option in theschrodinger.ui.qt.appframework.AppFramework
class is pending deprecation and should be replaced with the ‘selected_entries’ option.
Suite 2009¶
These are the changes between Suite 2008 (v3.6) and Suite 2009 (v3.7).
API Changes¶
- When an empty (invalid) string is passed to schrodinger.structure.Structure.property, a KeyError is now raised instead of an IndexError.
- In schrodinger.protein.analysis, the summary for bond length and angles is now reported as an RMSD rather than a straight average.
- The
schrodinger.job.jobcontrol.get_host_list
function has been split into two different functions: get_command_line_host_list and get_backend_host_list. - In schrodinger.structutils.minimize, some Minimizer options can no longer be modified after creating an instance, as these changes had no effect.
- In schrodinger.maestro.maestro:
- The schrodinger.maestro.maestro.job_status_get function now returns the status of the last started or monitored job instead of the last added or selected job.
- The schrodinger.maestro.maestro.job_wait function now defaults to no job cleanup, waits for output files to transfer (i.e. ‘completed’ status instead of previous ‘exited’ status), and sleeps .02 sec between processing Maestro events and updating job status so that other processes can get a time slice. Also now returns a job_id.
- In order to support calculation of RMSD on an arbitrary structure, the
schrodinger.trajectory.analysis.RMSD class now takes a
Structure
instance instead of a frame number and atomselection instance. - The schrodinger.ui.rama.Rama class has been ported from BLT to matplotlib.
The following features that were previously deprecated have been removed:
- The schrodinger.job.jobcontrol.launch_job function no longer accepts
string arguments for commands - they must be lists of strings. This has
implications for other classes and functions that use
launch_job
, such as schrodinger.job.launcher.Launcher andschrodinger.job.jobdj.JobDJ
. - Additional deprecated features of schrodinger.job.jobcontrol have been
removed:
- The previously ignored ‘username’ argument of the
get_hostfile
,get_hosts
, andget_host
functions has been removed from the function signatures. - The
Backend
,get_host_dict
,get_host_list
, andparse_host_str
functions were removed.
- The previously ignored ‘username’ argument of the
- The schrodinger.structutils.minimize.Minimizer.minimize and getEnergy methods no longer accept parameter arguments.
- The
schrodinger.ui.appframework.Tk
andAppDialog
classes have been removed. - Numerous methods of schrodinger.ui.widgettable.WidgetTable were removed:
selectRow
,selectOnlyRow
,selectedRow
, andselectedRows
. - In schrodinger.maestro.maestro, the main_ct_get and main_ct_set functions were removed.
- The registration of callbacks via name
module.function_name
was disabled in the schrodinger.maestro.maestro module, e.g. in the picking_atom_start, picking_bond_start, and picking_loss_notify functions. - The entry_name property, initialize and terminate methods of schrodinger.structure.Structure.
Bug Fixes¶
Significant bug fixes include the following:
- schrodinger.protein.rotamers now ignores any chi angles for which there is no rotamer data, e.g. CA-CB-OG-HG in SER.
- schrodinger.maestro.maestro fixed a problem that prevented jobs from launching (source Workspace).
- schrodinger.project fixed a memory leak when iterating over every structure in the project table.
- The schrodinger.structure.StructureWriter class now stores the starting directory so that relative pathnames are based on the working directory at the time of instantiation.
New Features¶
New Modules¶
- schrodinger.analysis.enrichment is A module for calculating virtual screen enrichment terms.
- schrodinger.protein.getpdb is a module for downloading PDB files from the web.
- schrodinger.structutils.interactionfp Calculates structural interaction fingerprints.
- schrodinger.structutils.measure is a module containing functions that have to do with distance and angle measurement in structures.
- schrodinger.structutils.properties is a module for property-related utility functions for use with Structure objects.
- schrodinger.structutils.structalign is a module for performing protein structure alignment.
- schrodinger.ui.picking is a module containing classes to support controls for picking of atoms and bonds for scripts that are running inside of Maestro.
New Functions, Classes, or Methods¶
Structure¶
- New schrodinger.structure.Structure methods include addAtom and addAtoms.
- All extractStructure methods for substructure iterators in Structure now take a ‘copy_props’ keyword argument to allow copying properties from the original structure.
- The schrodinger.structure.Structure class should show improved performance in creation time and memory usage.
- schrodinger.structure.count_structures now works for compressed SD files and MOL2 format.
- Maestro structures can now be written to (via schrodinger.structure.Structure.writeToString) and read from (via the ‘input_string’ keyword argument to schrodinger.structure.MaestroReader) strings.
- Structures can now be read from strings in SD file format via the ‘input_string’ keyword argument to schrodinger.structure.SDReader.
- schrodinger.structure._StructureAtom classes now have an is_halogen method.
- Added the ability to store properties on bonds - see schrodinger.structure._StructureBond.property.
- Added the ability to iterate over all bonds in a structure with the schrodinger.structure.Structure.bond iterator.
- A new
delete
method was added to schrodinger.structure._StructureBond. - The schrodinger.structure.Structure.deleteAtoms method now optionally returns an atom renumbering map.
- The schrodinger.structure.SmilesCsvReader class was added to allow reading of Canvas SMILES csv files.
- The schrodinger.structure.MaestroReaderWithPositions class allows efficient reading of structures from a Maestro file in arbitrary order. On initialization, the user supplies an iterable giving file offsets for the structures in the order to be read.
- In schrodinger.structure.MaestroReader and schrodinger.structure.MaestroWriter, a ‘last_position’ attribute has been added that gives the file offset of the beginning of the structure just read. These can later be used with the new MaestroReaderWithPositions class to access the structures in non-sequential order.
- The
schrodinger.structureutil.calculate_in_place_rmsd
function was added to calculate the in-place RMSD of two structures. - The
schrodinger.structureutil.superimpose
function now takes a ‘move_which’ keyword argument to determine additional atoms to be moved in the superimpose step.
General¶
- The class schrodinger.utils.timers.IncrementalTimer adds a timer for tracking incremental wall and CPU time, and, optionally, time per item; for example, time per structure processed.
- In schrodinger.project,
- Calling schrodinger.project.Project.freeCachedEntries frees up all cached entries, if any. This can be called to reduce memory use.
- By default we do automatic cache freeing for ‘included_rows’, ‘selected_rows’ and ‘all_rows’ iterators.
- The schrodinger.structutils.build.mutate function mutates a residue in the specified structure.
- The schrodinger.structutils.transform module gained new functions:
get_vector_magnitude
,get_normalized_vector
,get_angle_between_vectors
, andget_alignment_matrix
. Thetransform_atom_coordinates
function was modified so that its behavior matches the doc string. - The new schrodinger.utils.cmdline.add_jobcontrol_options function makes it easy to add standard Job Contral options to the option parser.
- The schrodinger.project.Project class added the following methods:
importStructure
to add a new entry from aStructure
object.importStructureFile
to add all of the structures in a file.getRow
to retrieve a row by entry ID.
Maestro¶
The schrodinger.maestro.maestro module added a number of features.
workspace_bounding_box_function_add
registers function to be called when Maestro does a ‘Fit to Screen’, andworkspace_bounding_box_function_remove
removes the callback.set_workspace_bounding_box
registers a function to be called with the bounding box parameters every time the ‘Fit to Screen’ callback is triggered. This is useful when you have 3D python objects.project_update_callback_add
adds a callback to invoke when the Project Table gets updated, andproject_update_callback_remove
removes the callback.get_included_entry
returns a singleStructure
with properties for the structures included in the Workspace.get_included_entries
returns a list of structure objects with properties for included entries.create_entry_from_workspace
creates a Project Table entry for the Workspace structure.get_directory
returns directory names for Maestro preferences, temporary data, temporary projects, or help. It can also be used to get a specific Maestro preference file.- Various functions for determining Workspace view settings:
-
workspace_get_coordinate_center
-workspace_get_translation
-workspace_get_viewing_volume
-workspace_get_view_matrix
-workspace_get_view_matrix_inverse
-workspace_get_view_matrix_inverse_no_center
-reset_workspace_transformations
get_command_items
gets the names of the items currently associated with the given command. For example if the command is ‘set’ then the nmaes of all the currently defined sets will be returned.get_current_command_item
gets the name of the currently selected item associated with the given command.set_prompt_mode_for_next_export
sets file overwriting behavior for the next Maestro command. If set to 1, a prompt will be displayed before overwriting any files. If set to 0, files will be overwritten.
Deprecated Functions, Methods, and Modules¶
- The
schrodinger.application.glide.glideanalysis.Enrichment
class is deprecated and should be replaced by schrodinger.analysis.enrichment.Calculator. - Use of
schrodinger.maestro.maestro.color
(orschrodinger.maestro.color
) should be replaced with schrodinger.structutils.color. - Iteration over selected entries in schrodinger.project.Project via
sel_entry in pt
is deprecated. Please use the schrodinger.project.Project.selected_rows iterator. - Use of the
schrodinger.structureutil.measure
function should be replaced with measurement-specific functions in schrodinger.structutils.measure.
Suite 2008¶
These are the changes between Suite 2007 (v3.5) and Suite 2008 (v3.6).
API Changes¶
General¶
schrodinger.infra.mm.mmct_ct_compare
andschrodinger.infra.mm.mmct_ct_compare_connect
no longer raise exceptions when the return value is not MMCT_SAME. Instead, all values are returned to the caller directly.schrodinger.structureutil.evaluate_smarts
andschrodinger.structureutil.evaluate_multiple_smarts
now raise a ValueError instead of a RuntimeError if the specified SMARTS pattern is invalid.schrodinger.structureutil.generate_smiles
now uses the canvaslibs implementation instead of the mmsmiles implementation by default. Options to generate unique SMILES and include stereochemical information have been added.- schrodinger.maestro.maestro.workspace_get now returns a copy of the Workspace structure. The workspace_set() function must be called to return any changes in the retrieved structure to the Workspace.
- Functions that are to be registered as callbacks in schrodinger.maestro.maestro (for example for picking, workspace change, drawing, periodic tasks) may now be passed as callable objects. Passing in function names as strings is now deprecated.
- Accessing Boolean properties from schrodinger.project.Project now returns True or False rather than 1 or 0.
- schrodinger.structure.count_structures will now raise an exception if an attempt is made to count structures in a mol2 format file or if the format of the file can’t be otherwise determined.
- Setting the atomic number for an atom in schrodinger.structure.Structure will now cause the MacroModel type to also be updated. Structure.retype() will still need to be called but will correctly assign a new atom type whereas previously it would fail.
Job Control¶
- The ‘username’ argument of the
get_hostfile
,get_hosts
, andget_host
functions of schrodinger.job.jobcontrol is now ignored and a warning is printed. - The ‘save’ argument to schrodinger.job.launcher.Launcher now defaults to None. It should no longer be set explicitly so jlaunch can pick up the SCHRODINGER_SAVE_JOBDIR setting from the top-level script.
- The schrodinger.job.launcher.Launcher.getCommandArgs method is a replacement for the getCommand method and returns a list instead of a string.
- When using
schrodinger.job.jobdj.JobDJ
, if queue host is used and the number of CPUs is not specified, all subjobs are submitted at once to let the queue distribute them. - A RuntimeError is now raised if schrodinger.job.jobcontrol.Job.ExitStatus is accessed while Status not ‘completed’ or ‘incorporated’.
UI¶
- A Dialog box now pops up for invalid schrodinger.ui.widget.pmwwidget.EntryField data instead of having the field turn red, and the EntryField reverts to the previous value.
- schrodinger.ui.widget.pmwwidget.schroPmwWrapper and schrodinger.ui.widget.tkinterwidget.schroWidget classes require ‘type’ and ‘class’ initializer options (instead of requiring modification of private variables).
- schrodinger.ui.widget.tkinterwidget.Tk.mainloop now automatically registers with Maestro if it is running in Maestro.
- There are ‘localdriver’ and ‘remotedriver’ options for schrodinger.ui.appframework.StartDialog that replace ‘subhost’. There is a corresponding ‘localhost’ attribute of AppFramework.jobparam that replaces ‘subhost’.
- The ‘inputstrucfile’ attribute of
schrodinger.ui.appframework.AppFramework.jobparam
is now a relative path when a local file is created. - The ‘clear_pick_toggles’ function has been renamed to schrodinger.ui.widget.tkinterwidget.clear_active_pick_toggle.
- The input mechanism for schrodinger.application.glide.glide has changed. Simplified Glide input files are now based on ConfigObj and keywords are linked one-to-one to MMIM keywords. This means that all MMIM keywords are now supported (even the ones that are not documented in glide.py).
Application Specific¶
- The default extension for SIF files in schrodinger.application.glide.glide is now ‘.in’.
- schrodinger.application.macromodel.utils.ComUtil reordered AUOP/AUTO opcodes within the built-in methods. The subtle difference now treats the first member in a serial search correctly.
- schrodinger.application.macromodel.utils.ComUtil added support for new opcodes: CGO3, CGO4, CGO5, CGO6.
- schrodinger.application.macromodel.utils.ComUtil.getLaunchCommand now returns a list of arguments, which is preferred for schrodinger.job.jobcontrol.launch_job.
- The runComFile method of schrodinger.application.macromodel.utils.ComUtil, which was deprecated in the last release, has been removed.
New Features¶
New Modules¶
General¶
- schrodinger.structutils.build is a module for attaching standard fragments to structures and for connecting two structures.
- schrodinger.structutils.minimize is a module for performing energy minimization on a structure.
- schrodinger.structutils.smiles is module for generating SMILES and unique SMILES strings from structure objects.
- schrodinger.structutils.smilesfilter is a module for filtering structure files based on unique SMILES strings.
- schrodinger.structutils.sort is a module for sorting and merging structure files by property values.
- schrodinger.structutils.transform is a module for structure coordinate transformation.
Graphics¶
- schrodinger.graphics3d.box allows creation and drawing of boxes.
- schrodinger.graphics3d.common contains functions commonly used by the graphics3d modules.
- schrodinger.graphics3d.polygon allows creation and drawing of polygons.
- schrodinger.graphics3d.quadrilateral alows creation and drawing of quadrilaterals.
Application Specific¶
- schrodinger.application.desmond is a package for Desmond specific code, including GUI widgets, the multisim workflow driver, and code to parse and write Desmond .cfg files for energy group calculations.
- schrodinger.application.inputconfig is a Schrödinger-wrapped version of the ConfigObj module. This module can be used to read and write simplified input file (SIF) formats.
- schrodinger.application.prime.input is a module for reading and writing Prime input files.
- schrodinger.application.qsite.input is a module for reading and writing QSite input files.
Extended Behavior for Existing Functions and Methods¶
- Primitive classes in the schrodinger.graphics3d package (Arrow, etc.) can now accept a color string name or a schrodinger.infra.color.Color instance in addition to rgb values.
- schrodinger.job.app.App applications now support the -WAIT command-line argument.
- The new ‘procs’ argument of the
schrodinger.job.jobdj.JobDJ.addJob
method allows subjobs to use multiple processors. - schrodinger.ui.widgettable.WidgetTable supports OptionMenu, EntryField, and Canvas cell/column types.
- Column resizing can be turned off via the ‘resizablecolums’ option to schrodinger.ui.widgettable.WidgetTable.
New Functions, Classes, or Methods¶
General¶
- schrodinger.structure.StructureWriter is a new class that can be used to more efficiently write large numbers of structures to a file.
- schrodinger.structure.StructureReader supports a new file format - “maestro_text”, which is only for Maestro files and effectively reads the properties from the file without structural information. A textual representation of the structure is however available and can be written to an output file allowing sorting and filtering type operations. Use of the “maestro_text” format is five to ten times faster than normal file reading.
- schrodinger.structure.SmilesReader and schrodinger.structure.SmilesWriter provide for reading and writing structures in SMILES format.
- schrodinger.structure.Structure.getXYZ and
setXYZ
are provided to access all atom coordinates as a NumPy array. - schrodinger.structure._Residue objects now have a ‘isStandardResidue’ method to test if they are standard residue types.
- schrodinger.structure._Molecule and
schrodinger.structure._Chain objects can now be deleted from
Structure instances, e.g.
del st.molecule[2]
ordel st.chain['A']
. schrodinger.structureutil.generate_asl
is a function that takes a structure and a list of atoms and generates the most compact possible ASL expression for them.- schrodinger.maestro.maestro.selected_atoms_get_asl returns the atoms selected in the Workspace as an ASL expression.
- schrodinger.maestro.maestro.workspace_changed_function_add allows the registration of a function to be called by Maestro each time the Workspace is changed. The callback function is called with a flag to indicate the nature of the change. There is a companion ‘workspace_changed_function_remove’ to remove the callback.
- schrodinger.project.Project added a new iterator that can be used to iterate over all the groups in the project. It’s possible to get a list of the component entries from each group.
- The schrodinger.project.ProjectRow class now has a ‘read_only’ property that allows an entry to be flagged as unable to be deleted by the user.
- The schrodinger.project.ProjectRow class now has an ‘includeOnly’ method to allow a quick method for including a single entry in the Workspace.
schrodinger.structureutil
now has functions to get a list of available color schemes and to apply them - available_color_schemes(), get_color_schemes() and apply_color_schemes(). These are available only if running under Maestro.- schrodinger.infra.color added new classes to define a Maestro color scheme (‘ColorScheme’) and make it easier to refer to colors by name or RGB (‘Color’).
- schrodinger.utils.fileutils added the ‘splitext’ function that recognizes .mae.gz and other combined extensions as a single extension.
- schrodinger.utils.fileutils added the get_structure_file_format function, which provides a standard identification of the various filetypes our readers can handle.
- The schrodinger.utils.cmdline.main_wrapper function provides for consistent handling of signals for python processes.
Job Control¶
- schrodinger.job.jobcontrol.Job has new methods: ‘isQueued’, ‘setStatusIncorporated’, ‘sendMessage’, and ‘kill’.
- schrodinger.job.jobcontrol._Backend has new methods: ‘addMonitorFile’, ‘setStructureMonitorFile’, ‘addMessageName’, and ‘nextMessage’.
UI¶
- The generic graphics container schrodinger.graphics3d.common.Group was added. Each primitive in schrodinger.graphics3d used to require its own corresponding Group instance (e.g. ArrowGroup for Arrow objects).
- schrodinger.ui.appframework.AppFramework.interior returns the main Frame in which widgets are placed.
- The schrodinger.ui.appframework.AppFramework.askOverwrite method displays a pop-up dialog when overwriting existing files.
- schrodinger.ui.appframework.WriteDialog has new ‘warning’ and ‘activate’ methods.
- schrodinger.ui.appframework.JobInputFrame has new constructor keyword arguments: ‘default_source’, ‘writefile’, ‘label_text’, and ‘file_text’ and a new method ‘writeSelectedEntries’.
- schrodinger.ui.ligfilter.LigfilterFrame supports boolean (AND/OR) criteria, adds ‘Exists’ operator for properties, and adds “is True” and “is False” operators for boolean properties.
- New schrodinger.ui.propertyselector.PropertySelectorMenu class is an alternative menu selection mechanism to the ProertySelector’s listbox.
- schrodinger.ui.rama.Rama has a new method ‘clearGraph’.
- schrodinger.ui.widgettable has new methods: ‘_Row.getCell’, ‘_Column.getCell’, ‘_Cell.select’, and ‘_Cell.selectOnly’.
- Keywords for custom configuration of table widgets can be passed to the underlying widgets in a column via keyword args to schrodinger.ui.widgettable.WidgetTable.addColumn.
- Added a schrodinger.ui.widgettable.WidgetTable.cell iterator for easily iterating over all cells in the table.
- Added support for selecting schrodinger.ui.widgettable.WidgetTable cells (instead of rows).
- Added schrodinger.ui.widget.tkinterwidget.Pmw_initialise function.
- schrodinger.ui.widget.tkinterwidget has new ‘askopenfilename’, ‘asksaveasfilename’, ‘askopenfilenames’, and ‘askdirectory’ functions.
- schrodinger.ui.widget.tkinterwidget.PickToggle has new ‘on’ and ‘stop’ methods.
Application Specific¶
- schrodinger.application.glide.glide has added support for all keywords supported by the mmim library, constraint features, and multiple constraint groups, and can be used read and write SIF Glide files.
- schrodinger.application.jaguar.output added parsing of additional properties: fukui indices, bond midpoint charges, the use of analytic gradients and frequencies, and whether esp fitting is done.
Deprecated Functions, Methods, and Modules¶
General¶
- The schrodinger.infra.assignbondorders module has been moved to schrodinger.structutils.assignbondorders. Imports from the old location are supported, but deprecated.
Job Control¶
- Calling schrodinger.job.jobcontrol.launch_job with a string command is deprecated. Use a list of arguments instead.
- Use of
schrodinger.job.jobcontrol.get_host_dict
should be replaced byschrodinger.job.jobcontrol.get_host_list
. - Use of
schrodinger.job.jobcontrol.parse_host_str
should be replaced by schrodinger.job.jobcontrol.host_str_to_list. - Direct construction of a
schrodinger.job.jobcontrol.Backend
is deprecated. Use the schrodinger.job.jobcontrol.get_backend function to get a Backend object. - The ‘exit_on_failure’ argument to
schrodinger.job.jobdj.JobDJ
is deprecated. Use the new argument ‘max_failures’ instead. There is a module variable NO_LIMIT that can be used to prevent exiting upon subjob failures. - Passing a string command to
schrodinger.job.jobdj.JobDJ.addJob
should be replaced by passing in a list of arguments.
UI¶
- Use of
schrodinger.ui.appframework.Tk
is deprecated and should be replaced by schrodinger.ui.widget.Tk. - Use of the schrodinger.ui.appframework.AppDialog class is deprecated and should be replaced by schrodinger.ui.widget.pmwwidget.Dialog.
- Direct use of schrodinger.ui.widget.tkinterwidget.PickToggle is deprecated. It is now the base class of new classes PickAtomToggle and PickBondToggle, which should be used instead.
Application Specific¶
- The schrodinger.application.prime.primefix module is deprecated as it should not be needed in Suite 2008.
- The schrodinger.application.glide.glide module has new names for
the following keywords. The old names are still supported, but
deprecated.
- RECEP_FILE replaces MODEL_FILE
- GRIDFILE replaces GRIDBASE, READZIP, and WRITEZIP
- GRID_CENTER (array of floats) replaces XCENT/YCENT/ZCENT
- RECVSCALE was renamed to RECEP_VSCALE
- RECCUT was renamed to RECEP_CCUT
- LIGAND_CONFS renamed to DOCKING_METHOD
- OUTTYPE renamed to POSE_OUTTYPE
- LVDW renamed to LIG_VSCALE
- LIGCCUT renamed to LIG_CCUT
Suite 2007¶
These are the changes between Suite 2006 (v3.0) and Suite 2007 (v3.5).
API Changes¶
Structure Module¶
In Suite 2006 an attempt to request an atom property that did not exist for a given atom would return None. In Suite 2007 this has been changed to raise a KeyError exception.
The structure.atom[iatom].entry_id field now returns a Maestro entryID. This is an integer that is guaranteed to be unique for each entry in a project. The now deprecated structure.atom[iatom].entry_name field also now returns the entry ID.
Deprecated Modules¶
Modules that gave deprecation warnings in Suite 2006 have been moved to new locations. The following is a list of modules that have been moved.
schrodinger.mmlist
was moved toschrodinger.infra.mmlist
schrodinger.jobcontrol
was moved toschrodinger.job.jobcontrol
schrodinger.mm
was moved toschrodinger.infra.mm
schrodinger.mmbitset
was moved toschrodinger.infra.mmbitset
schrodinger.mmobject
was moved toschrodinger.infra.mmobject
The deprecated MacroModel GUI modules have been removed from schrodinger.application.macromodel.tools. Note there are still MacroModel GUI modules in schrodinger.ui.macromodel.
Maestro Command Language Changes¶
Users with scripts that issue Maestro commands should be aware than in Maestro 8.0 the entry name is no longer necessarily unique and that some Maestro commands that previously took entry names as operands now require entry IDs (the latter being a unique integer for each entry).
New Features¶
Maestro Module¶
New functions workspace_draw_function_add
and
workspace_draw_function_remove
can be used to register a function that
is called each time the Maestro workspace is drawn.
New functions workspace_changed_function_add
and
workspace_changed_function_remove
can be used to register a function
that is called each time the contents of the Maestro workspace are
modified. This will most commonly be used in conjunction with the draw
callback functions described above.
picking_bond_start
is a new function that can be used to register a
function called whenever the user picks bonds in the workspace.
get_command_option
is a new function, which given the name of a
Maestro command an the name of an option to that command will return the
current value associated with that option.
Structure Utilities¶
In the schrodinger.structureutil
module, the following additions were made:
measure
- allows measurements of distance, angle, dihedral and angles between planes for atoms that are in differentStructure
objects.generate_crystal_mates
returns a set of crystal mate structures when given a model and a unit cell/space group information.get_num_rotatable_bonds
returns the number of bonds in a structure that should be considered capable of free rotation.get_chiral_atoms
returns a list of atom numbers corresponding to those atoms in a structure that are chiral.- The
ConformerRmsd
class is used for performing superpositions and calculating RMSDs for conformers.
Structure Module¶
There are now iterators to traverse molecules, chains, residues and rings within a structure. See chapter 5 of the Python scripting tutorial for examples.
There is a new atom property - st.atom[iatom].chirality that can be used to determine if an atom is chiral returns S, R or None.
Structure
objects now have a copy() method to allow them to be
duplicated.
StructureReader
can now be used to read files in mol2 format and gzip
compressed Maestro format files (*.maegz
or *.mae.gz
).
MacroModel¶
There is a new SbcUtil class in schrodinger.application.macromodel.utils that supports ASL1 and ASL2 .sbc syntax
Protein Package¶
A new package that supports adding caps to, adding (and positioning) hydrogens and analyzing protein structures for structural defects.
UI¶
schrodinger.graphics3d
is a new package with support for drawing 3D graphics in the Maestro workspace.schrodinger.ui.widgettable
is a new module that supports arrangement of UI controls in a scrollable table.schrodinger.ui.propertyselector
contains standard GUI components for presenting and selecting property names.schrodinger.ui.rama
is a new module to display a Ramachandran plot for a protein.
General¶
schrodinger.utils
is a new package containing functions to perform logging
of scripts and standardized processing of command line options.