Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
upload file and add recent tracks
  • Loading branch information
yuj12001 committed Jul 28, 2015
1 parent 5383bcf commit 18d2dd0
Show file tree
Hide file tree
Showing 2 changed files with 218 additions and 37 deletions.
1 change: 1 addition & 0 deletions Tile2contentsnpplotter.txt
@@ -1,3 +1,4 @@
CHROM CHROM_START CHROM_END GENESYMBOL SCORE STRAND
chrUn_gl000237 2659 2660 . 0 +
chrUn_gl000225 2877 2878 . 0 +
chrUn_gl000234 3210 3211 . 0 +
Expand Down
254 changes: 217 additions & 37 deletions VQI_GenomeBrowser.js
Expand Up @@ -86,6 +86,22 @@ function VQI_GenomeBrowser(id, serviceURL) {
browseToGene();
}
};
var addRecentTrack = function(){
console.log(trackInfo);
var track = $("#" + divId + " #RecentTracks").val();
for (i in trackList){
if (trackList[i]['name'] == track){
return;
}
}
for (i in trackInfo){

if (trackInfo[i].name == track){
self.addOneTrackFromDatabase(trackInfo[i].fileHandle,track,trackInfo[i].type);
break;
}
}
}
/*this.makeNavigationForm = function () {
var navigateBox = "<input type='text' name='navigate' id='navigate' size='30'>";
var navigateButton = "<input type='button' id='navigatebutton' value='Go To'>";
Expand Down Expand Up @@ -364,6 +380,57 @@ function VQI_GenomeBrowser(id, serviceURL) {
$("#" + divId + " #exporttrackbutton").on("click", exportTrack.bind(this));
}
this.makeFormForExportTrack();*/
this.makeUploadForm = function() {

var fileInput = document.createElement('input');
fileInput.type = 'file';


fileInput.addEventListener('change', function (e) {
var file = fileInput.files[0];
var textType = /text.*/;
if (file.type.match(textType)) {
var reader = new FileReader();

reader.onload = function (e) {
var Data = reader.result;
uploadFile(Data);
}

reader.readAsText(file);

} else {
alert("File not supported!");

}

});

var f = document.createElement("form");
f.innerHTML = "Add track by uploading file: ";
f.appendChild(fileInput);
$("#" + divId).append(f);
}
this.makeUploadForm();

this.makeRecentTrackForm = function (){
var trackSelect = "Recent tracks: <select name='RecentTracks' id='RecentTracks'>";
for (var i in trackInfo) {
var thisTrack = trackInfo[i];
var text = thisTrack.name;
var value = thisTrack.name;
trackSelect += "<option value='" + value + "'>" + text + "</option>";
}
trackSelect += "</select>";

var addTrackButton = "<input type='button' id='addTrackButton' value='Add Track'>";
var form = "<form id='colocalization_form'>" + trackSelect + addTrackButton + "</form>";
$("#" + divId).append(form);
$("#" + divId + " #addTrackButton").on("click", addRecentTrack.bind(this));
}
this.makeRecentTrackForm();



this.makeSelectionForm = function () {
var removeButton = "<input type='button' id='removetrackbutton' value='Remove Track'>";
Expand Down Expand Up @@ -478,6 +545,38 @@ function VQI_GenomeBrowser(id, serviceURL) {
$("#" + divId + " #navigate").val(chrom_curr + ":" + Math.round(xScale.domain()[0]) + "-" + Math.round(xScale.domain()[1]));
};

var uploadFile = function(data){
var rows = data.split("\n");
headerArray = rows[0].split("\t");

for (i in headerArray) {
indexArray[headerArray[i]] = i;
}

$.ajax({
url: serviceURL,
type: 'POST',
dataType: "json",
data: {
"header": headerArray,
"indexArray": indexArray,
"upload": data
}

}).success(function (data) {
var CurrentFileHandle = data;
console.log(CurrentFileHandle);
trackInfo.push({name: CurrentFileHandle, type: "bed", fileHandle: CurrentFileHandle});
updateRecentTrackDropDown();
self.addOneTrackFromDatabase(CurrentFileHandle,CurrentFileHandle,"bed");
//self.loadData(CurrentFileHandle);
//setTimeout(function() { this.getCurrentData(); }, 1000);

}).error(function (req, status, error) {
$("body").append(status + ": " + error);
});
}

var updateTrack = function(){

if (isready){
Expand All @@ -494,43 +593,73 @@ function VQI_GenomeBrowser(id, serviceURL) {
// .range([0,1000]);

var chrom = "chr1";
var fileHandles = [];
var name = [];
for (i in trackList) {
for(j in trackInfo){
if(trackInfo[j].name == trackList[i].name){
fileHandles.push(trackInfo[j].fileHandle);
break;
}
}
name.push(trackList[i].name);
}

$.ajax({
url: serviceURL,
type: 'POST',
dataType: "json",
data: {
"getTrackData": "",
"fileHandles": [trackInfo[0].fileHandle,trackInfo[1].fileHandle,trackInfo[2].fileHandle],
"name": [trackInfo[0].name,trackInfo[1].name,trackInfo[2].name],
"fileHandles": fileHandles,
"name": name,
"chrom": chrom,
"start": start,
"end": end
}

}).success(function (returnData) {
//console.log(returnData);
var i = getTrackIndexByName("HG19");
trackList[i] = returnData["HG19"][0];
trackList[i]['name'] = "HG19";
trackList[i]['type'] = "bed";
//console.log(trackList);
addBEDTrack(returnData["HG19"][0], "HG19",returnData["HG19"][1]);
for (i in trackList){
var name = trackList[i]['name'];
var type = trackList[i]['type'];
trackList[i] = returnData[name];
trackList[i]['name'] = name;
trackList[i]['type'] = type;
if (name == "HG19"){
addBEDTrack(returnData[name][0], name, returnData[name][1]);
}
else if (name == "cpg"){
addCpgTrack(returnData[name], name);
}
else{
addBEDTrack(returnData[name], name);
//console.log("hellow");
}
}

var i = getTrackIndexByName("Tile2 Content Snp");
trackList[i] = returnData["Tile2 Content Snp"];
trackList[i]['name'] = "Tile2 Content Snp";
trackList[i]['type'] = "bed";
//console.log(trackList);
addBEDTrack(returnData["Tile2 Content Snp"], "Tile2 Content Snp");
//console.log(trackList);

var i = getTrackIndexByName("cpg");
trackList[i] = returnData["cpg"];
trackList[i]['name'] = "cpg";
trackList[i]['type'] = "cpg";
//console.log(trackList);
addCpgTrack(returnData["cpg"], "cpg");
// var i = getTrackIndexByName("HG19");
// trackList[i] = returnData["HG19"];
// trackList[i]['name'] = "HG19";
// trackList[i]['type'] = "bed";
// //console.log(trackList);
// addBEDTrack(returnData["HG19"][0], "HG19",returnData["HG19"][1]);

// var i = getTrackIndexByName("Tile2 Content Snp");
// trackList[i] = returnData["Tile2 Content Snp"];
// trackList[i]['name'] = "Tile2 Content Snp";
// trackList[i]['type'] = "bed";
// //console.log(trackList);
// addBEDTrack(returnData["Tile2 Content Snp"], "Tile2 Content Snp");
// //console.log(trackList);

// var i = getTrackIndexByName("cpg");
// trackList[i] = returnData["cpg"];
// trackList[i]['name'] = "cpg";
// trackList[i]['type'] = "cpg";
// //console.log(trackList);
// addCpgTrack(returnData["cpg"], "cpg");


zoomOnly = true;
Expand Down Expand Up @@ -711,7 +840,9 @@ function VQI_GenomeBrowser(id, serviceURL) {

data['name'] = name;
clipPath.attr("height", Number(svg.attr("height")));
zoomOnly = true;
zoomed();
zoomOnly = false;
return data;
}

Expand Down Expand Up @@ -1058,16 +1189,16 @@ function VQI_GenomeBrowser(id, serviceURL) {

// //addHeightTrack(thisData, name);

// $(trackScalableGroup.selectAll('*')[0]).tipsy({
// gravity: 'n',
// html: true,
// follow: 'x',
// title: function () {
// var d = this.__data__;
// var name = (d.length > indexArray.name) ? d[indexArray.name] : '';
// return name + " (" + d[indexArray.chr] + " : " + d[indexArray.start] + " - " + d[indexArray.end] + ")";
// }
// });
$(trackScalableGroup.selectAll('*')[0]).tipsy({
gravity: 'n',
html: true,
follow: 'x',
title: function () {
var d = this.__data__;
var name = (d.length > indexArray.name) ? d[indexArray.name] : '';
return name + " (" + d[indexArray.chr] + " : " + d[indexArray.start] + " - " + d[indexArray.end] + ")";
}
});
}

/* var addHeightTrack = function (data, name) {
Expand Down Expand Up @@ -1199,24 +1330,33 @@ function VQI_GenomeBrowser(id, serviceURL) {
// .range([0,1000]);

var chrom = "chr1";

var fileHandles = [];
var name = [];
for (i in trackInfo) {
fileHandles.push(trackInfo[i].fileHandle);
name.push(trackInfo[i].name);
}

$.ajax({
url: serviceURL,
type: 'POST',
dataType: "json",
data: {
"getStartEndTrackData": "",
"fileHandles": [trackInfo[0].fileHandle,trackInfo[1].fileHandle,trackInfo[2].fileHandle],
"name": [trackInfo[0].name, trackInfo[1].name,trackInfo[2].name],
"fileHandles": fileHandles,
"name": name,
"chrom": chrom
}

}).success(function (returnData) {
//console.log(returnData);
thisObj.addTrack(returnData[0], "HG19", "bed");
thisObj.addTrack(returnData[1], "Tile2 Content Snp", "bed");
thisObj.addTrack(returnData[2], "cpg", "cpg");
for (i in trackInfo){
thisObj.addTrack(returnData[i], trackInfo[i].name, trackInfo[i].type);
}
//console.log
// thisObj.addTrack(returnData[0], "HG19", "bed");
// thisObj.addTrack(returnData[1], "Tile2 Content Snp", "bed");
// thisObj.addTrack(returnData[2], "cpg", "cpg");
isready = true;
updateTrack();
}).error(function (req, status, error) {
Expand All @@ -1226,6 +1366,33 @@ function VQI_GenomeBrowser(id, serviceURL) {

}

this.addOneTrackFromDatabase = function(fileHandle,name,type){

var chrom = "chr1";

$.ajax({
url: serviceURL,
type: 'POST',
dataType: "json",
data: {
"getStartEndTrackData": "",
"fileHandles": [fileHandle],
"name": [name],
"chrom": chrom
}

}).success(function (returnData) {


thisObj.addTrack(returnData[0], name, type);
//console.log(trackList);
isready = true;
updateTrack();
}).error(function (req, status, error) {
$("body").append(status + ": " + error);
});
}

this.addTrack = function (data, name, type) {
// data['name'] = name;
if(data[0][0] != "chrom")
Expand Down Expand Up @@ -1532,6 +1699,19 @@ function VQI_GenomeBrowser(id, serviceURL) {

};

var updateRecentTrackDropDown = function () {
var trackSelect = $("#" + divId + " #RecentTracks");
selectBox = trackSelect.get(0);
selectBox.options.length = 0;
var optionIndex = 0;
for (var i in trackInfo) {
var text = trackInfo[i].name;
var value = text;
selectBox.options[optionIndex++] = new Option(text, value);
}

};

var exportTrackToText = function (data, filename) {

temp = [];
Expand Down

0 comments on commit 18d2dd0

Please sign in to comment.