Life sciences
The sequence viewer opens DNA, RNA and protein sequences in the page - FASTA, GenBank, EMBL, SnapGene, Clustal and Stockholm - and shows them as a molecular biologist reads them: a circular plasmid map or a linear one, with features as labelled arrows and restriction enzymes named at their sites; the letters with both strands and translations in three or six frames; and alignments of many sequences with conservation and a consensus.
Select along the map or the letters, across the origin of a circle too, and the viewer gives the length, GC content, melting temperature and weight - and for a coding stretch its protein. Ninety-two restriction enzymes cut a digest shown on a gel beside a ladder; open reading frames are found on all six frames; motifs are searched with IUPAC letters and mismatches; features and primers are added from the selection; and GenBank, FASTA and the map as SVG are saved. For research use, not clinical.
Try it with your own files in confidence: they are opened by your browser, on your device. Nothing is uploaded, no copy reaches us or anyone else, and nothing is kept once you close this tab.
A cloning vector
A made-up 4,600 bp plasmid - not a real one - with a T7 promoter, two genes, a multiple cloning site between M13 primer sites, and an origin. Choose a feature on the map, drag along it to select, find a site, cut it with two enzymes, or read the letters in all six frames. Open a sequence file of your own from the toolbar.
// Node 18 or later, from the Gold package: which enzymes cut each construct once, for the cloning plan.
import { readdirSync, readFileSync } from 'node:fs';
import { readSequenceFile, findSites, cutCounts } from './dist/node/bmx-sequence-viewer.mjs';
for (const name of readdirSync('constructs')) {
const [record] = readSequenceFile(readFileSync(`constructs/${name}`), name).records;
const counts = cutCounts(findSites(record.sequence, undefined, { circular: record.topology === 'circular' }));
const once = [...counts].filter(([, n]) => n === 1).map(([enzyme]) => enzyme);
console.log(`${record.name}, ${record.sequence.length} bp: cut once by ${once.join(', ')}`);
}
Isolates, side by side
Eight made-up isolates of one gene, aligned, with conservation above the columns, the consensus beneath it and a table of percentage identity. Then three unaligned sequences, aligned in the page when you ask.