JBrowse 2 · Build Your Own examples

Every chromosome in one view

One view shows the 24 human chromosomes side by side.

view.showAllRegionsInAssembly() shows all 455 sequences in hg38. The _alt, _random and chrUn_ scaffolds are each too narrow to draw, so the view elides them into grey blocks. A FASTA file has no field that marks chromosomes, so the demo lists the 24 by name.

View source — 52 lines
import {
  EmbedProvider,
  RegionSeams,
  Scalebar,
  TrackStack,
} from '@jbrowse/display-ui/embed'
import { useCreateViewState } from '@jbrowse/react-linear-genome-view2'
import { observer } from 'mobx-react'

const chromosomes = [
  ...Array.from({ length: 22 }, (_, i) => `chr${i + 1}`),
  'chrX',
  'chrY',
]

const EveryChromosome = observer(function EveryChromosome() {
  const state = useCreateViewState({
    assembly: {
      name: 'hg38',
      uri: 'https://jbrowse.org/genomes/GRCh38/fasta/hg38.prefix.fa.gz',
      refNameAliases: {
        uri: 'https://jbrowse.org/genomes/GRCh38/hg38_aliases.txt',
      },
    },
    tracks: [
      {
        trackId: 'hg38_phylop',
        name: 'phyloP 100-way conservation',
        uri: 'https://hgdownload.soe.ucsc.edu/goldenpath/hg38/phyloP100way/hg38.phyloP100way.bw',
        displayDefaults: { height: 120, color: '#3a7ca5' },
      },
    ],
    view: {
      loc: chromosomes.join(' '),
      tracks: ['hg38_phylop'],
    },
  })
  if (!state) {
    return null
  }
  const { session } = state
  return (
    <EmbedProvider session={session}>
      <TrackStack view={session.view}>
        <Scalebar view={session.view} />
        <RegionSeams view={session.view} />
      </TrackStack>
    </EmbedProvider>
  )
})

export default EveryChromosome