Understand the fitness landscape of your optimization problem.

A fitness landscape maps the candidates in a design space, such as protein variants or reaction conditions, to their measured performance. GraphFLA builds this landscape from your data and characterizes its topography, revealing what makes a problem easy or hard to model and to optimize. These insights help you develop better predictive models and search algorithms.

$ pip install graphfla
An illustrative fitness landscape with improving paths, one reaching the global optimum and two ending at local optima. Global optimum Local optimum Local optimum fitness design space
  • improving path to the global optimum
  • improving paths ending at local optima

20+

measures of landscape structure

7

landscape types for sequences, categorical, ordinal and mixed data

8

model landscapes and benchmark problems

12

step-by-step tutorials on published data

179

curated datasets across diverse domains

How it works

Build, analyze, and manipulate fitness landscapes as graphs.

Protein function and stability

Explore how amino acid variation affects protein function and stability.

1Provide your data

Protein variant screening data, pairing amino acid sequences with measurements such as catalytic activity, binding affinity or thermostability.

Your data

Protein sequenceActivity
MKTAYIAKQRQISFVKSHFS 23%
MKTAFIAKQRQISFVKSHFS 41%
MKTAYIGKQRQISFVKSHFS 36%
MKTAYIAKQKQISFVKSHFS 57%
MKTAFIGKQRQISFVKSHFS 42%
MKTAFIAKQKQISFVKSHFS 64%
MKTAYIGKQKQISFVKSHFS 73%
MKTAFIGKQKQISFVKSHFS 91%

2Build the landscape

GraphFLA connects variants that differ by a single amino acid substitution, mapping the measured property across sequence space.

Illustrative protein function and stability landscape with 4 peaks, drawn above its neighbor graph of 32 candidates. Landscape Neighbor graph

3Analyze its topography

Characterize epistasis, mutational robustness and the accessibility of optimal sequences.

Landscape profile

Local optima4 / 32

Roughness0.68

Neutrality19%

Fitness-distance correlation−0.25

Variable interactions

  • Magnitude 52%
  • Sign 31%
  • Reciprocal sign 17%

Quick start

From raw data to landscape analysis in a few lines.

Simply load your dataset, specify the variables and the objective, and build the landscape. The same steps apply to laboratory measurements, simulations and model evaluations.

$ pip install graphfla
quickstart.pyPython
import pandas as pdfrom graphfla import analysisfrom graphfla.landscape import ProteinLandscape df = pd.read_csv("variants.csv")X = df["sequence"]  # Amino-acid sequence of each variantf = df["activity"]  # Measured activity, to maximize landscape = ProteinLandscape(maximize=True)landscape.build_from_data(X, f)analysis.profile(landscape, seed=42)

What you can measure

A holistic picture of your landscape, with 20+ features across four aspects.

Each feature is implemented from established studies in evolutionary biology and optimization. Together they let you explore your problem from complementary angles and understand it fully.

Why landscape topography matters

Landscape features help interpret model performance and optimization outcomes.

Landscape features help explain why predictive models and search algorithms perform differently across problems. They reveal interactions that complicate prediction, local optima that can trap search, and broad trends that can guide optimization.

Zero-shot prediction

ProteinGym · Prediction performance across protein assays

Each point is a protein DMS dataset. Select a landscape feature and a zero-shot model to compare Spearman prediction performance. Use arrow keys to move between points and Enter to read the associated publication. Spearman correlation

Directed evolution

18 near-complete combinatorial DMS assays

Each point is a protein landscape. Select a feature and a search strategy to compare optimization outcomes within a shared evaluation cap. Use arrow keys to move between points and Enter to read the associated publication. Best fitness percentile

Performance

Scales to millions of candidates on a single machine.

Landscape construction in GraphFLA is heavily optimized for speed and memory efficiency, enabling analysis of large combinatorial spaces on a single machine.

59,161×

faster construction at 1,048,576 candidates

2,384×

lower peak memory on the same build

  • GraphFLA
  • Naive all-pairs

Construction time · log scale

0.1 ms 1 ms 1 s 1 min 1 h 1 day 1 week 256 4,096 65,536 1,048,576 candidates 22 ms 3.6 ms 5.41 s 20 ms 28.5 min 441 ms 6.3 days 9.23 s

Peak memory · log scale

10 MiB 100 MiB 1 GiB 10 GiB 100 GiB 1 TiB 10 TiB 256 4,096 65,536 1,048,576 candidates both 104 MiB 239 MiB 109 MiB 32.3 GiB 280 MiB 8.0 TiB 3.4 GiB

Complete binary landscapes with 8 to 20 variables. Apple M4 Pro, Python 3.9, single thread. Peak memory includes Python and its dependencies. The baseline is a nested Python loop with a dense distance matrix.

Analyze your own data.

Research behind GraphFLA

NeurIPS 2025 · Spotlight

Augmenting Biological Fitness Prediction Benchmarks with Landscapes Features from GraphFLA

Mingyu Huang, Shasha Zhou, Ke Li

Read paper

ISSTA 2025

Rethinking Performance Analysis for Configurable Software Systems: A Case Study from a Fitness Landscape Perspective

Mingyu Huang, Peili Mao, Ke Li

Read paper

KDD 2025

On the Hyperparameter Loss Landscapes of Machine Learning Models: An Exploratory Study

Mingyu Huang, Ke Li

Read paper

IJCAI 2023

Exploring Structural Similarity in Fitness Landscapes via Graph Data Mining: A Case Study on Number Partitioning Problems

Mingyu Huang, Ke Li

Read paper