Skip to content

Commit

Permalink
igv example uses positions instead of gene names
Browse files Browse the repository at this point in the history
  • Loading branch information
kloivenn committed Aug 7, 2023
1 parent 308b8df commit f6187a6
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 20 deletions.
101 changes: 101 additions & 0 deletions docs/rlc/tutorials/igv/localBam.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<!--Based on the example from https://igv.org/web/release/2.2.2/examples/localBam.html -->
<head>
<title>IGV - Local Bam</title>
<script src="https://cdn.jsdelivr.net/npm/igv@2.15.5/dist/igv.min.js"></script>
</head>

<body>
<div id="linked-charts">
<table><tr>
<td id="A1"></td>
<td id="A2"></td>
</tr></table>
</div>
<div>
<p>
<label>BAM file and index
<input id="fileWidget" type="file" multiple="true" accept=".bam,.bai" onchange="load()"/>
</label>
</p>
</div>

<script type="text/javascript">

var igvBrowser;

document.addEventListener("DOMContentLoaded", function () {

var div = document.getElementById("A2");
var options = {
locus: "TSPAN6", // OPTIONAL, open at a specific location
genome: "hg38"
};
igv.createBrowser(div, options)
.then(function (b) {
igvBrowser = b;
})
})

function load() {

var fileWidget = document.getElementById("fileWidget");
var files = fileWidget.files;

// Find BAM files and cache index files. Note there are 2 index naming conventions, .bam.bai and .bai
// This scheme catches both.
var bamFiles = [];
var indexFiles = {};

for (let file of files) {
if (file.name.endsWith(".bam")) {
bamFiles.push(file);
}
else if (file.name.endsWith(".bai")) {
var key = getKey(file.name);
indexFiles[key] = file;
}
else {
alert("Unsupported file type: " + file.name);
}
}

// Create track objects
var trackConfigs = [];

for (let file of bamFiles) {

var key = getKey(file.name);
var indexFile = indexFiles[key];
if (indexFile) {
trackConfigs.push({
name: file.name,
type: "alignment",
format: "bam",
height: 150,
url: file,
indexURL: indexFile
})
}
else {
alert("No index file for: " + file.name);
}
}

if (trackConfigs.length > 0) {
igvBrowser.loadTrackList(trackConfigs);
}


function getKey(filename) {
var idx = filename.indexOf(".");
if (idx < 0) {
console.error("File with no extension: " + filename);
}
else {
return filename.substring(0, idx);
}

}
}
</script>
</body>
6 changes: 1 addition & 5 deletions example/igv_browser/localBam.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,13 @@
</p>
</div>

<div id="myDiv" style="padding-top: 50px;padding-bottom: 20px; border-style: inset; height: auto">
</div>


<script type="text/javascript">

var igvBrowser;

document.addEventListener("DOMContentLoaded", function () {

var div = document.getElementById("myDiv");
var div = document.getElementById("A2");
var options = {
locus: "TSPAN6", // OPTIONAL, open at a specific location
genome: "hg38"
Expand Down
20 changes: 5 additions & 15 deletions example/igv_browser/run_browser.R
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ load("src/oscc.rda")

app <- openPage(useViewer = FALSE, startPage = "localBam.html")

gene <- 1
gene <- "TSPAN6"

lc_scatter(dat(
x = voomResult$AveExpr,
Expand All @@ -14,20 +14,10 @@ lc_scatter(dat(
size = 1.3,
on_click = function(k) {
geneName <- rownames(voomResult)[k]
position <- paste0("chr", gene_positions[geneName, "chr"], ":",
gene_positions[geneName, "start"], "-",
gene_positions[geneName, "end"])
com <- paste0("igvBrowser.search('", geneName, "')")
app$getSession(.id)$sendCommand(com)
gene <<- k; updateCharts("A2")
} ),
"A1")

countsums <- colSums(countMatrix)

lc_scatter(dat(
x = sampleTable$patient,
y = countMatrix[gene,] / countsums * 1e6 + .1,
logScaleY = 10,
colorValue = sampleTable$tissue,
title = rownames(countMatrix)[gene],
axisTitleY = "counts per million (CPM)",
ticksRotateX = 45),
"A2")
"A1")

0 comments on commit f6187a6

Please sign in to comment.