Home

Awesome

<p align="left"> <img src="https://github.com/darianyang/wedap/blob/main/docs/_static/wedap_logo.png?raw=true" alt="wedap logo" width="400"> </p>

tests docs PyPI version Downloads

DOI JCIM Paper

WEDAP : weighted ensemble data analysis and plotting (pronounced we-dap)

wedap is primarily used to plot H5 files produced from running WESTPA.

mdap can be used to plot data files from analysis of standard MD simulations.

wekap can be used to plot flux values as rates from a WESTPA created direct.h5 file.

For a demo and summary of features, see this jupyter notebook.

Or view the same demo notebook on the documentation web page.

Requirements

Optional

Installation

If you don't need the GUI, then installing Gooey is not required and you can just pip install.

pip install wedap

Otherwise you can install with Gooey, e.g. into a new conda env:

conda env create --name wedap python=3.10+
conda activate wedap
conda install -c conda-forge gooey
pip install wedap

Or update an existing environmnent:

conda activate ENV_NAME
conda install -c conda-forge gooey
pip install wedap

Note that Gooey is kindof troublesome to pip install in some systems, which is also why it's not included in the requirements (although it is required for the GUI). For now, I recommend conda installing Gooey.

GUI

wedap has a GUI built using Gooey which can be launched from the command line by simply running

wedap

or python wedap if you're in the main wedap directory of this repository.

If you're using MacOSX, you'll need to run pythonw wedap in the main directory since conda prevents wxPython from accessing the display on Mac. If you pip install (instead of conda installing) wxPython and Gooey on Mac you may be able to just run wedap.

For MacOSX, you can set up an alias in your .bash_profile by running the following:

echo "alias wedap=pythonw /Path/to/wedap/git/repo/wedap/wedap" >> ~/.bash_profile

Then simply type wedap in the terminal to run the wedap GUI.

Examples

After installation, to run the CLI version and view available options:

wedap --help

Or:

wedap -h

To start the GUI simply input:

wedap

To start the GUI on MacOSX:

pythonw /"Path to wedap git repo"/wedap/wedap

To visualize the evolution of the pcoord for the example p53.h5 file via CLI:

wedap -h5 wedap/data/p53.h5

To do the same with the API:

import wedap
import matplotlib.pyplot as plt

wedap.H5_Plot(h5="wedap/data/p53.h5", data_type="evolution").plot()
plt.show()

The resulting p53.h5 file evolution plot will look like this:

<p align="left"> <img src="https://github.com/darianyang/wedap/blob/main/examples/p53_evo.png?raw=true" alt="p53 evo plot" width="400"> </p>

See the examples directory for more realistic applications using the Python API.

Evolution plots are created by default using the CLI and GUI but average and instant probability distribution options are also available. To use one of your auxiliary datasets instead of the progress coordinate, just include the name of the aux dataset from your h5 file in the --Xname or --Yname fields:

wedap -h5 wedap/data/p53.h5 --data_type average --Xname dihedral_10 --Yname dihedral_11

Or:

wedap -h5 wedap/data/p53.h5 -dt average -X dihedral_10 -Y dihedral_11

The resulting p53.h5 file average plot of the dihedral aux datasets will look like this:

<p align="left"> <img src="https://github.com/darianyang/wedap/blob/main/examples/p53_avg_aux.png?raw=true" alt="p53 avg aux plot" width="400"> </p>

If you used a multi-dimensional progress coordinate and you want to use your pcoord for both the X and Y dimensions in a 2D average or instant plot, just use pcoord with the corresponding index set to the appropriate dimension (this also works with aux datasets which may have an additional dimension):

wedap -h5 wedap/data/p53.h5 --data_type average --Xname pcoord --Xindex 0 --Yname pcoord --Yindex 1

Or:

wedap -h5 wedap/data/p53.h5 -dt average -X pcoord -Xi 0 -Y pcoord -Yi 1

Or (since the default X options are the first pcoord, only the second pcoord needs to be specified):

wedap -h5 wedap/data/p53.h5 -dt average -Y pcoord -Yi 1

The resulting p53.h5 file average plot of the pcoord datasets will look like this:

<p align="left"> <img src="https://github.com/darianyang/wedap/blob/main/examples/p53_avg_pcoord.png?raw=true" alt="p53 avg pcoord plot" width="400"> </p>

Motivation

WESTPA already comes with some excellent analysis tools for generating probability distributions, so why is wedap needed?

wedap was originally built as a way to simplify the original WESTPA plotting pipeline:

Native WESTPA CLI-based Analysis Tools:

┌───────┐       w_pdist        ┌────────┐        plothist         ┌────────┐
│west.h5├─────────────────────►│pdist.h5├────────────────────────►│plot.pdf│
└───────┘ --construct-dataset  └────────┘ --postprocess-function  └────────┘
               module.py                      plot_settings.py

Analysis using wedap:

┌───────┐     wedap       ┌────────┐
│west.h5├────────────────►│plot.pdf│
└───────┘ CLI/GUI/Python  └────────┘

So wedap can generate plots with more flexibilty and less intermediate files, providing an especially useful way to plot aux datasets and explore your h5 file.

Since the original implementation of wedap, many more features have been added that are not available using the WESTPA w_pdist and plothist tools, these include the following:

Note that the WESTPA analysis tools have features not available in wedap and may still be of interest to you.

Contributing

Have an idea for a feature to add to wedap? Let me know and I may be able to incorporate it (dty7@pitt.edu).

Or feel free to try developing it yourself! Features should be developed on branches. To create and switch to a branch, use the command:

git checkout -b new_branch_name

To switch to an existing branch, use:

git checkout branch_name

To submit your feature to be incorporated into the main branch, you should submit a Pull Request. The repository maintainers will review your pull request before accepting your changes.

Copyright

Copyright (c) 2021-2024, Darian Yang