Skip to main content

aablocks

A-Alpha Bio SDK for accessing Atlas data blocks.

Installation

pip install aablocks

For DataFrame support:

pip install aablocks pandas   # For pandas
pip install aablocks polars   # For polars

Quick Start

Python

import aablocks as aa

# Login (opens browser)
aa.login()

# List data blocks
blocks = aa.list_blocks()

# Get data as pandas DataFrame
df = aa.get_data("ab1001")

CLI

# Login (opens browser)
> aablocks login

# List data blocks
> aablocks list

# Download a data block
> aablocks get ab1614 -o data.csv

# Download structure files
> aablocks structures ab1614

Python API

aa.login()

Authenticate with the Atlas. Opens browser for OAuth. No-op if already logged in.

import aablocks as aa
aa.login()

aa.logout()

Clear cached authentication token.

aa.logout()

aa.list_blocks(all_versions=False, format=None)

List all accessible data blocks.

Parameters:

Name Type Description
all_versions bool Return all versions (default: latest only)
format str "csv", "list", "pandas", or "polars" (default: config)

Returns: list[DataBlock] | str | DataFrame

# As pandas DataFrame
df = aa.list_blocks()

# As DataBlock objects
blocks = aa.list_blocks(format="list")
for d in blocks:
    print(f"{d.id}: {d.name}")

# All versions as polars
df = aa.list_blocks(all_versions=True, format="polars")

aa.get_details(block_id, version=None)

Get metadata for a specific block.

Parameters:

Name Type Description
block_id str Data block ID (e.g., "ab1001")
version str Version (default: latest)

Returns: DataBlock

block = aa.get_details("ab1001")
print(block.name)
print(block.modes)  # ['source', 'ml']

aa.get_datacard(block_id, version=None)

Get the datacard content for a block.

Parameters:

Name Type Description
block_id str Data block ID
version str Version (default: latest)

Returns: dict (see OpenAPI DatacardResponse schema)

datacard = aa.get_datacard("ab1001")
print(datacard["exec"]["scientific_value"])
for uc in datacard["exec"]["use_cases"]:
    print(uc["title"], uc["description"])

aa.get_data(block_id, version=None, mode=None, format=None, output_path=None, output_compressed=False, progress=None, schema=True, load_negatives=False)

Download data for a data block. When schema=True (default), column types are automatically applied when reading as pandas or polars — no manual schema handling needed.

Parameters:

Name Type Description
block_id str Data block ID (e.g., "ab1001")
version str Version (default: latest)
mode str Data mode: "source" or "ml"
format str "csv", "pandas", or "polars"
output_path str Write to file instead of returning
output_compressed bool Keep gzip compression
progress bool Show progress bar
schema bool Apply column types automatically (default: True)
load_negatives bool Keep negative control rows (default: False). Set True to include them.

Returns: str | DataFrame | None

# Pandas DataFrame with proper types (Int64, Float64, boolean, string)
df = aa.get_data("ab1001")
print(df.dtypes)

# Polars DataFrame with proper types
df = aa.get_data("ab1001", format="polars")
print(df.schema)

# ML-ready data
df = aa.get_data("ab1001", mode="ml")

# Include negative control rows (ANeg/AlphaNeg)
df = aa.get_data("ab1001", load_negatives=True)

# Skip schema (raw pandas inference)
df = aa.get_data("ab1001", schema=False)

# Download to file
aa.get_data("ab1001", output_path="data.csv")

# Download compressed
aa.get_data("ab1001", output_path="data.csv.gz", output_compressed=True)

aa.download_structures(block_id, version=None, output_path=None, progress=None)

Download all structure files for a data block as a zip archive.

Parameters:

Name Type Description
block_id str Data block ID (e.g., "ab1001")
version str Version (default: latest)
output_path str Output file path (default: filename from server)
progress bool Show progress bar (default: config)

Returns: str (output file path)

# Download structures (filename from server)
path = aa.download_structures("ab1614")

# Download to specific path
path = aa.download_structures("ab1614", output_path="structures.zip")

aa.download_structure(block_id, filename, version=None, output_path=None)

Download a single structure file for a block.

Parameters:

Name Type Description
block_id str Data block ID (e.g., "ab1614")
filename str Structure filename (e.g., "structure.cif")
version str Version (default: latest)
output_path str Write to file. If None, returns content as string.

Returns: str (file content or output file path)

# Get structure content as string
content = aa.download_structure("ab1614", "structure.cif")

# Download to file
path = aa.download_structure("ab1614", "structure.cif", output_path="my_file.cif")

aa.set_config(key, value)

