ISOKANN.jl

Julia implementation of the ISOKANN algorithm for the computation of invariant subspaces of Koopman operators
Author axsk
Popularity
5 Stars
Updated Last
6 Days Ago
Started In
February 2023

ISOKANN

Dev

The ISOKANN.jl package implements the ISOKANN algorithm for the identification of macro-states of molecular systems. Its main features comprise of:

  • A flexible implementation of the ISOKANN core (Iso) (supporting 1D and N-D ISOKANN, customizable neural networks on a broad set of SimulationData)
  • A battery-included interfaces to OpenMM for automated adaptive sampling of molecular dynamics
  • Different adaptive sampling strategies (extapolation, kde and stratified sampling)
  • A posteriori analysis tools (plots, reaction path extraction and reaction rate estimation)

See the documentation for details.

Quick start

Install the package via julia> ]add https://github.com/axsk/ISOKANN.jl.

If you want to use Julia's built Conda.jl to automatically install OpenMM, you shoud build the package after setting the environment variable PYTHON="", e.g. through ENV["PYTHON"]=""; using Pkg; Pkg.build().

The usual pipeline consists of the creation of system simulation, generation of training data, training ISOKANN and a posteriori analysis of the results.

using ISOKANN

# Define an OpenMMSimulation. The default molecule is the Alanine-Dipeptide.
sim = OpenMMSimulation()

# Sample the initial data for training of ISOKANN with 100 initial points and 5 koopman samples per point.
data = isodata(sim, 100, 5)

# create the ISOKANN training object
iso = Iso(data)

# train for 100 episodes
run!(iso, 100)

# plot the training losses and chi values
plot_training(iso)

# scatter plot of all initial points colored in corresponding chi value
scatter_ramachandran(iso)

# estimate the exit rates, i.e. the metastability
exit_rates(iso)

# extract the reactive path
save_reactive_path(iso, out="path.pdb")

A more comprehensive example simulating the folding of the chicken villin can be found in scripts/villin.jl. For further information consult the docstrings (e.g. ?Iso).

References