Wrapper around pdbtbx rust library for reading (crystallographic) Protein Data Bank (PDB) and mmCIF files in JavaScript.
This NPM package only includes a subset of what the rust library can do. For now it is mainly focused on getting chain names and residue sequence numbers from PDB files.
This package uses wasm-pack and tsup to compile the pdbtbx rust library and its bindings to a NPM package using WebAssembly.
Add to your app with
npm install @i-vresse/pdbtbx-ts
In NodeJS use
const pdbtbx = await import('@i-vresse/pdbtbx-ts')
await pdbtbx.init()
const { readFile } = await import('fs/promises')
// A PDB file downloaded from https://github.com/haddocking/haddock3/tree/main/examples/docking-protein-protein/data
const content = await readFile('./e2aP_1F3G.pdb', encoding='ascii')
const info = pdbtbx.open_pdb(content)
{
identifier: undefined,
chains: [ 'A' ],
residue_sequence_numbers: [
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
...
],
residues_per_chain: Map(1) {
'A' => [
{ number: 19, insertion_code: '-' },
{ number: 20, insertion_code: '-' },
...
]
},
warnings: []
}
In an application using Vite, vitest and TypeScript use
import { init, open_pdb } from 'pdbtbx-ts'
async function parse(content: string) {
await init()
const info = open_pdb(content)
return info
}
Below are instructions how to develop this repository.
Requirements:
- Rust
- wasm-pack
- NodeJS version 18 or greater
To build a NPM package in dist/
directory use
npm install
npm run build
Tests can be found in tests/
directory.
Run JS tests that consume wasm.
npm run test
npm publish --access public .