Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

multivariantviewer

A JBrowse plugin that adds some custom glyphs for variants on a "multi VCF" file (VCF with multiple samples)

Options

Tracktype

  • MultiVariantViewer/View/Track/Grid - displays all genotypes for features
  • MultiVariantViewer/View/Track/LDTrack - displays ld triangle on the genome browser
  • MultiVariantViewer/View/Track/Matrix - displays all genotypes for features in matrix form

Style options

  • style->height - Pixel height for each sample. Default: 12 for grid, 1 for matrix
  • style->offset - Pixel offset between each sample. Default: 0
  • style->ref_color - Color for reference allele. Default grey
  • style->het_color - Color for heterozygous allele. Default cyan
  • style->hom_color - Color for homozygous allele. Default blue
  • style->no_call - Color for no call allele. Default white
  • style->matrixColor - If you make ref_color, het_color, no_call and hom_color null, then this function is called to determine the color. See below for function prototype

The matrixColor callback can change those colors if ref_color/het_color/hom_color are set to null. The matrixColor function signature is function(feature, type, genotype) where type is either 'ref', 'nocall', or 'alt' and genotype is the actual genotype as 0|0 or 0|1 or similar and feature contains all info about a particular variant

Grid specific options

  • showLabels - Display subtrack labels (default: true)
  • showTooltips - Display mouseover tooltips with subtrack name and description (default: true)
  • clickTooltips - Display tooltips on click instead of mouseover if showTooltips is true (default: false)
  • labelFont - Specify subtrack label font CSS e.g. "6px sans-serif"
  • labelWidth - Specify a specific width for all subtrack labels. Default autosizes to each sublabel's length, which can look ugly
  • includeIndels - Include indels. Default false since if these are overlapping it will complicate the display. By default only renders things with type SNV

Grid and matrix options

  • sublabels - An array of structures like {"name": "sample1", "color": "red", "description": "Optional description or sample displayed on mouseover", "population": "CEU"}
  • sublabelsCsv - A CSV file containing columns name,color,population (put a header for the column names in the CSV). Then set "sublabelsCsv": "sublabels.csv" for example
  • sortByPopulation - Sorts samples by population specified in sublabels. Also available from track menu
  • sortBySublabels - Sorts samples by the order of the sublabels in the config

The sublabels are optional, and the sample names from the VCF are shown if not specified, but coloring the labels and things can be added via sublabels

Matrix specific options

  • style.elt the height of a single element of the matrix

LD viewing options

  • ldviewer - URL for the linkage_server service. Default http://localhost:4730/
  • maf - Set minor allele frequency cutoff. Default 0.01

Example configuration

Simple config for Grid track type

[tracks.variant]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true

Simple config for the Matrix track type

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Matrix

Simple config for the LDTrack type

Assumes that the ldserver is running on port 4730 on localhost. Of course change localhost if serving to the public, and you may also want to reverse proxy the port onto port 80 to avoid any weird firewall blocking that would be the consequence of serving on a different port

[tracks.matrix]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/LDTrack
ldserver=http://localhost:4730/

More sophisticated config for Grid track type

You can also add colors and population info for the subtrackl labels

[tracks.variant_with_colors]
urlTemplate=file.vcf.gz
storeClass=JBrowse/Store/SeqFeature/VCFTabix
type=MultiVariantViewer/View/Track/Grid
showLabels=true
labelFont=4px sans-serif
style.height=10
sublabels+=json:{"name": "sample1", "color": "blue", "description": "mouseover description", "population": "CEU"}
sublabels+=json:{"name": "sample2", "color": "red", "description": "mouseover description", "population": "CEU"}

Note that sublabel config is not necessarily, it is only used to add colors and population info

Also note that adding style.height=10 sets how tall each subtrack is.

Example config in JSON format

The above configs are tracks.conf based, but you can do the same thing in trackList.json too

In trackList.json format

{
"type": "MultiVariantViewer/View/Track/Grid",
"urlTemplate": "variants.vcf.gz",
"label": "Variant track",
"storeClass": "JBrowse/Store/SeqFeature/VCFTabix",
"showLabels": true
}

Sample browser

See test subdirectory for example, you can use http://localhost/jbrowse/?data=plugins/MultiVariantViewer/test/data to see the sample data

Screenshots

Shows 1000genomes VCF data, tooltips on sidebar

Displays matrix of variants

Shows LD

Install plugin

Clone the repo to your plugins directory and name it MultiVariantViewer

git clone https://github.com/cmdcolin/multivariantviewer MultiVariantViewer

Then add it to your jbrowse config

"plugins": ["MultiVariantViewer"]

See http://gmod.org/wiki/JBrowse_FAQ#How_do_I_install_a_plugin for more details

linkage_server

Optionally, LD can be calculated from the VCF files on the server side using plink and rendered as a classic block view.

Pre-requisites linkage_server

  • tabix
  • plink2 aka plink 1.9

Install linkage_server

npm install

Run linkage_server

node linkage_server/index.js

You might also find it useful to use a node.js taskrunner like forever or pm2

About

A JBrowse plugin with a custom variant track for multi-VCF files and optionally plotting LD scores

Resources

Stars

10 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages