
Install
$ npm install --save @gmod/indexedfasta
Usage
const { IndexedFasta, BgzipIndexedFasta } = require('@gmod/indexedfasta')
const t = new IndexedFasta({
path: 'test.fa',
faiPath: 'test.fa.fai',
})
const t = new BgzipIndexedFasta({
path: 'test.fa.gz',
faiPath: 'test.fa.gz.fai',
gziPath: 'test.fa.gz.gzi',
})
const chr1Region = await t.getSequence('chr1', 0, 10)
const chr1Bases = await t.getSequence('chr1')
const allSequenceSizes = await t.getSequenceSizes()
const chr1Size = await t.getSequenceSize('chr1')
const seqNames = await t.getSequenceNames()
If you are using in the browser, you may use the generic-filehandle package and
initialize like this
import { IndexedFasta, BgzipIndexedFasta } from '@gmod/indexedfasta'
import { RemoteFile } from 'generic-filehandle'
const t = new IndexedFasta({
fasta: new RemoteFile('http://yoursite.com/test.fa'),
fai: new RemoteFile('http://yoursite.com/test.fa.fai'),
})
const t = new BgzipIndexedFasta({
fasta: new RemoteFile('http://yoursite.com/test.fa.gz'),
fai: new RemoteFile('http://yoursite.com/test.fa.gz.fai'),
gzi: new RemoteFile('http://yoursite.com/test.fa.gz.gzi'),
})
In node.js you can also access remote files with generic-filehandle, but you
would supply a fetch function e.g.
import { IndexedFasta, BgzipIndexedFasta } from '@gmod/indexedfasta'
import { RemoteFile } from 'generic-filehandle'
import fetch from 'cross-fetch'
const t = new IndexedFasta({
fasta: new RemoteFile('http://yoursite.com/test.fa', { fetch }),
fai: new RemoteFile('http://yoursite.com/test.fa.fai', { fetch }),
})
Academic Use
This package was written with funding from the NHGRI as
part of the JBrowse project. If you use it in an academic
project that you publish, please cite the most recent JBrowse paper, which will
be linked from jbrowse.org.
License
MIT © Colin Diesh