# ELL - Energy Landscape Library

This document provides reference information about the Energy Landscape Library.

## The goal

This C++ programming library provides a platform for generic algorithms to study kinetics and structure of energy landscapes with descrete states. This algorithms need an abstract representation of this states to be applied to a multitude of models and the corresponding energy or fitness landscapes.## Features

### Generic algorithms

A set of walks to traverse energy landscapes:

- random walks
- adaptive walks
- gradient (steepest descent) walks
- Monte Carlo walks with Metropolis criterion
- low energy path calculation for RNA landscapes using the heuristic by Morgan and Higgs

A walk based barrier estimation in the landscape

- a direct walk based estimation using pairs of minima (e.g. Morgan-Higgs heuristic for RNA landscapes)
- an up- and down-walk based estimation starting in a known minimum of landscape and ending in another one. If this is unknown it can be added.

Exhaustive landscape flooding:

- flooding of single basins (standard via hash and a more memory efficient version)
- flooding of multiple basins in parallel (in preparation)

All algorithms are fully parameterisable and very flexible concerning output and results. So they can be set up to:

- write all visited states to stream
- collect them in listings (also compressed possible)
- calculate the canonical partition function of the visited states (e.g. of a gradient basin of a minimum)
- perform any wanted operation by overwriting the corresponding reporter classes

### States = Landscape Models

- Lattice protein representations with Pull-Move and Pivot-Move neighborhood for different lattice models with arbitrary distance based energy functions (based on the BIU library)
- an RNA representation interfacing the Vienna RNA package for energy calculation
- State for Ising spin glass models (ring of spins)
- State for the Number Partitioning Problem (ring of spins)
- A generic State implementation based on a node-labeled graph. Using this class any arbitrary energy landscape can be encoded and directly used within the ELL. Each node represents a State and is labeled with its energy while the edges encode the neighborhood relation of the energy landscape.

### Landscape Topology Representations

To allow for a coarse grained landscape topology representation of minima and additional information as barriers, saddle points, etc. we provide a set of representations via subclassing of LandscapeTopology:

- set of minima
- barrier tree
- saddle network
- funnel partitioning (in preparation)

### General features

- compressed State representations to minimize the memory usage for storing huge numbers of states (e.g. for energy landscape flooding)
- generic neighborhood generators
- the random number generation can be globally set or one of the already available generators of the BIU library can be used
- tests for most of the given functionality to enable a high standard of the source code. Furthermore, these tests can serve as an example for the own first steps using the ELL.

## Dependencies

The ELL depends on the following libraries:

- the Bioinformatic Utility library (BIU)
- the Vienna RNA package

## Appendix

Additionally, the documentation also features the following parts:The following lists and indices are available