UNPKG

@gmod/jbrowse

Version:

JBrowse - client-side genome browser

106 lines (102 loc) 20.8 kB
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Track Metadata · JBrowse</title><meta name="viewport" content="width=device-width"/><meta name="generator" content="Docusaurus"/><meta name="description" content="JBrowse supports two ways to add data that describes tracks (track metadata): it can either be embedded directly in the track&#x27;s configuration stanza, or it can come from a separate file that JBrowse loads. Track metadata is shown both when a user clicks &quot;About this track&quot; from a track&#x27;s menu, and in the faceted track selector if it is in use."/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Track Metadata · JBrowse"/><meta property="og:type" content="website"/><meta property="og:url" content="https://jbrowse.org/index.html"/><meta property="og:description" content="JBrowse supports two ways to add data that describes tracks (track metadata): it can either be embedded directly in the track&#x27;s configuration stanza, or it can come from a separate file that JBrowse loads. Track metadata is shown both when a user clicks &quot;About this track&quot; from a track&#x27;s menu, and in the faceted track selector if it is in use."/><meta name="twitter:card" content="summary"/><link rel="shortcut icon" href="/img/favicon.ico"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css"/><link rel="alternate" type="application/atom+xml" href="https://jbrowse.org/blog/atom.xml" title="JBrowse Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://jbrowse.org/blog/feed.xml" title="JBrowse Blog RSS Feed"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><link rel="stylesheet" href="/css/main.css"/></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/"><h2 class="headerTitle">JBrowse</h2></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class=""><a href="/blog" target="_self">Blog</a></li><li class="siteNavGroupActive"><a href="/docs/installation.html" target="_self">Documentation</a></li><li class=""><a href="/en/demos.html" target="_self">Demos</a></li><li class=""><a href="/en/developers.html" target="_self">Developers</a></li><li class=""><a href="/en/contact.html" target="_self">Contact</a></li><li class=""><a href="/en/references.html" target="_self">References</a></li><li class=""><a href="/en/help.html" target="_self">Help</a></li></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="container docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><i></i></div><h2><i></i><span>Advanced configuration</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">Tutorial</h3><ul><li class="navListItem"><a class="navItem" href="/docs/installation.html">Installation</a></li><li class="navListItem"><a class="navItem" href="/docs/tutorial.html">Indexed file formats tutorial</a></li><li class="navListItem"><a class="navItem" href="/docs/tutorial_classic.html">Classic quick-start guide</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Configuring tracks</h3><ul><li class="navListItem"><a class="navItem" href="/docs/reference_sequence.html">Reference sequence configuration</a></li><li class="navListItem"><a class="navItem" href="/docs/canvas_features.html">CanvasFeatures</a></li><li class="navListItem"><a class="navItem" href="/docs/html_features.html">HTMLFeatures</a></li><li class="navListItem"><a class="navItem" href="/docs/alignments.html">Alignments tracks</a></li><li class="navListItem"><a class="navItem" href="/docs/bigwig.html">Wiggle/BigWig Tracks</a></li><li class="navListItem"><a class="navItem" href="/docs/variants.html">VCF tracks</a></li><li class="navListItem"><a class="navItem" href="/docs/minimal.html">Minimal JBrowse configurations</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Advanced configuration</h3><ul><li class="navListItem"><a class="navItem" href="/docs/embedding.html">Embedding JBrowse</a></li><li class="navListItem"><a class="navItem" href="/docs/mouse_configs.html">Mouse clicks, menus, and popups</a></li><li class="navListItem"><a class="navItem" href="/docs/configuration_file_formats.html">Configuration File Formats</a></li><li class="navListItem"><a class="navItem" href="/docs/dataset_selector.html">Dataset Selector</a></li><li class="navListItem"><a class="navItem" href="/docs/track_selectors.html">Track Selectors</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/track_metadata.html">Track Metadata</a></li><li class="navListItem"><a class="navItem" href="/docs/global_options.html">Global configuration options</a></li><li class="navListItem"><a class="navItem" href="/docs/compression.html">Compressing JBrowse data</a></li><li class="navListItem"><a class="navItem" href="/docs/authentication.html">HTTP authentication for JBrowse</a></li><li class="navListItem"><a class="navItem" href="/docs/paired_reads.html">Paired read viewing</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Command line</h3><ul><li class="navListItem"><a class="navItem" href="/docs/flatfile-to-json.pl.html">flatfile-to-json.pl</a></li><li class="navListItem"><a class="navItem" href="/docs/remove-track.pl.html">remove-track.pl</a></li><li class="navListItem"><a class="navItem" href="/docs/ucsc-to-json.pl.html">ucsc-to-json.pl</a></li><li class="navListItem"><a class="navItem" href="/docs/generate-names.pl.html">generate-names.pl</a></li><li class="navListItem"><a class="navItem" href="/docs/prepare-refseqs.pl.html">prepare-refseqs.pl</a></li><li class="navListItem"><a class="navItem" href="/docs/biodb-to-json.pl.html">biodb-to-json.pl</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">JBrowse Desktop</h3><ul><li class="navListItem"><a class="navItem" href="/docs/jbrowse_desktop.html">JBrowse Desktop</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">FAQ</h3><ul><li class="navListItem"><a class="navItem" href="/docs/faq.html">JBrowse FAQ</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Other topics</h3><ul><li class="navListItem"><a class="navItem" href="/docs/url_strings.html">JBrowse URL parameters</a></li><li class="navListItem"><a class="navItem" href="/docs/image_tracks.html">Pre-rendered Image Tracks</a></li><li class="navListItem"><a class="navItem" href="/docs/feature_coverage.html">Feature Coverage Tracks</a></li><li class="navListItem"><a class="navItem" href="/docs/screenshots.html">Automating screenshots of JBrowse</a></li><li class="navListItem"><a class="navItem" href="/docs/events.html">JBrowse Subscribe/Publish events</a></li><li class="navListItem"><a class="navItem" href="/docs/perl_config.html">Sample configuration bash script</a></li><li class="navListItem"><a class="navItem" href="/docs/data_formats.html">JBrowse REST API and Data APIs</a></li><li class="navListItem"><a class="navItem" href="/docs/plugins.html">Installing and writing plugins</a></li><li class="navListItem"><a class="navItem" href="/docs/cors.html">Cross-origin resource sharing (CORS)</a></li><li class="navListItem"><a class="navItem" href="/docs/sparql.html">SPARQL configuration</a></li><li class="navListItem"><a class="navItem" href="/docs/data_export.html">Data export</a></li><li class="navListItem"><a class="navItem" href="/docs/usage_stats.html">Usage Statistics</a></li></ul></div></div></section></div><script> document.addEventListener('DOMContentLoaded', function() { createToggler('#navToggler', '#docsNav', 'docsSliderActive'); createToggler('#tocToggler', 'body', 'tocActive'); const headings = document.querySelector('.toc-headings'); headings && headings.addEventListener('click', function(event) { if (event.target.tagName === 'A') { document.body.classList.remove('tocActive'); } }, false); function createToggler(togglerSelector, targetSelector, className) { var toggler = document.querySelector(togglerSelector); var target = document.querySelector(targetSelector); toggler.onclick = function(event) { event.preventDefault(); target.classList.toggle(className); }; } }); </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><h1 class="postHeaderTitle">Track Metadata</h1></header><article><div><span><p>JBrowse supports two ways to add data that describes tracks (track metadata): it can either be embedded directly in the track's configuration stanza, or it can come from a separate file that JBrowse loads. Track metadata is shown both when a user clicks &quot;About this track&quot; from a track's menu, and in the faceted track selector if it is in use.</p> <h2><a class="anchor" aria-hidden="true" id="embedding-track-metadata-in-jbrowse-configuration"></a><a href="#embedding-track-metadata-in-jbrowse-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Embedding Track Metadata in JBrowse Configuration</h2> <p>Each track configuration stanza can include a <code>metadata</code> item that contains items of data that describe the track. For example, to describe a BAM track containing alignments of RNA-seq reads from Volvox carteri under conditions of caffeine starvation, a track configuration might contain:</p> <pre><code class="hljs css languages- {.javascript}"> { <span class="hljs-attr">"storeClass"</span> : <span class="hljs-string">"JBrowse/Store/SeqFeature/BAM"</span>, <span class="hljs-attr">"urlTemplate"</span> : <span class="hljs-string">"../../raw/volvox/volvox-sorted.bam"</span>, <span class="hljs-attr">"style"</span> : { <span class="hljs-attr">"className"</span> : <span class="hljs-string">"alignment"</span>, <span class="hljs-attr">"arrowheadClass"</span> : <span class="hljs-string">"arrowhead"</span>, <span class="hljs-attr">"labelScale"</span> : <span class="hljs-number">100</span> }, <span class="hljs-attr">"label"</span> : <span class="hljs-string">"volvox-sorted.bam"</span>, <span class="hljs-attr">"type"</span> : <span class="hljs-string">"JBrowse/View/Track/Alignments"</span>, <span class="hljs-attr">"key"</span> : <span class="hljs-string">"volvox-sorted.bam"</span>, <span class="hljs-attr">"metadata"</span>: { <span class="hljs-attr">"Description"</span>: <span class="hljs-string">"RNA-seq"</span>, <span class="hljs-attr">"Conditions"</span>: <span class="hljs-string">"caffeine starvation"</span>, <span class="hljs-attr">"Species"</span>: <span class="hljs-string">"Volvox carteri"</span>, <span class="hljs-attr">"Data Provider"</span>: <span class="hljs-string">"Robert Buels Institute for Example Data"</span> } } </code></pre> <h3><a class="anchor" aria-hidden="true" id="loading-track-metadata-from-files"></a><a href="#loading-track-metadata-from-files" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Loading Track Metadata from Files</h3> <p>To add track metadata from an external file to JBrowse, add a <code>trackMetadata</code> section to the JBrowse configuration.</p> <p>JBrowse currently supports track metadata that in Excel-compatible comma-separated-value (CSV) format, but additional track metadata backends are relatively easy to add. Write the JBrowse mailing list if you have a strong need to use another format.</p> <table> <thead> <tr><th>Option</th><th>Value</th></tr> </thead> <tbody> <tr><td><code>trackMetadata.sources</code></td><td>Array of source definitions, each of which takes the form <code>{ type: 'csv', url: '/path/to/file' }</code>. The url is interpreted as relative to the url of the page containing JBrowse (index.html in default installations). Source definitions can also contain a <code>class</code> to explicitly specify the JavaScript backend used to handle this source.</td></tr> <tr><td><code>trackMetadata.indexFacets</code></td><td>Optional array of facet names that should be the only ones made searchable. This can be used improve the speed and memory footprint of JBrowse on the client by not indexing unused metadata facets.</td></tr> </tbody> </table> <p>Hint: to convert JBrowse JSON files to a csv, try using jq <a href="https://stedolan.github.io/jq">https://stedolan.github.io/jq</a></p> <p>Example:</p> <p><code>cat trackList.json| jq -r '.tracks[] | [.label,.key] | @csv'</code></p> <p>Will produce a CSV with the label and key of each track in your trackList.json</p> <p>Another for thing you can do with jq is add config variables directly to your trackList, for example</p> <p><code>cat trackList.json| jq -r '.tracks[].maxExportSpan=50000'</code></p> <h3><a class="anchor" aria-hidden="true" id="example"></a><a href="#example" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Example</h3> <p>Configuration:</p> <pre><code class="hljs css languages- {.javascript}"> <span class="hljs-string">"trackMetadata"</span>: { <span class="hljs-string">"indexFacets"</span>: [ <span class="hljs-string">"category"</span>,<span class="hljs-string">"organism"</span>,<span class="hljs-string">"target"</span>,<span class="hljs-string">"technique"</span>,<span class="hljs-string">"principal_investigator"</span>, <span class="hljs-string">"factor"</span>,<span class="hljs-string">"developmental-stage"</span>,<span class="hljs-string">"strain"</span>,<span class="hljs-string">"cell-line"</span>,<span class="hljs-string">"tissue"</span>,<span class="hljs-string">"compound"</span>, <span class="hljs-string">"temperature"</span> ], <span class="hljs-string">"sources"</span>: [ { <span class="hljs-string">"type"</span>: <span class="hljs-string">"csv"</span>, <span class="hljs-string">"url"</span>: <span class="hljs-string">"myTrackMetaData.csv"</span> } ] } </code></pre> <p>Note: use lower case values for the facet names / column names in the CSV. Use renameFacets to give them other names. See #Faceted_track_selector for details.</p> <p>Track metadata CSV:</p> <table> <thead> <tr><th>label</th><th>technique</th><th>factor</th><th>target</th><th>principal_investigator</th><th>submission</th><th>category</th><th>type</th><th>Developmental-Stage</th></tr> </thead> <tbody> <tr><td>fly/White_INSULATORS_WIG/BEAF32</td><td>ChIP-chip</td><td>BEAF-32</td><td>Non TF Chromatin binding factor</td><td>White, K.</td><td>21</td><td>Other chromatin binding sites</td><td>data set</td><td>Embryos 0-12 hr</td></tr> <tr><td>fly/White_INSULATORS_WIG/CP190</td><td>ChIP-chip</td><td>CP190</td><td>Non TF Chromatin binding factor</td><td>White, K.</td><td>22</td><td>Other chromatin binding sites</td><td>data set</td><td>Embryos 0-12 hr</td></tr> <tr><td>fly/White_INSULATORS_WIG/GAF</td><td>ChIP-chip</td><td>GAF</td><td>Non TF Chromatin binding factor</td><td>White, K.</td><td>23</td><td>Other chromatin binding sites</td><td>data set</td><td>Embryos 0-12 hr</td></tr> <tr><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td></tr> </tbody> </table> <p>Note that the <strong>label</strong> for each track metadata row must correspond to the <code>label</code> in the track configuration for the track it describes.</p> <p>Hint to set track key from metadata: if a track has no <code>key</code> set in its track configuration, JBrowse will look for a <code>key</code> in its track metadata, and use that if it is present.</p> <h3><a class="anchor" aria-hidden="true" id="track-metadata-options"></a><a href="#track-metadata-options" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Track metadata options</h3> <p>trackMetadata.sources - array of metadata source objects</p> <p>Each source can have</p> <p>-url - a URL (relative to JBrowse root directory, or absolute URL) -type - can be CSV, JSON or something else. inferred from the filename of the URL if none specified -storeClass - can be any store class, defaults to 'dojox/data/CsvStore' for CSV type and 'dojox/data/JsonRestStore' for JSON type</p> <p>Example:</p> <pre><code class="hljs"> <span class="hljs-string">"trackMetadata"</span>: { <span class="hljs-string">"sources"</span>: [ { <span class="hljs-string">"type"</span>: <span class="hljs-string">"csv"</span>, <span class="hljs-string">"url"</span>: <span class="hljs-string">"data/myTrackMetaData.csv"</span> } ] } </code></pre> <p>This would load data/myTrackMetaData.csv, e.g. from your data folder. Note trackMetadata blocks can be specified in the trackList.json or a global config file</p> </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/track_selectors.html">← Track Selectors</a><a class="docs-next button" href="/docs/global_options.html">Global configuration options →</a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#embedding-track-metadata-in-jbrowse-configuration">Embedding Track Metadata in JBrowse Configuration</a><ul class="toc-headings"><li><a href="#loading-track-metadata-from-files">Loading Track Metadata from Files</a></li><li><a href="#example">Example</a></li><li><a href="#track-metadata-options">Track metadata options</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="sitemap"><div><h5>Docs</h5><a href="/blog">Blog</a><a href="/docs/tutorial.html">Getting Started</a></div><div><h5>Community</h5><a href="https://gitter.im/GMOD/jbrowse">Project Chat</a><a href="https://twitter.com/JBrowseGossip" target="_blank" rel="noreferrer noopener">Twitter</a></div><div><h5>More</h5><a href="https://github.com/GMOD/jbrowse">GitHub</a><a class="github-button" href="https://github.com/GMOD/jbrowse" data-icon="octicon-star" data-count-href="/GMOD/jbrowse/stargazers" data-show-count="true" data-count-aria-label="# stargazers on GitHub" aria-label="Star this project on GitHub">Star</a></div></section><section class="copyright">Copyright © 2019 Evolutionary Software Foundation</section></footer></div></body></html>