(1) you read in all the docking logfiles (*.dlg) you are interested in clustering. This can be done one by one or using the command which reads all of the dlg in in a directory. The key is to read them all in as one Docking.
The idea of a Docking is that all results which involve the same molecules and the same origin really constitute one Docking.
(2) you can cluster the docked results by choosing 'Analyze->Conformations->Make Clusterings' which opens a gui allowing you to enter a (space separated) list of tolerances (eg '0.5 2.0 4.0') and an optional filename.
A reclustering is done at each of the listed rms tolerances. (The smaller the tolerance, the more time the clustering takes.) If a filename is specified, adt writes the clustering results which can be read in later (the convention is evolving to name these '*.clust' files). You must save the corresponding conformations if you want to do this:
'Analyze->Conformations->Write Result File' which prompts you to select the ligand name and to specify a filename.The written format is similar to the Entropia result format and the conformations are written in a sorted order (from lowest energy up).
(3) You can visualize the clustered conformations 'Analyze->Conformations->Show Clustering States' which first prompts you to select the ligand (if more than one from Docked results is present) and which clusterer (if more than one is present) and finally which RMS Tolerance. This sequence opens an interactive bar chart which lets the user pick a cluster to examine.
Picking a cluster opens the ligand's StatesPlayerWidget (spw) which lets you play the sequence of the current cluster (forward or backward), pause, stop (which resets to conformation 0), build the current conformation, and display the rms between two conformations. At first, the displayed rms uses the initial state 0) conformation as the reference but a button 'Make rms refcoords' lets you reset the reference to the current conformation. (thus you can see the rms within a cluster or between cluster members etc etc)...
[FYI: the ligand's spw also is used to display all the states and the energy histogram binning of states. It has a current sequenceList and a current idList which are changed via the Analyze->Conformations menu. For example, if after examining the clustering results for a while you want to look at all the states, you would use 'Analyze->Conformations->Show Conformations'. Then the sequence displayed by the ligand's spw would be the unordered list of conformations as they were read in from the docking log(s). Clicking any bar in a clustering histogram graph makes that cluster's states the current sequenceList. The same is true for an energy histogram graph.]
(4) you can now cluster on binding_energy or docking_energy: When you invoke 'Make Clusterings', you choose which one to use. When you invoke 'Show Clusterings', if the docking has more than one type of clustering available, you choose which clustering you want to see.
Please note if only 1 rms is available, you won't be asked which one to show...
The written clust files have an energy_used flag in the first line. Please note, if you write a clust file, you must write the corresponding result file (in which the conformations are sorted on the appropriate energy). adt will ask which cluster to write if there are more than available.
(5) There is now a command in adt which makes allows you to make clusterings on subsets of ligand molecule atoms: (using either type of energy). This command uses sets composed of subsets of the ligand which have been named and saved previously(via Select->Save Set). It checks that all atoms in a saved set belong to the docking's ligand molecule. It appears to calculate the rms for the subset correctly.
adt can now detect aromatic cycles fused to non-aromatic cycles Using PyBabel's RingFinder, adt checks each separate ring in a structure of fused rings to see if each ring is aromatic or not...
new one-step process includes:
- assigning appropriate charges if needed
- merging non-polar hydrogens
- merging lone pairs
- detecting aromatic carbons in cycles
- adt determines whether or not the ligand molecule is a peptide by comparing the types of residues in the ligand with the standard 20 amino acids.
- If the ligand lacks charges OR if each charge is equal to 0., the program automatically adds Kollman charges if it is a peptide or gasteiger if it is not.
- If the ligand has any lone-pairs, they are always automatically merged.
- If the ligand has any non-polar hydrogens, they are automatically merged unless the userpreference 'autotors_automergeNPHS' is set to 0. (It is 1 by default).
- adt automatically converts names of planar-cyclic carbons to 'A..' unless the user sets the userpreference 'autotors_autoCtoA' to 0. (It is 1 by default).
- If the ligand is a peptide, aromatic carbons are detected using a look-up dictionary unless the userpreference 'autotors_useProteinAromaticList' is set to 0. (It is 1 by default). If the user chooses to not use the ProteinAromaticList, carbons in planar cycles are detected by calculating the angles between normals to adjacent atoms in the cycle. (This is a slower process but might be important if for some reason the user knows the ligand has a very distorted cycle (for example))
- adt changes the order of the atoms as little as possible so it no longer writes CONECT records.
- Defining a Rigid Root has been modified so that the user can specify one root per chain.->
- adt never adds polar hydrogens. If you want to add polar hydrogens, you can use the command found via 'Edit'->'Hydrogens'->'Add'
We have added solvation parameters for nucleic acids. We have also added Kollman charges for nucleic acids to Pmv/qkollua.py. The charges were taken from the same amber data file as the Kollman charges for amino acids (uni.in). Like the amino acid charges, they assume that polar hydrogens are present. If all atoms are present, the sum per residue is -1.0. I have tried to include naming variants but may have missed some.
- 'Define Rigid Root'-> 'Add a chain to root'
'Remove a chain from root'
allow you to specify chains in a ligand which will be completely rigid.
- 'Rotatable Bonds' -> 'Set Number of Active Torsions' allows you to interactively set the number of rotatable bonds. It requires that a root be specified first. The user chooses whether to toggle torsions moving the most atoms or those moving the fewest atoms.
- A new button added to 'Rotatable Bonds'->'Define Rotatable Bonds' allows you to inactivate all active bonds (reversibly).
You should be aware that the recent update has changed the order in which bonds are built.
What that means for an adt user is that ligand files that were formatted previously will differ from ligand files formatted with the new release. That is, selecting the same root and allowing exactly the same torsions will produce a file with atoms in a different order than the order found in one produced with the old version.
This will NOT affect you unless you try to cluster results based on ligands affected in this way OR if you are using a particular refrms file which was constructed with the old ordering.
A second potential problem is that the new algorithm for building bonds will construct disulfide bonds. This can cause a problem in formatting peptide ligands. It can be prevented as described at the end of 6.
- StandardNodes moved to NetworkEditor (see Compatibility Information)
- added toolbar buttons (icons) with balloon help
- added support to load nodes in different libraries
- nodes are now displayed sorted by node name
- changed showLibrary so that the user can now type the node name in the node library window and the canvas will scroll to the corresponding node
- added regression tests
- fixed some problems in adding nodes to library interactively
- multi-threaded execution on Silicon Graphics platforms can lead to core dump. Therefore, the user can choose to run single-threaded execution which works fine on SGI.
- moving StandardNodes to NetworkEditor breaks all existing networks Solution: edit network save-file and change the line 'from ViPEr.StandardNodes import ...'
'from NetworkEditor.StandardNodes import ...'
I- What is new in PMV version 1.0 from a user point of view:
Interactive Commands (ICOMS):II- What is new in PMV version 1.0 from a developer point of view:
- Any command for which the only required argument is a bunch of atoms, residues, chains or molecules can be bound to a picking event.
- The ICOM level (Atom, Residue, Chain, Molecule) defines the level to which the selection gets expanded before the command is carried out.
- A new command call setICOM can be used to assign interactive commands to picking events.
- Apply this command to multiple subsets of atoms.This version does not allow binding of multiple commands to a picking event.
Support for un-doing commands has been added to the Command base class and most of the basic commands have been made un-doable. PMV maintains a stack of undo commands. The undo command is bound to the CTRL-Z keyboard event. This will undo the last command on the stack.
The name of the next command that could be un-done appears under the File menu. "Undo xxxxx".
A user-preference called "Number Of Undo" enable to set the maximum depth of this stack.
A user preference let's you specify how many undo commands should be stored. Setting this value to -1 specifies unlimited undo, 0 let's you save the price of setting up the undo. The default value of this parameter is 100.
When a molecule is deleted, The delete commands warns you that ths action would reset the undo command stack. You can choose the continue, cancel ot simply keep the molecule in the viewer but hide it.
It is now possible to customize the GUI of PMV:
- 'change fonts': modify the font used.
- 'show/hide gui sections': show/hive parts of the GUI.
- 'bind action to mouse button...':allow the user to bind different action to different button. This command is very useful when having only a 2 buttons mouse.
- bind commands to key combinations
This commmand defines commands to be applied to molecule when loaded. Only the commands loaded so far in the application will be exposed.
WARNING : The order in which the commands are selected is the order in which the commands will be applied to the molecule.
adding these 2 lines to your .pmvrc will display any molecule you load as lines.It will restaure the behavior of the previous version of PMV.
self.setOnAddObjectCommands("buildBondsByDistance", 1, log = 0)
self.setOnAddObjectCommands("displayLines", 1, log = 0)
- The __getattr__ method of the TreeNodeSet class has been modified to handle node attributes that are dictionaries.
- The charge attribute of instances of Atom is now a dictionary
- added support for orthographic projection
- added support for overall geometry transparency. All blending function both for source and destination can be selected. Depthbuffer checking can be enabled and polygons can be z-sorted on a per-object basis
- rewrote the DisplayFunction for Cylinder geometries
- worked over the trackball object to make is possible to bind actions to different events
- made redrawing the scene an asynchronous process
- add support for GL_SCISSORS, enabling to clip any geometry using a user modifiable rectangular shape.
- drag selection mechanism has been added. When the mouse is dragged during a picking operation, a box is drawn. After a user setable time without a motion the box turns solid. When the picking button is released, all vertices within the box are selected.
- picking has been modified to use an differnet display list (based only on vertices by default). This renders the makeVerticesPickable option obsolete.
- picking now returns a PickObject instance.
- Logging of command has been fully automated.
- Support for un-doing commands.
New commands architecture:
The __call__ and guiCallback methods call now a doitWrapper method.
doitWrapper in turn:
With this new architecture:
- calls the beforeDoit method
- try to execute the doit method, if doit succeeds log the command automatically, add the undo commands to the undo stack.
- calls the afterDoit method.
- Loging of commands is now fully automatic, although there is a hook for a command to change the way the log argument string is built.
- Commands implementing a negate keyword are automatically undoable
- Loging of DejaVu Geometry instance is now done correctly.
- Commands can take new keyword arguments:
topCommand: (0 or default=1) a top command is a command that logs itself, toggles the busy leds when it starts, and tried to setup and Undo command
busyIdle: (0/1) when 1, the command will turn the busy led red when it starts and green when it stops. This flag is set to 1 for topCommands. setupUndo: (0/1) when 1, the command will add the undo command to the undo command stack
- setupUndoBefore(), setupUndoAfter(): these methods are called with the same arguments than doit. They can call the addUndoCall method to build the command that will undo the action of the command that is executed currently. The undo command is only added to the stack if the command is successful.
Macro commands are now executed like commands using a doitWrapper mechanism. A macro is basically any Python function. The framework calls it as a real command who's doit method is the macro function. Therefore macros log themselves, they turn the busy led on and off, and they get executed within a try except statment.
|mgllab, February 2001, (email@example.com)|