Skip to content
GMODPublic

About

Read UCSC Trix indexes in pure JavaScript

Resources

Contributing

Stars

0 stars

Watchers

16 watching

Forks

Repository files navigation

Build Status

trix-js

Read UCSC Trix indexes in pure JavaScript

Install

npm install @gmod/trix

Usage

import Trix from '@gmod/trix'
import { RemoteFile } from 'generic-filehandle2'

// generic-filehandle2 also has LocalFile for files on disk
const trix = new Trix(
  new RemoteFile('https://jbrowse.org/genomes/GRCh38/trix/hg38.ixx'),
  new RemoteFile('https://jbrowse.org/genomes/GRCh38/trix/hg38.ix'),
)

const results = await trix.search('oca')
// => [[term, record], ...]

API

new Trix(ixxFile, ixFile, maxResults?)

  • ixxFile - filehandle for the .ixx file
  • ixFile - filehandle for the .ix file
  • maxResults - most results a search returns, default 20. Also settable afterwards as trix.maxResults

Any object with read(length, position, opts?) resolving to a Uint8Array and readFile({ encoding: 'utf8' }) resolving to a string works, which includes every generic-filehandle2 handle. The exported Filehandle type describes it.

trix.search(searchString, opts?)

Prefix-searches the index and resolves to [term, record][], where term is the indexed word that matched and record is the key it points to. Records are deduplicated, so two terms hitting the same record yield one result.

  • searchString - the query; only its first whitespace-separated word is used
  • opts.signal - an AbortSignal to cancel the underlying reads

Reading over HTTP

A search fetches the .ixx once, then reads the .ix in 64 KiB pieces from the matching checkpoint. A typeahead's consecutive keystrokes read nearby offsets, so typing spd_00 into the 1.7 MB test index makes six reads at three distinct offsets. With @gmod/range-cache-filehandle under both filehandles, three 256 KiB chunks serve all six, and backspacing needs no new fetch:

import { RemoteFileWithRangeCache } from '@gmod/range-cache-filehandle'

const trix = new Trix(
  new RemoteFileWithRangeCache(`${url}.ixx`),
  new RemoteFileWithRangeCache(`${url}.ix`),
)

Reference

See the UCSC trix documentation for the concepts, and ixixx-js for a JavaScript implementation of the ixIxx command that builds these indexes.

See CONTRIBUTING.md for development and release steps.

About

Read UCSC Trix indexes in pure JavaScript

Resources

Contributing

Stars

0 stars

Watchers

16 watching

Forks

Releases

Packages

Used by

Contributors

Languages