Multi-stage protein design pipelines with DuckDB caching, resumability, and dependency resolution. See Python SDK overview for SDK onboarding.
Overview
The pipeline framework provides:
Multi-stage orchestration with automatic dependency resolution
DuckDB caching for predictions, embeddings, and structures
Resumability — skip completed stages on re-run
Streaming for large datasets
Visualization — funnel plots, PCA/UMAP, distributions
Quick start
from biolm.pipeline import GenerativePipeline, SaturationMutagenesisConfig
config = SaturationMutagenesisConfig(
parent_sequence="MKTAYIAKQRQ",
scoring_model="esm2-650m",
scoring_action="predict",
score_field="logits",
top_n=10,
)
pipeline = GenerativePipeline(configs=[config])
results = pipeline.run()
Config hierarchy
All pipeline configs inherit from ScoringProtocolConfig.
Use isinstance to dispatch on config type:
from biolm.pipeline.generative import (
ScoringProtocolConfig,
GenerativeProtocolConfig,
SaturationMutagenesisConfig,
IterativeMaskingDMSConfig,
DirectGenerationConfig,
)
if isinstance(config, SaturationMutagenesisConfig):
pipeline = GenerativePipeline(configs=[config])
elif isinstance(config, DirectGenerationConfig):
pipeline = GenerativePipeline(configs=[config])
ScoringProtocolConfig
├── SaturationMutagenesisConfig
├── IterativeMaskingDMSConfig
└── DirectGenerationConfig (extends GenerativeProtocolConfig)
Model quick-reference
Config type |
Model |
Action |
Notes |
|---|---|---|---|
SaturationMutagenesisConfig |
esm2-650m |
predict |
Single-mutant library + scoring |
IterativeMaskingDMSConfig |
esm2-650m |
predict |
Greedy MLM argmax DMS |
DirectGenerationConfig |
proteinmpnn / dsm / antifold |
generate |
Structure-conditioned generation |
Config classes
Field details are documented on each class below.
Pipeline examples
Saturation mutagenesis funnel:
from biolm.pipeline import GenerativePipeline, SaturationMutagenesisConfig
config = SaturationMutagenesisConfig(
parent_sequence="MKTAYIAKQRQ",
scoring_model="esm2-650m",
scoring_action="predict",
score_field="logits",
top_n=10,
)
pipeline = GenerativePipeline(configs=[config])
results = pipeline.run()
Direct generation (ProteinMPNN):
from biolm.pipeline import GenerativePipeline, DirectGenerationConfig
config = DirectGenerationConfig(
model_name="protein-mpnn",
structure_path="design.pdb",
num_sequences=10,
)
pipeline = GenerativePipeline(configs=[config])
results = pipeline.run()
Serialization and resumability
Pipeline definitions can be serialized with PipelineDef
for round-trip storage. DuckDB caches predictions and embeddings so re-runs skip
completed work.