Deep learning has revolutionized image and speech processing. In our lab, we’re applying these techniques to small molecule drug discovery.
A by-product of the revolution in deep learning has been several high-quality open-source machine-learning frameworks that can compute gradients of arbitrary operations. You can easily imagine framing the prediction of small molecule binding energies as a learning problem; but can we leverage some of the deep learning advances for molecular dynamics?
A common operation in biophysics is computing the similarity of two protein poses with the RMSD distance metric. In this post, I’ll walk you through my implementation of RMSD first as a composition of normal “Ops” and then via writing a custom Op. As an example, I find a consensus structure and a KMeans-inspired RMSD-based clustering algorithm.
A pre-print for a publication on computationally tractable non-linear tICA with interesting connections to Markov state modeling.
Gromacs has some neat command-line programs to interact with MD trajectories. A lot of them prompt for additional input when you’re running them. I’ll show you how to use Python’s subprocess
module to deal with this.
Github user jeiros asked why you can’t use GMRQ to find the best lag-time when building an MSM. He wanted to know why the score appears to decrease with increasing lag-time.
I examine the nature of MSM eigenvalues to see what’s going on.
There are an abundance of “scientific workflow” frameworks, job schedulers, queuing systems, MPI implementations, and language-level primitives for multiprocessing. Sometimes, though, you just have to do a task a bunch of times. Here, I introduce GNU parallel
for a simple task and a more advanced task.
The NSF recently announced a new initiative to support the development of scientific software. One of my renderings (in this case, voltage gated sodium channel) was used as the press image! Unfortunately, the image is credited to Virginia Tech… Update: the attribution has been fixed. Thanks to all involved for the speedy correction.</p>
Jupyter Notebook is essential for interacting with data. Even better, you can run it on a server (that has your data, more processors, more RAM, …) but access it from anywhere. By default, Jupyter only serves data to localhost
on port 8888.
Instead of opening your notebook server to the world, you can set up port forwarding over ssh to piggy-back on the security it provides. In this post, we’ll set up a persistent port-forwarding connection in the background.
When you have proteins in space evolving over time, you have to make a movie. VMD is a love-hate program that is very capable of nice renders of biophysical systems. I like to have more control over the transformation of each rendered frame into a movie file.
ffmpeg
is a command-line program that can do this. If you try with the default options, your movie will have lots of compression scarring and may not play in most contexts.