Set a configuration value.

Key Description Default
api_format Output format (csv, pandas, polars) "pandas"
progress Show download progress True
aa.set_config("api_format", "polars")
aa.set_config("progress", False)

DataBlock

Data block metadata container returned by list_blocks(format="list") and get_details().

Attribute Type Description
id str Data block identifier
name str Human-readable name
experiment str Overview/use case
details str Experimental details
modes list[str] Data modes (e.g., ["source", "ml"])
version str Version number
locked bool Locked for current user's tier
url str | None Direct URL
structure_count int | None Number of structure files
a_size int | None A-library size
alpha_size int | None Alpha-library size
total_ppi_count int | None Total PPI count
unique_ppi_count int | None Unique PPI count
product str | None Product slug (e.g., atlas-vhh)
product_display_name str | None Human-readable product name (e.g., Atlas VHH Consortia)
product_kind str | None Product category: consortium, exclusive, or open-source
source str | None Product release name (e.g., VHH Q1 2025); None when unrelased

CLI

After installation, the aablocks command is available in your terminal.

Global Options

Option Description
--version Show version and exit
--help Show help and exit

aablocks login

Log in to the Atlas. Opens your browser for authentication. Tokens are cached locally and automatically refreshed.

> aablocks login
Opening browser for authentication...
Logged in successfully.

aablocks logout

Log out and clear cached credentials.

> aablocks logout
Logged out successfully.

aablocks list [OPTIONS]

List all data blocks accessible to the current user.

Option Description
--all-versions Include all versions of each data block
-f, --format Output format: table, csv, or json (default: table)
# List as table (default) — columns: ID, Name, Version, Released, Structures, A Size, Alpha Size, Total PPI, Unique PPI, Modes
> aablocks list
ID           Name                           Version  Released     Structures   A Size     Alpha Size Total PPI    Unique PPI   Modes
--------------------------------------------------------------------------------------------------------------------------------------
ab1001       AlphaBlock 1001                1        2026-01-21                500        200        100000       50000        source, ml
ab1479       AlphaBlock 1479                1        2026-01-21                800        300        240000       95000        source
ab1614       AlphaBlock 1614                1        2026-01-21   34570

# List as JSON
> aablocks list -f json

# List as CSV
> aablocks list -f csv

# Include all versions
> aablocks list --all-versions

aablocks details <block_id> [OPTIONS]

Show detailed metadata for a specific block.

Option Description
-v, --version Specific version to retrieve
> aablocks details ab1001
ID:           ab1001
Name:         AlphaBlock 1001
Version:      1
Released:     2026-01-21
Groups:       tier1
Modes:        source, ml
Experiment:   Local affinity landscape on VHH72-SARS-CoV-2 RBD

aablocks datacard <block_id> [OPTIONS]

Show the datacard for a block.

Option Description
-v, --version Specific version to retrieve
--raw Output raw JSON instead of formatted text
# Display formatted datacard text
> aablocks datacard ab1001

# Get raw JSON
> aablocks datacard ab1001 --raw

# Save to file
> aablocks datacard ab1001 --raw > datacard.json

aablocks get <block_id> [OPTIONS]

Download CSV data for a block.

Option Description
-v, --version Specific version to retrieve
-m, --mode Data mode (e.g., source, ml). Default: source
-f, --format Output format: csv, table, or gz
-o, --output Output file path
--progress/--no-progress Show download progress bar
--load-negatives Include negative control rows (ANeg/AlphaNeg). Excluded by default.
# Print CSV to stdout
> aablocks get ab1001

# Download to file
> aablocks get ab1001 -o data.csv

# Download compressed
> aablocks get ab1001 -o data.csv.gz -f gz

# Get ML-ready variant
> aablocks get ab1001 --mode ml

# Include negative control rows
> aablocks get ab1001 --load-negatives

# Display as table
> aablocks get ab1001 -f table

# Pipe to other tools
> aablocks get ab1001 | head -100 > sample.csv

aablocks structures <block_id> [OPTIONS]

Download structure files for a block. By default, downloads all structures as a zip archive. Use --file to download a single structure file.

Option Description
-v, --version Specific version to retrieve
-f, --file Download a single structure file by name
-o, --output Write to file at the given path. If no path is given, defaults to the --file filename or the server-provided filename.
--progress/--no-progress Show download progress bar
# Download all structures as zip (filename from server)
> aablocks structures ab1614
Structures written to ab1614_structures.zip

# Download to specific path
> aablocks structures ab1614 -o my_structures.zip
Structures written to my_structures.zip

