Skip to content

Experimental bioinformatics module for Deno. Built with Rust and WebAssembly.

License

Notifications You must be signed in to change notification settings

GJZwiers/birdie

Repository files navigation

Birdie

build GitHub

birdie is an experimental bioinformatics module for Deno running on WebAssembly (WASM). At the moment the project is in very early stages of development and all features are considered unstable.

Example:

import * as io from "https://deno.land/x/birdie/io/mod.ts";
import { readAll } from "https://deno.land/std/streams/conversion.ts";

await io.initWasm();

// Read a file in FASTA format from standard input, e.g.:
// cat file.fasta | deno run --allow-read ./analysis.ts
io.readFastaFile(await readAll(Deno.stdin));

Installation

deno is required to run this module.

Import and Initialization

birdie provides modules that can be used in JavaScript and TypeScript by importing them from a URL and initializing the WASM:

// A module with pattern matching algorithms
import * as pm from "https://deno.land/x/birdie/pattern_matching/mod.ts";

await pm.initWasm();

WASM dependencies are not locally cached along with JS/TS files in Deno yet, so you need to pass --allow-net=deno.land in order to run code using birdie.

Features

String Edit Distance

import * as distance from "https://deno.land/x/birdie/distance/mod.ts";

await distance.initWasm();

const x = "GTCTGCATGCG";
const y = "TTTAGCTAGCG";

// Hamming distance
const hammingDistance = distance.hamming(x, y);
console.log(hammingDistance); // 5n (BigInt)

// Levenshtein distance (Wagner-Fischer Algorithm)
const levenshteinDistance = distance.levenshtein(x, y);
console.log(levenshteinDistance);

// Myers' Algorithm
const myersDistance = distance.myers(x, y);
console.log(myersDistance);

Sequence Analysis

import * as sequence from "https://deno.land/x/birdie/sequence/mod.ts";

await sequence.initWasm();

const gcRatio = sequence.gcContent("GATATACA");
console.log(gcRatio); // 0.25

const gc3Ratio = sequence.gc3Content("GATATACA");
console.log(gc3Ratio); // 0.67

Pattern Matching

  • shift_and
import * as pm from "https://deno.land/x/birdie/pattern_matching/mod.ts";

await pm.initWasm();

const pattern = "AAAA";
const text = "ACGGCTAGAAAAGGCTAG";

const startPos = pm.shiftAnd(pattern, text);
console.log(startPos); // 8

Contributing

Any contributions are welcome and much appreciated!

About

Experimental bioinformatics module for Deno. Built with Rust and WebAssembly.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published