Code Monkey home page Code Monkey logo

morphot's Introduction

paper accompanying the software, written by Arthur Ecoffet, Fréderic Poitevin, Khanh Dao Duc

MorphOT: Transport-based interpolation between EM maps with UCSF ChimeraX

OT morphing on chaperonin

MorphOT is a plugin for ChimeraX, which allows users to directly interpolate multiple density maps. It relies on adapting and optimizing for EM maps some recent methods of shape interpolation based on optimal transport (OT), resulting in significant improvement in quality of morphing, compared with the standard command provided withChimeraX. For more details on the method, please see the appendix here and the paper accompanying the software.

This is the repository for distributing our software. For installing and running the software, please refer to the User Manual pdf file or see below.

Installation

Development and requirements

MorphOT has been developed using Python 3.7 and is implemented as a plugin for UCSF ChimeraX. The plugin was tested on the version 1.0 of ChimeraX. A GPU implementation of all MorphOT functions is also provided, which requires NVidia GPUs and the CudaToolkit to be run.

Downloading and running ChimeraX-morphOT

To download and install MorphOT, first download the source code folder otmorph-bundle available at the following Github link. To install, start ChimeraX and type the following command line:

devel build Path/To/Source/Code/otmorph−bundle

and

devel install Path/To/Source/Code/otmorph−bundle

Remark: After review by the UCSF ChimeraX team, the tool will be available in the ChimeraX Tool menu (More tools).

Tutorial

Pre-processing the density maps

Load the EMDB map 5140, smooth it using a gaussian blur, threshold it at the desired value, and rescale it, following the commands below:

open emdb:5140
volume gaussian #1 sd 2
volume threshold #2 min 0.35
volume scale #3 shift -0.35

Follow the same steps on the EMDB map 5138:

open emdb:5138
volume gaussian #5 sd 2
volume threshold #6 min 0.12
volume scale #7 shift -0.12

Align the two resulting maps and resample the second on the first:

fitmap #4 in #8
volume resample #8 onGrid #1

Remark: This pre-processing is notably meant to remove the noise around the structure, otherwise the interpolation will try to displace mass that is not part of the molecule, such as noisy blobs in the solvent region. Thresholding and smoothing is one way to deal with this but other approaches can be followed by the user to deal with this, possibly leveraging several tools available in ChimeraX. For instance, another possible strategy could be for the user to first mask the solvent region in the maps.

Using MorphOT

Not sure what options you have?

If you are not sure, you can type help MorphOT in the command-line interface of ChimeraX and check the usage recommendations in the Log window.

Create morphs

To produce a standard transport-based trajectory, type:

MorphOT morphOT #4 #9

For faster computation, you can use:

MorphOT semiMorphOT #4 #9 otFrames 5 frames 25

Replaying morphs

In order to replay a morph that you just generated, do:

MorphOT morphOT #4 #9 model #10

Alternatively, you can export the morph to a movie following:

movie record
MorphOT morphOT [options]
movie stop
movie encode [path]

Remark: the movie will be generated with voxel size 1.

Computing Time

Here are the times MorphOT takes to run a trajectory of 25 frames with the previous maps, for both CPU and GPU implementations

Grid CPU (Intel(R) Core(R) i7-10875H @ 2.30GHz) GPU(NVIDIA RTX 2070 Super)
64x64x64 110.5s(0.44s/frame) 6.55 (0.03s per frame)
96x96x96 439.8s (1.76s per frame) 23.5s (0.09s per frame)
192x192x192 5821s (23.28s per frame) 296s (1.18s per frame)

Videos

These animations display the result that one should obtain by following the tutorial above, comparing traditional linear interpolation (left) and the transport-based trajectory (right).

Linear MorphOT

morphot's People

Contributors

aecof avatar fredericpoitevin avatar kdd-ubc avatar rtviii avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.