Code Structure

Bioverse is organized as a pipeline from raw repositories to benchmark scores. Each stage is defined by a small abstract base class; concrete implementations live under Adapters and the other Implementations pages.

Pipeline

Adapter.download()
Processor.process()   (optional, during download)
Batch + Split + Assets
Dataset.release() / apply(Transform)
Benchmark.loader()
     ├── Sampler.sample()  → indices into the dataset
     ├── Task.__call__()   → (features, targets)
     └── Metric.update()   → aggregated scores
Trainer + Backend + Collater

Core abstractions

Component

Role

Adapter

Download raw data from an external source and produce initial batches, splits, and assets.

Processor

Parse structure files (PDB, mmCIF, …) into Awkward records during ingestion.

Data

In-memory and on-disk data containers: scenes, splits, and auxiliary lookup tables.

Dataset

Versioned, sharded datasets built from an adapter or derived from another dataset.

Transform

Offline or live modifications to batches, splits, and assets.

Benchmark

Bind a dataset to a sampler, task, and metric; expose data loaders for train/val/test.

Sampler

Decide which scenes, frames, or molecules form each training/evaluation batch.

Task

Extract model inputs and targets from a lazy view over on-disk shards.

Metric

Compare predictions to ground truth and produce leaderboard-ready results.

Utilities

Shared configuration, I/O, geometry, and array helpers used across the library.

Configuration files (D_*.yaml, B_*.yaml) reference implementation classes by name. bioverse.factory resolves those names at runtime. See the Developer Guide guide for extension patterns.