Skip to content

i-VRESSE/pdbtbx-ts

Repository files navigation

NPM Package for pdbtbx

Wrapper around pdbtbx rust library for reading (crystallographic) Protein Data Bank (PDB) and mmCIF files in JavaScript.

npmjs.com Build DOI fair-software.eu

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.

🚴 Usage

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
}

Development

Below are instructions how to develop this repository.

Requirements:

  • Rust
  • wasm-pack
  • NodeJS version 18 or greater

🛠️ Build

To build a NPM package in dist/ directory use

npm install
npm run build

🔬 Test

Tests can be found in tests/ directory.

Run JS tests that consume wasm.

npm run test

🎁 Publish to npmjs.com

npm publish --access public .