PDB parser implemented in Rust using nom.
NOTE: This crate is still in early development. Use it at your own risk.
rust
cargo run --example read 1a8o
json
{
"header": {
"classification": "VIRAL PROTEIN",
"deposition_date": "1998-03-27",
"id_code": "1A8O"
},
"title": "HIV CAPSID C-TERMINAL DOMAIN",
"authors": [
"T.R.GAMBLE",
"S.YOO",
"F.F.VAJDOS",
"U.K.VON SCHWEDLER",
"D.K.WORTHYLAKE",
"H.WANG",
"J.P.MCCUTCHEON",
"W.I.SUNDQUIST",
"C.P.HILL"
],
"experimental_techniques": [
"XRayDiffraction"
],
"cryst1": {
"a": 41.98,
"b": 41.98,
"c": 88.92,
"alpha": 90.0,
"beta": 90.0,
"gamma": 90.0,
"lattice_type": "Primitive",
"space_group": [
[
4,
3
],
[
2,
1
],
[
2,
1
]
],
"z": 8
},
"modres": {
"MSE": {
"standard_res": "Met",
"description": "SELENOMETHIONINE",
"occurence": [
[
"A",
151
],
[
"A",
185
],
[
"A",
214
],
[
"A",
215
]
]
}
},
"seqres": [
[
"A",
[
{
"Custom": "MSE"
},
"Asp",
"Ile",
"Arg",
"Gln",
"Gly",
"Pro",
// snip //
]
]
],
"models": [
{
"atoms": [
"id": 1,
"name": "N",
"id1": " ",
"residue": "Ser",
"chain": "A",
"sequence_number": 0,
"insertion_code": " ",
"x": -12.138,
"y": 1.867,
"z": 20.782,
"occupancy": 1.0,
"temperature_factor": 67.46,
"element": "N",
"charge": 0,
"hetatom": false
},
// snip //
]
"anisou": [
// snip //
],
"sheets": [
{
"id": "A",
"strands": [
{
"start": [
"A",
34
],
"end": [
"A",
38
],
"sense": "Unknown"
},
// snip //
]
},
// snip //
]
"helices": [
// snip
],
"connect": [
// snip //
]
}
]
}
Note: Priority is and is ought to be placed on parsing structural information instead of metadata, since the latter is more or less disordered free-text and usually not of particular interest to users (even in cases where they are, users can examine the PDB file directly).
[ ] [Remarks](http://www.wwpdb.org/documentation/file-format-content/format33/remarks.html)
[ ] [Dbref](http://www.wwpdb.org/documentation/file-format-content/format33/sect3.html#DBREF)
[X] [Modres](http://www.wwpdb.org/documentation/file-format-content/format33/sect3.html#MODRES)
[ ] [Het](http://www.wwpdb.org/documentation/file-format-content/format33/sect4.html#HET)
[ ] [Hetsyn](http://www.wwpdb.org/documentation/file-format-content/format33/sect4.html#HETSYN)
[X] [Helix](http://www.wwpdb.org/documentation/file-format-content/format33/sect5.html#HELIX)
[X] [Sheet](http://www.wwpdb.org/documentation/file-format-content/format33/sect5.html#SHEET)
[ ] [Ssbond](http://www.wwpdb.org/documentation/file-format-content/format33/sect6.html#SSBOND)
[ ] [Cispep](http://www.wwpdb.org/documentation/file-format-content/format33/sect6.html#CISPEP)
[ ] [Site](http://www.wwpdb.org/documentation/file-format-content/format33/sect7.html#SITE)
[X] [Cryst1](http://www.wwpdb.org/documentation/file-format-content/format33/sect8.html#CRYST1)
[ ] [ScaleN](http://www.wwpdb.org/documentation/file-format-content/format33/sect8.html#SCALEn)
[X] [Model](http://www.wwpdb.org/documentation/file-format-content/format33/sect9.html#MODEL)
[X] [Endmdl](http://www.wwpdb.org/documentation/file-format-content/format33/sect9.html#ENDMDL)
[ ] [Conect](http://www.wwpdb.org/documentation/file-format-content/format33/sect10.html#CONECT)
[ ] [Master](http://www.wwpdb.org/documentation/file-format-content/format33/sect11.html#MASTER)
The files in assets/
are retrieved from RSCB's FTP server using the method described in my blog post. Here are some features of the selected PDB files stored in this directory: