Home Blog
Rotating Mayavi Camera PDF Print
Written by Sarkis Dallakian   

I wrote this small script that can be used to rotate molecules in PyRx. You can try it by downloading rotate.py and then use File β†’ Run Python Script menu from PyRx to run it. To stop this rotation, click on Python Shell tab under Controls panel, type stop() and hit Enter. The following is the complete code for rotate.py and it's intended for (Python) developers who want to learn how it's done.

def rotate(event):
    frame.mayaviEngine.scene.camera.azimuth(1); #change 1 to any other degree as needed.
def stop():
    del frame.timer

import wx    
frame.Bind(wx.EVT_TIMER, rotate)
frame.timer = wx.Timer(frame)
frame.timer.Start(50) #you change the rate here  

The rotate function here calls frame.mayaviEngine.scene.camera.azimuth(1) which is what we need to do the rotation (.render is there to update the scene, otherwise we won't see the changes). I read Advanced Scripting with Mayavi where I found an example code for foscene.camera.azimuth. To call this function from PyRx, we need to get a handle of frame.mayaviEngine object. frame is an instance of MainFrame class definded in wxMainFrame.py and initialized in runPyRx.py. This is where we store references to various PyRx parts including mayaviEngine instance. The rest of the code is used to call rotate function and it's wxPython specific. I copied the last three lines from PyRx/autodockPage.py where we use wx.Timer to run AutoDock jobs and to check their status. Please let me know if you have any questions. 

Add a comment
Last Updated on Sunday, 25 March 2012 15:22
Installing Nvidia Driver on CentOS 6 PDF Print
Written by Sarkis Dallakian   

This post explains how to install NVIDIA proprietary drivers on CentOS 6. By default, CentOS 6 comes with nouveau drivers, which for 3D (OpenGL) rendering, is order of magnitude slower that NVIDIA's proprietary drivers.  For instance, I had glxgear running at round 400 frames per second (FPS) before installing NVIDIA proprietary drivers and at around 1000 FPS after. So it pays to add this extra step to your CentOS 6 installation. Before we start, make sure you have all required packages installed:

yum groupinstall "Development Tools"
yum install kernel-devel kernel-headers dkms

The last package (dkms) is needed so that we don't have to reinstall NVIDIA drivers after each kernel updates. Now we are ready to download NVIDIA proprietary drivers - http://www.nvidia.com/Download/index.aspx

To find out your Video Card model number, click Main Menu β†’ System Settings β†’ Display or run:

lspci | grep VGA

I then run /sbin/init 3 and then chmod +x NVIDIA-Linux-x86-290.10.run followed by ./NVIDIA-Linux-x86-290.10.run. However, this gave me:
"ERROR: The Nouveau kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver, and must be disabled before proceeding. Please consult the NVIDIA driver README and your Linux distribution's documentation for details on how to correctly disable the Nouveau kernel driver."

After trying many different options I have found a solution described at http://www.linuxquestions.org/questions/ubuntu-63/nouveau-kernel-driver-825432.

So I added the following line to /etc/modprobe.d/blacklist.conf file

blacklist nouveau

and then did:

$ mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak   
$ dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

Reboot and run ./NVIDIA-Linux-x86-290.10.run to finish installing NVIDIA driver.

Another difference, between CentOS 6 and earlier versions of CentoOS is that system-config-packages (Add/remove applications) is now called gpk-application. You need to run yum install gnome-packagekit if gpk-application is not installed in your system. Also, if you are planning to do OpenGL development run (source: www.centos.org - Forums - CentOS 6 - Software Support - Help me ..):

yum install mesa-libGL-devel mesa-libGLU-devel


Add a comment
Last Updated on Wednesday, 08 May 2013 20:30
ConnectomeViewer and Spatio-Temporal Simulation Environment (STSE) PDF Print
Written by Sarkis Dallakian   

I was looking for a sample code and found Nullege search engine for Python source code to be very useful. There are other search engines that do similar work, such as Google Code Search and Koders.com, however, Nullege seems to be the best one for Python. I have found the following excellent projects that I would like to share. The first one is called ConnectomeViewer and it's an amazing tool for brain research. The second one is called STSE and it provides spatio-temporal simulation environment for biological systems. It's nice to see that they are both using Mayavi for 3D Visualization. Since PyRx is using Mayavi too, this means that our users will be able to transfer their skills seamlessly between these tools. I'm looking forward to seeing other uses of Mayavi and 3D Visualization in life sciences.

Add a comment
Last Updated on Monday, 14 February 2011 13:43
PyRx 0.8 Release Announcement PDF Print
Written by Sarkis Dallakian   

I'm pleased to announce the release of PyRx 0.8. Here is what's new in this new release:

Version 0.8 - 30 December 2010

[84] Implemented Vina Web Services client and added remote executaition mode for Vina wizard.


[83] Changed web service URI from http://ws.nbcr.net to http://kryptonite.nbcr.net. Opal client distributed with PyRx is compatible with Opal2 services running on this new server.

[80] We now show ScrolledMessageDialog with TraceBack when PyRx fails to start.

[76] Exporting SDF in Analyze Results allows to specify the Number of Poses to Retain. This option is available through Edit -> Preferences. In the case of Vina results, we sort the result using Vina Binding Affinity before saving the result. For AutoDock 4, sorting is done using Binding Energy.


[75] Implemented update feature available through Help -> Check for Updates menu. This enables users to get the latest features and bug fixes more easily. http://pyrx.scripps.edu/images/75_update.png

[74] Made a number of important changes and bug fixes related to flexible residue generation and docking. In particular the names of flexible and rigid parts of a macromolecule now ends with '_flex.pdbqt' and '_rigid.pdbqt', respectively. http://pyrx.scripps.edu/images/flex_rigid_74.png

[71] Users can now save docked structures and binding energies as SDF (Structure Data Format). Thanks to Martin Indarte post in the forum: SDF with binding energies/scores


[69] Switched back to using wx.TextCtrl in Text editors. This widget can now handle large files (> 5MB - tested with wxPython-2.8.11).

[66] Included an option for exhaustiveness in the Vina Wizard thanks to Martin Indarte post in the forum: Can I change the exhaustiveness in VINA wizard?

See also: List of Changes in PyRx Version 0.7

Add a comment
Last Updated on Monday, 10 January 2011 16:06
Shape-based alignment of molecules PDF Print
Written by Sarkis Dallakian   

I was looking for an open source project that would do small molecule alignment and I finally found it. There are many publications out there that describe different algorithms for small molecule alignment, but I couldn't find any that I can try myself. I was very excited to read release announcement for Piramid that does exactly what I was looking for. Below are my initial results.

3D SFD CID_3107 3D SFD CID_9950643
Molecules from the first raw shown together. CID_3107 is highlighted. The same molecules after aligning them.

Update: The URL and the name of this tool has been changed since I wrote this post. This tools is now called Shape-itβ„’ and it's avialabe from http://silicos-it.com/software/software.html.

Add a comment
Last Updated on Friday, 31 January 2014 14:51

Page 4 of 7
Get PyRx