# Download a single structure file (prints content to stdout)
> aablocks structures ab1614 --file structure.cif

# Download a single structure file to disk
> aablocks structures ab1614 --file structure.cif -o
Structure written to structure.cif

# Download a single structure file to a specific path
> aablocks structures ab1614 --file structure.cif -o my_file.cif
Structure written to my_file.cif

aablocks config [key] [value]

Get or set configuration options.

# Show all settings
> aablocks config

# Get a specific value
> aablocks config cli_format

# Set a value
> aablocks config cli_format table
Key Values Default Description
api_format csv, pandas, polars pandas Default format for Python API
cli_format csv, table csv Default format for CLI output
progress true, false true Show download progress bars

Examples

Complete Python Workflow

import aablocks as aa

# Authenticate
aa.login()

# Browse data blocks
blocks = aa.list_blocks(format="list")
print(f"Found {len(blocks)} data blocks")

for d in blocks[:3]:
    print(f"{d.id}: {d.name} (v{d.version})")

# Get details
details = aa.get_details("ab1001")
print(f"Modes: {details.modes}")

# Download data (schema applied automatically)
df = aa.get_data("ab1001")
print(df.head())

# ML version
df_ml = aa.get_data("ab1001", mode="ml")

# Read datacard
datacard = aa.get_datacard("ab1001")
print(datacard["exec"]["scientific_value"])

# Download structures
aa.download_structures("ab1614")

Scripting

# List data block IDs only
> aablocks list -f csv | tail -n +2 | cut -d, -f1

# Download all accessible data blocks
> for id in $(aablocks list -f csv | tail -n +2 | cut -d, -f1); do
    aablocks get $id -o "${id}.csv"
done

Schema

Each data block has a column schema that defines proper dtypes for pandas and polars. When using get_data(), schemas are applied automatically (schema=True by default).

Automatic Typing

import aablocks as aa

aa.login()

# Pandas — columns are typed as Int64, Float64, boolean, string
df = aa.get_data("ab1001")
print(df.dtypes)
# mata_description                       string
# alphaseq_affinity                      Float64
# above_background                       boolean
# pos_a                                  Int64

# Nullable integers stay Int64 (not float64) even with missing values
print(df["pos_a"].dtype)  # Int64

# Polars — columns are typed via schema_overrides
df = aa.get_data("ab1001", format="polars")
print(df.schema)
# {'mata_description': Utf8, 'alphaseq_affinity': Float64, 'pos_a': Int64, ...}

# Skip schema (raw inference)
df = aa.get_data("ab1001", schema=False)

Manual Schema Usage

# Fetch the schema separately
schema = aa.get_schema("ab1001")
# {'dtype': {'mata_description': 'string', 'pos_a': 'Int64', ...}, 'parse_dates': []}

# Use directly with pandas
import pandas as pd
df = pd.read_csv("local_data.csv", **schema)

# Convert to polars kwargs
polars_kwargs = aa.pandas_schema_to_polars(schema)
import polars as pl
df = pl.read_csv("local_data.csv", **polars_kwargs)

CLI

# Show schema for default mode
> aablocks schema ab1001
{
  "dtype": {
    "mata_description": "string",
    "alphaseq_affinity": "Float64",
    "above_background": "boolean",
    "pos_a": "Int64"
  }
}

# Show schema for ML mode
> aablocks schema ab1001 -m ml

License

Apache 2.0 — see LICENSE for details.

Release files for aablocks 0.1.24

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aablocks 0.1.24
File Size Uploaded
aablocks-0.1.24.tar.gz 104.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aablocks 0.1.24
File Interpreter ABI Platform
aablocks-0.1.24-py3-none-any.whl Python 3 none any Details

Total release size:188.2 kB

Release files / aablocks-0.1.24.tar.gz

Download URL aablocks-0.1.24.tar.gz
Size 104.9 kB
Tags Source
SHA-256 checksum
How to use checksums
be8f8fdbe19ae3c9f0dcc0ff4894f0e47860192f2c8dcf213b64371741c19978
BLAKE2b-256 checksum
How to use checksums
994b7efc9bd458cc789f9c8ae0efda6ffdf4009eba4b4b5f21eed678083c8798
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / aablocks-0.1.24-py3-none-any.whl

Download URL aablocks-0.1.24-py3-none-any.whl
Size 83.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a7c88a0e5a3ac8c172e82aa5bed94635135204d371d3df0e143859eceb9b23e1
BLAKE2b-256 checksum
How to use checksums
7ab95aa35f7ba1ba46c944ef68e387096d30f0b3432d9437ce523601f3069d99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.1.24 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page