genomefeatures
Version:
A D3 based genome feature rendering
162 lines (123 loc) • 3.32 kB
Markdown
//img.shields.io/github/actions/workflow/status/GMOD/genomefeatures/push.yml?branch=main)](https://github.com/GMOD/genomefeatures/actions?query=branch%3Amain+workflow%3APush+)
[ ]: https://img.shields.io/npm/v/genomefeatures.png?style=flat-square
[ ]: https://www.npmjs.com/package/genomefeatures

Demo https://gmod.org/genomefeatures/
Storybook https://gmod.org/genomefeatures/storybook
Install from NPM
```bash
yarn add genomefeatures
```
Or see see [example/index.html](example/index.html) for CDN import style usage,
e.g.
The original implementation of this component required fetching data from an
Apollo REST API endpoint. This is still supported, though it is a overkill for
most usages
```typescript
import {
fetchApolloAPIData,
parseLocString,
GenomeFeatureViewer,
} from 'genomefeatures'
const BASE_URL = 'https://www.alliancegenome.org/apollo'
const locString = '2L:130639..135911'
const genome = 'fly'
const region = parseLocString(locString)
const trackData = await fetchApolloAPIFeatures({
region,
genome,
track: 'All Genes',
baseUrl: `${BASE_URL}/track/`,
})
const variantData = await fetchApolloAPIFeatures({
region,
genome,
track: 'Variants',
baseUrl: `${BASE_URL}/vcf/`,
})
const gfc = new GenomeFeatureViewer(
{
region,
genome,
tracks: [
{
type: 'ISOFORM_EMBEDDED_VARIANT',
trackData,
variantData,
},
],
},
`
900,
500,
)
```
And then in your HTML
```html
<svg id="svgelement"></svg>
```
After the refactor, we can now fetch files from static files like JBrowse 1
NCList and VCF tabix files. This means you do not need a complex apollo
deployment to use this component: just some static files
```typescript
import {
fetchNCListData,
fetchTabixVcfData,
parseLocString,
GenomeFeatureViewer,
} from 'genomefeatures'
const locString = '2L:130639..135911'
const genome = 'fly'
const vcfTabixUrl =
'https://s3.amazonaws.com/agrjbrowse/VCF/7.0.0/fly-latest.vcf.gz'
const ncListUrlTemplate =
'https://s3.amazonaws.com/agrjbrowse/docker/7.0.0/FlyBase/fruitfly/tracks/All_Genes/{refseq}/trackData.jsonz'
const region = parseLocString(locString)
const trackData = await fetchNCListData({
region,
urlTemplate: ncListUrlTemplate,
})
const variantData = await fetchTabixVcfData({
url: vcfTabixUrl,
region,
})
const gfc = new GenomeFeatureViewer(
{
region,
genome,
tracks: [
{
type: 'ISOFORM_EMBEDDED_VARIANT',
trackData,
variantData,
},
],
},
`
900,
500,
)
```
And then in your HTML
```html
<svg id="svgelement"></svg>
```
```bash
git clone git@github.com:GMOD/genomefeatures
yarn dev
yarn storybook
```
Originally called https://github.com/GMOD/GenomeFeatureComponent
Created by Nathan Dunn (@nathandunn), used by Alliance of Genome Resources
Updated in 2025 by Colin Diesh (@cmdcolin) to add ability to fetch from static
files
[![npm package][npm-badge]][npm]
[![Build Status](https: