Giter VIP home page Giter VIP logo

wiggle's Introduction

WIGGLE logo

WIGGLE 0.2.1 (alpha)

Graphical user interface to integrate cryo-EM flexibility analyses with ChimeraX.

What is WIGGLE?

Wiggle is a software package that integrates within UCSF ChimeraX to perform conformational flexibility analysis. Wiggle facilitates more interactive, intuitive, and rapid analysis of cryo-EM flexibility data types. Wiggle provides a tool to structural biologists to seemlessly visualise cryoDRGN or cryoSPARC 3D variability results while simultaneously visualising 3D volumetric data. The goal is to facilitate the sharing, deposition, analysis, and interpretation of next generation cryo-EM data types. Wiggle provides several key tools to achieve these goals:

  • Integrated into UCSF ChimeraX (easy install).
  • Read and write a single file format (compressed numpy array, .npz).
  • Facilitates the sharing and deposition of structural dynamics data.
  • Perform complex tasks with a GUI and interact with the variability landscape.
  • Rapid volume rendering to enable near realtime feedback.
  • Import and export cryoSPARC data file times to enable further analysis.

Video tutorials

  1. Setup & installation (6:53)
  2. Bundle (cryoDRGN or cryoSPARC 3DVA) results into .npz format (7:39)
  3. User interface overview (5:13)
  4. A Wiggle/cryoDRGN walkthrough (in depth; 15:07)

Dependencies

  • UCSF ChimeraX >=1.3 (Should work on versions below 1.3 but not tested).
  • CryoSPARC and cryoDRGN functionality depends on a CUDA accelerated GPU. CPU can work in principal, although it's quite slow and not currently implemented.
  • The following pip-installable packaged:
    • cupy_cuda100 - !! Important that this matches your CUDA version. Here CUDA 10.0
    • mrcfile
    • phate
    • umap-learn
    • pyqtgraph
    • scikit-image
    • torch useful installation guide
    • sklearn
    • pyyaml

Installation - developmental version

This is an experimental and developmental version, currently in testing. In the future, Wiggle will be available via the UCSF ChimeraX toolshed. For now, to use Wiggle you must install it manually (see below).

Verify your CUDA version.

Cupy must match your CUDA library versions, otherwise it will complain. Check the suffix on the end of your CUDA libXXX.so files. My version is CUDA 10, so the libraries end with libXXX.so.10.0 - use this for your cupy installation (even if nvidia-smi reports something else e.g. cuda 10.1 or 10.2, etc).

  $ ls /usr/local/cuda/lib64/*
  
  libcudart.so.10.0   libcusolver.so.10.0  libcufftw.so.10.0  etc ...

The CUDA libraries must be on the terminal path for cupy to work. Either 1) set the following path before launching ChimeraX via the command line, 2) set the CUDA lib path on your system in your ~/.bashrc file

  export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:$LD_LIBRARY_PATH

Get dependencies

First install UCSF ChimeraX 1.3.

Install the above pip packages using the UCSF ChimeraX python

  /path/to/ChimeraX/bin/python3.9 -m pip install cupy-cuda100 mrcfile phate umap-learn pyqtgraph scikit-image sklearn torch pyyaml

Some users have reported that the above method fails (maybe if ChimeraX was installed via apt install .deb - see charbj#2). If this is the case, try the following:

  /path/to/ChimeraX/bin/ChimeraX -m pip install cupy-cuda100 mrcfile phate umap-learn pyqtgraph scikit-image sklearn torch pyyaml

Clone WIGGLE and install into ChimeraX.

  mkdir /path/to/save/software/
  cd /path/to/save/software/
  git clone https://github.com/charbj/wiggle.git

Launch UCSF ChimeraX (either via GUI or command line) e.g.

  /usr/local/programs/chimerax-1.3/bin/ChimeraX

In the UCSF ChimeraX command line, run the following command (ensuring you modify the path appropriately for your system):

  devel clean ~/path/to/where/you/saved/wiggle; devel build ~/path/to/where/you/saved/wiggle/; devel install ~/path/to/where/you/saved/wiggle/

The path should match your git cloned directory...

To launch WIGGLE either run the command ui tool show wiggle or launch from Tools > General > Wiggle

Running WIGGLE via the command line

Wiggle has a packaging feature that compiles cryoSPARC or cryoDRGN output files into the single binary format for ease of sharing, deposition, and distribution.

While Wiggle will natively read the cryoDRGN and cryoSPARC analysis output, it will also read a compressed single-file format. This single file is easier to share amongst colleagues and can be generated with a simple command.

/path/to/chimerax-1.3/bin/python3.9 /path/to/wiggle/src/wiggle.py --help

e.g. 1 - Compile cryoDRGN outputs into single-file format

/path/to/chimerax-1.3/bin/python3.9 /path/to/wiggle/src/wiggle.py cryodrgn --config config.pkl --weights weights.49.pkl --z_space z.49.pkl --apix 1.6 --output example.npz

e.g. 2 - Compile cryoSPARC outputs into single-file format

/usr/local/programs/chimerax-1.3/bin/python3.9 ~/projects/software/wiggle/wiggle_0.2.1/src/wiggle.py 3dva --map cryosparc_P49_J924_map.mrc --components cryosparc_P49_J924_component_*.mrc --particles cryosparc_P49_J924_particles.cs --output example.npz

FAQs

How do I use the cryoSPARC 3D Flex mode?

This is not currently available, pending further details from the cryoSPARC team. This will be implemented in a future release. It is currently a place holder... sorry!

I get an error that cupy can't find a specific libXXX.so.X.Y.Z file?

Make sure your cupy installation exactly matches your cuda version. See installation instructions above.

How can I explore WIGGLE if I don't have any cryoSPARC or cryoDRGN results?

Ellen Zhong, the main author behind cryoDRGN, has made some pre-computed results available via Zenodo. Check out her paper for details.

Volume rendering is slow for large boxes (cryoDRGN or cryoSPARC).

Before rendering many volumes, start in the interactive mode and tune the cropping and downsampling options. Rendering whole volumes at the original sampling size is usually not necessary and can be cumbersomely slow. To improve speeds try the following:

In cryoDRGN mode, try down sampling to 128 pixels and then find an appropriate cropping to remove unneccessary empty voxel.

Likewise, in cryoSPARC mode, first crop the volume to remove empty solvent voxels and then downsample by a factor of ~2.

Screen captures and GUI example

Night and day mode examples of the Wiggle UI

WIGGLE night WIGGLE day

Example of Wiggle within the ChimeraX interface

WIGGLE ChimeraX

Useful reading material for conformational flexibility and cryoEM

-cryoDRGN, & 2

-3DFlex

-cryoSPARC 3DVA

-AlphaCryo4D

-ManifoldEM 1, 2, & 3 - also ManifoldEM GUI

wiggle's People

Contributors

charbj avatar edoyango 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.