#biology #bioinformatics #science

蛋白质

与蛋白质结构一起工作

2个版本

0.0.5 2020年10月20日
0.0.2 2020年10月18日

#254 in 生物学

MIT许可证

2MB
7.5K SLoC

Python 5.5K SLoC // 0.0% comments Rust 2K SLoC // 0.1% comments

protein

Rust中的结构生物学

示例

让我们从一个PDB文件中读取蛋白质结构并绘制拉马钱丹图!

use csv::Writer; // the crate `csv` is required if you want to output csv
use protein::{
    io::pdb::Parser, // the PDB parser that parses PDB file into a `Structure`
    analysis::ModelAnalysis // `Structure` alone only stores data.
                              // Functions for analysing the `Structure` are provided by separate traits
 };
use std::fs;

fn main() {
    let data = fs::read("assets/4f7i.pdb").unwrap();
    let (_, structure) = Parser::parse(&data).unwrap();
    let (phis, psis) = structure.models[0].ramachandran(); 
    // the `.ramachandran()` function is provided by the `ModelAnalysis` trait

    let mut wtr = Writer::from_path("examples/ramachandran.csv").unwrap();
    wtr.write_record(&["phi", "psi"]).unwrap();
    for (&phi, &psi) in phis.iter().zip(psis.iter()) {
        wtr.write_record(&[phi.to_string(), psi.to_string()])
            .unwrap()
    }
    wtr.flush().unwrap();
}

这将生成一个包含两个列表示phi和psi角度的csv文件。然后我们可以在R中读取这个csv文件并绘制它(不幸的是,我在Rust中没有图表库)

ramachandran plot

您可以直接使用以下示例:cargo run

cargo run --example ramachandran

依赖项

~8.5MB
~96K SLoC