Skip to content

maxall41/RustSASA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RustSASA

GitHub Actions Workflow Status Crates.io Downloads (recent) Crates.io License

RustSASA is a Rust library for computing the absolute solvent accessible surface area (ASA/SASA) of each atom in a given protein structure using the Shrake-Rupley algorithm[1]. It can be used in Rust and Python!

Features:

  • 🦀 Written in Pure Rust
  • ⚡️ 3X Faster than Biopython and ~120% faster than Freesasa
  • 🧪 Full test coverage

Using in Python 🐍

You can now utilize RustSasa within Python to speed up your scripts! Take a look at rust-sasa-python!

Installation:

pip install rust-sasa-python

Example:

from rust_sasa_python import calculate_sasa_at_residue_level
residue_sasa_values = calculate_sasa_at_residue_level("path_to_pdb_file.pdb") # Also supports mmCIF files!

See full docs here

Using in Rust 🦀

use pdbtbx::StrictnessLevel;
use rust_sasa::{Atom, calculate_sasa, calculate_sasa_internal, SASALevel};
let (mut pdb, _errors) = pdbtbx::open(
             "./example.cif",
             StrictnessLevel::Medium
).unwrap();
let result = calculate_sasa(&pdb,None,None,SASALevel::Residue);

Full documentation can be found here

Benchmarking

Benchmarks were performed on an M2 Apple Mac with 8GB of RAM and 8 Cores with the protein AF-A0A2K5XT84-F1 (AlphaFold).

  • Biopython: ~150ms

  • Freesasa: ~90ms

  • RustSASA: ~40ms

Citations:

1: Shrake A, Rupley JA. Environment and exposure to solvent of protein atoms. Lysozyme and insulin. J Mol Biol. 1973 Sep 15;79(2):351-71. doi: 10.1016/0022-2836(73)90011-9. PMID: 4760134.

About

A Rust library for calculating the SASA/ASA for each atom in a protein. Based on the Shrake & Rupley algorithm.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages