Skip to content

Instantly share code, notes, and snippets.

@smith13mr
Created February 25, 2016 15:37
Show Gist options
  • Save smith13mr/184a5fd71b2b4e1765fc to your computer and use it in GitHub Desktop.
Save smith13mr/184a5fd71b2b4e1765fc to your computer and use it in GitHub Desktop.
genome browser
genes = [
{
name: 'gene 1',
start: 50,
stop: 300,
direction: "forward"
},
{
name: 'gene 2',
start: 400,
stop: 950,
direction: "forward"
},
{
name: 'gene 3',
start: 4000,
stop: 5550,
direction: "forward"
}
];
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
</head>
<body>
<script>
genes = [
{
name: 'gene 1',
start: 50,
stop: 300,
direction: "forward"
},
{
name: 'gene 2',
start: 400,
stop: 950,
direction: "forward"
},
{
name: 'gene 3',
start: 4000,
stop: 5550,
direction: "forward"
}
];
var svg = d3.select("body").append("svg")
.attr("width", 1000)
.attr("height", 200);
var rect = svg.selectAll("rect")
.data(genes)
.enter()
.append("rect");
var rectAttributes = rect
.attr("x", function (d) { return d.start/10; })
.attr("y", function (d) { return 30; })
.attr("height", function (d) { return 10; })
.attr("width", function (d) { return (d.stop-d.start)/10})
.style("fill", function(d) { return "pink"; });
var genomelength = 7800;
var tickMarks = {thousand: [], fivehundred: [], onehundred: []};
var genome_positions = [];
for (var i = 1; i <= genomelength; i++) {
genome_positions.push(i);
}
genome_positions.forEach(function(currentValue, index, myArray){
if (currentValue % 1000 === 0) {
tickMarks.thousand.push(currentValue);
}
else if (currentValue % 500 === 0) {
tickMarks.fivehundred.push(currentValue);
}
else if (currentValue % 100 === 0) {
tickMarks.onehundred.push(currentValue);
}
});
svg.append("rect")
.attr({x: 0, y: 50, width: (genomelength) / 10, height: 30})
.style({"stroke-width": "2px", "fill": "white", "stroke": "black"});
console.log(tickMarks);
var group = svg.selectAll(".a")
.data(tickMarks.thousand)
.enter()
.append("g");
group.append("rect")
.style({"fill": "black"})
.attr({x: 0, y: 50, width: "1px", height: 30})
.transition().duration(3000)
.attr("transform", function (d) { return "translate(" + d/10 + ",0)"; });
var group2 = svg.selectAll(".b")
.data(tickMarks.fivehundred)
.enter()
.append("g");
group2.append("rect")
.style({"fill": "black"})
.attr({x: 0, y: 50, width: "1px", height: 16})
.transition().duration(2000)
.attr("transform", function (d) { return "translate(" + d/10 + ",0)"; });
var group3 = svg.selectAll(".c")
.data(tickMarks.onehundred)
.enter()
.append("g");
group3.append("rect")
.style({"fill": "black"})
.attr({x: 0, y: 63, width: "1px", height: 16})
.transition().duration(1000)
.attr("transform", function (d) { return "translate(" + d/10 + ",0)"; });
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment