Skip to content

Julia implementation of the ISOKANN algorithm for the computation of invariant subspaces of Koopman operators

License

Notifications You must be signed in to change notification settings

axsk/ISOKANN.jl

Repository files navigation

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

About

Julia implementation of the ISOKANN algorithm for the computation of invariant subspaces of Koopman operators

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages