pdbrust 0.2.0

A comprehensive Rust library for parsing and analyzing Protein Data Bank (PDB) files
Documentation

Crates.io Documentation Rust CI/CD License: MIT

PDBRust

A fast Rust library for parsing and analyzing PDB and mmCIF protein structure files.

Installation

[dependencies]
pdbrust = "0.2"

With optional features:

[dependencies]
pdbrust = { version = "0.2", features = ["filter", "descriptors", "rcsb"] }

Quick Start

use pdbrust::{parse_pdb_file, PdbStructure};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let structure = parse_pdb_file("protein.pdb")?;

    println!("Atoms: {}", structure.atoms.len());
    println!("Chains: {:?}", structure.get_chain_ids());

    Ok(())
}

Features

Feature Description
filter Filter atoms, extract chains, remove ligands, clean structures
descriptors Radius of gyration, amino acid composition, geometric metrics
quality Structure quality assessment (altlocs, missing residues, etc.)
summary Combined quality + descriptors in one call
rcsb Search and download structures from RCSB PDB

Examples

Filter and Clean Structures

use pdbrust::parse_pdb_file;

let structure = parse_pdb_file("protein.pdb")?;

// Extract CA coordinates
let ca_coords = structure.get_ca_coords(None);

// Chain operations with fluent API
let chain_a = structure
    .remove_ligands()
    .keep_only_chain("A")
    .keep_only_ca();

Compute Structural Descriptors

let structure = parse_pdb_file("protein.pdb")?;

let rg = structure.radius_of_gyration();
let max_dist = structure.max_ca_distance();
let composition = structure.aa_composition();

// Or get everything at once
let descriptors = structure.structure_descriptors();

Download from RCSB PDB

use pdbrust::rcsb::{download_structure, rcsb_search, SearchQuery, FileFormat};

// Download a structure
let structure = download_structure("1UBQ", FileFormat::Pdb)?;

// Search RCSB
let query = SearchQuery::new()
    .with_text("kinase")
    .with_organism("Homo sapiens")
    .with_resolution_max(2.0);

let results = rcsb_search(&query, 10)?;

Performance

Benchmarks against equivalent Python code show 40-260x speedups for in-memory operations:

Operation Speedup
Parsing 2-3x
get_ca_coords 240x
max_ca_distance 260x
radius_of_gyration 100x

Documentation

License

MIT