ibowankenobi-i-pv
Version:
Interactive Protein Sequence VIsualization/Viewer - Interactive Circos
7,168 lines • 789 kB
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' 'unsafe-eval' https://d3js.org https://nytimes.github.io;">
<title>NewDataset</title>
<script src="https://d3js.org/d3.v3.min.js" integrity="sha384-N8EP0Yml0jN7e0DcXlZ6rt+iqKU9Ck6f1ZQ+j2puxatnBq4k9E8Q6vqBcY34LNbn" crossorigin="anonymous" charset="utf-8"></script>
<!-- download.js v4.21 inlined to avoid loading from untrusted external domain -->
<script integrity="sha384-nY//GSjxOK1d2nES1eVh+14TsPkwGkMou79BvNz975x7s0pKK7zp9rjK5J+yvN0F">
//download.js v4.21, by dandavis; 2008-2018. [MIT] see https://github.com/rndme/download for tests/usage
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define([], factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.download = factory();
}
}(this, function () {
return function download(data, strFileName, strMimeType) {
var self = window,
defaultMime = "application/octet-stream",
mimeType = strMimeType || defaultMime,
payload = data,
url = !strFileName && !strMimeType && payload,
anchor = document.createElement("a"),
toString = function(a){return String(a);},
myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),
fileName = strFileName || "download",
blob,
reader;
myBlob= myBlob.call ? myBlob.bind(self) : Blob ;
if(String(this)==="true"){
payload=[payload, mimeType];
mimeType=payload[0];
payload=payload[1];
}
if(url && url.length< 2048){
fileName = url.split("/").pop().split("?")[0];
anchor.href = url;
if(anchor.href.indexOf(url) !== -1){
var ajax=new XMLHttpRequest();
ajax.open( "GET", url, true);
ajax.responseType = 'blob';
ajax.onload= function(e){
download(e.target.response, fileName, defaultMime);
};
setTimeout(function(){ ajax.send();}, 0);
return ajax;
}
}
if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(payload)){
if(payload.length > (1024*1024*1.999) && myBlob !== toString ){
payload=dataUrlToBlob(payload);
mimeType=payload.type || defaultMime;
}else{
return navigator.msSaveBlob ?
navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :
saver(payload) ;
}
}else{
if(/([\x80-\xff])/.test(payload)){
var i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;
for(i;i<mx;++i) tempUiArr[i]= payload.charCodeAt(i);
payload=new myBlob([tempUiArr], {type: mimeType});
}
}
blob = payload instanceof myBlob ?
payload :
new myBlob([payload], {type: mimeType}) ;
function dataUrlToBlob(strUrl) {
var parts= strUrl.split(/[:;,]/),
type= parts[1],
indexDecoder = strUrl.indexOf("charset")>0 ? 3: 2,
decoder= parts[indexDecoder] == "base64" ? atob : decodeURIComponent,
binData= decoder( parts.pop() ),
mx= binData.length,
i= 0,
uiArr= new Uint8Array(mx);
for(i;i<mx;++i) uiArr[i]= binData.charCodeAt(i);
return new myBlob([uiArr], {type: type});
}
function saver(url, winMode){
if ('download' in anchor) {
anchor.href = url;
anchor.setAttribute("download", fileName);
anchor.className = "download-js-link";
anchor.innerHTML = "downloading...";
anchor.style.display = "none";
anchor.addEventListener('click', function(e) {
e.stopPropagation();
this.removeEventListener('click', arguments.callee);
});
document.body.appendChild(anchor);
setTimeout(function() {
anchor.click();
document.body.removeChild(anchor);
if(winMode===true){setTimeout(function(){ self.URL.revokeObjectURL(anchor.href);}, 250 );}
}, 66);
return true;
}
if(/(Version)\/(\d+)\.(\d+)(?:\.(\d+))?.*Safari\//.test(navigator.userAgent)) {
if(/^data:/.test(url)) url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
if(!window.open(url)){
if(confirm("Displaying New Document\n\nUse Save As... to download, then click back to return to this page.")){ location.href=url; }
}
return true;
}
var f = document.createElement("iframe");
document.body.appendChild(f);
if(!winMode && /^data:/.test(url)){
url="data:"+url.replace(/^data:([\w\/\-\+]+)/, defaultMime);
}
f.src=url;
setTimeout(function(){ document.body.removeChild(f); }, 333);
}
if (navigator.msSaveBlob) {
return navigator.msSaveBlob(blob, fileName);
}
if(self.URL){
saver(self.URL.createObjectURL(blob), true);
}else{
if(typeof blob === "string" || blob.constructor===toString ){
try{
return saver( "data:" + mimeType + ";base64," + self.btoa(blob) );
}catch(y){
return saver( "data:" + mimeType + "," + encodeURIComponent(blob) );
}
}
reader=new FileReader();
reader.onload=function(e){
saver(this.result);
};
reader.readAsDataURL(blob);
}
return true;
};
}));
</script>
<style type ="text/css">
html {
transition: background-color 1s ease;
}
div.bar {
display: inline-block;
width: 20px;
height: 75px;
background-color: teal;
margin-right: 2px;
}
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
stroke: black;
font-family: sans-serif;
font-size: 11px;
}
body {
position:relative;
transition: background-color 1s ease;
width: 1500px;
height: 1500px;
margin-left: auto;
margin-right: auto;
}
#master {
position: absolute;
top: 0%;
left: 0%;
height:1500px;
width: 1500px;
}
#ipvWatchIcon {
transition: opacity 1s ease, visibility 1s ease;
}
#colorCoding {
transition: fill 1s ease, opacity 1s ease, visibility 1s ease;
}
#neonEffect {
transition: fill 1s ease, opacity 1s ease, visibility 1s ease;
}
#logo {
transition: opacity 1s ease;
}
.htmlElements,.htmlElementsInputs {
transition: opacity 1s ease, background 1s ease, visibility 1s ease, box-shadow 1s ease, border-width 0.2s ease, border-color 1s ease;
}
.DropDownRectMark {
transition: opacity 1s ease, visibility 1s ease;
}
.DropDownRectExtract {
transition: opacity 1s ease, visibility 1s ease;
}
.markElements {
//opacity: 0;
//transition: opacity 1.5s ease;
}
.overviews {
transition: fill 1s ease, stroke 1s ease, opacity 1s ease, visibility 1s ease;
}
#OverviewMark,#OverviewLength {
transition: opacity 1s ease;
}
.highlightIcons {
transition: opacity 1s ease;
}
.higlightRoundnessControls {
transition: fill 1s ease, opacity 1s ease, visibility 1s ease;
}
#fileUploadIcon {
transition: opacity 1s ease, visibility 0.1s ease;
}
.actionOptions {
transition: fill 1s ease, opacity 1s ease, visibility 0.1s ease;
}
.histogramIcons {
transition: opacity 0.5s ease;
}
.indorilLogo {
transition: opacity 1s ease, visibility 1s ease;
}
</style>
</head>
<body>
<svg id="master" preserveAspectRatio="xMidYMid" viewBox ="-500 0 7000 6000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="ideograms">
<path d="M3098.013,755.139 A2247.000,2247.000 40.000 1,1 2923.758,754.294 L2923.656,751.296 A2250.000,2250.000 0.000 1,0 3098.144,752.142 Z" style="stroke-width:4.0;stroke:rgb(37,37,37);stroke-linecap:round;fill:rgb(82,82,82);" />
<text x="2985.4" y="6018.0" font-size="104.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(115,115,115);" transform="rotate(0.3,2985.4,6018.0)" >TNF-alpha</text>
<path d="M3098.013,755.139 A2247.000,2247.000 40.000 1,1 2923.758,754.294 L2923.656,751.296 A2250.000,2250.000 0.000 1,0 3098.144,752.142 Z" style="stroke-width:4.0;stroke:rgb(37,37,37);stroke-linecap:round;fill:none;" />
</g>
<g id="plot0">
<g id="plot0-axis">
</g>
<path d="M3098.144,752.142 A2250.000,2250.000 40.000 0,1 3157.970,755.552 L3173.767,531.108 A2475.000,2475.000 0.000 0,0 3107.958,527.356 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_1_Conservation-Score_11"/>
<path d="M3157.970,755.552 A2250.000,2250.000 40.000 0,1 3217.685,760.555 L3239.453,536.611 A2475.000,2475.000 0.000 0,0 3173.767,531.108 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_2_Conservation-Score_11"/>
<path d="M3217.685,760.555 A2250.000,2250.000 40.000 0,1 3277.245,767.146 L3304.969,543.861 A2475.000,2475.000 0.000 0,0 3239.453,536.611 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_3_Conservation-Score_11"/>
<path d="M3277.245,767.146 A2250.000,2250.000 40.000 0,1 3336.608,775.321 L3360.171,619.594 A2407.500,2407.500 0.000 0,0 3296.652,610.847 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_4_Conservation-Score_7"/>
<path d="M3336.608,775.321 A2250.000,2250.000 40.000 0,1 3395.733,785.074 L3427.392,607.880 A2430.000,2430.000 0.000 0,0 3363.537,597.347 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_5_Conservation-Score_9"/>
<path d="M3395.733,785.074 A2250.000,2250.000 40.000 0,1 3454.577,796.398 L3500.035,576.038 A2475.000,2475.000 0.000 0,0 3435.306,563.582 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_6_Conservation-Score_11"/>
<path d="M3454.577,796.398 A2250.000,2250.000 40.000 0,1 3513.098,809.286 L3564.408,590.214 A2475.000,2475.000 0.000 0,0 3500.035,576.038 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_7_Conservation-Score_11"/>
<path d="M3513.098,809.286 A2250.000,2250.000 40.000 0,1 3571.256,823.726 L3616.957,649.625 A2430.000,2430.000 0.000 0,0 3554.146,634.028 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_8_Conservation-Score_8"/>
<path d="M3571.256,823.726 A2250.000,2250.000 40.000 0,1 3629.008,839.711 L3691.909,623.682 A2475.000,2475.000 0.000 0,0 3628.382,606.099 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_9_Conservation-Score_11"/>
<path d="M3629.008,839.711 A2250.000,2250.000 40.000 0,1 3686.315,857.228 L3754.946,642.951 A2475.000,2475.000 0.000 0,0 3691.909,623.682 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_10_Conservation-Score_11"/>
<path d="M3686.315,857.228 A2250.000,2250.000 40.000 0,1 3743.134,876.265 L3817.448,663.891 A2475.000,2475.000 0.000 0,0 3754.946,642.951 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_11_Conservation-Score_11"/>
<path d="M3743.134,876.265 A2250.000,2250.000 40.000 0,1 3799.427,896.808 L3879.369,686.489 A2475.000,2475.000 0.000 0,0 3817.448,663.891 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_12_Conservation-Score_11"/>
<path d="M3799.427,896.808 A2250.000,2250.000 40.000 0,1 3855.152,918.843 L3940.667,710.727 A2475.000,2475.000 0.000 0,0 3879.369,686.489 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_13_Conservation-Score_11"/>
<path d="M3855.152,918.843 A2250.000,2250.000 40.000 0,1 3910.271,942.354 L4001.298,736.589 A2475.000,2475.000 0.000 0,0 3940.667,710.727 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_14_Conservation-Score_11"/>
<path d="M3910.271,942.354 A2250.000,2250.000 40.000 0,1 3964.744,967.325 L4003.333,886.018 A2340.000,2340.000 0.000 0,0 3946.681,860.048 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_15_Conservation-Score_4"/>
<path d="M3964.744,967.325 A2250.000,2250.000 40.000 0,1 4018.533,993.737 L4049.088,933.549 A2317.500,2317.500 0.000 0,0 3993.686,906.344 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_16_Conservation-Score_2"/>
<path d="M4018.533,993.737 A2250.000,2250.000 40.000 0,1 4071.599,1021.572 L4178.759,823.730 A2475.000,2475.000 0.000 0,0 4120.386,793.111 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_17_Conservation-Score_11"/>
<path d="M4071.599,1021.572 A2250.000,2250.000 40.000 0,1 4123.905,1050.811 L4191.339,933.860 A2385.000,2385.000 0.000 0,0 4135.895,902.867 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_18_Conservation-Score_6"/>
<path d="M4123.905,1050.811 A2250.000,2250.000 40.000 0,1 4175.414,1081.432 L4234.185,985.504 A2362.500,2362.500 0.000 0,0 4180.100,953.352 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_19_Conservation-Score_5"/>
<path d="M4175.414,1081.432 A2250.000,2250.000 40.000 0,1 4226.090,1113.415 L4275.133,1037.951 A2340.000,2340.000 0.000 0,0 4222.431,1004.690 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_20_Conservation-Score_4"/>
<path d="M4226.090,1113.415 A2250.000,2250.000 40.000 0,1 4275.895,1146.735 L4352.449,1035.539 A2385.000,2385.000 0.000 0,0 4299.655,1000.219 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_21_Conservation-Score_6"/>
<path d="M4275.895,1146.735 A2250.000,2250.000 40.000 0,1 4324.796,1181.370 L4377.788,1108.625 A2340.000,2340.000 0.000 0,0 4326.931,1072.604 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_22_Conservation-Score_4"/>
<path d="M4324.796,1181.370 A2250.000,2250.000 40.000 0,1 4372.757,1217.295 L4510.033,1039.024 A2475.000,2475.000 0.000 0,0 4457.275,999.507 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_23_Conservation-Score_11"/>
<path d="M4372.757,1217.295 A2250.000,2250.000 40.000 0,1 4419.744,1254.484 L4490.731,1167.208 A2362.500,2362.500 0.000 0,0 4441.395,1128.159 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_24_Conservation-Score_5"/>
<path d="M4419.744,1254.484 A2250.000,2250.000 40.000 0,1 4465.724,1292.911 L4568.325,1173.415 A2407.500,2407.500 0.000 0,0 4519.126,1132.298 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_25_Conservation-Score_7"/>
<path d="M4465.724,1292.911 A2250.000,2250.000 40.000 0,1 4510.665,1332.550 L4616.412,1215.828 A2407.500,2407.500 0.000 0,0 4568.325,1173.415 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_26_Conservation-Score_7"/>
<path d="M4510.665,1332.550 A2250.000,2250.000 40.000 0,1 4554.534,1373.371 L4709.988,1210.708 A2475.000,2475.000 0.000 0,0 4661.732,1165.804 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_27_Conservation-Score_11"/>
<path d="M4554.534,1373.371 A2250.000,2250.000 40.000 0,1 4597.301,1415.345 L4725.085,1288.573 A2430.000,2430.000 0.000 0,0 4678.897,1243.240 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_28_Conservation-Score_9"/>
<path d="M4597.301,1415.345 A2250.000,2250.000 40.000 0,1 4638.934,1458.444 L4737.270,1365.951 A2385.000,2385.000 0.000 0,0 4693.139,1320.266 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_29_Conservation-Score_6"/>
<path d="M4638.934,1458.444 A2250.000,2250.000 40.000 0,1 4679.405,1502.636 L4763.375,1427.768 A2362.500,2362.500 0.000 0,0 4720.881,1381.366 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_30_Conservation-Score_5"/>
<path d="M4679.405,1502.636 A2250.000,2250.000 40.000 0,1 4718.685,1547.890 L4838.993,1446.243 A2407.500,2407.500 0.000 0,0 4796.963,1397.821 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_31_Conservation-Score_7"/>
<path d="M4718.685,1547.890 A2250.000,2250.000 40.000 0,1 4756.746,1594.175 L4897.285,1481.709 A2430.000,2430.000 0.000 0,0 4856.180,1431.722 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_32_Conservation-Score_8"/>
<path d="M4756.746,1594.175 A2250.000,2250.000 40.000 0,1 4793.560,1641.456 L4972.916,1505.602 A2475.000,2475.000 0.000 0,0 4932.420,1453.592 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_33_Conservation-Score_11"/>
<path d="M4793.560,1641.456 A2250.000,2250.000 40.000 0,1 4829.103,1689.701 L5012.013,1558.671 A2475.000,2475.000 0.000 0,0 4972.916,1505.602 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_34_Conservation-Score_11"/>
<path d="M4829.103,1689.701 A2250.000,2250.000 40.000 0,1 4863.348,1738.876 L5049.683,1612.763 A2475.000,2475.000 0.000 0,0 5012.013,1558.671 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_35_Conservation-Score_11"/>
<path d="M4863.348,1738.876 A2250.000,2250.000 40.000 0,1 4896.271,1788.944 L5085.898,1667.839 A2475.000,2475.000 0.000 0,0 5049.683,1612.763 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_36_Conservation-Score_11"/>
<path d="M4896.271,1788.944 A2250.000,2250.000 40.000 0,1 4927.850,1839.872 L5120.635,1723.860 A2475.000,2475.000 0.000 0,0 5085.898,1667.839 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_37_Conservation-Score_11"/>
<path d="M4927.850,1839.872 A2250.000,2250.000 40.000 0,1 4958.061,1891.623 L5153.867,1780.786 A2475.000,2475.000 0.000 0,0 5120.635,1723.860 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_38_Conservation-Score_11"/>
<path d="M4958.061,1891.623 A2250.000,2250.000 40.000 0,1 4986.883,1944.160 L5185.571,1838.576 A2475.000,2475.000 0.000 0,0 5153.867,1780.786 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_39_Conservation-Score_11"/>
<path d="M4986.883,1944.160 A2250.000,2250.000 40.000 0,1 5014.295,1997.446 L5195.582,1907.216 A2452.500,2452.500 0.000 0,0 5165.702,1849.135 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_40_Conservation-Score_10"/>
<path d="M5014.295,1997.446 A2250.000,2250.000 40.000 0,1 5040.279,2051.443 L5244.307,1956.588 A2475.000,2475.000 0.000 0,0 5215.725,1897.191 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_41_Conservation-Score_11"/>
<path d="M5040.279,2051.443 A2250.000,2250.000 40.000 0,1 5064.816,2106.113 L5271.298,2016.724 A2475.000,2475.000 0.000 0,0 5244.307,1956.588 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_42_Conservation-Score_11"/>
<path d="M5064.816,2106.113 A2250.000,2250.000 40.000 0,1 5087.889,2161.417 L5296.677,2077.559 A2475.000,2475.000 0.000 0,0 5271.298,2016.724 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_43_Conservation-Score_11"/>
<path d="M5087.889,2161.417 A2250.000,2250.000 40.000 0,1 5109.480,2217.316 L5320.428,2139.047 A2475.000,2475.000 0.000 0,0 5296.677,2077.559 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_44_Conservation-Score_11"/>
<path d="M5109.480,2217.316 A2250.000,2250.000 40.000 0,1 5129.575,2273.769 L5342.532,2201.146 A2475.000,2475.000 0.000 0,0 5320.428,2139.047 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_45_Conservation-Score_11"/>
<path d="M5129.575,2273.769 A2250.000,2250.000 40.000 0,1 5148.159,2330.738 L5298.531,2283.890 A2407.500,2407.500 0.000 0,0 5278.645,2222.933 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_46_Conservation-Score_7"/>
<path d="M5148.159,2330.738 A2250.000,2250.000 40.000 0,1 5165.220,2388.182 L5381.742,2327.000 A2475.000,2475.000 0.000 0,0 5362.975,2263.812 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_47_Conservation-Score_11"/>
<path d="M5165.220,2388.182 A2250.000,2250.000 40.000 0,1 5180.745,2446.060 L5398.820,2390.666 A2475.000,2475.000 0.000 0,0 5381.742,2327.000 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_48_Conservation-Score_11"/>
<path d="M5180.745,2446.060 A2250.000,2250.000 40.000 0,1 5194.724,2504.330 L5414.196,2454.763 A2475.000,2475.000 0.000 0,0 5398.820,2390.666 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_49_Conservation-Score_11"/>
<path d="M5194.724,2504.330 A2250.000,2250.000 40.000 0,1 5207.145,2562.953 L5427.860,2519.248 A2475.000,2475.000 0.000 0,0 5414.196,2454.763 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_50_Conservation-Score_11"/>
<path d="M5207.145,2562.953 A2250.000,2250.000 40.000 0,1 5218.001,2621.885 L5439.801,2584.073 A2475.000,2475.000 0.000 0,0 5427.860,2519.248 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_51_Conservation-Score_11"/>
<path d="M5218.001,2621.885 A2250.000,2250.000 40.000 0,1 5227.284,2681.085 L5338.648,2665.139 A2362.500,2362.500 0.000 0,0 5328.901,2602.979 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_52_Conservation-Score_5"/>
<path d="M5227.284,2681.085 A2250.000,2250.000 40.000 0,1 5234.987,2740.512 L5458.485,2714.563 A2475.000,2475.000 0.000 0,0 5450.012,2649.193 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_53_Conservation-Score_11"/>
<path d="M5234.987,2740.512 A2250.000,2250.000 40.000 0,1 5241.104,2800.122 L5308.338,2794.126 A2317.500,2317.500 0.000 0,0 5302.036,2732.727 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_54_Conservation-Score_3"/>
<path d="M5241.104,2800.122 A2250.000,2250.000 40.000 0,1 5245.632,2859.875 L5470.196,2845.862 A2475.000,2475.000 0.000 0,0 5465.215,2780.134 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_55_Conservation-Score_11"/>
<path d="M5245.632,2859.875 A2250.000,2250.000 40.000 0,1 5248.568,2919.726 L5473.424,2911.699 A2475.000,2475.000 0.000 0,0 5470.196,2845.862 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_56_Conservation-Score_11"/>
<path d="M5248.568,2919.726 A2250.000,2250.000 40.000 0,1 5249.908,2979.635 L5474.899,2977.598 A2475.000,2475.000 0.000 0,0 5473.424,2911.699 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_57_Conservation-Score_11"/>
<path d="M5249.908,2979.635 A2250.000,2250.000 40.000 0,1 5249.652,3039.558 L5474.617,3043.514 A2475.000,2475.000 0.000 0,0 5474.899,2977.598 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_58_Conservation-Score_11"/>
<path d="M5249.652,3039.558 A2250.000,2250.000 40.000 0,1 5247.801,3099.453 L5427.625,3107.409 A2430.000,2430.000 0.000 0,0 5429.624,3042.723 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_59_Conservation-Score_9"/>
<path d="M5247.801,3099.453 A2250.000,2250.000 40.000 0,1 5244.355,3159.278 L5401.460,3170.427 A2407.500,2407.500 0.000 0,0 5405.147,3106.415 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_60_Conservation-Score_7"/>
<path d="M5244.355,3159.278 A2250.000,2250.000 40.000 0,1 5239.318,3218.989 L5418.463,3236.508 A2430.000,2430.000 0.000 0,0 5423.904,3172.020 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_61_Conservation-Score_9"/>
<path d="M5239.318,3218.989 A2250.000,2250.000 40.000 0,1 5232.692,3278.546 L5366.653,3295.258 A2385.000,2385.000 0.000 0,0 5373.677,3232.129 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_62_Conservation-Score_6"/>
<path d="M5232.692,3278.546 A2250.000,2250.000 40.000 0,1 5224.482,3337.904 L5313.461,3351.420 A2340.000,2340.000 0.000 0,0 5321.999,3289.687 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_63_Conservation-Score_4"/>
<path d="M5224.482,3337.904 A2250.000,2250.000 40.000 0,1 5214.695,3397.023 L5369.723,3424.815 A2407.500,2407.500 0.000 0,0 5380.196,3361.558 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_64_Conservation-Score_7"/>
<path d="M5214.695,3397.023 A2250.000,2250.000 40.000 0,1 5203.336,3455.861 L5291.470,3474.095 A2340.000,2340.000 0.000 0,0 5303.282,3412.904 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_65_Conservation-Score_4"/>
<path d="M5203.336,3455.861 A2250.000,2250.000 40.000 0,1 5190.415,3514.375 L5299.936,3540.093 A2362.500,2362.500 0.000 0,0 5313.503,3478.654 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_66_Conservation-Score_5"/>
<path d="M5190.415,3514.375 A2250.000,2250.000 40.000 0,1 5175.940,3572.524 L5284.737,3601.150 A2362.500,2362.500 0.000 0,0 5299.936,3540.093 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_67_Conservation-Score_5"/>
<path d="M5175.940,3572.524 A2250.000,2250.000 40.000 0,1 5159.922,3630.267 L5203.121,3642.872 A2295.000,2295.000 0.000 0,0 5219.459,3583.974 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_68_Conservation-Score_1"/>
<path d="M5159.922,3630.267 A2250.000,2250.000 40.000 0,1 5142.372,3687.563 L5228.067,3715.066 A2340.000,2340.000 0.000 0,0 5246.319,3655.478 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_69_Conservation-Score_4"/>
<path d="M5142.372,3687.563 A2250.000,2250.000 40.000 0,1 5123.302,3744.371 L5144.535,3751.815 A2272.500,2272.500 0.000 0,0 5163.796,3694.439 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_70_Conservation-Score_0"/>
<path d="M5123.302,3744.371 A2250.000,2250.000 40.000 0,1 5102.726,3800.652 L5228.890,3848.691 A2385.000,2385.000 0.000 0,0 5250.700,3789.034 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_71_Conservation-Score_6"/>
<path d="M5102.726,3800.652 A2250.000,2250.000 40.000 0,1 5080.659,3856.364 L5226.305,3916.310 A2407.500,2407.500 0.000 0,0 5249.917,3856.697 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_72_Conservation-Score_7"/>
<path d="M5080.659,3856.364 A2250.000,2250.000 40.000 0,1 5057.115,3911.469 L5221.685,3984.387 A2430.000,2430.000 0.000 0,0 5247.111,3924.873 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_73_Conservation-Score_8"/>
<path d="M5057.115,3911.469 A2250.000,2250.000 40.000 0,1 5032.113,3965.928 L5194.682,4043.202 A2430.000,2430.000 0.000 0,0 5221.685,3984.387 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_74_Conservation-Score_8"/>
<path d="M5032.113,3965.928 A2250.000,2250.000 40.000 0,1 5005.669,4019.701 L5146.066,4091.080 A2407.500,2407.500 0.000 0,0 5174.361,4033.543 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_75_Conservation-Score_7"/>
<path d="M5005.669,4019.701 A2250.000,2250.000 40.000 0,1 4977.803,4072.751 L5116.249,4147.844 A2407.500,2407.500 0.000 0,0 5146.066,4091.080 Z" style="stroke-width:3.0;stroke:rgb(115,115,115);stroke-linecap:round;fill:rgb(82,82,82);" id="Residue_76_Conservation-Score_7"/>
<path d="M4977.803,4072.751 A2250.000,2250.000 40.000 0,1 4948.534,4125.041 L5084.931,4203.793 A2407.500,2407.500 0.000 0,0 5116.249,4147.844 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_77_Conservation-Score_7" class="Tumor_necrosis_factor_domain"/>
<path d="M4948.534,4125.041 A2250.000,2250.000 40.000 0,1 4917.882,4176.532 L4975.419,4211.828 A2317.500,2317.500 0.000 0,0 5006.990,4158.792 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_78_Conservation-Score_3" class="Tumor_necrosis_factor_domain"/>
<path d="M4917.882,4176.532 A2250.000,2250.000 40.000 0,1 4885.871,4227.188 L5074.458,4349.907 A2475.000,2475.000 0.000 0,0 5109.671,4294.185 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_79_Conservation-Score_11"/>
<path d="M4885.871,4227.188 A2250.000,2250.000 40.000 0,1 4852.521,4276.975 L5000.723,4379.133 A2430.000,2430.000 0.000 0,0 5036.740,4325.364 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_80_Conservation-Score_8" class="Tumor_necrosis_factor_domain"/>
<path d="M4852.521,4276.975 A2250.000,2250.000 40.000 0,1 4817.858,4325.855 L4999.644,4458.441 A2475.000,2475.000 0.000 0,0 5037.774,4404.672 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_81_Conservation-Score_11"/>
<path d="M4817.858,4325.855 A2250.000,2250.000 40.000 0,1 4781.905,4373.795 L4924.458,4483.699 A2430.000,2430.000 0.000 0,0 4963.287,4431.924 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_82_Conservation-Score_8"/>
<path d="M4781.905,4373.795 A2250.000,2250.000 40.000 0,1 4744.689,4420.761 L4762.136,4434.968 A2272.500,2272.500 0.000 0,0 4799.724,4387.533 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_83_Conservation-Score_0"/>
<path d="M4744.689,4420.761 A2250.000,2250.000 40.000 0,1 4706.234,4466.719 L4757.422,4510.720 A2317.500,2317.500 0.000 0,0 4797.029,4463.384 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_84_Conservation-Score_2"/>
<path d="M4706.234,4466.719 A2250.000,2250.000 40.000 0,1 4666.570,4511.636 L4799.896,4632.567 A2430.000,2430.000 0.000 0,0 4842.733,4584.056 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_85_Conservation-Score_9" class="Tumor_necrosis_factor_domain"/>
<path d="M4666.570,4511.636 A2250.000,2250.000 40.000 0,1 4625.724,4555.482 L4755.781,4679.920 A2430.000,2430.000 0.000 0,0 4799.896,4632.567 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_86_Conservation-Score_8"/>
<path d="M4625.724,4555.482 A2250.000,2250.000 40.000 0,1 4583.724,4598.224 L4742.096,4758.046 A2475.000,2475.000 0.000 0,0 4788.296,4711.030 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_87_Conservation-Score_11"/>
<path d="M4583.724,4598.224 A2250.000,2250.000 40.000 0,1 4540.601,4639.832 L4694.661,4803.815 A2475.000,2475.000 0.000 0,0 4742.096,4758.046 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_88_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M4540.601,4639.832 A2250.000,2250.000 40.000 0,1 4496.385,4680.277 L4616.096,4814.699 A2430.000,2430.000 0.000 0,0 4663.849,4771.019 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_89_Conservation-Score_9"/>
<path d="M4496.385,4680.277 A2250.000,2250.000 40.000 0,1 4451.108,4719.531 L4596.219,4891.484 A2475.000,2475.000 0.000 0,0 4646.024,4848.305 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_90_Conservation-Score_11"/>
<path d="M4451.108,4719.531 A2250.000,2250.000 40.000 0,1 4404.802,4757.564 L4545.282,4933.321 A2475.000,2475.000 0.000 0,0 4596.219,4891.484 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_91_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M4404.802,4757.564 A2250.000,2250.000 40.000 0,1 4357.499,4794.351 L4493.249,4973.787 A2475.000,2475.000 0.000 0,0 4545.282,4933.321 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_92_Conservation-Score_11"/>
<path d="M4357.499,4794.351 A2250.000,2250.000 40.000 0,1 4309.233,4829.866 L4440.156,5012.852 A2475.000,2475.000 0.000 0,0 4493.249,4973.787 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_93_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M4309.233,4829.866 A2250.000,2250.000 40.000 0,1 4260.039,4864.082 L4386.043,5050.490 A2475.000,2475.000 0.000 0,0 4440.156,5012.852 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_94_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M4260.039,4864.082 A2250.000,2250.000 40.000 0,1 4209.951,4896.976 L4306.747,5048.735 A2430.000,2430.000 0.000 0,0 4360.842,5013.209 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_95_Conservation-Score_8"/>
<path d="M4209.951,4896.976 A2250.000,2250.000 40.000 0,1 4159.004,4928.525 L4193.774,4986.381 A2317.500,2317.500 0.000 0,0 4246.249,4953.886 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_96_Conservation-Score_2"/>
<path d="M4159.004,4928.525 A2250.000,2250.000 40.000 0,1 4107.236,4958.706 L4151.525,5037.054 A2340.000,2340.000 0.000 0,0 4205.364,5005.666 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_97_Conservation-Score_4"/>
<path d="M4107.236,4958.706 A2250.000,2250.000 40.000 0,1 4054.682,4987.497 L4117.963,5106.747 A2385.000,2385.000 0.000 0,0 4173.670,5076.228 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_98_Conservation-Score_6"/>
<path d="M4054.682,4987.497 A2250.000,2250.000 40.000 0,1 4001.380,5014.879 L4051.449,5115.623 A2362.500,2362.500 0.000 0,0 4107.416,5086.872 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_99_Conservation-Score_5"/>
<path d="M4001.380,5014.879 A2250.000,2250.000 40.000 0,1 3947.368,5040.832 L3985.263,5122.465 A2340.000,2340.000 0.000 0,0 4041.435,5095.474 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_100_Conservation-Score_4" class="Tumor_necrosis_factor_domain"/>
<path d="M3947.368,5040.832 A2250.000,2250.000 40.000 0,1 3892.684,5065.337 L3964.099,5230.564 A2430.000,2430.000 0.000 0,0 4023.157,5204.098 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_101_Conservation-Score_8"/>
<path d="M3892.684,5065.337 A2250.000,2250.000 40.000 0,1 3837.366,5088.377 L3921.103,5297.214 A2475.000,2475.000 0.000 0,0 3981.952,5271.870 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_102_Conservation-Score_11"/>
<path d="M3837.366,5088.377 A2250.000,2250.000 40.000 0,1 3781.455,5109.935 L3836.157,5257.631 A2407.500,2407.500 0.000 0,0 3895.982,5234.563 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_103_Conservation-Score_7"/>
<path d="M3781.455,5109.935 A2250.000,2250.000 40.000 0,1 3724.990,5129.998 L3797.489,5342.997 A2475.000,2475.000 0.000 0,0 3859.601,5320.929 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_104_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M3724.990,5129.998 A2250.000,2250.000 40.000 0,1 3668.010,5148.549 L3694.730,5234.491 A2340.000,2340.000 0.000 0,0 3753.989,5215.198 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_105_Conservation-Score_4"/>
<path d="M3668.010,5148.549 A2250.000,2250.000 40.000 0,1 3610.556,5165.576 L3653.295,5317.167 A2407.500,2407.500 0.000 0,0 3714.771,5298.947 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_106_Conservation-Score_7"/>
<path d="M3610.556,5165.576 A2250.000,2250.000 40.000 0,1 3552.670,5181.068 L3574.776,5268.310 A2340.000,2340.000 0.000 0,0 3634.979,5252.199 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_107_Conservation-Score_4" class="Tumor_necrosis_factor_domain"/>
<path d="M3552.670,5181.068 A2250.000,2250.000 40.000 0,1 3494.391,5195.012 L3524.054,5326.713 A2385.000,2385.000 0.000 0,0 3585.830,5311.932 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_108_Conservation-Score_6" class="Tumor_necrosis_factor_domain"/>
<path d="M3494.391,5195.012 A2250.000,2250.000 40.000 0,1 3435.762,5207.399 L3479.338,5428.139 A2475.000,2475.000 0.000 0,0 3543.830,5414.513 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_109_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M3435.762,5207.399 A2250.000,2250.000 40.000 0,1 3376.823,5218.221 L3414.505,5440.043 A2475.000,2475.000 0.000 0,0 3479.338,5428.139 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_110_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M3376.823,5218.221 A2250.000,2250.000 40.000 0,1 3317.617,5227.469 L3349.379,5450.216 A2475.000,2475.000 0.000 0,0 3414.505,5440.043 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_111_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M3317.617,5227.469 A2250.000,2250.000 40.000 0,1 3258.186,5235.138 L3284.005,5458.651 A2475.000,2475.000 0.000 0,0 3349.379,5450.216 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_112_Conservation-Score_11"/>
<path d="M3258.186,5235.138 A2250.000,2250.000 40.000 0,1 3198.572,5241.220 L3210.486,5375.694 A2385.000,2385.000 0.000 0,0 3273.677,5369.246 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_113_Conservation-Score_6" class="Tumor_necrosis_factor_domain"/>
<path d="M3198.572,5241.220 A2250.000,2250.000 40.000 0,1 3138.817,5245.714 L3152.699,5470.285 A2475.000,2475.000 0.000 0,0 3218.429,5465.342 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_114_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M3138.817,5245.714 A2250.000,2250.000 40.000 0,1 3078.964,5248.614 L3086.860,5473.475 A2475.000,2475.000 0.000 0,0 3152.699,5470.285 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_115_Conservation-Score_11"/>
<path d="M3078.964,5248.614 A2250.000,2250.000 40.000 0,1 3019.054,5249.919 L3020.960,5474.911 A2475.000,2475.000 0.000 0,0 3086.860,5473.475 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_116_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M3019.054,5249.919 A2250.000,2250.000 40.000 0,1 2959.131,5249.629 L2955.862,5429.599 A2430.000,2430.000 0.000 0,0 3020.579,5429.913 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_117_Conservation-Score_8"/>
<path d="M2959.131,5249.629 A2250.000,2250.000 40.000 0,1 2899.237,5247.743 L2896.214,5315.175 A2317.500,2317.500 0.000 0,0 2957.905,5317.118 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_118_Conservation-Score_3"/>
<path d="M2899.237,5247.743 A2250.000,2250.000 40.000 0,1 2839.415,5244.262 L2823.356,5468.688 A2475.000,2475.000 0.000 0,0 2889.161,5472.517 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_119_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M2839.415,5244.262 A2250.000,2250.000 40.000 0,1 2779.706,5239.190 L2770.894,5328.757 A2340.000,2340.000 0.000 0,0 2832.991,5334.033 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_120_Conservation-Score_4"/>
<path d="M2779.706,5239.190 A2250.000,2250.000 40.000 0,1 2720.154,5232.529 L2692.169,5455.782 A2475.000,2475.000 0.000 0,0 2757.677,5463.109 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_121_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M2720.154,5232.529 A2250.000,2250.000 40.000 0,1 2660.800,5224.285 L2626.880,5446.713 A2475.000,2475.000 0.000 0,0 2692.169,5455.782 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_122_Conservation-Score_11"/>
<path d="M2660.800,5224.285 A2250.000,2250.000 40.000 0,1 2601.687,5214.463 L2561.855,5435.909 A2475.000,2475.000 0.000 0,0 2626.880,5446.713 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_123_Conservation-Score_11"/>
<path d="M2601.687,5214.463 A2250.000,2250.000 40.000 0,1 2542.856,5203.070 L2497.141,5423.377 A2475.000,2475.000 0.000 0,0 2561.855,5435.909 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_124_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M2542.856,5203.070 A2250.000,2250.000 40.000 0,1 2484.349,5190.115 L2443.097,5365.324 A2430.000,2430.000 0.000 0,0 2506.284,5379.316 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_125_Conservation-Score_9"/>
<path d="M2484.349,5190.115 A2250.000,2250.000 40.000 0,1 2426.209,5175.606 L2368.829,5393.167 A2475.000,2475.000 0.000 0,0 2432.784,5409.127 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_126_Conservation-Score_11"/>
<path d="M2426.209,5175.606 A2250.000,2250.000 40.000 0,1 2368.475,5159.555 L2305.322,5375.510 A2475.000,2475.000 0.000 0,0 2368.829,5393.167 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_127_Conservation-Score_11"/>
<path d="M2368.475,5159.555 A2250.000,2250.000 40.000 0,1 2311.189,5141.971 L2276.748,5249.069 A2362.500,2362.500 0.000 0,0 2336.898,5267.532 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_128_Conservation-Score_5"/>
<path d="M2311.189,5141.971 A2250.000,2250.000 40.000 0,1 2254.392,5122.868 L2194.743,5292.697 A2430.000,2430.000 0.000 0,0 2256.084,5313.329 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_129_Conservation-Score_9"/>
<path d="M2254.392,5122.868 A2250.000,2250.000 40.000 0,1 2198.123,5102.259 L2117.936,5312.485 A2475.000,2475.000 0.000 0,0 2179.831,5335.155 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_130_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M2198.123,5102.259 A2250.000,2250.000 40.000 0,1 2142.424,5080.159 L2056.666,5288.175 A2475.000,2475.000 0.000 0,0 2117.936,5312.485 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_131_Conservation-Score_11"/>
<path d="M2142.424,5080.159 A2250.000,2250.000 40.000 0,1 2087.332,5056.584 L1996.066,5262.242 A2475.000,2475.000 0.000 0,0 2056.666,5288.175 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_132_Conservation-Score_11"/>
<path d="M2087.332,5056.584 A2250.000,2250.000 40.000 0,1 2032.888,5031.550 L1936.177,5234.705 A2475.000,2475.000 0.000 0,0 1996.066,5262.242 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_133_Conservation-Score_11"/>
<path d="M2032.888,5031.550 A2250.000,2250.000 40.000 0,1 1979.130,5005.075 L1897.461,5165.481 A2430.000,2430.000 0.000 0,0 1955.520,5194.074 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_134_Conservation-Score_9"/>
<path d="M1979.130,5005.075 A2250.000,2250.000 40.000 0,1 1926.097,4977.178 L1818.706,5174.895 A2475.000,2475.000 0.000 0,0 1877.043,5205.582 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_135_Conservation-Score_11"/>
<path d="M1926.097,4977.178 A2250.000,2250.000 40.000 0,1 1873.824,4947.878 L1761.207,5142.666 A2475.000,2475.000 0.000 0,0 1818.706,5174.895 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_136_Conservation-Score_11"/>
<path d="M1873.824,4947.878 A2250.000,2250.000 40.000 0,1 1822.351,4917.197 L1704.586,5108.916 A2475.000,2475.000 0.000 0,0 1761.207,5142.666 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_137_Conservation-Score_11"/>
<path d="M1822.351,4917.197 A2250.000,2250.000 40.000 0,1 1771.713,4885.155 L1648.884,5073.671 A2475.000,2475.000 0.000 0,0 1704.586,5108.916 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_138_Conservation-Score_11"/>
<path d="M1771.713,4885.155 A2250.000,2250.000 40.000 0,1 1721.946,4851.777 L1594.141,5036.955 A2475.000,2475.000 0.000 0,0 1648.884,5073.671 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_139_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1721.946,4851.777 A2250.000,2250.000 40.000 0,1 1673.086,4817.085 L1540.395,4998.794 A2475.000,2475.000 0.000 0,0 1594.141,5036.955 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_140_Conservation-Score_11"/>
<path d="M1673.086,4817.085 A2250.000,2250.000 40.000 0,1 1625.167,4781.105 L1556.425,4870.160 A2362.500,2362.500 0.000 0,0 1606.740,4907.940 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_141_Conservation-Score_5" class="Tumor_necrosis_factor_domain"/>
<path d="M1625.167,4781.105 A2250.000,2250.000 40.000 0,1 1578.223,4743.861 L1436.045,4918.247 A2475.000,2475.000 0.000 0,0 1487.683,4959.215 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_142_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1578.223,4743.861 A2250.000,2250.000 40.000 0,1 1532.287,4705.380 L1444.225,4807.702 A2385.000,2385.000 0.000 0,0 1492.916,4848.492 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_143_Conservation-Score_6" class="Tumor_necrosis_factor_domain"/>
<path d="M1532.287,4705.380 A2250.000,2250.000 40.000 0,1 1487.393,4665.689 L1336.132,4832.258 A2475.000,2475.000 0.000 0,0 1385.516,4875.918 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_144_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1487.393,4665.689 A2250.000,2250.000 40.000 0,1 1443.572,4624.817 L1287.929,4787.299 A2475.000,2475.000 0.000 0,0 1336.132,4832.258 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_145_Conservation-Score_11"/>
<path d="M1443.572,4624.817 A2250.000,2250.000 40.000 0,1 1400.854,4582.792 L1320.897,4661.932 A2362.500,2362.500 0.000 0,0 1365.750,4706.058 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_146_Conservation-Score_5"/>
<path d="M1400.854,4582.792 A2250.000,2250.000 40.000 0,1 1359.271,4539.645 L1244.420,4647.420 A2407.500,2407.500 0.000 0,0 1288.914,4693.588 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_147_Conservation-Score_7"/>
<path d="M1359.271,4539.645 A2250.000,2250.000 40.000 0,1 1318.851,4495.406 L1302.040,4510.360 A2272.500,2272.500 0.000 0,0 1342.863,4555.042 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_148_Conservation-Score_0"/>
<path d="M1318.851,4495.406 A2250.000,2250.000 40.000 0,1 1279.624,4450.106 L1228.013,4493.609 A2317.500,2317.500 0.000 0,0 1268.417,4540.268 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_149_Conservation-Score_3"/>
<path d="M1279.624,4450.106 A2250.000,2250.000 40.000 0,1 1241.617,4403.777 L1100.947,4516.080 A2430.000,2430.000 0.000 0,0 1141.994,4566.114 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_150_Conservation-Score_8"/>
<path d="M1241.617,4403.777 A2250.000,2250.000 40.000 0,1 1204.858,4356.453 L1061.247,4464.969 A2430.000,2430.000 0.000 0,0 1100.947,4516.080 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_151_Conservation-Score_8" class="Tumor_necrosis_factor_domain"/>
<path d="M1204.858,4356.453 A2250.000,2250.000 40.000 0,1 1169.372,4308.167 L986.309,4438.983 A2475.000,2475.000 0.000 0,0 1025.344,4492.098 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_152_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1169.372,4308.167 A2250.000,2250.000 40.000 0,1 1135.184,4258.952 L948.702,4384.848 A2475.000,2475.000 0.000 0,0 986.309,4438.983 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_153_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1135.184,4258.952 A2250.000,2250.000 40.000 0,1 1102.319,4208.845 L912.551,4329.730 A2475.000,2475.000 0.000 0,0 948.702,4384.848 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_154_Conservation-Score_11"/>
<path d="M1102.319,4208.845 A2250.000,2250.000 40.000 0,1 1070.800,4157.880 L916.464,4250.511 A2430.000,2430.000 0.000 0,0 950.504,4305.553 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_155_Conservation-Score_9"/>
<path d="M1070.800,4157.880 A2250.000,2250.000 40.000 0,1 1040.649,4106.094 L883.901,4194.582 A2430.000,2430.000 0.000 0,0 916.464,4250.511 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_156_Conservation-Score_9"/>
<path d="M1040.649,4106.094 A2250.000,2250.000 40.000 0,1 1011.888,4053.524 L813.077,4158.876 A2475.000,2475.000 0.000 0,0 844.714,4216.704 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_157_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1011.888,4053.524 A2250.000,2250.000 40.000 0,1 984.538,4000.206 L782.992,4100.227 A2475.000,2475.000 0.000 0,0 813.077,4158.876 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_158_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M984.538,4000.206 A2250.000,2250.000 40.000 0,1 958.617,3946.179 L795.306,4021.873 A2430.000,2430.000 0.000 0,0 823.301,4080.223 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_159_Conservation-Score_8"/>
<path d="M958.617,3946.179 A2250.000,2250.000 40.000 0,1 934.144,3891.480 L727.558,3980.628 A2475.000,2475.000 0.000 0,0 754.478,4040.797 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_160_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M934.144,3891.480 A2250.000,2250.000 40.000 0,1 911.136,3836.150 L744.027,3903.042 A2430.000,2430.000 0.000 0,0 768.875,3962.799 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_161_Conservation-Score_9"/>
<path d="M911.136,3836.150 A2250.000,2250.000 40.000 0,1 889.610,3780.226 L678.571,3858.248 A2475.000,2475.000 0.000 0,0 702.249,3919.765 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_162_Conservation-Score_11"/>
<path d="M889.610,3780.226 A2250.000,2250.000 40.000 0,1 869.580,3723.749 L656.538,3796.123 A2475.000,2475.000 0.000 0,0 678.571,3858.248 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_163_Conservation-Score_11"/>
<path d="M869.580,3723.749 A2250.000,2250.000 40.000 0,1 851.062,3666.758 L700.637,3713.431 A2407.500,2407.500 0.000 0,0 720.451,3774.411 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_164_Conservation-Score_7" class="Tumor_necrosis_factor_domain"/>
<path d="M851.062,3666.758 A2250.000,2250.000 40.000 0,1 834.068,3609.294 L747.431,3633.666 A2340.000,2340.000 0.000 0,0 765.105,3693.428 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_165_Conservation-Score_4" class="Tumor_necrosis_factor_domain"/>
<path d="M834.068,3609.294 A2250.000,2250.000 40.000 0,1 818.611,3551.399 L600.472,3606.539 A2475.000,2475.000 0.000 0,0 617.475,3670.224 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_166_Conservation-Score_11"/>
<path d="M818.611,3551.399 A2250.000,2250.000 40.000 0,1 804.700,3493.112 L585.170,3542.423 A2475.000,2475.000 0.000 0,0 600.472,3606.539 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_167_Conservation-Score_11"/>
<path d="M804.700,3493.112 A2250.000,2250.000 40.000 0,1 792.347,3434.475 L615.735,3469.233 A2430.000,2430.000 0.000 0,0 629.076,3532.561 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_168_Conservation-Score_9"/>
<path d="M792.347,3434.475 A2250.000,2250.000 40.000 0,1 781.560,3375.531 L581.900,3409.328 A2452.500,2452.500 0.000 0,0 593.658,3473.578 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_169_Conservation-Score_10" class="Tumor_necrosis_factor_domain"/>
<path d="M781.560,3375.531 A2250.000,2250.000 40.000 0,1 772.346,3316.320 L549.581,3347.951 A2475.000,2475.000 0.000 0,0 559.716,3413.084 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_170_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M772.346,3316.320 A2250.000,2250.000 40.000 0,1 764.712,3256.884 L541.184,3282.572 A2475.000,2475.000 0.000 0,0 549.581,3347.951 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_171_Conservation-Score_11"/>
<path d="M764.712,3256.884 A2250.000,2250.000 40.000 0,1 758.664,3197.266 L534.531,3216.993 A2475.000,2475.000 0.000 0,0 541.184,3282.572 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_172_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M758.664,3197.266 A2250.000,2250.000 40.000 0,1 754.206,3137.509 L574.542,3148.509 A2430.000,2430.000 0.000 0,0 579.357,3213.048 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_173_Conservation-Score_9" class="Tumor_necrosis_factor_domain"/>
<path d="M754.206,3137.509 A2250.000,2250.000 40.000 0,1 751.340,3077.654 L526.474,3085.419 A2475.000,2475.000 0.000 0,0 529.626,3151.260 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_174_Conservation-Score_11"/>
<path d="M751.340,3077.654 A2250.000,2250.000 40.000 0,1 750.070,3017.743 L525.077,3019.518 A2475.000,2475.000 0.000 0,0 526.474,3085.419 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_175_Conservation-Score_11"/>
<path d="M750.070,3017.743 A2250.000,2250.000 40.000 0,1 750.395,2957.821 L525.435,2953.603 A2475.000,2475.000 0.000 0,0 525.077,3019.518 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_176_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M750.395,2957.821 A2250.000,2250.000 40.000 0,1 752.316,2897.928 L527.548,2887.720 A2475.000,2475.000 0.000 0,0 525.435,2953.603 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_177_Conservation-Score_11"/>
<path d="M752.316,2897.928 A2250.000,2250.000 40.000 0,1 755.832,2838.107 L688.507,2833.250 A2317.500,2317.500 0.000 0,0 684.886,2894.866 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_178_Conservation-Score_3" class="Tumor_necrosis_factor_domain"/>
<path d="M755.832,2838.107 A2250.000,2250.000 40.000 0,1 760.939,2778.402 L626.595,2765.106 A2385.000,2385.000 0.000 0,0 621.182,2828.394 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_179_Conservation-Score_6"/>
<path d="M760.939,2778.402 A2250.000,2250.000 40.000 0,1 767.634,2718.853 L589.045,2696.361 A2430.000,2430.000 0.000 0,0 581.814,2760.674 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_180_Conservation-Score_9" class="Tumor_necrosis_factor_domain"/>
<path d="M767.634,2718.853 A2250.000,2250.000 40.000 0,1 775.913,2659.504 L597.986,2632.264 A2430.000,2430.000 0.000 0,0 589.045,2696.361 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_181_Conservation-Score_9"/>
<path d="M775.913,2659.504 A2250.000,2250.000 40.000 0,1 785.769,2600.396 L652.916,2576.420 A2385.000,2385.000 0.000 0,0 642.468,2639.074 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_182_Conservation-Score_6" class="Tumor_necrosis_factor_domain"/>
<path d="M785.769,2600.396 A2250.000,2250.000 40.000 0,1 797.196,2541.572 L620.972,2504.898 A2430.000,2430.000 0.000 0,0 608.631,2568.428 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_183_Conservation-Score_8"/>
<path d="M797.196,2541.572 A2250.000,2250.000 40.000 0,1 810.186,2483.073 L744.491,2467.566 A2317.500,2317.500 0.000 0,0 731.112,2527.819 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_184_Conservation-Score_3" class="Tumor_necrosis_factor_domain"/>
<path d="M810.186,2483.073 A2250.000,2250.000 40.000 0,1 824.728,2424.941 L672.459,2384.687 A2407.500,2407.500 0.000 0,0 656.899,2446.888 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_185_Conservation-Score_7" class="Tumor_necrosis_factor_domain"/>
<path d="M824.728,2424.941 A2250.000,2250.000 40.000 0,1 840.814,2367.217 L689.671,2322.922 A2407.500,2407.500 0.000 0,0 672.459,2384.687 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_186_Conservation-Score_7"/>
<path d="M840.814,2367.217 A2250.000,2250.000 40.000 0,1 858.431,2309.941 L794.184,2289.239 A2317.500,2317.500 0.000 0,0 776.038,2348.233 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_187_Conservation-Score_2" class="Tumor_necrosis_factor_domain"/>
<path d="M858.431,2309.941 A2250.000,2250.000 40.000 0,1 877.567,2253.155 L771.445,2215.813 A2362.500,2362.500 0.000 0,0 751.352,2275.438 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_188_Conservation-Score_5" class="Tumor_necrosis_factor_domain"/>
<path d="M877.567,2253.155 A2250.000,2250.000 40.000 0,1 898.208,2196.899 L751.083,2140.682 A2407.500,2407.500 0.000 0,0 728.997,2200.876 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_189_Conservation-Score_7" class="Tumor_necrosis_factor_domain"/>
<path d="M898.208,2196.899 A2250.000,2250.000 40.000 0,1 920.341,2141.212 L712.375,2055.333 A2475.000,2475.000 0.000 0,0 688.029,2116.589 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_190_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M920.341,2141.212 A2250.000,2250.000 40.000 0,1 943.948,2086.134 L738.343,1994.748 A2475.000,2475.000 0.000 0,0 712.375,2055.333 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_191_Conservation-Score_11"/>
<path d="M943.948,2086.134 A2250.000,2250.000 40.000 0,1 969.014,2031.705 L765.915,1934.876 A2475.000,2475.000 0.000 0,0 738.343,1994.748 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_192_Conservation-Score_11"/>
<path d="M969.014,2031.705 A2250.000,2250.000 40.000 0,1 995.520,1977.962 L795.072,1875.759 A2475.000,2475.000 0.000 0,0 765.915,1934.876 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_193_Conservation-Score_11"/>
<path d="M995.520,1977.962 A2250.000,2250.000 40.000 0,1 1023.448,1924.945 L865.324,1838.940 A2430.000,2430.000 0.000 0,0 835.162,1896.199 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_194_Conservation-Score_9"/>
<path d="M1023.448,1924.945 A2250.000,2250.000 40.000 0,1 1052.778,1872.690 L858.056,1759.959 A2475.000,2475.000 0.000 0,0 825.793,1817.439 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_195_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1052.778,1872.690 A2250.000,2250.000 40.000 0,1 1083.490,1821.234 L949.334,1738.721 A2407.500,2407.500 0.000 0,0 916.473,1793.778 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_196_Conservation-Score_7"/>
<path d="M1083.490,1821.234 A2250.000,2250.000 40.000 0,1 1115.560,1770.615 L927.117,1647.676 A2475.000,2475.000 0.000 0,0 891.839,1703.358 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_197_Conservation-Score_11"/>
<path d="M1115.560,1770.615 A2250.000,2250.000 40.000 0,1 1148.968,1720.868 L963.865,1592.954 A2475.000,2475.000 0.000 0,0 927.117,1647.676 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_198_Conservation-Score_11"/>
<path d="M1148.968,1720.868 A2250.000,2250.000 40.000 0,1 1183.688,1672.027 L1002.057,1539.230 A2475.000,2475.000 0.000 0,0 963.865,1592.954 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_199_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1183.688,1672.027 A2250.000,2250.000 40.000 0,1 1219.697,1624.129 L1041.666,1486.542 A2475.000,2475.000 0.000 0,0 1002.057,1539.230 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_200_Conservation-Score_11"/>
<path d="M1219.697,1624.129 A2250.000,2250.000 40.000 0,1 1256.968,1577.207 L1082.665,1434.928 A2475.000,2475.000 0.000 0,0 1041.666,1486.542 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_201_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1256.968,1577.207 A2250.000,2250.000 40.000 0,1 1295.476,1531.294 L1125.023,1384.424 A2475.000,2475.000 0.000 0,0 1082.665,1434.928 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_202_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1295.476,1531.294 A2250.000,2250.000 40.000 0,1 1335.192,1486.423 L1202.008,1365.337 A2430.000,2430.000 0.000 0,0 1159.114,1413.798 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_203_Conservation-Score_8"/>
<path d="M1335.192,1486.423 A2250.000,2250.000 40.000 0,1 1376.090,1442.625 L1213.699,1286.888 A2475.000,2475.000 0.000 0,0 1168.712,1335.065 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_204_Conservation-Score_11"/>
<path d="M1376.090,1442.625 A2250.000,2250.000 40.000 0,1 1418.139,1399.932 L1339.046,1319.929 A2362.500,2362.500 0.000 0,0 1294.895,1364.756 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_205_Conservation-Score_5"/>
<path d="M1418.139,1399.932 A2250.000,2250.000 40.000 0,1 1461.311,1358.374 L1307.442,1194.211 A2475.000,2475.000 0.000 0,0 1259.953,1239.925 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_206_Conservation-Score_11"/>
<path d="M1461.311,1358.374 A2250.000,2250.000 40.000 0,1 1505.574,1317.980 L1430.852,1233.879 A2362.500,2362.500 0.000 0,0 1384.376,1276.293 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_207_Conservation-Score_5" class="Tumor_necrosis_factor_domain"/>
<path d="M1505.574,1317.980 A2250.000,2250.000 40.000 0,1 1550.897,1278.780 L1405.986,1106.658 A2475.000,2475.000 0.000 0,0 1356.131,1149.778 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_208_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1550.897,1278.780 A2250.000,2250.000 40.000 0,1 1597.247,1240.800 L1456.972,1064.880 A2475.000,2475.000 0.000 0,0 1405.986,1106.658 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_209_Conservation-Score_11"/>
<path d="M1597.247,1240.800 A2250.000,2250.000 40.000 0,1 1644.593,1204.068 L1549.714,1078.353 A2407.500,2407.500 0.000 0,0 1499.055,1117.656 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_210_Conservation-Score_7"/>
<path d="M1644.593,1204.068 A2250.000,2250.000 40.000 0,1 1692.900,1168.610 L1562.190,985.471 A2475.000,2475.000 0.000 0,0 1509.052,1024.475 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_211_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1692.900,1168.610 A2250.000,2250.000 40.000 0,1 1742.134,1134.451 L1641.505,985.207 A2430.000,2430.000 0.000 0,0 1588.332,1022.099 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_212_Conservation-Score_9"/>
<path d="M1742.134,1134.451 A2250.000,2250.000 40.000 0,1 1792.261,1101.615 L1671.487,911.776 A2475.000,2475.000 0.000 0,0 1616.348,947.896 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_213_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1792.261,1101.615 A2250.000,2250.000 40.000 0,1 1843.244,1070.126 L1785.406,973.632 A2362.500,2362.500 0.000 0,0 1731.874,1006.696 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_214_Conservation-Score_5" class="Tumor_necrosis_factor_domain"/>
<path d="M1843.244,1070.126 A2250.000,2250.000 40.000 0,1 1895.047,1040.005 L1784.552,844.006 A2475.000,2475.000 0.000 0,0 1727.568,877.138 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_215_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M1895.047,1040.005 A2250.000,2250.000 40.000 0,1 1947.635,1011.275 L1895.016,911.839 A2362.500,2362.500 0.000 0,0 1839.800,942.005 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_216_Conservation-Score_5"/>
<path d="M1947.635,1011.275 A2250.000,2250.000 40.000 0,1 2000.968,983.955 L1901.065,782.351 A2475.000,2475.000 0.000 0,0 1842.398,812.403 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_217_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M2000.968,983.955 A2250.000,2250.000 40.000 0,1 2055.011,958.066 L1960.512,753.872 A2475.000,2475.000 0.000 0,0 1901.065,782.351 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_218_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M2055.011,958.066 A2250.000,2250.000 40.000 0,1 2109.723,933.625 L2020.696,726.987 A2475.000,2475.000 0.000 0,0 1960.512,753.872 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_219_Conservation-Score_11"/>
<path d="M2109.723,933.625 A2250.000,2250.000 40.000 0,1 2165.067,910.649 L2106.622,764.394 A2407.500,2407.500 0.000 0,0 2047.404,788.978 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_220_Conservation-Score_7" class="Tumor_necrosis_factor_domain"/>
<path d="M2165.067,910.649 A2250.000,2250.000 40.000 0,1 2221.004,889.155 L2166.474,741.396 A2407.500,2407.500 0.000 0,0 2106.622,764.394 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_221_Conservation-Score_7"/>
<path d="M2221.004,889.155 A2250.000,2250.000 40.000 0,1 2277.493,869.159 L2219.692,698.692 A2430.000,2430.000 0.000 0,0 2158.684,720.288 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_222_Conservation-Score_9" class="Tumor_necrosis_factor_domain"/>
<path d="M2277.493,869.159 A2250.000,2250.000 40.000 0,1 2334.494,850.674 L2267.943,635.741 A2475.000,2475.000 0.000 0,0 2205.242,656.075 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_223_Conservation-Score_11"/>
<path d="M2334.494,850.674 A2250.000,2250.000 40.000 0,1 2391.968,833.714 L2331.164,617.085 A2475.000,2475.000 0.000 0,0 2267.943,635.741 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_224_Conservation-Score_11"/>
<path d="M2391.968,833.714 A2250.000,2250.000 40.000 0,1 2449.872,818.290 L2394.859,600.119 A2475.000,2475.000 0.000 0,0 2331.164,617.085 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_225_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
<path d="M2449.872,818.290 A2250.000,2250.000 40.000 0,1 2508.167,804.413 L2468.820,628.767 A2430.000,2430.000 0.000 0,0 2405.862,643.753 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_226_Conservation-Score_9"/>
<path d="M2508.167,804.413 A2250.000,2250.000 40.000 0,1 2566.811,792.094 L2523.492,571.304 A2475.000,2475.000 0.000 0,0 2458.984,584.855 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_227_Conservation-Score_11"/>
<path d="M2566.811,792.094 A2250.000,2250.000 40.000 0,1 2625.762,781.341 L2588.338,559.476 A2475.000,2475.000 0.000 0,0 2523.492,571.304 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_228_Conservation-Score_11"/>
<path d="M2625.762,781.341 A2250.000,2250.000 40.000 0,1 2684.978,772.162 L2653.476,549.378 A2475.000,2475.000 0.000 0,0 2588.338,559.476 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_229_Conservation-Score_11"/>
<path d="M2684.978,772.162 A2250.000,2250.000 40.000 0,1 2744.418,764.563 L2723.972,585.728 A2430.000,2430.000 0.000 0,0 2659.777,593.935 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_230_Conservation-Score_9" class="Tumor_necrosis_factor_domain"/>
<path d="M2744.418,764.563 A2250.000,2250.000 40.000 0,1 2804.039,758.550 L2784.443,534.405 A2475.000,2475.000 0.000 0,0 2718.860,541.019 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" class="Tumor_necrosis_factor_domain" id="Residue_231_Conservation-Score_11"/>
<path d="M2804.039,758.550 A2250.000,2250.000 40.000 0,1 2863.800,754.126 L2851.542,551.997 A2452.500,2452.500 0.000 0,0 2786.403,556.819 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_232_Conservation-Score_10" class="Tumor_necrosis_factor_domain"/>
<path d="M2863.800,754.126 A2250.000,2250.000 40.000 0,1 2923.656,751.296 L2916.022,526.425 A2475.000,2475.000 0.000 0,0 2850.180,529.539 Z" style="stroke-width:3.0;stroke:rgb(66,146,198);stroke-linecap:round;fill:rgb(33,113,181);" id="Residue_233_Conservation-Score_11" class="Tumor_necrosis_factor_domain"/>
</g>
<g id="plot1">
<g id="plot1-axis">
</g>
<text x="3731.1" y="5057.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-19.6,3731.1,5057.6)" id="seq_Tryptophan_104" class="sequence">W</text>
<text x="1016.3" y="2211.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-68.3,1016.3,2211.6)" id="seq_Tryptophan_190" class="sequence">W</text>
<text x="3121.5" y="868.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(363.3,3121.5,868.8)" class="sequence" id="seq_Methionine_1">M</text>
<text x="3403.4" y="903.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(370.9,3403.4,903.8)" id="seq_Methionine_6" class="sequence">M</text>
<text x="4368.9" y="1362.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(399.9,4368.9,1362.1)" class="sequence" id="seq_Glutamine_25">Q</text>
<text x="5191.6" y="3067.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-88.2,5191.6,3067.7)" id="seq_Glutamine_59" class="sequence">Q</text>
<text x="4967.6" y="3967.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-63.8,4967.6,3967.6)" class="sequence" id="seq_Glutamine_75">Q</text>
<text x="4104.3" y="4894.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-30.2,4104.3,4894.2)" id="seq_Glutamine_97" class="sequence">Q</text>
<text x="3896.7" y="5000.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-24.1,3896.7,5000.9)" class="sequence" id="seq_Glutamine_101">Q</text>
<text x="3788.8" y="5045.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-21.1,3788.8,5045.8)" class="sequence" id="seq_Glutamine_103">Q</text>
<text x="2640.6" y="5163.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(9.4,2640.6,5163.0)" id="seq_Glutamine_123" class="sequence">Q</text>
<text x="1877.3" y="4883.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(30.8,1877.3,4883.4)" class="sequence" id="seq_Glutamine_137">Q</text>
<text x="1592.0" y="4680.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(40.0,1592.0,4680.8)" id="seq_Glutamine_143" class="sequence">Q</text>
<text x="914.7" y="3677.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(72.0,914.7,3677.6)" id="seq_Glutamine_164" class="sequence">Q</text>
<text x="869.0" y="2874.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-86.6,869.0,2874.8)" class="sequence" id="seq_Glutamine_178">Q</text>
<text x="1328.5" y="1672.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-51.5,1328.5,1672.3)" id="seq_Glutamine_201" class="sequence">Q</text>
<text x="2450.6" y="937.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-14.9,2450.6,937.3)" id="seq_Glutamine_225" class="sequence">Q</text>
<text x="3234.8" y="878.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(366.3,3234.8,878.3)" class="sequence" id="seq_Threonine_3">T</text>
<text x="3569.4" y="942.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(375.5,3569.4,942.7)" class="sequence" id="seq_Aspartic-Acid_9">D</text>
<text x="4187.0" y="1225.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(393.8,4187.0,1225.8)" id="seq_Threonine_21" class="sequence">T</text>
<text x="5011.0" y="2284.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(430.4,5011.0,2284.2)" id="seq_Threonine_45" class="sequence">T</text>
<text x="5029.4" y="2338.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(431.9,5029.4,2338.0)" class="sequence" id="seq_Threonine_46">T</text>
<text x="5132.3" y="3470.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-77.5,5132.3,3470.9)" id="seq_Aspartic-Acid_66" class="sequence">D</text>
<text x="4711.5" y="4356.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-51.6,4711.5,4356.2)" class="sequence" id="seq_Threonine_83">T</text>
<text x="4597.7" y="4488.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-47.0,4597.7,4488.5)" id="seq_Aspartic-Acid_86" class="sequence">D</text>
<text x="2757.3" y="5170.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(6.4,2757.3,5170.1)" class="sequence" id="seq_Aspartic-Acid_121">D</text>
<text x="1387.9" y="4472.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(47.6,1387.9,4472.9)" class="sequence" id="seq_Threonine_148">T</text>
<text x="1206.6" y="4245.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(55.2,1206.6,4245.8)" id="seq_Threonine_153" class="sequence">T</text>
<text x="1142.8" y="4148.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(58.3,1142.8,4148.6)" id="seq_Threonine_155" class="sequence">T</text>
<text x="906.0" y="3619.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(73.5,906.0,3619.3)" id="seq_Threonine_165" class="sequence">T</text>
<text x="885.8" y="2705.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-82.1,885.8,2705.1)" id="seq_Threonine_181" class="sequence">T</text>
<text x="1519.6" y="1462.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-43.9,1519.6,1462.1)" class="sequence" id="seq_Aspartic-Acid_206">D</text>
<text x="1976.5" y="1126.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-28.6,1976.5,1126.7)" id="seq_Aspartic-Acid_216" class="sequence">D</text>
<text x="2129.3" y="1051.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-24.1,2129.3,1051.0)" class="sequence" id="seq_Aspartic-Acid_219">D</text>
<text x="3624.0" y="958.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(377.0,3624.0,958.6)" id="seq_Valine_10" class="sequence">V</text>
<text x="3784.9" y="1014.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(381.6,3784.9,1014.9)" id="seq_Alanine_13" class="sequence">A</text>
<text x="3940.9" y="1083.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(386.2,3940.9,1083.9)" id="seq_Alanine_16" class="sequence">A</text>
<text x="4923.5" y="2074.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(424.3,4923.5,2074.4)" class="sequence" id="seq_Valine_41">V</text>
<text x="4947.5" y="2125.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(425.8,4947.5,2125.9)" id="seq_Alanine_42" class="sequence">A</text>
<text x="4991.3" y="2230.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(428.9,4991.3,2230.9)" id="seq_Alanine_44" class="sequence">A</text>
<text x="5108.9" y="2669.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(441.1,5108.9,2669.3)" class="sequence" id="seq_Histidine_52">H</text>
<text x="5128.5" y="2838.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(445.7,5128.5,2838.7)" id="seq_Valine_55" class="sequence">V</text>
<text x="4984.5" y="3911.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-65.3,4984.5,3911.1)" class="sequence" id="seq_Alanine_74">A</text>
<text x="4933.2" y="4015.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-62.3,4933.2,4015.5)" id="seq_Alanine_76" class="sequence">A</text>
<text x="4905.4" y="4066.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-60.8,4905.4,4066.6)" id="seq_Valine_77" class="sequence">V</text>
<text x="4473.8" y="4611.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-42.4,4473.8,4611.2)" id="seq_Valine_89" class="sequence">V</text>
<text x="4430.4" y="4649.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-40.9,4430.4,4649.9)" id="seq_Alanine_90" class="sequence">A</text>
<text x="4386.0" y="4687.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-39.4,4386.0,4687.4)" class="sequence" id="seq_Histidine_91">H</text>
<text x="4340.5" y="4723.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-37.9,4340.5,4723.7)" id="seq_Valine_92" class="sequence">V</text>
<text x="4294.2" y="4758.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-36.3,4294.2,4758.8)" class="sequence" id="seq_Valine_93">V</text>
<text x="4246.9" y="4792.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-34.8,4246.9,4792.7)" class="sequence" id="seq_Alanine_94">A</text>
<text x="4198.7" y="4825.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-33.3,4198.7,4825.2)" id="seq_Asparagine_95" class="sequence">N</text>
<text x="4049.2" y="4915.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-28.7,4049.2,4915.1)" class="sequence" id="seq_Alanine_98">A</text>
<text x="3620.5" y="5093.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-16.5,3620.5,5093.6)" class="sequence" id="seq_Asparagine_106">N</text>
<text x="3451.4" y="5136.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-11.9,3451.4,5136.5)" id="seq_Alanine_109" class="sequence">A</text>
<text x="3394.3" y="5147.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-10.4,3394.3,5147.7)" id="seq_Asparagine_110" class="sequence">N</text>
<text x="3337.0" y="5157.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-8.9,3337.0,5157.5)" class="sequence" id="seq_Alanine_111">A</text>
<text x="3163.7" y="5177.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-4.3,3163.7,5177.5)" class="sequence" id="seq_Alanine_114">A</text>
<text x="3105.7" y="5181.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-2.8,3105.7,5181.1)" id="seq_Asparagine_115" class="sequence">N</text>
<text x="2989.4" y="5183.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(0.3,2989.4,5183.6)" id="seq_Valine_117" class="sequence">V</text>
<text x="2699.6" y="5162.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(7.9,2699.6,5162.9)" class="sequence" id="seq_Asparagine_122">N</text>
<text x="2527.9" y="5132.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(12.5,2527.9,5132.0)" id="seq_Valine_125" class="sequence">V</text>
<text x="2471.3" y="5118.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(14.0,2471.3,5118.7)" id="seq_Valine_126" class="sequence">V</text>
<text x="2140.9" y="5007.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(23.2,2140.9,5007.6)" class="sequence" id="seq_Tyrosine_132">Y</text>
<text x="1983.4" y="4932.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(27.7,1983.4,4932.6)" id="seq_Tyrosine_135" class="sequence">Y</text>
<text x="1832.4" y="4845.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(32.3,1832.4,4845.3)" id="seq_Valine_138" class="sequence">V</text>
<text x="1349.2" y="4429.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(49.1,1349.2,4429.5)" class="sequence" id="seq_Histidine_149">H</text>
<text x="1311.8" y="4385.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(50.6,1311.8,4385.0)" id="seq_Valine_150" class="sequence">V</text>
<text x="1174.1" y="4197.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(56.7,1174.1,4197.6)" id="seq_Histidine_154" class="sequence">H</text>
<text x="1006.8" y="3891.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(65.9,1006.8,3891.8)" id="seq_Alanine_160" class="sequence">A</text>
<text x="983.7" y="3838.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(67.4,983.7,3838.4)" class="sequence" id="seq_Valine_161">V</text>
<text x="941.9" y="3729.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(70.5,941.9,3729.9)" class="sequence" id="seq_Tyrosine_163">Y</text>
<text x="876.0" y="3506.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(76.6,876.0,3506.9)" class="sequence" id="seq_Valine_167">V</text>
<text x="863.3" y="3450.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(78.1,863.3,3450.2)" class="sequence" id="seq_Asparagine_168">N</text>
<text x="827.5" y="3220.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(84.2,827.5,3220.4)" id="seq_Alanine_172" class="sequence">A</text>
<text x="929.2" y="2482.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-76.0,929.2,2482.0)" id="seq_Alanine_185" class="sequence">A</text>
<text x="959.7" y="2372.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-72.9,959.7,2372.4)" class="sequence" id="seq_Alanine_187">A</text>
<text x="1038.0" y="2159.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-66.8,1038.0,2159.0)" class="sequence" id="seq_Tyrosine_191">Y</text>
<text x="1138.5" y="1955.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-60.7,1138.5,1955.2)" id="seq_Tyrosine_195" class="sequence">Y</text>
<text x="1260.2" y="1763.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-54.6,1260.2,1763.2)" id="seq_Valine_199" class="sequence">V</text>
<text x="1691.5" y="1313.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-37.8,1691.5,1313.4)" class="sequence" id="seq_Alanine_210">A</text>
<text x="1830.3" y="1214.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-33.2,1830.3,1214.4)" id="seq_Asparagine_213" class="sequence">N</text>
<text x="2026.8" y="1100.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-27.1,2026.8,1100.1)" class="sequence" id="seq_Tyrosine_217">Y</text>
<text x="2234.3" y="1007.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-21.0,2234.3,1007.4)" class="sequence" id="seq_Alanine_221">A</text>
<text x="2505.7" y="923.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-13.4,2505.7,923.4)" class="sequence" id="seq_Valine_226">V</text>
<text x="2561.2" y="910.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-11.9,2561.2,910.9)" id="seq_Tyrosine_227" class="sequence">Y</text>
<text x="2842.4" y="871.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-4.2,2842.4,871.2)" class="sequence" id="seq_Alanine_232">A</text>
<text x="4090.8" y="1165.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(390.7,4090.8,1165.1)" class="sequence" id="seq_Lysine_19">K</text>
<text x="4139.3" y="1194.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(392.3,4139.3,1194.8)" class="sequence" id="seq_Lysine_20">K</text>
<text x="4557.5" y="4530.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-45.5,4557.5,4530.5)" class="sequence" id="seq_Lysine_87">K</text>
<text x="1688.8" y="4746.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(36.9,1688.8,4746.2)" class="sequence" id="seq_Lysine_141">K</text>
<text x="890.3" y="3563.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(75.1,890.3,3563.3)" class="sequence" id="seq_Lysine_166">K</text>
<text x="818.8" y="3104.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(87.3,818.8,3104.4)" class="sequence" id="seq_Lysine_174">K</text>
<text x="977.1" y="2318.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-71.4,977.1,2318.3)" id="seq_Lysine_188" class="sequence">K</text>
<text x="1439.8" y="1543.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-47.0,1439.8,1543.1)" class="sequence" id="seq_Lysine_204">K</text>
<text x="4233.8" y="1258.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(395.3,4233.8,1258.0)" id="seq_Glycine_22" class="sequence">G</text>
<text x="4279.7" y="1291.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(396.8,4279.7,1291.5)" class="sequence" id="seq_Glycine_23">G</text>
<text x="4412.0" y="1399.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(401.4,4412.0,1399.1)" id="seq_Glycine_26" class="sequence">G</text>
<text x="4970.1" y="2178.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(427.4,4970.1,2178.1)" id="seq_Glycine_43" class="sequence">G</text>
<text x="5123.5" y="2782.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(444.1,5123.5,2782.1)" id="seq_Glycine_54" class="sequence">G</text>
<text x="5134.1" y="2952.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(448.7,5134.1,2952.3)" id="seq_Glycine_57" class="sequence">G</text>
<text x="3946.6" y="4970.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-25.7,3946.6,4970.0)" class="sequence" id="seq_Glycine_100">G</text>
<text x="3047.6" y="5185.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-1.2,3047.6,5185.1)" class="sequence" id="seq_Glycine_116">G</text>
<text x="2248.3" y="5052.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(20.1,2248.3,5052.3)" class="sequence" id="seq_Glycine_130">G</text>
<text x="1641.6" y="4712.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(38.4,1641.6,4712.2)" id="seq_Glycine_142" class="sequence">G</text>
<text x="1552.3" y="4637.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(41.5,1552.3,4637.5)" id="seq_Glycine_144" class="sequence">G</text>
<text x="916.1" y="2537.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-77.5,916.1,2537.3)" id="seq_Glycine_184" class="sequence">G</text>
<text x="1196.8" y="1857.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-57.6,1196.8,1857.6)" id="seq_Glycine_197" class="sequence">G</text>
<text x="1227.9" y="1809.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-56.1,1227.9,1809.9)" class="sequence" id="seq_Glycine_198">G</text>
<text x="1479.2" y="1502.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-45.4,1479.2,1502.1)" class="sequence" id="seq_Glycine_205">G</text>
<text x="2395.8" y="952.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-16.4,2395.8,952.6)" id="seq_Glycine_224" class="sequence">G</text>
<text x="2673.0" y="890.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-8.8,2673.0,890.5)" id="seq_Glycine_229" class="sequence">G</text>
<text x="3514.4" y="928.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(373.9,3514.4,928.3)" class="sequence" id="seq_Arginine_8">R</text>
<text x="4495.3" y="1476.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(404.5,4495.3,1476.5)" class="sequence" id="seq_Arginine_28">R</text>
<text x="4535.3" y="1516.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(406.0,4535.3,1516.9)" class="sequence" id="seq_Arginine_29">R</text>
<text x="4574.2" y="1558.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(407.5,4574.2,1558.3)" id="seq_Cysteine_30" class="sequence">C</text>
<text x="5075.8" y="2502.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(436.5,5075.8,2502.1)" class="sequence" id="seq_Cysteine_49">C</text>
<text x="5180.0" y="3125.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-86.7,5180.0,3125.6)" id="seq_Arginine_60" class="sequence">R</text>
<text x="5144.1" y="3413.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-79.1,5144.1,3413.9)" class="sequence" id="seq_Arginine_65">R</text>
<text x="4876.4" y="4116.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-59.2,4876.4,4116.9)" id="seq_Arginine_78" class="sequence">R</text>
<text x="4747.0" y="4310.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-53.1,4747.0,4310.1)" id="seq_Arginine_82" class="sequence">R</text>
<text x="3564.5" y="5109.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-15.0,3564.5,5109.4)" class="sequence" id="seq_Arginine_107">R</text>
<text x="3508.1" y="5123.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-13.5,3508.1,5123.7)" class="sequence" id="seq_Arginine_108">R</text>
<text x="2815.2" y="5175.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(4.9,2815.2,5175.8)" class="sequence" id="seq_Arginine_120">R</text>
<text x="1509.2" y="4598.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(43.0,1509.2,4598.3)" class="sequence" id="seq_Cysteine_145">C</text>
<text x="1057.1" y="3996.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(62.8,1057.1,3996.7)" id="seq_Arginine_158" class="sequence">R</text>
<text x="866.4" y="2931.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-88.2,866.4,2931.6)" id="seq_Cysteine_177" class="sequence">C</text>
<text x="873.1" y="2818.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-85.1,873.1,2818.1)" id="seq_Arginine_179" class="sequence">R</text>
<text x="1561.1" y="1423.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-42.4,1561.1,1423.2)" class="sequence" id="seq_Arginine_207">R</text>
<text x="1878.3" y="1183.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(203,24,29);" transform="rotate(-31.7,1878.3,1183.8)" id="seq_Arginine_214" class="sequence">R</text>
<text x="4041.6" y="1136.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(389.2,4041.6,1136.7)" class="sequence" id="seq_Proline_18">P</text>
<text x="4324.8" y="1326.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(398.4,4324.8,1326.2)" id="seq_Proline_24" class="sequence">P</text>
<text x="5183.6" y="3009.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-89.8,5183.6,3009.3)" id="seq_Proline_58" class="sequence">P</text>
<text x="5154.3" y="3356.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-80.6,5154.3,3356.7)" id="seq_Proline_64" class="sequence">P</text>
<text x="5030.2" y="3804.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-68.4,5030.2,3804.1)" id="seq_Proline_72" class="sequence">P</text>
<text x="4674.7" y="4401.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-50.1,4674.7,4401.3)" id="seq_Proline_84" class="sequence">P</text>
<text x="4516.2" y="4571.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-44.0,4516.2,4571.4)" class="sequence" id="seq_Proline_88">P</text>
<text x="4149.7" y="4856.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-31.8,4149.7,4856.5)" id="seq_Proline_96" class="sequence">P</text>
<text x="2415.1" y="5103.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(15.5,2415.1,5103.8)" id="seq_Proline_127" class="sequence">P</text>
<text x="1468.6" y="4556.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(44.5,1468.6,4556.6)" class="sequence" id="seq_Proline_146">P</text>
<text x="865.4" y="2988.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-89.7,865.4,2988.4)" id="seq_Proline_176" class="sequence">P</text>
<text x="894.4" y="2648.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-80.5,894.4,2648.9)" class="sequence" id="seq_Proline_182">P</text>
<text x="996.0" y="2264.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-69.9,996.0,2264.7)" id="seq_Proline_189" class="sequence">P</text>
<text x="1085.5" y="2055.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-63.7,1085.5,2055.8)" class="sequence" id="seq_Proline_193">P</text>
<text x="1927.0" y="1154.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-30.2,1927.0,1154.6)" id="seq_Proline_215" class="sequence">P</text>
<text x="3291.2" y="885.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(367.8,3291.2,885.3)" id="seq_Glutamic-Acid_4" class="sequence">E</text>
<text x="3678.1" y="975.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(378.5,3678.1,975.9)" class="sequence" id="seq_Glutamic-Acid_11">E</text>
<text x="3837.5" y="1036.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(383.1,3837.5,1036.5)" id="seq_Glutamic-Acid_14" class="sequence">E</text>
<text x="3889.5" y="1059.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(384.6,3889.5,1059.5)" id="seq_Glutamic-Acid_15" class="sequence">E</text>
<text x="5175.9" y="3183.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-85.2,5175.9,3183.6)" class="sequence" id="seq_Glutamic-Acid_61">E</text>
<text x="5170.3" y="3241.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-83.7,5170.3,3241.5)" id="seq_Glutamic-Acid_62" class="sequence">E</text>
<text x="3997.8" y="4942.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-27.2,3997.8,4942.3)" class="sequence" id="seq_Glutamic-Acid_99">E</text>
<text x="2931.3" y="5182.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(1.8,2931.3,5182.6)" id="seq_Glutamic-Acid_118" class="sequence">E</text>
<text x="2303.9" y="5069.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(18.6,2303.9,5069.7)" class="sequence" id="seq_Glutamic-Acid_129">E</text>
<text x="878.7" y="2761.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-83.6,878.7,2761.5)" id="seq_Glutamic-Acid_180" class="sequence">E</text>
<text x="904.5" y="2592.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-79.0,904.5,2592.9)" id="seq_Glutamic-Acid_183" class="sequence">E</text>
<text x="943.7" y="2427.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-74.4,943.7,2427.0)" id="seq_Glutamic-Acid_186" class="sequence">E</text>
<text x="1061.1" y="2107.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-65.3,1061.1,2107.1)" id="seq_Glutamic-Acid_192" class="sequence">E</text>
<text x="1401.6" y="1585.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-48.5,1401.6,1585.2)" id="seq_Glutamic-Acid_203" class="sequence">E</text>
<text x="1736.9" y="1279.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-36.3,1736.9,1279.2)" id="seq_Glutamic-Acid_211" class="sequence">E</text>
<text x="2287.7" y="987.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(33,113,181);" transform="rotate(-19.5,2287.7,987.7)" id="seq_Glutamic-Acid_222" class="sequence">E</text>
<text x="3178.2" y="872.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(364.8,3178.2,872.8)" class="sequence" id="seq_Serine_2">S</text>
<text x="3347.4" y="893.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(369.4,3347.4,893.8)" class="sequence" id="seq_Serine_5">S</text>
<text x="4454.2" y="1437.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(402.9,4454.2,1437.3)" class="sequence" id="seq_Serine_27">S</text>
<text x="4718.6" y="1733.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(413.6,4718.6,1733.9)" id="seq_Serine_34" class="sequence">S</text>
<text x="4814.2" y="1875.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(418.2,4814.2,1875.1)" class="sequence" id="seq_Serine_37">S</text>
<text x="5106.1" y="3584.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-74.5,5106.1,3584.2)" class="sequence" id="seq_Serine_68">S</text>
<text x="5052.8" y="3750.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-69.9,5052.8,3750.5)" class="sequence" id="seq_Serine_71">S</text>
<text x="4847.6" y="4167.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-57.7,4847.6,4167.6)" class="sequence" id="seq_Serine_79">S</text>
<text x="4815.9" y="4216.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-56.2,4815.9,4216.4)" class="sequence" id="seq_Serine_80">S</text>
<text x="4782.9" y="4264.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-54.7,4782.9,4264.3)" id="seq_Serine_81" class="sequence">S</text>
<text x="4638.3" y="4446.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-48.6,4638.3,4446.7)" id="seq_Serine_85" class="sequence">S</text>
<text x="2358.7" y="5089.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(17.1,2358.7,5089.4)" id="seq_Serine_128" class="sequence">S</text>
<text x="1931.3" y="4906.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(29.3,1931.3,4906.6)" id="seq_Serine_136" class="sequence">S</text>
<text x="1426.3" y="4516.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(46.1,1426.3,4516.7)" id="seq_Serine_147" class="sequence">S</text>
<text x="1082.5" y="4049.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(61.3,1082.5,4049.0)" class="sequence" id="seq_Serine_157">S</text>
<text x="960.2" y="3785.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(68.9,960.2,3785.1)" id="seq_Serine_162" class="sequence">S</text>
<text x="832.2" y="3278.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(82.7,832.2,3278.4)" class="sequence" id="seq_Serine_171">S</text>
<text x="814.8" y="3046.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(88.8,814.8,3046.3)" id="seq_Serine_175" class="sequence">S</text>
<text x="1647.1" y="1348.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-39.3,1647.1,1348.9)" id="seq_Serine_209" class="sequence">S</text>
<text x="2341.5" y="969.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(-18.0,2341.5,969.5)" id="seq_Serine_223" class="sequence">S</text>
<text x="4648.8" y="1644.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(410.6,4648.8,1644.2)" class="sequence" id="seq_Phenylalanine_32">F</text>
<text x="4783.6" y="1827.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(416.7,4783.6,1827.2)" id="seq_Phenylalanine_36" class="sequence">F</text>
<text x="4843.5" y="1923.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(419.7,4843.5,1923.8)" class="sequence" id="seq_Phenylalanine_38">F</text>
<text x="5061.8" y="2447.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(435.0,5061.8,2447.0)" id="seq_Phenylalanine_48" class="sequence">F</text>
<text x="5116.9" y="2725.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(442.6,5116.9,2725.6)" id="seq_Phenylalanine_53" class="sequence">F</text>
<text x="5163.1" y="3299.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-82.1,5163.1,3299.2)" class="sequence" id="seq_Phenylalanine_63">F</text>
<text x="1735.8" y="4780.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(35.4,1735.8,4780.5)" class="sequence" id="seq_Phenylalanine_140">F</text>
<text x="1293.7" y="1717.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-53.1,1293.7,1717.3)" class="sequence" id="seq_Phenylalanine_200">F</text>
<text x="2181.5" y="1028.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-22.5,2181.5,1028.5)" id="seq_Phenylalanine_220" class="sequence">F</text>
<text x="2616.9" y="900.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(35,139,69);" transform="rotate(-10.3,2616.9,900.0)" id="seq_Phenylalanine_228" class="sequence">F</text>
<text x="3731.8" y="994.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(380.0,3731.8,994.7)" class="sequence" id="seq_Leucine_12">L</text>
<text x="3991.6" y="1109.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(387.7,3991.6,1109.6)" id="seq_Leucine_17" class="sequence">L</text>
<text x="4612.1" y="1600.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(409.0,4612.1,1600.7)" class="sequence" id="seq_Leucine_31">L</text>
<text x="4684.3" y="1688.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(412.1,4684.3,1688.6)" class="sequence" id="seq_Leucine_33">L</text>
<text x="4751.7" y="1780.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(415.1,4751.7,1780.1)" id="seq_Leucine_35" class="sequence">L</text>
<text x="4871.5" y="1973.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(421.3,4871.5,1973.3)" id="seq_Leucine_39" class="sequence">L</text>
<text x="5046.3" y="2392.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(433.5,5046.3,2392.2)" id="seq_Leucine_47" class="sequence">L</text>
<text x="5088.3" y="2557.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(438.0,5088.3,2557.5)" id="seq_Leucine_50" class="sequence">L</text>
<text x="5099.3" y="2613.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(439.6,5099.3,2613.3)" class="sequence" id="seq_Leucine_51">L</text>
<text x="5119.0" y="3527.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-76.0,5119.0,3527.5)" id="seq_Leucine_67" class="sequence">L</text>
<text x="5087.9" y="3639.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-73.0,5087.9,3639.5)" id="seq_Leucine_69" class="sequence">L</text>
<text x="5008.1" y="3857.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-66.9,5008.1,3857.9)" class="sequence" id="seq_Leucine_73">L</text>
<text x="3839.6" y="5015.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-22.6,3839.6,5015.8)" class="sequence" id="seq_Leucine_102">L</text>
<text x="3676.0" y="5076.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-18.0,3676.0,5076.4)" class="sequence" id="seq_Leucine_105">L</text>
<text x="3279.4" y="5165.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-7.4,3279.4,5165.7)" class="sequence" id="seq_Leucine_112">L</text>
<text x="3221.7" y="5172.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-5.8,3221.7,5172.4)" class="sequence" id="seq_Leucine_113">L</text>
<text x="2873.2" y="5180.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(3.3,2873.2,5180.0)" class="sequence" id="seq_Leucine_119">L</text>
<text x="2584.8" y="5143.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(11.0,2584.8,5143.8)" class="sequence" id="seq_Leucine_124">L</text>
<text x="2194.7" y="5029.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(21.6,2194.7,5029.7)" class="sequence" id="seq_Leucine_131">L</text>
<text x="2087.7" y="4984.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(24.7,2087.7,4984.0)" id="seq_Leucine_133" class="sequence">L</text>
<text x="1783.7" y="4813.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(33.8,1783.7,4813.5)" id="seq_Leucine_139" class="sequence">L</text>
<text x="1275.5" y="4339.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(52.2,1275.5,4339.5)" class="sequence" id="seq_Leucine_151">L</text>
<text x="1240.4" y="4293.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(53.7,1240.4,4293.1)" id="seq_Leucine_152" class="sequence">L</text>
<text x="852.0" y="3393.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(79.6,852.0,3393.1)" id="seq_Leucine_169" class="sequence">L</text>
<text x="842.3" y="3335.8" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(81.2,842.3,3335.8)" id="seq_Leucine_170" class="sequence">L</text>
<text x="1167.0" y="1906.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-59.2,1167.0,1906.0)" class="sequence" id="seq_Leucine_196">L</text>
<text x="1364.4" y="1628.2" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-50.0,1364.4,1628.2)" class="sequence" id="seq_Leucine_202">L</text>
<text x="1603.6" y="1385.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-40.9,1603.6,1385.5)" class="sequence" id="seq_Leucine_208">L</text>
<text x="2077.7" y="1074.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-25.6,2077.7,1074.9)" id="seq_Leucine_218" class="sequence">L</text>
<text x="2899.2" y="867.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-2.7,2899.2,867.7)" id="seq_Leucine_233" class="sequence">L</text>
<text x="3459.1" y="915.3" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(372.4,3459.1,915.3)" class="sequence" id="seq_Isoleucine_7">I</text>
<text x="4898.2" y="2023.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(422.8,4898.2,2023.5)" id="seq_Isoleucine_40" class="sequence">I</text>
<text x="5132.1" y="2895.4" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(447.2,5132.1,2895.4)" class="sequence" id="seq_Isoleucine_56">I</text>
<text x="5070.1" y="3694.9" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-71.4,5070.1,3694.9)" id="seq_Isoleucine_70" class="sequence">I</text>
<text x="2035.2" y="4959.0" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(26.2,2035.2,4959.0)" class="sequence" id="seq_Isoleucine_134">I</text>
<text x="1112.9" y="4098.7" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(59.8,1112.9,4098.7)" class="sequence" id="seq_Isoleucine_156">I</text>
<text x="1031.2" y="3944.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(64.4,1031.2,3944.6)" id="seq_Isoleucine_159" class="sequence">I</text>
<text x="822.4" y="3162.5" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(85.7,822.4,3162.5)" class="sequence" id="seq_Isoleucine_173">I</text>
<text x="1111.4" y="2005.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-62.2,1111.4,2005.1)" id="seq_Isoleucine_194" class="sequence">I</text>
<text x="1783.2" y="1246.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-34.8,1783.2,1246.1)" id="seq_Isoleucine_212" class="sequence">I</text>
<text x="2729.3" y="882.6" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-7.3,2729.3,882.6)" id="seq_Isoleucine_230" class="sequence">I</text>
<text x="2785.8" y="876.1" font-size="67.6px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(82,82,82);" transform="rotate(-5.8,2785.8,876.1)" id="seq_Isoleucine_231" class="sequence">I</text>
</g>
<g id="plot2">
<g id="plot2-axis">
</g>
<circle cx='3111.3' cy='1048.3' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_1"/>
<circle cx='3167.9' cy='996.0' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_2"/>
<circle cx='3227.4' cy='945.3' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_3"/>
<polygon points="3269,1038 3293,1091 3235,1086" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_4" class="scatter"/>
<circle cx='3327.3' cy='1015.8' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_5"/>
<circle cx='3390.7' cy='970.0' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_6" class="scatter"/>
<circle cx='3420.4' cy='1090.9' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_7" class="scatter"/>
<polygon points="3490,1024 3508,1079 3451,1067" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_8"/>
<polygon points="3557,983 3574,1039 3518,1026" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_9"/>
<circle cx='3571.5' cy='1130.5' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_10" class="scatter"/>
<polygon points="3646,1069 3660,1125 3604,1109" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_11" class="scatter"/>
<circle cx='3708.7' cy='1058.0' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_12" class="scatter"/>
<circle cx='3718.8' cy='1182.1' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_13" class="scatter"/>
<polygon points="3798,1127 3807,1184 3753,1163" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_14" class="scatter"/>
<polygon points="3871,1098 3879,1155 3825,1133" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_15"/>
<circle cx='3861.7' cy='1245.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_16" class="scatter"/>
<circle cx='3934.2' cy='1219.1' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_17"/>
<circle cx='4008.7' cy='1195.5' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_18"/>
<polygon points="4011,1297 4013,1355 3962,1328" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_19" class="scatter"/>
<polygon points="4086,1278 4086,1336 4036,1307" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_20" class="scatter"/>
<circle cx='4149.5' cy='1281.8' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_21" class="scatter"/>
<circle cx='4129.9' cy='1404.7' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_22"/>
<circle cx='4205.7' cy='1390.4' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_23"/>
<circle cx='4283.0' cy='1379.0' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_24" class="scatter"/>
<circle cx='4253.6' cy='1500.0' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_25" class="scatter"/>
<circle cx='4330.3' cy='1491.8' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_26"/>
<circle cx='4408.2' cy='1486.6' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_27" class="scatter"/>
<polygon points="4386,1586 4374,1643 4331,1604" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_28" class="scatter"/>
<polygon points="4464,1585 4450,1641 4408,1601" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_29" class="scatter"/>
<circle cx='4524.5' cy='1603.8' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_30" class="scatter"/>
<circle cx='4476.3' cy='1718.6' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_31"/>
<polygon points="4573,1744 4539,1748 4525,1717 4550,1694 4580,1711" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_32"/>
<circle cx='4631.1' cy='1730.0' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_33"/>
<circle cx='4573.9' cy='1840.5' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_34"/>
<circle cx='4650.3' cy='1850.7' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_35"/>
<polygon points="4744,1888 4710,1888 4700,1855 4727,1835 4755,1855" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_36"/>
<circle cx='4661.4' cy='1969.8' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_37"/>
<polygon points="4752,2010 4718,2009 4710,1976 4738,1957 4765,1979" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_38" class="scatter"/>
<circle cx='4812.4' cy='2005.7' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_39" class="scatter"/>
<circle cx='4738.3' cy='2105.7' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_40" class="scatter"/>
<circle cx='4812.2' cy='2128.0' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_41"/>
<circle cx='4886.0' cy='2153.5' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_42" class="scatter"/>
<circle cx='4804.2' cy='2247.3' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_43"/>
<circle cx='4876.0' cy='2275.4' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_44"/>
<circle cx='4947.5' cy='2306.8' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_45"/>
<circle cx='4858.5' cy='2393.7' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_46" class="scatter"/>
<circle cx='4927.8' cy='2427.4' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_47" class="scatter"/>
<polygon points="5005,2492 4973,2481 4973,2447 5006,2437 5026,2465" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_48" class="scatter"/>
<circle cx='4901.0' cy='2544.0' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_49" class="scatter"/>
<circle cx='4967.4' cy='2583.1' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_50" class="scatter"/>
<circle cx='5033.0' cy='2625.5' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_51"/>
<polygon points="4956,2692 4912,2731 4901,2674" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_52" class="scatter"/>
<polygon points="4999,2770 4969,2755 4974,2721 5007,2715 5023,2746" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_53" class="scatter"/>
<circle cx='5056.4' cy='2789.0' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_54"/>
<circle cx='4949.3' cy='2852.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_55" class="scatter"/>
<circle cx='5008.7' cy='2901.5' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_56"/>
<circle cx='5066.7' cy='2953.8' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_57" class="scatter"/>
<circle cx='4954.9' cy='3008.3' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_58"/>
<circle cx='5010.1' cy='3062.1' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_59"/>
<polygon points="5089,3119 5038,3148 5039,3090" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_60" class="scatter"/>
<polygon points="4973,3165 4922,3192 4924,3134" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_61" class="scatter"/>
<polygon points="5024,3224 4972,3250 4976,3192" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_62"/>
<polygon points="5045,3312 5019,3290 5033,3258 5067,3261 5074,3295" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_63"/>
<circle cx='4928.6' cy='3319.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_64" class="scatter"/>
<polygon points="4999,3385 4946,3406 4954,3349" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_65" class="scatter"/>
<polygon points="5043,3450 4989,3470 4999,3413" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_66"/>
<circle cx='4897.0' cy='3472.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_67" class="scatter"/>
<circle cx='4937.9' cy='3537.6' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_68" class="scatter"/>
<circle cx='4976.6' cy='3605.4' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_69"/>
<circle cx='4853.3' cy='3622.1' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_70"/>
<circle cx='4888.8' cy='3690.5' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_71" class="scatter"/>
<circle cx='4922.0' cy='3761.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_72" class="scatter"/>
<circle cx='4797.7' cy='3768.1' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_73" class="scatter"/>
<circle cx='4827.7' cy='3839.1' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_74"/>
<circle cx='4855.1' cy='3912.3' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_75"/>
<circle cx='4730.7' cy='3909.1' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_76"/>
<circle cx='4754.8' cy='3982.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_77" class="scatter"/>
<polygon points="4798,4069 4740,4071 4768,4020" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_78" class="scatter"/>
<circle cx='4652.6' cy='4044.3' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_79" class="scatter"/>
<circle cx='4670.8' cy='4119.2' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_80"/>
<circle cx='4686.3' cy='4195.8' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_81"/>
<polygon points="4585,4187 4527,4183 4560,4135" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_82" class="scatter"/>
<circle cx='4576.2' cy='4249.0' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_83"/>
<circle cx='4585.4' cy='4326.6' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_84" class="scatter"/>
<circle cx='4465.3' cy='4294.0' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_85"/>
<polygon points="4491,4387 4434,4377 4471,4332" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_86" class="scatter"/>
<polygon points="4493,4466 4436,4454 4475,4411" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_87"/>
<circle cx='4357.4' cy='4406.8' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_88" class="scatter"/>
<circle cx='4357.4' cy='4483.9' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_89" class="scatter"/>
<circle cx='4354.2' cy='4562.0' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_90"/>
<polygon points="4258,4529 4202,4511 4246,4473" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_91" class="scatter"/>
<circle cx='4234.6' cy='4587.5' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_92" class="scatter"/>
<circle cx='4225.2' cy='4665.1' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_93"/>
<circle cx='4116.2' cy='4604.9' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_94"/>
<circle cx='4103.9' cy='4681.0' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_95" class="scatter"/>
<circle cx='4088.4' cy='4757.5' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_96"/>
<circle cx='3984.6' cy='4688.8' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_97" class="scatter"/>
<circle cx='3966.3' cy='4763.7' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_98"/>
<polygon points="3957,4861 3907,4831 3957,4803" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_99" class="scatter"/>
<circle cx='3846.7' cy='4762.0' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_100"/>
<circle cx='3822.4' cy='4835.2' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_101" class="scatter"/>
<circle cx='3794.8' cy='4908.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_102" class="scatter"/>
<circle cx='3703.3' cy='4824.0' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_103" class="scatter"/>
<polygon points="3646,4906 3655,4873 3689,4870 3701,4902 3675,4924" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_104"/>
<circle cx='3640.0' cy='4965.7' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_105" class="scatter"/>
<circle cx='3555.5' cy='4874.3' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_106"/>
<polygon points="3527,4967 3485,4927 3540,4910" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_107" class="scatter"/>
<polygon points="3488,5035 3446,4994 3502,4978" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_108" class="scatter"/>
<circle cx='3404.1' cy='4912.7' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_109" class="scatter"/>
<circle cx='3363.2' cy='4978.0' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_110" class="scatter"/>
<circle cx='3319.0' cy='5042.5' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_111" class="scatter"/>
<circle cx='3250.2' cy='4938.8' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_112" class="scatter"/>
<circle cx='3204.1' cy='5000.7' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_113"/>
<circle cx='3155.0' cy='5061.4' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_114"/>
<circle cx='3094.6' cy='4952.6' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_115"/>
<circle cx='3043.8' cy='5010.6' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_116" class="scatter"/>
<circle cx='2990.0' cy='5067.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_117" class="scatter"/>
<polygon points="2939,4979 2909,4929 2967,4928" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_118"/>
<circle cx='2883.2' cy='5007.7' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_119"/>
<polygon points="2824,5085 2797,5034 2855,5036" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_120"/>
<polygon points="2781,4968 2755,4916 2813,4920" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_121" class="scatter"/>
<circle cx='2723.3' cy='4991.9' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_122"/>
<circle cx='2661.2' cy='5039.3' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_123" class="scatter"/>
<circle cx='2628.3' cy='4919.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_124"/>
<circle cx='2565.2' cy='4963.5' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_125" class="scatter"/>
<circle cx='2499.5' cy='5005.7' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_126"/>
<circle cx='2476.3' cy='4883.4' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_127"/>
<circle cx='2409.9' cy='4922.5' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_128"/>
<polygon points="2334,4984 2320,4927 2376,4943" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_129" class="scatter"/>
<circle cx='2327.7' cy='4835.6' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_130"/>
<circle cx='2258.3' cy='4869.3' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_131"/>
<polygon points="2160,4890 2188,4872 2215,4893 2203,4925 2169,4923" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_132"/>
<circle cx='2183.3' cy='4776.1' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_133" class="scatter"/>
<circle cx='2111.5' cy='4804.1' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_134"/>
<polygon points="2011,4817 2041,4801 2066,4824 2052,4855 2018,4851" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_135" class="scatter"/>
<circle cx='2044.2' cy='4705.3' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_136" class="scatter"/>
<circle cx='1970.3' cy='4727.5' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_137" class="scatter"/>
<circle cx='1894.6' cy='4746.9' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_138"/>
<circle cx='1911.1' cy='4623.5' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_139" class="scatter"/>
<polygon points="1811,4624 1843,4612 1865,4638 1846,4667 1813,4658" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_140"/>
<polygon points="1745,4674 1749,4616 1797,4649" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_141" class="scatter"/>
<circle cx='1785.0' cy='4531.5' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_142"/>
<circle cx='1708.6' cy='4541.6' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_143"/>
<circle cx='1630.8' cy='4548.8' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_144" class="scatter"/>
<circle cx='1666.6' cy='4429.6' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_145"/>
<circle cx='1589.6' cy='4433.6' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_146" class="scatter"/>
<circle cx='1511.5' cy='4434.5' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_147"/>
<circle cx='1556.8' cy='4318.6' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_148"/>
<polygon points="1461,4334 1478,4278 1518,4320" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_149"/>
<circle cx='1401.8' cy='4311.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_150" class="scatter"/>
<circle cx='1456.1' cy='4199.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_151" class="scatter"/>
<circle cx='1379.5' cy='4190.9' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_152"/>
<circle cx='1302.2' cy='4179.4' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_153" class="scatter"/>
<polygon points="1345,4087 1369,4034 1403,4081" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_154"/>
<circle cx='1289.6' cy='4057.8' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_155"/>
<circle cx='1213.5' cy='4040.1' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_156" class="scatter"/>
<circle cx='1285.0' cy='3938.3' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_157"/>
<polygon points="1189,3930 1218,3880 1247,3931" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_158" class="scatter"/>
<circle cx='1136.2' cy='3894.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_159" class="scatter"/>
<circle cx='1215.6' cy='3798.4' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_160" class="scatter"/>
<circle cx='1143.1' cy='3772.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_161"/>
<circle cx='1070.7' cy='3742.6' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_162" class="scatter"/>
<polygon points="1147,3627 1180,3635 1182,3669 1151,3682 1129,3655" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_163"/>
<circle cx='1087.4' cy='3621.5' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_164"/>
<circle cx='1017.6' cy='3586.3' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_165" class="scatter"/>
<polygon points="1087,3512 1127,3469 1144,3524" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_166" class="scatter"/>
<circle cx='1043.9' cy='3466.8' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_167" class="scatter"/>
<circle cx='977.2' cy='3426.2' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_168" class="scatter"/>
<circle cx='1077.0' cy='3351.9' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_169"/>
<circle cx='1012.8' cy='3309.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_170"/>
<circle cx='949.6' cy='3263.3' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_171" class="scatter"/>
<circle cx='1055.1' cy='3197.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_172" class="scatter"/>
<circle cx='994.5' cy='3149.6' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_173" class="scatter"/>
<polygon points="910,3101 957,3068 963,3125" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_174"/>
<circle cx='1045.5' cy='3041.4' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_175" class="scatter"/>
<circle cx='989.0' cy='2989.1' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_176" class="scatter"/>
<circle cx='933.8' cy='2933.7' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_177" class="scatter"/>
<circle cx='1048.5' cy='2885.3' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_178"/>
<polygon points="971,2828 1023,2801 1020,2859" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_179"/>
<polygon points="921,2767 973,2742 969,2800" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_180" class="scatter"/>
<circle cx='1063.9' cy='2729.9' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_181"/>
<circle cx='1016.3' cy='2669.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_182"/>
<polygon points="946,2602 1000,2581 991,2638" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_183"/>
<circle cx='1091.6' cy='2576.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_184" class="scatter"/>
<circle cx='1049.1' cy='2511.9' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_185" class="scatter"/>
<polygon points="984,2439 1040,2423 1027,2479" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_186" class="scatter"/>
<circle cx='1131.5' cy='2425.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_187" class="scatter"/>
<polygon points="1070,2351 1126,2337 1110,2393" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_188" class="scatter"/>
<circle cx='1059.3' cy='2287.9' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_189" class="scatter"/>
<polygon points="1193,2251 1212,2279 1192,2306 1160,2295 1160,2260" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_190"/>
<polygon points="1162,2181 1181,2209 1159,2236 1127,2224 1129,2190" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_191" class="scatter"/>
<polygon points="1099,2126 1157,2118 1135,2172" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_192"/>
<circle cx='1246.8' cy='2135.3' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_193" class="scatter"/>
<circle cx='1220.7' cy='2062.7' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_194"/>
<polygon points="1210,1962 1226,1993 1202,2017 1172,2001 1177,1968" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_195"/>
<circle cx='1321.4' cy='1998.1' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_196"/>
<circle cx='1301.2' cy='1923.7' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_197" class="scatter"/>
<circle cx='1283.8' cy='1847.5' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_198" class="scatter"/>
<circle cx='1406.7' cy='1867.3' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_199"/>
<polygon points="1409,1768 1420,1800 1393,1821 1365,1801 1375,1769" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_200" class="scatter"/>
<circle cx='1381.3' cy='1714.2' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_201" class="scatter"/>
<circle cx='1502.2' cy='1743.8' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_202" class="scatter"/>
<polygon points="1475,1651 1532,1660 1495,1705" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_203"/>
<polygon points="1470,1573 1527,1583 1489,1627" style="fill:rgb(239,59,44);" id="scat_Positive_Residue_204" class="scatter"/>
<circle cx='1607.2' cy='1628.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_205"/>
<polygon points="1587,1534 1643,1547 1603,1589" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_206"/>
<polygon points="1589,1455 1645,1470 1604,1511" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_207"/>
<circle cx='1721.2' cy='1521.4' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_208"/>
<circle cx='1725.4' cy='1444.5' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_209"/>
<circle cx='1732.8' cy='1366.7' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_210" class="scatter"/>
<polygon points="1828,1405 1882,1425 1836,1462" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_211"/>
<circle cx='1853.6' cy='1347.7' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_212" class="scatter"/>
<circle cx='1867.2' cy='1270.7' r='29.0' style="fill:rgb(255,0,255);" class="scatter" id="scat_Polar_Residue_213"/>
<polygon points="1959,1316 2011,1341 1963,1374" style="fill:rgb(239,59,44);" class="scatter" id="scat_Positive_Residue_214"/>
<circle cx='1989.1' cy='1261.5' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_215"/>
<polygon points="1996,1164 2047,1192 1997,1222" style="fill:rgb(66,146,198);" class="scatter" id="scat_Negative_Residue_216"/>
<polygon points="2134,1246 2130,1280 2097,1287 2080,1257 2103,1232" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_217" class="scatter"/>
<circle cx='2131.1' cy='1186.3' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_218"/>
<polygon points="2146,1090 2194,1122 2142,1148" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_219" class="scatter"/>
<polygon points="2277,1182 2270,1216 2236,1220 2222,1189 2247,1166" style="fill:rgb(65,171,93);" id="scat_Aromatic_Residue_220" class="scatter"/>
<circle cx='2278.7' cy='1122.8' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_221" class="scatter"/>
<polygon points="2301,1028 2346,1064 2293,1085" style="fill:rgb(66,146,198);" id="scat_Negative_Residue_222" class="scatter"/>
<circle cx='2397.0' cy='1140.4' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_223" class="scatter"/>
<circle cx='2430.8' cy='1071.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_224"/>
<circle cx='2467.9' cy='1002.4' r='29.0' style="fill:rgb(255,0,255);" id="scat_Polar_Residue_225" class="scatter"/>
<circle cx='2547.3' cy='1098.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_226"/>
<polygon points="2615,1025 2602,1056 2568,1054 2560,1021 2588,1003" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_227"/>
<polygon points="2657,960 2644,991 2610,988 2602,955 2632,937" style="fill:rgb(65,171,93);" class="scatter" id="scat_Aromatic_Residue_228"/>
<circle cx='2700.5' cy='1068.2' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_229" class="scatter"/>
<circle cx='2745.0' cy='1005.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_230"/>
<circle cx='2792.5' cy='943.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_231"/>
<circle cx='2855.7' cy='1050.4' r='29.0' style="fill:rgb(115,115,115);" id="scat_Nonpolar_Residue_232" class="scatter"/>
<circle cx='2905.0' cy='991.2' r='29.0' style="fill:rgb(115,115,115);" class="scatter" id="scat_Nonpolar_Residue_233"/>
</g>
<g id="plot3">
<g id="plot3-axis">
</g>
<line x1='1710.7' y1='912.6' x2='1709.1' y2='910.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1709.1' y1='910.0' x2='1693.4' y2='884.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1693.4' y1='884.5' x2='1691.8' y2='881.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1670.9" y="893.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(58.3,1670.9,893.8)" class="mut" polyphen2="0.509" dbsource="dbSNP" sift="0.18" ipvMAF="NA" id="R214W_rsID_rs141307820_1_8">p.R214W</text>
<line x1='3570.9' y1='5386.1' x2='3571.6' y2='5389.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3571.6' y1='5389.1' x2='3578.6' y2='5418.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3578.6' y1='5418.2' x2='3579.3' y2='5421.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3556.2" y="5427.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(76.5,3556.2,5427.6)" sift="0.18" class="mut" polyphen2="0.788" dbsource="dbSNP" id="R108W_rsID_rs281865419_1_17" ipvMAF="NA">p.R108W</text>
<line x1='2988.1' y1='5453.5' x2='2988.1' y2='5456.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2988.1' y1='5456.5' x2='2987.9' y2='5486.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2987.9' y1='5486.5' x2='2987.9' y2='5489.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3011.9" y="5490.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-89.7,3011.9,5490.5)" ipvMAF="0.000199681" id="V117M_rsID_rs548532642_1_32" dbsource="dbSNP" class="mut" polyphen2="0.029" sift="1">p.V117M</text>
<line x1='1823.7' y1='846.9' x2='1822.2' y2='844.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1822.2' y1='844.2' x2='1807.9' y2='817.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1807.9' y1='817.9' x2='1806.4' y2='815.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1784.9" y="826.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(61.4,1784.9,826.0)" class="mut" polyphen2="0" dbsource="dbSNP" sift="0.26" ipvMAF="NA" id="D216N_rsID_rs370893734_1_23">p.D216N</text>
<line x1='977.4' y1='4751.4' x2='975.2' y2='4753.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='975.2' y1='4753.4' x2='952.5' y2='4773.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='952.5' y1='4773.0' x2='950.2' y2='4775.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="965.2" y="4793.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-40.9,965.2,4793.7)" sift="0.3" class="mut" polyphen2="0.007" dbsource="dbSNP" id="H149Q_rsID_rs758652888_1_103" ipvMAF="NA">p.H149Q</text>
<line x1='806.6' y1='4899.4' x2='804.3' y2='4901.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='804.3' y1='4901.3' x2='781.6' y2='4921.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='781.6' y1='4921.0' x2='779.4' y2='4922.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="794.4" y="4941.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-40.9,794.4,4941.7)" dbsource="dbSNP" class="mut" polyphen2="0.007" sift="0.3" ipvMAF="NA" id="H149Q_rsID_rs758652888_2_103">p.H149Q</text>
<line x1='3118.7' y1='5450.6' x2='3118.9' y2='5453.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3118.9' y1='5453.6' x2='3120.3' y2='5483.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3120.3' y1='5483.6' x2='3120.5' y2='5486.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3096.6" y="5488.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(87.2,3096.6,5488.6)" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP" id="N115N_rsID_rs142488339_1_14" ipvMAF="NA">p.N115N</text>
<line x1='1715.3' y1='648.5' x2='1713.9' y2='645.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1713.9' y1='645.9' x2='1699.5' y2='619.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1699.5' y1='619.6' x2='1698.1' y2='617.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1676.6" y="627.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(61.4,1676.6,627.7)" class="mut" polyphen2="0" dbsource="dbSNP" sift="0.26" ipvMAF="NA" id="D216Y_rsID_rs370893734_2_23">p.D216Y</text>
<line x1='3184.0' y1='5446.6' x2='3184.2' y2='5449.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3184.2' y1='5449.6' x2='3186.4' y2='5479.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3186.4' y1='5479.5' x2='3186.7' y2='5482.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3162.8" y="5485.2" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(85.7,3162.8,5485.2)" ipvMAF="NA" id="A114D_rsID_rs780017660_1_96" dbsource="dbSNP" class="mut" polyphen2="0.031" sift="0.37">p.A114D</text>
<line x1='1346.1' y1='1187.7' x2='1344.1' y2='1185.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1344.1' y1='1185.5' x2='1323.9' y2='1163.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1323.9' y1='1163.3' x2='1321.9' y2='1161.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1303.5" y="1176.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(47.6,1303.5,1176.6)" sift="0.12" polyphen2="0.037" class="mut" dbsource="dbSNP" id="R207Q_rsID_rs376368223_1_26" ipvMAF="NA">p.R207Q</text>
<line x1='1188.7' y1='4654.9' x2='1186.5' y2='4656.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1186.5' y1='4656.9' x2='1164.3' y2='4677.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1164.3' y1='4677.2' x2='1162.1' y2='4679.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1177.6" y="4697.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-42.4,1177.6,4697.5)" id="T148N_rsID_rs552363141_1_33" ipvMAF="0.000199681" sift="0.47" dbsource="dbSNP" polyphen2="0.003" class="mut">p.T148N</text>
<line x1='570.0' y1='2661.0' x2='567.1' y2='2660.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='567.1' y1='2660.6' x2='537.3' y2='2656.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='537.3' y1='2656.5' x2='534.4' y2='2656.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="530.2" y="2679.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(7.9,530.2,2679.7)" sift="0.11" dbsource="dbSNP" class="mut" polyphen2="0.464" id="T181N_rsID_rs140654183_1_34" ipvMAF="NA">p.T181N</text>
<line x1='3625.2' y1='5612.8' x2='3625.8' y2='5615.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3625.8' y1='5615.7' x2='3632.8' y2='5644.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3632.8' y1='5644.8' x2='3633.5' y2='5647.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3610.4" y="5654.2" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(76.5,3610.4,5654.2)" sift="0.29" class="mut" polyphen2="0.32" dbsource="dbSNP" id="R108Q_rsID_rs747115001_1_44" ipvMAF="NA">p.R108Q</text>
<line x1='1588.3' y1='714.3' x2='1586.7' y2='711.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1586.7' y1='711.8' x2='1570.9' y2='686.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1570.9' y1='686.3' x2='1569.4' y2='683.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1548.5" y="695.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(58.3,1548.5,695.5)" ipvMAF="NA" id="R214Q_rsID_rs770509340_1_74" dbsource="dbSNP" class="mut" polyphen2="0" sift="0.29">p.R214Q</text>
<line x1='817.0' y1='4119.8' x2='814.3' y2='4121.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='814.3' y1='4121.2' x2='787.6' y2='4134.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='787.6' y1='4134.9' x2='784.9' y2='4136.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="795.1" y="4158.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-27.2,795.1,4158.0)" ipvMAF="NA" id="R158H_rsID_rs369510319_1_19" dbsource="dbSNP" class="mut" polyphen2="0.98" sift="0.03">p.R158H</text>
<line x1='1145.2' y1='4606.1' x2='1143.0' y2='4608.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1143.0' y1='4608.1' x2='1120.3' y2='4627.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1120.3' y1='4627.7' x2='1118.0' y2='4629.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1133.1" y="4648.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-40.9,1133.1,4648.4)" dbsource="dbSNP" class="mut" polyphen2="0.092" sift="0.35" ipvMAF="NA" id="H149R_rsID_rs753130938_1_45">p.H149R</text>
<line x1='3634.3' y1='5370.1' x2='3635.0' y2='5373.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3635.0' y1='5373.0' x2='3642.8' y2='5402.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3642.8' y1='5402.0' x2='3643.6' y2='5404.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3620.6" y="5411.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(75.0,3620.6,5411.9)" id="R107H_rsID_rs758704433_1_104" ipvMAF="NA" sift="0.14" class="mut" polyphen2="0.021" dbsource="dbSNP">p.R107H</text>
<line x1='2156.2' y1='5303.8' x2='2155.2' y2='5306.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2155.2' y1='5306.7' x2='2144.9' y2='5334.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2144.9' y1='5334.8' x2='2143.8' y2='5337.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2166.1" y="5346.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-69.9,2166.1,5346.7)" sift="NA" dbsource="dbSNP" polyphen2="NA" class="mut" id="G130G_rsID_rs150508976_1_10" ipvMAF="NA">p.G130G</text>
<line x1='760.4' y1='4002.0' x2='757.7' y2='4003.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='757.7' y1='4003.2' x2='730.3' y2='4015.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='730.3' y1='4015.5' x2='727.6' y2='4016.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="736.6" y="4039.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-24.1,736.6,4039.0)" sift="0.11" dbsource="dbSNP" polyphen2="0.352" class="mut" id="A160T_rsID_rs570927821_1_39" ipvMAF="0">p.A160T</text>
<line x1='963.2' y1='1632.2' x2='960.7' y2='1630.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='960.7' y1='1630.5' x2='935.8' y2='1613.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='935.8' y1='1613.8' x2='933.3' y2='1612.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="919.2" y="1631.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(33.9,919.2,1631.5)" id="G198G_rsID_rs751765776_1_43" ipvMAF="NA" sift="NA" polyphen2="NA" class="mut" dbsource="dbSNP">p.G198G</text>
<line x1='1496.1' y1='1061.5' x2='1494.2' y2='1059.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1494.2' y1='1059.1' x2='1475.8' y2='1035.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1475.8' y1='1035.4' x2='1474.0' y2='1033.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1454.5" y="1047.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(52.2,1454.5,1047.1)" dbsource="dbSNP" polyphen2="NA" class="mut" sift="NA" ipvMAF="NA" id="A210A_rsID_rs748145803_1_47">p.A210A</text>
<line x1='1000.3' y1='1578.4' x2='997.9' y2='1576.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='997.9' y1='1576.7' x2='973.4' y2='1559.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='973.4' y1='1559.3' x2='971.0' y2='1557.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="956.3" y="1576.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(35.4,956.3,1576.6)" dbsource="dbSNP" polyphen2="NA" class="mut" sift="NA" ipvMAF="NA" id="V199V_rsID_rs757435299_1_52">p.V199V</text>
<line x1='687.6' y1='3820.1' x2='684.8' y2='3821.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='684.8' y1='3821.1' x2='656.5' y2='3831.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='656.5' y1='3831.1' x2='653.7' y2='3832.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="660.9" y="3855.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-19.5,660.9,3855.0)" id="Y163Y_rsID_rs747910356_1_59" ipvMAF="NA" sift="NA" polyphen2="NA" class="mut" dbsource="dbSNP">p.Y163Y</text>
<line x1='654.9' y1='2278.7' x2='652.1' y2='2277.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='652.1' y1='2277.8' x2='623.4' y2='2269.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='623.4' y1='2269.0' x2='620.5' y2='2268.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="612.6" y="2290.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(17.1,612.6,2290.8)" sift="0.37" class="mut" polyphen2="0.001" dbsource="dbSNP" id="A187T_rsID_rs760036765_1_62" ipvMAF="NA">p.A187T</text>
<line x1='744.9' y1='2033.4' x2='742.2' y2='2032.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='742.2' y1='2032.2' x2='714.6' y2='2020.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='714.6' y1='2020.4' x2='711.8' y2='2019.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="701.6" y="2041.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(23.2,701.6,2041.0)" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP" id="Y191X_rsID_rs765691650_1_69" ipvMAF="NA">p.Y191X</text>
<line x1='2385.1' y1='416.7' x2='2384.4' y2='413.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2384.4' y1='413.8' x2='2377.4' y2='384.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2377.4' y1='384.6' x2='2376.7' y2='381.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2353.2" y="386.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(76.6,2353.2,386.3)" id="V226V_rsID_rs767604552_1_75" ipvMAF="NA" sift="NA" dbsource="dbSNP" polyphen2="NA" class="mut">p.V226V</text>
<line x1='3507.2' y1='5400.5' x2='3507.8' y2='5403.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3507.8' y1='5403.4' x2='3514.0' y2='5432.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3514.0' y1='5432.8' x2='3514.6' y2='5435.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3491.3" y="5441.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(78.1,3491.3,5441.6)" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA" ipvMAF="NA" id="A109A_rsID_rs771174703_1_76">p.A109A</text>
<line x1='647.2' y1='3695.8' x2='644.4' y2='3696.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='644.4' y1='3696.6' x2='615.6' y2='3705.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='615.6' y1='3705.2' x2='612.7' y2='3706.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="618.7" y="3729.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-16.5,618.7,3729.3)" dbsource="dbSNP" polyphen2="NA" class="mut" sift="NA" ipvMAF="NA" id="T165T_rsID_rs771906789_1_79">p.T165T</text>
<line x1='2987.0' y1='5684.5' x2='2987.0' y2='5687.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2987.0' y1='5687.5' x2='2986.8' y2='5717.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2986.8' y1='5717.5' x2='2986.8' y2='5720.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3010.8" y="5721.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-89.7,3010.8,5721.5)" sift="0.04" polyphen2="0.042" class="mut" dbsource="dbSNP" id="V117A_rsID_rs774032100_1_83" ipvMAF="NA">p.V117A</text>
<line x1='2120.0' y1='709.8' x2='2118.9' y2='707.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2118.9' y1='707.0' x2='2108.1' y2='679.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2108.1' y1='679.0' x2='2107.1' y2='676.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2084.3" y="683.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(69.0,2084.3,683.9)" id="A221A_rsID_rs774879769_1_84" ipvMAF="NA" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP">p.A221A</text>
<line x1='2773.9' y1='5661.9' x2='2773.6' y2='5664.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2773.6' y1='5664.9' x2='2771.1' y2='5694.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2771.1' y1='5694.8' x2='2770.8' y2='5697.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2794.7" y="5700.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-85.1,2794.7,5700.7)" dbsource="dbSNP" polyphen2="0" class="mut" sift="0.93" ipvMAF="NA" id="R120K_rsID_rs778657377_1_92">p.R120K</text>
<line x1='1360.6' y1='886.9' x2='1358.7' y2='884.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1358.7' y1='884.5' x2='1340.4' y2='860.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1340.4' y1='860.8' x2='1338.5' y2='858.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1319.0" y="872.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(52.2,1319.0,872.4)" id="A210T_rsID_rs778803751_1_93" ipvMAF="NA" sift="0.47" polyphen2="0.023" class="mut" dbsource="dbSNP">p.A210T</text>
<line x1='348.6' y1='4102.5' x2='345.8' y2='4103.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='345.8' y1='4103.7' x2='318.1' y2='4115.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='318.1' y1='4115.2' x2='315.4' y2='4116.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="323.7" y="4138.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-22.6,323.7,4138.8)" ipvMAF="NA" id="V161G_rsID_rs778731236_1_94" class="mut" polyphen2="0.063" dbsource="dbSNP" sift="0.33">p.V161G</text>
<line x1='555.4' y1='2790.9' x2='552.4' y2='2790.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='552.4' y1='2790.6' x2='522.5' y2='2788.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='522.5' y1='2788.1' x2='519.6' y2='2787.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="516.6" y="2811.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(4.9,516.6,2811.7)" polyphen2="0.011" class="mut" dbsource="dbSNP" sift="0.5" ipvMAF="NA" id="R179G_rsID_rs746735395_1_40">p.R179G</text>
<line x1='2792.3' y1='5444.7' x2='2792.1' y2='5447.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2792.1' y1='5447.7' x2='2789.5' y2='5477.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2789.5' y1='5477.6' x2='2789.3' y2='5480.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2813.1" y="5483.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-85.1,2813.1,5483.5)" sift="NA" dbsource="dbSNP" class="mut" polyphen2="NA" id="R120R_rsID_rs569852154_1_37" ipvMAF="0.000199681">p.R120R</text>
<line x1='1548.2' y1='1022.1' x2='1546.4' y2='1019.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1546.4' y1='1019.7' x2='1528.7' y2='995.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1528.7' y1='995.5' x2='1526.9' y2='993.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1507.0" y="1006.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(53.7,1507.0,1006.6)" class="mut" polyphen2="0.243" dbsource="dbSNP" sift="0.28" ipvMAF="NA" id="E211K_rsID_rs758189183_1_55">p.E211K</text>
<line x1='549.3' y1='3117.3' x2='546.3' y2='3117.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='546.3' y1='3117.5' x2='516.3' y2='3118.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='516.3' y1='3118.9' x2='513.3' y2='3119.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="513.6" y="3143.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-2.7,513.6,3143.1)" sift="0" dbsource="dbSNP" polyphen2="0.997" class="mut" id="K174E_rsID_rs772842161_1_80" ipvMAF="NA">p.K174E</text>
<line x1='2342.8' y1='5363.8' x2='2342.0' y2='5366.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2342.0' y1='5366.7' x2='2333.9' y2='5395.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2333.9' y1='5395.6' x2='2333.1' y2='5398.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2356.0" y="5405.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-74.5,2356.0,5405.8)" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP" id="P127P_rsID_rs751421650_1_48" ipvMAF="NA">p.P127P</text>
<line x1='608.6' y1='1820.5' x2='605.9' y2='1819.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='605.9' y1='1819.2' x2='579.0' y2='1805.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='579.0' y1='1805.9' x2='576.3' y2='1804.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="564.8" y="1825.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(26.3,564.8,1825.7)" ipvMAF="NA" id="P193P_rsID_rs763385232_1_66" polyphen2="NA" class="mut" dbsource="dbSNP" sift="NA">p.P193P</text>
<line x1='579.9' y1='2596.4' x2='577.0' y2='2596.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='577.0' y1='2596.0' x2='547.4' y2='2591.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='547.4' y1='2591.0' x2='544.4' y2='2590.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="539.6" y="2614.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(9.5,539.6,2614.1)" id="P182P_rsID_rs770403685_1_73" ipvMAF="NA" sift="NA" polyphen2="NA" class="mut" dbsource="dbSNP">p.P182P</text>
<line x1='365.9' y1='2560.8' x2='362.9' y2='2560.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='362.9' y1='2560.3' x2='333.3' y2='2555.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='333.3' y1='2555.3' x2='330.4' y2='2554.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="325.5" y="2578.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(9.5,325.5,2578.4)" class="mut" polyphen2="NA" dbsource="dbSNP" sift="NA" ipvMAF="NA" id="P182P_rsID_rs770403685_2_73">p.P182P</text>
<line x1='2150.0' y1='5527.4' x2='2149.0' y2='5530.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2149.0' y1='5530.2' x2='2139.4' y2='5558.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2139.4' y1='5558.7' x2='2138.5' y2='5561.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2160.9" y="5570.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-71.4,2160.9,5570.0)" sift="0.07" dbsource="dbSNP" class="mut" polyphen2="0" id="E129G_rsID_rs772893367_1_81" ipvMAF="NA">p.E129G</text>
<line x1='1419.2' y1='846.4' x2='1417.4' y2='844.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1417.4' y1='844.0' x2='1399.7' y2='819.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1399.7' y1='819.8' x2='1397.9' y2='817.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1378.0" y="830.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(53.7,1378.0,830.8)" ipvMAF="NA" id="E211G_rsID_rs777545571_1_90" dbsource="dbSNP" polyphen2="0.732" class="mut" sift="0.01">p.E211G</text>
<line x1='1766.8' y1='879.0' x2='1765.2' y2='876.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1765.2' y1='876.4' x2='1750.2' y2='850.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1750.2' y1='850.4' x2='1748.7' y2='847.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1727.5" y="859.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(59.8,1727.5,859.1)" ipvMAF="NA" id="P215P_rsID_rs780711335_1_97" polyphen2="NA" class="mut" dbsource="dbSNP" sift="NA">p.P215P</text>
<line x1='1657.7' y1='691.4' x2='1656.2' y2='688.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1656.2' y1='688.8' x2='1641.1' y2='662.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1641.1' y1='662.8' x2='1639.6' y2='660.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1618.4" y="671.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(59.8,1618.4,671.5)" sift="NA" polyphen2="NA" class="mut" dbsource="dbSNP" id="P215P_rsID_rs780711335_2_97" ipvMAF="NA">p.P215P</text>
<line x1='548.0' y1='4019.6' x2='545.3' y2='4020.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='545.3' y1='4020.7' x2='517.6' y2='4032.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='517.6' y1='4032.3' x2='514.8' y2='4033.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="523.2" y="4055.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-22.6,523.2,4055.9)" id="V161F_rsID_rs373646181_2_24" ipvMAF="0.000998403" sift="0.2" class="mut" polyphen2="0" dbsource="dbSNP">p.V161F</text>
<line x1='1881.4' y1='816.3' x2='1880.1' y2='813.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1880.1' y1='813.6' x2='1866.4' y2='786.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1866.4' y1='786.9' x2='1865.0' y2='784.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1843.3" y="794.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(62.9,1843.3,794.4)" dbsource="dbSNP" polyphen2="0.212" class="mut" sift="0.01" ipvMAF="NA" id="Y217S_rsID_rs763621932_1_67">p.Y217S</text>
<line x1='1688.1' y1='5073.3' x2='1686.5' y2='5075.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1686.5' y1='5075.8' x2='1670.5' y2='5101.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1670.5' y1='5101.2' x2='1668.9' y2='5103.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1688.7" y="5117.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-57.7,1688.7,5117.3)" dbsource="dbSNP" polyphen2="0.035" class="mut" sift="0.35" ipvMAF="NA" id="V138L_rsID_rs759960481_1_58">p.V138L</text>
<line x1='799.6' y1='1914.7' x2='796.9' y2='1913.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='796.9' y1='1913.4' x2='770.0' y2='1900.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='770.0' y1='1900.1' x2='767.3' y2='1898.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="755.9" y="1919.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(26.3,755.9,1919.9)" id="P193S_rsID_rs180710258_1_11" ipvMAF="0.000199681" sift="0.62" polyphen2="0.9" class="mut" dbsource="dbSNP">p.P193S</text>
<line x1='2217.9' y1='5325.5' x2='2216.9' y2='5328.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2216.9' y1='5328.3' x2='2207.3' y2='5356.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2207.3' y1='5356.8' x2='2206.4' y2='5359.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2228.8" y="5368.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-71.4,2228.8,5368.1)" sift="NA" polyphen2="NA" class="mut" dbsource="dbSNP" id="E129E_rsID_rs537268309_1_29" ipvMAF="0.000399361">p.E129E</text>
<line x1='2922.8' y1='5452.3' x2='2922.7' y2='5455.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2922.7' y1='5455.3' x2='2921.7' y2='5485.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2921.7' y1='5485.3' x2='2921.6' y2='5488.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2945.6" y="5489.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-88.2,2945.6,5489.9)" ipvMAF="NA" id="E118E_rsID_rs747751043_1_101" class="mut" polyphen2="NA" dbsource="dbSNP" sift="NA">p.E118E</text>
<line x1='1445.0' y1='1102.2' x2='1443.1' y2='1099.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1443.1' y1='1099.9' x2='1424.1' y2='1076.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1424.1' y1='1076.7' x2='1422.1' y2='1074.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1403.0" y="1088.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(50.7,1403.0,1088.9)" sift="NA" dbsource="dbSNP" polyphen2="NA" class="mut" id="S209S_rsID_rs756260984_1_50" ipvMAF="NA">p.S209S</text>
<line x1='2243.2' y1='666.2' x2='2242.2' y2='663.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2242.2' y1='663.3' x2='2233.0' y2='634.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2233.0' y1='634.8' x2='2232.1' y2='631.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2209.0" y="638.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(72.0,2209.0,638.5)" ipvMAF="NA" id="S223S_rsID_rs762056461_1_77" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA">p.S223S</text>
<line x1='3943.3' y1='5264.9' x2='3944.5' y2='5267.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3944.5' y1='5267.7' x2='3956.0' y2='5295.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3956.0' y1='5295.4' x2='3957.2' y2='5298.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3935.4" y="5308.2" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(67.4,3935.4,5308.2)" id="L102L_rsID_rs1800618_1_0" ipvMAF="NA" sift="NA" dbsource="dbSNP" class="mut" polyphen2="NA">p.L102L</text>
<line x1='1395.0' y1='1144.3' x2='1393.0' y2='1142.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1393.0' y1='1142.0' x2='1373.4' y2='1119.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1373.4' y1='1119.4' x2='1371.4' y2='1117.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1352.7" y="1132.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(49.1,1352.7,1132.1)" id="L208L_rsID_rs750502134_1_42" ipvMAF="NA" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP">p.L208L</text>
<line x1='1940.0' y1='787.3' x2='1938.7' y2='784.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1938.7' y1='784.6' x2='1925.7' y2='757.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1925.7' y1='757.5' x2='1924.4' y2='754.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1902.4" y="764.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(64.4,1902.4,764.4)" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP" id="L218L_rsID_rs769084971_1_70" ipvMAF="NA">p.L218L</text>
<line x1='1975.0' y1='5229.1' x2='1973.8' y2='5231.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1973.8' y1='5231.9' x2='1961.2' y2='5259.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='1961.2' y1='5259.1' x2='1960.0' y2='5261.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="1981.4" y="5272.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-65.3,1981.4,5272.7)" polyphen2="NA" class="mut" dbsource="dbSNP" sift="NA" ipvMAF="NA" id="L133L_rsID_rs777187968_1_89">p.L133L</text>
<line x1='5518.9' y1='2178.3' x2='5521.7' y2='2177.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5521.7' y1='2177.4' x2='5550.2' y2='2168.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5550.2' y1='2168.1' x2='5553.1' y2='2167.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5561.4" y="2189.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(341.9,5561.4,2189.7)" polyphen2="0.042" class="mut" dbsource="dbSNP" sift="0.1" ipvMAF="0.000199681" id="T46M_rsID_rs200241887_1_15">p.T46M</text>
<line x1='5210.8' y1='1936.1' x2='5213.5' y2='1934.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5213.5' y1='1934.8' x2='5240.6' y2='1921.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5240.6' y1='1921.8' x2='5243.3' y2='1920.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5254.5" y="1941.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(334.3,5254.5,1941.7)" ipvMAF="0.000199681" id="V41M_rsID_rs558678940_1_35" dbsource="dbSNP" class="mut" polyphen2="0.782" sift="0.02">p.V41M</text>
<line x1='3717.2' y1='653.7' x2='3718.1' y2='650.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3718.1' y1='650.8' x2='3726.9' y2='622.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3726.9' y1='622.1' x2='3727.7' y2='619.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3750.9" y="625.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(287.0,3750.9,625.4)" ipvMAF="NA" id="V10M_rsID_rs759696973_1_61" polyphen2="0.87" class="mut" dbsource="dbSNP" sift="0.01">p.V10M</text>
<line x1='829.3' y1='1856.5' x2='826.6' y2='1855.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='826.6' y1='1855.1' x2='800.1' y2='1841.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='800.1' y1='1841.1' x2='797.4' y2='1839.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="785.4" y="1860.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(27.8,785.4,1860.6)" sift="0" dbsource="dbSNP" polyphen2="0.997" class="mut" id="I194N_rsID_rs11574936_1_4" ipvMAF="NA">p.I194N</text>
<line x1='2431.8' y1='613.2' x2='2431.2' y2='610.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2431.2' y1='610.3' x2='2424.2' y2='581.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='2424.2' y1='581.1' x2='2423.5' y2='578.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="2400.0" y="582.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(76.6,2400.0,582.9)" dbsource="dbSNP" class="mut" polyphen2="0.009" sift="0.52" ipvMAF="NA" id="V226I_rsID_rs186486397_1_13">p.V226I</text>
<line x1='734.6' y1='3942.0' x2='731.8' y2='3943.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='731.8' y1='3943.2' x2='704.1' y2='3954.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='704.1' y1='3954.7' x2='701.3' y2='3955.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="709.7" y="3978.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(203,24,29);" transform="rotate(-22.6,709.7,3978.3)" sift="0.2" class="mut" polyphen2="0" dbsource="dbSNP" id="V161I_rsID_rs373646181_1_24" ipvMAF="0.000998403">p.V161I</text>
<line x1='5201.7' y1='4082.7' x2='5204.4' y2='4084.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5204.4' y1='4084.0' x2='5231.3' y2='4097.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5231.3' y1='4097.3' x2='5234.0' y2='4098.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5224.2" y="4120.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(26.2,5224.2,4120.5)" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP" id="Q75Q_rsID_rs769643681_1_72" ipvMAF="NA">p.Q75Q</text>
<line x1='5395.8' y1='3529.0' x2='5398.7' y2='3529.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5398.7' y1='3529.7' x2='5428.0' y2='3536.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5428.0' y1='3536.2' x2='5430.9' y2='3536.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5426.6" y="3560.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(12.5,5426.6,3560.4)" id="D66N_rsID_rs776692566_1_87" ipvMAF="NA" sift="0.56" dbsource="dbSNP" class="mut" polyphen2="0">p.D66N</text>
<line x1='5423.9' y1='2619.9' x2='5426.8' y2='2619.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5426.8' y1='2619.5' x2='5456.5' y2='2614.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5456.5' y1='2614.8' x2='5459.4' y2='2614.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5464.0" y="2637.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(351.1,5464.0,2637.9)" ipvMAF="NA" id="H52N_rsID_rs3179060_1_6" dbsource="dbSNP" polyphen2="0.013" class="mut" sift="0.05">p.H52N</text>
<line x1='4750.0' y1='4719.6' x2='4752.2' y2='4721.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4752.2' y1='4721.7' x2='4773.6' y2='4742.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4773.6' y1='4742.8' x2='4775.7' y2='4744.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4759.5" y="4762.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(44.5,4759.5,4762.6)" id="K87T_rsID_rs190788828_1_22" ipvMAF="0.000399361" sift="0" class="mut" polyphen2="0.997" dbsource="dbSNP">p.K87T</text>
<line x1='4903.4' y1='1161.3' x2='4905.6' y2='1159.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4905.6' y1='1159.2' x2='4927.2' y2='1138.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4927.2' y1='1138.4' x2='4929.3' y2='1136.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4946.6" y="1152.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(316.0,4946.6,1152.9)" sift="0.02" dbsource="dbSNP" class="mut" polyphen2="0.626" id="R29Q_rsID_rs576621666_1_38" ipvMAF="0.000199681">p.R29Q</text>
<line x1='4962.8' y1='4472.0' x2='4965.2' y2='4473.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4965.2' y1='4473.8' x2='4989.2' y2='4491.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4989.2' y1='4491.8' x2='4991.6' y2='4493.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4978.0" y="4513.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(36.9,4978.0,4513.4)" ipvMAF="NA" id="R82Q_rsID_rs772270241_1_82" class="mut" polyphen2="0.003" dbsource="dbSNP" sift="0.68">p.R82Q</text>
<line x1='4400.9' y1='5014.2' x2='4402.7' y2='5016.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4402.7' y1='5016.7' x2='4419.8' y2='5041.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4419.8' y1='5041.3' x2='4421.5' y2='5043.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4402.3" y="5058.2" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(55.2,4402.3,5058.2)" sift="0" dbsource="dbSNP" polyphen2="0.095" class="mut" id="A94T_rsID_rs1800620_1_1" ipvMAF="NA">p.A94T</text>
<line x1='5332.5' y1='2239.1' x2='5335.4' y2='2238.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5335.4' y1='2238.1' x2='5363.9' y2='2228.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5363.9' y1='2228.8' x2='5366.7' y2='2227.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5375.0" y="2250.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(341.9,5375.0,2250.5)" ipvMAF="NA" id="T46T_rsID_rs144480538_1_12" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA">p.T46T</text>
<line x1='4178.8' y1='5151.7' x2='4180.3' y2='5154.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4180.3' y1='5154.4' x2='4194.7' y2='5180.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4194.7' y1='5180.7' x2='4196.1' y2='5183.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4175.5" y="5195.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(61.3,4175.5,5195.6)" dbsource="dbSNP" polyphen2="0" class="mut" sift="0.49" ipvMAF="NA" id="A98T_rsID_rs375472217_1_28">p.A98T</text>
<line x1='4364.3' y1='960.8' x2='4365.9' y2='958.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4365.9' y1='958.3' x2='4382.6' y2='933.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4382.6' y1='933.3' x2='4384.3' y2='930.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4404.7" y="943.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(303.8,4404.7,943.5)" id="T21T_rsID_rs766034823_1_68" ipvMAF="NA" sift="NA" dbsource="dbSNP" class="mut" polyphen2="NA">p.T21T</text>
<line x1='5288.7' y1='2116.0' x2='5291.5' y2='2114.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5291.5' y1='2114.9' x2='5319.5' y2='2104.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5319.5' y1='2104.1' x2='5322.3' y2='2103.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5331.6" y="2124.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(338.9,5331.6,2124.6)" id="A44T_rsID_rs867435711_1_102" ipvMAF="NA" sift="0" class="mut" polyphen2="0.879" dbsource="dbSNP">p.A44T</text>
<line x1='4081.4' y1='797.7' x2='4082.7' y2='795.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4082.7' y1='795.0' x2='4096.0' y2='768.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4096.0' y1='768.1' x2='4097.3' y2='765.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4119.2" y="775.2" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(296.2,4119.2,775.2)" id="A16A_rsID_rs146375573_1_9" ipvMAF="NA" sift="NA" polyphen2="NA" class="mut" dbsource="dbSNP">p.A16A</text>
<line x1='5264.3' y1='2055.3' x2='5267.1' y2='2054.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5267.1' y1='2054.2' x2='5294.8' y2='2042.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5294.8' y1='2042.6' x2='5297.6' y2='2041.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5307.6" y="2063.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(337.4,5307.6,2063.3)" id="G43G_rsID_rs369163834_1_18" ipvMAF="NA" sift="NA" dbsource="dbSNP" polyphen2="NA" class="mut">p.G43G</text>
<line x1='4253.8' y1='891.0' x2='4255.3' y2='888.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4255.3' y1='888.4' x2='4270.6' y2='862.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4270.6' y1='862.7' x2='4272.1' y2='860.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4293.2" y="871.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(300.7,4293.2,871.6)" id="K19R_rsID_rs377338702_1_30" ipvMAF="0.000199681" sift="0.73" polyphen2="0.003" class="mut" dbsource="dbSNP">p.K19R</text>
<line x1='4167.4' y1='622.6' x2='4168.7' y2='620.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4168.7' y1='620.0' x2='4181.9' y2='593.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4181.9' y1='593.0' x2='4183.2' y2='590.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4205.2" y="600.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(296.2,4205.2,600.1)" sift="0.05" class="mut" polyphen2="0.296" dbsource="dbSNP" id="A16G_rsID_rs763000109_1_63" ipvMAF="NA">p.A16G</text>
<line x1='4253.3' y1='447.6' x2='4254.6' y2='444.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4254.6' y1='444.9' x2='4267.9' y2='418.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4267.9' y1='418.0' x2='4269.2' y2='415.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4291.1" y="425.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(296.2,4291.1,425.1)" ipvMAF="NA" id="A16V_rsID_rs763000109_2_63" class="mut" polyphen2="0.296" dbsource="dbSNP" sift="0.05">p.A16V</text>
<line x1='4573.4' y1='1117.4' x2='4575.3' y2='1115.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4575.3' y1='1115.1' x2='4594.5' y2='1092.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4594.5' y1='1092.1' x2='4596.4' y2='1089.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4615.4" y="1104.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(309.9,4615.4,1104.5)" id="Q25E_rsID_rs764955335_1_64" ipvMAF="NA" sift="0.22" dbsource="dbSNP" class="mut" polyphen2="0.14">p.Q25E</text>
<line x1='3777.4' y1='456.7' x2='3778.3' y2='453.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3778.3' y1='453.8' x2='3787.1' y2='425.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3787.1' y1='425.1' x2='3787.9' y2='422.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3811.2" y="428.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(287.0,3811.2,428.4)" id="V10V_rsID_rs770023902_1_71" ipvMAF="NA" sift="NA" polyphen2="NA" class="mut" dbsource="dbSNP">p.V10V</text>
<line x1='5452.9' y1='2945.1' x2='5455.9' y2='2945.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5455.9' y1='2945.1' x2='5485.9' y2='2944.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5485.9' y1='2944.4' x2='5488.9' y2='2944.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5490.3" y="2968.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(358.7,5490.3,2968.3)" sift="NA" dbsource="dbSNP" class="mut" polyphen2="NA" id="G57G_rsID_rs776753689_1_86" ipvMAF="NA">p.G57G</text>
<line x1='4418.1' y1='997.8' x2='4419.8' y2='995.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4419.8' y1='995.4' x2='4437.2' y2='970.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4437.2' y1='970.9' x2='4438.9' y2='968.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4459.0" y="981.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(305.3,4459.0,981.6)" class="mut" polyphen2="0.005" dbsource="dbSNP" sift="0.87" ipvMAF="NA" id="G22R_rsID_rs753713562_1_46">p.G22R</text>
<line x1='4522.7' y1='1076.2' x2='4524.5' y2='1073.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4524.5' y1='1073.8' x2='4543.1' y2='1050.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4543.1' y1='1050.3' x2='4545.0' y2='1047.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4564.4" y="1062.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(308.4,4564.4,1062.1)" sift="0.29" class="mut" polyphen2="0.011" dbsource="dbSNP" id="P24A_rsID_rs754639425_1_54" ipvMAF="NA">p.P24A</text>
<line x1='5108.2' y1='4255.0' x2='5110.8' y2='4256.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5110.8' y1='4256.5' x2='5136.6' y2='4271.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5136.6' y1='4271.9' x2='5139.2' y2='4273.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5127.7" y="4294.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(30.8,5127.7,4294.5)" sift="0.08" polyphen2="0.005" class="mut" dbsource="dbSNP" id="R78G_rsID_rs775365890_1_85" ipvMAF="NA">p.R78G</text>
<line x1='4764.6' y1='1295.4' x2='4766.8' y2='1293.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4766.8' y1='1293.3' x2='4788.4' y2='1272.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4788.4' y1='1272.4' x2='4790.5' y2='1270.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4807.8" y="1287.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(316.0,4807.8,1287.0)" sift="NA" dbsource="dbSNP" class="mut" polyphen2="NA" id="R29R_rsID_rs2228088_1_3" ipvMAF="0.0175719">p.R29R</text>
<line x1='3962.6' y1='743.2' x2='3963.8' y2='740.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3963.8' y1='740.5' x2='3975.6' y2='712.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3975.6' y1='712.9' x2='3976.8' y2='710.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3999.2" y="718.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(293.1,3999.2,718.7)" dbsource="dbSNP" class="mut" polyphen2="0.295" sift="0.27" ipvMAF="NA" id="E14K_rsID_rs775506502_1_88">p.E14K</text>
<line x1='4718.6' y1='1249.0' x2='4720.7' y2='1246.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4720.7' y1='1246.8' x2='4741.7' y2='1225.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4741.7' y1='1225.4' x2='4743.8' y2='1223.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4761.6" y="1239.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(314.5,4761.6,1239.5)" ipvMAF="NA" id="R28R_rsID_rs779870893_1_100" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA">p.R28R</text>
<line x1='5440.7' y1='2749.5' x2='5443.7' y2='2749.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5443.7' y1='2749.2' x2='5473.5' y2='2746.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5473.5' y1='2746.2' x2='5476.5' y2='2745.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5479.8" y="2769.6" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(354.1,5479.8,2769.6)" polyphen2="0.102" class="mut" dbsource="dbSNP" sift="0.31" ipvMAF="NA" id="G54E_rsID_rs756182468_1_49">p.G54E</text>
<line x1='5025.1' y1='4694.5' x2='5027.4' y2='4696.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5027.4' y1='4696.4' x2='5050.4' y2='4715.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5050.4' y1='4715.6' x2='5052.7' y2='4717.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5038.0" y="4736.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(39.9,5038.0,4736.5)" ipvMAF="NA" id="P84P_rsID_rs745738344_1_60" class="mut" polyphen2="NA" dbsource="dbSNP" sift="NA">p.P84P</text>
<line x1='5438.5' y1='3271.3' x2='5441.4' y2='3271.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5441.4' y1='3271.6' x2='5471.3' y2='3274.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5471.3' y1='3274.9' x2='5474.2' y2='3275.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5472.5" y="3299.2" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(6.3,5472.5,3299.2)" ipvMAF="NA" id="E62G_rsID_rs765178016_1_65" class="mut" polyphen2="0.821" dbsource="dbSNP" sift="0.01">p.E62G</text>
<line x1='5605.0' y1='3431.3' x2='5608.0' y2='3431.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5608.0' y1='3431.8' x2='5637.6' y2='3436.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5637.6' y1='3436.7' x2='5640.6' y2='3437.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5637.5" y="3461.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(9.4,5637.5,3461.0)" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA" ipvMAF="NA" id="P64P_rsID_rs772331441_1_91">p.P64P</text>
<line x1='5647.8' y1='2940.8' x2='5650.8' y2='2940.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5650.8' y1='2940.7' x2='5680.8' y2='2940.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5680.8' y1='2940.0' x2='5683.8' y2='2940.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5685.3" y="2963.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(358.7,5685.3,2963.9)" id="G57S_rsID_rs777874746_1_98" ipvMAF="NA" sift="0.03" polyphen2="0.995" class="mut" dbsource="dbSNP">p.G57S</text>
<line x1='5396.5' y1='1846.8' x2='5399.2' y2='1845.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5399.2' y1='1845.5' x2='5426.2' y2='1832.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5426.2' y1='1832.5' x2='5428.9' y2='1831.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5440.1" y="1852.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(334.3,5440.1,1852.4)" id="V41L_rsID_rs558678940_2_35" ipvMAF="0.000199681" sift="0.02" dbsource="dbSNP" class="mut" polyphen2="0.782">p.V41L</text>
<line x1='5038.4' y1='4365.4' x2='5040.9' y2='4367.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5040.9' y1='4367.1' x2='5065.9' y2='4383.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5065.9' y1='4383.8' x2='5068.3' y2='4385.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5055.7" y="4405.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(33.8,5055.7,4405.9)" polyphen2="0.824" class="mut" dbsource="dbSNP" sift="0.21" ipvMAF="NA" id="S80P_rsID_rs369783162_1_21">p.S80P</text>
<line x1='5444.8' y1='3206.3' x2='5447.8' y2='3206.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5447.8' y1='3206.5' x2='5477.7' y2='3209.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5477.7' y1='3209.0' x2='5480.7' y2='3209.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5479.6" y="3233.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(4.8,5479.6,3233.3)" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA" ipvMAF="NA" id="E61E_rsID_rs759378982_1_56">p.E61E</text>
<line x1='4881.7' y1='4574.5' x2='4884.0' y2='4576.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4884.0' y1='4576.4' x2='4907.0' y2='4595.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4907.0' y1='4595.6' x2='4909.3' y2='4597.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4894.6" y="4616.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(39.9,4894.6,4616.5)" sift="0.27" dbsource="dbSNP" polyphen2="0.005" class="mut" id="P84L_rsID_rs4645843_1_2" ipvMAF="0.000599042">p.P84L</text>
<line x1='5420.6' y1='3400.7' x2='5423.5' y2='3401.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5423.5' y1='3401.2' x2='5453.1' y2='3406.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5453.1' y1='3406.1' x2='5456.1' y2='3406.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5453.0" y="3430.4" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(9.4,5453.0,3430.4)" class="mut" polyphen2="0.007" dbsource="dbSNP" sift="0.08" ipvMAF="NA" id="P64L_rsID_rs35131721_1_5">p.P64L</text>
<line x1='4895.0' y1='1441.7' x2='4897.4' y2='1439.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4897.4' y1='1439.7' x2='4920.5' y2='1420.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4920.5' y1='1420.7' x2='4922.9' y2='1418.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4938.8" y="1436.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(320.6,4938.8,1436.8)" ipvMAF="NA" id="F32S_rsID_rs777405140_1_95" polyphen2="0.017" class="mut" dbsource="dbSNP" sift="0.05">p.F32S</text>
<line x1='5118.9' y1='1763.1' x2='5121.5' y2='1761.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5121.5' y1='1761.5' x2='5147.4' y2='1746.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5147.4' y1='1746.4' x2='5150.0' y2='1744.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5162.8" y="1765.2" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(329.7,5162.8,1765.2)" ipvMAF="NA" id="F38L_rsID_rs757794184_1_53" polyphen2="0.915" class="mut" dbsource="dbSNP" sift="0.01">p.F38L</text>
<line x1='4935.9' y1='1492.7' x2='4938.2' y2='1490.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4938.2' y1='1490.8' x2='4961.9' y2='1472.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='4961.9' y1='1472.4' x2='4964.3' y2='1470.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="4979.7" y="1488.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(322.1,4979.7,1488.9)" id="L33F_rsID_rs747406665_1_99" ipvMAF="NA" sift="0.02" polyphen2="0.216" class="mut" dbsource="dbSNP">p.L33F</text>
<line x1='3632.7' y1='451.9' x2='3633.4' y2='449.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3633.4' y1='449.0' x2='3640.7' y2='419.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3640.7' y1='419.9' x2='3641.4' y2='416.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3664.9" y="421.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(283.9,3664.9,421.9)" id="R8W_rsID_rs374531985_1_25" ipvMAF="NA" sift="0.06" dbsource="dbSNP" polyphen2="0.77" class="mut">p.R8W</text>
<line x1='5352.0' y1='2301.5' x2='5354.8' y2='2300.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5354.8' y1='2300.6' x2='5383.6' y2='2292.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5383.6' y1='2292.1' x2='5386.5' y2='2291.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5394.0" y="2313.5" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(343.5,5394.0,2313.5)" class="mut" polyphen2="NA" dbsource="dbSNP" sift="NA" ipvMAF="0.000199681" id="L47L_rsID_rs541347219_1_31">p.L47L</text>
<line x1='787.9' y1='4061.3' x2='785.2' y2='4062.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='785.2' y1='4062.6' x2='758.2' y2='4075.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='758.2' y1='4075.6' x2='755.5' y2='4076.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="765.0" y="4098.9" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:end;fill:rgb(35,139,69);" transform="rotate(-25.6,765.0,4098.9)" ipvMAF="NA" id="I159I_rsID_rs757398208_1_51" class="mut" polyphen2="NA" dbsource="dbSNP" sift="NA">p.I159I</text>
<line x1='5345.9' y1='3718.6' x2='5348.8' y2='3719.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5348.8' y1='3719.5' x2='5377.5' y2='3728.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5377.5' y1='3728.2' x2='5380.3' y2='3729.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5374.2" y="3752.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(17.0,5374.2,3752.3)" ipvMAF="NA" id="L69L_rsID_rs759609722_1_57" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA">p.L69L</text>
<line x1='3139.7' y1='550.5' x2='3139.8' y2='547.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3139.8' y1='547.5' x2='3141.5' y2='517.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3141.5' y1='517.5' x2='3141.7' y2='514.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3165.7" y="515.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(273.3,3165.7,515.0)" sift="0" dbsource="dbSNP" class="mut" polyphen2="0.987" id="M1T_rsID_rs369780852_1_20" ipvMAF="NA">p.M1T</text>
<line x1='3150.0' y1='369.8' x2='3150.1' y2='366.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3150.1' y1='366.8' x2='3151.8' y2='336.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3151.8' y1='336.8' x2='3152.0' y2='333.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3176.0" y="334.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(273.3,3176.0,334.3)" ipvMAF="NA" id="M1R_rsID_rs369780852_2_20" polyphen2="0.987" class="mut" dbsource="dbSNP" sift="0">p.M1R</text>
<line x1='3654.5' y1='635.4' x2='3655.3' y2='632.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3655.3' y1='632.5' x2='3663.3' y2='603.6' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3663.3' y1='603.6' x2='3664.1' y2='600.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3687.4" y="606.3" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(285.5,3687.4,606.3)" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA" ipvMAF="NA" id="D9D_rsID_rs377627218_1_27">p.D9D</text>
<line x1='3591.3' y1='618.8' x2='3592.0' y2='615.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3592.0' y1='615.9' x2='3599.2' y2='586.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3599.2' y1='586.8' x2='3599.9' y2='583.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3623.4" y="588.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(283.9,3623.4,588.8)" dbsource="dbSNP" class="mut" polyphen2="0.015" sift="0.27" ipvMAF="0.000399361" id="R8Q_rsID_rs201502336_1_16">p.R8Q</text>
<line x1='3451.7' y1='261.5' x2='3452.2' y2='258.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3452.2' y1='258.5' x2='3457.1' y2='228.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3457.1' y1='228.9' x2='3457.6' y2='226.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3481.4" y="229.0" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(279.4,3481.4,229.0)" polyphen2="0.015" class="mut" dbsource="dbSNP" sift="0.27" ipvMAF="NA" id="S5N_rsID_rs771650207_1_78">p.S5N</text>
<line x1='3425.2' y1='422.3' x2='3425.7' y2='419.4' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3425.7' y1='419.4' x2='3430.6' y2='389.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3430.6' y1='389.8' x2='3431.1' y2='386.8' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3454.9" y="389.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(203,24,29);" transform="rotate(279.4,3454.9,389.8)" dbsource="dbSNP" polyphen2="0.611" class="mut" sift="0.02" ipvMAF="NA" id="S5R_rsID_rs747694851_1_41">p.S5R</text>
<line x1='3399.3' y1='579.2' x2='3399.8' y2='576.3' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3399.8' y1='576.3' x2='3404.7' y2='546.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='3404.7' y1='546.7' x2='3405.2' y2='543.7' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="3429.0" y="546.7" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(279.4,3429.0,546.7)" sift="NA" dbsource="dbSNP" polyphen2="NA" class="mut" id="S5S_rsID_rs565862537_1_36" ipvMAF="0.000199681">p.S5S</text>
<line x1='5181.7' y1='1877.6' x2='5184.4' y2='1876.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5184.4' y1='1876.2' x2='5211.1' y2='1862.5' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5211.1' y1='1862.5' x2='5213.7' y2='1861.1' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5225.5" y="1882.1" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(332.8,5225.5,1882.1)" id="I40I_rsID_rs141667614_1_7" ipvMAF="NA" sift="NA" class="mut" polyphen2="NA" dbsource="dbSNP">p.I40I</text>
<line x1='5322.2' y1='1805.3' x2='5324.9' y2='1804.0' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5324.9' y1='1804.0' x2='5351.6' y2='1790.2' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<line x1='5351.6' y1='1790.2' x2='5354.2' y2='1788.9' style="stroke-width:6.0;stroke:rgb(203,24,29);stroke-linecap:round;fill:none;" />
<text x="5366.0" y="1809.8" font-size="52.0px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:start;fill:rgb(35,139,69);" transform="rotate(332.8,5366.0,1809.8)" ipvMAF="NA" id="I40I_rsID_rs141667614_2_7" dbsource="dbSNP" class="mut" polyphen2="NA" sift="NA">p.I40I</text>
</g>
<g id="plot4">
<g id="plot4-axis">
</g>
<line x1='4567.2' y1='2321.6' x2='4608.4' y2='2303.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4608.4' y1='2303.7' x2='4603.9' y2='2289.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4603.9' y1='2289.0' x2='4599.3' y2='2274.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4599.3' y1='2274.2' x2='4594.6' y2='2259.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4594.6' y1='2259.5' x2='4589.7' y2='2244.9' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4589.7' y1='2244.9' x2='4584.7' y2='2230.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4584.7' y1='2230.2' x2='4579.5' y2='2215.6' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4579.5' y1='2215.6' x2='4574.2' y2='2201.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4574.2' y1='2201.1' x2='4568.8' y2='2186.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4568.8' y1='2186.5' x2='4563.2' y2='2172.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4563.2' y1='2172.0' x2='4557.5' y2='2157.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4557.5' y1='2157.5' x2='4551.7' y2='2143.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4551.7' y1='2143.1' x2='4545.8' y2='2128.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4545.8' y1='2128.7' x2='4539.7' y2='2114.3' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4539.7' y1='2114.3' x2='4533.4' y2='2100.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4533.4' y1='2100.0' x2='4527.1' y2='2085.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4527.1' y1='2085.8' x2='4520.6' y2='2071.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4520.6' y1='2071.5' x2='4514.0' y2='2057.3' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4514.0' y1='2057.3' x2='4507.2' y2='2043.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4507.2' y1='2043.2' x2='4500.3' y2='2029.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4500.3' y1='2029.1' x2='4493.3' y2='2015.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4493.3' y1='2015.0' x2='4486.2' y2='2001.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4486.2' y1='2001.0' x2='4478.9' y2='1987.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4478.9' y1='1987.1' x2='4471.5' y2='1973.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4471.5' y1='1973.2' x2='4463.9' y2='1959.3' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4463.9' y1='1959.3' x2='4456.3' y2='1945.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4456.3' y1='1945.5' x2='4448.5' y2='1931.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4448.5' y1='1931.8' x2='4440.5' y2='1918.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4440.5' y1='1918.1' x2='4432.5' y2='1904.4' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4432.5' y1='1904.4' x2='4424.3' y2='1890.9' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4424.3' y1='1890.9' x2='4416.0' y2='1877.4' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4416.0' y1='1877.4' x2='4407.6' y2='1863.9' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4407.6' y1='1863.9' x2='4399.0' y2='1850.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4399.0' y1='1850.5' x2='4390.3' y2='1837.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4390.3' y1='1837.2' x2='4381.5' y2='1823.9' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4381.5' y1='1823.9' x2='4372.5' y2='1810.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4372.5' y1='1810.7' x2='4363.5' y2='1797.6' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4363.5' y1='1797.6' x2='4354.3' y2='1784.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4354.3' y1='1784.5' x2='4344.9' y2='1771.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4344.9' y1='1771.5' x2='4335.5' y2='1758.6' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4335.5' y1='1758.6' x2='4329.0' y2='1749.9' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4329.0' y1='1749.9' x2='4348.7' y2='1731.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4567.2' y1='2321.6' x2='4608.4' y2='2303.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4608.4' y1='2303.7' x2='4616.1' y2='2317.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4616.1' y1='2317.1' x2='4623.7' y2='2330.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4623.7' y1='2330.5' x2='4631.1' y2='2344.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4631.1' y1='2344.0' x2='4638.5' y2='2357.6' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4638.5' y1='2357.6' x2='4645.7' y2='2371.3' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4645.7' y1='2371.3' x2='4652.8' y2='2385.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4652.8' y1='2385.0' x2='4659.8' y2='2398.9' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4659.8' y1='2398.9' x2='4666.7' y2='2412.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4666.7' y1='2412.8' x2='4673.5' y2='2426.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4673.5' y1='2426.8' x2='4680.2' y2='2440.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4680.2' y1='2440.8' x2='4686.7' y2='2454.9' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4686.7' y1='2454.9' x2='4693.1' y2='2469.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4693.1' y1='2469.1' x2='4699.4' y2='2483.4' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4699.4' y1='2483.4' x2='4705.6' y2='2497.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4705.6' y1='2497.7' x2='4711.7' y2='2512.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4711.7' y1='2512.1' x2='4717.6' y2='2526.6' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4717.6' y1='2526.6' x2='4723.4' y2='2541.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4723.4' y1='2541.2' x2='4729.1' y2='2555.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4729.1' y1='2555.8' x2='4734.7' y2='2570.4' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4734.7' y1='2570.4' x2='4740.1' y2='2585.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4740.1' y1='2585.2' x2='4745.5' y2='2600.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4745.5' y1='2600.0' x2='4750.7' y2='2614.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4750.7' y1='2614.8' x2='4755.7' y2='2629.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4755.7' y1='2629.7' x2='4760.7' y2='2644.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4760.7' y1='2644.7' x2='4765.5' y2='2659.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4765.5' y1='2659.8' x2='4770.2' y2='2674.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4770.2' y1='2674.8' x2='4774.7' y2='2690.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4774.7' y1='2690.0' x2='4779.1' y2='2705.2' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4779.1' y1='2705.2' x2='4783.4' y2='2720.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4783.4' y1='2720.5' x2='4787.6' y2='2735.8' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4787.6' y1='2735.8' x2='4791.6' y2='2751.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4791.6' y1='2751.1' x2='4795.5' y2='2766.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4795.5' y1='2766.5' x2='4799.3' y2='2782.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4799.3' y1='2782.0' x2='4802.9' y2='2797.5' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4802.9' y1='2797.5' x2='4806.4' y2='2813.1' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4806.4' y1='2813.1' x2='4809.8' y2='2828.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4809.8' y1='2828.7' x2='4813.0' y2='2844.3' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4813.0' y1='2844.3' x2='4816.1' y2='2860.0' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4816.1' y1='2860.0' x2='4819.1' y2='2875.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4819.1' y1='2875.7' x2='4821.0' y2='2886.4' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
<line x1='4821.0' y1='2886.4' x2='4847.9' y2='2884.7' style="stroke-width:8.0;stroke:rgb(255,0,255);stroke-linecap:round;fill:none;" />
</g>
<g id="plot5">
<g id="plot5-axis">
</g>
<text x="4484.7" y="2357.3" font-size="58.5px" font-family="CMUSansSerif-DemiCondensed" style="text-anchor:middle;fill:rgb(255,0,255);" transform="rotate(426.6,4484.7,2357.3)" id="Connector_30-55" class="connector">Transmembrane</text>
</g>
<g id="plot6">
<g id="plot6-axis">
</g>
<path d="M3055.074,1738.589 A1262.613,1262.613 40.000 0,1 3071.867,1739.434 L3074.713,1689.516 A1312.613,1312.613 0.000 0,0 3057.255,1688.637 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs369780852" class="tile" id="tile20_2_1_substitution_"/>
<path d="M3172.250,1749.192 A1262.613,1262.613 40.000 0,1 3205.499,1754.223 L3213.637,1704.890 A1312.613,1312.613 0.000 0,0 3179.072,1699.660 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile36_15_1_substitution_" dbsource="dbSNP" tilersid="rs565862537" class="tile"/>
<path d="M3181.118,1684.800 A1327.613,1327.613 40.000 0,1 3216.078,1690.090 L3224.216,1640.756 A1377.613,1377.613 0.000 0,0 3187.939,1635.267 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs747694851" dbsource="dbSNP" id="tile41_13_1_substitution_"/>
<path d="M3163.383,1813.585 A1197.613,1197.613 40.000 0,1 3194.920,1818.356 L3203.058,1769.023 A1247.613,1247.613 0.000 0,0 3170.204,1764.052 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs771650207" dbsource="dbSNP" id="tile79_14_1_substitution_"/>
<path d="M3271.535,1766.931 A1262.613,1262.613 40.000 0,1 3304.276,1774.599 L3316.325,1726.073 A1312.613,1312.613 0.000 0,0 3282.288,1718.101 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs201502336" id="tile16_23_1_substitution_"/>
<path d="M3285.514,1703.452 A1327.613,1327.613 40.000 0,1 3319.940,1711.515 L3331.990,1662.989 A1377.613,1377.613 0.000 0,0 3296.267,1654.622 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile25_22_1_substitution_" class="tile" tilersid="rs374531985" dbsource="dbSNP"/>
<path d="M3288.611,1837.684 A1197.613,1197.613 40.000 0,1 3319.462,1845.782 L3332.800,1797.593 A1247.613,1247.613 0.000 0,0 3300.661,1789.157 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile27_27_1_substitution_" class="tile" tilersid="rs377627218" dbsource="dbSNP"/>
<path d="M3336.801,1783.137 A1262.613,1262.613 40.000 0,1 3369.087,1792.538 L3383.703,1744.722 A1312.613,1312.613 0.000 0,0 3350.138,1734.949 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile61_28_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs759696973"/>
<path d="M3354.139,1720.492 A1327.613,1327.613 40.000 0,1 3388.088,1730.377 L3402.704,1682.561 A1377.613,1377.613 0.000 0,0 3367.477,1672.304 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs770023902" class="tile" dbsource="dbSNP" id="tile72_30_1_substitution_"/>
<path d="M3464.284,1825.849 A1262.613,1262.613 40.000 0,1 3495.387,1838.629 L3515.005,1792.639 A1312.613,1312.613 0.000 0,0 3482.670,1779.352 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs775506502" class="tile" dbsource="dbSNP" id="tile90_40_1_substitution_"/>
<path d="M3526.139,1852.234 A1262.613,1262.613 40.000 0,1 3556.518,1866.652 L3578.556,1821.771 A1312.613,1312.613 0.000 0,0 3546.975,1806.781 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs146375573" class="tile" dbsource="dbSNP" id="tile9_48_1_substitution_"/>
<path d="M3553.225,1793.146 A1327.613,1327.613 40.000 0,1 3585.168,1808.306 L3607.206,1763.425 A1377.613,1377.613 0.000 0,0 3574.060,1747.694 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs763000109" class="tile" id="tile64_47_1_substitution_"/>
<path d="M3616.070,1897.889 A1262.613,1262.613 40.000 0,1 3645.201,1914.687 L3670.752,1871.708 A1312.613,1312.613 0.000 0,0 3640.467,1854.245 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs377338702" class="tile" id="tile30_56_1_substitution_"/>
<path d="M3673.875,1932.253 A1262.613,1262.613 40.000 0,1 3702.071,1950.578 L3729.873,1909.020 A1312.613,1312.613 0.000 0,0 3700.561,1889.970 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs766034823" dbsource="dbSNP" id="tile69_63_1_substitution_"/>
<path d="M3738.214,1896.553 A1327.613,1327.613 40.000 0,1 3767.337,1916.603 L3796.236,1875.801 A1377.613,1377.613 0.000 0,0 3766.016,1854.995 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs753713562" class="tile" dbsource="dbSNP" id="tile46_64_1_substitution_"/>
<path d="M3756.948,1989.446 A1262.613,1262.613 40.000 0,1 3783.591,2009.962 L3814.622,1970.756 A1312.613,1312.613 0.000 0,0 3786.923,1949.427 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs754639425" id="tile54_70_1_substitution_"/>
<path d="M3823.931,1958.994 A1327.613,1327.613 40.000 0,1 3851.361,1981.305 L3883.424,1942.939 A1377.613,1377.613 0.000 0,0 3854.961,1919.788 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile65_73_1_substitution_" class="tile" tilersid="rs764955335" dbsource="dbSNP"/>
<path d="M3860.112,2075.663 A1262.613,1262.613 40.000 0,1 3884.422,2098.896 L3919.445,2063.212 A1312.613,1312.613 0.000 0,0 3894.172,2039.059 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs779870893" class="tile" dbsource="dbSNP" id="tile102_84_1_substitution_"/>
<path d="M3929.953,2052.507 A1327.613,1327.613 40.000 0,1 3954.855,2077.608 L3990.816,2042.869 A1377.613,1377.613 0.000 0,0 3964.976,2016.823 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs2228088" class="tile" id="tile3_87_1_substitution_"/>
<path d="M3838.891,2145.286 A1197.613,1197.613 40.000 0,1 3861.355,2167.929 L3897.317,2133.190 A1247.613,1247.613 0.000 0,0 3873.915,2109.601 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile38_86_1_substitution_" dbsource="dbSNP" tilersid="rs576621666" class="tile"/>
<path d="M3953.523,2172.362 A1262.613,1262.613 40.000 0,1 3975.225,2198.048 L4013.844,2166.290 A1312.613,1312.613 0.000 0,0 3991.282,2139.587 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile97_95_1_substitution_" dbsource="dbSNP" tilersid="rs777405140" class="tile"/>
<path d="M4025.430,2156.763 A1327.613,1327.613 40.000 0,1 4047.522,2184.370 L4086.973,2153.652 A1377.613,1377.613 0.000 0,0 4064.049,2125.005 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile101_97_1_substitution_" tilersid="rs747406665" class="tile" dbsource="dbSNP"/>
<path d="M4073.069,2334.633 A1262.613,1262.613 40.000 0,1 4090.407,2363.445 L4133.588,2338.238 A1312.613,1312.613 0.000 0,0 4115.563,2308.284 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile53_112_1_substitution_" tilersid="rs757794184" class="tile" dbsource="dbSNP"/>
<path d="M4106.972,2392.709 A1262.613,1262.613 40.000 0,1 4122.752,2422.404 L4167.214,2399.531 A1312.613,1312.613 0.000 0,0 4150.809,2368.660 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile7_120_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs141667614"/>
<path d="M4180.552,2392.669 A1327.613,1327.613 40.000 0,1 4196.307,2424.323 L4241.362,2402.642 A1377.613,1377.613 0.000 0,0 4225.014,2369.796 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile35_121_1_substitution_" dbsource="dbSNP" tilersid="rs558678940" class="tile"/>
<path d="M4151.912,2483.000 A1262.613,1262.613 40.000 0,1 4165.272,2513.859 L4211.417,2494.608 A1312.613,1312.613 0.000 0,0 4197.528,2462.527 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile18_129_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs369163834"/>
<path d="M4211.213,2456.385 A1327.613,1327.613 40.000 0,1 4225.260,2488.833 L4271.406,2469.581 A1377.613,1377.613 0.000 0,0 4256.829,2435.911 Z" style="stroke-linecap:round;fill:rgb(255,0,255);" class="tile" tilersid="rsID_NotAvailable" dbsource="ESP" id="tile105_127_1_insertion_"/>
<path d="M4105.283,2538.886 A1197.613,1197.613 40.000 0,1 4117.170,2568.484 L4163.812,2550.468 A1247.613,1247.613 0.000 0,0 4151.428,2519.635 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile104_130_1_substitution_" dbsource="dbSNP" tilersid="rs867435711" class="tile"/>
<path d="M4189.502,2576.590 A1262.613,1262.613 40.000 0,1 4200.356,2608.417 L4247.890,2592.911 A1312.613,1312.613 0.000 0,0 4236.607,2559.823 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs144480538" class="tile" dbsource="dbSNP" id="tile12_138_1_substitution_"/>
<path d="M4250.738,2554.793 A1327.613,1327.613 40.000 0,1 4262.150,2588.258 L4309.685,2572.752 A1377.613,1377.613 0.000 0,0 4297.843,2538.026 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile15_137_1_substitution_" tilersid="rs200241887" class="tile" dbsource="dbSNP"/>
<path d="M4138.561,2628.576 A1197.613,1197.613 40.000 0,1 4148.048,2659.028 L4195.979,2644.793 A1247.613,1247.613 0.000 0,0 4186.095,2613.069 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs541347219" dbsource="dbSNP" id="tile31_141_1_substitution_"/>
<path d="M4241.720,2771.261 A1262.613,1262.613 40.000 0,1 4247.371,2804.409 L4296.768,2796.664 A1312.613,1312.613 0.000 0,0 4290.893,2762.203 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile6_154_1_substitution_" tilersid="rs3179060" class="tile" dbsource="dbSNP"/>
<path d="M4252.137,2837.697 A1262.613,1262.613 40.000 0,1 4256.016,2871.099 L4305.754,2865.995 A1312.613,1312.613 0.000 0,0 4301.723,2831.270 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs756182468" class="tile" id="tile49_161_1_substitution_"/>
<path d="M4261.097,2938.155 A1262.613,1262.613 40.000 0,1 4262.297,2971.760 L4312.284,2970.642 A1312.613,1312.613 0.000 0,0 4311.037,2935.706 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs776753689" id="tile88_171_1_substitution_"/>
<path d="M4326.019,2934.971 A1327.613,1327.613 40.000 0,1 4327.280,2970.306 L4377.268,2969.188 A1377.613,1377.613 0.000 0,0 4375.959,2932.522 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs777874746" class="tile" id="tile100_169_1_substitution_"/>
<path d="M4260.523,3072.601 A1262.613,1262.613 40.000 0,1 4258.143,3106.144 L4307.966,3110.347 A1312.613,1312.613 0.000 0,0 4310.441,3075.476 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile56_183_1_substitution_" class="tile" tilersid="rs759378982" dbsource="dbSNP"/>
<path d="M4322.913,3111.608 A1327.613,1327.613 40.000 0,1 4319.472,3146.798 L4369.165,3152.327 A1377.613,1377.613 0.000 0,0 4372.736,3115.811 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile66_185_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs765178016"/>
<path d="M4250.707,3172.979 A1262.613,1262.613 40.000 0,1 4245.657,3206.225 L4294.986,3214.391 A1312.613,1312.613 0.000 0,0 4300.236,3179.829 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile5_191_1_substitution_" dbsource="dbSNP" tilersid="rs35131721" class="tile"/>
<path d="M4315.094,3181.884 A1327.613,1327.613 40.000 0,1 4309.784,3216.841 L4359.113,3225.008 A1377.613,1377.613 0.000 0,0 4364.623,3188.734 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile93_192_1_substitution_" tilersid="rs772331441" class="tile" dbsource="dbSNP"/>
<path d="M4239.724,3239.324 A1262.613,1262.613 40.000 0,1 4232.911,3272.253 L4281.734,3283.035 A1312.613,1312.613 0.000 0,0 4288.817,3248.801 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs776692566" class="tile" dbsource="dbSNP" id="tile89_196_1_substitution_"/>
<path d="M4216.667,3337.510 A1262.613,1262.613 40.000 0,1 4207.247,3369.790 L4255.055,3384.434 A1312.613,1312.613 0.000 0,0 4264.847,3350.875 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile57_205_1_substitution_" dbsource="dbSNP" tilersid="rs759609722" class="tile"/>
<path d="M4147.460,3526.808 A1262.613,1262.613 40.000 0,1 4133.024,3557.178 L4177.892,3579.243 A1312.613,1312.613 0.000 0,0 4192.900,3547.670 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile73_225_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs769643681"/>
<path d="M4101.751,3616.712 A1262.613,1262.613 40.000 0,1 4084.937,3645.834 L4127.901,3671.409 A1312.613,1312.613 0.000 0,0 4145.381,3641.134 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile87_232_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs775365890"/>
<path d="M4067.354,3674.497 A1262.613,1262.613 40.000 0,1 4049.013,3702.682 L4090.555,3730.508 A1312.613,1312.613 0.000 0,0 4109.621,3701.207 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs369783162" class="tile" dbsource="dbSNP" id="tile21_238_1_substitution_"/>
<path d="M4029.928,3730.368 A1262.613,1262.613 40.000 0,1 4010.113,3757.537 L4050.114,3787.535 A1312.613,1312.613 0.000 0,0 4070.714,3759.291 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile83_245_1_substitution_" class="tile" tilersid="rs772270241" dbsource="dbSNP"/>
<path d="M3989.581,3784.168 A1262.613,1262.613 40.000 0,1 3968.348,3810.242 L4006.695,3842.328 A1312.613,1312.613 0.000 0,0 4028.769,3815.221 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile2_251_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs4645843"/>
<path d="M4040.526,3824.537 A1327.613,1327.613 40.000 0,1 4018.199,3851.954 L4056.546,3884.040 A1377.613,1377.613 0.000 0,0 4079.713,3855.590 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs745738344" class="tile" dbsource="dbSNP" id="tile60_252_1_substitution_"/>
<path d="M3923.835,3860.650 A1262.613,1262.613 40.000 0,1 3900.588,3884.947 L3936.252,3919.991 A1312.613,1312.613 0.000 0,0 3960.420,3894.732 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs190788828" dbsource="dbSNP" id="tile22_260_1_substitution_"/>
<path d="M3748.299,4016.975 A1262.613,1262.613 40.000 0,1 3720.952,4036.542 L3749.502,4077.589 A1312.613,1312.613 0.000 0,0 3777.932,4057.248 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs1800620" class="tile" id="tile1_280_1_substitution_"/>
<path d="M3635.919,4090.778 A1262.613,1262.613 40.000 0,1 3606.646,4107.326 L3630.669,4151.177 A1312.613,1312.613 0.000 0,0 3661.102,4133.973 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs375472217" class="tile" id="tile28_292_1_substitution_"/>
<path d="M3516.329,4152.213 A1262.613,1262.613 40.000 0,1 3485.462,4165.555 L3504.686,4211.711 A1312.613,1312.613 0.000 0,0 3536.775,4197.841 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs1800618" class="tile" dbsource="dbSNP" id="tile0_306_1_substitution_"/>
<path d="M3358.773,4210.567 A1262.613,1262.613 40.000 0,1 3326.407,4219.692 L3339.333,4267.992 A1312.613,1312.613 0.000 0,0 3372.980,4258.506 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile107_320_1_substitution_" class="tile" tilersid="rs758704433" dbsource="dbSNP"/>
<path d="M3343.211,4282.482 A1327.613,1327.613 40.000 0,1 3308.936,4291.167 L3320.571,4339.795 A1377.613,1377.613 0.000 0,0 3356.137,4330.783 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs281865419" dbsource="dbSNP" id="tile17_322_1_substitution_"/>
<path d="M3309.604,4156.902 A1197.613,1197.613 40.000 0,1 3278.685,4164.736 L3290.320,4213.364 A1247.613,1247.613 0.000 0,0 3322.530,4205.202 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs747115001" class="tile" dbsource="dbSNP" id="tile44_323_1_substitution_"/>
<path d="M3293.811,4227.952 A1262.613,1262.613 40.000 0,1 3261.006,4235.341 L3271.342,4284.261 A1312.613,1312.613 0.000 0,0 3305.446,4276.579 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs771174703" id="tile77_327_1_substitution_"/>
<path d="M3128.169,4256.090 A1262.613,1262.613 40.000 0,1 3094.673,4259.058 L3098.422,4308.917 A1312.613,1312.613 0.000 0,0 3133.244,4305.832 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs780017660" dbsource="dbSNP" id="tile98_341_1_substitution_"/>
<path d="M3099.547,4323.875 A1327.613,1327.613 40.000 0,1 3064.256,4326.057 L3066.676,4375.998 A1377.613,1377.613 0.000 0,0 3103.296,4373.734 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile14_345_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs142488339"/>
<path d="M3027.504,4262.313 A1262.613,1262.613 40.000 0,1 2993.879,4262.598 L2993.636,4312.597 A1312.613,1312.613 0.000 0,0 3028.594,4312.301 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile32_349_1_substitution_" dbsource="dbSNP" tilersid="rs548532642" class="tile"/>
<path d="M3028.920,4327.297 A1327.613,1327.613 40.000 0,1 2993.564,4327.597 L2993.321,4377.596 A1377.613,1377.613 0.000 0,0 3030.009,4377.286 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile84_350_1_substitution_" class="tile" tilersid="rs774032100" dbsource="dbSNP"/>
<path d="M2994.194,4197.598 A1197.613,1197.613 40.000 0,1 2962.303,4197.019 L2960.730,4246.994 A1247.613,1247.613 0.000 0,0 2993.951,4247.598 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile103_354_1_substitution_" class="tile" tilersid="rs747751043" dbsource="dbSNP"/>
<path d="M2926.664,4260.481 A1262.613,1262.613 40.000 0,1 2893.123,4258.081 L2888.891,4307.901 A1312.613,1312.613 0.000 0,0 2923.760,4310.397 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile37_360_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs569852154"/>
<path d="M2922.889,4325.371 A1327.613,1327.613 40.000 0,1 2887.621,4322.848 L2883.389,4372.668 A1377.613,1377.613 0.000 0,0 2919.985,4375.287 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile94_359_1_substitution_" dbsource="dbSNP" tilersid="rs778657377" class="tile"/>
<path d="M2694.297,4225.045 A1262.613,1262.613 40.000 0,1 2661.782,4216.470 L2648.388,4264.642 A1312.613,1312.613 0.000 0,0 2682.191,4273.558 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile48_381_1_substitution_" dbsource="dbSNP" tilersid="rs751421650" class="tile"/>
<path d="M2629.506,4207.031 A1262.613,1262.613 40.000 0,1 2597.494,4196.737 L2581.555,4244.128 A1312.613,1312.613 0.000 0,0 2614.835,4254.830 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs537268309" dbsource="dbSNP" id="tile29_387_1_substitution_"/>
<path d="M2610.433,4269.170 A1327.613,1327.613 40.000 0,1 2576.773,4258.346 L2560.833,4305.737 A1377.613,1377.613 0.000 0,0 2595.762,4316.969 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs772893367" class="tile" dbsource="dbSNP" id="tile82_386_1_substitution_"/>
<path d="M2618.215,4135.128 A1197.613,1197.613 40.000 0,1 2588.122,4124.559 L2570.926,4171.509 A1247.613,1247.613 0.000 0,0 2602.276,4182.520 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile10_390_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs150508976"/>
<path d="M2503.260,4160.793 A1262.613,1262.613 40.000 0,1 2472.524,4147.153 L2451.635,4192.580 A1312.613,1312.613 0.000 0,0 2483.589,4206.761 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile91_399_1_substitution_" class="tile" tilersid="rs777187968" dbsource="dbSNP"/>
<path d="M2353.534,4084.561 A1262.613,1262.613 40.000 0,1 2324.881,4066.961 L2298.146,4109.213 A1312.613,1312.613 0.000 0,0 2327.934,4127.510 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs759960481" class="tile" id="tile58_412_1_substitution_"/>
<path d="M2151.184,3934.720 A1262.613,1262.613 40.000 0,1 2034.592,3813.743 L1996.361,3845.968 A1312.613,1312.613 0.000 0,0 2117.570,3971.735 Z" style="stroke-linecap:round;fill:rgb(255,0,255);" id="tile86_434_5_deletion_frameshift" class="tile" tilersid="rs775314803" dbsource="dbSNP"/>
<path d="M2044.071,3921.279 A1327.613,1327.613 40.000 0,1 2019.876,3895.495 L1982.963,3929.221 A1377.613,1377.613 0.000 0,0 2008.069,3955.976 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile33_443_1_substitution_" tilersid="rs552363141" class="tile" dbsource="dbSNP"/>
<path d="M2115.850,3807.808 A1197.613,1197.613 40.000 0,1 2094.651,3783.977 L2056.853,3816.707 A1247.613,1247.613 0.000 0,0 2078.937,3841.534 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs753130938" class="tile" id="tile45_446_1_substitution_"/>
<path d="M1971.889,3939.339 A1392.613,1392.613 40.000 0,1 1947.239,3911.627 L1909.441,3944.358 A1442.613,1442.613 0.000 0,0 1934.976,3973.065 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile106_447_1_substitution_" class="tile" tilersid="rs758652888" dbsource="dbSNP"/>
<path d="M1892.321,3606.001 A1262.613,1262.613 40.000 0,1 1876.575,3576.288 L1832.087,3599.109 A1312.613,1312.613 0.000 0,0 1848.456,3629.999 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs369510319" dbsource="dbSNP" id="tile19_473_1_substitution_"/>
<path d="M1818.741,3605.955 A1327.613,1327.613 40.000 0,1 1803.023,3574.283 L1757.943,3595.912 A1377.613,1377.613 0.000 0,0 1774.253,3628.777 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs757398208" class="tile" id="tile51_477_1_substitution_"/>
<path d="M1861.627,3546.166 A1262.613,1262.613 40.000 0,1 1847.486,3515.657 L1801.846,3536.077 A1312.613,1312.613 0.000 0,0 1816.547,3567.795 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs570927821" id="tile39_478_1_substitution_"/>
<path d="M1788.154,3542.203 A1327.613,1327.613 40.000 0,1 1774.145,3509.739 L1727.977,3528.937 A1377.613,1377.613 0.000 0,0 1742.514,3562.624 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs373646181" dbsource="dbSNP" id="tile24_481_1_substitution_"/>
<path d="M1906.818,3489.111 A1197.613,1197.613 40.000 0,1 1894.181,3459.826 L1848.013,3479.023 A1247.613,1247.613 0.000 0,0 1861.178,3509.531 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile96_482_1_substitution_" dbsource="dbSNP" tilersid="rs778731236" class="tile"/>
<path d="M1821.666,3453.564 A1262.613,1262.613 40.000 0,1 1810.006,3422.023 L1762.881,3438.736 A1312.613,1312.613 0.000 0,0 1775.004,3471.525 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile59_489_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs747910356"/>
<path d="M1799.189,3390.184 A1262.613,1262.613 40.000 0,1 1789.224,3358.067 L1741.277,3372.247 A1312.613,1312.613 0.000 0,0 1751.636,3405.635 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs771906789" id="tile80_495_1_substitution_"/>
<path d="M1740.887,3093.940 A1262.613,1262.613 40.000 0,1 1738.832,3060.376 L1688.889,3062.767 A1312.613,1312.613 0.000 0,0 1691.026,3097.660 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs772842161" class="tile" id="tile81_520_1_substitution_"/>
<path d="M1739.562,2925.930 A1262.613,1262.613 40.000 0,1 1741.982,2892.390 L1692.163,2888.129 A1312.613,1312.613 0.000 0,0 1689.648,2922.997 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile40_535_1_substitution_" dbsource="dbSNP" tilersid="rs746735395" class="tile"/>
<path d="M1745.293,2858.927 A1262.613,1262.613 40.000 0,1 1749.495,2825.564 L1699.975,2818.656 A1312.613,1312.613 0.000 0,0 1695.606,2853.340 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile34_542_1_substitution_" dbsource="dbSNP" tilersid="rs140654183" class="tile"/>
<path d="M1682.793,2834.109 A1327.613,1327.613 40.000 0,1 1725.972,2626.626 L1677.990,2612.564 A1377.613,1377.613 0.000 0,0 1633.185,2827.862 Z" style="stroke-linecap:round;fill:rgb(255,0,255);" class="tile" tilersid="rs762741913" dbsource="dbSNP" id="tile63_550_6_insertion_"/>
<path d="M1813.872,2834.544 A1197.613,1197.613 40.000 0,1 1818.699,2803.015 L1769.380,2794.791 A1247.613,1247.613 0.000 0,0 1764.351,2827.636 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs770403685" dbsource="dbSNP" id="tile74_546_1_substitution_"/>
<path d="M1783.728,2661.073 A1262.613,1262.613 40.000 0,1 1793.185,2628.803 L1745.394,2614.104 A1312.613,1312.613 0.000 0,0 1735.563,2647.651 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs760036765" class="tile" dbsource="dbSNP" id="tile62_559_1_substitution_"/>
<path d="M1826.662,2533.665 A1262.613,1262.613 40.000 0,1 1839.497,2502.584 L1793.541,2482.886 A1312.613,1312.613 0.000 0,0 1780.197,2515.198 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile70_573_1_substitution_" tilersid="rs765691650" class="tile" dbsource="dbSNP"/>
<path d="M1853.155,2471.855 A1262.613,1262.613 40.000 0,1 1867.626,2441.502 L1822.784,2419.385 A1312.613,1312.613 0.000 0,0 1807.739,2450.941 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile11_577_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs180710258"/>
<path d="M1794.115,2444.666 A1327.613,1327.613 40.000 0,1 1809.331,2412.750 L1764.489,2390.633 A1377.613,1377.613 0.000 0,0 1748.699,2423.752 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile67_579_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs763385232"/>
<path d="M1925.922,2470.254 A1197.613,1197.613 40.000 0,1 1940.410,2441.838 L1896.172,2418.535 A1247.613,1247.613 0.000 0,0 1881.079,2448.137 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile4_581_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs11574936"/>
<path d="M1933.433,2324.260 A1262.613,1262.613 40.000 0,1 1951.806,2296.096 L1910.297,2268.221 A1312.613,1312.613 0.000 0,0 1891.196,2297.500 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs751765776" class="tile" id="tile43_594_1_substitution_"/>
<path d="M1897.845,2259.859 A1327.613,1327.613 40.000 0,1 1917.946,2230.771 L1877.194,2201.800 A1377.613,1377.613 0.000 0,0 1856.336,2231.984 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs757435299" dbsource="dbSNP" id="tile52_597_1_substitution_"/>
<path d="M2124.357,2090.363 A1262.613,1262.613 40.000 0,1 2148.891,2067.367 L2115.187,2030.434 A1312.613,1312.613 0.000 0,0 2089.681,2054.341 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs376368223" class="tile" dbsource="dbSNP" id="tile26_620_1_substitution_"/>
<path d="M2105.076,2019.354 A1327.613,1327.613 40.000 0,1 2131.508,1995.870 L2098.799,1958.053 A1377.613,1377.613 0.000 0,0 2071.372,1982.422 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs750502134" dbsource="dbSNP" id="tile42_624_1_substitution_"/>
<path d="M2174.030,2045.032 A1262.613,1262.613 40.000 0,1 2199.754,2023.375 L2168.064,1984.700 A1312.613,1312.613 0.000 0,0 2141.321,2007.215 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs756260984" id="tile50_627_1_substitution_"/>
<path d="M2158.557,1973.098 A1327.613,1327.613 40.000 0,1 2186.202,1951.054 L2155.553,1911.549 A1377.613,1377.613 0.000 0,0 2126.866,1934.423 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile47_630_1_substitution_" class="tile" tilersid="rs748145803" dbsource="dbSNP"/>
<path d="M2240.951,2073.652 A1197.613,1197.613 40.000 0,1 2265.889,2053.767 L2235.240,2014.262 A1247.613,1247.613 0.000 0,0 2209.261,2034.978 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile95_628_1_substitution_" tilersid="rs778803751" class="tile" dbsource="dbSNP"/>
<path d="M2226.045,2002.411 A1262.613,1262.613 40.000 0,1 2252.886,1982.154 L2223.300,1941.847 A1312.613,1312.613 0.000 0,0 2195.396,1962.906 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" tilersid="rs758189183" class="tile" dbsource="dbSNP" id="tile55_631_1_substitution_"/>
<path d="M2146.358,1899.698 A1392.613,1392.613 40.000 0,1 2175.962,1877.355 L2146.376,1837.048 A1442.613,1442.613 0.000 0,0 2115.709,1860.193 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs777545571" dbsource="dbSNP" id="tile92_632_1_substitution_"/>
<path d="M2308.138,1943.820 A1262.613,1262.613 40.000 0,1 2336.510,1925.770 L2310.235,1883.230 A1312.613,1312.613 0.000 0,0 2280.740,1901.994 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" tilersid="rs141307820" class="tile" id="tile8_640_1_substitution_"/>
<path d="M2272.520,1889.447 A1327.613,1327.613 40.000 0,1 2302.353,1870.468 L2276.078,1827.928 A1377.613,1377.613 0.000 0,0 2245.122,1847.622 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs770509340" dbsource="dbSNP" id="tile75_641_1_substitution_"/>
<path d="M2370.667,1981.072 A1197.613,1197.613 40.000 0,1 2398.024,1964.674 L2372.892,1921.449 A1247.613,1247.613 0.000 0,0 2344.392,1938.532 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs780711335" id="tile99_645_1_substitution_"/>
<path d="M2365.352,1908.482 A1262.613,1262.613 40.000 0,1 2394.645,1891.968 L2370.672,1848.089 A1312.613,1312.613 0.000 0,0 2340.220,1865.257 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile23_646_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs370893734"/>
<path d="M2363.481,1834.926 A1327.613,1327.613 40.000 0,1 2394.733,1818.388 L2371.938,1773.887 A1377.613,1377.613 0.000 0,0 2339.508,1791.047 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" dbsource="dbSNP" class="tile" tilersid="rs763621932" id="tile68_650_1_substitution_"/>
<path d="M2424.367,1876.240 A1262.613,1262.613 40.000 0,1 2454.497,1861.309 L2432.895,1816.216 A1312.613,1312.613 0.000 0,0 2401.572,1831.739 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" class="tile" tilersid="rs769084971" dbsource="dbSNP" id="tile71_654_1_substitution_"/>
<path d="M2515.897,1833.881 A1262.613,1262.613 40.000 0,1 2547.123,1821.402 L2529.189,1774.729 A1312.613,1312.613 0.000 0,0 2496.726,1787.702 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile85_663_1_substitution_" dbsource="dbSNP" tilersid="rs774879769" class="tile"/>
<path d="M2578.670,1809.760 A1262.613,1262.613 40.000 0,1 2610.516,1798.962 L2595.092,1751.400 A1312.613,1312.613 0.000 0,0 2561.985,1762.626 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile78_669_1_substitution_" dbsource="dbSNP" class="tile" tilersid="rs762056461"/>
<path d="M2675.014,1779.929 A1262.613,1262.613 40.000 0,1 2707.620,1771.707 L2696.042,1723.066 A1312.613,1312.613 0.000 0,0 2662.144,1731.613 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile13_676_1_substitution_" class="tile" tilersid="rs186486397" dbsource="dbSNP"/>
<path d="M2658.283,1717.119 A1327.613,1327.613 40.000 0,1 2692.568,1708.474 L2680.990,1659.833 A1377.613,1377.613 0.000 0,0 2645.414,1668.803 Z" style="stroke-linecap:round;fill:rgb(203,24,29);" id="tile76_678_1_substitution_" class="tile" tilersid="rs767604552" dbsource="dbSNP"/>
</g>
<defs>
<pattern id="vline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>
<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:4" /></pattern>
<pattern id="hline-sparse" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /></pattern>
<pattern id="hline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:5" /></pattern>
<pattern id="vline" width="10" height="10" patternTransform="rotate(0 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:5" /></pattern>
<pattern id="checker" width="10" height="10" patternTransform="rotate(45 0 0)" patternUnits="userSpaceOnUse"><line x1="0" y1="0" x2="10" y2="0" style="stroke:black;stroke-width:2" /><line x1="0" y1="0" x2="0" y2="10" style="stroke:black;stroke-width:2" /></pattern>
</defs>
</svg>
<script type="text/javascript">
var svg = d3.select("#master").append("svg:g").attr("id","annotation");
svg;
//***Filters***
d3.select("#master").append("svg:defs").attr("id","ExtraS");
d3.select("#ExtraS").append("defs:filter").attr("id","NeonGlow").attr("x",0).attr("y",0);
d3.select("#NeonGlow").append("filter:feColorMatrix").attr("in","SourceGraphic").attr("type","matrix").attr("values","1 0 0 0 0.33, 0 1 0 0 0.33, 0 0 1 0 0.33, 0.5 0.5 0.5 0.5 0.05").attr("result","feColorMatrixOut");
d3.select("#NeonGlow").append("filter:feGaussianBlur").attr("in","feColorMatrixOut").attr("stdDeviation",10).attr("result","feGaussianBlurOut");
d3.select("#NeonGlow").append("filter:feBlend").attr("in","SourceGraphic").attr("in2","feGaussianBlurOut").attr("result","feBlendOut").attr("mode","screen");
//***Filters***
//***Markers***
d3.select("#ExtraS").append("defs:marker").attr("id","markerTriangle").attr("markerWidth",6).attr("markerHeight",6).attr("refX",1).attr("refY",3).attr("orient","auto");
d3.select("#markerTriangle").append("marker:path").attr("d","M1,1 L4,3 L1,5 L1,1 Z").attr("fill","Orange").attr("stroke-width",2).attr("stroke","Orange").attr("stroke-linejoin","round");
//***Markers***
//***Global Variables for Graphpad
var GoldenRatio = 1.618;
var Relocate = 0;
var MouseOut = 1;
var GraphWdefault = 2000;
var GraphHdefault = GraphWdefault/GoldenRatio;
var GraphHnew = GraphHdefault;
var GraphWnew = GraphWdefault;
var GraphNewLocation = [2000,2375];
var GraphOpen = "no";
var GraphWindowSize = 50;
var GraphData = [];
//***Global Variables for Graphpad
var cdna = ["A","T","G","A","G","C","A","C","T","G","A","A","A","G","C","A","T","G","A","T","C","C","G","G","G","A","C","G","T","G","G","A","G","C","T","G","G","C","C","G","A","G","G","A","G","G","C","G","C","T","C","C","C","C","A","A","G","A","A","G","A","C","A","G","G","G","G","G","G","C","C","C","C","A","G","G","G","C","T","C","C","A","G","G","C","G","G","T","G","C","T","T","G","T","T","C","C","T","C","A",
"G","C","C","T","C","T","T","C","T","C","C","T","T","C","C","T","G","A","T","C","G","T","G","G","C","A","G","G","C","G","C","C","A","C","C","A","C","G","C","T","C","T","T","C","T","G","C","C","T","G","C","T","G","C","A","C","T","T","T","G","G","A","G","T","G","A","T","C","G","G","C","C","C","C","C","A","G","A","G","G","G","A","A","G","A","G","T","T","C","C","C","C","A","G","G","G","A","C","C","T",
"C","T","C","T","C","T","A","A","T","C","A","G","C","C","C","T","C","T","G","G","C","C","C","A","G","G","C","A","G","T","C","A","G","A","T","C","A","T","C","T","T","C","T","C","G","A","A","C","C","C","C","G","A","G","T","G","A","C","A","A","G","C","C","T","G","T","A","G","C","C","C","A","T","G","T","T","G","T","A","G","C","A","A","A","C","C","C","T","C","A","A","G","C","T","G","A","G","G","G","G",
"C","A","G","C","T","C","C","A","G","T","G","G","C","T","G","A","A","C","C","G","C","C","G","G","G","C","C","A","A","T","G","C","C","C","T","C","C","T","G","G","C","C","A","A","T","G","G","C","G","T","G","G","A","G","C","T","G","A","G","A","G","A","T","A","A","C","C","A","G","C","T","G","G","T","G","G","T","G","C","C","A","T","C","A","G","A","G","G","G","C","C","T","G","T","A","C","C","T","C","A",
"T","C","T","A","C","T","C","C","C","A","G","G","T","C","C","T","C","T","T","C","A","A","G","G","G","C","C","A","A","G","G","C","T","G","C","C","C","C","T","C","C","A","C","C","C","A","T","G","T","G","C","T","C","C","T","C","A","C","C","C","A","C","A","C","C","A","T","C","A","G","C","C","G","C","A","T","C","G","C","C","G","T","C","T","C","C","T","A","C","C","A","G","A","C","C","A","A","G","G","T",
"C","A","A","C","C","T","C","C","T","C","T","C","T","G","C","C","A","T","C","A","A","G","A","G","C","C","C","C","T","G","C","C","A","G","A","G","G","G","A","G","A","C","C","C","C","A","G","A","G","G","G","G","G","C","T","G","A","G","G","C","C","A","A","G","C","C","C","T","G","G","T","A","T","G","A","G","C","C","C","A","T","C","T","A","T","C","T","G","G","G","A","G","G","G","G","T","C","T","T","C",
"C","A","G","C","T","G","G","A","G","A","A","G","G","G","T","G","A","C","C","G","A","C","T","C","A","G","C","G","C","T","G","A","G","A","T","C","A","A","T","C","G","G","C","C","C","G","A","C","T","A","T","C","T","C","G","A","C","T","T","T","G","C","C","G","A","G","T","C","T","G","G","G","C","A","G","G","T","C","T","A","C","T","T","T","G","G","G","A","T","C","A","T","T","G","C","C","C","T","G"];
var aminoacids_degenerateCode = {"A":["GCT","GCC","GCA","GCG"], "R":["CGT","CGC","CGA","CGG","AGA","AGG"], "N":["AAT","AAC"], "D":["GAT","GAC"], "C":["TGT","TGC"], "Q":["CAA","CAG"], "E":["GAA","GAG"], "G":["GGT","GGC","GGA","GGG"], "H":["CAT","CAC"], "I":["ATT","ATC","ATA"], "L":["TTA","TTG","CTT","CTC","CTA","CTG"], "K":["AAA","AAG"], "M":["ATG"], "F":["TTT","TTC"], "P":["CCT","CCC","CCA","CCG"], "S":["TCT","TCC","TCA","TCG","AGT","AGC"], "T":["ACT","ACC","ACA","ACG"], "W":["TGG"], "Y":["TAT","TAC"], "V":["GTT","GTC","GTA","GTG"], "X":["TAA","TGA","TAG"]};
var fasta = [];
var fasta_sorted = [];
var aminoacids = {"A":["Alanine","Nonpolar"],"R":["Arginine","Positive"],"N":["Asparagine","Polar"],"D":["Aspartic-Acid","Negative"],"C":["Cysteine","Polar"],"Q":["Glutamine","Polar"],"E":["Glutamic-Acid","Negative"],"G":["Glycine","Nonpolar"],"H":["Histidine","Positive"],"I":["Isoleucine","Nonpolar"],"L":["Leucine","Nonpolar"],"K":["Lysine","Positive"],"M":["Methionine","Nonpolar"],"F":["Phenylalanine","Aromatic"],"P":["Proline","Nonpolar"],"S":["Serine","Polar"],"T":["Threonine","Polar"],"W":["Tryptophan","Aromatic"],"Y":["Tyrosine","Aromatic"],"V":["Valine","Nonpolar"]};
var aminoacids_OtherProperties = {"A":["Hydrophobic","Aliphatic"],"R":["Hydrophilic","H-bonding","Basic","Ionizable"],"N":["Hydrophilic"],"D":["Hydrophilic","H-bonding","Acidic","Ionizable"],"C":["Hydrophilic","H-bonding","Sulfur-containing","Acidic","Ionizable","Disulfide-bond"],"Q":["Hydrophilic","H-bonding"],"E":["Hydrophilic","H-bonding","Acidic","Ionizable"],"G":["Hydrophobic","Aliphatic"],"H":["Hydrophilic","H-bonding","Basic","Ionizable","All-aromatic"],"I":["Hydrophobic","Aliphatic"],"L":["Hydrophobic","Aliphatic"],"K":["Hydrophilic","H-bonding","Basic","Ionizable"],"M":["Hydrophobic","Sulfur-containing"],"F":["Hydrophobic","All-aromatic"],"P":["Hydrophobic","Aliphatic","Cyclic"],"S":["Hydrophilic","H-bonding"],"T":["Hydrophilic","H-bonding"],"W":["Hydrophobic","H-bonding","All-aromatic"],"Y":["Hydrophobic","H-bonding","Ionizable","All-aromatic"],"V":["Hydrophobic","Aliphatic"]};
var screen_aspect = 16/9;
var R_Click = 0;
var coordinates = [0,0];
var coordinates_time = [];
d3.select("#master")
.attr("onmouseup",function(){return "enlargeEndMU(evt)"})
.on("mousemove", function(){
coordinates = d3.mouse(this);
if (R_Click == 1) {
if (coordinates_time.length >= 4) {
coordinates_time.shift();
coordinates_time.shift();
coordinates_time.push(coordinates[0]);
coordinates_time.push(coordinates[1]);
} else {
coordinates_time.push(coordinates[0]);
coordinates_time.push(coordinates[1]);
}
var distance = Math.sqrt(Math.pow((coordinates_time[2]-coordinates_time[0]),2)+Math.pow((coordinates_time[3]-coordinates_time[1]),2));
var distance_origin = Math.sqrt(Math.pow((coordinates[0]-3000),2)+Math.pow((coordinates[1]-3000),2));
var sensitivity = 0.01;
var radius_max = 3000*Math.sqrt(2);
var factorX = 0.2+0.5*Math.pow((distance_origin/radius_max),2);
var factorY = screen_aspect*factorX;
var Xdiff = (coordinates_time[2]-coordinates_time[0]);
var Ydiff = (coordinates_time[3]-coordinates_time[1]);
var sine = Math.abs(Ydiff/Math.sqrt(Math.pow(Xdiff,2)+Math.pow(Ydiff,2)));
var cosine = Math.abs(Xdiff/Math.sqrt(Math.pow(Xdiff,2)+Math.pow(Ydiff,2)));
var constantX = factorX*Math.pow(cosine,4/7);
var constantY = factorY*Math.pow(sine,4/7);
var Xpos = constantX*Xdiff;
var Ypos = constantY*Ydiff;
if (distance >= sensitivity) {
window.scrollBy(Xpos/4,Ypos/4);
}
}
})
.on("contextmenu", function (){
d3.select("#rightclick1").remove();
d3.select("#rightclick2").remove();
if (R_Click == 0) {
R_Click = 1;
} else {
R_Click = 0;
//hide or show overview tabs to prevent overlap
hideOrshowhtmlElements("1",true);
}
if (R_Click == 1) {
d3.select("#annotation").append("text").text("Use the outer region to scroll.").attr("id","rightclick1").attr("text-anchor","middle").attr("x", 3000).attr("y", 3200).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("Right-click to cancel autoscroll.").attr("id","rightclick2").attr("text-anchor","middle").attr("x", 3000).attr("y", 3000).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#rightclick1").transition().attr("fill-opacity",0.9).delay(500).duration(500);
d3.select("#rightclick2").transition().attr("fill-opacity",0.9).delay(500).duration(500);
//hide or show overview tabs to prevent overlap
hideOrshowhtmlElements("0",true);
}
})
.on("click", function () {
if ((Relocate == 1)&&(MouseOut == 1)) {
d3.select("#GraphSvg").transition().attr("x",function () {return coordinates[0]-50;}).attr("y",function () {return coordinates[1]-50;}).delay(0).duration(500);
GraphNewLocation = [];
GraphNewLocation.push(coordinates[0]-50);
GraphNewLocation.push(coordinates[1]-50);
Relocate = 0;
}
if (relocateWindow !== "") {
d3.select(relocateWindow).transition().attr("x",function(){return coordinates[0]-50;}).attr("y",function(){return coordinates[1]-50;}).delay(0).duration(500);
relocateWindow = "";
}
});
//***Tile and SNV databases***
//default = "dbSNP","ClinVar","HGMD"
var TileDB = ["All","None","dbSNP","ClinVar","HGMD","substitution","deletion","insertion","frameshift"];
var MutDB = ["All","Stop","Synonymous","Nonsynonymous","pXtoY","None","dbSNP","ClinVar","HGMD"];
//***Tile and SNV databases***
var list_seq = d3.select(document.body).select("#master").selectAll(".sequence");
var list_scat = d3.select(document.body).select("#master").selectAll(".scatter");
var list_con = d3.select(document.body).select("#master").select("#plot0").selectAll("*");
var domainList = ["All","Coil"];
var list_mut = d3.select(document.body).select("#master").selectAll(".mut");
var list_connector = d3.select(document.body).select("#master").selectAll(".connector");
var list_tile = d3.select(document.body).select("#master").selectAll(".tile");
var ids = {"seq":[],"scat":[],"con":[],"mut":[],"connector":[],"tile":[]};
for (var i = 0;i<list_seq[0].length;i++) {
var individual_id = d3.select(list_seq[0][i]).attr("id");
ids["seq"].push("#"+individual_id);
}
for (var i = 0;i<list_scat[0].length;i++) {
var individual_id = d3.select(list_scat[0][i]).attr("id");
ids["scat"].push("#"+individual_id);
}
(function () {for (var i = 1;i<list_con[0].length;i++) {
var individual_id = d3.select(list_con[0][i]).attr("id");
ids["con"].push("#"+individual_id);
if(d3.select("#"+individual_id).attr("class") !== null && d3.select("#"+individual_id).attr("class") !== undefined) {
var clss = d3.select("#"+individual_id).attr("class");
if (!(domainList.some(function(d){return d===clss}))) {
domainList.push(clss);
}
clss = clss+" allCons";
d3.select("#"+individual_id).attr("class",clss);
} else {
d3.select("#"+individual_id).attr("class","allCons");
}
}})();
for (var i = 0;i<list_mut[0].length;i++) {
var individual_id = d3.select(list_mut[0][i]).attr("id");
ids["mut"].push("#"+individual_id);
var database_source = d3.select(list_mut[0][i]).attr("dbsource");
var regexp = new RegExp(database_source,"i");
if ((MutDB.some(function(x){return x.match(regexp);})) || MutDB.length >= 20){
} else {
MutDB.push(database_source);
}
}
for (var i = 0;i<list_connector[0].length;i++) {
var individual_id = d3.select(list_connector[0][i]).attr("id");
ids["connector"].push("#"+individual_id);
}
//Original Tile Properties
var Or_Tile_Stroke_Color = [];
var Or_Tile_Stroke_Width = [];
var Or_Tile_Coordinates = [];
var Or_Tile_FrameCharacter = [];
var Or_Tile_Fill_Color = [];
//Original Tile Properties
for (var i = 0;i<list_tile[0].length;i++) {
var individual_id = d3.select(list_tile[0][i]).attr("id");
var stroke_color = d3.select(list_tile[0][i]).style("stroke");
if (stroke_color == null | stroke_color === 'undefined') {
stroke_color = d3.select(list_tile[0][i]).style("fill");
}
var stroke_width = d3.select(list_tile[0][i]).style("stroke-width");
if (stroke_width == null | stroke_color === 'undefined') {
stroke_width = 0;
}
ids["tile"].push("#"+individual_id);
Or_Tile_Stroke_Color.push(stroke_color);
Or_Tile_Stroke_Width.push(stroke_width);
var TileHash = {};
var TilePathElements = d3.select(ids["tile"][i]).attr("d").split(/[MLAZ,]|\s+/);
TileHash["TopLeftCornerx"] = TilePathElements[20];
TileHash["TopLeftCornery"] = TilePathElements[21];
TileHash["TopRightCornerx"] = TilePathElements[12];
TileHash["TopRightCornery"] = TilePathElements[13];
Or_Tile_Coordinates.push(TileHash);
var frameshift;
if (individual_id.match(/frameshift/)) {
frameshift = " with frameshift";
} else {
frameshift = "";
}
Or_Tile_FrameCharacter.push(frameshift);
Or_Tile_Fill_Color.push(d3.select(list_tile[0][i]).style("fill"));
var database_source = d3.select(ids["tile"][i]).attr("dbsource");
var regexp = new RegExp(database_source,"i");
if ((TileDB.some(function(x){return x.match(regexp);})) || TileDB.length >= 20){
} else {
TileDB.push(database_source);
}
}
//***Fasta***
for (var i = 0;i<list_seq[0].length;i++) {
var individual_id = d3.select(list_seq[0][i]).attr("id");
fasta.push(individual_id);
}
for (var i = 0;i<fasta.length;i++) {
fasta[i] = fasta[i].replace(/^seq_/,"");
fasta[i] = fasta[i].split("_");
}
for (var i = 0;i<fasta.length;i++) {
for (var j = 0;j<fasta.length;j++) {
if (fasta[j][1]==i+1) {
fasta_sorted.push(fasta[j]);
}
}
}
for (var i = 0;i<fasta_sorted.length;i++) {
fasta_sorted[i] = fasta_sorted[i][0];
for (var j in aminoacids) {
if (aminoacids[j][0] == fasta_sorted[i])
fasta_sorted[i] = j;
}
}
//***Fasta***
//***Original Radial Positioning of Conservation Elements***
var HalfTheWidthAngleOfElement = 355/(2*fasta_sorted.length);
//***There is a linearly increasing angle mistake that is maximized towards the end to approximately 1 degrees.
//***I calibrated this using CALR and BRCA1 and seems to work well. Some elements in the formula below is redundant however I will keep it explicit.
var CorrectionFactor = 1.25*fasta_sorted.length/417*HalfTheWidthAngleOfElement/fasta_sorted.length;
//***Original Radial Positioning of Conservation Elements***
//***Original Properties of Drawing elements***
var Or_Seq_Font_Size = d3.select(ids["seq"][0]).attr("font-size");
var Or_Scat_Stroke_Width = d3.select(ids["scat"][0]).attr("stroke-width");
var Or_Scat_Stroke_Color = d3.select(ids["scat"][0]).attr("stroke");
var Or_Scat_Size = 45;
var Or_Con_Stroke_Width = d3.select(ids["con"][0]).style("stroke-width");
var Or_Con_Stroke_Color = [];
(function (){
for (var i = 0;i<ids["con"].length;i++) {
Or_Con_Stroke_Color.push(d3.select(ids["con"][i]).style("stroke"));
}
})();
var Or_Con_Fill_Color = [];
(function (){
for (var i = 0;i<ids["con"].length;i++) {
Or_Con_Fill_Color.push(d3.select(ids["con"][i]).style("fill"));
}
})();
var Or_Mut_Font_Size = d3.select(ids["mut"][0]).attr("font-size");
var Or_Mut_Fill_Color = [];
(function (){
for (var i = 0;i<ids["mut"].length;i++) {
Or_Mut_Fill_Color.push(d3.select(ids["mut"][i]).style("fill"));
}
})();
var Or_Connector_Font_Size = d3.select(ids["connector"][0]).attr("font-size");
//***Original Properties of Drawing elements***
window.code = "";
var w = 6000;
var h = 6000;
var padding = 200;
d3.select("body").style("background-color", "white");
//***Options Control***
var optionStatus = "open";
d3.select("#annotation").append("text").text("Hide Options").attr("id","HideOptions").attr("text-anchor","middle").attr("x", 200).attr("y", 200).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#HideOptions")
.on("mouseover",function() {
d3.select("#HideOptions").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#HideOptions").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
d3.selectAll(".Options").transition().attr("fill-opacity",0.0).delay(0).duration(500);
d3.selectAll(".Options_Circle").data(function () {return d3.keys(aminoacids);}).each(function(d,i) {d3.select("#AminoacidsChoiceCircle_"+String(d)).transition().attr("stroke-opacity",function(d,i) {if (aminoacids[d][2]=="Clicked"){return 0.0;}else{return 0.0}}).delay(0).duration(500);});
d3.select("#LHlight").transition().attr("stroke-opacity",0.0).delay(0).duration(500);
//d3.select("#LEbulb").transition().attr("stroke-opacity",0.0).delay(0).duration(500);
d3.select("#RHlight").transition().attr("stroke-opacity",0.0).delay(0).duration(500);
//d3.select("#REbulb").transition().attr("stroke-opacity",0.0).delay(0).duration(500);
d3.select("#LHtext").transition().attr("fill-opacity",0.0).attr("stroke-opacity",0.0).delay(0).duration(500);
d3.select("#RHtext").transition().attr("fill-opacity",0.0).attr("stroke-opacity",0.0).delay(0).duration(500);
d3.select("#LHtext2").transition().attr("fill-opacity",0.0).attr("stroke-opacity",0.0).delay(0).duration(500);
d3.select("#RHtext2").transition().attr("fill-opacity",0.0).attr("stroke-opacity",0.0).delay(0).duration(500);
d3.select("#LIbulb").transition().attr("stroke-opacity",0.0).delay(0).duration(500);
d3.select("#RIbulb").transition().attr("stroke-opacity",0.0).delay(0).duration(500);
d3.selectAll(".DropDownRect").transition().attr("fill-opacity",0.0).delay(0).duration(500);
d3.selectAll(".DropDownText").transition().attr("fill-opacity",0.0).delay(0).duration(500);
d3.selectAll(".DropDownRectSnv").transition().attr("fill-opacity",0.0).delay(0).duration(500);
d3.selectAll(".DropDownTextSnv").transition().attr("fill-opacity",0.0).delay(0).duration(500);
d3.selectAll(".DropDownRectTile").transition().attr("fill-opacity",0.0).delay(0).duration(500);
d3.selectAll(".DropDownTextTile").transition().attr("fill-opacity",0.0).delay(0).duration(500);
//d3.selectAll(".DropDownRectExtract").transition().attr("fill-opacity",0.0).delay(0).duration(500);-->passed to hideOrshow function..
d3.select("#HideOptions").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select("#ShowOptions").transition().attr("visibility","visible").delay(0).duration(0);
//#ipvWatchIcon
d3.select("#ipvWatchIcon").style("opacity",0).style("visibility","hidden");
//#ipvWatchIcon
//#colorCoding
d3.select("#colorCoding").style("opacity",0).style("visibility","hidden");
//#colorCoding
//#neonEffect
d3.select("#neonEffect").style("opacity",0).style("visibility","hidden");
//#neonEffect
//#htmlElements and Input boxes
hideOrshowhtmlElements("0",false,false,true);
//#htmlElements and Input boxes
//overview tabs
d3.selectAll(".overviews").style("opacity",0).style("visibility","hidden");
//overview tabs
//Update option status
optionStatus = "closed";
//Update option status
//File Upload Elements
d3.selectAll(".actionOptions").transition().attr("fill-opacity",0.0).attr("visibility","hidden").delay(0).duration(500);
d3.select("#fileUploadIcon").style("opacity",0).attr("visibility","hidden");
//File Upload Elements
//IndorilLogo
d3.selectAll(".indorilLogo").style("opacity",0).style("visibility","hidden");
//IndorilLogo
});
d3.select("#annotation").append("text").text("Show Options").attr("id","ShowOptions").attr("text-anchor","middle").attr("x", 200).attr("y", 200).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","hidden");
d3.select("#ShowOptions")
.on("mouseover",function() {
d3.select("#ShowOptions").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#ShowOptions").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
d3.selectAll(".Options").transition().attr("fill-opacity", 0.9).delay(0).duration(500);
d3.selectAll(".Options_Circle").data(function () {return d3.keys(aminoacids);}).each(function(d,i) {d3.select("#AminoacidsChoiceCircle_"+String(d)).transition().attr("stroke-opacity",function(d,i) {if (aminoacids[d][2]=="Clicked"){return 0.9;}else{return 0.0}}).delay(0).duration(500);});
d3.select("#LHlight").transition().attr("stroke-opacity",0.5).delay(0).duration(500);
//d3.select("#LEbulb").transition().attr("stroke-opacity",0.5).delay(0).duration(500);
d3.select("#RHlight").transition().attr("stroke-opacity",0.5).delay(0).duration(500);
//d3.select("#REbulb").transition().attr("stroke-opacity",0.5).delay(0).duration(500);
d3.select("#LHtext").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(500);
d3.select("#RHtext").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(500);
d3.select("#LHtext2").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(500);
d3.select("#RHtext2").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(500);
d3.select("#LIbulb").transition().attr("stroke-opacity",0.5).delay(0).duration(500);
d3.select("#RIbulb").transition().attr("stroke-opacity",0.5).delay(0).duration(500);
d3.selectAll(".DropDownRect").transition().attr("fill-opacity",0.9).delay(0).duration(500);
d3.selectAll(".DropDownText").transition().attr("fill-opacity",0.9).delay(0).duration(500);
d3.selectAll(".DropDownRectSnv").transition().attr("fill-opacity",0.9).delay(0).duration(500);
d3.selectAll(".DropDownTextSnv").transition().attr("fill-opacity",0.9).delay(0).duration(500);
d3.selectAll(".DropDownRectTile").transition().attr("fill-opacity",0.9).delay(0).duration(500);
d3.selectAll(".DropDownTextTile").transition().attr("fill-opacity",0.9).delay(0).duration(500);
//d3.selectAll(".DropDownRectExtract").transition().attr("fill-opacity",0.9).delay(0).duration(500);-->passed to hideOrshow function..
d3.select("#ShowOptions").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select("#HideOptions").transition().attr("visibility","visible").delay(0).duration(0);
//#ipvWatchIcon
d3.select("#ipvWatchIcon").style("opacity",0.62).style("visibility","visible");
//#ipvWatchIcon
//#colorCoding
d3.select("#colorCoding").style("opacity",1.0).style("visibility","visible");
//#colorCoding
//#neonEffect
d3.select("#neonEffect").style("opacity",1.0).style("visibility","visible");
//#neonEffect
//#htmlElements and Input boxes
hideOrshowhtmlElements("1",false,false,true);
//#htmlElements and Input boxes
//overview tabs
d3.selectAll(".overviews").style("opacity",1.0).style("visibility","visible");
//overview tabs
//Update option status
optionStatus = "open";
//Update option status
//File Upload Elements
d3.selectAll(".actionOptions").transition().attr("fill-opacity",0.9).attr("visibility","visible").delay(0).duration(500);
d3.select("#fileUploadIcon").style("opacity",0.62).attr("visibility","visible");
//File Upload Elements
//IndorilLogo
d3.selectAll(".indorilLogo").style("opacity",1.0).style("visibility","visible");
//IndorilLogo
});
//***Options Control***
//***background***
d3.select("#annotation").append("text").text("background:black").attr("class","Options").attr("id","backgroundblack").attr("text-anchor","middle").attr("x", 3000).attr("y", 2000).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("background:white").attr("class","Options").attr("id","backgroundwhite").attr("text-anchor","middle").attr("x", 3000).attr("y", 2000).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","hidden");
d3.select("#backgroundblack").on("mouseover", function (){
d3.select("#backgroundblack").transition().attr("fill","Orange").delay(0).duration(100);
})
.on("mouseout", function(){
d3.select("#backgroundblack").transition().attr("fill","DimGray").delay(0).duration(100);
})
.on("click", function (){
d3.select("#backgroundblack").transition("backgroundControlChangeFadeout").attr("visibility","hidden").delay(0).duration(100);
d3.select("body").transition("backgroundBodyChange").style("background-color", "black").delay(100).duration(100);
d3.select("html").transition("backgroundHtmlChange").style("background-color", "black").delay(100).duration(100);
d3.select("#backgroundwhite").transition("backgroundControlChangeFadein").attr("visibility","visible").delay(200).duration(100);
d3.selectAll(".Options_Lights").transition("backgroundLightsChange").attr("fill","DodgerBlue").attr("stroke","DodgerBlue").delay(300).duration(250);
//Html Input Background
d3.selectAll(".htmlElementsInputs").style("background","rgba(30,144,255,0.4)");
//Html Input Background
});
d3.select("#backgroundwhite").on("mouseover", function (){
d3.select("#backgroundwhite").transition().attr("fill","Orange").delay(0).duration(100);
})
.on("mouseout", function(){
d3.select("#backgroundwhite").transition().attr("fill","DimGray").delay(0).duration(100);
})
.on("click", function (){
d3.select("#backgroundwhite").transition("backgroundControlChangeFadeout").attr("visibility","hidden").delay(0).duration(100);
d3.select("body").transition("backgroundBodyChange").style("background-color", "white").delay(100).duration(100);
d3.select("html").transition("backgroundHtmlChange").style("background-color", "white").delay(100).duration(100);
d3.select("#backgroundblack").transition("backgroundControlChangeFadein").attr("visibility","visible").delay(200).duration(100);
d3.selectAll(".Options_Lights").transition("backgroundLightsChange").attr("fill","Orange").attr("stroke","Orange").delay(300).duration(250);
//Html Input Background
d3.selectAll(".htmlElementsInputs").style("background","rgba(255,165,0,0.4)");
//Html Input Background
});
//***background***
//***Aminoacid Properties***
var AminoAcidProperties = ["Nonpolar","Polar","Positive","Negative","Aromatic","All-aromatic","Aliphatic","Cyclic","Hydrophobic","Hydrophilic","Acidic","Basic","Ionizable","H-bonding","Disulfide-bond","Sulfur-containing","All","None","Sequence Display"];
var AminoAcidPropertiesCount = 16;
var DropDownClick = 0;
var WhatsClicked = [];
d3.select("#annotation").append("text").text(function() {return AminoAcidProperties[AminoAcidPropertiesCount];}).attr("class","Options").attr("id","PropChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2275).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible")//.transition().attr("fill-opacity",0.9).delay(0).duration(750)
.on("click",function() {
if (DropDownClick == 0) {
d3.select("#annotation").call(DropDown);
} else {
d3.selectAll(".DropDownRect").remove();
d3.selectAll(".DropDownText").remove();
}
if (DropDownClick == 0) {
DropDownClick = 1;
} else {
DropDownClick = 0;
}
});
d3.select("#PropChoice").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.select("#annotation").append("path").attr("d","M 2700,2200 L 2675,2250 L 2700,2300 Z").attr("class","Options").attr("id","Ltriangle").attr("fill","DimGray").attr("fill-opacity", 0.8)
.on("mouseover",function() {
d3.select("#Ltriangle").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#Ltriangle").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
if (AminoAcidPropertiesCount == 0) {
AminoAcidPropertiesCount = 18;
} else {
AminoAcidPropertiesCount = AminoAcidPropertiesCount - 1;
}
d3.select("#PropChoice").remove();
d3.select("#annotation").append("text").text(function(){return AminoAcidProperties[AminoAcidPropertiesCount];}).attr("class","Options").attr("id","PropChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2275).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("click",function() {
if (DropDownClick == 0) {
d3.select("#annotation").call(DropDown);
} else {
d3.selectAll(".DropDownRect").remove();
d3.selectAll(".DropDownText").remove();
}
if (DropDownClick == 0) {
DropDownClick = 1;
} else {
DropDownClick = 0;
}
});
d3.select("#PropChoice").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.selectAll(".scatter").data(ids["scat"]).each(function(d,i) {var ResidueNumber = d.replace(/^.*scat_.*_/,"");d3.select(d).transition().attr("fill-opacity",function (){var aminoacid = fasta_sorted[ResidueNumber-1];if(AminoAcidProperties[AminoAcidPropertiesCount] == "All" || d.match(AminoAcidProperties[AminoAcidPropertiesCount]) || aminoacids_OtherProperties[fasta_sorted[ResidueNumber-1]].some(function(x){return x.match(AminoAcidProperties[AminoAcidPropertiesCount]);}) || (AminoAcidProperties[AminoAcidPropertiesCount] == "Sequence Display" && aminoacids[aminoacid][2] == "Clicked")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
WhatsClicked = [];
for (i=0;i<d3.keys(aminoacids).length;i++) {
if(aminoacids[d3.keys(aminoacids)[i]][2]=="Clicked") {
WhatsClicked.push(d3.keys(aminoacids)[i]);
}
}
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
});
d3.select("#annotation").append("path").attr("d","M 3300,2200 L 3325,2250 L 3300,2300 Z").attr("class","Options").attr("id","Rtriangle").attr("fill","DimGray").attr("fill-opacity", 0.8)
.on("mouseover",function() {
d3.select("#Rtriangle").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#Rtriangle").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
if (AminoAcidPropertiesCount == 18) {
AminoAcidPropertiesCount = 0;
} else {
AminoAcidPropertiesCount = AminoAcidPropertiesCount + 1;
}
d3.select("#PropChoice").remove();
d3.select("#annotation").append("text").text(function(){return AminoAcidProperties[AminoAcidPropertiesCount];}).attr("class","Options").attr("id","PropChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2275).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("click",function() {
if (DropDownClick == 0) {
d3.select("#annotation").call(DropDown);
} else {
d3.selectAll(".DropDownRect").remove();
d3.selectAll(".DropDownText").remove();
}
if (DropDownClick == 0) {
DropDownClick = 1;
} else {
DropDownClick = 0;
}
});
d3.select("#PropChoice").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.selectAll(".scatter").data(ids["scat"]).each(function(d,i) {var ResidueNumber = d.replace(/^.*scat_.*_/,"");d3.select(d).transition().attr("fill-opacity",function (){var aminoacid = fasta_sorted[ResidueNumber-1];if(AminoAcidProperties[AminoAcidPropertiesCount] == "All" || d.match(AminoAcidProperties[AminoAcidPropertiesCount]) || aminoacids_OtherProperties[fasta_sorted[ResidueNumber-1]].some(function(x){return x.match(AminoAcidProperties[AminoAcidPropertiesCount]);}) || (AminoAcidProperties[AminoAcidPropertiesCount] == "Sequence Display" && aminoacids[aminoacid][2] == "Clicked")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
WhatsClicked = [];
for (i=0;i<d3.keys(aminoacids).length;i++) {
if(aminoacids[d3.keys(aminoacids)[i]][2]=="Clicked") {
WhatsClicked.push(d3.keys(aminoacids)[i]);
}
}
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
});
//***Aminoacid Properties***
//***Aminoacid Choice
//***letters
d3.select("#annotation")
.selectAll("letters")
.data(function () {return d3.keys(aminoacids);})
.enter()
.append("text")
.text(function (d,i) {return d;})
.attr("text-anchor","middle")
.attr("x",function (d,i) {return 2400+(i%10)*133;})
.attr("y",function (d,i) {return 2550+parseInt((i+1)/11)*100;})
.attr("font-size","60px")
.attr("fill","DimGray")
.attr("stroke","DimGray")
.attr("fill-opacity",0.9)
.attr("stroke-opacity",0.0)
.attr("id",function(d,i) {return "AminoacidsChoice_"+String(d);})
.attr("class","Options");
//***letter;
//***circles***
d3.select("#annotation")
.selectAll("circles")
.data(function () {return d3.keys(aminoacids);})
.enter()
.append("circle")
.attr("r","42px")
.attr("cx",function (d,i) {return 2400+(i%10)*133;})
.attr("cy",function (d,i) {return 2525+parseInt((i+1)/11)*100;})
.attr("fill","DimGray")
.attr("stroke","DimGray")
.attr("stroke-width", "13px")
.attr("fill-opacity",0.0)
.attr("stroke-opacity",function(d,i) {if (aminoacids[d][2]=="Clicked"){return 0.9;}else{return 0.0;}})
.attr("id",function(d,i) {return "AminoacidsChoiceCircle_"+String(d);})
.attr("class","Options_Circle")
.on("mouseover",function(d,i) {
if (optionStatus === "open") {
d3.select(this).transition().attr("stroke","Orange").attr("r","100px").delay(0).duration(250);
d3.select("#AminoacidsChoice_"+String(d)).transition().attr("fill","Orange").attr("font-size","150px").delay(0).duration(250);
}
})
.on("mouseout",function(d,i) {
if (optionStatus === "open") {
d3.select(this).transition().attr("stroke",function(d,i) {if (aminoacids[d][2]=="Clicked"){return "Orange";}else{return "DimGray";}}).attr("stroke-opacity",function(d,i) {if (aminoacids[d][2]=="Clicked"){return 0.9;}else{return 0.0;}}).attr("r","42px").delay(0).duration(250);
d3.select("#AminoacidsChoice_"+String(d)).transition().attr("fill",function(d,i) {if (aminoacids[d][2]=="Clicked"){return "Orange";}else{return "DimGray";}}).attr("font-size","60px").delay(0).duration(250);
}
})
.on("click",function(d,i) {
if (optionStatus === "open") {
var LetterOfSubject = d;
d3.select(this).transition().attr("stroke",function(d,i) {if (aminoacids[d][2]=="Clicked"){return "DimGray";}else{return "Orange";}}).attr("stroke-opacity",function(d,i) {if (aminoacids[d][2]=="Clicked"){return 0.0;}else{return 0.9;}}).attr("r","42px").delay(0).duration(250);
d3.select("#AminoacidsChoice_"+String(d)).transition().attr("fill",function(d,i) {if (aminoacids[d][2]=="Clicked"){return "DimGray";}else{return "Orange";}}).attr("font-size","60px").delay(0).duration(250);
if (aminoacids[d][2]=="Clicked") {
d3.selectAll(".sequence").data(ids["seq"]).each(function(d,i) {var IdOfSubject = d3.select(d).attr("id"); if(IdOfSubject.match(aminoacids[LetterOfSubject][0])){d3.select(d).transition().attr("fill-opacity",0.0).attr("visibility","hidden").delay(0).duration(750);}});
} else {
d3.selectAll(".sequence").data(ids["seq"]).each(function(d,i) {var IdOfSubject = d3.select(d).attr("id"); if(IdOfSubject.match(aminoacids[LetterOfSubject][0])){d3.select(d).transition().attr("fill-opacity",1.0).attr("visibility","visible").delay(0).duration(750);}});
}
if (aminoacids[d][2]=="Clicked") {
aminoacids[d].pop();
} else {
aminoacids[d][2] = "Clicked";
}
}
});
//***circles***
//***Mass Selection***
d3.select("#annotation").append("path").attr("d","M 1900,2500 L 2300,2550 L 2350,2650").attr("class","Options_Lights").attr("id","LHlight").attr("fill","Orange").attr("fill-opacity", 0.0).attr("stroke","Orange").attr("stroke-opacity",0.5).attr("stroke-width","10px");
//d3.select("#annotation").append("path").attr("d","M 1920,2595, Q 1950,2620, 1980,2595").attr("class","Options_Lights").attr("id","LEbulb").attr("fill","Orange").attr("fill-opacity", 0.0).attr("stroke","Orange").attr("stroke-opacity",0.5).attr("stroke-width","10px");
d3.select("#annotation").append("path").attr("d","M 4100,2500 L 3700,2550 L 3650,2650").attr("class","Options_Lights").attr("id","RHlight").attr("fill","Orange").attr("fill-opacity", 0.0).attr("stroke","Orange").attr("stroke-opacity",0.5).attr("stroke-width","10px");
//d3.select("#annotation").append("path").attr("d","M 4080,2595, Q 4050,2620, 4020,2595").attr("class","Options_Lights").attr("id","REbulb").attr("fill","Orange").attr("fill-opacity", 0.0).attr("stroke","Orange").attr("stroke-opacity",0.5).attr("stroke-width","10px");
d3.select("#annotation").append("text").text("Clear").attr("class","Options_Lights").attr("id","LHtext").attr("text-anchor","middle").attr("x", 2000).attr("y", 2575).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.5).attr("stroke-opacity",0.5).attr("visibility","visible")
.on("mouseover",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#LHtext").transition().attr("fill-opacity",1.0).attr("stroke-opacity",1.0).delay(0).duration(750);
d3.select("#LHlight").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").attr("filter",function() {if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)){return "url(#NeonGlow)";}else{return null;}}).delay(0).duration(750);
//d3.select("#LEbulb").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("mouseout",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#LHtext").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(750);
d3.select("#LHlight").transition().attr("stroke-opacity",0.5).attr("stroke-width","10px").attr("filter",null).delay(0).duration(750);
//d3.select("#LEbulb").transition().attr("stroke-opacity",0.5).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("click",function() {
d3.selectAll(".Options_Circle").transition().attr("stroke","DimGray").attr("stroke-opacity",0.0).attr("r","42px").delay(0).duration(250);
d3.selectAll(".sequence").transition().attr("fill-opacity",0.0).attr("visibility","hidden").delay(0).duration(750);
for (var key in aminoacids) {
d3.select("#AminoacidsChoice_"+String(key)).transition().attr("fill","DimGray").attr("font-size","60px").delay(0).duration(250);
if (aminoacids[key][2] == "Clicked") {
aminoacids[key].pop();
} else {
}
}
});
d3.select("#annotation").append("text").text("entirE").attr("class","Options_Lights").attr("id","RHtext").attr("text-anchor","middle").attr("x", 4000).attr("y", 2575).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.5).attr("stroke-opacity",0.5).attr("visibility","visible")
.on("mouseover",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#RHtext").transition().attr("fill-opacity",1.0).attr("stroke-opacity",1.0).delay(0).duration(750);
d3.select("#RHlight").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").attr("filter",function() {if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)){return "url(#NeonGlow)";}else{return null;}}).delay(0).duration(750);
//d3.select("#REbulb").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("mouseout",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#RHtext").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(750);
d3.select("#RHlight").transition().attr("stroke-opacity",0.5).attr("stroke-width","10px").attr("filter",null).delay(0).duration(750);
//d3.select("#REbulb").transition().attr("stroke-opacity",0.5).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("click",function() {
d3.selectAll(".Options_Circle").transition().attr("stroke","Orange").attr("stroke-opacity",0.9).attr("r","42px").delay(0).duration(250);
d3.selectAll(".sequence").transition().attr("fill-opacity",1.0).attr("visibility","visible").delay(0).duration(750);
for (var key in aminoacids) {
d3.select("#AminoacidsChoice_"+String(key)).transition().attr("fill","Orange").attr("font-size","60px").delay(0).duration(250);
if (aminoacids[key][2] == "Clicked") {
} else {
aminoacids[key][2] = "Clicked";
}
}
});
//***Mass Selection***
//***Aminoacid Choice
//***FontControl***
var FontSpectrum = ["1.0x","1.5x","2x","2.5x","3x","3.5x","4.0x","4.5x","5.0x"];
var FontSpectrumCount = 0;
d3.select("#annotation").append("text").text(function() {return "Font-Size: "+String(FontSpectrum[FontSpectrumCount]);}).attr("class","Options").attr("id","FontChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2425).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.select("#annotation").append("path").attr("d","M 2600,2350 L 2575,2400 L 2600,2450 Z").attr("class","Options").attr("id","Ltriangle2").attr("fill","DimGray").attr("fill-opacity", 0.8)
.on("mouseover",function() {
d3.select("#Ltriangle2").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#Ltriangle2").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
if (FontSpectrumCount == 0) {
FontSpectrumCount = 8;
} else {
FontSpectrumCount = FontSpectrumCount - 1;
}
d3.select("#FontChoice").remove();
d3.select("#annotation").append("text").text(function() {return "Font-Size: "+String(FontSpectrum[FontSpectrumCount]);}).attr("class","Options").attr("id","FontChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2425).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.selectAll(".sequence").transition().attr("font-size",function() {return parseFloat(Or_Seq_Font_Size)*parseFloat(FontSpectrum[FontSpectrumCount]);}).delay(0).duration(500);
});
d3.select("#annotation").append("path").attr("d","M 3400,2350 L 3425,2400 L 3400,2450 Z").attr("class","Options").attr("id","Rtriangle2").attr("fill","DimGray").attr("fill-opacity", 0.8)
.on("mouseover",function() {
d3.select("#Rtriangle2").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#Rtriangle2").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
if (FontSpectrumCount == 8) {
FontSpectrumCount = 0;
} else {
FontSpectrumCount = FontSpectrumCount + 1;
}
d3.select("#FontChoice").remove();
d3.select("#annotation").append("text").text(function() {return "Font-Size: "+String(FontSpectrum[FontSpectrumCount]);}).attr("class","Options").attr("id","FontChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2425).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.selectAll(".sequence").transition().attr("font-size",function() {return parseFloat(Or_Seq_Font_Size)*parseFloat(FontSpectrum[FontSpectrumCount]);}).delay(0).duration(500);
});
//***FontControl***
//***ConservationControl***
var ConservationSpectrum = ["10","20","30","40","50","60","70","80","90","100"];
var ConservationSpectrumCount = 9;
var ConservationValues = [];
for (var i = 0;i<ids["con"].length;i++) {
var value = d3.select(ids["con"][i]).attr("id");
value = value.replace(/^.*_Conservation-Score_/,"");
value = parseFloat(value);
ConservationValues.push(value);
}
var Max_Con_Value = d3.max(ConservationValues);
d3.select("#annotation").append("text").text(function() {if (ConservationSpectrum[ConservationSpectrumCount] == "100") {return "All";} else {return "%"+String(100-ConservationSpectrum[ConservationSpectrumCount])+" max";}}).attr("class","Options").attr("id","ConsChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2137).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.select("#annotation").append("path").attr("d","M 2800,2075 L 2775,2125 L 2800,2175 Z").attr("class","Options").attr("id","Ltriangle3").attr("fill","DimGray").attr("fill-opacity", 0.8)
.on("mouseover",function() {
d3.select("#Ltriangle3").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#Ltriangle3").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
if (ConservationSpectrumCount == 9) {
ConservationSpectrumCount = 0;
} else {
ConservationSpectrumCount = ConservationSpectrumCount + 1;
}
d3.select("#ConsChoice").remove();
d3.select("#annotation").append("text").text(function() {if (ConservationSpectrum[ConservationSpectrumCount] == "100") {return "All";} else {return "%"+String(100-ConservationSpectrum[ConservationSpectrumCount])+" max";}}).attr("class","Options").attr("id","ConsChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2137).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible").transition().attr("fill-opacity",0.9).delay(0).duration(750);
var Cons_code = "";
for (var i=0;i<ids["con"].length;i++) {
var Cons_code_piece = 'd3.select(ids["con"]['+i+']).transition().attr("fill-opacity",function() {var value = ConservationValues['+i+']; var threshold = (100 - parseFloat(ConservationSpectrum[ConservationSpectrumCount]))/100*Max_Con_Value; if(value < threshold){return 0.0;}else{return 1.0;}}).attr("stroke-opacity",function() {var value = ConservationValues['+i+']; var threshold = (100 - parseFloat(ConservationSpectrum[ConservationSpectrumCount]))/100*Max_Con_Value; if(value < threshold){return 0.0;}else{return 1.0;}}).delay(0).duration(500);';
Cons_code = Cons_code+Cons_code_piece+" ";
}
eval(Cons_code);
});
d3.select("#annotation").append("path").attr("d","M 3200,2075 L 3225,2125 L 3200,2175 Z").attr("class","Options").attr("id","Rtriangle3").attr("fill","DimGray").attr("fill-opacity", 0.8)
.on("mouseover",function() {
d3.select("#Rtriangle3").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#Rtriangle3").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function() {
if (ConservationSpectrumCount == 0) {
ConservationSpectrumCount = 9;
} else {
ConservationSpectrumCount = ConservationSpectrumCount - 1;
}
d3.select("#ConsChoice").remove();
d3.select("#annotation").append("text").text(function() {if (ConservationSpectrum[ConservationSpectrumCount] == "100") {return "All";} else {return "%"+String(100-ConservationSpectrum[ConservationSpectrumCount])+" max";}}).attr("class","Options").attr("id","ConsChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2137).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible").transition().attr("fill-opacity",0.9).delay(0).duration(750);
var Cons_code = "";
for (var i=0;i<ids["con"].length;i++) {
var Cons_code_piece = 'd3.select(ids["con"]['+i+']).transition().attr("fill-opacity",function() {var value = ConservationValues['+i+']; var threshold = (100 - parseFloat(ConservationSpectrum[ConservationSpectrumCount]))/100*Max_Con_Value; if(value < threshold){return 0.0;}else{return 1.0;}}).attr("stroke-opacity",function() {var value = ConservationValues['+i+']; var threshold = (100 - parseFloat(ConservationSpectrum[ConservationSpectrumCount]))/100*Max_Con_Value; if(value < threshold){return 0.0;}else{return 1.0;}}).delay(0).duration(500);';
Cons_code = Cons_code+Cons_code_piece+" ";
}
eval(Cons_code);
});
//***ConservationControl***
//***Database Control***
var DropDownClickSnv = 0;
var DropDownClickTile = 0;
d3.select("#annotation").append("text").text("Snv").attr("class","Options_Lights").attr("id","LHtext2").attr("text-anchor","middle").attr("x", 2175).attr("y", 2600).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.5).attr("stroke-opacity",0.5).attr("visibility","visible")
.on("mouseover",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#LHtext2").transition().attr("fill-opacity",1.0).attr("stroke-opacity",1.0).delay(0).duration(750);
d3.select("#LIbulb").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("mouseout",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#LHtext2").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(750);
d3.select("#LIbulb").transition().attr("stroke-opacity",0.5).attr("stroke-width","12px").delay(0).duration(750);
}
});
d3.select("#annotation").append("path").attr("d","M 2110,2615 Q 2140,2640, 2170,2615 L 2140,2640 Z").attr("class","Options_Lights").attr("id","LIbulb").attr("fill","Orange").attr("fill-opacity", 0.0).attr("stroke","Orange").attr("stroke-opacity",0.5).attr("stroke-width","10px")
.on("mouseover",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#LHtext2").transition().attr("fill-opacity",1.0).attr("stroke-opacity",1.0).delay(0).duration(750);
d3.select("#LIbulb").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("mouseout",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#LHtext2").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(750);
d3.select("#LIbulb").transition().attr("stroke-opacity",0.5).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("click",function() {
if (DropDownClickSnv == 0) {
d3.select("#annotation").call(DropDownSnv);
} else {
d3.selectAll(".DropDownRectSnv").remove();
d3.selectAll(".DropDownTextSnv").remove();
}
if (DropDownClickSnv == 0) {
DropDownClickSnv = 1;
} else {
DropDownClickSnv = 0;
}
});
d3.select("#annotation").append("text").text("tilE").attr("class","Options_Lights").attr("id","RHtext2").attr("text-anchor","middle").attr("x", 3825).attr("y", 2600).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.5).attr("stroke-opacity",0.5).attr("visibility","visible")
.on("mouseover",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#RHtext2").transition().attr("fill-opacity",1.0).attr("stroke-opacity",1.0).delay(0).duration(750);
d3.select("#RIbulb").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("mouseout",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#RHtext2").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(750);
d3.select("#RIbulb").transition().attr("stroke-opacity",0.5).attr("stroke-width","12px").delay(0).duration(750);
}
});
d3.select("#annotation").append("path").attr("d","M 3880,2615 Q 3850,2640, 3820,2615 L 3850,2640 Z").attr("class","Options_Lights").attr("id","RIbulb").attr("fill","Orange").attr("fill-opacity", 0.0).attr("stroke","Orange").attr("stroke-opacity",0.5).attr("stroke-width","10px")
.on("mouseover",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#RHtext2").transition().attr("fill-opacity",1.0).attr("stroke-opacity",1.0).delay(0).duration(750);
d3.select("#RIbulb").transition().attr("stroke-opacity",1.0).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("mouseout",function() {
var HideMode = d3.select("#ShowOptions").attr("visibility");
if (HideMode == "hidden") {
d3.select("#RHtext2").transition().attr("fill-opacity",0.5).attr("stroke-opacity",0.5).delay(0).duration(750);
d3.select("#RIbulb").transition().attr("stroke-opacity",0.5).attr("stroke-width","12px").delay(0).duration(750);
}
})
.on("click",function() {
if (DropDownClickTile == 0) {
d3.select("#annotation").call(DropDownTile);
} else {
d3.selectAll(".DropDownRectTile").remove();
d3.selectAll(".DropDownTextTile").remove();
}
if (DropDownClickTile == 0) {
DropDownClickTile = 1;
} else {
DropDownClickTile = 0;
}
});
//***Database Control***
//***Conceal All Sequence***
d3.selectAll(".sequence").transition().attr("fill-opacity",0.0).attr("visibility","hidden").delay(0).duration(0);
//***Conceal All Sequence***
for (var i=0;i<ids["seq"].length;i++) {
var code_piece = 'd3.select(ids["seq"]['+i+']).on("mouseover", function () {d3.select("#annotation").append("text").text(function () {return d3.select(ids["seq"]['+i+']).attr("id").replace("seq_","").replace(/_/g," ");}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-250;} else {return coordinates[0]+250;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-250;} else {return coordinates[1]+250;}}).attr("font-family","sans-serif").attr("font-size","200px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select(".text2").transition().attr("fill-opacity",0.9).delay(500).duration(500);d3.select(ids["seq"]['+i+']).transition().attr("font-size", function() {return parseFloat(Or_Seq_Font_Size)*9;}).style("text-shadow",Neonizer(ids["seq"]['+i+'])).delay(100).duration(300);lotusFadein(ids["seq"]['+i+']);}).on("mouseout", function () {d3.select(".text2").remove();d3.select(ids["seq"]['+i+']).transition().attr("font-size",function() {return parseFloat(Or_Seq_Font_Size)*parseFloat(FontSpectrum[FontSpectrumCount]);}).style("text-shadow","none").delay(50).duration(300);lotusFadeout();});';
code = code+code_piece+" ";
}
for (var i=0;i<ids["scat"].length;i++) {
var code_piece = 'd3.select(ids["scat"]['+i+']).on("mouseover", function () {d3.select("#annotation").append("text").text(function () {return d3.select(ids["scat"]['+i+']).attr("id").replace("scat_","").replace(/_/g," ");}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-250;} else {return coordinates[0]+250;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-250;} else {return coordinates[1]+250;}}).attr("font-family","sans-serif").attr("font-size","200px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select("#annotation").append("text").text(function () {var ResidueNumber = ids["scat"]['+i+'].replace(/^.*scat_.*_/,"");return "identity: "+aminoacids[fasta_sorted[ResidueNumber-1]][0];}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-250;} else {return coordinates[0]+250;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-125;} else {return coordinates[1]+375;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.selectAll(".text2").transition().attr("fill-opacity",0.9).delay(500).duration(500);d3.select(ids["scat"]['+i+']).transition().attr("stroke-width",Or_Scat_Size/4).attr("stroke","Orange").delay(0).duration(500);}).on("mouseout", function () {d3.selectAll(".text2").remove();d3.select(ids["scat"]['+i+']).transition().attr("stroke-width",Or_Scat_Stroke_Width).attr("stroke",Or_Scat_Stroke_Color).delay(50).duration(300);});';
code = code+code_piece+" ";
}
for (var i=0;i<ids["con"].length;i++) {
var code_piece = 'd3.select(ids["con"]['+i+']).on("mouseover", function () {d3.select("#annotation").append("text").text(function () {return d3.select(ids["con"]['+i+']).attr("id").replace("_Con",", Con").replace(/_/g," ");}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-425;} else {return coordinates[0]+425;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-250;} else {return coordinates[1]+250;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select("#annotation").append("text").text(function () {var ClassOfSubject = d3.select(ids["con"]['+i+']).attr("class").split(" ")[0]; if (ClassOfSubject == null || ClassOfSubject==="allCons"){return "";}else{return "domain: "+String(ClassOfSubject.replace(/_/g," "));}}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-425;} else {return coordinates[0]+425;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-125;} else {return coordinates[1]+375;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");showNewHistogramValue(ids["con"]['+i+']);d3.selectAll(".text2").transition().attr("fill-opacity",0.9).delay(500).duration(500);d3.select(ids["con"]['+i+']).transition().style("stroke-width","20px").delay(0).duration(500);var ClassOfSubject = d3.select(ids["con"]['+i+']).attr("class").split(" ")[0];ClassOfSubject = "."+String(ClassOfSubject); if ((ClassOfSubject !== ".") && (ClassOfSubject !== ".allCons") && (ClassOfSubject != null)){d3.selectAll(ClassOfSubject).filter(function(){if("#"+String(d3.select(this).attr("id")) == ids["con"]['+i+']){return false;}else{return true;}}).attr("filter","url(#NeonGlow)");}}).on("mouseout", function () {var ClassOfSubject = d3.select(ids["con"]['+i+']).attr("class").split(" ")[0];ClassOfSubject = "."+String(ClassOfSubject); if ((ClassOfSubject !== ".") && (ClassOfSubject !== ".allCons") && (ClassOfSubject != null)){d3.selectAll(ClassOfSubject).attr("filter",null);}d3.selectAll(".text2").remove();d3.select(ids["con"]['+i+']).transition().style("stroke-width",Or_Con_Stroke_Width).delay(50).duration(300);}).on("click", function() { if ((ExtractionPane == "open") && (SetWhichPos != "none")){var Pos = parseInt(d3.select(ids["con"]['+i+']).attr("id").replace(/Residue_/i,"")); eval(SetWhichPos+" = "+String(Pos)); var selection = "#"+SetWhichPos; d3.select(selection).remove(); d3.select("#annotation").append("text").text(function () {return String(eval(SetWhichPos));}).attr("class","DropDownRectExtract").attr("id",SetWhichPos).attr("text-anchor","middle").attr("x", function() {if (SetWhichPos == "ExtractPosX"){return 2450;}else{return 2750;}}).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible").on("mouseover",function(){d3.select(selection).transition().attr("fill","Orange").attr("font-size",80).delay(0).duration(250);}).on("mouseout",function(){d3.select(selection).transition().attr("fill","LightGray").attr("font-size",60).delay(0).duration(250);}).on("click",function() {SetWhichPos = d3.select(this).attr("id");d3.select("#ExtractPosMessage").remove();d3.select("#annotation").append("text").text(function () {if (SetWhichPos == "ExtractPosX"){return "Select from the conservation track a start residue";}else{return "Select from the conservation track an end residue";}}).attr("class","DropDownRectExtract").attr("id","ExtractPosMessage").attr("text-anchor","middle").attr("x", 3000).attr("y", 3400).attr("font-family","Arial").attr("font-size","100px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select("#ExtractPosMessage").transition().attr("fill-opacity",0.5).delay(0).duration(750);}); d3.select("#ExtractPosMessage").remove(); SetWhichPos ="none";}});';
code = code+code_piece+" ";
}
for (var i=0;i<ids["mut"].length;i++) {
var code_piece = 'd3.select(ids["mut"]['+i+']).on("mouseover", function () {d3.select("#annotation").append("text").text(function () {return d3.select(ids["mut"]['+i+']).attr("id").replace(/_rsID.*/g,"").replace(/[A-Z]/,function() {var id = d3.select(ids["mut"]['+i+']).attr("id"); var first =id.substring(0,1); return aminoacids[first][0]+" ";}).replace(/[A-Z]$/,function () {var id = d3.select(ids["mut"]['+i+']).attr("id"); var id = id.replace(/_rsID.*/,"");var last = id.slice(-1);if (last != "X"){return " to "+aminoacids[last][0];}else{return " to Stop codon";}}) ;}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-500;} else {return coordinates[0]+500;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-200;} else {return coordinates[1]+200;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");returnPredictionScores(predictionDatabase,ids["mut"]['+i+']);d3.selectAll(".text2").transition().attr("fill-opacity",0.9).style("opacity",0.9).delay(500).duration(500);d3.select(ids["mut"]['+i+']).transition().attr("font-size", function () {return parseFloat(Or_Mut_Font_Size)*3;}).style("text-shadow",Neonizer(ids["mut"]['+i+'])).delay(100).duration(300);}).on("mouseout", function () {d3.selectAll(".text2").remove();d3.select(ids["mut"]['+i+']).transition().attr("font-size",Or_Mut_Font_Size).style("text-shadow","none").delay(50).duration(300);}).on("click",function() {var rsID = d3.select(ids["mut"]['+i+']).attr("id"); rsID = rsID.replace(/.*_rsID_rs/,"").replace(/_[1-9]+[0-9]*_[0-9]+$/,""); var link = String("http://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=")+ String(rsID); window.open(link);});';
code = code+code_piece+" ";
}
for (var i=0;i<ids["connector"].length;i++) {
var code_piece = 'd3.select(ids["connector"]['+i+']).on("mouseover", function () {d3.select("#annotation").append("text").text(function () {var IdOfConnectorText = d3.select(ids["connector"]['+i+']).attr("id"); IdOfConnectorText=IdOfConnectorText.replace("Connector_","").split("-"); if(IdOfConnectorText[0] == IdOfConnectorText[1]){return "Residue "+String(IdOfConnectorText[0]);}else{return "Residues "+String(IdOfConnectorText[0])+" to "+String(IdOfConnectorText[1]);}}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-250;} else {return coordinates[0]+250;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-250;} else {return coordinates[1]+250;}}).attr("font-family","sans-serif").attr("font-size","200px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select(".text2").transition().attr("fill-opacity",0.9).delay(500).duration(500);d3.select(ids["connector"]['+i+']).transition().attr("font-size", function() {return parseFloat(Or_Connector_Font_Size)*3;}).style("text-shadow",Neonizer(ids["connector"]['+i+'])).delay(100).duration(300);}).on("mouseout", function () {d3.select(".text2").remove();d3.select(ids["connector"]['+i+']).transition().attr("font-size",function() {return parseFloat(Or_Connector_Font_Size);}).style("text-shadow","none").delay(50).duration(300);});';
code = code+code_piece+" ";
}
for (var i=0;i<ids["tile"].length;i++) {
var id = d3.select(ids["tile"][i]).attr("id");
if (id.match(/sub/)) {
var code_piece = 'd3.select(ids["tile"]['+i+']).on("mouseover",function() {d3.select(ids["tile"]['+i+']).transition().style("stroke","Orange").style("stroke-width","10px").delay(0).duration(500); var cDNA_pos = parseFloat(d3.select(ids["tile"]['+i+']).attr("id").replace(/tile[0-9]*_/,"")); var protein_pos; if (cDNA_pos % 3 != 0) {protein_pos = parseInt(cDNA_pos/3);} else {protein_pos = parseInt(cDNA_pos/3)-1;} d3.select("#annotation").append("path").attr("d",function () {return "M "+String((parseFloat(Or_Tile_Coordinates['+i+']["TopLeftCornerx"])+parseFloat(Or_Tile_Coordinates['+i+']["TopRightCornerx"]))/2)+","+String((parseFloat(Or_Tile_Coordinates['+i+']["TopLeftCornery"])+parseFloat(Or_Tile_Coordinates['+i+']["TopRightCornery"]))/2)+" L "+String((parseFloat(Or_Tile_Coordinates['+i+']["TopLeftCornerx"])+parseFloat(Or_Tile_Coordinates['+i+']["TopRightCornerx"]))/2)+","+String((parseFloat(Or_Tile_Coordinates['+i+']["TopLeftCornery"])+parseFloat(Or_Tile_Coordinates['+i+']["TopRightCornery"]))/2);}).attr("id","TileLineToDestination").attr("class","TileLines").attr("stroke","Orange").attr("stroke-width","8px").attr("stroke-opacity",0.75); d3.select("#TileLineToDestination").transition().attr("d",function () {return "M "+String((parseFloat(Or_Tile_Coordinates['+i+']["TopLeftCornerx"])+parseFloat(Or_Tile_Coordinates['+i+']["TopRightCornerx"]))/2)+","+String((parseFloat(Or_Tile_Coordinates['+i+']["TopLeftCornery"])+parseFloat(Or_Tile_Coordinates['+i+']["TopRightCornery"]))/2)+" L "+String(3000+2250*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180))+","+String(3000-2250*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180));}).delay(0).duration(500); d3.select("#annotation").append("text").text(function () {return "Substitution at position "+String(protein_pos+1);}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-250;} else {return coordinates[0]+250;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-250;} else {return coordinates[1]+250;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select(".text2").transition().attr("fill-opacity",0.9).delay(500).duration(500);}).on("mouseout",function() {d3.select(ids["tile"]['+i+']).transition().style("stroke",Or_Tile_Stroke_Color['+i+']).style("stroke-width",Or_Tile_Stroke_Width['+i+']).delay(0).duration(500); d3.selectAll(".TileLines").remove(); d3.selectAll(".text2").remove();}).on("click",function() {var rsID = d3.select(ids["tile"]['+i+']).attr("tilersid"); rsID = rsID.replace(/^rs/,""); var link = String("http://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=")+ String(rsID); window.open(link);});';
code = code+code_piece+" ";
} else if (id.match(/in/)) {
var code_piece = 'd3.select(ids["tile"]['+i+']).on("mouseover",function() {d3.select(ids["tile"]['+i+']).transition().style("stroke","Orange").style("stroke-width","10px").delay(0).duration(500); var cDNA_pos = parseFloat(d3.select(ids["tile"]['+i+']).attr("id").replace(/tile[0-9]*_/,"")); var protein_pos; if (cDNA_pos % 3 != 0) {protein_pos = parseInt(cDNA_pos/3);} else {protein_pos = parseInt(cDNA_pos/3)-1;} var ChangeLength = parseInt(d3.select(ids["tile"]['+i+']).attr("id").replace(/tile[0-9]*_[0-9]*_/,"")); d3.select("#annotation").append("path").attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopLeftCornerx"]+","+Or_Tile_Coordinates['+i+']["TopLeftCornery"]+" L "+Or_Tile_Coordinates['+i+']["TopLeftCornerx"]+","+Or_Tile_Coordinates['+i+']["TopLeftCornery"];}).attr("id","TileLineToDestination1").attr("class","TileLines").attr("stroke","Orange").attr("stroke-width","8px").attr("stroke-opacity",0.75); d3.select("#annotation").append("path").attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopRightCornerx"]+","+Or_Tile_Coordinates['+i+']["TopRightCornery"]+" L "+Or_Tile_Coordinates['+i+']["TopRightCornerx"]+","+Or_Tile_Coordinates['+i+']["TopRightCornery"];}).attr("id","TileLineToDestination2").attr("class","TileLines").attr("stroke","Orange").attr("stroke-width","8px").attr("stroke-opacity",0.75);d3.select("#TileLineToDestination1").transition().attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopLeftCornerx"]+","+Or_Tile_Coordinates['+i+']["TopLeftCornery"]+" L "+String(3000+2250*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180))+","+String(3000-2250*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180));}).delay(0).duration(500); d3.select("#TileLineToDestination2").transition().attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopRightCornerx"]+","+Or_Tile_Coordinates['+i+']["TopRightCornery"]+" L "+String(3000+2250*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180))+","+String(3000-2250*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180));}).delay(0).duration(500); d3.select("#annotation").append("text").text(function () {return "Insertion of "+ChangeLength+" aa "+"at position "+String(protein_pos+1)+String(Or_Tile_FrameCharacter['+i+']);}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-250;} else {return coordinates[0]+250;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-250;} else {return coordinates[1]+250;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select(".text2").transition().attr("fill-opacity",0.9).delay(500).duration(500);}).on("mouseout",function() {d3.select(ids["tile"]['+i+']).transition().style("stroke",Or_Tile_Stroke_Color['+i+']).style("stroke-width",Or_Tile_Stroke_Width['+i+']).delay(0).duration(500); d3.selectAll(".TileLines").remove(); d3.selectAll(".text2").remove();}).on("click",function() {var rsID = d3.select(ids["tile"]['+i+']).attr("tilersid"); rsID = rsID.replace(/^rs/,""); var link = String("http://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=")+ String(rsID); window.open(link);});';
code = code+code_piece+" ";
} else if (id.match(/del/)) {
var code_piece = 'd3.select(ids["tile"]['+i+']).on("mouseover",function() {d3.select(ids["tile"]['+i+']).transition().style("stroke","Orange").style("stroke-width","10px").delay(0).duration(500); var cDNA_pos = parseFloat(d3.select(ids["tile"]['+i+']).attr("id").replace(/tile[0-9]*_/,"")); var protein_pos; if (cDNA_pos % 3 != 0) {protein_pos = parseInt(cDNA_pos/3);} else {protein_pos = parseInt(cDNA_pos/3)-1;} var ChangeLength = parseInt(d3.select(ids["tile"]['+i+']).attr("id").replace(/tile[0-9]*_[0-9]*_/,"")); d3.select("#annotation").append("path").attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopLeftCornerx"]+","+Or_Tile_Coordinates['+i+']["TopLeftCornery"]+" L "+Or_Tile_Coordinates['+i+']["TopLeftCornerx"]+","+Or_Tile_Coordinates['+i+']["TopLeftCornery"];}).attr("id","TileLineToDestination1").attr("class","TileLines").attr("stroke","Orange").attr("stroke-width","8px").attr("stroke-opacity",0.75); d3.select("#annotation").append("path").attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopRightCornerx"]+","+Or_Tile_Coordinates['+i+']["TopRightCornery"]+" L "+Or_Tile_Coordinates['+i+']["TopRightCornerx"]+","+Or_Tile_Coordinates['+i+']["TopRightCornery"];}).attr("id","TileLineToDestination2").attr("class","TileLines").attr("stroke","Orange").attr("stroke-width","8px").attr("stroke-opacity",0.75);d3.select("#TileLineToDestination1").transition().attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopLeftCornerx"]+","+Or_Tile_Coordinates['+i+']["TopLeftCornery"]+" L "+String(3000+2250*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180))+","+String(3000-2250*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*protein_pos))-CorrectionFactor*protein_pos)/180));}).delay(0).duration(500); d3.select("#TileLineToDestination2").transition().attr("d",function () {return "M "+Or_Tile_Coordinates['+i+']["TopRightCornerx"]+","+Or_Tile_Coordinates['+i+']["TopRightCornery"]+" L "+String(3000+2250*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(protein_pos+ChangeLength)))-CorrectionFactor*protein_pos)/180))+","+String(3000-2250*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(protein_pos+ChangeLength)))-CorrectionFactor*protein_pos)/180));}).delay(0).duration(500); d3.select("#annotation").append("text").text(function () {return "Deletion of "+ChangeLength+" aa "+"at position "+String(protein_pos+1)+String(Or_Tile_FrameCharacter['+i+']);}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-250;} else {return coordinates[0]+250;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-250;} else {return coordinates[1]+250;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");d3.select(".text2").transition().attr("fill-opacity",0.9).delay(500).duration(500);}).on("mouseout",function() {d3.select(ids["tile"]['+i+']).transition().style("stroke",Or_Tile_Stroke_Color['+i+']).style("stroke-width",Or_Tile_Stroke_Width['+i+']).delay(0).duration(500); d3.selectAll(".TileLines").remove(); d3.selectAll(".text2").remove();}).on("click",function() {var rsID = d3.select(ids["tile"]['+i+']).attr("tilersid"); rsID = rsID.replace(/^rs/,""); var link = String("http://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=")+ String(rsID); window.open(link);});';
code = code+code_piece+" ";
}
}
eval(code);
code = "completed";
//***Email and Logo***
var logo = "data:image/png;base64,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";
d3.select("#master").append("svg:image").attr("xlink:href",logo).attr("title","contact").attr("alt","contact").attr("x",25).attr("y",700).attr("width","500px").attr("height","282px").attr("id","logo").attr("style","opacity:0.4")
.on("mouseover",function() {
if(flash == 0) {
d3.select(this).transition().attr("style","outline:6px solid rgba(255,165,0,0.5); opacity:1.0;").delay(0).duration(250);
}
})
.on("mouseout",function() {
if(flash == 0) {
d3.select(this).transition().attr("style","outline:none; opacity:0.4;").delay(0).duration(250);
}
})
.on("click",function() {
if(flash == 0) {
window.open("mailto:ibrahim.tanyalcin@i-pv.org?subject= &body=");
}
});
//***Email and Logo***
//***Missense Link Control***
d3.select("#annotation").append("text").text("Hide missense links").attr("class","LinkControl").attr("id","MissenseLinkControl").attr("text-anchor","middle").attr("x", 290).attr("y", 400).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("mouseover",function() {
d3.select("#MissenseLinkControl").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#MissenseLinkControl").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click", function () {
d3.select("#MissenseLinkControl").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select("#MissenseLinkControl2").transition().attr("visibility","visible").delay(0).duration(0);
d3.select(document.body).select("#master").select("#plot3").selectAll("*").filter(function () {if (d3.select(this).attr("id")){return 0;}else{return 1;}}).each(function () {d3.select(this).transition().attr("fill-opacity",0.0).attr("stroke-opacity",0.0).delay(0).duration(750);});
});
d3.select("#annotation").append("text").text("Show missense links").attr("class","LinkControl").attr("id","MissenseLinkControl2").attr("text-anchor","middle").attr("x", 290).attr("y", 400).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","hidden")
.on("mouseover",function() {
d3.select("#MissenseLinkControl2").transition().attr("fill","Orange").delay(0).duration(0);
})
.on("mouseout",function() {
d3.select("#MissenseLinkControl2").transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click", function () {
d3.select("#MissenseLinkControl").transition().attr("visibility","visible").delay(0).duration(0);
d3.select("#MissenseLinkControl2").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select(document.body).select("#master").select("#plot3").selectAll("*").filter(function () {if (d3.select(this).attr("id")){return 0;}else{return 1;}}).each(function () {d3.select(this).transition().attr("fill-opacity",1.0).attr("stroke-opacity",1.0).delay(0).duration(750);});
});
//***Missense Link Control***
//***AminoAcidLength and Extract***
var ExtractionPane = "closed";
var ExtractPosX = 1;
var ExtractPosY = parseInt(fasta_sorted.length);
var ItemsPerLine = 50;
var SetWhichPos = "none";
var DropDownClickExtract = 0;
var ExtractRectCount = ["1","2","3"];
d3.select("#annotation").append("text").text(function() {return "length: "+String(fasta_sorted.length)+" aa";}).attr("class","Options").attr("id","OverviewLength").attr("text-anchor","middle").attr("x", 3000).attr("y", 2800).attr("font-family","Arial").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("mouseover",function() {
d3.select("#OverviewLength").transition().attr("font-size","120px").attr("fill","Orange").delay(0).duration(500);
d3.selectAll(".overviews").style("opacity",0);
})
.on("mouseout",function() {
d3.select("#OverviewLength").transition().attr("font-size","60px").attr("fill","DimGray").delay(0).duration(500);
d3.selectAll(".overviews").style("opacity",1);
})
.on("click",function() {
if (DropDownClickExtract == 0) {
//Close other open overview tabs
if (MarkPane === "open") {
d3.selectAll(".htmlElements").remove();
d3.selectAll(".DropDownRectMark").remove();
DropDownClickMark = 0;
MarkPane = "closed";
}
//Close other open overview tabs
d3.select("#annotation").call(DropDownExtract);
} else {
d3.selectAll(".DropDownRectExtract").remove();
ExtractionPane = "closed";
}
if (DropDownClickExtract == 0) {
DropDownClickExtract = 1;
} else {
DropDownClickExtract = 0;
}
});
//***AminoAcidLength and Extract***
//***Print***
var flash = 0;
d3.select("#annotation").append("text").text("Snapshot").attr("class","Print").attr("id","Snapshot").attr("text-anchor","middle").attr("x", 175).attr("y", 600).attr("font-family","Arial").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("mouseover",function() {
d3.selectAll(".Cell").remove();
d3.select("#annotation").append("path").attr("d", "M 550,450 L 550,450 L 550,450 L 550,450 L 550,450 L 550,450 L 550,450 L 550,450 L 550,450 L 550,450 L 550,450 Z").attr("class","Cell").attr("id","CellPhone").attr("fill-opacity",0.0).attr("stroke-width",10).attr("stroke","Orange");
d3.select("#CellPhone").transition().attr("d","M 550,450 L 500,450 Q 450,450, 450,500 L 450,700 Q 450,750, 500,750 L 550,750 L 600,750 Q 650,750, 650,700 L 650,500 Q 650,450 600,450 L 550,450 Z").delay(0).duration(500);
d3.select("#annotation").append("circle").attr("class","Cell").attr("id","CellPhoneCam").attr("cx",600).attr("cy",500).attr("r",10).attr("fill","DodgerBlue").attr("fill-opacity",0).attr("stroke","Orange").attr("stroke-opacity",0).attr("stroke-width",6);
d3.select("#CellPhoneCam").transition().attr("stroke-opacity",0.9).delay(500).duration(250);
d3.select("#Snapshot").transition().attr("font-size","80px").attr("fill","Orange").delay(0).duration(500);
})
.on("mouseout",function() {
d3.select("#Snapshot").transition().attr("font-size","60px").attr("fill","DimGray").delay(0).duration(500);
if (flash == 0) {
d3.selectAll(".Cell").remove();
} else {
d3.select("#logo").transition().attr("style","opacity:0.75;").delay(2000).duration(0);
var SetTimeOut = function () {
d3.selectAll(".Cell").remove();
flash = 0;
return true;
};
d3.timer(SetTimeOut,2000);
}
})
.on("click", function () {
d3.select("#logo").transition().attr("style","opacity:0;").delay(0).duration(0);
d3.select("#print_script").remove();
d3.select("#annotation").append("circle").attr("class","Cell").attr("id","CellPhoneFlash").attr("cx",350).attr("cy",450).attr("r",450).attr("fill","White").attr("fill-opacity",1).attr("stroke","Orange").attr("stroke-opacity",0).attr("stroke-width",6);
flash = 1;
var SetTimeOut = function() {
d3.select(document.head).append("head:script").attr("id","print_script").attr("type","text/javascript").attr("src","https://nytimes.github.io/svg-crowbar/svg-crowbar.js").attr("integrity","sha384-1inWUU7B2uXOPXdF+Jb2MzKQhEbzk277psmlvjiioy5z/iIJ6gqxfnvJKRhS8SKM").attr("crossorigin","anonymous");
return true;
};
d3.timer(SetTimeOut,250);
});
//***Print***
//***Subs***
//***This is for Aminoacid Property selection
function DropDown(selection) {
selection
.selectAll("rectanglesDropDown")
.data(AminoAcidProperties)
.enter()
.append("rect")
.attr("x",2700)
.attr("y",function (d,i) {return 2350+i*101;})
.attr("height",100)
.attr("width",600)
.attr("fill","DimGray")
.attr("fill-opacity",0.0)
.attr("stroke","DimGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownRect"+String(i);})
.attr("class","DropDownRect")
.on("mouseover",function(d,i) {
d3.select("#DropDownRect"+String(i)).transition().attr("fill","Gray").delay(0).duration(0);
})
.on("mouseout",function(d,i){
d3.select("#DropDownRect"+String(i)).transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function (d,i){
var selected = i;
AminoAcidPropertiesCount = i;
d3.select("#PropChoice").remove();
d3.select("#annotation").append("text").text(function(){return AminoAcidProperties[AminoAcidPropertiesCount];}).attr("class","Options").attr("id","PropChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2275).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("click",function() {
if (DropDownClick == 0) {
d3.select("#annotation").call(DropDown);
} else {
d3.selectAll(".DropDownRect").remove();
d3.selectAll(".DropDownText").remove();
}
if (DropDownClick == 0) {
DropDownClick = 1;
} else {
DropDownClick = 0;
}
});
d3.select("#PropChoice").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.selectAll(".scatter").data(ids["scat"]).each(function(d,i) {var ResidueNumber = d.replace(/^.*scat_.*_/,"");d3.select(d).transition().attr("fill-opacity",function (){var aminoacid = fasta_sorted[ResidueNumber-1];if(AminoAcidProperties[selected] == "All" || d.match(AminoAcidProperties[selected]) || aminoacids_OtherProperties[fasta_sorted[ResidueNumber-1]].some(function(x){return x.match(AminoAcidProperties[selected]);}) || (AminoAcidProperties[AminoAcidPropertiesCount] == "Sequence Display" && aminoacids[aminoacid][2] == "Clicked")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
WhatsClicked = [];
for (i=0;i<d3.keys(aminoacids).length;i++) {
if(aminoacids[d3.keys(aminoacids)[i]][2]=="Clicked") {
WhatsClicked.push(d3.keys(aminoacids)[i]);
}
}
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
});
d3.selectAll(".DropDownRect").data(AminoAcidProperties).each(function(d,i) {d3.select("#DropDownRect"+String(i)).transition("fadein").attr("fill-opacity",0.7).delay(function() {return (500/(AminoAcidProperties.length-1))*i;}).duration(500);});
selection
.selectAll("textsDropDown")
.data(AminoAcidProperties)
.enter()
.append("text")
.attr("x",3000)
.attr("y",function (d,i) {return 2425+i*100;})
.text(function(d,i) {return AminoAcidProperties[i];})
.attr("text-anchor","middle")
.attr("font-family","sans-serif")
.attr("font-size","55px")
.attr("fill","LightGray")
.attr("fill-opacity",0.0)
.attr("stroke","LightGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownText"+String(i);})
.attr("class","DropDownText")
.on("mouseover",function(d,i) {
d3.select("#DropDownRect"+String(i)).transition().attr("fill","Gray").delay(0).duration(0);
})
.on("mouseout",function(d,i){
d3.select("#DropDownRect"+String(i)).transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function (d,i){
var selected = i;
AminoAcidPropertiesCount = i;
d3.select("#PropChoice").remove();
d3.select("#annotation").append("text").text(function(){return AminoAcidProperties[AminoAcidPropertiesCount];}).attr("class","Options").attr("id","PropChoice").attr("text-anchor","middle").attr("x", 3000).attr("y", 2275).attr("font-family","sans-serif").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("click",function() {
if (DropDownClick == 0) {
d3.select("#annotation").call(DropDown);
} else {
d3.selectAll(".DropDownRect").remove();
d3.selectAll(".DropDownText").remove();
}
if (DropDownClick == 0) {
DropDownClick = 1;
} else {
DropDownClick = 0;
}
});
d3.select("#PropChoice").transition().attr("fill-opacity",0.9).delay(0).duration(750);
d3.selectAll(".scatter").data(ids["scat"]).each(function(d,i) {var ResidueNumber = d.replace(/^.*scat_.*_/,"");d3.select(d).transition().attr("fill-opacity",function (){var aminoacid = fasta_sorted[ResidueNumber-1];if(AminoAcidProperties[selected] == "All" || d.match(AminoAcidProperties[selected]) || aminoacids_OtherProperties[fasta_sorted[ResidueNumber-1]].some(function(x){return x.match(AminoAcidProperties[selected]);}) || (AminoAcidProperties[AminoAcidPropertiesCount] == "Sequence Display" && aminoacids[aminoacid][2] == "Clicked")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
WhatsClicked = [];
for (i=0;i<d3.keys(aminoacids).length;i++) {
if(aminoacids[d3.keys(aminoacids)[i]][2]=="Clicked") {
WhatsClicked.push(d3.keys(aminoacids)[i]);
}
}
//+++Dynamically Keeps Track of Clicked aminoacids AT THE TIME OF FEATURE SELECTION (either by clicking arrows or the dropdown) which changes the scatter track+++
});
d3.selectAll(".DropDownText").data(AminoAcidProperties).each(function(d,i) {d3.select("#DropDownText"+String(i)).transition("fadein").attr("fill-opacity",0.9).delay(function() {return (500/(AminoAcidProperties.length-1))*i;}).duration(500);});
}
//***This is for SNVs***
function DropDownSnv(selection) {
selection
.selectAll("rectanglesDropDownSnv")
.data(MutDB)
.enter()
.append("rect")
.attr("x",2100)
.attr("y",function (d,i) {return 2700+i*101;})
.attr("height",100)
.attr("width",600)
.attr("fill","DimGray")
.attr("fill-opacity",0.0)
.attr("stroke","DimGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownRectSnv"+String(i);})
.attr("class","DropDownRectSnv")
.on("mouseover",function(d,i) {
d3.select("#DropDownRectSnv"+String(i)).transition().attr("fill","Gray").delay(0).duration(0);
})
.on("mouseout",function(d,i){
d3.select("#DropDownRectSnv"+String(i)).transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function (d,i){
var selected = MutDB[i];
d3.selectAll(".mut").data(ids["mut"]).each(function(d,i) {var database_source = d3.select(ids["mut"][i]).attr("dbsource");var regexp = new RegExp(selected,"i");d3.select(d).transition().attr("fill-opacity",function (){if((database_source.match(regexp) || (selected == "All") || ((selected == "Stop")&&(d3.select(ids["mut"][i]).attr("id").match(/x/i))) || (selected.match(/synonymous/gi)&&(selected===synOrNonsyn(d))) || (selected==="pXtoY" && pXtoY(d)))&&(selected != "None")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
});
d3.selectAll(".DropDownRectSnv").data(MutDB).each(function(d,i) {d3.select("#DropDownRectSnv"+String(i)).transition("fadein").attr("fill-opacity",0.7).delay(function() {return (500/(MutDB.length))*i;}).duration(500);});
selection
.selectAll("textsDropDownSnv")
.data(MutDB)
.enter()
.append("text")
.attr("x",2400)
.attr("y",function (d,i) {return 2775+i*100;})
.text(function(d,i) {return MutDB[i];})
.attr("text-anchor","middle")
.attr("font-family","sans-serif")
.attr("font-size","55px")
.attr("fill","LightGray")
.attr("fill-opacity",0.0)
.attr("stroke","LightGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownTextSnv"+String(i);})
.attr("class","DropDownTextSnv")
.on("mouseover",function(d,i) {
d3.select("#DropDownRectSnv"+String(i)).transition().attr("fill","Gray").delay(0).duration(0);
})
.on("mouseout",function(d,i){
d3.select("#DropDownRectSnv"+String(i)).transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function (d,i){
var selected = MutDB[i];
d3.selectAll(".mut").data(ids["mut"]).each(function(d,i) {var database_source = d3.select(ids["mut"][i]).attr("dbsource");var regexp = new RegExp(selected,"i");d3.select(d).transition().attr("fill-opacity",function (){if((database_source.match(regexp) || (selected == "All") || ((selected == "Stop")&&(d3.select(ids["mut"][i]).attr("id").match(/x/i))) || (selected.match(/synonymous/gi)&&(selected===synOrNonsyn(d))) || (selected==="pXtoY" && pXtoY(d)))&&(selected != "None")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
});
d3.selectAll(".DropDownTextSnv").data(MutDB).each(function(d,i) {d3.select("#DropDownTextSnv"+String(i)).transition("fadein").attr("fill-opacity",0.9).delay(function() {return (500/(MutDB.length))*i;}).duration(500);});
}
//***This is for tiles***
function DropDownTile(selection) {
selection
.selectAll("rectanglesDropDownTile")
.data(TileDB)
.enter()
.append("rect")
.attr("x",3300)
.attr("y",function (d,i) {return 2700+i*101;})
.attr("height",100)
.attr("width",600)
.attr("fill","DimGray")
.attr("fill-opacity",0.0)
.attr("stroke","DimGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownRectTile"+String(i);})
.attr("class","DropDownRectTile")
.on("mouseover",function(d,i) {
d3.select("#DropDownRectTile"+String(i)).transition().attr("fill","Gray").delay(0).duration(0);
})
.on("mouseout",function(d,i){
d3.select("#DropDownRectTile"+String(i)).transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function (d,i){
var selected = TileDB[i];
d3.selectAll(".tile").data(ids["tile"]).each(function(d,i) {var database_source = d3.select(ids["tile"][i]).attr("dbsource");var id = d3.select(ids["tile"][i]).attr("id");var regexp = new RegExp(selected,"i");d3.select(d).transition().attr("fill-opacity",function (){if((database_source.match(regexp) || id.match(regexp) || (selected == "All"))&&(selected != "None")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
});
d3.selectAll(".DropDownRectTile").data(TileDB).each(function(d,i) {d3.select("#DropDownRectTile"+String(i)).transition("fadein").attr("fill-opacity",0.7).delay(function() {return (500/(TileDB.length))*i;}).duration(500);});
selection
.selectAll("textsDropDownTile")
.data(TileDB)
.enter()
.append("text")
.attr("x",3600)
.attr("y",function (d,i) {return 2775+i*100;})
.text(function(d,i) {return TileDB[i];})
.attr("text-anchor","middle")
.attr("font-family","sans-serif")
.attr("font-size","55px")
.attr("fill","LightGray")
.attr("fill-opacity",0.0)
.attr("stroke","LightGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownTextTile"+String(i);})
.attr("class","DropDownTextTile")
.on("mouseover",function(d,i) {
d3.select("#DropDownRectTile"+String(i)).transition().attr("fill","Gray").delay(0).duration(0);
})
.on("mouseout",function(d,i){
d3.select("#DropDownRectTile"+String(i)).transition().attr("fill","DimGray").delay(0).duration(0);
})
.on("click",function (d,i){
var selected = TileDB[i];
d3.selectAll(".tile").data(ids["tile"]).each(function(d,i) {var database_source = d3.select(ids["tile"][i]).attr("dbsource");var id = d3.select(ids["tile"][i]).attr("id");var regexp = new RegExp(selected,"i");d3.select(d).transition().attr("fill-opacity",function (){if((database_source.match(regexp) || id.match(regexp) || (selected == "All"))&&(selected != "None")){return 1.0;} else {return 0.0;}}).delay(0).duration(750);});
});
d3.selectAll(".DropDownTextTile").data(TileDB).each(function(d,i) {d3.select("#DropDownTextTile"+String(i)).transition("fadein").attr("fill-opacity",0.9).delay(function() {return (500/(TileDB.length))*i;}).duration(500);});
}
//***This is for sequence extraction***
function DropDownExtract(selection) {
ExtractionPane = "open";
var FeatureHash = {"Fasta":'fasta_sorted',"Conservation":'ids["con"]',"SNVs":'ids["mut"]',"Feature":'ids["scat"]',"cDNA":'cdna',"bases":'cdna'};
var SelectedFeatureNumber = 0;
selection
.selectAll("rectanglesDropDownExtract")
.data(ExtractRectCount)
.enter()
.append("rect")
.attr("width",function(d,i) {return 1300-i*1300/Math.pow(GoldenRatio,2)})
.attr("height",100)
.attr("x",function(d,i) {return 3000-(1300-i*1300/Math.pow(GoldenRatio,2))/2;})
.attr("y",function (d,i) {return 2850+i*101;})
//here I add some attr to make the corners rounded
.attr("rx",15)
.attr("ry",15)
//here I add some attr to make the corners rounded
.attr("fill","DimGray")
.attr("fill-opacity",0.0)
.attr("stroke","DimGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownRectExtract"+String(i);})
.attr("class","DropDownRectExtract")
/*.on("mouseover",function(d,i) {
d3.select("#DropDownRectExtract"+String(i)).transition().attr("fill","Gray").delay(0).duration(0);
})
.on("mouseout",function(d,i){
d3.select("#DropDownRectExtract"+String(i)).transition().attr("fill","DimGray").delay(0).duration(0);
})*/;
d3.selectAll(".DropDownRectExtract").data(ExtractRectCount).each(function(d,i) {d3.select("#DropDownRectExtract"+String(i)).transition().attr("fill-opacity",0.9).delay(0).duration(100);});
d3.select("#annotation").append("text").text("Extract").attr("class","DropDownRectExtract").attr("id","Extract").attr("text-anchor","start").attr("x", 2600).attr("y", 3025).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("mouseover", function() {
d3.select(this).transition().attr("fill","Orange").attr("font-size",80).delay(0).duration(250);
})
.on("mouseout", function() {
d3.select(this).transition().attr("fill","LightGray").attr("font-size",60).delay(0).duration(250);
})
.on("click",function() {
if (ExtractPosX < ExtractPosY) {
var TheOutput = "";
var SelectedFeature = eval(FeatureHash[d3.keys(FeatureHash)[SelectedFeatureNumber]]);
var FileName = String(d3.keys(FeatureHash)[SelectedFeatureNumber])+".txt";
var HeaderExtract = "";
if (String(d3.keys(FeatureHash)[SelectedFeatureNumber]) == "Feature") {
if (String(AminoAcidProperties[AminoAcidPropertiesCount]) == "Sequence Display") {
var WhatsOnDisplay = "("+WhatsClicked.join()+")";
HeaderExtract = HeaderExtract + ">Start: "+String(ExtractPosX)+",End: "+String(ExtractPosY)+",Feature: "+String(AminoAcidProperties[AminoAcidPropertiesCount])+WhatsOnDisplay+",+ = match,- = no_match,:\n";
} else {
HeaderExtract = HeaderExtract + ">Start: "+String(ExtractPosX)+",End: "+String(ExtractPosY)+",Feature: "+String(AminoAcidProperties[AminoAcidPropertiesCount])+",+ = match,- = no_match,:\n";
}
} else {
HeaderExtract = HeaderExtract + ">Start: "+String(ExtractPosX)+",End: "+String(ExtractPosY)+","+String(d3.keys(FeatureHash)[SelectedFeatureNumber])+":\n";
}
TheOutput = TheOutput+HeaderExtract;
if (String(d3.keys(FeatureHash)[SelectedFeatureNumber]) == "Fasta") {
for (var i = ExtractPosX;i<=ExtractPosY;i++) {
TheOutput = TheOutput + fasta_sorted[i-1];
if ((i-ExtractPosX+1) % ItemsPerLine == 0) {
TheOutput = TheOutput + "\n";
}
}
} else if (String(d3.keys(FeatureHash)[SelectedFeatureNumber]) == "Conservation") {
for (var i = ExtractPosX;i<=ExtractPosY;i++) {
var MatchedElement;
for (var j = 0;j<ids["con"].length;j++) {
var ResidueNumber = d3.select(ids["con"][j]).attr("id");
ResidueNumber = parseInt(ResidueNumber.replace(/Residue_/i,""));
if (ResidueNumber == i) {
MatchedElement = j;
break;
}
}
TheOutput = TheOutput + String(parseInt(d3.select(ids["con"][MatchedElement]).attr("id").replace(/.*Conservation-Score_/i,""))) + ",";
if ((i-ExtractPosX+1) % ItemsPerLine == 0) {
TheOutput = TheOutput + "\n";
}
}
} else if (String(d3.keys(FeatureHash)[SelectedFeatureNumber]) == "SNVs") {
var MatchedElements = [];
for (var i = ExtractPosX;i<=ExtractPosY;i++) {
for (var j = 0;j<ids["mut"].length;j++) {
var ResidueNumber = d3.select(ids["mut"][j]).attr("id");
var Mutation = String(ResidueNumber.replace(/_.*$/ig,""));
ResidueNumber = parseInt(ResidueNumber.replace(/[A-Z]/i,""));
if (ResidueNumber == i) {
MatchedElements.push(Mutation);
}
}
}
for (var k = 1;k<=MatchedElements.length;k++) {
TheOutput = TheOutput + String(MatchedElements[k-1]) + ",";
if (k % ItemsPerLine == 0) {
TheOutput = TheOutput + "\n";
}
}
} else if (String(d3.keys(FeatureHash)[SelectedFeatureNumber]) == "Feature") {
for (var i = ExtractPosX;i<=ExtractPosY;i++) {
var MatchedElement;
for (var j = 0;j<ids["scat"].length;j++) {
var ResidueNumber = d3.select(ids["scat"][j]).attr("id");
ResidueNumber = parseInt(ResidueNumber.replace(/.*_/ig,""));
if (ResidueNumber == i) {
MatchedElement = j;
break;
}
}
var PlusOrMinus = parseInt(d3.select(ids["scat"][MatchedElement]).attr("fill-opacity"));
if (PlusOrMinus == 0) {
PlusOrMinus = "-";
} else {
PlusOrMinus = "+";
}
TheOutput = TheOutput + PlusOrMinus;
if ((i-ExtractPosX+1) % ItemsPerLine == 0) {
TheOutput = TheOutput + "\n";
}
}
} else if (String(d3.keys(FeatureHash)[SelectedFeatureNumber]) == "cDNA") {
for (var i = ExtractPosX;i<=ExtractPosY;i++) {
TheOutput = TheOutput + cdna[(i-1)*3] + cdna[(i-1)*3+1] + cdna[(i-1)*3+2];
if ((i-ExtractPosX+1)*3 % (ItemsPerLine*3) == 0) {
TheOutput = TheOutput + "\n";
}
}
} else if (String(d3.keys(FeatureHash)[SelectedFeatureNumber]) == "bases") {
for (var i = ExtractPosX,baseCounter = 1,AAcap = ExtractPosX;AAcap<=ExtractPosY;baseCounter++) {
TheOutput = TheOutput + cdna[(i-1)*3+baseCounter-1];
if (baseCounter % ItemsPerLine == 0) {
TheOutput = TheOutput + "\n";
}
if (baseCounter % 3 == 0) {
AAcap++;
}
}
}
download(TheOutput,FileName,"text/plain");
}
});
d3.select("#annotation").append("path").attr("d","M 2900,2975 L 2850,3000 L 2900,3025 Z").attr("class","DropDownRectExtract").attr("id","LExtractChoiceTriangle").attr("fill","LightGray").attr("fill-opacity", 0.9)
.on("mouseover", function() {
d3.select("#LExtractChoiceTriangle").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout",function() {
d3.select("#LExtractChoiceTriangle").transition().attr("fill","LightGray").delay(0).duration(250);
})
.on("click", function () {
d3.select("#ExtractChoice").remove();
if (SelectedFeatureNumber == 0) {
SelectedFeatureNumber = 5;
} else {
SelectedFeatureNumber = SelectedFeatureNumber - 1;
}
d3.select("#annotation").append("text").text(function () {return d3.keys(FeatureHash)[SelectedFeatureNumber];}).attr("class","DropDownRectExtract").attr("id","ExtractChoice").attr("text-anchor","middle").attr("x", 3113).attr("y", 3025).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ExtractChoice").transition().attr("fill-opacity",0.9).delay(0).duration(750);
});
d3.select("#annotation").append("path").attr("d","M 3325,2975 L 3375,3000 L 3325,3025 Z").attr("class","DropDownRectExtract").attr("id","RExtractChoiceTriangle").attr("fill","LightGray").attr("fill-opacity", 0.9)
.on("mouseover", function() {
d3.select("#RExtractChoiceTriangle").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout",function() {
d3.select("#RExtractChoiceTriangle").transition().attr("fill","LightGray").delay(0).duration(250);
})
.on("click", function () {
d3.select("#ExtractChoice").remove();
if (SelectedFeatureNumber == 5) {
SelectedFeatureNumber = 0;
} else {
SelectedFeatureNumber = SelectedFeatureNumber + 1;
}
d3.select("#annotation").append("text").text(function () {return d3.keys(FeatureHash)[SelectedFeatureNumber];}).attr("class","DropDownRectExtract").attr("id","ExtractChoice").attr("text-anchor","middle").attr("x", 3113).attr("y", 3025).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ExtractChoice").transition().attr("fill-opacity",0.9).delay(0).duration(750);
});
d3.select("#annotation").append("text").text(function () {return d3.keys(FeatureHash)[SelectedFeatureNumber];}).attr("class","DropDownRectExtract").attr("id","ExtractChoice").attr("text-anchor","middle").attr("x", 3113).attr("y", 3025).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
//d3.select("#annotation").append("text").text("pos").attr("class","DropDownRectExtract").attr("text-anchor","middle").attr("x", 2400).attr("y", 2925).attr("font-family","Arial").attr("font-size","30px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text(function () {return String(ExtractPosX);}).attr("class","DropDownRectExtract").attr("id","ExtractPosX").attr("text-anchor","middle").attr("x", 2450).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("mouseover", function () {
d3.select("#ExtractPosX").transition().attr("fill","Orange").attr("font-size", 80).delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#ExtractPosX").transition().attr("fill","LightGray").attr("font-size", 60).delay(0).duration(250);
})
.on("click", function () {
SetWhichPos = 'ExtractPosX';
d3.select("#ExtractPosMessage").remove();
d3.select("#annotation").append("text").text("Select from the conservation track a start residue").attr("class","DropDownRectExtract").attr("id","ExtractPosMessage").attr("text-anchor","middle").attr("x", 3000).attr("y", 3400).attr("font-family","Arial").attr("font-size","100px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ExtractPosMessage").transition().attr("fill-opacity",0.9).delay(0).duration(750);
});
d3.select("#annotation").append("text").text("to").attr("class","DropDownRectExtract").attr("text-anchor","middle").attr("x", 2600).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text(function () {return String(ExtractPosY);}).attr("class","DropDownRectExtract").attr("id","ExtractPosY").attr("text-anchor","middle").attr("x", 2750).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("mouseover", function () {
d3.select("#ExtractPosY").transition().attr("fill","Orange").attr("font-size", 80).delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#ExtractPosY").transition().attr("fill","LightGray").attr("font-size", 60).delay(0).duration(250);
})
.on("click", function () {
SetWhichPos = 'ExtractPosY';
d3.select("#ExtractPosMessage").remove();
d3.select("#annotation").append("text").text("Select from the conservation track an end residue").attr("class","DropDownRectExtract").attr("id","ExtractPosMessage").attr("text-anchor","middle").attr("x", 3000).attr("y", 3400).attr("font-family","Arial").attr("font-size","100px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ExtractPosMessage").transition().attr("fill-opacity",0.9).delay(0).duration(750);
});
d3.select("#annotation").append("path").attr("d","M 2975,2875 L 2925,2900 L 2975,2925 Z").attr("class","DropDownRectExtract").attr("id","LItemPerLineTriangle1").attr("fill","LightGray").attr("fill-opacity", 0.9)
.on("mouseover", function () {
d3.select("#LItemPerLineTriangle1").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#LItemPerLineTriangle1").transition().attr("fill","LightGray").delay(0).duration(250);
})
.on("click",function () {
if (ItemsPerLine -1 < 1) {
ItemsPerLine = 100;
} else {
ItemsPerLine = ItemsPerLine -1;
}
d3.select("#ItemsPerLine").remove();
d3.select("#annotation").append("text").text(function () {return String(ItemsPerLine);}).attr("class","DropDownRectExtract").attr("id","ItemsPerLine").attr("text-anchor","middle").attr("x", 3050).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ItemsPerLine").transition().attr("fill-opacity",0.9).delay(0).duration(250);
});
d3.select("#annotation").append("path").attr("d","M 2925,2875 L 2875,2900 L 2925,2925 Z").attr("class","DropDownRectExtract").attr("id","LItemPerLineTriangle2").attr("fill","LightGray").attr("fill-opacity", 0.9)
.on("mouseover", function () {
d3.select("#LItemPerLineTriangle2").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#LItemPerLineTriangle2").transition().attr("fill","LightGray").delay(0).duration(250);
})
.on("click",function () {
if (ItemsPerLine - 10 < 1) {
ItemsPerLine = 100;
} else {
ItemsPerLine = ItemsPerLine -10;
}
d3.select("#ItemsPerLine").remove();
d3.select("#annotation").append("text").text(function () {return String(ItemsPerLine);}).attr("class","DropDownRectExtract").attr("id","ItemsPerLine").attr("text-anchor","middle").attr("x", 3050).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ItemsPerLine").transition().attr("fill-opacity",0.9).delay(0).duration(250);
});
d3.select("#annotation").append("text").text(function () {return String(ItemsPerLine);}).attr("class","DropDownRectExtract").attr("id","ItemsPerLine").attr("text-anchor","middle").attr("x", 3050).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("path").attr("d","M 3125,2875 L 3175,2900 L 3125,2925 Z").attr("class","DropDownRectExtract").attr("id","RItemPerLineTriangle1").attr("fill","LightGray").attr("fill-opacity", 0.9)
.on("mouseover", function () {
d3.select("#RItemPerLineTriangle1").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#RItemPerLineTriangle1").transition().attr("fill","LightGray").delay(0).duration(250);
})
.on("click",function () {
if (ItemsPerLine + 1 > 100) {
ItemsPerLine = 1;
} else {
ItemsPerLine = ItemsPerLine +1;
}
d3.select("#ItemsPerLine").remove();
d3.select("#annotation").append("text").text(function () {return String(ItemsPerLine);}).attr("class","DropDownRectExtract").attr("id","ItemsPerLine").attr("text-anchor","middle").attr("x", 3050).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ItemsPerLine").transition().attr("fill-opacity",0.9).delay(0).duration(250);
});
d3.select("#annotation").append("path").attr("d","M 3175,2875 L 3225,2900 L 3175,2925 Z").attr("class","DropDownRectExtract").attr("id","RItemPerLineTriangle2").attr("fill","LightGray").attr("fill-opacity", 0.9)
.on("mouseover", function () {
d3.select("#RItemPerLineTriangle2").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#RItemPerLineTriangle2").transition().attr("fill","LightGray").delay(0).duration(250);
})
.on("click",function () {
if (ItemsPerLine + 10 > 100) {
ItemsPerLine = 1;
} else {
ItemsPerLine = ItemsPerLine +10;
}
d3.select("#ItemsPerLine").remove();
d3.select("#annotation").append("text").text(function () {return String(ItemsPerLine);}).attr("class","DropDownRectExtract").attr("id","ItemsPerLine").attr("text-anchor","middle").attr("x", 3050).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#ItemsPerLine").transition().attr("fill-opacity",0.9).delay(0).duration(250);
});
d3.select("#annotation").append("text").text("items per line").attr("class","DropDownRectExtract").attr("text-anchor","middle").attr("x", 3450).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("Graph").attr("class","DropDownRectExtract").attr("id","Graph").attr("text-anchor","start").attr("x", 2900).attr("y", 3126).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible")
.on("mouseover", function () {
d3.select(this).transition().attr("font-size",80).attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select(this).transition().attr("font-size",60).attr("fill","LightGray").delay(0).duration(250);
})
.on("click", function () {
if (GraphOpen == "no") {
d3.select("annotation").call(InsertGraph,[GraphWdefault,GraphHdefault,2000,2375]);
} else {
d3.select("#GraphSvg").remove();
GraphOpen = "no";
GraphHnew = GraphHdefault;
GraphWnew = GraphWdefault;
GraphNewLocation = [2000,2375];
}
});
}
//***Function for Graphpad
function InsertGraph() {
GraphData = [];
var Parameters = String(arguments[1]);
Parameters = Parameters.split(",");
GraphOpen = "yes";
var GraphPadding = Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*50;
var GraphW = parseInt(eval(Parameters[0]));
var GraphH = parseInt(eval(Parameters[1]));
d3.select("#annotation").append("svg").attr("id","GraphSvg").attr("x",function () {return parseInt(Parameters[2]);}).attr("y",function() {return parseInt(Parameters[3]);}).attr("width",GraphW).attr("height",GraphH).attr("draggable","true").attr("ondragstart","dragStart(event,'#GraphSvg')").attr("ondrag","dragMe(event,'#GraphSvg')").attr("ondragend","dragEnd(event,'#GraphSvg')").attr("onmouseover","hideOrshowhtmlElements('0')").attr("onmouseout","hideOrshowhtmlElements('1')");
d3.select("#GraphSvg").append("rect").attr("id","GraphBackgroundRect").attr("x",0).attr("y",0).attr("width",GraphW).attr("height",GraphH).attr("fill","DimGray").attr("fill-opacity",0.5);
d3.select("#GraphSvg").append("rect").attr("id","GraphInnerRect").attr("x",GraphPadding).attr("y",GraphPadding).attr("width",GraphW-2*GraphPadding).attr("height",GraphH-2*GraphPadding).attr("fill","LightGray").attr("fill-opacity",0.5);
d3.select("#GraphSvg").append("path").attr("id","GraphVerticalLine").attr("d",function() {return "M "+String(2*GraphPadding)+","+String(GraphPadding)+" L "+String(2*GraphPadding)+","+String(GraphH-GraphPadding);}).attr("stroke","DimGray").attr("stroke-width",6);
d3.select("#GraphSvg").append("path").attr("id","GraphHorizontalLine").attr("d",function() {return "M "+String(2*GraphPadding)+","+String(GraphH/2)+" L "+String(GraphW-GraphPadding)+","+String(GraphH/2);}).attr("stroke","DimGray").attr("stroke-width",6);
d3.select("#GraphSvg").append("path").attr("id","GraphQuattro").attr("d",function() {return "M "+String(2*GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*1)+" L "+String(GraphW-GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*1);}).attr("stroke","DimGray").attr("stroke-width",4).attr("stroke-dasharray","10,10");
d3.select("#GraphSvg").append("path").attr("id","GraphDouble").attr("d",function() {return "M "+String(2*GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*2)+" L "+String(GraphW-GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*2);}).attr("stroke","DimGray").attr("stroke-width",4).attr("stroke-dasharray","10,10");
d3.select("#GraphSvg").append("path").attr("id","GraphHalf").attr("d",function() {return "M "+String(2*GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*4)+" L "+String(GraphW-GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*4);}).attr("stroke","DimGray").attr("stroke-width",4).attr("stroke-dasharray","10,10");
d3.select("#GraphSvg").append("path").attr("id","GraphQuarter").attr("d",function() {return "M "+String(2*GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*5)+" L "+String(GraphW-GraphPadding)+","+String(GraphPadding+(GraphH/2-GraphPadding)/3*5);}).attr("stroke","DimGray").attr("stroke-width",4).attr("stroke-dasharray","10,10");
d3.select("#GraphSvg").append("text").text("x").attr("id","GraphClose").attr("x",GraphW*0.98).attr("y",GraphPadding*0.9).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*60;}).attr("fill","DodgerBlue")
.on("mouseover", function () {
d3.select("#GraphClose").transition().attr("fill", "Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#GraphClose").transition().attr("fill", "DodgerBlue").delay(0).duration(250);
})
.on("click", function () {
d3.select("#GraphSvg").remove();
GraphOpen = "no";
GraphHnew = GraphHdefault;
GraphWnew = GraphWdefault;
GraphNewLocation = [2000,2375];
//Reveal the Tabs when graph closed
hideOrshowhtmlElements ("1");
//Reveal the Tabs when graph closed
});
d3.select("#GraphSvg").append("text").text("relocate").attr("id","GraphRelocate").attr("x",GraphW*0.05).attr("y",GraphPadding*0.9).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*40;}).attr("fill","DodgerBlue")
.on("mouseover", function () {
MouseOut = 0;
d3.select("#GraphRelocate").transition().attr("fill", "Orange").delay(0).duration(250);
})
.on("mouseout", function () {
MouseOut = 1;
d3.select("#GraphRelocate").transition().attr("fill", "DodgerBlue").delay(0).duration(250);
})
.on("click", function () {
Relocate = 1;
});
d3.select("#GraphSvg").append("text").text("refresh").attr("id","GraphRefresh").attr("x",GraphW*0.15).attr("y",GraphPadding*0.9).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*40;}).attr("fill","DodgerBlue")
.on("mouseover", function () {
d3.select("#GraphRefresh").transition().attr("fill", "Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#GraphRefresh").transition().attr("fill", "DodgerBlue").delay(0).duration(250);
})
.on("click", function () {
d3.select("#GraphSvg").remove();
d3.select("annotation").call(InsertGraph,[GraphWnew,GraphHnew,GraphNewLocation[0],GraphNewLocation[1]]);
});
d3.select("#GraphSvg").append("text").text("+").attr("id","GraphEnlarge").attr("x",GraphW*0.95).attr("y",GraphPadding*0.9).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*60;}).attr("fill","DodgerBlue")
.on("mouseover", function () {
d3.select("#GraphEnlarge").transition().attr("fill", "Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#GraphEnlarge").transition().attr("fill", "DodgerBlue").delay(0).duration(250);
})
.on("click", function () {
GraphWnew = GraphWnew*1.25;
GraphHnew = GraphHnew*1.25;
d3.select("#GraphSvg").remove();
d3.select("annotation").call(InsertGraph,[GraphWnew,GraphHnew,GraphNewLocation[0],GraphNewLocation[1]]);
});
d3.select("#GraphSvg").append("text").text("-").attr("id","GraphMinimize").attr("x",GraphW*0.92).attr("y",GraphPadding*0.9).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*60;}).attr("fill","DodgerBlue")
.on("mouseover", function () {
d3.select("#GraphMinimize").transition().attr("fill", "Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select("#GraphMinimize").transition().attr("fill", "DodgerBlue").delay(0).duration(250);
})
.on("click", function () {
GraphWnew = GraphWnew*0.8;
GraphHnew = GraphHnew*0.8;
d3.select("#GraphSvg").remove();
d3.select("annotation").call(InsertGraph,[GraphWnew,GraphHnew,GraphNewLocation[0],GraphNewLocation[1]]);
});
d3.select("#GraphSvg").append("text").text(function () {return String(GraphWindowSize)+"AA";}).attr("id","GraphWindowSizeIndicator").attr("x",GraphWnew*0.5).attr("y",GraphPadding*0.8).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*50;}).attr("fill","DodgerBlue");
d3.select("#GraphSvg").append("path").attr("id","GraphWindowSizeLTriangle").attr("d",function() {return "M "+String(GraphWnew*0.5-Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*100)+","+String(GraphPadding*0.2)+" L "+String(GraphWnew*0.5-Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*125)+","+String(GraphPadding*0.5)+" L"+String(GraphWnew*0.5-Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*100)+","+String(GraphPadding*0.8)+" Z";}).attr("stroke","DodgerBlue").attr("stroke-width",0).attr("fill","DodgerBlue").attr("fill-opacity",0.9)
.on("mouseover", function() {
d3.select(this).transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function() {
d3.select(this).transition().attr("fill","DodgerBlue").delay(0).duration(250);
})
.on("click", function() {
if (GraphWindowSize > 10) {
GraphWindowSize = GraphWindowSize-10;
} else {
GraphWindowSize = 100;
}
d3.select("#GraphSvg").remove();
d3.select("annotation").call(InsertGraph,[GraphWnew,GraphHnew,GraphNewLocation[0],GraphNewLocation[1]]);
});
d3.select("#GraphSvg").append("path").attr("id","GraphWindowSizeRTriangle").attr("d",function() {return "M "+String(GraphWnew*0.5+Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*100)+","+String(GraphPadding*0.2)+" L "+String(GraphWnew*0.5+Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*125)+","+String(GraphPadding*0.5)+" L"+String(GraphWnew*0.5+Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*100)+","+String(GraphPadding*0.8)+" Z";}).attr("stroke","DodgerBlue").attr("stroke-width",0).attr("fill","DodgerBlue").attr("fill-opacity",0.9)
.on("mouseover", function() {
d3.select(this).transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function() {
d3.select(this).transition().attr("fill","DodgerBlue").delay(0).duration(250);
})
.on("click", function () {
if (GraphWindowSize < 100) {
GraphWindowSize = GraphWindowSize+10;
} else {
GraphWindowSize = 10;
}
d3.select("#GraphSvg").remove();
d3.select("annotation").call(InsertGraph,[GraphWnew,GraphHnew,GraphNewLocation[0],GraphNewLocation[1]]);
});
//***When you click on Graph, what is clicked on the sequence is noted. If nothing is chosen, there is nothing to show. This is necessary due to the fact that when "Clicked" items are 0 and the feature count is 0, that graph point will be 0 instead of -3 (nothing on sequence, but feature != 0) which makes a spike.
var WhatsClickedSequence = [];
for (i=0;i<d3.keys(aminoacids).length;i++) {
if(aminoacids[d3.keys(aminoacids)[i]][2]=="Clicked") {
WhatsClickedSequence.push(d3.keys(aminoacids)[i]);
}
}
//***When you click on Graph, what is clicked on the sequence is noted. If nothing is chosen, there is nothing to show. This is necessary due to the fact that when "Clicked" items are 0 and the feature count is 0, that graph point will be 0 instead of -3 (nothing on sequence, but feature != 0) which makes a spike.
//***Crating Data Points
if (!(AminoAcidProperties[AminoAcidPropertiesCount].match(/^All$|^None$/)) && (WhatsClickedSequence.length != 0)) {
for (var i = 0; i < fasta_sorted.length/GraphWindowSize;i++) {
var AAscore = 0;
var FeatureScore = 0;
for (var j = i*GraphWindowSize;j<i*GraphWindowSize+GraphWindowSize;j++) {
if (fasta_sorted[j] !== undefined) {
if (aminoacids[fasta_sorted[j]][2] == "Clicked") {
AAscore++;
}
}
}
if(!(AminoAcidProperties[AminoAcidPropertiesCount].match(/^Sequence Display$/))) {
for (var k = i*GraphWindowSize;k<i*GraphWindowSize+GraphWindowSize;k++) {
if (fasta_sorted[k] !== undefined) {
if ((aminoacids[fasta_sorted[k]].some(function(x){return x.match(AminoAcidProperties[AminoAcidPropertiesCount]);})) || (aminoacids_OtherProperties[fasta_sorted[k]].some(function(x){return x.match(AminoAcidProperties[AminoAcidPropertiesCount]);}))) {
FeatureScore++;
}
}
}
} else {
for (var k = i*GraphWindowSize;k<i*GraphWindowSize+GraphWindowSize;k++) {
var MatchedElement;
for (var iPrime = 0;iPrime<ids["scat"].length;iPrime++) {
if(parseInt(ids["scat"][iPrime].replace(/.*_/,""))-1 == k) {
MatchedElement = iPrime;
break;
}
}
if (fasta_sorted[k] !== undefined) {
if (d3.select(ids["scat"][MatchedElement]).attr("fill-opacity") != 0) {
FeatureScore++;
}
}
}
}
var point;
if ((AAscore != 0) && (FeatureScore == 0)) {
point = 3;
} else if ((AAscore == 0) && (FeatureScore != 0)) {
point = -3;
} else if ((AAscore == 0) && (FeatureScore == 0)) {
point = 0;
} else {
point = Math.log(AAscore/FeatureScore)/Math.log(2);
point = parseFloat(point.toFixed(2));
if (point > 3) {
point = 3;
} else if (point < -3) {
point = -3;
}
}
GraphData.push(point);
}
}
if (GraphData.length != 0) {
d3.select("#GraphSvg")
.selectAll("GraphLineElements")
.data(GraphData)
.enter()
.append("path")
.attr("d",function (d,i) {
var x = 2*GraphPadding+((GraphW-3*GraphPadding)/GraphData.length)/2+i*((GraphW-3*GraphPadding)/GraphData.length);
var y = GraphPadding+(GraphH-2*GraphPadding)/6*Math.abs(d-3);
return "M "+String(x)+","+String(y)+" L "+String(x)+","+String(y);
})
.attr("stroke","Orange")
.attr("stroke-width",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*12;})
.attr("class","GraphLines")
.on("mouseover", function (d,i) {
var x = 2*GraphPadding+((GraphW-3*GraphPadding)/GraphData.length)/2+i*((GraphW-3*GraphPadding)/GraphData.length);
var y = GraphPadding+(GraphH-2*GraphPadding)/6*Math.abs(d-3);
d3.select(this).transition().attr("stroke-width",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*18;}).attr("stroke","DarkSalmon").delay(0).duration(250);
d3.select("#GraphSvg").append("circle").attr("id","GraphLinesStartPoint").attr("cx",function() {return x;}).attr("cy",function () {return y;}).attr("r", function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*30;}).attr("fill","DarkSalmon").attr("fill-opacity",0.75).attr("stroke","DarkSalmon").attr("stroke-opacity",0).attr("stroke-width",0);
d3.select("#GraphSvg").append("text").text(function() {return "log2 value = "+String(GraphData[i]);}).attr("id","GraphLinesLog2Value").attr("x",function() {var radius = parseFloat(d3.select("#GraphLinesStartPoint").attr("r"));if (i <= GraphData.length/2){return x+1*radius;}else {return x-15*radius;}}).attr("y",function() {var radius = parseFloat(d3.select("#GraphLinesStartPoint").attr("r"));if (GraphData[i] <= 0){return y-3*radius;}else{return y+3*radius;}}).attr("text-anchor",function() {if (i <= GraphData.length/2){return "start";}else {return "end";}}).attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*70;}).attr("fill","Black");
d3.select("#GraphSvg").append("text").text(function() {return "Aminoacids "+String(1+i*GraphWindowSize)+" to "+String(GraphWindowSize+i*GraphWindowSize);}).attr("id","GraphLinesAAindicator").attr("x",function() {return GraphWnew/2;}).attr("y",function() {if (d >= 0) {return GraphHnew*4/5;} else {return GraphHnew*1/5;}}).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*200;}).attr("fill","DarkSalmon").attr("fill-opacity",0.8);
})
.on("mouseout",function() {
d3.select(this).transition().attr("stroke-width",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*12;}).attr("stroke","Orange").delay(0).duration(250);
d3.select("#GraphLinesStartPoint").remove();
d3.select("#GraphLinesLog2Value").remove();
d3.select("#GraphLinesAAindicator").remove();
});
d3.selectAll(".GraphLines").data(GraphData).each(function(d,i) {
d3.select(this)
.transition()
.attr("d", function (){
if (i != GraphData.length-1) {
var x = 2*GraphPadding+((GraphW-3*GraphPadding)/GraphData.length)/2+i*((GraphW-3*GraphPadding)/GraphData.length);
var y = GraphPadding+(GraphH-2*GraphPadding)/6*Math.abs(d-3);
var x_prime = 2*GraphPadding+((GraphW-3*GraphPadding)/GraphData.length)/2+(i+1)*((GraphW-3*GraphPadding)/GraphData.length);
var y_prime = GraphPadding+(GraphH-2*GraphPadding)/6*Math.abs(GraphData[i+1]-3);
return "M "+String(x)+","+String(y)+" L "+String(x_prime)+","+String(y_prime);
}
})
.delay(function () {
var RenderLength = parseFloat((2500/(GraphData.length-1)).toFixed(0));
return i*RenderLength;
})
.duration(function () {
var RenderLength = parseFloat((2500/(GraphData.length-1)).toFixed(0));
return RenderLength;
});
});
}
//***Crating Data Points
//***blosum62squarematrix
var AminoacidsSquareMatrixNumber = {"A":["1"],"R":["2"],"N":["3"],"D":["4"],"C":["5"],"Q":["6"],"E":["7"],"G":["8"],"H":["9"],"I":["10"],"L":["11"],"K":["12"],"M":["13"],"F":["14"],"P":["15"],"S":["16"],"T":["17"],"W":["18"],"Y":["19"],"V":["20"]};
blosum62 = [
[ 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0],
[-1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3],
[-2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3],
[-2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3],
[ 0, -3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2, -2, -1],
[-1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, -2],
[-1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, -2],
[ 0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, -3, -3],
[-2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2, -3],
[-1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3],
[-1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1],
[-1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2, -2],
[-1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, -1, 1],
[-2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1],
[-1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2],
[ 1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, -2],
[ 0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, -2, 0],
[-3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3],
[-2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1],
[ 0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, -1, 4]];
//***blosum62squarematrix
//***Axes***
if ((WhatsClickedSequence.length != 0) && !(AminoAcidProperties[AminoAcidPropertiesCount].match(/^All$|^None$/))) {
//***Y-axis labels
d3.select("#GraphSvg").append("text").text(function() {var array = WhatsClickedSequence; return "More "+array.toString();}).attr("id","YaxisSequence").attr("x",GraphPadding*0.8).attr("y",GraphH*0.25).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {if (WhatsClickedSequence.length <= 5) {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*50;}else{return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*50*1/Math.sqrt(WhatsClickedSequence.length/5);}}).attr("fill","DodgerBlue").attr("transform",function () {return "rotate(-90 "+String(GraphPadding*0.8)+","+String(GraphH*0.25)+")";});
d3.select("#GraphSvg").append("text").text(function() {if(!(AminoAcidProperties[AminoAcidPropertiesCount].match(/^All$|^None$|^Sequence Display$/))){return "More "+String(AminoAcidProperties[AminoAcidPropertiesCount]);}else if (AminoAcidProperties[AminoAcidPropertiesCount].match(/^Sequence Display$/)){var array = WhatsClicked; return "More "+array.toString();} else {return "";}}).attr("id","YaxisFeature").attr("x",GraphPadding*0.8).attr("y",GraphH*0.75).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {if (!(AminoAcidProperties[AminoAcidPropertiesCount].match(/^Sequence Display$/))) {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*50;} else if (WhatsClicked.length <= 5) {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*50;} else {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*50*1/Math.sqrt(WhatsClicked.length/5);}}).attr("fill","DodgerBlue").attr("transform",function () {return "rotate(-90 "+String(GraphPadding*0.8)+","+String(GraphH*0.75)+")";});
//***Y-axis labels
//***X-axis scale
d3.select("#GraphSvg")
.selectAll("GraphTickElements")
.data(GraphData)
.enter()
.append("rect")
.attr("x",function(d,i) {
var TickWidth = GraphPadding/10;
return 2*GraphPadding+((GraphW-3*GraphPadding)/GraphData.length)/2+i*((GraphW-3*GraphPadding)/GraphData.length)-TickWidth/2;
})
.attr("y",GraphH/2)
.attr("width",function (d,i) {
var TickWidth = GraphPadding/10;
if (i % 5 == 0) {
return 2*TickWidth;
} else {
return TickWidth;
}
})
.attr("height",function (d,i) {
if (i % 5 == 0) {
return 2*GraphHnew*12/GraphHdefault;
} else {
return GraphHnew*12/GraphHdefault;
}
})
.attr("fill","DimGray");
//***X-axis scale
}
//***Axes***
//***If only one aminoacid is clicked on the sequence and the feature track than this part calculates possible aggreement between graph and blosum62 scores.
if ((WhatsClickedSequence.length == 1) && (WhatsClicked.length == 1) && (String(AminoAcidProperties[AminoAcidPropertiesCount]) == "Sequence Display")) {
//***Score of the single AA->AA substitution from blosum62 matrix***
var Blosum62Value = blosum62[parseInt(AminoacidsSquareMatrixNumber[WhatsClickedSequence[0]])-1][parseInt(AminoacidsSquareMatrixNumber[WhatsClicked[0]])-1];
//***Score of the single AA->AA substitution from blosum62 matrix***
var ColorScale = {"0":"rgb(255,255,204)","1":"rgb(194,230,153)","2":"rgb(120,198,121)","3":"rgb(35,132,67)"};
//***below is agreement value. It is 1 minus the p value times two. 1.65 p value is around 0.05 so it is 1-0.1 = 0.9.
var Zthresholds = {"1.65":"90","1.29":"80","1.04":"70","0.85":"60","0.68":"50","0.53":"40","0.39":"30","0.26":"20","0.13":"10"};
//***Dynamically calculate max and min of the square matrix and linearly map absolute values of log ratios to this range***
var blosum62MinMax = [0,0];
for (var i = 0;i<blosum62.length;i++){
var min = d3.min(blosum62[i]);
var max = d3.max(blosum62[i]);
if (min < blosum62MinMax[0]) {
blosum62MinMax[0] = min;
}
if(max > blosum62MinMax[1]) {
blosum62MinMax[1] = max;
}
}
var LinearMapStep = (blosum62MinMax[1]-blosum62MinMax[0])/3;
var Blosum62AgreementData = [];
for (var i = 0;i<GraphData.length;i++) {
var LinearProjectionLogValue = blosum62MinMax[1] - LinearMapStep*Math.abs(GraphData[i]);
var AgreementQuotient = 3 - Math.abs(LinearProjectionLogValue - Blosum62Value)/LinearMapStep;
//***If the value is smaller than a threshold set by random similarity (7.5(scale of 0 to 15 which corresponds to 1.5 of scale of 0 to 3) in this case, midpoint of 0(no difference) and 15 (max difference)), than the quotient is 0***
if (AgreementQuotient < 3/2) {
AgreementQuotient = 0;
}
//***If the value is smaller than a threshold set by random similarity (7.5(scale of 0 to 15 which corresponds to 1.5 of scale of 0 to 3) in this case, midpoint of 0(no difference) and 15 (max difference)), than the quotient is 0***
Blosum62AgreementData.push(AgreementQuotient);
}
//***Dynamically calculate max and min of the square matrix and linearly map absolute values of log ratios to this range***
//***Draw Agreement Graph***
d3.select("#GraphSvg")
.selectAll("GraphLineBlosum62Elements")
.data(Blosum62AgreementData)
.enter()
.append("path")
.attr("d",function (d,i) {
var x = 2*GraphPadding+((GraphW-3*GraphPadding)/Blosum62AgreementData.length)/2+i*((GraphW-3*GraphPadding)/Blosum62AgreementData.length);
var y = GraphPadding+(GraphH-2*GraphPadding)/6*Math.abs(d-3);
return "M "+String(x)+","+String(y)+" L "+String(x)+","+String(y);
})
.attr("stroke",function(d,i) {return ColorScale[String(parseInt(d))];})
.attr("stroke-width",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*12;})
.attr("class","GraphBlosum62Lines")
.on("mouseover",function(d,i) {
d3.select("#Blosum62Window").remove();
d3.select("#Blosum62PvalueIndicator").remove();
d3.select("#GraphSvg")
.append("rect")
.attr("x",function() {return 2*GraphPadding+((GraphW-3*GraphPadding)/Blosum62AgreementData.length)/2+i*((GraphW-3*GraphPadding)/Blosum62AgreementData.length);})
.attr("y",GraphPadding)
.attr("width",function() {return ((GraphW-3*GraphPadding)/Blosum62AgreementData.length);})
.attr("height",function() {return GraphH-2*GraphPadding;})
.attr("fill",function() {return ColorScale[String(parseInt(d))];})
.attr("fill-opacity",0.5)
.attr("id","Blosum62Window")
.on("mouseover",function() {
var thresholds = d3.keys(Zthresholds).sort(d3.descending);
var p_value;
for (var i = 0;i<thresholds.length;i++) {
var StandardDeviation = 0.5;
var Mean = 1.5;
var DistanceToMean =(d-Mean)/StandardDeviation;
if (parseFloat(thresholds[i])<DistanceToMean) {
p_value = (100-Zthresholds[thresholds[i]])/200;
break;
}
if((i == thresholds.length - 1) && (p_value === undefined)) {
p_value = "insignificant";
}
}
d3.select("#GraphSvg").append("text").text(function() {return "Blosum62 agreement score: "+String(d.toFixed(2))+",p-value<="+String(p_value);}).attr("id","Blosum62PvalueIndicator").attr("x",function() {return GraphWnew/2;}).attr("y",function() {if (d >= 0) {return GraphHnew*4/5;} else {return GraphHnew*1/5;}}).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*80;}).attr("fill","DarkSalmon").attr("fill-opacity",0.8);
})
.on("mouseout",function() {
d3.select("#Blosum62Window").remove();
d3.select("#Blosum62PvalueIndicator").remove();
});
});
d3.selectAll(".GraphBlosum62Lines").data(Blosum62AgreementData).each(function(d,i) {
d3.select(this)
.transition()
.attr("d", function (){
if (i != Blosum62AgreementData.length-1) {
var x = 2*GraphPadding+((GraphW-3*GraphPadding)/Blosum62AgreementData.length)/2+i*((GraphW-3*GraphPadding)/Blosum62AgreementData.length);
var y = GraphPadding+(GraphH-2*GraphPadding)/6*Math.abs(d-3);
var x_prime = 2*GraphPadding+((GraphW-3*GraphPadding)/Blosum62AgreementData.length)/2+(i+1)*((GraphW-3*GraphPadding)/Blosum62AgreementData.length);
var y_prime = GraphPadding+(GraphH-2*GraphPadding)/6*Math.abs(Blosum62AgreementData[i+1]-3);
return "M "+String(x)+","+String(y)+" L "+String(x_prime)+","+String(y_prime);
}
})
.delay(function () {
var RenderLength = parseFloat((2500/(Blosum62AgreementData.length-1)).toFixed(0));
return i*RenderLength;
})
.duration(function () {
var RenderLength = parseFloat((2500/(Blosum62AgreementData.length-1)).toFixed(0));
return RenderLength;
});
});
//***Draw Agreement Graph***
//***Incase of AA->AA change give options to hide either of two graphs
d3.select("#GraphSvg").append("text").text("hide Blosum62").attr("id","hideBlosum62").attr("x",GraphW*0.33).attr("y",GraphH-GraphPadding*0.2).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*45;}).attr("fill","DodgerBlue")
.on("mouseover", function() {
d3.select("#hideBlosum62").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function() {
d3.select("#hideBlosum62").transition().attr("fill","DodgerBlue").delay(0).duration(250);
})
.on("click", function() {
d3.select("#hideBlosum62").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select("#showBlosum62").transition().attr("visibility","visible").delay(0).duration(0);
d3.selectAll(".GraphBlosum62Lines").transition().attr("visibility","hidden").delay(0).duration(0);
});
d3.select("#GraphSvg").append("text").text("show Blosum62").attr("id","showBlosum62").attr("x",GraphW*0.33).attr("y",GraphH-GraphPadding*0.2).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*45;}).attr("fill","DodgerBlue").attr("visibility","hidden")
.on("mouseover", function() {
d3.select("#showBlosum62").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function() {
d3.select("#showBlosum62").transition().attr("fill","DodgerBlue").delay(0).duration(250);
})
.on("click", function() {
d3.select("#showBlosum62").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select("#hideBlosum62").transition().attr("visibility","visible").delay(0).duration(0);
d3.selectAll(".GraphBlosum62Lines").transition().attr("visibility","visible").delay(0).duration(0);
});
d3.select("#GraphSvg").append("text").text("hide LogPlot").attr("id","hideLogPlot").attr("x",GraphW*0.66).attr("y",GraphH-GraphPadding*0.2).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*45;}).attr("fill","DodgerBlue")
.on("mouseover", function() {
d3.select("#hideLogPlot").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function() {
d3.select("#hideLogPlot").transition().attr("fill","DodgerBlue").delay(0).duration(250);
})
.on("click", function() {
d3.select("#hideLogPlot").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select("#showLogPlot").transition().attr("visibility","visible").delay(0).duration(0);
d3.selectAll(".GraphLines").transition().attr("visibility","hidden").delay(0).duration(0);
});
d3.select("#GraphSvg").append("text").text("show LogPlot").attr("id","showLogPlot").attr("x",GraphW*0.66).attr("y",GraphH-GraphPadding*0.2).attr("text-anchor","middle").attr("font-family","Arial").attr("font-size",function () {return Math.sqrt((GraphWnew*GraphHnew)/(GraphWdefault*GraphWdefault))*45;}).attr("fill","DodgerBlue").attr("visibility","hidden")
.on("mouseover", function() {
d3.select("#showLogPlot").transition().attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function() {
d3.select("#showLogPlot").transition().attr("fill","DodgerBlue").delay(0).duration(250);
})
.on("click", function() {
d3.select("#showLogPlot").transition().attr("visibility","hidden").delay(0).duration(0);
d3.select("#hideLogPlot").transition().attr("visibility","visible").delay(0).duration(0);
d3.selectAll(".GraphLines").transition().attr("visibility","visible").delay(0).duration(0);
});
//***Incase of AA->AA change give options to hide either of two graphs
}
//***If only one aminoacid is clicked on the sequence and the feature track than this part calculates possible aggreement between graph and blosum62 scores.
}
//This one is for sequence/SNV/connector neon affect.
//The function below is called (not from d3, that makes the arguments complicated) for ids["seq"], ids["mut"] and ids["connector"]. You give 1 argument, the id of the element and it return what kind of text shadow it shall get.
//declare a global variable that I will later design some illustration for user control:
var NeonizeMe = 1;
//***Add a global controller where the user can choose to turn on/off Neon Effect***
var neonEffect= "On";
d3.select("#annotation").append("text").text(function() {return "Neon "+neonEffect;}).attr("x",5950).attr("y",375).style("font-family","sans-serif").style("font-size","45px").attr("text-anchor","middle").style("fill","DimGray").attr("id","neonEffect")
.on("mouseover",function () {
d3.select("#neonEffect").style("fill","Orange");
})
.on("mouseout",function () {
d3.select("#neonEffect").style("fill","DimGray");
})
.on("click",function () {
d3.select("#neonEffect").transition().attr("fill-opacity",0).each("end",function() {
if (neonEffect == "On") {
neonEffect = "Off";
NeonizeMe = 0;
} else {
neonEffect = "On";
NeonizeMe = 1;
}
document.getElementById("neonEffect").textContent = "Neon "+neonEffect;
d3.select("#neonEffect").transition().attr("fill-opacity",1.0).delay(0).duration(500);
}).delay(0).duration(500);
});
//***Add a global controller above where the user can choose to turn on/off Neon Effect***
function Neonizer() {
if ((NeonizeMe == 1) && !(d3.select(arguments[0]).style("fill") === "none")) {
if(String(arguments[0]).match(/rsID|connector/ig)) {
var rgb = d3.select(arguments[0]).style("fill");
rgb = !(rgb.match(/#/g)) ? rgb : convertHexToRgb(rgb);
rgb = rgb.replace(/rgb\(|\)/ig,"");
return "0px 0px 15px "+String("rgba("+rgb+", 1)")+",0px 0px 2px rgba(255,250,250,0.6),0 0 10px "+String("rgba("+rgb+", 1)")+",0px 0px 16px "+String("rgba("+rgb+", 1)")+",0px 0px 43px "+String("rgba("+rgb+", 1)")+",0px 0px 69px "+String("rgba("+rgb+", 1)")+",0px 0px 111px "+String("rgba("+rgb+", 1)");
} else {
var rgb = d3.select(arguments[0]).style("fill");
rgb = !(rgb.match(/#/g)) ? rgb : convertHexToRgb(rgb);
rgb = rgb.replace(/rgb\(|\)/ig,"");
return "0px 0px 10px "+String("rgba("+rgb+", 0.8)")+",0px 0px 3px white,0px 0px 5px white,0px 0px 8px white,0px 0px 10px "+String("rgba("+rgb+", 1)")+",0px 0px 18px "+String("rgba("+rgb+", 0.9)")+",0px 0px 25px "+String("rgba("+rgb+", 0.7)")+",0px 0px 38px "+String("rgba("+rgb+", 0.6)");
}
} else {
return "none";
}
}
function convertHexToRgb (hex) {
hex = hex.replace("#","");
var r = parseInt(hex.slice(0,2),16);
var g = parseInt(hex.slice(2,4),16);
var b = parseInt(hex.slice(4,6),16);
return "rgb("+r+", "+g+", "+b+")";
}
//The function above is called (not from d3, that makes the arguments complicated) for ids["seq"], ids["mut"] and ids["connector"]. You give 1 argument, the id of the element and it return what kind of text shadow it shall get.
<!--Prediction Related Stuff-->
//***Add a global controller where the user can choose to color/figure code SNV predictions***
var colorCoding= "On";
d3.select("#annotation").append("text").text(function() {return "Color-coding "+colorCoding;}).attr("x",5950).attr("y",275).style("font-family","sans-serif").style("font-size","45px").attr("text-anchor","middle").style("fill","DimGray").attr("id","colorCoding")
.on("mouseover",function () {
d3.select("#colorCoding").style("fill","Orange");
})
.on("mouseout",function () {
d3.select("#colorCoding").style("fill","DimGray");
})
.on("click",function () {
d3.select("#colorCoding").transition().attr("fill-opacity",0).each("end",function() {
if (colorCoding == "On") {
colorCoding = "Color-blind";
} else {
colorCoding = "On";
}
document.getElementById("colorCoding").textContent = "Color-coding "+colorCoding;
d3.select("#colorCoding").transition().attr("fill-opacity",1.0).delay(0).duration(500);
}).delay(0).duration(500);
});
//***Add a global controller above where the user can choose to color/figure code SNV predictions***
//***this is the database hash: the array has the keyword and the threshold for deleteriousness***
var predictionDatabase = {"1":["polyphen2","0.85"],"2":["sift","0.05","inverse"]};
var logoAngelAltCb = "data:image/png;base64,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";
var logoAngelAlt ="data:image/png;base64,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";
var logoDemonAlt ="data:image/png;base64,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";
//Supply 2 arguments, 1: the database hash, 2: the id of the element
function returnPredictionScores() {
var argument0 = arguments[0];
var argument1 = arguments[1];
//alert (arguments[0][String(1)][0]+","+arguments[1]+","+String(argument0)+","+String(argument1)+","+argument0[String(1)][0]);
for (var i = 1;i <= d3.keys(argument0).length;i++) {
d3.select("#annotation")
.append("text")
.text(function(){
var prediction = "";
var keyword = argument0[String(i)][0];
if(d3.select(argument1).attr(keyword).match(/^\s*[0-9]+[.]?[0-9]*\s*$/)) {
var predictionScore = parseFloat(d3.select(argument1).attr(keyword));
var benignOrDeleterious ;
if((argument0[String(i)][2] !== undefined)&&(argument0[String(i)][2].match(/inverse/i))) {
if (predictionScore > parseFloat(argument0[String(i)][1])) {
angelOrDemon("angel",i);
} else {
angelOrDemon("demon",i);
}
} else {
if (predictionScore < parseFloat(argument0[String(i)][1])) {
angelOrDemon("angel",i);
} else {
angelOrDemon("demon",i);
}
}
prediction = String(prediction)+argument0[String(i)][0]+" score: "+predictionScore.toFixed(2);
}
return prediction;
})
.attr("class","text2")
.attr("text-anchor","middle")
.attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-500;} else {return coordinates[0]+500;}})
.attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-200+i*250;} else {return coordinates[1]+200+i*250;}})
.attr("font-family","sans-serif")
.attr("font-size","100px")
.attr("fill","Orange")
.attr("stroke","Orange")
.attr("fill-opacity",0.0)
.attr("stroke-opacity",0.0)
.attr("visibility","visible")
}
}
//Supply 1:angel or demon, 2: the number of the prediction algorithm
//The logos has to be placed a bit right of the normal x coordinate and at the same y coordinate of the prediction text
function angelOrDemon () {
//alert(arguments[0]+","+arguments[1]);
var argument1 = arguments[1];
if (arguments[0].match(/angel/i)) {
d3.select("#annotation").append("svg:image").attr("xlink:href",function(){if(colorCoding.match(/on/i)){return logoAngelAlt;}else{return logoAngelAltCb;}}).attr("title","benign").attr("alt","benign").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]+50;} else {return coordinates[0]+1050;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-75+(parseInt(argument1)-1)*250;} else {return coordinates[1]+325+(parseInt(argument1)-1)*250;}}).attr("width","300px").attr("height","200px").attr("fill-opacity",0).style("opacity",0).attr("class","text2");
} else {
d3.select("#annotation").append("svg:image").attr("xlink:href",logoDemonAlt).attr("title","deleterious").attr("alt","deleterious").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]+50;} else {return coordinates[0]+1050;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-145+(parseInt(argument1)-1)*255;} else {return coordinates[1]+255+(parseInt(argument1)-1)*255;}}).attr("width","480px").attr("height","320px").attr("fill-opacity",0).style("opacity",0).attr("class","text2");
}
}
<!--Prediction Related Stuff-->
<!--Some unnecessary geek stuff -->
var ipvWatchOnOff = 0;
var currentTime;
var currentHourDial;
var currentSecondDial;
var ipvWatch = "data:image/png;base64,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";
d3.select("#annotation").append("svg:image").attr("xlink:href",ipvWatch).attr("title","ipvWatch").attr("alt","ipvWatch").attr("x",5550).attr("y",200).attr("width","100px").attr("height","100px").style("opacity",0.62).attr("id","ipvWatchIcon");
d3.select("#ipvWatchIcon")
.on("mouseover", function () {
d3.select(this).style("opacity",1);
})
.on("mouseout", function () {
d3.select(this).style("opacity",0.62);
})
.on("click",function () {
if (ipvWatchOnOff == 0) {
openWatch();
ipvWatchOnOff = 1;
//hide overview tabs
hideOrshowhtmlElements("0",false,true);
} else {
clearInterval(currentTime);
clearInterval(currentHourDial);
clearInterval(currentSecondDial);
d3.selectAll(".geekWatch").remove();
ipvWatchOnOff = 0;
//hide overview tabs
hideOrshowhtmlElements("1",false,true);
}
});
function openWatch() {
var date;
var time;
currentTime = setInterval(function () {
d3.select("#ipvWatch").remove();
d3.select("#annotation").append("text").text(timeFunction()).attr("x",3000).attr("y",3350).style("font-family","Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New").style("font-size","90px").attr("text-anchor","middle").attr("fill","Lime").attr("id","ipvWatch").attr("class","geekWatch");
},1000);
d3.select("#annotation").append("circle").attr("r",424).attr("cx",3000).attr("cy",3350).attr("fill-opacity",0).attr("fill","DeepPink").attr("stroke","DeepPink").attr("stroke-opacity",0.62).attr("stroke-width","28px").attr("class","geekWatch");
d3.select("#annotation").append("path").attr("d","M 3000,2926 L 3000,1600").attr("stroke-width","14px").attr("stroke","DeepPink").attr("stroke-opacity",0.62).attr("id","ipvHourDial").attr("class","geekWatch");
d3.select("#annotation").append("circle").attr("r",400).attr("cx",3000).attr("cy",3350).attr("fill-opacity",0).attr("fill","Orange").attr("stroke","Orange").attr("stroke-opacity",0.62).attr("stroke-width","20px").attr("class","geekWatch");
d3.select("#annotation").append("path").attr("d","M 3000,2950 L 3000,750").attr("stroke-width","10px").attr("stroke","Orange").attr("stroke-opacity",0.62).attr("id","ipvSecondDial").attr("class","geekWatch");
currentHourDial = setInterval(function () {
d3.select("#ipvHourDial").transition().attr("d",function() {var xPrime = 3000+(424+28/2-1)*Math.cos(watch("hour")); var yPrime = 3350-(424+28/2-1)*Math.sin(watch("hour")); var x = 3000+1400*Math.cos(watch("hour")); var y = 3000-1400*Math.sin(watch("hour")); return "M "+String(xPrime)+","+String(yPrime)+" L "+String(x)+","+String(y);}).delay(0).duration(618);
},1000);
currentSecondDial = setInterval(function () {
d3.select("#ipvSecondDial").transition().attr("d",function() {var xPrime = 3000+(400+20/2-1)*Math.cos(watch("default")); var yPrime = 3350-(400+20/2-1)*Math.sin(watch("default")); var x = 3000+2250*Math.cos(watch("default")); var y = 3000-2250*Math.sin(watch("default")); return "M "+String(xPrime)+","+String(yPrime)+" L "+String(x)+","+String(y);}).delay(0).duration(618);
},1000);
function timeFunction() {
date = new Date();
time = date.toLocaleTimeString();
return time;
}
function watch() {
var angle = parseInt(time.split(/:|\s/)[2]);
/*if (angle == 0) {
angle = 60;
}*/
if (arguments[0].match(/seconds/)){
return angle;
} else {
if (arguments[0].match(/hour/)) {
var minutes = parseInt(time.split(/:|\s/)[1]);
var hours = parseInt(time.split(/:|\s/)[0]);
var totalSeconds = minutes*60+angle;
var angleHour = totalSeconds/3600*30+hours*30;
angleHour = angleHour/360*2*Math.PI;
angleHour = Math.PI/2-angleHour;
return angleHour;
} else {
angle = 6*angle;
angle = angle/360*2*Math.PI;
angle = Math.PI/2-angle;
return angle;
}
}
}
}
<!--Some unnecessary geek stuff -->
<!--Drag mechanism -->
//Global Drag variables that will be automatically refreshed for each new draggable element
var dragOffsetX = 0;
var dragOffsetY = 0;
var dragX = 0;
var dragY = 0;
//Global Drag variables that will be automatically refreshed for each new draggable element
//Supply the drag event handler and also the id of the element to be operated on.
function dragStart(event) {
//alert(event.target.id);--> Check for bubbling
dragX = parseFloat(event.pageX)*4.67-500;
dragY = parseFloat(event.pageY)*4;
dragOffsetX = dragX-parseFloat(d3.select(arguments[1]).attr("x"));
dragOffsetY = dragY-parseFloat(d3.select(arguments[1]).attr("y"));
}
//Supply the drag event handler and also the id of the element to be operated on.
function dragMe(event) {
dragX = parseFloat(event.pageX)*4.67-500;
dragY = parseFloat(event.pageY)*4;
d3.select(arguments[1]).attr("x",function () {return dragX-dragOffsetX}).attr("y",function() {return dragY-dragOffsetY});
}
//Supply the drag event handler and also the id of the element to be operated on.
//below function will have to be modified at some point if I add new draggable elements since it also sets GrapNewLocation array.
function dragEnd(event) {
dragX = parseFloat(event.pageX)*4.67-500;
dragY = parseFloat(event.pageY)*4;
d3.select(arguments[1]).attr("x",function () {GraphNewLocation[0] = dragX-dragOffsetX; return dragX-dragOffsetX}).attr("y",function() {GraphNewLocation[1] = dragY-dragOffsetY; return dragY-dragOffsetY});
}
<!--Drag mechanism -->
<!--A new Tab #2: Mark Tab -->
var htmlDivIdCounter = -1;
var markCounter = 0;
var inputBackgroundColor = "rgba(255,165,0,0.4)";
var overviewTabArray = [{"id":"OverviewLength"},{"id":"OverviewMark"}];
var markHash = {};
//Inserts a single input box at the specified left and top style values. The center of the input box is aligned with the style value.
function insertInput() {
var inputHash;
eval('inputHash = '+ arguments[0]);
if((inputHash["flushCounter"] !== undefined)&&(inputHash["flushCounter"].match(/yes/i))) {
htmlDivIdCounter = -1;
}
if(inputHash["prefix"] === undefined) {
inputHash["prefix"] = "default";
}
htmlDivIdCounter++;
d3.select(document.body).append("div").attr("id",function() {return inputHash["prefix"]+"htmlDiv"+htmlDivIdCounter;}).attr("class",inputHash["class"]).attr("style",function () {return 'position:absolute;'+'top:'+(parseFloat(inputHash["top"])-parseFloat(inputHash["height"])/2)+'px;left:'+(parseFloat(inputHash["left"])-parseFloat(inputHash["width"])/2)+'px;height:'+inputHash["height"]+';width:'+inputHash["width"]+';background:transparent;'});
d3.select("#"+inputHash["prefix"]+"htmlDiv"+htmlDivIdCounter).append("div:form").attr("style",function() {return 'position:absolute;top:0px;left:0px;height:'+inputHash["height"]+';width:'+inputHash["width"]+';background:transparent';}).attr("id",function() {return inputHash["prefix"]+"htmlForm"+htmlDivIdCounter;}).attr("class",inputHash["class"]);
if(inputHash["check"] === "number") {
d3.select("#"+inputHash["prefix"]+"htmlForm"+htmlDivIdCounter).append("form:input").attr("id",function() {return inputHash["prefix"]+"htmlInput"+htmlDivIdCounter;}).attr("class",function () {return inputHash["class"]+"Inputs";}).attr("type","text").attr("style",function () {if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)) {inputBackgroundColor = "rgba(30,144,255,0.4)";} else {inputBackgroundColor = "rgba(255,165,0,0.4)";};return 'position:absolute;margin:0px;top:'+(parseFloat(inputHash["height"])*0.1)+'px;left:0px;height:'+(parseFloat(inputHash["height"])*0.8-4)+'px;padding:0px;width:'+(parseFloat(inputHash["width"])-4)+'px;background:'+inputBackgroundColor+';border-radius:5px;border-width:2px;border-color:rgba(105,105,105,0.6);border-style:solid;color:NavajoWhite;outline:none;font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;font-weight:bold;'}).attr("onfocus",function () {return "inputFocus('"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"')"}).attr("onblur",function () {return "inputCheckNumber("+"'"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"'"+",'number'"+")";});
} else if(inputHash["check"] === "radius") {
d3.select("#"+inputHash["prefix"]+"htmlForm"+htmlDivIdCounter).append("form:input").attr("id",function() {return inputHash["prefix"]+"htmlInput"+htmlDivIdCounter;}).attr("class",function () {return inputHash["class"]+"Inputs";}).attr("type","text").attr("style",function () {if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)) {inputBackgroundColor = "rgba(30,144,255,0.4)";} else {inputBackgroundColor = "rgba(255,165,0,0.4)";};return 'position:absolute;margin:0px;top:'+(parseFloat(inputHash["height"])*0.1)+'px;left:0px;height:'+(parseFloat(inputHash["height"])*0.8-4)+'px;padding:0px;width:'+(parseFloat(inputHash["width"])-4)+'px;background:'+inputBackgroundColor+';border-radius:5px;border-width:2px;border-color:rgba(105,105,105,0.6);border-style:solid;color:NavajoWhite;outline:none;font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;font-weight:bold;'}).attr("onfocus",function () {return "inputFocus('"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"')"}).attr("onblur",function () {return "inputCheckNumber("+"'"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"'"+",'radius'"+")";});
} else if (inputHash["check"] === "color"){
d3.select("#"+inputHash["prefix"]+"htmlForm"+htmlDivIdCounter).append("form:input").attr("id",function() {return inputHash["prefix"]+"htmlInput"+htmlDivIdCounter;}).attr("class",function () {return inputHash["class"]+"Inputs";}).attr("type","text").attr("style",function () {if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)) {inputBackgroundColor = "rgba(30,144,255,0.4)";} else {inputBackgroundColor = "rgba(255,165,0,0.4)";};return 'position:absolute;margin:0px;top:'+(parseFloat(inputHash["height"])*0.1)+'px;left:0px;height:'+(parseFloat(inputHash["height"])*0.8-4)+'px;padding:0px;width:'+(parseFloat(inputHash["width"])-4)+'px;background:'+inputBackgroundColor+';border-radius:5px;border-width:2px;border-color:rgba(105,105,105,0.6);border-style:solid;color:NavajoWhite;outline:none;font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;font-weight:bold;'}).attr("onfocus",function () {return "inputFocus('"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"')"}).attr("onblur",function () {return "inputCheckColor("+"'"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"'"+")";});
} else {
d3.select("#"+inputHash["prefix"]+"htmlForm"+htmlDivIdCounter).append("form:input").attr("id",function() {return inputHash["prefix"]+"htmlInput"+htmlDivIdCounter;}).attr("class",function () {return inputHash["class"]+"Inputs";}).attr("type","text").attr("style",function () {if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)) {inputBackgroundColor = "rgba(30,144,255,0.4)";} else {inputBackgroundColor = "rgba(255,165,0,0.4)";};return 'position:absolute;margin:0px;top:'+(parseFloat(inputHash["height"])*0.1)+'px;left:0px;height:'+(parseFloat(inputHash["height"])*0.8-4)+'px;padding:0px;width:'+(parseFloat(inputHash["width"])-4)+'px;background:'+inputBackgroundColor+';border-radius:5px;border-width:2px;border-color:rgba(105,105,105,0.6);border-style:solid;color:NavajoWhite;outline:none;font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;font-weight:bold;'}).attr("onfocus",function () {return "inputFocus('"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"')"}).attr("onblur",function () {return "inputBlur('"+inputHash["prefix"]+"htmlInput"+htmlDivIdCounter+"')"});
}
}
//Inserts a single input box at the specified left and top style values. The center of the input box is aligned with the style value.
//Check number
function inputCheckNumber() {
var ID = arguments[0];
inputBlur(ID);
if (!(isNaN(parseFloat(document.getElementById(ID).value)))) {
if (arguments[1].match(/number/i)) {
if(document.getElementById(ID).value.match(/[a-z]+/i)) {
document.getElementById(ID).value = "";
alert ("no letters!");
return 0;
} else if (parseFloat(document.getElementById(ID).value) < 0.5) {
document.getElementById(ID).value = "0.5";
alert ("minimum value is 0.5!");
return 0;
} else if (parseInt(document.getElementById(ID).value) > fasta_sorted.length) {
document.getElementById(ID).value = String(fasta_sorted.length);
alert ("maximum is protein length!");
return 0;
} else {
return 1;
}
} else if (arguments[1].match(/radius/i)) {
if ((parseFloat(document.getElementById(ID).value).toFixed(3)) < 0.38) {
document.getElementById(ID).value = "0.38";
alert ("radius can't be smaller than 0.38!");
return 0;
} else if ((parseFloat(document.getElementById(ID).value).toFixed(3)) > 1.07) {
document.getElementById(ID).value = "1.070";
alert ("maximum is 1.07 radius!");
return 0;
} else {
return 1;
}
}
} else if (document.getElementById(ID).value !== "") {
document.getElementById(ID).value = "";
alert ("numbers only!");
return 0;
}
}
//Check number
//Check color
function inputCheckColor() {
var ID = arguments[0];
inputBlur(ID);
if(document.getElementById(ID).value.match(/^\s*[a-z]+\s*$|^\s*[a-z]+\s*[,;]\s*(1|1[.]0|0[.][0-9]+|0)\s*$|^\s*rgb[a]?\s*\(\s*[1-9]?[0-9]?[0-9]{1}\s*[,]\s*[1-9]?[0-9]?[0-9]{1}\s*[,]\s*[1-9]?[0-9]?[0-9]{1}\s*([,]1|[,]1[.]0|[,]0[.][0-9]+)?\)\s*$/i)) {
return 1;
} else if (document.getElementById(ID).value !== "") {
document.getElementById(ID).value = "";
alert ("I don't get this color :(");
return 0;
}
}
//Check color
//***GLOBAL TAB CONTROLLER***
//The conditional in this function is very important. Argument0 designates either show or hide. Argument1 is master control that bypasses other conditionals, provide anything that translates to true for immunity. Argument2 is sub-master control that bypasses all conditions except the rightmost one, usage same as the previous one.
function hideOrshowhtmlElements () {
if (arguments[0].match(/0/ig)) {
if (arguments[1] || ((arguments[2] || ((arguments[3]||(((ExtractionPane == "open")||(MarkPane == "open"))&& (optionStatus == "open")))&&(ipvWatchOnOff == 0)))&&(R_Click == 0))) {
d3.selectAll(".htmlElements").style("opacity",0).style("visibility","hidden");
d3.selectAll(".DropDownRectMark").style("opacity",0).style("visibility","hidden");
d3.selectAll(".DropDownRectExtract").style("opacity",0).style("visibility","hidden");
}
} else {
if (arguments[1] || ((arguments[2] || ((arguments[3]||(((ExtractionPane == "open")||(MarkPane == "open"))&& (optionStatus == "open")))&&(ipvWatchOnOff == 0)))&&(R_Click == 0))) {
d3.selectAll(".htmlElements").style("opacity",1).style("visibility","visible");
d3.selectAll(".DropDownRectMark").style("opacity",1).style("visibility","visible");
d3.selectAll(".DropDownRectExtract").style("opacity",1).style("visibility","visible");
}
}
}
//***GLOBAL TAB CONTROLLER***
//This is the actual function that inserts a highlight element. Provide an object from the markHash with name,start,end,r1,r2 and color
var minimizeHighlightIcon = "data:image/png;base64,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";
var closeHighlightIcon = "data:image/png;base64,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";
var minimizeHighlightIconOrange = "data:image/png;base64,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";
var closeHighlightIconOrange = "data:image/png;base64,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";
var highlightGradualFade;
var lastMouseoverMarkElementID;
var highlightTopRound = false;
var highlightBottomRound = false;
//refer to File API section to see how below value is changed.
var captureClass = "";
function residuesToHighlight () {
var textDescription = String(arguments[0][0]);
var start = parseFloat(arguments[0][1])-1;
var end = parseFloat(arguments[0][2])-1;
var r1 = parseFloat(arguments[0][3])*3000;
var r2 = parseFloat(arguments[0][4])*3000;
var color = String(arguments[0][5]);
var opacity;
if (color.split(/[,;]/g).length > 3) {
opacity = parseFloat(color.split(/[,;]/g)[3]);
} else if (color.split(/[,;]/g).length === 2) {
opacity = parseFloat(color.split(/[,;]/g)[1]);
color = String(color.split(/[,;]/g)[0]);
} else {
opacity = 0.5;
}
//***Minimize/Close Icon coordinates***
var startMinimize = ((start+end)/2-(5/360*fasta_sorted.length)/2);
var rotationMinimize = startMinimize/fasta_sorted.length*360;
var startClose = ((start+end)/2+(5/360*fasta_sorted.length)/2);
var rotationClose = startClose/fasta_sorted.length*360;
var rMinMaxIcon = (r1+r2)/2;
var PointMinimize = [parseInt(3000+rMinMaxIcon*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*startMinimize))-CorrectionFactor*startMinimize)/180)),parseInt(3000-rMinMaxIcon*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*startMinimize))-CorrectionFactor*startMinimize)/180))];
var PointClose = [parseInt(3000+rMinMaxIcon*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*startClose))-CorrectionFactor*startClose)/180)),parseInt(3000-rMinMaxIcon*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*startClose))-CorrectionFactor*startClose)/180))];
//***Minimize/Close Icon coordinates***
d3.select("#annotation").append("path").attr("d", function() {return highlightPathGenerator((start+end)/2,(start+end)/2,r1,r2);}).attr("stroke-width",5).attr("stroke",function() {return color;}).attr("stroke-opacity",function() {if (opacity*GoldenRatio > 1.0) {return 1.0;} else if (opacity*GoldenRatio == 0) {return 0.5*GoldenRatio;} else {return opacity*GoldenRatio;}}).attr("fill",function() {return color;}).attr("fill-opacity",function() {if (color.match(/rgba/ig)) {return 1.0} else {return opacity;} }).attr("stroke-linejoin","round").attr("id",function () {return "mark"+markCounter;}).attr("class",function(){if (captureClass !== ""){return "markElements"+" "+captureClass;} else {return "markElements";}}).style("opacity",0)
.on("mouseover",function () {
hideOrshowhtmlElements("0");
clearTimeout(highlightGradualFade);
d3.select(this).transition().attr("stroke-width",25).delay(0).duration(250);
d3.select("#annotation").append("text").text(function () {return textDescription;}).attr("class","text2").attr("text-anchor","middle").attr("x",function() {if (coordinates[0]>3000) {return coordinates[0]-500;} else {return coordinates[0]+500;}}).attr("y",function() {if (coordinates[1]>3000) {return coordinates[1]-200;} else {return coordinates[1]+200;}}).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.selectAll(".text2").transition().attr("fill-opacity",0.9).style("opacity",0.9).delay(500).duration(500);
//***Minimize/Close***
if (lastMouseoverMarkElementID !== d3.select(this).attr("id")) {
d3.selectAll(".highlightIcons").remove();
lastMouseoverMarkElementID = d3.select(this).attr("id");
d3.select("#annotation").append("svg:image").attr("xlink:href",minimizeHighlightIcon).attr("title","minimize").attr("alt","minimize").attr("x",function() {return PointMinimize[0]-50;}).attr("y",function() {return PointMinimize[1]-50;}).attr("width","100px").attr("height","100px").style("opacity",0).attr("class","highlightIcons").attr("transform",function () {var x= parseFloat(d3.select(this).attr("x"));var y = parseFloat(d3.select(this).attr("y"));return "rotate("+rotationMinimize+","+(x+50)+","+(y+50)+")";});
d3.select("#annotation").append("svg:image").attr("xlink:href",closeHighlightIcon).attr("title","close").attr("alt","close").attr("x",function() {return PointClose[0]-50;}).attr("y",function() {return PointClose[1]-50;}).attr("width","100px").attr("height","100px").style("opacity",0).attr("class","highlightIcons").attr("transform",function () {var x= parseFloat(d3.select(this).attr("x"));var y = parseFloat(d3.select(this).attr("y"));return "rotate("+rotationClose+","+(x+50)+","+(y+50)+")";});
}
//***I had to add the hideOrshowhtmlElements(1) at the beginning of onclick event below because when you click on the x icon, mouseout event does not fire in firefox. This is not true for Chrome.
d3.selectAll(".highlightIcons").transition().style("opacity",0.9).each("end",function() {d3.select(this).on("mouseover",function(){hideOrshowhtmlElements("0");clearTimeout(highlightGradualFade);d3.selectAll(".highlightIcons").transition().style("opacity",0.9).delay(0).duration(0);d3.select(this).attr("xlink:href",function() {return eval(String(d3.select(this).attr("title"))+"HighlightIconOrange");});}).on("mouseout",function(){hideOrshowhtmlElements("1"); highlightGradualFade = setTimeout(function() {d3.selectAll(".highlightIcons").transition().style("opacity",0).delay(0).duration(0);},2000);d3.select(this).attr("xlink:href",function() {return eval(String(d3.select(this).attr("title"))+"HighlightIcon");});}).on("click",function(){hideOrshowhtmlElements("1"); var type = d3.select(this).attr("title"); highlightIconsOnClick(type);});}).delay(0).duration(0);
//***Minimize/Close***
})
.on("mouseout",function() {
hideOrshowhtmlElements("1");
d3.select(this).transition().attr("stroke-width",5).delay(0).duration(250);
d3.selectAll(".text2").remove();
highlightGradualFade = setTimeout(function() {d3.selectAll(".highlightIcons").transition().style("opacity",0).delay(0).duration(0);},2000);
});
//Fade in/out effect
d3.select("#mark"+markCounter).transition("numberOneFanBrush").attrTween("d",function () {var interpolator = d3.interpolateArray([(start+end)/2,(start+end)/2,r1,r2],[start,end,r1,r2]); return function(t){return highlightPathGenerator(interpolator(t)[0],interpolator(t)[1],interpolator(t)[2],interpolator(t)[3]);}}).delay(0).duration(1500);
d3.select("#mark"+markCounter).transition("fadeInOut").style("opacity",1).delay(0).duration(1500);
function highlightIconsOnClick() {
var highlightSelected = d3.select("#"+lastMouseoverMarkElementID);
if (arguments[0].match(/min/ig)) {
if (highlightSelected.attr("class").split(/\s/).length === 1) {
if (parseFloat(highlightSelected.style("opacity")) > 0) {
highlightSelected.transition("minSingleFadeout").style("opacity",0).delay(0).duration(1500);
} else {
highlightSelected.transition("minSingleFadein").style("opacity",1).delay(0).duration(1500);
}
} else {
var classSelected = d3.selectAll("."+highlightSelected.attr("class").split(/\s/)[1]);
if (parseFloat(highlightSelected.style("opacity")) > 0) {
classSelected.transition("minMultiFadeout").style("opacity",0).delay(0).duration(1500);
} else {
classSelected.transition("minMultiFadein").style("opacity",1).delay(0).duration(1500);
}
}
} else {
if (highlightSelected.attr("class").split(/\s/).length === 1) {
d3.selectAll(".highlightIcons").remove();
highlightSelected.remove();
delete markHash[lastMouseoverMarkElementID];
}
else {
d3.selectAll(".highlightIcons").remove();
var classOfSubject = highlightSelected.attr("class").split(/\s/)[1];
for (var key in markHash) {
if (d3.select("#"+key).attr("class").split(/\s/)[1] === classOfSubject) {
delete markHash[key];
}
}
d3.selectAll("."+classOfSubject).remove();
}
}
}
}
//This is the actual function that inserts a highlight element. Provide an object from the markHash with name,start,end,r1,r2 and color
//***Highlight Path Generator used by above function***
var lineBasis = d3.svg.line().interpolate("basis");
function highlightPathGenerator(start,end,r1,r2) {
//horizontalRoundness parameter is the amount of degrees between the start and end of the horizontal (paralel to the axis of the highlight) b-spline, measure from the center of the figure.
//don't touch too much to this parameter, as seven is a heavenly number. You will be stricken by Tyriel.
var horizontalRoundness;
var horizontalRoundnessParameter = 7;
//***Below if clause is calibrated using tuba1a (451aa) and brca2 (3418aa). The right side of the test condition changes based on the length of the protein. ..*fasta_sorted.length/451 and its powers are the calibration factors. Minimum threshold is 16.***
if ((Math.abs(start-end) > 2*(Math.pow((fasta_sorted.length/451),3/2) + horizontalRoundnessParameter*(fasta_sorted.length/451) + 1)) && (Math.abs(start-end) > 16)) {
horizontalRoundness = parseInt(fasta_sorted.length/355*horizontalRoundnessParameter);
} else {
horizontalRoundness = (end-start)*(GoldenRatio-1)/2;
}
//Similar to above, verticalRoundness is the 'ratio' of the vertical distance between start and end of the vertical b-spline to the height of the highlight.
var verticalRoundness = (GoldenRatio-1)/2;
var Point1 = [parseInt(3000+r1*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180)),parseInt(3000-r1*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180))];
var Point2 = [parseInt(3000+r2*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180)),parseInt(3000-r2*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180))];
var Point3 = [parseInt(3000+r2*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180)),parseInt(3000-r2*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180))];
var Point4 = [parseInt(3000+r1*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180)),parseInt(3000-r1*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180))];
var Point1Inner = [parseInt(3000+r1*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(start+horizontalRoundness)))-CorrectionFactor*(start+horizontalRoundness))/180)),parseInt(3000-r1*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(start+horizontalRoundness)))-CorrectionFactor*(start+horizontalRoundness))/180))];
var Point2Inner = [parseInt(3000+r2*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(start+horizontalRoundness)))-CorrectionFactor*(start+horizontalRoundness))/180)),parseInt(3000-r2*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(start+horizontalRoundness)))-CorrectionFactor*(start+horizontalRoundness))/180))];
var Point3Inner = [parseInt(3000+r2*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(end-horizontalRoundness)))-CorrectionFactor*(end-horizontalRoundness))/180)),parseInt(3000-r2*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(end-horizontalRoundness)))-CorrectionFactor*(end-horizontalRoundness))/180))];
var Point4Inner = [parseInt(3000+r1*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(end-horizontalRoundness)))-CorrectionFactor*(end-horizontalRoundness))/180)),parseInt(3000-r1*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*(end-horizontalRoundness)))-CorrectionFactor*(end-horizontalRoundness))/180))];
var Point1Outer = [parseInt(3000+(r1-(r1-r2)*verticalRoundness)*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180)),parseInt(3000-(r1-(r1-r2)*verticalRoundness)*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180))];
var Point2Outer = [parseInt(3000+(r2+(r1-r2)*verticalRoundness)*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180)),parseInt(3000-(r2+(r1-r2)*verticalRoundness)*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*start))-CorrectionFactor*start)/180))];
var Point3Outer = [parseInt(3000+(r2+(r1-r2)*verticalRoundness)*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180)),parseInt(3000-(r2+(r1-r2)*verticalRoundness)*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180))];
var Point4Outer = [parseInt(3000+(r1-(r1-r2)*verticalRoundness)*Math.cos(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180)),parseInt(3000-(r1-(r1-r2)*verticalRoundness)*Math.sin(Math.PI*(90-(2.5+(HalfTheWidthAngleOfElement+2*HalfTheWidthAngleOfElement*end))-CorrectionFactor*end)/180))];
if (Math.abs(start-end) <= fasta_sorted.length*360/355/2) {
if(highlightTopRound && highlightBottomRound) {
return lineBasis([Point1Inner,Point1,Point1Outer])+"L"+Point2Outer+lineBasis([Point2Outer,Point2,Point2Inner]).replace(/^M/,"L")+"A"+r2+","+r2+" 0 0,1 "+Point3Inner+lineBasis([Point3Inner,Point3,Point3Outer]).replace(/^M/,"L")+"L"+Point4Outer+lineBasis([Point4Outer,Point4,Point4Inner]).replace(/^M/,"L")+"A"+r1+","+r1+" 0 0,0 "+Point1Inner+"Z";
} else if (highlightTopRound) {
return lineBasis([Point1Inner,Point1,Point1Outer])+"L"+Point2+"A"+r2+","+r2+" 0 0,1 "+Point3+"L"+Point4Outer+lineBasis([Point4Outer,Point4,Point4Inner]).replace(/^M/,"L")+"A"+r1+","+r1+" 0 0,0 "+Point1Inner+"Z";
} else if (highlightBottomRound) {
return "M"+Point1+"L"+Point2Outer+lineBasis([Point2Outer,Point2,Point2Inner]).replace(/^M/,"L")+"A"+r2+","+r2+" 0 0,1 "+Point3Inner+lineBasis([Point3Inner,Point3,Point3Outer]).replace(/^M/,"L")+"L"+Point4+"A"+r1+","+r1+" 0 0,0 "+Point1+"Z";
} else {
return "M"+Point1+"L"+Point2+"A"+r2+","+r2+" 0 0,1 "+Point3+"L"+Point4+"A"+r1+","+r1+" 0 0,0 "+Point1+"Z";
}
} else {
if(highlightTopRound && highlightBottomRound) {
return lineBasis([Point1Inner,Point1,Point1Outer])+"L"+Point2Outer+lineBasis([Point2Outer,Point2,Point2Inner]).replace(/^M/,"L")+"A"+r2+","+r2+" 0 1,1 "+Point3Inner+lineBasis([Point3Inner,Point3,Point3Outer]).replace(/^M/,"L")+"L"+Point4Outer+lineBasis([Point4Outer,Point4,Point4Inner]).replace(/^M/,"L")+"A"+r1+","+r1+" 0 1,0 "+Point1Inner+"Z";
} else if (highlightTopRound) {
return lineBasis([Point1Inner,Point1,Point1Outer])+"L"+Point2+"A"+r2+","+r2+" 0 1,1 "+Point3+"L"+Point4Outer+lineBasis([Point4Outer,Point4,Point4Inner]).replace(/^M/,"L")+"A"+r1+","+r1+" 0 1,0 "+Point1Inner+"Z";
} else if (highlightBottomRound) {
return "M"+Point1+"L"+Point2Outer+lineBasis([Point2Outer,Point2,Point2Inner]).replace(/^M/,"L")+"A"+r2+","+r2+" 0 1,1 "+Point3Inner+lineBasis([Point3Inner,Point3,Point3Outer]).replace(/^M/,"L")+"L"+Point4+"A"+r1+","+r1+" 0 1,0 "+Point1+"Z";
} else {
return "M"+Point1+"L"+Point2+"A"+r2+","+r2+" 0 1,1 "+Point3+"L"+Point4+"A"+r1+","+r1+" 0 1,0 "+Point1+"Z";
}
}
}
//***Highlight Path Generator used by above function***
//Global controller, similar to ExtractionPane
var MarkPane = "closed";
//Similar to DropDownExtract
function DropDownMark(selection) {
MarkPane = "open";
selection
.selectAll("rectanglesDropDownMark")
.data([0,1,2,3])
.enter()
.append("rect")
//i*(i-1)* == All will have the same x and width values, but the third will be similar to its correspondent in DropDownExtract
.attr("width",function(d,i) {if (i < 3) {return 1300;} else {return 1300-2*1300/Math.pow(GoldenRatio,2);} })
.attr("height", 100)
//i*(i-1)* == All will have the same x and width values, but the third will be similar to its correspondent in DropDownExtract
.attr("x",function(d,i) {if (i < 3) {return 3000-(1300)/2;} else {return 3000-(1300-2*1300/Math.pow(GoldenRatio,2))/2;}})
.attr("y",function (d,i) {return 2850+i*101;})
//here I add some attr to make the corners rounded
.attr("rx",15)
.attr("ry",15)
//here I add some attr to make the corners rounded
.attr("fill","DimGray")
.attr("fill-opacity",0.9)
.attr("stroke","DimGray")
.attr("stroke-opacity",0.0)
.attr("stroke-width",0.0)
.attr("id",function (d,i) {return "DropDownRectMark"+String(i);})
.attr("class","DropDownRectMark");
//***Input boxes
insertInput('{"left":"641","top":"751","height":"25px","width":"40px","class":"htmlElements","check":"number","flushCounter":"yes"}');
insertInput('{"left":"714","top":"751","height":"25px","width":"40px","class":"htmlElements","check":"number"}');
insertInput('{"left":"787","top":"751","height":"25px","width":"40px","class":"htmlElements","check":"radius"}');
insertInput('{"left":"860","top":"751","height":"25px","width":"40px","class":"htmlElements","check":"radius"}');
insertInput('{"left":"697","top":"772","height":"25px","width":"73px","class":"htmlElements","check":"color"}');
insertInput('{"left":"843","top":"772","height":"25px","width":"73px","class":"htmlElements","check":"none"}');
//***Input boxes
//***Descriptions of Inputs and the Mark Button***
d3.select("#annotation").append("text").text("Start").attr("class","DropDownRectMark").attr("text-anchor","middle").attr("x", 2475).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("End").attr("class","DropDownRectMark").attr("text-anchor","middle").attr("x", 2825).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("outer-R").attr("class","DropDownRectMark").attr("text-anchor","middle").attr("x", 3175).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("inner-R").attr("class","DropDownRectMark").attr("text-anchor","middle").attr("x", 3525).attr("y", 2925).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
//control the roundness of the generated highlights
d3.select("#annotation").append("circle").attr("class","DropDownRectMark higlightRoundnessControls").attr("id","highlightRoundnessTopControl").attr("r",20).attr("cx",3035).attr("cy",3010).style("fill",function () {if (highlightTopRound){return "Orange";}else{return "DimGray";}}).attr("fill-opacity",0.9).style("stroke","Orange").attr("stroke-opacity",0.6).attr("stroke-width",10).on("click",function() {d3.select("#highlightRoundnessTopControl").style("fill",function () {if (highlightTopRound){highlightTopRound = false; return "DimGray";}else{highlightTopRound = true; return "Orange";}});});
d3.select("#annotation").append("circle").attr("class","DropDownRectMark higlightRoundnessControls").attr("id","highlightRoundnessBottomControl").attr("r",20).attr("cx",3377).attr("cy",3010).style("fill",function () {if (highlightBottomRound){return "Orange";}else{return "DimGray";}}).attr("fill-opacity",0.9).style("stroke","Orange").attr("stroke-opacity",0.6).attr("stroke-width",10).on("click",function() {d3.select("#highlightRoundnessBottomControl").style("fill",function () {if (highlightBottomRound){highlightBottomRound = false; return "DimGray";}else{highlightBottomRound = true; return "Orange";}});});
//control the roundness of the generated highlights
d3.select("#annotation").append("text").text("Color:").attr("class","DropDownRectMark").attr("text-anchor","middle").attr("x", 2475).attr("y", 3126).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("Name:").attr("class","DropDownRectMark").attr("text-anchor","middle").attr("x", 3175).attr("y", 3126).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible");
d3.select("#annotation").append("text").text("Mark").attr("class","DropDownRectMark").attr("id","Mark").attr("text-anchor","middle").attr("x", 3000).attr("y", 3227).attr("font-family","Arial").attr("font-size","60px").attr("fill","LightGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).attr("visibility","visible").attr("font-weight","bold")
.on("mouseover", function () {
d3.select(this).transition().attr("font-size",80).attr("fill","Orange").delay(0).duration(250);
})
.on("mouseout", function () {
d3.select(this).transition().attr("font-size",60).attr("fill","LightGray").delay(0).duration(250);
})
.on("click", function () {
if (d3.selectAll(".htmlElementsInputs")[0].some(function(x){
if ((x.value === "")||(x.value === undefined)) {
return true;
}
})) {
alert ("Check your input values!\nStart: Start amino acid number (1-max length),\nEnd: End aminoacid number (1-max length),\nOuter-R: Outer radius of the highlight (0.38-1.07),\nInner-R: Inner radius of the highlight (0.38-1.07),\nColor: Enter a html color name with optional opacity value between 0-1.0 separated by comma such as->Green,0.5. Default opacity is 0.5,\nName: Indicate what you want to be displayed when you move your cursor over the highlight area.");
} else {
var name = document.getElementById("defaulthtmlInput5").value;
var start = document.getElementById("defaulthtmlInput0").value;
var end = document.getElementById("defaulthtmlInput1").value;
var r1 = document.getElementById("defaulthtmlInput2").value;
var r2 = document.getElementById("defaulthtmlInput3").value;
var color = document.getElementById("defaulthtmlInput4").value;
if (parseFloat(start) > parseFloat(end)){
alert ("Start cannot be bigger than end!");
} else if (parseFloat(r1) === parseFloat(r2)) {
alert ("Outer and inner radii cannot be the same!");
} else {
markHash[("mark"+markCounter)] = [name,start,end,r1,r2,color];
residuesToHighlight(markHash[("mark"+markCounter)]);
markCounter++;
}
}
});
//***Descriptions of Inputs and the Mark Button***
}
//Similar to DropDownExtract
//Calculate domain percentage
function calculateDomainPercentage () {
var count = 0;
for (var i = 0; i < ids["con"].length;i++) {
if(!(d3.select(ids["con"][i]).attr("class") === null) && !(d3.select(ids["con"][i]).attr("class") === "allCons")) {
count++;
}
}
var percentage = parseFloat(count/fasta_sorted.length*100).toFixed(1);
//alert (percentage+"percent of your protein is made up of domains!");
return percentage;
}
//Calculate domain percentage
//***Mark Tab***
var DropDownClickMark = 0;
d3.select("#annotation").append("text").text(function() {return "domain percentage: "+ calculateDomainPercentage();}).attr("class","Options").attr("id","OverviewMark").attr("text-anchor","middle").attr("x", 3000).attr("y", 2800).attr("font-family","Arial").attr("font-size","60px").attr("fill","DimGray").attr("stroke","DimGray").attr("fill-opacity",0.9).attr("stroke-opacity",0.0).style("visibility","hidden").style("opacity",0)
.on("mouseover",function() {
d3.select("#OverviewMark").transition().attr("font-size","120px").attr("fill","Orange").delay(0).duration(500);
d3.selectAll(".overviews").style("opacity",0);
})
.on("mouseout",function() {
d3.select("#OverviewMark").transition().attr("font-size","60px").attr("fill","DimGray").delay(0).duration(500);
d3.selectAll(".overviews").style("opacity",1);
})
.on("click",function() {
if (DropDownClickMark == 0) {
//Close other open overview tabs
if (ExtractionPane === "open") {
d3.selectAll(".DropDownRectExtract").remove();
DropDownClickExtract = 0;
ExtractionPane = "closed";
}
//Close other open overview tabs
d3.select("#annotation").call(DropDownMark);
} else {
d3.selectAll(".htmlElements").remove();
d3.selectAll(".DropDownRectMark").remove();
MarkPane = "closed";
}
if (DropDownClickMark == 0) {
DropDownClickMark = 1;
} else {
DropDownClickMark = 0;
}
});
//***Mark Tab***
//***Overview Tabs***
d3.select("#annotation").selectAll("overviewRects").data(overviewTabArray).enter()
.append("path")
.attr("d",function(d,i) {return "M"+(2320+(i+1)*1300/(overviewTabArray.length+1))+",2690L"+(2320+(i+1)*1300/(overviewTabArray.length+1)+45)+",2690A15,15 0 1,1 "+(2320+(i+1)*1300/(overviewTabArray.length+1)+45)+",2720L"+(2320+(i+1)*1300/(overviewTabArray.length+1))+",2720A15,15 0 1,1 "+(2320+(i+1)*1300/(overviewTabArray.length+1))+",2690Z"})
.attr("fill",function(d,i) {if (i == 0) {return "Orange";} else {return "DimGray";}})
.attr("fill-opacity",0.6)
.attr("stroke",function(d,i) {if (i == 0) {return "Orange";} else {return "DimGray";}})
.attr("stroke-opacity",1.0)
.attr("stroke-width",6)
.attr("stroke-linejoin","round")
.attr("class","overviews")
.attr("id",function (d,i) {return d.id+"Button";})
.on("click",function (d,i) {
var ID = d3.select(this).attr("id");
d3.selectAll(".overviews").filter(function() {if (d3.select(this).attr("id") == ID) {return 0;} else {return 1}}).each(function () {d3.select(this).style("fill","DimGray").style("stroke","DimGray");});
d3.select(this).style("fill","Orange").style("stroke","Orange");
for (var i =0;i<overviewTabArray.length;i++) {
if (overviewTabArray[i].id == (ID.replace("Button",""))) {
d3.select("#"+overviewTabArray[i].id).style("visibility","visible").style("opacity",1);
} else {
d3.select("#"+overviewTabArray[i].id).style("visibility","hidden").style("opacity",0);
}
}
});
//***Overview Tabs***
//***Input Focus and Blur***
function inputFocus() {
var ID = arguments[0];
ID = "#"+ID;
if (NeonizeMe == 1) {
if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)) {
d3.select(ID).style("border-width","4px").style("border-color","rgba(30,144,255,0.6)")
.style("box-shadow","0px 0px 10px DodgerBlue,0px 0px 16px DodgerBlue,0px 0px 26px DodgerBlue,0px 0px 42px DodgerBlue,0px 0px 68px DodgerBlue,0px 0px 110px DodgerBlue");
} else {
d3.select(ID).style("border-width","4px").style("border-color","rgba(255,165,0,0.6)")
.style("box-shadow","0px 0px 10px Orange,0px 0px 16px Orange,0px 0px 26px Orange,0px 0px 42px Orange,0px 0px 68px Orange,0px 0px 110px Orange");
}
} else {
if (d3.select("body").style("background-color").match(/rgb\s*\(\s*0\s*,\s*0\s*,\s*0\s*\)/i)) {
d3.select(ID).style("border-width","4px").style("border-color","rgba(30,144,255,0.6)");
} else {
d3.select(ID).style("border-width","4px").style("border-color","rgba(255,165,0,0.6)");
}
}
}
function inputBlur () {
var ID = arguments[0];
ID = "#"+ID;
d3.select(ID).style("border-width","2px").style("border-color","rgba(105,105,105,0.6)").style("box-shadow","none");
}
//***Input Focus and Blur***
<!--A new Tab #2: Mark Tab -->
<!--File API -->
insertInput('{"left":"1383","top":"1362","height":"25px","width":"25px","class":"htmlFileUploadElements","check":"none","prefix":"fileUpload"}');
fileUploadIcon = "data:image/png;base64,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";
//File Input
d3.select("#fileUploadhtmlDiv0").style("visibility","hidden");
d3.select("#fileUploadhtmlForm0").style("visibility","hidden");
d3.select("#fileUploadhtmlInput0").attr("type","file").attr("onchange","readFunc(event)").attr("accept","text/plain").attr("name","fileUploadArea").style("visibility","hidden");
//File Input
//Action Tab Lower Right Corner
d3.select("#annotation").append("text").text("Action:").attr("x",5800).attr("y",5975).style("font-family","sans-serif").style("font-size","45px").attr("text-anchor","start").style("fill","DimGray").attr("fill-opacity",0.9).attr("id","fileUploadActionOpts").attr("class","Options");
var actionHash = [{"action":"Mark","control":"MarkPane,fileLoadedStatus","function":pacedMarkPlacerFunc},{"action":"Hist","control":"HistogramPane,fileLoadedStatus","function":registerNewHistogram}];
d3.select("#annotation")
.selectAll("actionOptions")
.data(actionHash)
.enter()
.append("text")
.text(function(d,i){return d.action})
.attr("x",function(d,i) {return 6000+200*i;})
.attr("y",5975)
.attr("font-family","sans-serif")
.attr("font-size", 45)
.attr("text-anchor","start")
.style("fill","DimGray")
.style("opacity",0.2)
.attr("fill-opacity",0.9)
.attr("stroke-opacity",0)
.attr("id",function (d,i) {return "actionOption"+i;})
.attr("class","actionOptions")
.on("click",function (d,i) {
var controlElements = d.control.split(/,/);
if (controlElements.every(actionHashControlFunc)) {
d.function();
} else {
alert("Either the required pane is not open or the file is not loaded. Check if these conditions are met..");
}
});
//Action Tab Lower Right Corner
d3.select("#annotation").append("svg:image").attr("xlink:href",fileUploadIcon).attr("title","fileUploadIcon").attr("alt","fileUploadIcon").attr("x",5900).attr("y",5800).attr("width","100px").attr("height","100px").style("opacity",0.62).attr("id","fileUploadIcon");
d3.select("#fileUploadIcon")
.on("mouseover", function () {
d3.select(this).style("opacity",1);
})
.on("mouseout", function () {
d3.select(this).style("opacity",0.62);
})
.on("click", function () {
if (navigator.userAgent.match(/iphone|ipad|ipod/i)) {
alert("Unfortunately your device does not have file browsing system. You won't be able to use this option..");
}
else if (window.FileReader) {
document.getElementById("fileUploadhtmlInput0").click();
} else {
alert("Unfortunately your browser does not support FileReader, consider upgrading or switching to another browser..");
}
});
d3.select("#annotation").append("text").text("No files loaded").attr("x",6050).attr("y",5875).style("font-family","sans-serif").style("font-size","45px").attr("text-anchor","start").style("fill","DimGray").attr("fill-opacity",0.9).attr("id","fileUploadStatus").attr("class","Options");
var fileOutput;
var pace;
var fileLoadedStatus = 0;
function readFunc(event) {
var inputID = event.target.id;
var fileReader = new FileReader();
fileReader.onload = function () {
if (event.target.files[0].name.length > 15) {
document.getElementById("fileUploadStatus").textContent = event.target.files[0].name.substring(0,11)+"...";
} else {
document.getElementById("fileUploadStatus").textContent = event.target.files[0].name;
}
fileOutput = fileReader.result;
fileOutput = fileOutput.split(/\n/);
for (var i = fileOutput.length-1;i>=0;i--) {
if (fileOutput[i].match(/^\s*\t*\n*\r*$/)) {
fileOutput.pop()
} else {
break;
}
}
if (fileOutput[0].match(/pace/)) {
var firstLine = fileOutput.shift();
pace = parseInt(firstLine.replace(/^\s*\t*pace\s*\t*=\s*\t*/,""));
captureClass = firstLine.replace(/^\s*\t*pace\s*\t*=\s*\t*[0-9]+/,"").replace(/.*;?\t*\s*bind\s*\t*=\s*\t*/,"").trim();
}
fileLoadedStatus = 1;
d3.selectAll(".actionOptions").style("fill","Orange").style("opacity",0.9);
}
fileReader.readAsText(event.target.files[0]);
}
function pacedMarkPlacerFunc() {
if (pace === undefined || pace === null || typeof pace !== "number" || isNaN(pace)) {
alert ("You should explicity set 'pace' value in your file..\nSomething like: pace = 300")
} else {
d3.select("#fileUploadIcon").style("opacity",0).style("visibility","hidden");
d3.selectAll(".actionOptions").style("visibility","hidden");
d3.select(document.body).append("div").attr("style","width:280px;position:absolute;background:transparent;height:123px;left:610px;top:682px").attr("id","blockUserInteractionDiv");
var i = 0;
var pacedMarkPlacer = setInterval(function () {
var fields = fileOutput[i].split(/\t/);
var checkStatus = 0;
document.getElementById("defaulthtmlInput5").value = fields[5];
//nothing to check here
document.getElementById("defaulthtmlInput0").value = fields[0];
checkStatus += inputCheckNumber("defaulthtmlInput0","number");
document.getElementById("defaulthtmlInput1").value = fields[1];
checkStatus += inputCheckNumber("defaulthtmlInput1","number");
document.getElementById("defaulthtmlInput2").value = fields[2];
checkStatus += inputCheckNumber("defaulthtmlInput2","radius");
document.getElementById("defaulthtmlInput3").value = fields[3];
checkStatus += inputCheckNumber("defaulthtmlInput3","radius");
document.getElementById("defaulthtmlInput4").value = fields[4];
checkStatus += inputCheckColor("defaulthtmlInput4");
if(fields[6] !== undefined && fields[6].match(/round/i)) {
if (!highlightTopRound) {
d3.select("#highlightRoundnessTopControl").on("click")();
}
} else {
if (highlightTopRound) {
d3.select("#highlightRoundnessTopControl").on("click")();
}
}
if(fields[7] !== undefined && fields[7].match(/round/i)) {
if (!highlightBottomRound) {
d3.select("#highlightRoundnessBottomControl").on("click")();
}
} else {
if (highlightBottomRound) {
d3.select("#highlightRoundnessBottomControl").on("click")();
}
}
if (checkStatus === 5) {
d3.select("#Mark").on("click")();
}
i++;
if (i == fileOutput.length) {
clearInterval(pacedMarkPlacer);
pace = null;
captureClass = "";
fileOutput = null;
fileLoadedStatus = 0;
d3.select("#blockUserInteractionDiv").remove();
document.getElementById("fileUploadhtmlInput0").value = null;
document.getElementById("fileUploadStatus").textContent = "No files loaded";
d3.select("#fileUploadIcon").style("opacity",0.62).style("visibility","visible");
d3.selectAll(".actionOptions").style("fill","DimGray").style("opacity",0.2).style("visibility","visible");
}
},pace);
}
}
function actionHashControlFunc(value,index) {
if (value.match(/pane/i)) {
if (eval(value) === "open") {
return true;
} else {
return false;
}
} else if (typeof eval(value) === "number") {
if (eval(value) === 1) {
return true;
} else {
return false;
}
} else {
alert("Control function fails to check for conditions to trigger action..");
return false;
}
}
<!--File API -->
<!--Histogram-->
//HistogramPane is always open
var HistogramPane = "open";
var histogramMinAbsoluteHeight;
var histogramMaxAbsoluteHeight;
var histogramStepDistance;
var conservationScores = ids["con"].map(function(d,i){return parseInt(d.replace(/^.*Conservation-Score_/,""));});
var Or_Hist_Path_Data = {};
for (var i = 0;i< ids["con"].length;i++) {
var pathData = d3.select(ids["con"][i]).attr("d");
Or_Hist_Path_Data[ids["con"][i]] = pathData;
}
calculateHistogramStepDistance();
function calculateHistogramStepDistance() {
histogramMinAbsoluteHeight = d3.min(conservationScores);
histogramMaxAbsoluteHeight = d3.max(conservationScores);
var firstTopRightCornerX = extractHistCorners(ids["con"][0]).tRx;
var firstTopRightCornerY = extractHistCorners(ids["con"][0]).tRy;
var firstBottomRightCornerX = extractHistCorners(ids["con"][0]).bRx;
var firstBottomRightCornerY = extractHistCorners(ids["con"][0]).bRy;
if (histogramMinAbsoluteHeight === histogramMaxAbsoluteHeight) {
histogramStepDistance = Math.sqrt(Math.pow((firstTopRightCornerX- firstBottomRightCornerX),2)+Math.pow((firstTopRightCornerY-firstBottomRightCornerY),2));
} else {
histogramStepDistance = Math.sqrt(Math.pow((firstTopRightCornerX- firstBottomRightCornerX),2)+Math.pow((firstTopRightCornerY-firstBottomRightCornerY),2))/Math.round(1+(conservationScores[0]-histogramMinAbsoluteHeight)/(histogramMaxAbsoluteHeight-histogramMinAbsoluteHeight)*9);
}
}
function changeBarHeight(id,stepSize){
if (stepSize > 10) {
alert ("Maximum step size is 10!");
stepSize = 10;
}
var angleLeft = Math.atan(Math.abs((extractHistCorners(id).tLy-extractHistCorners(id).bLy)/(extractHistCorners(id).tLx-extractHistCorners(id).bLx)));
var angleRight = Math.atan(Math.abs((extractHistCorners(id).tRy-extractHistCorners(id).bRy)/(extractHistCorners(id).tRx-extractHistCorners(id).bRx)));
var neWtLx = extractHistCorners(id).bLx+(stepSize*histogramStepDistance*Math.cos(angleLeft))*Math.sign(extractHistCorners(id).tLx-extractHistCorners(id).bLx);
var neWtLy = extractHistCorners(id).bLy+(stepSize*histogramStepDistance*Math.sin(angleLeft))*Math.sign(extractHistCorners(id).tLy-extractHistCorners(id).bLy);
var neWtRx = extractHistCorners(id).bRx+(stepSize*histogramStepDistance*Math.cos(angleRight))*Math.sign(extractHistCorners(id).tRx-extractHistCorners(id).bRx);
var neWtRy = extractHistCorners(id).bRy+(stepSize*histogramStepDistance*Math.sin(angleRight))*Math.sign(extractHistCorners(id).tRy-extractHistCorners(id).bRy);
var neWpath = histPathRecompile (id,neWtLx,neWtLy,neWtRx,neWtRy);
d3.select(id).transition("histUpdate").attr("d",neWpath).delay(0).duration(1000);
}
function extractHistCorners(id) {
var hash = {};
hash.bLx = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[1]);
hash.bLy = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[2]);
hash.tLx = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[20]);
hash.tLy = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[21]);
hash.tRx = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[12]);
hash.tRy = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[13]);
hash.bRx = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[9]);
hash.bRy = parseFloat(Or_Hist_Path_Data[id].split(/[MLAZ,]|\s+/)[10]);
return hash;
}
function histPathRecompile (id,tLx,tLy,tRx,tRy) {
return "M"+extractHistCorners(id).bLx+","+extractHistCorners(id).bLy+" A2250.000,2250.000 40.000 0,1 "+extractHistCorners(id).bRx+","+extractHistCorners(id).bRy+" L"+tRx+","+tRy+" A2430.000,2430.000 0.000 0,0 "+tLx+","+tLy+" Z";
}
function histogramUpdate (array) {
var arraySign = array.map(function(x){if(Math.sign(parseFloat(x))===0){return 1;}else{return Math.sign(parseFloat(x));}});
array = array.map(function(x){return Math.abs(parseFloat(x));});
var min = d3.min(array);
var max = d3.max(array);
if (array.length === ids["con"].length) {
for (var i = 0;i<ids["con"].length;i++) {
var stepSize = Math.round(arraySign[i]*(1+(array[i]-min)/(max-min)*9));
changeBarHeight(ids["con"][i],stepSize);
}
} else {
alert("Input file has different number of entries compared to conservation track..");
}
}
var registeredHistograms = [];
var registeredHistogramID = -1;
var activeHistogram = [];
var histogramGradualFade;
function registerNewHistogram () {
var array = fileOutput;
if (registeredHistogramID === 2) {
registeredHistogramID = 0;
} else {
registeredHistogramID++;
}
if (registeredHistograms.length === 3) {
registeredHistograms.pop();
registeredHistograms.unshift([array,registeredHistogramID]);
} else {
registeredHistograms.unshift([array,registeredHistogramID]);
}
render();
function render() {
d3.selectAll(".registeredHistogramCircles").remove();
if (registeredHistograms.length === 0) {
activeHistogram = [];
histogramUpdate(conservationScores);
} else {
d3.select("#annotation").selectAll("registeredHistograms").data(registeredHistograms).enter().append("circle").attr("cx",3000).attr("cy",function(d,i){return 550+i*70}).attr("r",20).attr("fill-opacity",0).attr("fill","DimGray").attr("stroke-width",15).attr("stroke",function(d,i){return ["#1b9e77","#d95f02","#7570b3"][d[1]];}).attr("stroke-opacity",0.9).attr("class","registeredHistogramCircles").attr("id",function(d,i){return "registeredHistogramCircles"+i;}).style("opacity",0)
.on("mouseover",function(d,i){
d3.selectAll(".registeredHistogramCircles").transition().style("opacity",1).delay(0).duration(500);
var cx = parseFloat(d3.select(this).attr("cx"));
var cy = parseFloat(d3.select(this).attr("cy"));
var ID = d[1];
clearTimeout(histogramGradualFade);
d3.selectAll(".histogramIcons").remove();
d3.select("#annotation").append("svg:image").attr("xlink:href",closeHighlightIcon).attr("title","close").attr("alt","close").attr("x",function() {return cx+30;}).attr("y",function() {return cy-60;}).attr("width","50px").attr("height","50px").style("opacity",0).attr("class","histogramIcons");
d3.selectAll(".histogramIcons").transition().style("opacity",0.9).each("end",function() {d3.select(this).on("mouseover",function(){clearTimeout(histogramGradualFade);d3.select(this).attr("xlink:href",function() {return eval(String(d3.select(this).attr("title"))+"HighlightIconOrange");});}).on("mouseout",function(){histogramGradualFade = setTimeout(function() {d3.selectAll(".histogramIcons").remove();d3.selectAll(".registeredHistogramCircles").transition().style("opacity",0).delay(0).duration(0);},2000);d3.select(this).attr("xlink:href",function() {return eval(String(d3.select(this).attr("title"))+"HighlightIcon");});}).on("click",function(){clearTimeout(histogramGradualFade); d3.selectAll(".histogramIcons").remove(); var array = []; for (var i = 0;i<registeredHistograms.length;i++){if(registeredHistograms[i][1] !== ID){array.push(registeredHistograms[i]);}}; registeredHistograms = array; render();});}).delay(0).duration(0);
})
.on("mouseout",function(d,i){
histogramGradualFade = setTimeout(function() {d3.selectAll(".histogramIcons").remove();d3.selectAll(".registeredHistogramCircles").transition().style("opacity",0).delay(0).duration(0);},2000);
})
.on("click",function(d,i){
//alert ("My data:"+d[0]+","+"My index:"+d[1]);
d3.selectAll(".registeredHistogramCircles").transition().each("end",function(){if(d3.select(this).attr("id") === "registeredHistogramCircles"+i){d3.select(this).transition().attr("fill-opacity",0.9).delay(0).duration(500);}}).attr("fill-opacity",0).delay(0).duration(0);
activeHistogram = [d];
histogramUpdate(d[0]);
});
}
pace = null;
captureClass = "";
fileOutput = null;
fileLoadedStatus = 0;
document.getElementById("fileUploadhtmlInput0").value = null;
document.getElementById("fileUploadStatus").textContent = "No files loaded";
d3.selectAll(".actionOptions").style("fill","DimGray").style("opacity",0.2).style("visibility","visible");
}
}
function showNewHistogramValue(id) {
if (activeHistogram.length !== 0) {
var index = ids["con"].indexOf(id);
var XY = computeHypotheticalBarDistance(id);
d3.select("#annotation").append("text").text(function () {return activeHistogram[0][0][index];}).attr("class","text2").attr("text-anchor","middle").attr("x",XY[0]).attr("y",XY[1]).attr("font-family","sans-serif").attr("font-size","100px").attr("fill","DodgerBlue").attr("stroke","DodgerBlue").attr("fill-opacity",0.0).attr("stroke-opacity",0.0).attr("visibility","visible");
}
function computeHypotheticalBarDistance(id) {
var stepSize = 20;
var angleLeft = Math.atan(Math.abs((extractHistCorners(id).tLy-extractHistCorners(id).bLy)/(extractHistCorners(id).tLx-extractHistCorners(id).bLx)));
var angleRight = Math.atan(Math.abs((extractHistCorners(id).tRy-extractHistCorners(id).bRy)/(extractHistCorners(id).tRx-extractHistCorners(id).bRx)));
var neWtLy = extractHistCorners(id).bLy+(stepSize*histogramStepDistance*Math.sin(angleLeft))*Math.sign(extractHistCorners(id).tLy-extractHistCorners(id).bLy);
var neWtRx = extractHistCorners(id).bRx+(stepSize*histogramStepDistance*Math.cos(angleRight))*Math.sign(extractHistCorners(id).tRx-extractHistCorners(id).bRx);
var newX = (extractHistCorners(id).bLx+neWtRx)/2;
var newY = (neWtLy+extractHistCorners(id).bRy)/2;
return [newX,newY];
}
}
<!--Histogram-->
<!--WindowInterface-->
var sampleLoc = {"x":1500,"y":1500,"width":1500,"height":2000,"rx":100,"ry":100,"iconPadding":100,"iconSize":100,"minWidth":1500,"minHeight":2000,"maxWidth":5000,"maxHeight":5000};
//global window icons base64
var closeWindowIcon = "data:image/png;base64,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";
var enlargeWindowIcon = "data:image/png;base64,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";
var relocateWindowIcon = "data:image/png;base64,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";
var dragWindowIcon = "data:image/png;base64,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";
var magnifyWindowIcon ="data:image/png;base64,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";
var minifyWindowIcon ="data:image/png;base64,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";
//global window icons base64
var relocateWindow = "";
function renderWindow(type,ID,location,funcToCall,arg) {
var internalCoordinates;
var dragTransparency = d3.behavior.drag().origin(function(){var x = parseFloat(d3.select(this).attr("x"));var y = parseFloat(d3.select(this).attr("y"));return {"x":x,"y":y};}).on("drag", dragTransparencyFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragTransparencyFunc() {
//console.log(d3.event.x);
//console.log(d3.event.y);
//d3.select(this).attr("x",internalCoordinates[0]).attr("y",internalCoordinates[1]);
//d3.select(this).attr("x",d3.event.x).attr("y",d3.event.y);
var minX = location.iconPadding;
var maxX = location.iconSize*2+location.iconPadding*3;
d3.select(this).attr("x",Math.max(minX,Math.min(d3.event.x,maxX)));
d3.select("#"+ID+"rect").attr("fill-opacity",function(){return (Math.max(minX,Math.min(d3.event.x,maxX))-minX)/(maxX-minX);});
}
//main svg
d3.select("#annotation").append(type).attr("id",ID).attr("x",function(){return parseInt(location.x);}).attr("y",function (){return parseInt(location.y);}).attr("width",function(){return parseInt(location.width);}).attr("height",function(){return parseInt(location.height);}).on("mousemove",function (){internalCoordinates = getInternalCoordinates("#"+ID)});
//background rect
d3.select("#"+ID).append("rect").attr("id",function(){return ID+"rect";}).attr("x",function(){return parseInt(location.width)/2;}).attr("y",function(){return parseInt(location.height)/2;}).attr("width",0).attr("height",0).attr("rx",function(){if(!(location.rx === undefined)){return parseInt(location.rx);}else{return 15;}}).attr("ry",function(){if(!(location.ry === undefined)){return parseInt(location.ry);}else{return 15;}}).attr("fill-opacity",0.25).attr("fill","DimGray");
warp(ID+"rect",location.width,location.height);
//add icons
d3.select("#"+ID).append("svg:image").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"enlarge";}).attr("xlink:href",enlargeWindowIcon).attr("title","enlargeWindowIcon").attr("alt","enlarge").attr("x",function() {return location.iconPadding;}).attr("y",function() {return location.iconPadding;}).attr("width",location.iconSize).attr("height",location.iconSize).style("opacity",0).attr("onmousedown",function(){return "enlargeStartMD(evt,'#"+ID+"')";}).attr("onmousemove",function(){var addionalArguments= ","+JSON.stringify(location);return "enlargeMeMM(evt,'#"+ID+"'"+addionalArguments+")";}).attr("onmouseout",function(){var addionalArguments= ","+JSON.stringify(location)+","+funcToCall+","+JSON.stringify(arg); return "enlargeEndMO(evt,'#"+ID+"'"+addionalArguments+")";}).attr("onmouseup",function(){return "enlargeEndMU(evt,'"+ID+"',"+funcToCall+","+JSON.stringify(arg)+")"}).on("mouseover",function(){iconMagify("enlarge")}).on("mouseout",function(){iconMagify("reset")});
d3.select("#"+ID).append("svg:image").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"relocate";}).attr("xlink:href",relocateWindowIcon).attr("title","relocateWindowIcon").attr("alt","relocate").attr("x",function() {return 2*(location.iconPadding)+location.iconSize;}).attr("y",function() {return location.iconPadding;}).attr("width",location.iconSize).attr("height",location.iconSize).style("opacity",0).on("mouseover",function(){iconMagify("relocate")}).on("mouseout",function(){iconMagify("reset")}).on("click",function(){d3.event.stopPropagation(); relocateWindow = "#"+ID;});
d3.select("#"+ID).append("svg:image").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"drag";}).attr("xlink:href",dragWindowIcon).attr("title","dragWindowIcon").attr("alt","drag").attr("x",function() {return 3*(location.iconPadding)+2*(location.iconSize);}).attr("y",function() {return location.iconPadding;}).attr("width",location.iconSize).attr("height",location.iconSize).style("opacity",0).attr("onmousedown",function(){return "dragStartMD(evt,'#"+ID+"')"}).attr("onmousemove",function(){return "dragMeMM(evt,'#"+ID+"')"}).attr("onmouseout",function(){return "dragEndMO(evt,'#"+ID+"')"}).attr("onmouseup",function(){return "dragEndMU(evt)"}).on("mouseover",function(){iconMagify("drag");}).on("mouseout",function(){iconMagify("reset");});
d3.select("#"+ID).append("svg:image").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"magnify";}).attr("xlink:href",magnifyWindowIcon).attr("title","magnifyWindowIcon").attr("alt","magnify").attr("x",function() {return 4*(location.iconPadding)+3*(location.iconSize);}).attr("y",function() {return location.iconPadding;}).attr("width",location.iconSize).attr("height",location.iconSize).style("opacity",0).on("mouseover",function(){iconMagify("magnify");}).on("mouseout",function(){iconMagify("reset");}).attr("onclick",function(){var addionalArguments= ","+JSON.stringify(location)+",1.1,"+funcToCall+","+JSON.stringify(arg); return "magnifyClick(evt,'#"+ID+"'"+addionalArguments+")";});
d3.select("#"+ID).append("svg:image").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"minify";}).attr("xlink:href",minifyWindowIcon).attr("title","minifyWindowIcon").attr("alt","minify").attr("x",function() {return 5*(location.iconPadding)+4*(location.iconSize);}).attr("y",function() {return location.iconPadding;}).attr("width",location.iconSize).attr("height",location.iconSize).style("opacity",0).on("mouseover",function(){iconMagify("minify");}).on("mouseout",function(){iconMagify("reset");}).attr("onclick",function(){var addionalArguments= ","+JSON.stringify(location)+",0.9,"+funcToCall+","+JSON.stringify(arg); return "magnifyClick(evt,'#"+ID+"'"+addionalArguments+")";});
d3.select("#"+ID).append("svg:image").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"close";}).attr("xlink:href",closeWindowIcon).attr("title","closeWindowIcon").attr("alt","closeWindow").attr("x",function() {return location.width-location.iconPadding-location.iconSize;}).attr("y",function() {return location.iconPadding;}).attr("width",location.iconSize).attr("height",location.iconSize).style("opacity",0).on("mouseover",function(){iconMagify("close")}).on("mouseout",function(){iconMagify("reset")}).on("click",function(){d3.select("#"+ID).remove();});
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"knobTrail";}).attr("x",location.iconPadding).attr("y",function(){return location.height-location.iconPadding+location.iconSize/4-7.5;}).attr("width",location.iconSize*2.5+location.iconPadding*2).attr("height",15).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").style("opacity",0);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"icons";}).attr("id",function(){return ID+"knob";}).attr("x",function(){return (location.iconPadding*11+location.iconSize*6)/5;}).attr("y",function(){return location.height-location.iconPadding;}).attr("width",location.iconSize/2).attr("height",location.iconSize/2).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").style("opacity",0).call(dragTransparency);
d3.select("#"+ID).selectAll(ID+"colorBoxes").data(["DimGray","Black","Red","LightSeaGreen","DodgerBlue","DeepPink"]).enter().append("rect").attr("class",function(){return ID+"icons "+ID+"colorBoxes";}).attr("id",function(d){return ID+d;}).attr("x",function (d,i){return location.width-((6-i)*(location.iconPadding/4+location.iconSize/2))-location.iconPadding*3/4;}).attr("y",function(){return location.height-location.iconPadding;}).attr("width",location.iconSize/2).attr("height",location.iconSize/2).attr("rx",15).attr("ry",15).attr("fill-opacity",0.65).attr("fill",function(d){return d;}).style("opacity",0).on("mouseover",function(d){d3.selectAll("."+ID+"colorBoxes").filter(function(){if (d3.select(this).datum() === d){return 0;}else{return 1;}}).call(generalMinifyRect,location.iconSize/2,location.iconSize/2);d3.select(this).call(generalMagnifyRect,location.iconSize/2,location.iconSize/2);}).on("mouseout",function(){d3.selectAll("."+ID+"colorBoxes").call(generalMinifyRect,location.iconSize,location.iconSize);}).on("click",function(d){d3.select("#"+ID+"rect").transition().attr("fill",function(){return d;}).delay(0).duration(1000);});
//initiate icon fade-in or magnify on mouseover
d3.selectAll("."+ID+"icons").data(["enlarge","relocate","drag","magnify","minify","close","knobTrail","knob","DimGray","Black","Red","LightSeaGreen","DodgerBlue","DeepPink"]).each(function(d,i){d3.select("#"+ID+d).transition().style("opacity",1).delay(i*150+100).duration(i*400+250);});
function iconMagify (iconName) {
d3.selectAll("."+ID+"icons").data(["enlarge","relocate","drag","magnify","minify","close"]).each(function(d,i){
d3.select("#"+ID+d).transition("iconMagnifyWidth").attr("width",function(){if(iconName.match(d)){return 1.5*location.iconSize;}else if(iconName.match("reset")){return location.iconSize;}else{return 0.5*location.iconSize;}}).ease("elastic").delay(0).duration(1000);
d3.select("#"+ID+d).transition("iconMagnifyHeight").attr("height",function(){if(iconName.match(d)){return 1.5*location.iconSize;}else if(iconName.match("reset")){return location.iconSize;}else{return 0.5*location.iconSize;}}).ease("elastic").delay(0).duration(1000);
});
}
function generalMinifyRect(selection,width,height) {
selection.transition("width").attr("width",width/2).ease("elastic").delay(0).duration(1000);
selection.transition("height").attr("height",height/2).ease("elastic").delay(0).duration(1000);
}
function generalMagnifyRect(selection,width,height) {
selection.transition("width").attr("width",width*1.5).ease("elastic").delay(0).duration(1000);
selection.transition("height").attr("height",height*1.5).ease("elastic").delay(0).duration(1000);
}
//call a function
if (funcToCall) {
funcToCall.apply(this,[ID,arg]);
}
}
//",[adjustWindowIcon,"+JSON.stringify(location)+",'#"+ID+"','close']"
//more gateways needed sire! xD..
function warp (ID,width,height) {
//console.log(ID+" "+width+" "+height+" !");
d3.select("#"+ID).transition("adjustX").attr("x",function(){var x = parseInt(d3.select(this).attr("x"));return x-width/2;}).delay(0).duration(500);
d3.select("#"+ID).transition("adjustY").attr("y",function(){var y = parseInt(d3.select(this).attr("y"));return y-height/2;}).delay(0).duration(500);
d3.select("#"+ID).transition("adjustW").attr("width",width).delay(0).duration(500);
d3.select("#"+ID).transition("adjustH").attr("height",height).delay(0).duration(500);
d3.select("#"+ID).transition("adjustFO").attr("fill-opacity",0.6).delay(0).duration(1000);
}
//adjust icon position
function adjustWindowIcon (location,ID,iconName) {
var p = location.iconPadding;
var s = location.iconSize;
var w = location.width;
var iconPlacement = {"enlarge":"p","relocate":"2p+s","drag":"3p+2s","close":"w-s-p"};
d3.select(ID+iconName).attr("x",function() {var x = eval(iconPlacement[iconName]);console.log(x);return x;});
console.log(p+" "+s+" "+w+" "+ID+iconName);
}
//get internal coordinates
function getInternalCoordinates (ID) {
var x = d3.select(ID).attr("x");
var y = d3.select(ID).attr("y");
return [coordinates[0]-x,coordinates[1]-y];
}
<!--Drag mechanism 2 -->
//Global Drag 2 variables that will be automatically refreshed for each new draggable element
var dragOffsetX_2 = 0;
var dragOffsetY_2 = 0;
var dragX_2 = 0;
var dragY_2 = 0;
var mousedown_2 = false;
//Global Drag 2 variables that will be automatically refreshed for each new draggable element
//Supply the drag event handler and also the id of the element to be operated on. stopPropagation() and preventDefault() will cancel accidental text selection if pointer/finger leaves the dragged element area.
function dragStartMD(event,ID) {
//alert(event.target.id);--> Check for id
//alert(event.pageX+","+event.pageY);
event.stopPropagation();
event.preventDefault();
dragX_2 = parseFloat(event.pageX)*4.67-500;
dragY_2 = parseFloat(event.pageY)*4.67-500;
dragOffsetX_2 = dragX_2-parseFloat(d3.select(arguments[1]).attr("x"));
dragOffsetY_2 = dragY_2-parseFloat(d3.select(arguments[1]).attr("y"));
mousedown_2 = true;
}
//Supply the drag event handler and also the id of the element to be operated on.
function dragMeMM(event,ID) {
event.stopPropagation();
event.preventDefault();
if(mousedown_2) {
dragX_2 = parseFloat(event.pageX)*4.67-500;
dragY_2 = parseFloat(event.pageY)*4.67-500;
d3.select(arguments[1]).attr("x",function () {return dragX_2-dragOffsetX_2}).attr("y",function() {return dragY_2-dragOffsetY_2});
}
}
function dragEndMO(event) {
event.stopPropagation();
event.preventDefault();
//mousedown_2 = false;
if(mousedown_2) {
dragX_2 = parseFloat(event.pageX)*4.67-500;
dragY_2 = parseFloat(event.pageY)*4.67-500;
d3.select(arguments[1]).attr("x",function () {return dragX_2-dragOffsetX_2}).attr("y",function() {return dragY_2-dragOffsetY_2});
}
}
function dragEndMU(event) {
event.stopPropagation();
event.preventDefault();
mousedown_2 = false;
}
<!--Drag mechanism 2-->
<!--Enlarge mechanism-->
//shares mostly same global variables with drag mechanism 2
var enlargeFixedDimensions ={"x1":0,"y1":0};
function enlargeStartMD(event,ID) {
event.stopPropagation();
event.preventDefault();
dragX_2 = parseFloat(event.pageX)*4.67-500;
dragY_2 = parseFloat(event.pageY)*4.67-500;
dragOffsetX_2 = dragX_2-parseFloat(d3.select(arguments[1]).attr("x"));
dragOffsetY_2 = dragY_2-parseFloat(d3.select(arguments[1]).attr("y"));
enlargeFixedDimensions.x1 = parseFloat(d3.select(arguments[1]).attr("x"))+parseFloat(d3.select(arguments[1]).attr("width"));
enlargeFixedDimensions.y1 = parseFloat(d3.select(arguments[1]).attr("y"))+parseFloat(d3.select(arguments[1]).attr("height"));
mousedown_2 = true;
}
function enlargeMeMM(event,ID,location,funcToCall,arg) {
event.stopPropagation();
event.preventDefault();
if(mousedown_2) {
var minWidth = location.minWidth;
var minHeight = location.minHeight;
var width = Math.abs(dragX_2-dragOffsetX_2-enlargeFixedDimensions.x1);
var height = Math.abs(dragY_2-dragOffsetY_2-enlargeFixedDimensions.y1);
dragX_2 = parseFloat(event.pageX)*4.67-500;
dragY_2 = parseFloat(event.pageY)*4.67-500;
d3.select(arguments[1]).attr("width",function () {return Math.max(minWidth,width);}).attr("height",function() {return Math.max(minHeight,height);}).attr("x",function () {return Math.min(dragX_2-dragOffsetX_2,enlargeFixedDimensions.x1-minWidth);}).attr("y",function() {return Math.min(dragY_2-dragOffsetY_2,enlargeFixedDimensions.y1-minHeight);});
d3.select(arguments[1]+"rect").attr("width",function () {return Math.max(minWidth,width);}).attr("height",function() {return Math.max(minHeight,height);});
d3.select(arguments[1]+"close").attr("x",function(){return Math.max(minWidth,width)-location.iconPadding-location.iconSize;});
d3.select(arguments[1]+"knob").attr("y",function(){return Math.max(minHeight,height)-location.iconPadding;});
d3.select(arguments[1]+"knobTrail").attr("y",function(){return Math.max(minHeight,height)-location.iconPadding+location.iconSize/4-7.5;});
d3.selectAll(arguments[1].replace("#",".")+"colorBoxes").data(["DimGray","Black","Red","LightSeaGreen","DodgerBlue","DeepPink"]).attr("x",function(d,i){return Math.max(minWidth,width)-((6-i)*(location.iconPadding/4+location.iconSize/2))-location.iconPadding*3/4;}).attr("y",function(){return Math.max(minHeight,height)-location.iconPadding;});
}
}
function enlargeEndMO(event,ID,location,funcToCall,arg) {
event.stopPropagation();
event.preventDefault();
//mousedown_2 = false;
if(mousedown_2) {
var minWidth = location.minWidth;
var minHeight = location.minHeight;
var width = Math.abs(dragX_2-dragOffsetX_2-enlargeFixedDimensions.x1);
var height = Math.abs(dragY_2-dragOffsetY_2-enlargeFixedDimensions.y1);
dragX_2 = parseFloat(event.pageX)*4.67-500;
dragY_2 = parseFloat(event.pageY)*4.67-500;
d3.select(arguments[1]).attr("width",function () {return Math.max(minWidth,width);}).attr("height",function() {return Math.max(minHeight,height);}).attr("x",function () {return Math.min(dragX_2-dragOffsetX_2,enlargeFixedDimensions.x1-minWidth);}).attr("y",function() {return Math.min(dragY_2-dragOffsetY_2,enlargeFixedDimensions.y1-minHeight);});
d3.select(arguments[1]+"rect").attr("width",function () {return Math.max(minWidth,width);}).attr("height",function() {return Math.max(minHeight,height);});
d3.select(arguments[1]+"close").attr("x",function(){return Math.max(minWidth,width)-location.iconPadding-location.iconSize;});
d3.select(arguments[1]+"knob").attr("y",function(){return Math.max(minHeight,height)-location.iconPadding;});
d3.select(arguments[1]+"knobTrail").attr("y",function(){return Math.max(minHeight,height)-location.iconPadding+location.iconSize/4-7.5;});
d3.selectAll(arguments[1].replace("#",".")+"colorBoxes").data(["DimGray","Black","Red","LightSeaGreen","DodgerBlue","DeepPink"]).attr("x",function(d,i){return Math.max(minWidth,width)-((6-i)*(location.iconPadding/4+location.iconSize/2))-location.iconPadding*3/4;}).attr("y",function(){return Math.max(minHeight,height)-location.iconPadding;});
if (funcToCall) {
funcToCall.apply(this,[ID.replace("#",""),arg]);
}
}
}
function enlargeEndMU(event,ID,funcToCall,arg) {
//I comment out propagation because master svg also fires this function on mouse up. This causes the machine to not properly fire mouseup event as a result dragged elements get stuck in mousedown mode.
//event.stopPropagation();
event.preventDefault();
mousedown_2 = false;
//sometimes it gets the object itself rather than the id.
if((ID)&&(funcToCall)) {
if (typeof ID === "object") {
ID = d3.select(ID).attr("id");
funcToCall.apply(this,[ID,arg]);
} else if (typeof ID === "string") {
funcToCall.apply(this,[ID,arg]);
} else {
}
}
}
<!--Enlarge mechanism-->
<!--Magnify/Minify mechanism-->
function magnifyClick(event,ID,location,magnificationRate,funcToCall,arg) {
event.stopPropagation();
event.preventDefault();
var minWidth = location.minWidth;
var minHeight = location.minHeight;
var maxHeight = location.maxHeight;
var maxWidth = location.maxWidth;
//10 percent magnification
var width = parseFloat(d3.select(ID).attr("width"))*magnificationRate;
var height = parseFloat(d3.select(ID).attr("height"))*magnificationRate;
d3.select(arguments[1]).attr("width",function () {return Math.max(minWidth,Math.min(width,maxWidth));}).attr("height",function() {return Math.max(minHeight,Math.min(height,maxHeight));});
d3.select(arguments[1]+"rect").attr("width",function () {return Math.max(minWidth,Math.min(width,maxWidth));}).attr("height",function() {return Math.max(minHeight,Math.min(height,maxHeight));});
d3.select(arguments[1]+"close").attr("x",function(){return Math.max(minWidth,Math.min(width,maxWidth))-location.iconPadding-location.iconSize;});
d3.select(arguments[1]+"knob").attr("y",function(){return Math.max(minHeight,Math.min(height,maxHeight))-location.iconPadding;});
d3.select(arguments[1]+"knobTrail").attr("y",function(){return Math.max(minHeight,Math.min(height,maxHeight))-location.iconPadding+location.iconSize/4-7.5;});
d3.selectAll(arguments[1].replace("#",".")+"colorBoxes").data(["DimGray","Black","Red","LightSeaGreen","DodgerBlue","DeepPink"]).attr("x",function(d,i){return Math.max(minWidth,Math.min(width,maxWidth))-((6-i)*(location.iconPadding/4+location.iconSize/2))-location.iconPadding*3/4;}).attr("y",function(){return Math.max(minHeight,Math.min(height,maxHeight))-location.iconPadding;});
if (funcToCall) {
funcToCall.apply(this,[ID.replace("#",""),arg]);
}
}
<!--Magnify/Minify mechanism-->
<!--WindowInterface-->
<!--Drawing Interface-->
<!--Draw equilateral triangle with given radius measured as the distance from center of gravity to one corner-->
//the x,y and r values are between 0 and 1, they represent the full width and the height of whatever container they are drawn in
function drawEqTriangle (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
currentRadius = Math.min(currentWidth,currentHeight);
d3.select(IDtoDrawOn).append("polygon").attr("points",function(){return (objectHash.x*currentWidth)+","+(objectHash.y*currentHeight-objectHash.radius*currentRadius)+" "+(objectHash.x*currentWidth+objectHash.radius*currentRadius/2*Math.sqrt(3))+","+(objectHash.y*currentHeight+objectHash.radius*currentRadius/2)+" "+(objectHash.x*currentWidth-objectHash.radius*currentRadius/2*Math.sqrt(3))+","+(objectHash.y*currentHeight+objectHash.radius*currentRadius/2);}).attr("filter",function(){if(objectHash.filter){return "url(#NeonGlow)";}else{return null;}}).attr("stroke-linejoin","round").attr("fill",function(){if (objectHash.fill){return objectHash.fill;}else{return "DimGray";}}).attr("fill-opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).attr("stroke",function(){if (objectHash.stroke){return objectHash.stroke;}else{return "DimGray";}}).attr("stroke-opacity",function(){if (objectHash.strokeOpacity){return Math.sqrt(objectHash.strokeOpacity);}else{return 0.71;}}).attr("stroke-width",function(){if (objectHash.width){return objectHash.width;}else{return 2;}}).attr("id",function(){if (objectHash.id){return objectHash.id;}}).attr("class",function(){if (objectHash.class){return objectHash.class;}}).attr("onmouseover",function(){if(objectHash.mouseover){return objectHash.mouseover;}}).attr("onmouseout",function(){if(objectHash.mouseout){return objectHash.mouseout;}}).style("opacity",0).transition().style("opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).delay(function(){if(objectHash.delay){return objectHash.delay;}else{return 0;}}).duration(function(){if(objectHash.duration){return objectHash.duration;}else{return 0;}});
}
<!--Draw equilateral triangle with given radius measured as the distance from center of gravity to one corner-->
<!--Draw hexagon-->
function drawHexagon (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
currentRadius = Math.min(currentWidth,currentHeight);
d3.select(IDtoDrawOn).append("polygon").attr("points",function(){return (objectHash.x*currentWidth+objectHash.radius*currentRadius/2)+","+(objectHash.y*currentHeight-objectHash.radius*currentRadius/2*Math.sqrt(3))+" "+(objectHash.x*currentWidth+objectHash.radius*currentRadius)+","+(objectHash.y*currentHeight)+" "+(objectHash.x*currentWidth+objectHash.radius*currentRadius/2)+","+(objectHash.y*currentHeight+objectHash.radius*currentRadius/2*Math.sqrt(3))+" "+(objectHash.x*currentWidth-objectHash.radius*currentRadius/2)+","+(objectHash.y*currentHeight+objectHash.radius*currentRadius/2*Math.sqrt(3))+" "+(objectHash.x*currentWidth-objectHash.radius*currentRadius)+","+(objectHash.y*currentHeight)+" "+(objectHash.x*currentWidth-objectHash.radius*currentRadius/2)+","+(objectHash.y*currentHeight-objectHash.radius*currentRadius/2*Math.sqrt(3));}).attr("filter",function(){if(objectHash.filter){return "url(#NeonGlow)";}else{return null;}}).attr("stroke-linejoin","round").attr("fill",function(){if (objectHash.fill){return objectHash.fill;}else{return "DimGray";}}).attr("fill-opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).attr("stroke",function(){if (objectHash.stroke){return objectHash.stroke;}else{return "DimGray";}}).attr("stroke-opacity",function(){if (objectHash.strokeOpacity){return Math.sqrt(objectHash.strokeOpacity);}else{return 0.71;}}).attr("stroke-width",function(){if (objectHash.width){return objectHash.width;}else{return 2;}}).attr("id",function(){if (objectHash.id){return objectHash.id;}}).attr("class",function(){if (objectHash.class){return objectHash.class;}}).attr("onmouseover",function(){if(objectHash.mouseover){return objectHash.mouseover;}}).attr("onmouseout",function(){if(objectHash.mouseout){return objectHash.mouseout;}}).style("opacity",0).transition().style("opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).delay(function(){if(objectHash.delay){return objectHash.delay;}else{return 0;}}).duration(function(){if(objectHash.duration){return objectHash.duration;}else{return 0;}});
}
<!--Draw hexagon-->
<!--Draw polygon-->
//within the object hash there will be a points array. All the points in this array are returned with the given offsets. The offsets are between 0 and 1.
function drawPolygon (IDtoDrawOn,objectHash,currentWidth,currentHeight,offsetX,offsetY) {
offsetX = offsetX || 0;
offsetY = offsetY || 0;
d3.select(IDtoDrawOn).append("polygon").attr("points",function(){
var points = "";
for (var i = 0;i < objectHash.points.length;i++) {
points = points+((objectHash.points[i][0]+offsetX)*currentWidth)+","+((objectHash.points[i][1]+offsetY)*currentHeight)+" ";
}
return points;
}).attr("filter",function(){if(objectHash.filter){return "url(#NeonGlow)";}else{return null;}}).attr("stroke-linejoin","round").attr("fill",function(){if (objectHash.fill){return objectHash.fill;}else{return "DimGray";}}).attr("fill-opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).attr("stroke",function(){if (objectHash.stroke){return objectHash.stroke;}else{return "DimGray";}}).attr("stroke-opacity",function(){if (objectHash.strokeOpacity){return Math.sqrt(objectHash.strokeOpacity);}else{return 0.71;}}).attr("stroke-width",function(){if (objectHash.width){return objectHash.width;}else{return 2;}}).attr("id",function(){if (objectHash.id){return objectHash.id;}}).attr("class",function(){if (objectHash.class){return objectHash.class;}}).style("opacity",0).transition().style("opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).delay(function(){if(objectHash.delay){return objectHash.delay;}else{return 0;}}).duration(function(){if(objectHash.duration){return objectHash.duration;}else{return 0;}});
}
<!--Draw polygon-->
<!--Draw circle-->
function drawCircle (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
currentRadius = Math.min(currentWidth,currentHeight);
d3.select(IDtoDrawOn).append("circle").attr("cx",function(){return objectHash.x*currentWidth;}).attr("cy",function(){return objectHash.y*currentHeight;}).attr("r",function(){return objectHash.radius*currentRadius;}).attr("filter",function(){if(objectHash.filter){return "url(#NeonGlow)";}else{return null;}}).attr("fill",function(){if (objectHash.fill){return objectHash.fill;}else{return "DimGray";}}).attr("fill-opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).attr("stroke",function(){if (objectHash.stroke){return objectHash.stroke;}else{return "DimGray";}}).attr("stroke-opacity",function(){if (objectHash.strokeOpacity){return Math.sqrt(objectHash.strokeOpacity);}else{return 0.71;}}).attr("stroke-width",function(){if (objectHash.width){return objectHash.width;}else{return 2;}}).attr("id",function(){if (objectHash.id){return objectHash.id;}}).attr("class",function(){if (objectHash.class){return objectHash.class;}}).attr("onmouseover",function(){if(objectHash.mouseover){return objectHash.mouseover;}}).attr("onmouseout",function(){if(objectHash.mouseout){return objectHash.mouseout;}}).style("opacity",0).transition().style("opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).delay(function(){if(objectHash.delay){return objectHash.delay;}else{return 0;}}).duration(function(){if(objectHash.duration){return objectHash.duration;}else{return 0;}});
}
<!--Draw circle-->
<!--Draw text-->
function drawText (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
currentRadius = Math.min(currentWidth,currentHeight);
d3.select(IDtoDrawOn).append("text").text(function(){if(objectHash.text){return objectHash.text;}else{return "undefined";}}).attr("x",function(){return objectHash.x*currentWidth;}).attr("y",function(){return objectHash.y*currentHeight;}).attr("font-size",function(){if(objectHash.fontSize){return objectHash.fontSize;}else{return "100px";}}).attr("font-family","sans-serif").attr("text-anchor","middle").attr("filter",function(){if(objectHash.filter){return "url(#NeonGlow)";}else{return null;}}).attr("fill",function(){if (objectHash.fill){return objectHash.fill;}else{return "DimGray";}}).attr("fill-opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).attr("stroke",function(){if (objectHash.stroke){return objectHash.stroke;}else{return "DimGray";}}).attr("stroke-opacity",function(){if (objectHash.strokeOpacity){return Math.sqrt(objectHash.strokeOpacity);}else{return 0.71;}}).attr("stroke-width",function(){if (objectHash.width){return objectHash.width;}else{return 2;}}).attr("transform",function(){if(objectHash.transform){return objectHash.transform;}}).attr("id",function(){if (objectHash.id){return objectHash.id;}}).attr("class",function(){if (objectHash.class){return objectHash.class;}}).attr("onmouseover",function(){if(objectHash.mouseover){return objectHash.mouseover;}}).attr("onmouseout",function(){if(objectHash.mouseout){return objectHash.mouseout;}}).style("opacity",0).transition().style("opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).delay(function(){if(objectHash.delay){return objectHash.delay;}else{return 0;}}).duration(function(){if(objectHash.duration){return objectHash.duration;}else{return 0;}});
}
<!--Draw text-->
<!--Draw path-->
function drawPath (IDtoDrawOn,objectHash,currentWidth,currentHeight,funcToCall,args) {
d3.select(IDtoDrawOn).append("path").attr("d",function(){return pathStringGenerator(objectHash,currentWidth,currentHeight);}).attr("filter",function(){if(objectHash.filter){return "url(#NeonGlow)";}else{return null;}}).attr("stroke-linejoin","round").attr("stroke-linecap","round").attr("fill",function(){if (objectHash.fill){return objectHash.fill;}else{return "DimGray";}}).attr("fill-opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).attr("stroke",function(){if (objectHash.stroke){return objectHash.stroke;}else{return "DimGray";}}).attr("stroke-opacity",function(){if (objectHash.strokeOpacity){return Math.sqrt(objectHash.strokeOpacity);}else{return 0.71;}}).attr("stroke-width",function(){if (objectHash.width){return objectHash.width;}else{return 2;}}).attr("id",function(){if (objectHash.id){return objectHash.id;}}).attr("class",function(){if (objectHash.class){return objectHash.class;}}).style("opacity",0).transition("fadein").style("opacity",function(){if (objectHash.opacity){return Math.sqrt(objectHash.opacity);}else{return 0.71;}}).each(function(){if(funcToCall){funcToCall.apply(this,args);}}).delay(function(){if(objectHash.delay){return objectHash.delay;}else{return 0;}}).duration(function(){if(objectHash.duration){return objectHash.duration;}else{return 0;}});
}
function pathStringGenerator(objectHash,currentWidth,currentHeight) {
return "M"+(objectHash.x0*currentWidth)+","+(objectHash.y0*currentHeight)+"L"+(objectHash.x1*currentWidth)+","+(objectHash.y1*currentHeight);
}
function extendPath(ID,objectHash,currentWidth,currentHeight,funcToCall,args) {
d3.select(ID).transition("extend").attrTween("d",function(){var interpolator = d3.interpolateString(pathStringGenerator({x0:objectHash.x0,y0:objectHash.y0,x1:objectHash.x1,y1:objectHash.y1},currentWidth,currentHeight),pathStringGenerator({x0:objectHash.x1,y0:objectHash.y1,x1:objectHash.x2,y1:objectHash.y2},currentWidth,currentHeight));return function(t){return interpolator(t)};}).each("end",function(){if(funcToCall){funcToCall.apply(this,args);}}).delay(function(){if(objectHash.extensionDelay){return objectHash.extensionDelay;}else{return 0;}}).duration(function(){if(objectHash.extensionDuration){return objectHash.extensionDuration;}else{return 0;}});
}
//let the inception begin..
function extendTrailPath(IDtoDrawOn,IDarray,objectHash,trailArray,currentWidth,currentHeight,clear) {
if(clear) {
d3.selectAll(".lotusPathLines").remove();
}
if (IDarray.length !== 0) {
var currentID = IDarray.shift();
var objectHashMirror = objectHash;
var IDarrayMirror = IDarray;
objectHashMirror.x0 = trailArray[0][0];
objectHashMirror.y0 = trailArray[0][1];
objectHashMirror.x1 = trailArray[0][0];
objectHashMirror.y1 = trailArray[0][1];
objectHashMirror.x2 = trailArray[1][0];
objectHashMirror.y2 = trailArray[1][1];
objectHashMirror.id = currentID;
var trailArrayMirror = trailArray;
trailArrayMirror.shift();
drawPath(IDtoDrawOn,objectHashMirror,currentWidth,currentHeight,extendPath,["#"+currentID,objectHashMirror,currentWidth,currentHeight,extendTrailPath,[IDtoDrawOn,IDarrayMirror,objectHashMirror,trailArrayMirror,currentWidth,currentHeight]]);
}
if((IDarray.length < 1)&&(lotusMouseOut)) {
d3.selectAll(".lotusPathLines").remove();
}
}
//the dream collapses..
function collapseTrailPath (IDarray,objectHash,trailArray,currentWidth,currentHeight) {
if ((IDarray.length !== 0)&&(lotusMouseOut)) {
var currentID = IDarray.pop();
var objectHashMirror = objectHash;
var IDarrayMirror = IDarray;
objectHashMirror.x0 = trailArray[trailArray.length-2][0];
objectHashMirror.y0 = trailArray[trailArray.length-2][1];
objectHashMirror.x1 = trailArray[trailArray.length-2][0];
objectHashMirror.y1 = trailArray[trailArray.length-2][1];
var trailArrayMirror = trailArray;
trailArrayMirror.pop();
d3.select("#"+currentID).transition("collapse").attr("d",function(){return pathStringGenerator(objectHash,currentWidth,currentHeight);}).each("end",function(){d3.select(this).remove();if((IDarray.length < 1)&&(lotusMouseOut)){d3.selectAll(".lotusPathLines").remove();};collapseTrailPath(IDarrayMirror,objectHashMirror,trailArrayMirror,currentWidth,currentHeight);}).delay(function(){if(objectHash.extensionDelay){return objectHash.extensionDelay;}else{return 0;}}).duration(function(){if(objectHash.extensionDuration){return objectHash.extensionDuration;}else{return 0;}});
}
}
<!--Draw path-->
<!--Drawing Interface-->
<!--Lotus-->
var lotusMouseOut = false;
//I had to come up with the below function, d3s mouse events fire too late to capture this the way I want..
function lotusMouseOutFunc(status){
status === "1" ? lotusMouseOut = true : lotusMouseOut = false;
}
//clockwise numbering starting from the smallest angle taking 12 o'clock position as 0 degrees. keys mean renderingOrder_number.
var lotusData = {r1n0:{x0:"0.5",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)",y1:"0.5"},r1n1:{x0:"0.5",y0:"0.5",x1:"0.5-radius/Math.sqrt(7)/2",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},r1n2:{x0:"0.5",y0:"0.5",x1:"0.5-radius/Math.sqrt(7)/2",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},
r2n0:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)*1.5",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},r2n1:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)*2",y1:"0.5"},r2n2:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)*1.5",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},r2n3:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},r2n4:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},
r2n5:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},r2n6:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},r2n7:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},r2n8:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*1.5",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},r2n9:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)",y1:"0.5"},
r2n10:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},r2n11:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},r2n12:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)",y1:"0.5"},r2n13:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*1.5",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},r2n14:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},
r3n0:{x0:"0.5",y0:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},r3n1:{x0:"0.5+radius/Math.sqrt(7)/2",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},r3n2:{x0:"0.5+radius/Math.sqrt(7)*1.5",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},
r3n3:{x0:"0.5+radius/Math.sqrt(7)*2",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)*2.5",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},r3n4:{x0:"0.5+radius/Math.sqrt(7)*2",y0:"0.5",x1:"0.5+radius/Math.sqrt(7)*2.5",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},
r3n5:{x0:"0.5+radius/Math.sqrt(7)*1.5",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},r3n6:{x0:"0.5+radius/Math.sqrt(7)/2",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},r3n7:{x0:"0.5",y0:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},
r3n8:{x0:"0.5-radius/Math.sqrt(7)",y0:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)/2",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)*1.5"},r3n9:{x0:"0.5-radius/Math.sqrt(7)",y0:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*2",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},
r3n10:{x0:"0.5-radius/Math.sqrt(7)*1.5",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*2",y1:"0.5"},r3n11:{x0:"0.5-radius/Math.sqrt(7)",y0:"0.5",x1:"0.5-radius/Math.sqrt(7)*2",y1:"0.5"},r3n12:{x0:"0.5-radius/Math.sqrt(7)*1.5",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*2",y1:"0.5"},
r3n13:{x0:"0.5-radius/Math.sqrt(7)",y0:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*2",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},r3n14:{x0:"0.5-radius/Math.sqrt(7)",y0:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)/2",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)*1.5"},
r4n0:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)*1.5"},r4n1:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)*2",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},r4n2:{x0:"0.5+radius/Math.sqrt(7)*2.5",y0:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)*2",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)"},
r4n3:{x0:"0.5+radius/Math.sqrt(7)*2.5",y0:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)*2",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},r4n4:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)*2",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)"},r4n5:{x0:"0.5+radius/Math.sqrt(7)",y0:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)*1.5"},r4n6:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)*1.5",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)*1.5"},
r4n7:{x0:"0.5-radius/Math.sqrt(7)*2",y0:"0.5+radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*2.5",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},r4n8:{x0:"0.5-radius/Math.sqrt(7)*2",y0:"0.5",x1:"0.5-radius/Math.sqrt(7)*2.5",y1:"0.5+radius/Math.sqrt(7)/2*Math.sqrt(3)"},r4n9:{x0:"0.5-radius/Math.sqrt(7)*2",y0:"0.5",x1:"0.5-radius/Math.sqrt(7)*2.5",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},r4n10:{x0:"0.5-radius/Math.sqrt(7)*2",y0:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)",x1:"0.5-radius/Math.sqrt(7)*2.5",y1:"0.5-radius/Math.sqrt(7)/2*Math.sqrt(3)"},
r4n11:{x0:"0.5-radius/Math.sqrt(7)/2",y0:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)*1.5",x1:"0.5+radius/Math.sqrt(7)/2",y1:"0.5-radius/Math.sqrt(7)*Math.sqrt(3)*1.5"},
}
//var codonData = {aa:"A",seq:{full:"GCC",base1:{original:"G",alt1:"A",alt2:"T",alt3:"C"},base2:{original:"C",alt4:"G",alt5:"A",alt6:"T"},base3:{original:"C",alt7:"G",alt8:"A",alt9:"T"}},p:100};
//var codonData = {aa:"Y",seq:{full:"TAC",base1:{original:"T",alt1:"C",alt2:"G",alt3:"A"},base2:{original:"A",alt4:"T",alt5:"C",alt6:"G"},base3:{original:"C",alt7:"G",alt8:"A",alt9:"T"}},p:100};
function Lotus(ID,codonData){
d3.selectAll("."+arguments[0]+"drawnElements").remove();
var hashID = "#"+arguments[0];
var currentWidth = parseFloat(d3.select("#"+arguments[0]).attr("width"));
var currentHeight = parseFloat(d3.select("#"+arguments[0]).attr("height"));
var currentDims = Math.min(currentWidth,currentHeight);
var currentOffsetX = currentWidth<=currentHeight ? 0 : (currentWidth-currentHeight)/currentHeight/2;
var currentOffsetY = currentHeight<=currentWidth ? 0 : (currentHeight-currentWidth)/currentWidth/2;
//start the animation
var radius = 0.45;
d3.select("#"+arguments[0])
.selectAll("lotusAnimationElements")
.data(d3.keys(lotusData))
.enter()
.append("path")
.attr("d",function(d,i){
var objectHash = {};
objectHash.x0 = eval(lotusData[d].x0)+currentOffsetX;
objectHash.y0 = eval(lotusData[d].y0)+currentOffsetY;
objectHash.x1 = eval(lotusData[d].x0)+currentOffsetX;
objectHash.y1 = eval(lotusData[d].y0)+currentOffsetY;
return pathStringGenerator(objectHash,currentDims,currentDims);
})
.attr("stroke-width",10)
.attr("stroke","DodgerBlue")
.attr("stroke-opacity",0.85)
.attr("id",function(d){return ID+d;})
.attr("class",function(d){return ID+"drawnElements "+ID+"lotusAnimationLines";})
.transition("extend")
.attr("d",function(d){
var objectHash = {};
objectHash.x0 = eval(lotusData[d].x0)+currentOffsetX;
objectHash.y0 = eval(lotusData[d].y0)+currentOffsetY;
objectHash.x1 = eval(lotusData[d].x1)+currentOffsetX;
objectHash.y1 = eval(lotusData[d].y1)+currentOffsetY;
return pathStringGenerator(objectHash,currentDims,currentDims);
})
.each("end",function(d){
d3.select(this)
.transition("shrink")
.attr("d",function(){
var objectHash = {};
objectHash.x0 = eval(lotusData[d].x1)+currentOffsetX;
objectHash.y0 = eval(lotusData[d].y1)+currentOffsetY;
objectHash.x1 = eval(lotusData[d].x1)+currentOffsetX;
objectHash.y1 = eval(lotusData[d].y1)+currentOffsetY;
return pathStringGenerator(objectHash,currentDims,currentDims);
})
.each("end",function(){
d3.select(this).remove();
})
.delay(function(){
var renderOrder = parseInt(d.replace(/r|n.*/,""));
return (renderOrder-1)*0;
})
.duration(500);
})
.delay(function(d){
var renderOrder = parseInt(d.replace(/r|n.*/,""));
return (renderOrder-1)*250;
})
.duration(1000);
//end the animation
//some common variables
var aaPositions = ["r2n13","r2n14","r2n10","r2n0","r2n1","r2n2","r2n6","r2n7","r2n8"];
var aaSymbols = {Nonpolar:[drawCircle,"Gray"],Polar:[drawCircle,"DeepPink"],Positive:[drawEqTriangle,"Red"],Negative:[drawEqTriangle,"Blue"],Aromatic:[drawHexagon,"Green"]};
var standartObject = {filter:false,radius:0.025,"class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01};//this object is constantly changed by the aa element for-loop.
var standartPolygonObject = {filter:false,radius:0.025,"class":arguments[0]+"drawnElements",opacity:0.5,strokeOpacity:0.8,width:10};//this one as well by the polygon for-loop.
var trailPaths = [["r2n13","r1n2"],["r2n14","r1n2"],["r2n10","r1n2"],["r2n0","r1n0"],["r2n1","r1n0"],["r2n2","r1n0"],["r2n6","r1n1"],["r2n7","r1n1"],["r2n8","r1n1"]];
var polygonPositions = [["r2n12","r3n11","r3n11","r3n12","r2n13"],["r2n13","r3n12","r4n9","r4n9","r4n10","r3n13","r3n14","r4n11","r4n0","r3n0","r2n10"],["r2n10","r3n0","r3n0","r3n1","r2n11"],
["r2n4","r3n1","r3n1","r3n2","r2n0"],["r2n0","r3n2","r4n1","r4n1","r4n2","r3n3","r3n4","r4n3","r4n4","r3n5","r2n2"],["r2n2","r3n5","r3n5","r3n6","r2n3"],
["r2n5","r3n6","r3n6","r3n7","r2n6"],["r2n7","r3n7","r4n5","r4n5","r4n6","r3n8","r3n9","r4n7","r4n8","r3n10","r2n8"],["r2n8","r3n10","r3n10","r3n11","r2n9"]
];
//some common variables
//insert polygons
//first insert the center piece
drawPolygon(hashID,{filter:false,points:segmentToPoints(["r2n4","r2n3","r2n5","r2n9","r2n12","r2n11"]),radius:0.025,id:arguments[0]+"_r1n0_polygon","class":arguments[0]+"drawnElements",opacity:0.5,strokeOpacity:0.8,width:10,fill:aaSymbols[aminoacids[codonData["aa"]][1]][1],stroke:aaSymbols[aminoacids[codonData["aa"]][1]][1],delay:2000,duration:2000},currentDims,currentDims,currentOffsetX,currentOffsetY);
d3.select(hashID+"_r1n0_polygon").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");drawText(hashID,{filter:false,radius:0.025,x:eval(lotusData["r1n0"].x0)+currentOffsetX,y:eval(lotusData["r1n0"].y1)+currentOffsetY-standartObject.radius*4,fontSize:(50*currentDims/1200),fill:"Orange",stroke:"Orange",id:"lotusExplanation","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01,delay:0,duration:500,text:"original aa: "+aminoacids[codonData["aa"]][1]},currentDims,currentDims);}).on("mouseout",function(){d3.select("#lotusExplanation").remove();d3.select(this).attr("filter",null);});
//first insert the center piece
for (var i = 0; i< aaPositions.length; i++) {
var data = codonData;
var base = "base"+(parseInt(i/3)+1);
var newSeq = calculateNewCodon(i);
var newAA;
var obj = standartPolygonObject;
for (var key in aminoacids_degenerateCode) {
if (aminoacids_degenerateCode[key].some(function(x){return x === newSeq;})){
newAA = key;
break;
}
}
obj.id = ID+"_"+aaPositions[i]+"_polygon";
obj.opacity = 0.5;
obj.strokeOpacity = 0.8;
obj.points = segmentToPoints(polygonPositions[i]);
obj.width = 10;
obj.delay = 2000;
obj.duration = 2000;
//render the polygon
if (newAA !== "X") {
obj.fill = aaSymbols[aminoacids[newAA][1]][1];
obj.stroke = aaSymbols[aminoacids[newAA][1]][1];
drawPolygon(hashID,obj,currentDims,currentDims,currentOffsetX,currentOffsetY);
} else {
obj.fill = "transparent";
obj.stroke = "Brown";
drawPolygon(hashID,obj,currentDims,currentDims,currentOffsetX,currentOffsetY);
}
//render the polygon
d3.select("#"+obj.id).attr("onmouseover",function(){
obj.fill = "Orange";
obj.stroke = "Orange";
obj.opacity = 0.9;
obj.strokeOpacity = 0.01;
if (newAA !== "X") {
obj.text = aminoacids[newAA][1]+" change";
} else {
obj.text = "stop codon";
}
obj.id = "lotusExplanation";
obj.fontSize = 50*currentDims/1200;
obj.width = 2;
obj.x = eval(lotusData[aaPositions[i]].x1)+currentOffsetX;
obj.y = eval(lotusData[aaPositions[i]].y1)+currentOffsetY-standartObject.radius*3;
obj.delay = 0;
obj.duration = 500;
var func1 = "drawText('"+hashID+"',"+JSON.stringify(obj)+","+currentDims+","+currentDims+")";
return func1;
})
.on("mouseout",function(){
d3.select("#lotusExplanation").remove();
d3.select(this).attr("filter",null);
})
.on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");});
}
//each array contains the names of the line segments from lotusData that circumvent the polygon. The order of these segments are clockwise starting from their birth point like in the animation. The polygons themselves are ordered like the aminoacids. First one starting around 10 o'clock position.
function segmentToPoints(array) {
var points = [];
for (var i = 0;i < array.length;i++){
if (checkEquality(points,[eval(lotusData[array[i]].x0),eval(lotusData[array[i]].y0)])) {
points.push([eval(lotusData[array[i]].x1),eval(lotusData[array[i]].y1)]);
} else {
points.push([eval(lotusData[array[i]].x0),eval(lotusData[array[i]].y0)]);
}
}
return points;
function checkEquality(ref,test) {
return ref.some(function(d,i,a){return ((d[0]===test[0])&&(d[1]===test[1]));});
}
}
//insert polygons
//insert aa elements
//first insert the center piece
aaSymbols[aminoacids[codonData["aa"]][1]][0](hashID,{filter:false,radius:0.025*GoldenRatio,x:eval(lotusData["r1n0"].x0)+currentOffsetX,y:eval(lotusData["r1n0"].y1)+currentOffsetY,fill:aaSymbols[aminoacids[codonData["aa"]][1]][1],stroke:aaSymbols[aminoacids[codonData["aa"]][1]][1],id:arguments[0]+"_r1n0","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:1,delay:0,duration:500},currentDims,currentDims);
d3.select(hashID+"_r1n0").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");drawText(hashID,{filter:false,radius:0.025,x:eval(lotusData["r1n0"].x0)+currentOffsetX,y:eval(lotusData["r1n0"].y1)+currentOffsetY+standartObject.radius*4,fontSize:(50*currentDims/1200),fill:"Orange",stroke:"Orange",id:"lotusExplanation","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01,delay:0,duration:500,text:"original aa: "+codonData["aa"]+" ("+aminoacids[codonData["aa"]][0]+")"},currentDims,currentDims);}).on("mouseout",function(){d3.select("#lotusExplanation").remove();d3.select(this).attr("filter",null);});
//the amino acid number is static
drawText(hashID,{filter:false,radius:0.025,x:eval(lotusData["r1n0"].x0)+currentOffsetX,y:eval(lotusData["r1n0"].y1)+currentOffsetY-standartObject.radius*2.5,fontSize:(35*currentDims/1200),fill:"Orange",stroke:"Orange","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01,delay:0,duration:500,text:"p."+codonData["p"]},currentDims,currentDims);
drawText(hashID,{filter:false,radius:0.025,x:eval(lotusData["r1n0"].x0)+currentOffsetX,y:eval(lotusData["r1n0"].y1)+currentOffsetY+standartObject.radius*0.5,fontSize:(40*currentDims/1200),fill:"Orange",stroke:"Orange","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01,delay:0,duration:500,text:"..."+codonData["seq"]["full"]+"..."},currentDims,currentDims);
//first insert the center piece
for (var i = 0; i< aaPositions.length; i++) {
var data = codonData;
var base = "base"+(parseInt(i/3)+1);
var newSeq = calculateNewCodon(i);
var newAA;
var obj = standartObject;
for (var key in aminoacids_degenerateCode) {
if (aminoacids_degenerateCode[key].some(function(x){return x === newSeq;})){
newAA = key;
break;
}
}
obj.x = eval(lotusData[aaPositions[i]].x1)+currentOffsetX;
obj.y = eval(lotusData[aaPositions[i]].y1)+currentOffsetY;
obj.id = ID+"_"+aaPositions[i];
obj.delay = 1000;
obj.duration = 2000;
//render the symbol
if (newAA !== "X") {
obj.fill = aaSymbols[aminoacids[newAA][1]][1];
obj.stroke = aaSymbols[aminoacids[newAA][1]][1];
aaSymbols[aminoacids[newAA][1]][0].call(this,hashID,obj,currentDims,currentDims);
} else {
obj.fill = "Orange";
obj.stroke = "Orange";
obj.fontSize = 75*currentDims/1200;
obj.y = eval(lotusData[aaPositions[i]].y1)+currentOffsetY+standartObject.radius;
obj.text = "X";
drawText.call(this,hashID,obj,currentDims,currentDims);
}
//render the symbol
//define some variables before starting animations with the rendered symbol.
var trailPath = [[eval(lotusData[trailPaths[i][0]].x1)+currentOffsetX,eval(lotusData[trailPaths[i][0]].y1)+currentOffsetY],[eval(lotusData[trailPaths[i][0]].x0)+currentOffsetX,eval(lotusData[trailPaths[i][0]].y0)+currentOffsetY],[eval(lotusData[trailPaths[i][1]].x0)+currentOffsetX,eval(lotusData[trailPaths[i][1]].y0)+currentOffsetY]];
var objPath = {fill:"Orange",stroke:"Orange",strokeOpacity:1,filter:false,"class":ID+"drawnElements lotusPathLines",opacity:1,delay:0,duration:1000,width:20,extensionDuration:150};
d3.select("#"+obj.id).attr("onmouseover",function(){
obj.fill = "Orange";
obj.stroke = "Orange";
if (newAA !== "X") {
obj.text = newAA+" ("+aminoacids[newAA][0]+"): c."+((data["p"]-1)*3+1+Math.floor(i/3))+data["seq"][base]["original"]+">"+data["seq"][base]["alt"+(i+1)];
} else {
obj.text = "stop codon: c."+((data["p"]-1)*3+1+Math.floor(i/3))+data["seq"][base]["original"]+">"+data["seq"][base]["alt"+(i+1)];
}
obj.id = "lotusExplanation";
obj.fontSize = 50*currentDims/1200;
obj.y = eval(lotusData[aaPositions[i]].y1)+currentOffsetY-standartObject.radius*3;
obj.delay = 0;
obj.duration = 500;
var func1 = "drawText('"+hashID+"',"+JSON.stringify(obj)+","+currentDims+","+currentDims+")";
var func2 = "extendTrailPath('"+hashID+"',['lotusPath1','lotusPath2'],"+JSON.stringify(objPath)+","+JSON.stringify(trailPath)+","+currentDims+","+currentDims+","+true+")";
return "lotusMouseOutFunc('0');"+func1+";"+func2;
})
.attr("onmouseout",function(){
var func1 = "collapseTrailPath(['lotusPath1','lotusPath2'],"+JSON.stringify(objPath)+","+JSON.stringify(trailPath)+","+currentDims+","+currentDims+")";
return "lotusMouseOutFunc('1');"+func1;
})
.on("mouseout",function(){
d3.select("#lotusExplanation").remove();
d3.select(this).attr("filter",null);
})
.on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");});
}
//insert aa elements
//insert alt bases
//first insert the original bases
drawText(hashID,{filter:false,radius:0.025,x:eval(lotusData["r1n2"].x1)+currentOffsetX,y:eval(lotusData["r1n2"].y1)+currentOffsetY+standartObject.radius,fontSize:(60*currentDims/1200),fill:"Orange",stroke:"Orange","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01,delay:0,duration:500,text:codonData["seq"]["base1"]["original"]},currentDims,currentDims);
drawText(hashID,{filter:false,radius:0.025,x:eval(lotusData["r1n0"].x1)+currentOffsetX,y:eval(lotusData["r1n0"].y1)+currentOffsetY+standartObject.radius,fontSize:(60*currentDims/1200),fill:"Orange",stroke:"Orange","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01,delay:0,duration:500,text:codonData["seq"]["base2"]["original"]},currentDims,currentDims);
drawText(hashID,{filter:false,radius:0.025,x:eval(lotusData["r1n1"].x1)+currentOffsetX,y:eval(lotusData["r1n1"].y1)+currentOffsetY+standartObject.radius,fontSize:(60*currentDims/1200),fill:"Orange",stroke:"Orange","class":arguments[0]+"drawnElements",opacity:0.9,strokeOpacity:0.01,delay:0,duration:500,text:codonData["seq"]["base3"]["original"]},currentDims,currentDims);
//first insert the original bases
for (var i = 0; i< aaPositions.length; i++) {
var data = codonData;
var base = "base"+(parseInt(i/3)+1);
var obj = standartObject;
obj.x = (eval(lotusData[aaPositions[i]].x1)+eval(lotusData[aaPositions[i]].x0))/2+currentOffsetX;
obj.y = (eval(lotusData[aaPositions[i]].y1)+eval(lotusData[aaPositions[i]].y0))/2+currentOffsetY;
obj.id = ID+"_"+aaPositions[i]+"_bases";
obj.delay = 1000;
obj.duration = 2000;
obj.fill = "Orange";
obj.stroke = "Orange";
obj.opacity = 0.9;
obj.strokeOpacity = 0.01;
obj.fontSize = 30*currentDims/1200;
obj.text = data["seq"][base]["alt"+(i+1)];
drawText.call(this,hashID,obj,currentDims,currentDims);
}
//insert alt bases
//var someTestObject = {filter:false,points:[[0.4,0.4],[0.45,0.35],[0.5,0.4],[0.45,0.45],[0.4,0.7]],"class":arguments[0]+"drawnElements",id:"thePolygon",fill:"Orange",stroke:"Orange",opacity:0.9,strokeOpacity:1,delay:0,duration:2000};
//drawPolygon(hashID,someTestObject,currentDims,currentDims,currentOffsetX,currentOffsetY);
function calculateNewCodon(count) {
var base = "base"+(parseInt(count/3)+1);
var baseNumber = (parseInt(count/3));
var codonArray = data["seq"]["full"].split("");
codonArray[baseNumber] = data["seq"][base]["alt"+(count+1)];
var newSeq = codonArray.join("");
return newSeq;
}
//Keep text selection process minimal by disabling selection on lotus elements.
d3.selectAll("."+arguments[0]+"drawnElements").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
}
<!--Lotus-->
<!--Lotus Icon-->
var seqGradualFade;
var lastMouseoverSeqElementID;
var lotusIcon = "data:image/png;base64,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";
function lotusFadein(ID){
if ((lastMouseoverSeqElementID !== ID)||!(d3.select("#lotusIcon").node())) {
clearTimeout(seqGradualFade);
d3.select("#lotusIcon").remove();
var angle = Math.atan(Math.abs((parseFloat(d3.select(ID).attr("y"))-3000)/(parseFloat(d3.select(ID).attr("x"))-3000)));
var x = parseFloat(d3.select(ID).attr("x"))-500*Math.cos(angle)*Math.sign(parseFloat(d3.select(ID).attr("x"))-3000);
var y = parseFloat(d3.select(ID).attr("y"))-500*Math.sin(angle)*Math.sign(parseFloat(d3.select(ID).attr("y"))-3000);
d3.select("#annotation").append("svg:image").attr("xlink:href",lotusIcon).attr("title","lotusIcon").attr("alt","lotusIcon").attr("x",function() {return x;}).attr("y",function() {return y;}).attr("width","100px").attr("height","100px").style("opacity",0).attr("id","lotusIcon").transition("fade").style("opacity",0.9).delay(0).duration(1000);
d3.select("#lotusIcon").on("mouseover",function(){
clearTimeout(seqGradualFade);
d3.select(this).transition("fade").style("opacity",0.9).delay(0).duration(1000);
})
.on("mouseout",function(){
seqGradualFade = setTimeout(function(){d3.select("#lotusIcon").remove();},3000);
d3.select("#lotusIcon").transition("fade").style("opacity",0).delay(0).duration(3000);
})
.on("click",function(){
initiateLotus(ID,x,y);
});
lastMouseoverSeqElementID = ID;
}
clearTimeout(seqGradualFade);
d3.select("#lotusIcon").transition("fade").style("opacity",0.9).delay(0).duration(1000);
}
function lotusFadeout(){
seqGradualFade = setTimeout(function(){d3.select("#lotusIcon").remove();},3000);
d3.select("#lotusIcon").transition("fade").style("opacity",0).delay(0).duration(3000);
}
<!--Lotus Icon-->
<!--Lotus initiator-->
function initiateLotus(ID,x,y){
var location = {"x":x,"y":y,"width":2500,"height":2000,"rx":100,"ry":100,"iconPadding":100,"iconSize":100,"minWidth":1500,"minHeight":1200,"maxWidth":5000,"maxHeight":4000};
var aaNumber = Math.floor(ID.replace(/.*_/i,""));
var codonData = {};
codonData.p = aaNumber;
codonData.aa = d3.select(ID).node().textContent || d3.select(ID).node().innerHTML;
codonData.seq = {};
codonData.seq["full"] = cdna[(aaNumber-1)*3] + cdna[(aaNumber-1)*3+1] + cdna[(aaNumber-1)*3+2];
if (aminoacids_degenerateCode[codonData.aa].some(function(x){return x === codonData.seq["full"];})) {
for (var i = 0;i < 3;i++) {
var iterator = ["A","T","C","G"];
codonData.seq["base"+(i+1)] = {};
codonData.seq["base"+(i+1)]["original"] = cdna[(aaNumber-1)*3+i];
Innermost:
for (var k =0;k<1;) {
var regexp = new RegExp(codonData.seq["base"+(i+1)]["original"],"i");
if (iterator[k].match(regexp)) {
iterator.shift();
break Innermost;
} else {
var x = iterator.shift();
iterator.push(x);
}
//console.log(iterator);
}
for(var j=0;j< 3;j++) {
codonData.seq["base"+(i+1)]["alt"+((i*3)+j+1)] = iterator[j];
}
}
d3.select(ID+"_lotusWindow_").remove();
renderWindow.apply(this,["svg",ID.replace("#","")+"_lotusWindow_",location,Lotus,codonData]);
} else {
alert ("The cdna data does not match with the plotted aminoacid.\nPlease check the integrity of the html file.");
}
}
<!--Lotus initiator-->
<!--Change SNV/tile colors-->
var lastTileSNVcolor = {r:255,g:0,b:0};
var tileDBcolorCounter = 0;
var mutDBcolorCounter = 0;
var domainColorCounter = 0;
d3.select("#annotation").append("text").text("Change SNV colors").attr("x",5950).attr("y",475).style("font-family","sans-serif").style("font-size","45px").attr("text-anchor","middle").style("fill","DimGray").attr("id","changeSNVcolorText").attr("class","Options")
.on("mouseover",function () {
d3.select("#changeSNVcolorText").style("fill","Orange");
})
.on("mouseout",function () {
d3.select("#changeSNVcolorText").style("fill","DimGray");
})
.on("click",function() {
var ID = d3.select(this).attr("id")+"_SNVcolorWindow";
var location = {"x":4400,"y":475,"width":2000,"height":1500,"rx":100,"ry":100,"iconPadding":100,"iconSize":100,"minWidth":1500,"minHeight":1500,"maxWidth":4000,"maxHeight":4000};
d3.select("#"+d3.select(this).attr("id")+"_SNVcolorWindow").remove();
renderWindow.apply(this,["svg",ID,location,tileSNVcolorChanger]);
});
d3.select("#annotation").append("text").text("Change Tile colors").attr("x",5950).attr("y",575).style("font-family","sans-serif").style("font-size","45px").attr("text-anchor","middle").style("fill","DimGray").attr("id","changeTileColorText").attr("class","Options")
.on("mouseover",function () {
d3.select("#changeTileColorText").style("fill","Orange");
})
.on("mouseout",function () {
d3.select("#changeTileColorText").style("fill","DimGray");
})
.on("click",function() {
var ID = d3.select(this).attr("id")+"_TileColorWindow";
var location = {"x":4400,"y":575,"width":2000,"height":1500,"rx":100,"ry":100,"iconPadding":100,"iconSize":100,"minWidth":1500,"minHeight":1500,"maxWidth":4000,"maxHeight":4000};
d3.select("#"+d3.select(this).attr("id")+"_TileColorWindow").remove();
renderWindow.apply(this,["svg",ID,location,tileSNVcolorChanger]);
});
d3.select("#annotation").append("text").text("Change Domain colors").attr("x",5950).attr("y",675).style("font-family","sans-serif").style("font-size","45px").attr("text-anchor","middle").style("fill","DimGray").attr("id","changeDomainColorText").attr("class","Options")
.on("mouseover",function () {
d3.select("#changeDomainColorText").style("fill","Orange");
})
.on("mouseout",function () {
d3.select("#changeDomainColorText").style("fill","DimGray");
})
.on("click",function() {
var ID = d3.select(this).attr("id")+"_DomainColorWindow";
var location = {"x":4400,"y":675,"width":2000,"height":1500,"rx":100,"ry":100,"iconPadding":100,"iconSize":100,"minWidth":1500,"minHeight":1500,"maxWidth":4000,"maxHeight":4000};
d3.select("#"+d3.select(this).attr("id")+"_DomainColorWindow").remove();
renderWindow.apply(this,["svg",ID,location,tileSNVcolorChanger]);
});
function tileSNVcolorChanger (ID) {
d3.selectAll("."+arguments[0]+"drawnElements").remove();
var knobTrailData = {k1:["0.5-r/Math.sqrt(2)","0.5-ry/Math.sqrt(2)"],k2:["0.5-r/Math.sqrt(2)","0.5"],k3:["0.5-r/Math.sqrt(2)","0.5+ry/Math.sqrt(2)"]};
var currentWidth = parseFloat(d3.select("#"+arguments[0]).attr("width"));
var currentHeight = parseFloat(d3.select("#"+arguments[0]).attr("height"));
var currentDims = Math.min(currentWidth,currentHeight);
var currentOffsetX = currentWidth<=currentHeight ? 0 : (currentWidth-currentHeight)/currentHeight/2;
var currentOffsetY = currentHeight<=currentWidth ? 0 : (currentHeight-currentWidth)/currentWidth/2;
var r = 0.45;
var ry = 0.175;
d3.select("#"+arguments[0])
.selectAll("colorChangersKnobTrails")
.data(d3.keys(knobTrailData))
.enter()
.append("path")
.attr("d",function(d,i){
var objectHash = {};
objectHash.x0 = eval(knobTrailData[d][0]);
objectHash.y0 = eval(knobTrailData[d][1])+currentOffsetY;
objectHash.x1 = eval(knobTrailData[d][0]);
objectHash.y1 = eval(knobTrailData[d][1])+currentOffsetY;
return pathStringGenerator(objectHash,currentDims,currentDims);
})
.attr("stroke-width",10)
.attr("stroke","Orange")
.attr("stroke-opacity",0.85)
.attr("id",function(d){return ID+d;})
.attr("class",function(d){return ID+"drawnElements "+ID+"colorChangerAnimationLines";})
.transition("extend")
.attr("d",function(d,i){
var objectHash = {};
objectHash.x0 = eval(knobTrailData[d][0]);
objectHash.y0 = eval(knobTrailData[d][1])+currentOffsetY;
objectHash.x1 = eval(knobTrailData[d][0])+r/Math.sqrt(2);
objectHash.y1 = eval(knobTrailData[d][1])+currentOffsetY;
return pathStringGenerator(objectHash,currentDims,currentDims);
})
.delay(0)
.duration(1000);
drawPolygon("#"+ID,{filter:false,points:[[0.7,0.3],[0.9,0.3],[0.9,0.7],[0.7,0.7]],id:arguments[0]+"displayWhichColor","class":arguments[0]+"drawnElements",opacity:0.75,strokeOpacity:0.8,width:40,fill:compileCurrentColor(),stroke:compileCurrentColor(),delay:0,duration:1000},currentWidth,currentHeight,0,0);
drawPolygon("#"+ID,{filter:false,points:[[0.4,0.175],[0.4,0.225],[0.35,0.2]],id:arguments[0]+"leftSelector","class":arguments[0]+"drawnElements",opacity:0.75,strokeOpacity:0.8,width:0,fill:"Orange",stroke:"Orange",delay:0,duration:1000},currentWidth,currentHeight,0,0);
drawPolygon("#"+ID,{filter:false,points:[[0.9,0.175],[0.9,0.225],[0.95,0.2]],id:arguments[0]+"rightSelector","class":arguments[0]+"drawnElements",opacity:0.75,strokeOpacity:0.8,width:0,fill:"Orange",stroke:"Orange",delay:0,duration:1000},currentWidth,currentHeight,0,0);
drawText("#"+ID,{filter:false,x:0.8,y:0.5,id:arguments[0]+"applyColor","class":arguments[0]+"drawnElements",fontSize:currentDims/20,opacity:0.75,strokeOpacity:0.8,width:1,fill:"Orange",stroke:"Orange",delay:0,duration:1000,text:"Apply"},currentWidth,currentHeight);
d3.select("#"+arguments[0]+"applyColor").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
drawText("#"+ID,{filter:false,x:0.2,y:0.2,id:arguments[0]+"explanation","class":arguments[0]+"drawnElements",fontSize:currentDims/30,opacity:0.75,strokeOpacity:0.8,width:1,fill:"Orange",stroke:"Orange",delay:0,duration:1000,text:(function(){if(ID.match(/tile/gi)){return "Tile database"}else if (ID.match(/SNV/gi)){return "SNV database"}else{return "Domains"}})()},currentWidth,currentHeight);
d3.select("#"+arguments[0]+"explanation").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
drawText("#"+ID,{filter:false,x:0.65,y:0.2,id:arguments[0]+"displayWhichDB","class":arguments[0]+"drawnElements",fontSize:currentDims/30,opacity:0.75,strokeOpacity:0.8,width:1,fill:"Orange",stroke:"Orange",delay:0,duration:1000,text:(function(){if(ID.match(/tile/gi)){return TileDB[tileDBcolorCounter].slice(0,20)}else if (ID.match(/SNV/gi)){return MutDB[mutDBcolorCounter].slice(0,20)} else {return domainList[domainColorCounter].slice(0,20)}})()},currentWidth,currentHeight);
d3.select("#"+arguments[0]+"displayWhichDB").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
drawText("#"+ID,{filter:false,x:0.1,y:0.9,id:arguments[0]+"reset","class":arguments[0]+"drawnElements",fontSize:currentDims/25,opacity:0.75,strokeOpacity:0.8,width:1,fill:"Orange",stroke:"Orange",delay:0,duration:1000,text:"Reset"},currentWidth,currentHeight);
d3.select("#"+arguments[0]+"reset").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
drawPolygon("#"+ID,{filter:false,points:[[currentX(lastTileSNVcolor.r),0.45-ry/Math.sqrt(2)],[currentX(lastTileSNVcolor.r)+0.01,0.45-ry/Math.sqrt(2)],[currentX(lastTileSNVcolor.r)+0.01,0.55-ry/Math.sqrt(2)],[currentX(lastTileSNVcolor.r),0.55-ry/Math.sqrt(2)]],id:arguments[0]+"redKnob","class":arguments[0]+"drawnElements",opacity:1,strokeOpacity:0.7,width:30,fill:"Red",stroke:"Red",delay:0,duration:1000},currentDims,currentDims,0,currentOffsetY);
drawPolygon("#"+ID,{filter:false,points:[[currentX(lastTileSNVcolor.g),0.45],[currentX(lastTileSNVcolor.g)+0.01,0.45],[currentX(lastTileSNVcolor.g)+0.01,0.55],[currentX(lastTileSNVcolor.g),0.55]],id:arguments[0]+"greenKnob","class":arguments[0]+"drawnElements",opacity:1,strokeOpacity:0.7,width:30,fill:"Green",stroke:"Green",delay:0,duration:1000},currentDims,currentDims,0,currentOffsetY);
drawPolygon("#"+ID,{filter:false,points:[[currentX(lastTileSNVcolor.b),0.45+ry/Math.sqrt(2)],[currentX(lastTileSNVcolor.b)+0.01,0.45+ry/Math.sqrt(2)],[currentX(lastTileSNVcolor.b)+0.01,0.55+ry/Math.sqrt(2)],[currentX(lastTileSNVcolor.b),0.55+ry/Math.sqrt(2)]],id:arguments[0]+"blueKnob","class":arguments[0]+"drawnElements",opacity:1,strokeOpacity:0.7,width:30,fill:"Blue",stroke:"Blue",delay:0,duration:1000},currentDims,currentDims,0,currentOffsetY);
var drag = d3.behavior.drag().origin(function(){var x = Number(d3.select(this).attr("points").split(/\s+/).slice(0,1)[0].split(/,/)[0]);var y = Number(d3.select(this).attr("points").split(/\s+/).slice(0,1)[0].split(/,/)[1]);return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function compileCurrentColor(type) {
if (type !== "stroke") {
return "rgb("+lastTileSNVcolor.r+","+lastTileSNVcolor.g+","+lastTileSNVcolor.b+")";
} else {
var total = lastTileSNVcolor.r+lastTileSNVcolor.g+lastTileSNVcolor.b;
var squareSum = Math.pow(lastTileSNVcolor.r,2)+Math.pow(lastTileSNVcolor.g,2)+Math.pow(lastTileSNVcolor.b,2);
var k = total*1.2/squareSum;
return "rgb("+Math.min(Math.floor(Math.pow(lastTileSNVcolor.r,2)*k),255)+","+Math.min(Math.floor(Math.pow(lastTileSNVcolor.g,2)*k),255)+","+Math.min(Math.floor(Math.pow(lastTileSNVcolor.b,2)*k),255)+")";
}
}
function dragFunc() {
var minX = currentDims*(0.495-r/Math.sqrt(2));
var maxX = currentDims*(0.495);
var point = Math.max(minX,Math.min(d3.event.x,maxX));
var yUpper = Number(d3.select(this).attr("points").split(/\s+/).slice(0,1)[0].split(/,/)[1]);
d3.select(this).attr("points",function(){return point+","+yUpper+" "+(point+0.01*currentDims)+","+yUpper+" "+(point+0.01*currentDims)+","+(yUpper+0.1*currentDims)+" "+point+","+(yUpper+0.1*currentDims)});
lastTileSNVcolor[d3.select(this).attr("id").match(/red|blue|green/ig)[0].slice(0,1)] = Math.floor((point/currentDims-0.495+r/Math.sqrt(2))*255/(r/Math.sqrt(2)));
d3.select("#"+ID+"displayWhichColor").attr("fill",function () {return compileCurrentColor();}).attr("stroke", function () {return compileCurrentColor();});
}
function currentX(value){
return r/Math.sqrt(2)*(value/255-1)+0.495;
}
d3.select("#"+arguments[0]+"redKnob").call(drag);
d3.select("#"+arguments[0]+"redKnob").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select(this).attr("filter",null);});
d3.select("#"+arguments[0]+"greenKnob").call(drag);
d3.select("#"+arguments[0]+"greenKnob").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select(this).attr("filter",null);});
d3.select("#"+arguments[0]+"blueKnob").call(drag);
d3.select("#"+arguments[0]+"blueKnob").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select(this).attr("filter",null);});
d3.select("#"+arguments[0]+"displayWhichColor").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select(this).attr("filter",null);}).on("click",function(){colorFilter(ID);});
d3.select("#"+arguments[0]+"applyColor").on("mouseover",function(){d3.select("#"+ID+"displayWhichColor").attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select("#"+ID+"displayWhichColor").attr("filter",null);}).on("click",function(){colorFilter(ID);});
d3.select("#"+arguments[0]+"leftSelector").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select(this).attr("filter",null);}).on("click",function(){selector(ID,"left");});
d3.select("#"+arguments[0]+"rightSelector").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select(this).attr("filter",null);}).on("click",function(){selector(ID,"right");});
d3.select("#"+arguments[0]+"reset").on("mouseover",function(){d3.select(this).attr("filter","url(#NeonGlow)");}).on("mouseout",function(){d3.select(this).attr("filter",null);}).on("click",function(){colorFilter(ID,"reset");});
function colorFilter(ID,reset){
var selected;
if (reset !== "reset") {
if(ID.match(/tile/gi)) {
selected = TileDB[tileDBcolorCounter];
d3.selectAll(".tile").data(ids["tile"]).each(function(d,i) {var database_source = d3.select(ids["tile"][i]).attr("dbsource");var id = d3.select(ids["tile"][i]).attr("id");var regexp = new RegExp(selected,"i");d3.select(d).transition("changeColor").style("fill",function (){if((database_source.match(regexp) || id.match(regexp) || (selected == "All"))&&(selected != "None")){return compileCurrentColor();} else {return d3.select(this).style("fill");}}).delay(0).duration(750);});
} else if (ID.match(/SNV/gi)) {
selected = MutDB[mutDBcolorCounter];
d3.selectAll(".mut").data(ids["mut"]).each(function(d,i) {var database_source = d3.select(ids["mut"][i]).attr("dbsource");var regexp = new RegExp(selected,"i");d3.select(d).transition("changeColor").style("fill",function (){if((database_source.match(regexp) || (selected == "All") || ((selected == "Stop")&&(d3.select(ids["mut"][i]).attr("id").match(/x/i))) || (selected.match(/synonymous/gi)&&(selected===synOrNonsyn(d))) || (selected==="pXtoY" && pXtoY(d)))&&(selected != "None")){return compileCurrentColor();} else {return d3.select(this).style("fill");}}).delay(0).duration(750);});
} else {
selected = domainList[domainColorCounter]==="Coil"?"allCons":domainList[domainColorCounter];
d3.selectAll(".allCons").data(ids["con"]).each(function(d,i) {var clss = d3.select(ids["con"][i]).attr("class").split(" ")[0];var regexp = new RegExp(selected,"i");d3.select(d).transition("changeColor").style("fill",function (){if(clss.match(regexp) || selected==="All"){return compileCurrentColor();} else {return d3.select(this).style("fill");}}).delay(0).duration(750);d3.select(d).transition("changeStrokeColor").style("stroke",function (){if(clss.match(regexp) || selected==="All"){return compileCurrentColor("stroke");} else {return d3.select(this).style("stroke");}}).delay(0).duration(750);});
}
} else {
if(ID.match(/tile/gi)) {
selected = TileDB[tileDBcolorCounter];
d3.selectAll(".tile").data(ids["tile"]).each(function(d,i) {var database_source = d3.select(ids["tile"][i]).attr("dbsource");var id = d3.select(ids["tile"][i]).attr("id");var regexp = new RegExp(selected,"i");d3.select(d).transition("changeColor").style("fill",function (){if((database_source.match(regexp) || id.match(regexp) || (selected == "All"))&&(selected != "None")){return Or_Tile_Fill_Color[i];} else {return d3.select(this).style("fill");}}).delay(0).duration(750);});
} else if (ID.match(/SNV/gi)) {
selected = MutDB[mutDBcolorCounter];
d3.selectAll(".mut").data(ids["mut"]).each(function(d,i) {var database_source = d3.select(ids["mut"][i]).attr("dbsource");var regexp = new RegExp(selected,"i");d3.select(d).transition("changeColor").style("fill",function (){if((database_source.match(regexp) || (selected == "All") || ((selected == "Stop")&&(d3.select(ids["mut"][i]).attr("id").match(/x/i))) || (selected.match(/synonymous/gi)&&(selected===synOrNonsyn(d))) || (selected==="pXtoY" && pXtoY(d)))&&(selected != "None")){return Or_Mut_Fill_Color[i];} else {return d3.select(this).style("fill");}}).delay(0).duration(750);});
} else {
selected = domainList[domainColorCounter]==="Coil"?"allCons":domainList[domainColorCounter];
d3.selectAll(".allCons").data(ids["con"]).each(function(d,i) {var clss = d3.select(ids["con"][i]).attr("class").split(" ")[0];var regexp = new RegExp(selected,"i");d3.select(d).transition("changeColor").style("fill",function (){if(clss.match(regexp) || selected==="All"){return Or_Con_Fill_Color[i];} else {return d3.select(this).style("fill");}}).delay(0).duration(750);d3.select(d).transition("changeStrokeColor").style("stroke",function (){if(clss.match(regexp) || selected==="All"){return Or_Con_Stroke_Color[i];} else {return d3.select(this).style("stroke");}}).delay(0).duration(750);});
}
}
}
function selector(ID,direction) {
if (direction==="left") {
if(ID.match(/tile/gi)){
tileDBcolorCounter = tileDBcolorCounter === 0?TileDB.length-1:tileDBcolorCounter-1;
d3.select("#"+ID+"displayWhichDB").transition("textShuffle").tween("text",function(){var start = lexicalInterpolate(d3.select("#"+ID+"displayWhichDB").text(),1);var end = lexicalInterpolate(TileDB[tileDBcolorCounter],1);var interpolator = d3.interpolateString(start,end);return function(t){this.textContent=lexicalInterpolate(interpolator(t),0)};}).delay(0).duration(500);
}else if (ID.match(/SNV/gi)) {
mutDBcolorCounter = mutDBcolorCounter === 0?MutDB.length-1:mutDBcolorCounter-1;
d3.select("#"+ID+"displayWhichDB").transition("textShuffle").tween("text",function(){var start = lexicalInterpolate(d3.select("#"+ID+"displayWhichDB").text(),1);var end = lexicalInterpolate(MutDB[mutDBcolorCounter],1);var interpolator = d3.interpolateString(start,end);return function(t){this.textContent=lexicalInterpolate(interpolator(t),0)};}).delay(0).duration(500);
} else {
domainColorCounter = domainColorCounter === 0?domainList.length-1:domainColorCounter-1;
d3.select("#"+ID+"displayWhichDB").transition("textShuffle").tween("text",function(){var start = lexicalInterpolate(d3.select("#"+ID+"displayWhichDB").text(),1);var end = lexicalInterpolate(domainList[domainColorCounter],1);var interpolator = d3.interpolateString(start,end);return function(t){this.textContent=lexicalInterpolate(interpolator(t),0)};}).delay(0).duration(500);
}
} else {
if(ID.match(/tile/gi)){
tileDBcolorCounter = tileDBcolorCounter === TileDB.length-1?0:tileDBcolorCounter+1;
d3.select("#"+ID+"displayWhichDB").transition("textShuffle").tween("text",function(){var start = lexicalInterpolate(d3.select("#"+ID+"displayWhichDB").text(),1);var end = lexicalInterpolate(TileDB[tileDBcolorCounter],1);var interpolator = d3.interpolateString(start,end);return function(t){this.textContent=lexicalInterpolate(interpolator(t),0)};}).delay(0).duration(500);
}else if (ID.match(/SNV/gi)) {
mutDBcolorCounter = mutDBcolorCounter === MutDB.length-1?0:mutDBcolorCounter+1;
d3.select("#"+ID+"displayWhichDB").transition("textShuffle").tween("text",function(){var start = lexicalInterpolate(d3.select("#"+ID+"displayWhichDB").text(),1);var end = lexicalInterpolate(MutDB[mutDBcolorCounter],1);var interpolator = d3.interpolateString(start,end);return function(t){this.textContent=lexicalInterpolate(interpolator(t),0)};}).delay(0).duration(500);
} else {
domainColorCounter = domainColorCounter === domainList.length-1?0:domainColorCounter+1;
d3.select("#"+ID+"displayWhichDB").transition("textShuffle").tween("text",function(){var start = lexicalInterpolate(d3.select("#"+ID+"displayWhichDB").text(),1);var end = lexicalInterpolate(domainList[domainColorCounter],1);var interpolator = d3.interpolateString(start,end);return function(t){this.textContent=lexicalInterpolate(interpolator(t),0)};}).delay(0).duration(500);
}
}
}
}
function lexicalInterpolate(given,direction){
var alphabet = {A:1,a:1,B:2,b:2,C:3,c:3,D:4,d:4,E:5,e:5,F:6,f:6,G:7,g:7,H:8,h:8,I:9,i:9,J:10,j:10,K:11,k:11,L:12,l:12,M:13,m:13,N:14,n:14,O:15,o:15,P:16,p:16,Q:17,q:17,R:18,r:18,S:19,s:19,T:20,t:20,U:21,u:21,V:22,v:22,W:23,w:23,X:24,x:24,Y:25,y:25,Z:26,z:26,_:27,"-":28,"(":29,")":30,"[":31,"]":32,"*":33,"&":34,"#":35,"<":36,">":37,"0":38,"1":39,"2":40,"3":41,"4":42,"5":43,"6":44,"7":45,"8":46,"9":47};
var alphabetReverse = {0:"a",1:"a",2:"b",3:"c",4:"d",5:"e",6:"f",7:"g",8:"h",9:"i",10:"j",11:"k",12:"l",13:"m",14:"n",15:"o",16:"p",17:"q",18:"r",19:"s",20:"t",21:"u",22:"v",23:"w",24:"x",25:"y",26:"z",27:"_",28:"-",29:"(",30:")",31:"[",32:"]",33:"*",34:"&",35:"#",36:"<",37:">",38:"0",39:"1",40:"2",41:"3",42:"4",43:"5",44:"6",45:"7",46:"8",47:"9"};
var result;
if (direction===1) {
result = "";
var a = given.split("");
for (var i=0;i<a.length;i++){
if (i !== a.length-1) {
result += alphabet[a[i]]+",";
} else {
result += alphabet[a[i]];
}
}
return result;
} else {
result = "";
given = given.split(",");
for (var i=0;i<given.length;i++){
result += alphabetReverse[Math.floor(given[i])];
}
return result;
}
}
<!--Change SNV/tile colors-->
<!--New Modes for SNV db (MutDB)-->
function synOrNonsyn (d){
var text = d3.select(d).text();
text = text.replace("p.","");
var X = text.slice(0,1);
var Y = text.slice(-1);
if (X === Y) {
return "Synonymous";
} else {
return "Nonsynonymous";
}
}
function pXtoY (d) {
var text = d3.select(d).text();
text = text.replace(/\s*p\./,"");
var X = text.slice(0,1);
var Y = text.slice(-1);
var WhatsClickedSequence = [];
for (var i=0;i<d3.keys(aminoacids).length;i++) {
if(aminoacids[d3.keys(aminoacids)[i]][2]=="Clicked") {
WhatsClickedSequence.push(d3.keys(aminoacids)[i]);
}
}
return WhatsClickedSequence.some(function(x){return x===X;}) && queryAA(AminoAcidProperties[AminoAcidPropertiesCount]).some(function(y){return y===Y});
}
function queryAA (property) {
var result = [];
if (property !== "Sequence Display" && property !== "All") {
d3.keys(aminoacids).forEach(function(d,i){if(aminoacids[d].some(function(x){return x === property && !(result.some(function(x){return x===d;}))})){result.push(d);}});
d3.keys(aminoacids_OtherProperties).forEach(function(d,i){if(aminoacids_OtherProperties[d].some(function(x){return x === property && !(result.some(function(x){return x===d;}))})){result.push(d);}});
} else if (property === "All") {
result = d3.keys(aminoacids);
} else {
for (var i=0;i<WhatsClicked.length;i++) {
result.push(WhatsClicked[i]);
}
}
return result;
}
<!--New Modes for SNV db (MutDB)-->
<!--Ordinator-->
function ordinatorRotate (pointArray,angleArray) {
var sin = Math.sin;
var cos = Math.cos;
var angleToRadian = Math.PI*2/360;
var zeta = angleArray[0]*angleToRadian;
var beta = angleArray[1]*angleToRadian;
var theta = angleArray[2]*angleToRadian;
var x = pointArray[0];
var y = pointArray[1];
var z = pointArray[2];
var xPrime =(x*cos(theta)*cos(beta)+y*cos(beta)*sin(theta)-z*sin(beta));
var yPrime = (x*(cos(theta)*sin(beta)*sin(zeta)-sin(theta)*cos(zeta))+y*(cos(theta)*cos(zeta)+sin(theta)*sin(beta)*sin(zeta))+z*cos(beta)*sin(zeta));
var zPrime = (x*(sin(theta)*sin(zeta)+cos(theta)*cos(zeta)*sin(beta))+y*(cos(zeta)*sin(theta)*sin(beta)-cos(theta)*sin(zeta))+z*cos(beta)*cos(zeta));
var resultArray = [0,0,0,0];
resultArray[0] = xPrime;
resultArray[1] = yPrime;
resultArray[2] = zPrime;
resultArray[3] = pointArray[3];
return resultArray;
}
function ordinatorMap2D(pointArray) {
var sin = Math.sin;
var cos = Math.cos;
zAngle = Math.PI/2;
var z = pointArray[2];
var x = (pointArray[0]-z*cos(zAngle));
var y = (pointArray[1]+z*sin(zAngle));
var resultArray = [0,0,0];
resultArray[0] = x;
resultArray[1] = y;
resultArray[2] = pointArray[3];
return resultArray;
}
function ordinatorFetchData (X,Y,Z) {
//The below hash has a duplicate in the ordinator function.
var aminoacidsX = {"A":["Alanine","Nonpolar"],"R":["Arginine","Positive"],"N":["Asparagine","Polar"],"D":["Aspartic-Acid","Negative"],"C":["Cysteine","Polar"],"Q":["Glutamine","Polar"],"E":["Glutamic-Acid","Negative"],"G":["Glycine","Nonpolar"],"H":["Histidine","Positive"],"I":["Isoleucine","Nonpolar"],"L":["Leucine","Nonpolar"],"K":["Lysine","Positive"],"M":["Methionine","Nonpolar"],"F":["Phenylalanine","Aromatic"],"P":["Proline","Nonpolar"],"S":["Serine","Polar"],"T":["Threonine","Polar"],"W":["Tryptophan","Aromatic"],"Y":["Tyrosine","Aromatic"],"V":["Valine","Nonpolar"],"X":["Stop","Stop"]};
//has a copy in the global scope as well
var aminoacids_OtherProperties = {"A":["Hydrophobic","Aliphatic"],"R":["Hydrophilic","H-bonding","Basic","Ionizable"],"N":["Hydrophilic"],"D":["Hydrophilic","H-bonding","Acidic","Ionizable"],"C":["Hydrophilic","H-bonding","Sulfur-containing","Acidic","Ionizable","Disulfide-bond"],"Q":["Hydrophilic","H-bonding"],"E":["Hydrophilic","H-bonding","Acidic","Ionizable"],"G":["Hydrophobic","Aliphatic"],"H":["Hydrophilic","H-bonding","Basic","Ionizable","All-aromatic"],"I":["Hydrophobic","Aliphatic"],"L":["Hydrophobic","Aliphatic"],"K":["Hydrophilic","H-bonding","Basic","Ionizable"],"M":["Hydrophobic","Sulfur-containing"],"F":["Hydrophobic","All-aromatic"],"P":["Hydrophobic","Aliphatic","Cyclic"],"S":["Hydrophilic","H-bonding"],"T":["Hydrophilic","H-bonding"],"W":["Hydrophobic","H-bonding","All-aromatic"],"Y":["Hydrophobic","H-bonding","Ionizable","All-aromatic"],"V":["Hydrophobic","Aliphatic"]};
//store precomputed values
!ordinatorFetchData.preComputed ? ordinatorFetchData.preComputed = {} : void(0);
//options for different functions to choose from
var options = {
polyphen2:polyphen2,
sift:sift,
position:getPos,
chemicalType:getType,
altType:getAltType,
AAtype:getAAtype,
altAAtype:getAltAAtype,
hydro:hydro,
altHydro:altHydro,
avgPrediction:getAvgScore,
aaChange:getAAchangeScore,
domain:getDomainType,
customdb:getCustomDB,
MAF:getMAF,
conservation:getConservation,
aggregateFeature:aggregateFeature,
hist1:hist1,
hist2:hist2,
hist3:hist3
};
//conservation
var minMaxCons = [0,0];
for (var i =0;i<ids["con"].length;i++){
minMaxCons[0] = +ids["con"][i].replace(/.*_/,"") < minMaxCons[0]? +ids["con"][i].replace(/.*_/,""):minMaxCons[0];
minMaxCons[1] = +ids["con"][i].replace(/.*_/,"") > minMaxCons[1]? +ids["con"][i].replace(/.*_/,""):minMaxCons[1];
}
//for uploaded files. The registeredHistograms look like this: [[[ArrayOfPoints],ID],..]. New files are unshifted, old ones are popped. Max array length is 3.
var hist1 =[];
var hist2 =[];
var hist3 =[];
var offset = registeredHistogramID-registeredHistograms.length;
for (var i = 1;i<4;i++) {
if(registeredHistograms.filter(function(d){return d[1]===((i+offset+3)%3)})[0] !== undefined) {
//console.log("passed");
eval("hist"+i+" = registeredHistograms.filter(function(d){return d[1]==="+((i+offset+3)%3)+"})[0][0]");
}
}
var checkSum = (hist1.length+hist2.length+hist3.length-(ids["con"].length*3))%(ids["con"].length);
if (checkSum !== 0) {
alert("Some of your histogram(s) may have different number of rows than the residue count. Please correct the files and reupload them.");
}
var minMaxHist1 = [0,0];
var minMaxHist2 = [0,0];
var minMaxHist3 = [0,0];
for (var i =0;i<ids["con"].length;i++){
minMaxHist1[0] = +hist1[i] < minMaxHist1[0]? +hist1[i] : minMaxHist1[0];
minMaxHist1[1] = +hist1[i] > minMaxHist1[1]? +hist1[i] : minMaxHist1[1];
minMaxHist2[0] = +hist2[i] < minMaxHist2[0]? +hist2[i] : minMaxHist2[0];
minMaxHist2[1] = +hist2[i] > minMaxHist2[1]? +hist2[i] : minMaxHist2[1];
minMaxHist3[0] = +hist3[i] < minMaxHist3[0]? +hist3[i] : minMaxHist3[0];
minMaxHist3[1] = +hist3[i] > minMaxHist3[1]? +hist3[i] : minMaxHist3[1];
}
//populate points
var args = {points:[],labels:[],labelNames:[]};
ids["mut"].forEach(function(d,i){
args.points.push([options[X](d),-options[Y](d),options[Z](d),i]);
});
//populate labels
for (var i=0;i<3;i++) {
args.labels.push(options[arguments[i]](0,"label"));
args.labelNames.push(arguments[i]);
}
return args;
//different functions below, retreived from the options hash
function polyphen2(element,type) {
if (type !== "label" && (Number(d3.select(element).attr("polyphen2"))>=0)) {
return Number(d3.select(element).attr("polyphen2"));
} else if (type !== "label") {
return -0.5;
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function sift(element,type) {
if (type !== "label" && (Number(d3.select(element).attr("sift"))>=0)) {
return Math.round((1-Number(d3.select(element).attr("sift")))*1000)/1000;
} else if (type !== "label") {
return -0.5;
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function getPos(element,type) {
if (type !== "label") {
return Math.round(parseInt(d3.select(element).attr("id").slice(1))/fasta_sorted.length*1000)/1000;
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function getType(element,type) {
if (type !== "label") {
return ({"Nonpolar":0.167,"Polar":0.334,"Negative":0.501,"Positive":0.668,"Aromatic":0.835})[aminoacids[d3.select(element).attr("id").slice(0,1)][1]];
} else {
return ["Nonpolar","Polar","Negative","Positive","Aromatic","Stop"];
}
}
function getAltType(element,type) {
if (type !== "label" && d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1) !== "X") {
return ({"Nonpolar":0.167,"Polar":0.334,"Negative":0.501,"Positive":0.668,"Aromatic":0.835})[aminoacids[d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1)][1]];
} else if (type !== "label") {
return 1.0;
} else {
return ["Nonpolar","Polar","Negative","Positive","Aromatic","Stop"];
}
}
function getAAtype(element,type) {
if (type !== "label") {
return Math.round((1/d3.keys(aminoacids).length*(d3.keys(aminoacids).sort().indexOf(d3.select(element).attr("id").slice(0,1))+1))*1000)/1000;
} else {
return d3.keys(aminoacids).sort();
}
}
function getAltAAtype(element,type) {
//I had a copy of aminoacidsX hash but X comes before Y, so I decided to put the nonsense muts in the end. But the length of aminoacidsX will be the same as array so no need to replace that.
var array = d3.keys(aminoacids).sort();
array.push("X");
if (type !== "label") {
return Math.round((1/d3.keys(aminoacidsX).length*(array.indexOf(d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1))+1))*1000)/1000;
} else {
return array;
}
}
function getAvgScore(element,type) {
var totalScore = 0;
var count = 0;
if (type !== "label") {
d3.keys(predictionDatabase).forEach(function(d,i){
if(predictionDatabase[d][2] !== "inverse") {
if (Number(d3.select(element).attr(predictionDatabase[d][0]))-predictionDatabase[d][1] >= 0) {
totalScore+= (Number(d3.select(element).attr(predictionDatabase[d][0]))-predictionDatabase[d][1])/(1-predictionDatabase[d][1]);
count++;
} else if (d3.select(element).attr(predictionDatabase[d][0]) !== "NA") {
count++;
}
} else {
if (predictionDatabase[d][1]-Number(d3.select(element).attr(predictionDatabase[d][0])) >= 0) {
totalScore+= (predictionDatabase[d][1]-Number(d3.select(element).attr(predictionDatabase[d][0])))/(predictionDatabase[d][1]);
count++;
} else if (d3.select(element).attr(predictionDatabase[d][0]) !== "NA") {
count++;
}
}
});
if (totalScore >= 0 && count !== 0) {
return Math.round(totalScore/count*1000)/1000;
} else {
return -0.5;
}
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function getAAchangeScore(element,type) {
//The below matrix is arbitrarily set with intention to create least number of classes based on coarse chemical property. It is a diagonal matrix with the row reading: Nonpolar-Polar-Negative-Positive-Aromatic. Use it with caution.
var substitutionMatrix =
[[0,0.25,0.5,0.5,0.25],
[0.25,0,0.5,0.5,0.25],
[0.5,0.5,0,0.75,0.5],
[0.5,0.5,0.75,0,0.5],
[0.25,0.25,0.5,0.5,0]];
var types = {"Nonpolar":0,"Polar":1,"Negative":2,"Positive":3,"Aromatic":4};
if (type !== "label" && d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1) !== "X") {
return substitutionMatrix[types[aminoacids[d3.select(element).attr("id").replace(/_rsID.*/,"").slice(0,1)][1]]][types[aminoacids[d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1)][1]]];
} else if (type !== "label") {
return 1;
} else {
return [0.25,0.5,0.75,1];
}
}
function getDomainType(element,type) {
var array = domainList.filter(function(d,i){return d !=="All"}).sort();
if (type !== "label" && d3.select(ids["con"][parseInt(d3.select(element).attr("id").slice(1))-1]).attr("class").split(" ")[0] !== "allCons") {
return 1/(domainList.length-1)*(array.indexOf(d3.select(ids["con"][parseInt(d3.select(element).attr("id").slice(1))-1]).attr("class").split(" ")[0])+1);
} else if (type !== "label") {
if (domainList.length > 1) {
return 1/(domainList.length-1)*(array.indexOf("Coil")+1);
} else {
return 1;
}
} else {
return array;
}
}
function getCustomDB (element,type) {
var array = MutDB.filter(function(d,i){return d.match(/customdb/i)}).sort();
if (type !== "label" && MutDB.some(function(d,i){return d.match(/customdb/i)})) {
if (array.indexOf(d3.select(element).attr("dbsource")) !== -1) {
return 1/array.length*(array.indexOf(d3.select(element).attr("dbsource"))+1);
} else {
return -0.5;
}
} else if (type !== "label") {
//alert("Non of your variants have a database source ('dbsource') attribute starting with the 'customdb' keyword.\nTherefore all points on this axis will receive a score of -0.5.");
return -0.5;
} else {
if (array.length <= 0) {
return [" "];
} else {
return array;
}
}
}
function getMAF (element,type) {
if (type !== "label") {
var frequency = +d3.select(element).attr("ipvMAF") || +d3.select(element).attr("ipvmaf");
if (frequency < 0) {
frequency = 0;
} else if (frequency > 1) {
frequency = 1;
} else if (String(frequency).match(/na/gi)) {
frequency = -0.5;
}
return frequency;
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function getConservation (element,type) {
if (type !== "label") {
var score = +ids["con"][parseInt(d3.select(element).attr("id").slice(1))-1].replace(/.*_/,"");
return Math.round((score-minMaxCons[0])/(minMaxCons[1]-minMaxCons[0])*1000)/1000;
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function hist1 (element,type) {
if(type !== "label") {
if (hist1.length === ids["con"].length) {
var score = hist1[parseInt(d3.select(element).attr("id").slice(1))-1];
return Math.round((score-minMaxHist1[0])/(minMaxHist1[1]-minMaxHist1[0])*1000)/1000;
} else {
return -0.5;
}
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function hist2 (element,type) {
if(type !== "label") {
if (hist2.length === ids["con"].length) {
var score = hist2[parseInt(d3.select(element).attr("id").slice(1))-1];
return Math.round((score-minMaxHist2[0])/(minMaxHist2[1]-minMaxHist2[0])*1000)/1000;
} else {
return -0.5;
}
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function hist3 (element,type) {
if(type !== "label") {
if (hist3.length === ids["con"].length) {
var score = hist3[parseInt(d3.select(element).attr("id").slice(1))-1];
return Math.round((score-minMaxHist3[0])/(minMaxHist3[1]-minMaxHist3[0])*1000)/1000;
} else {
return -0.5;
}
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function hydro (element,type) {
if (type !== "label") {
if(aminoacids_OtherProperties[d3.select(element).attr("id").slice(0,1)].some(function(x){return x==="Hydrophilic"})) {
return 1;
} else if (aminoacids_OtherProperties[d3.select(element).attr("id").slice(0,1)].some(function(x){return x==="Hydrophobic"})) {
return 0.5;
} else {
return -0.5;
}
} else {
return ["Hydrophobic","Hydrophilic"];
}
}
function altHydro (element,type) {
if (type !== "label") {
if (d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1)==="X") {
return -0.5;
}else if(aminoacids_OtherProperties[d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1)].some(function(x){return x==="Hydrophilic"})) {
return 1;
} else if (aminoacids_OtherProperties[d3.select(element).attr("id").replace(/_rsID.*/,"").slice(-1)].some(function(x){return x==="Hydrophobic"})) {
return 0.5;
} else {
return -0.5;
}
} else {
return ["Hydrophobic","Hydrophilic"];
}
}
function aggregateFeature (element,type) {
if (type !== "label") {
return (ordinatorFetchData.preComputed.segmentVector || initAggregation())[parseInt(d3.select(element).attr("id").slice(1))-1];
} else {
return [0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0];
}
}
function initAggregation () {
var matrixColumns = ["Nonpolar","Polar","Positive","Negative","Aromatic","All-aromatic","Aliphatic","Cyclic","Hydrophobic","Hydrophilic","Acidic","Basic","Ionizable","H-bonding","Disulfide-bond","Sulfur-containing"].sort();
(function(){
var array = d3.keys(aminoacidsX).sort();
array.splice(-2,1);
for (var i =array.length-1;i>=0;i--){
matrixColumns.unshift(array[i]);
}
})();
var segmentVector = [];
var _ceiling_ = Math.PI*Math.PI/3;
for (var i=0,total=_ceiling_;i<fasta_sorted.length;i++) {
total=_ceiling_;
for (var j=1;j<11;j++) {
if(i-j>=0) {
total -= vecDist(calculateRow(fasta_sorted[i]),calculateRow(fasta_sorted[i-j]))/13/Math.pow(j,2);
}
if(i+j<fasta_sorted.length) {
total -= vecDist(calculateRow(fasta_sorted[i]),calculateRow(fasta_sorted[i+j]))/13/Math.pow(j,2);
}
}
segmentVector[i] = +(total/_ceiling_).toFixed(2);
}
return ordinatorFetchData.preComputed.segmentVector = segmentVector;
function calculateRow(a){
var vector = [];
for (var i=0;i<matrixColumns.length;i++){
if (a===matrixColumns[i] || aminoacidsX[a].some(function(d){return d===matrixColumns[i]}) || aminoacids_OtherProperties[a].some(function(d){return d===matrixColumns[i]})) {
vector.push(1);
} else {
vector.push(0);
}
}
return vector;
}
function vecDist(vec1,vec2) {
var result = 0;
for (var i=0;i<vec1.length;i++) {
result += Math.abs(vec1[i]-vec2[i]);
}
return result;
}
}
}
//keep a reference to update setInterval functions
var intervalButtons;
var intervalHighlight;
function ordinator(ID,args){
var labels = args.labels;
var labelNames = args.labelNames;
var points = args.points;
//Just keep reference to show x,y,z values when mouseover, also correct the y axis
var pointsRef = [];
points.forEach(function(d,i){pointsRef[i]= [d[0],-d[1],d[2]];});
//get rid of any trace lines if any
d3.select("#"+ID+"_traceLine").remove();
//get rid of any previoulsy opened function windows
d3.select("#"+ID+"_func").remove();
//get rid of any previously initiated setIntervals and registerLinkBoxes
d3.selectAll(".ordinator_"+ID+"_registerLinkBoxes").remove();
clearInterval(intervalButtons);
clearInterval(intervalHighlight);
//below, same as in Lotus function.
var aaSymbols = {Nonpolar:[_drawCircle_,"Gray"],Polar:[_drawCircle_,"DeepPink"],Positive:[_drawEqTriangle_,"Red"],Negative:[_drawEqTriangle_,"Blue"],Aromatic:[_drawHexagon_,"Green"],Stop:[_drawText_,"Orange"]};
//a copy of the aminoacids hash, it has X
var aminoacidsX = {"A":["Alanine","Nonpolar"],"R":["Arginine","Positive"],"N":["Asparagine","Polar"],"D":["Aspartic-Acid","Negative"],"C":["Cysteine","Polar"],"Q":["Glutamine","Polar"],"E":["Glutamic-Acid","Negative"],"G":["Glycine","Nonpolar"],"H":["Histidine","Positive"],"I":["Isoleucine","Nonpolar"],"L":["Leucine","Nonpolar"],"K":["Lysine","Positive"],"M":["Methionine","Nonpolar"],"F":["Phenylalanine","Aromatic"],"P":["Proline","Nonpolar"],"S":["Serine","Polar"],"T":["Threonine","Polar"],"W":["Tryptophan","Aromatic"],"Y":["Tyrosine","Aromatic"],"V":["Valine","Nonpolar"],"X":["Stop","Stop"]};
//extract the wildtype and the mutated amino acids
var wildtypeAndMutated = [];
ids["mut"].forEach(function(d,i){var wtMt = [];wtMt.push(d.slice(1,2));wtMt.push(d.replace(/_rsID.*/,"").slice(-1));wildtypeAndMutated.push(wtMt);});
//extract the point names from ids, saves bit of computation
var pointNames = [];
var pointLocations = [];
ids["mut"].forEach(function(d,i){pointNames.push(d.replace(/\#|_rsID.*/g,""));pointLocations.push(parseInt(d.slice(2)))});
//keep reference to the volumes/links if any
var links = [];
var linksColors = [];
var linksAlphas = [];
var linkCounter = 0;
//tracks whether the user is linking or just started linking
var linkingStatus = 0;
var glyphOrigin = 0;
var dragStartX;
var dragStartY;
var currentRotateX = 0;
var currentRotateY = 45;
var currentRotateZ = 0;
var width = Number(d3.select("#"+ID).attr("width"));
var height = Number(d3.select("#"+ID).attr("height"));
var wTimesH = width*height;
var widthTranslate = 1/2;
var heightTranslate = 1/2;
var widthScale = 1/3;
var heightScale = 1/6;
var fontSize = wTimesH/70000;
var glyphMultiplier = 1;
var showTraceLine = 0;
var showLabels = 0;
//***Filter parameters***
var regions = [(1+fasta_sorted.length)/2-25,(1+fasta_sorted.length)/2+25];
//amino acid keys for filtering [[wildtype],[mutated]]
var filterAA = [[],[]];
(function(){var array = d3.keys(aminoacids);var arrayX = d3.keys(aminoacidsX);array.forEach(function(d,i){filterAA[0][i]=[d,"on"];});arrayX.forEach(function(d,i){filterAA[1][i]=[d,"on"];})})();
var filterNA = 1;
var filterSynonymous = 1;
//***Filter parameters***
//***filter the points before you render them***
args = filterOrdinator(points);
//***filter the points before you render them***
//store//
//aaSymbols[aminoacidsX[wildtypeAndMutated[points[i][3]][glyphOrigin]][1]][0]
var stored = [wildtypeAndMutated.map(function(d,i){return aaSymbols[aminoacidsX[d[0]][1]][0]}),wildtypeAndMutated.map(function(d,i){return aaSymbols[aminoacidsX[d[1]][1]][0]})];
var storedColor = [wildtypeAndMutated.map(function(d,i){return aaSymbols[aminoacidsX[d[0]][1]][1]}),wildtypeAndMutated.map(function(d,i){return aaSymbols[aminoacidsX[d[1]][1]][1]})];
//store//
//Drawing API, exclusive to Indoril/Ordinator
<!--Draw equilateral triangle with given radius measured as the distance from center of gravity to one corner-->
//the x,y and r values are between 0 and 1, they represent the full width and the height of whatever container they are drawn in
function _drawEqTriangle_ (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
var currentRadius = Math.min(currentWidth,currentHeight);
var r = objectHash[0];
var x = objectHash[1];
var y = objectHash[2];
//d3.select(IDtoDrawOn).append("polygon").attr("points",function(){return (x*currentWidth)+","+(y*currentHeight-r*currentRadius)+" "+(x*currentWidth+r*currentRadius/2*Math.sqrt(3))+","+(y*currentHeight+r*currentRadius/2)+" "+(x*currentWidth-r*currentRadius/2*Math.sqrt(3))+","+(y*currentHeight+r*currentRadius/2);}).attr("stroke-linejoin","round").attr("fill",objectHash[3]).attr("fill-opacity",objectHash[5]).attr("stroke",objectHash[4]).attr("stroke-opacity",objectHash[5]).attr("stroke-width",2).attr("id",objectHash[8]).attr("class","ordinatorPoints").attr("onmouseover",objectHash[9]).attr("onmouseout",objectHash[10]);
shapeMaker.make("polygon",IDtoDrawOn)("points",(x*currentWidth)+","+(y*currentHeight-r*currentRadius)+" "+(x*currentWidth+r*currentRadius/2*Math.sqrt(3))+","+(y*currentHeight+r*currentRadius/2)+" "+(x*currentWidth-r*currentRadius/2*Math.sqrt(3))+","+(y*currentHeight+r*currentRadius/2))("stroke-linejoin","round")("fill",objectHash[3])("fill-opacity",objectHash[5])("stroke",objectHash[4])("stroke-opacity",objectHash[5])("stroke-width",2)("id",objectHash[8])("class","ordinatorPoints")("onmouseover",objectHash[9])("onmouseout",objectHash[10]);
}
<!--Draw equilateral triangle with given radius measured as the distance from center of gravity to one corner-->
<!--Draw hexagon-->
function _drawHexagon_ (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
var currentRadius = Math.min(currentWidth,currentHeight);
var r = objectHash[0];
var x = objectHash[1];
var y = objectHash[2];
//d3.select(IDtoDrawOn).append("polygon").attr("points",function(){return (x*currentWidth+r*currentRadius/2)+","+(y*currentHeight-r*currentRadius/2*Math.sqrt(3))+" "+(x*currentWidth+r*currentRadius)+","+(y*currentHeight)+" "+(x*currentWidth+r*currentRadius/2)+","+(y*currentHeight+r*currentRadius/2*Math.sqrt(3))+" "+(x*currentWidth-r*currentRadius/2)+","+(y*currentHeight+r*currentRadius/2*Math.sqrt(3))+" "+(x*currentWidth-r*currentRadius)+","+(y*currentHeight)+" "+(x*currentWidth-r*currentRadius/2)+","+(y*currentHeight-r*currentRadius/2*Math.sqrt(3));}).attr("stroke-linejoin","round").attr("fill",objectHash[3]).attr("fill-opacity",objectHash[5]).attr("stroke",objectHash[4]).attr("stroke-opacity",objectHash[5]).attr("stroke-width",2).attr("id",objectHash[8]).attr("class","ordinatorPoints").attr("onmouseover",objectHash[9]).attr("onmouseout",objectHash[10]);
shapeMaker.make("polygon",IDtoDrawOn)("points",(x*currentWidth+r*currentRadius/2)+","+(y*currentHeight-r*currentRadius/2*Math.sqrt(3))+" "+(x*currentWidth+r*currentRadius)+","+(y*currentHeight)+" "+(x*currentWidth+r*currentRadius/2)+","+(y*currentHeight+r*currentRadius/2*Math.sqrt(3))+" "+(x*currentWidth-r*currentRadius/2)+","+(y*currentHeight+r*currentRadius/2*Math.sqrt(3))+" "+(x*currentWidth-r*currentRadius)+","+(y*currentHeight)+" "+(x*currentWidth-r*currentRadius/2)+","+(y*currentHeight-r*currentRadius/2*Math.sqrt(3)))("stroke-linejoin","round")("fill",objectHash[3])("fill-opacity",objectHash[5])("stroke",objectHash[4])("stroke-opacity",objectHash[5])("stroke-width",2)("id",objectHash[8])("class","ordinatorPoints")("onmouseover",objectHash[9])("onmouseout",objectHash[10]);
}
<!--Draw hexagon-->
<!--Draw circle-->
function _drawCircle_ (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
var currentRadius = Math.min(currentWidth,currentHeight);
var r = objectHash[0];
var x = objectHash[1];
var y = objectHash[2];
//d3.select(IDtoDrawOn).append("circle").attr("cx",x*currentWidth).attr("cy",y*currentHeight).attr("r",r*currentRadius).attr("fill",objectHash[3]).attr("fill-opacity",objectHash[5]).attr("stroke",objectHash[4]).attr("stroke-opacity",objectHash[5]).attr("stroke-width",2).attr("id",objectHash[8]).attr("class","ordinatorPoints").attr("onmouseover",objectHash[9]).attr("onmouseout",objectHash[10]);
shapeMaker.make("circle",IDtoDrawOn)("cx",x*currentWidth)("cy",y*currentHeight)("r",r*currentRadius)("fill",objectHash[3])("fill-opacity",objectHash[5])("stroke",objectHash[4])("stroke-opacity",objectHash[5])("stroke-width",2)("id",objectHash[8])("class","ordinatorPoints")("onmouseover",objectHash[9])("onmouseout",objectHash[10]);
}
<!--Draw circle-->
<!--Draw text-->
function _drawText_ (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
var currentRadius = Math.min(currentWidth,currentHeight);
var r = objectHash[0];
var x = objectHash[1];
var y = objectHash[2];
//d3.select(IDtoDrawOn).append("text").text(objectHash[6]).attr("x",x*currentWidth).attr("y",y*currentHeight).attr("font-size",objectHash[7]).attr("font-family","sans-serif").attr("text-anchor","middle").attr("fill",objectHash[3]).attr("fill-opacity",objectHash[5]).attr("stroke",objectHash[4]).attr("stroke-opacity",objectHash[5]).attr("stroke-width",2).attr("id",objectHash[8]).attr("class","ordinatorPoints").attr("onmouseover",objectHash[9]).attr("onmouseout",objectHash[10]);
shapeMaker.make("text",IDtoDrawOn)("x",x*currentWidth)("y",y*currentHeight)("font-size",objectHash[7])("font-family","sans-serif")("text-anchor","middle")("fill",objectHash[3])("fill-opacity",objectHash[5])("stroke",objectHash[4])("stroke-opacity",objectHash[5])("stroke-width",2)("id",objectHash[8])("class","ordinatorPoints")("onmouseover",objectHash[9])("onmouseout",objectHash[10])().textContent = objectHash[6];
}
<!--Draw text-->
<!--Path string generator-->
function pathStringGenerator(objectHash,currentWidth,currentHeight) {
return "M"+(objectHash[0]*currentWidth)+","+(objectHash[1]*currentHeight)+"L"+(objectHash[2]*currentWidth)+","+(objectHash[3]*currentHeight);
}
<!--Path string generator-->
<!--Draw axis text-->
function _drawAxisText_ (IDtoDrawOn,objectHash,currentWidth,currentHeight) {
var currentRadius = Math.min(currentWidth,currentHeight);
var x = objectHash[0];
var y = objectHash[1];
//d3.select(IDtoDrawOn).append("text").text(objectHash[5]).attr("x",x*currentWidth).attr("y",y*currentHeight).attr("font-size",objectHash[6]).attr("font-family","sans-serif").attr("text-anchor","middle").attr("fill",objectHash[2]).attr("fill-opacity",objectHash[4]).attr("stroke",objectHash[3]).attr("stroke-opacity",objectHash[4]).attr("stroke-width",2).attr("transform",objectHash[7]);
shapeMaker.make("text",IDtoDrawOn)("x",x*currentWidth)("y",y*currentHeight)("font-size",objectHash[6])("font-family","sans-serif")("text-anchor","middle")("fill",objectHash[2])("fill-opacity",objectHash[4])("stroke",objectHash[3])("stroke-opacity",objectHash[4])("stroke-width",2)("transform",objectHash[7] || "")().textContent = objectHash[5];
}
<!--Draw axis text-->
//Drawing API, exclusive to Indoril/Ordinator
//Container for the 3D points
d3.select("#"+ID).append("g").attr("id",ID+"_ordinatorPointsContainer");
d3.select("#"+ID).append("g").attr("id",ID+"_ordinatorAxesContainer");
var container = "#"+ID+"_ordinatorPointsContainer";
var containerAxes = "#"+ID+"_ordinatorAxesContainer";
var containerElem = d3.select(container).node();
var containerAxesElem = d3.select(containerAxes).node();
//Container for the 3D points
//An alternative to d3 for making elements 1 by 1
var shapeMaker = (function(){
function maker(){
var _this_ = this;
this.attr = function(name,value){if (!name){return this;}this.setAttribute(name,value);return _this_.attr.bind(this);} ;
this.make = function(el,containerNode){var el = document.createElementNS("http://www.w3.org/2000/svg",el); containerNode.appendChild(el); return this.attr.bind(el)};
}
return new maker;
})()
//An alternative to d3 for making elements 1 by 1
renderAxes._ready_ = true;
renderGlyphs._ready_ = true;
renderOrdinatorGUI (ID);
renderAxes([0,45,0]);
renderGlyphs(args,[0,45,0]);
var dragOrdinator = d3.behavior.drag().on("drag", dragOrdinatorFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();dragStartX=coordinates[0];dragStartY=coordinates[1];}).on("dragend",function(){currentRotateX = (currentRotateX+(coordinates[1]-dragStartY)/height*360)%360;currentRotateY = (currentRotateY-(coordinates[0]-dragStartX)/width*360)%360;});
function dragOrdinatorFunc() {
var rotateY = currentRotateY-(+d3.event.x-dragStartX)/width*360;
var rotateX = currentRotateX+(+d3.event.y-dragStartY)/height*360;
d3.select("#"+ID+"_renderXrotate_knob").attr("x",function(){var x = rotateX % 360; if (x < 0){return 220-400/360*x;}else{return 220-400/360*(-360+x);}});
d3.select("#"+ID+"_renderYrotate_knob").attr("x",function(){var x = rotateY % 360; if (x < 0){return width-620-400/360*x;}else{return width-620-400/360*(-360+x);}});
renderAxes([rotateX,rotateY,currentRotateZ],1);
renderGlyphs(args,[rotateX,rotateY,currentRotateZ]);
}
d3.select("#"+ID).call(dragOrdinator);
function renderAxes(angleArray,refresh) {
if(renderAxes._ready_){
window.requestAnimationFrame(function(){
while(containerAxesElem.hasChildNodes()) {
containerAxesElem.removeChild(containerAxesElem.lastChild);
}
d3.select(containerAxes).selectAll("ordinatorAxes").data([[1.1,0,0],[0,-1.1,0],[0,0,1.1]]).enter()
.append("path")
.attr("d",function(d,i){
if (refresh) {
return pathStringGenerator([widthTranslate,heightTranslate,ordinatorMap2D(ordinatorRotate(d,angleArray))[0]*widthScale+widthTranslate,ordinatorMap2D(ordinatorRotate(d,angleArray))[1]*heightScale+heightTranslate],width,height);
} else {
return pathStringGenerator([widthTranslate,heightTranslate,widthTranslate,heightTranslate],width,height);
}
})
.attr("stroke-width",10)
.attr("stroke","Orange")
.attr("fill","Orange")
.style("opacity",0.75)
.style("marker-end","url(#markerTriangle)")
.attr("class","ordinatorAxes");
if(!refresh){
d3.selectAll(".ordinatorAxes")
.transition("fadein")
.attr("d",function(d,i){return pathStringGenerator([widthTranslate,heightTranslate,ordinatorMap2D(ordinatorRotate(d,angleArray))[0]*widthScale+widthTranslate,ordinatorMap2D(ordinatorRotate(d,angleArray))[1]*heightScale+heightTranslate],width,height);})
.delay(0)
.duration(1000);
}
if (showLabels ===1){
var i = 3;
while (i--) {
var length = labels[i].length;
var j = length;
//Label name placement is better than fixed as below-->drawText("#"+ID,returnObject(labelNames[i],i,(length+1),length),width,height);
_drawAxisText_(containerAxesElem,returnObject(labelNames[i],i,12,10),width,height);
while (j--) {
_drawAxisText_(containerAxesElem,returnObject(labels[i][j],i,j,length),width,height);
}
}
}
renderAxes._ready_ = true;
})
}
renderAxes._ready_ = false;
//[0]->x,[1]->y,[2]->fill,[3]->stroke,[4]->opacity,[5]->text,[6]->fontSize,[7]->transform
function returnObject (point,indexAxis,indexPoint,labelCount) {
var rotated = [0,0,0];
if (indexAxis === 0) {
rotated = ordinatorRotate([(indexPoint+1)*1/labelCount, -0.1,-0.1],angleArray);
} else if (indexAxis === 1) {
rotated = ordinatorRotate([-0.1,-(indexPoint+1)*1/labelCount,-0.1],angleArray);
} else {
rotated = ordinatorRotate([-0.1,0.1,(indexPoint+1)*1/labelCount],angleArray);
}
var mapped = ordinatorMap2D(rotated);
var x = mapped[0]*widthScale+widthTranslate;
var y = mapped[1]*heightScale+heightTranslate;
var transform = null;
if (indexAxis === 0) {
transform = "rotate(-45,"+x*width+","+y*height+")";
} else if (indexAxis === 2) {
transform = "rotate(45,"+x*width+","+y*height+")";
}
var glyphObject = [0,0,"0","0",0,"0",0,"0"];
//x
glyphObject[0] = x;
//y
glyphObject[1] = y;
//fill
glyphObject[2] = "Orange";
//stroke
glyphObject[3] = "Orange";
//opacity
glyphObject[4] = 0.4+(rotated[2]+1)/2*0.6;
//text
glyphObject[5] = point;
//fontSize
glyphObject[6] = fontSize/2;
//transform
glyphObject[7] = transform;
return glyphObject;
}
}
function renderGlyphs (args,angleArray) {
if(renderGlyphs._ready_){
window.requestAnimationFrame(function() {
var points = [];
var length = args.length;
var i = length;
while (i--) {
points[i] = ordinatorRotate(args[i],angleArray);
}
points.sort(function(a,b){return b[2]-a[2]});
while(containerElem.hasChildNodes()) {
containerElem.removeChild(containerElem.lastChild);
}
i = length;
while (i--) {
stored[glyphOrigin][points[i][3]](containerElem,returnObject(points[i]),width,height);
registerClick(i);
}
if (showTraceLine===1) {
drawTraceLine(args,angleArray,1);
}
renderPseudoPoly(angleArray);
renderGlyphs._ready_ = true;
function registerClick (index) {
document.getElementById("ordinatorPoint_"+ID+"_"+points[index][3]).addEventListener("click",function(){registerLinks(points[index])},false);
}
})
}
renderGlyphs._ready_ = false;
//[0]->radius,[1]->x,[2]->y,[3]->fill,[4]->stroke,[5]->opacity,[6]->text,[7]->fontSize,[8]->id
//[9]->mouseover,[10]->mouseout
function returnObject (point) {
var id = "ordinatorPoint_"+ID+"_"+point[3];
var mapped = ordinatorMap2D(point);
var x = mapped[0]*widthScale+widthTranslate;
var y = mapped[1]*heightScale+heightTranslate;
var color = storedColor[glyphOrigin][point[3]];
var text = wildtypeAndMutated[point[3]];
var glyphObject = [0,0,0,"0","0",0,"0",0,"0","0","0"];
//radius
glyphObject[0] = (0.005+(point[2]+2)/3*0.005)*glyphMultiplier;
//x
glyphObject[1] = x;
//y
glyphObject[2] = y;
//fill
glyphObject[3] = color;
//stroke
glyphObject[4] = color;
//opacity
glyphObject[5] = 0.4+(point[2]+1)/2*0.6;
//text
glyphObject[6] = text[1];
//fontSize
glyphObject[7] = fontSize;
//id
glyphObject[8] = id;
//mouseover
glyphObject[9] = "d3.select('#ordinatorPointsTextLabel').remove();d3.select('#"+id+"').attr('stroke-width',25).attr('stroke','Orange');d3.select('#"+ID+"').append('text').text('p."+pointNames[point[3]]+" ("+pointsRef[point[3]]+")"+"').attr('id','ordinatorPointsTextLabel').attr('x',"+(x>1/2?x-0.05:x+0.05)*width+").attr('y',"+(y>1/2?y-0.05:y+0.05)*height+").attr('font-size',"+fontSize+").attr('font-family','sans-serif').attr('fill','AntiqueWhite').attr('text-anchor','middle');";
//mouseout
glyphObject[10] = "d3.select('#"+id+"').attr('stroke-width',2).attr('stroke','"+color+"');d3.select('#ordinatorPointsTextLabel').remove();";
return glyphObject;
}
}
function renderOrdinatorGUI (ID) {
renderXrotate(ID);
renderYrotate(ID);
renderZrotate(ID);
renderSlider(ID);
renderAADials(ID,0);
renderAADials(ID,1);
renderAAmassDials (ID,0);
renderAAmassDials (ID,1);
renderShowModules(ID);
renderSizeControls(ID);
//***axes functions***
function renderXrotate (ID) {
d3.selectAll("."+ID+"_renderXrotate").remove();
d3.select("#"+ID).append("path").attr("class",function(){return ID+"_renderXrotate";}).attr("d","M100,307 A50,50 0 1,1 150,357").style("marker-end","url(#markerTriangle)").attr("stroke-opacity",0).attr("stroke-width",4).attr("fill-opacity",0).attr("stroke","Orange").transition("fadein").attr("stroke-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text("x").attr("class",function(){return ID+"_renderXrotate";}).attr("x",150).attr("y",315).attr("font-size","60px").attr("font-family","sans-serif").attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderXrotate";}).attr("x",220).attr("y",300).attr("width",400).attr("height",15).attr("rx",15).attr("ry",15).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var knobXpos = Math.max(220,Math.min(620,d3.event.x));
d3.select(this).attr("x",knobXpos);
var rotateX = -(knobXpos-220)/400*360;
currentRotateX = rotateX;
renderAxes([rotateX,currentRotateY,currentRotateZ],1);
renderGlyphs(args,[rotateX,currentRotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderXrotate";}).attr("id",function(){return ID+"_renderXrotate_knob";}).attr("x",220).attr("y",282).attr("width",50).attr("height",50).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").call(drag);
}
function renderYrotate (ID) {
d3.selectAll("."+ID+"_renderYrotate").remove();
d3.select("#"+ID).append("path").attr("class",function(){return ID+"_renderYrotate";}).attr("d",function(){var x = width-750; return "M"+x+",307 A50,50 0 1,1 "+(x+50)+",357"}).style("marker-end","url(#markerTriangle)").attr("stroke-opacity",0).attr("stroke-width",4).attr("fill-opacity",0).attr("stroke","Orange").transition("fadein").attr("stroke-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text("y").attr("class",function(){return ID+"_renderYrotate";}).attr("x",function(){return width-700;}).attr("y",315).attr("font-size","60px").attr("font-family","sans-serif").attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderYrotate";}).attr("x",function(){return width-620;}).attr("y",300).attr("width",400).attr("height",15).attr("rx",15).attr("ry",15).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var xMin = width-620;
var knobYpos = Math.max(xMin,Math.min(xMin+400,d3.event.x));
d3.select(this).attr("x",knobYpos);
var rotateY = -(knobYpos-xMin)/400*360;
currentRotateY = rotateY;
renderAxes([currentRotateX,rotateY,currentRotateZ],1);
renderGlyphs(args,[currentRotateX,rotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderYrotate";}).attr("id",function(){return ID+"_renderYrotate_knob";}).attr("x",function(){return width-620;}).attr("y",282).attr("width",50).attr("height",50).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").call(drag);
}
function renderZrotate (ID) {
d3.selectAll("."+ID+"_renderZrotate").remove();
d3.select("#"+ID).append("path").attr("class",function(){return ID+"_renderZrotate";}).attr("d","M100,607 A50,50 0 1,1 150,657").style("marker-end","url(#markerTriangle)").attr("stroke-opacity",0).attr("stroke-width",4).attr("fill-opacity",0).attr("stroke","Orange").transition("fadein").attr("stroke-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text("z").attr("class",function(){return ID+"_renderZrotate";}).attr("x",150).attr("y",615).attr("font-size","60px").attr("font-family","sans-serif").attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderZrotate";}).attr("x",150).attr("y",685).attr("width",15).attr("height",800).attr("rx",15).attr("ry",15).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var knobZpos = Math.max(667,Math.min(667+800,d3.event.y));
d3.select(this).attr("y",knobZpos);
var rotateZ = -(knobZpos-667)/800*360;
currentRotateZ = rotateZ;
renderAxes([currentRotateX,currentRotateY,rotateZ],1);
renderGlyphs(args,[currentRotateX,currentRotateY,rotateZ]);
}
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderZrotate";}).attr("id",function(){return ID+"_renderZrotate_knob";}).attr("x",132).attr("y",667).attr("width",50).attr("height",50).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").call(drag);
}
//***axes functions***
//***slider function***
function renderSlider (ID) {
var knobThickness = 0.015;
var fontSize = 50;
d3.selectAll("."+ID+"_regionSlider").remove();
sliderTrail(ID);
sliderLeftRect(ID);
sliderRightRect(ID);
silderHighlight(ID);
sliderIndicators(ID);
function sliderTrail (ID) {
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_regionSlider";}).attr("x",0.1*width).attr("y",0.85*height).attr("width",0.8*width).attr("height",0.004*height).attr("rx",15).attr("ry",15).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",0.85).delay(0).duration(1000);
}
function sliderLeftRect (ID) {
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var knobPos = Math.max((0.1-knobThickness/2)*width,Math.min(((0.1+(regions[1]-1)/(fasta_sorted.length-1)*0.8)-1.5*knobThickness)*width,d3.event.x));
d3.select(this).attr("x",knobPos);
regions[0] = ((knobPos/width-(0.1-knobThickness/2))*(fasta_sorted.length-1)/0.8)+1;
d3.select("#"+ID+"_sliderHighlight").attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8)+knobThickness/2)*width}).attr("width",function(){var w = ((regions[1]-regions[0])/(fasta_sorted.length-1)*0.8-knobThickness)*width; return w>=0?w:0;});
d3.select("#"+ID+"_sliderIndicator0").text(Math.round(regions[0])).attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8))*width-2*fontSize;});
args = filterOrdinator(points);
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("id",function() {return ID+"_sliderLeftRect";}).attr("class",function(){return ID+"_regionSlider";}).attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8)-knobThickness/2)*width}).attr("y",0.825*height).attr("width",knobThickness*width).attr("height",0.05*height).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",0.85).delay(0).duration(1000);
d3.select("#"+ID+"_sliderLeftRect").call(drag);
}
function sliderRightRect (ID) {
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var knobPos = Math.max(((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8)+knobThickness/2)*width,Math.min((0.9-knobThickness/2)*width,d3.event.x));
d3.select(this).attr("x",knobPos);
regions[1] = ((knobPos/width-(0.1-knobThickness/2))*(fasta_sorted.length-1)/0.8)+1;
d3.select("#"+ID+"_sliderHighlight").attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8)+knobThickness/2)*width}).attr("width",function(){var w = ((regions[1]-regions[0])/(fasta_sorted.length-1)*0.8-knobThickness)*width; return w>=0?w:0;});
d3.select("#"+ID+"_sliderIndicator1").text(Math.round(regions[1])).attr("x",function(){return ((0.1+(regions[1]-1)/(fasta_sorted.length-1)*0.8))*width+2*fontSize;});
args = filterOrdinator(points);
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("id",function() {return ID+"_sliderRightRect";}).attr("class",function(){return ID+"_regionSlider";}).attr("x",function(){return ((0.1+(regions[1]-1)/(fasta_sorted.length-1)*0.8)-knobThickness/2)*width;}).attr("y",0.825*height).attr("width",knobThickness*width).attr("height",0.05*height).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",0.85).delay(0).duration(1000);
d3.select("#"+ID+"_sliderRightRect").call(drag);
}
function silderHighlight (ID) {
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var widthHighlight = +d3.select(this).attr("width");
var min = (0.1+knobThickness/2)*width;
var max = (0.9-knobThickness/2)*width-widthHighlight;
var knobPos = Math.max(min,Math.min(max,d3.event.x));
var newRegions0 = (knobPos/width-0.1-knobThickness/2)/0.8*(fasta_sorted.length-1)+1;
var diff = newRegions0 - regions[0];
var newRegions1 = regions[1]+diff;
regions[0] = newRegions0;
regions[1] = newRegions1;
d3.select(this).attr("x",knobPos);
d3.select("#"+ID+"_sliderLeftRect").attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8)-knobThickness/2)*width});
d3.select("#"+ID+"_sliderRightRect").attr("x",function(){return ((0.1+(regions[1]-1)/(fasta_sorted.length-1)*0.8)-knobThickness/2)*width;});
d3.select("#"+ID+"_sliderIndicator0").text(Math.round(regions[0])).attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8))*width-2*fontSize;});
d3.select("#"+ID+"_sliderIndicator1").text(Math.round(regions[1])).attr("x",function(){return ((0.1+(regions[1]-1)/(fasta_sorted.length-1)*0.8))*width+2*fontSize;});
args = filterOrdinator(points);
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("id",function() {return ID+"_sliderHighlight";}).attr("class",function(){return ID+"_regionSlider";}).attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8)+knobThickness/2)*width}).attr("y",0.825*height).attr("width",function(){return ((regions[1]-regions[0])/(fasta_sorted.length-1)*0.8-knobThickness)*width;}).attr("height",0.05*height).attr("fill-opacity",0).attr("fill","DarkSalmon").transition("fadein").attr("fill-opacity",0.50).delay(0).duration(1000);
d3.select("#"+ID+"_sliderHighlight").call(drag);
}
function sliderIndicators (ID) {
d3.select("#"+ID).append("text").text(Math.round(regions[0])).attr("id",function() {return ID+"_sliderIndicator0";}).attr("class",function(){return ID+"_regionSlider";}).attr("x",function(){return ((0.1+(regions[0]-1)/(fasta_sorted.length-1)*0.8))*width-2*fontSize;}).attr("y",0.820*height).attr("font-size",fontSize).attr("font-family","sans-serif").attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text(Math.round(regions[1])).attr("id",function() {return ID+"_sliderIndicator1";}).attr("class",function(){return ID+"_regionSlider";}).attr("x",function(){return ((0.1+(regions[1]-1)/(fasta_sorted.length-1)*0.8))*width+2*fontSize;}).attr("y",0.820*height).attr("font-size",fontSize).attr("font-family","sans-serif").attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
}
}
//***slider function***
//***Aminoacid(AA) dial --- if WtOrMt argument is 0 than the wildtype aa dial is placed, else if it is 1 than the mutated ones are placed***
function renderAADials(ID,WtOrMt) {
d3.selectAll("."+ID+"_"+WtOrMt+"_AADials").remove();
var dims = Math.min(width,height);
d3.select("#"+ID).append("text").text(function(){return WtOrMt===0?"from":"to"}).attr("x",function(){return (0.1+WtOrMt*0.47-0.050)*width}).attr("y",function(d,i){return 0.9*height+0.0125*dims+dims/120;}).attr("fill","AntiqueWhite").attr("fill-opacity",0.9).attr("font-size",dims/40).attr("font-family","sans-serif").attr("font-weight",900).style("cursor","default").attr("text-anchor","middle").attr("class",ID+"_"+WtOrMt+"_AADials");
d3.select("#"+ID).selectAll("wildtypeDials")
.data(filterAA[WtOrMt])
.enter()
.append("rect")
.attr("x",function(d,i){return (0.1+WtOrMt*0.47+0.033*(i%10))*width;})
.attr("y",function(d,i){return (0.875+0.033*Math.floor(i/10))*height;})
.attr("width",0.025*dims)
.attr("height",0.025*dims)
.attr("rx",5)
.attr("ry",5)
.attr("fill","Orange")
.attr("stroke","Orange")
.attr("fill-opacity",0)
.attr("stroke-opacity",0)
.attr("stroke-width",10)
.attr("class",ID+"_"+WtOrMt+"_AADials "+ID+"_"+WtOrMt+"_AADialsRects")
.attr("id",function(d,i){return ID+"_"+WtOrMt+"_AADials"+"_"+i;})
.on("mouseover",function(d,i){d3.select(this).attr("stroke-width",20);})
.on("mouseout",function(d,i){d3.select(this).attr("stroke-width",10);})
.on("click",function(d,i){d3.select(this).attr("stroke-width",10).attr("fill",function(){return filterAA[WtOrMt][i][1]==="on"?"DimGray":"Orange";});filterAA[WtOrMt][i][1]=filterAA[WtOrMt][i][1]==="on"?"off":"on";args = filterOrdinator(points);renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);})
.transition("fadein")
.attr("fill-opacity",0.85)
.attr("stroke-opacity",0.9)
.delay(function(d,i){return i*50;})
.duration(function(d,i){return 150;});
d3.select("#"+ID).selectAll("wildtypeDialsTexts")
.data(filterAA[WtOrMt])
.enter()
.append("text")
.text(function(d,i){return d[0];})
.attr("x",function(d,i){return (0.1+WtOrMt*0.47+0.033*(i%10))*width+0.0125*dims;})
.attr("y",function(d,i){return (0.875+0.033*Math.floor(i/10))*height+0.0125*dims+dims/120;})
.attr("fill","AntiqueWhite")
.attr("fill-opacity",0)
.attr("font-size",dims/40)
.attr("font-family","sans-serif")
.attr("font-weight",800)
.style("cursor","default")
.attr("text-anchor","middle")
.attr("class",ID+"_"+WtOrMt+"_AADials")
.on("mouseover",function(d,i){d3.select("#"+ID+"_"+WtOrMt+"_AADials"+"_"+i).attr("stroke-width",20);})
.on("mouseout",function(d,i){d3.select("#"+ID+"_"+WtOrMt+"_AADials"+"_"+i).attr("stroke-width",10);})
.on("click",function(d,i){d3.select("#"+ID+"_"+WtOrMt+"_AADials"+"_"+i).attr("stroke-width",10).attr("fill",function(){return filterAA[WtOrMt][i][1]==="on"?"DimGray":"Orange";});filterAA[WtOrMt][i][1]=filterAA[WtOrMt][i][1]==="on"?"off":"on";args = filterOrdinator(points);renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);})
.transition("fadein")
.attr("fill-opacity",0.9)
.delay(function(d,i){return i*50;})
.duration(function(d,i){return 150;});
}
//***Aminoacid(AA) dial --- if WtOrMt argument is 0 than the wildtype aa dial is placed, else if it is 1 than the mutated ones are placed***
//**AAMassDials--selects all or none. Places 4 buttons based on WtOrMt argument, 2 for each side.
function renderAAmassDials (ID,WtOrMt) {
d3.selectAll("."+ID+"_"+WtOrMt+"_AAmassDials").remove();
var dims = Math.min(width,height);
d3.select("#"+ID).selectAll("massDials")
.data(d3.range(2))
.enter()
.append("rect")
.attr("x",function(d,i){if (WtOrMt===0){return (0.1+WtOrMt*0.47+0.066*((i+20)%10))*width;}else{return (0.1+WtOrMt*0.47+0.066*((i+21)%10))*width;}})
.attr("y",function(d,i){return (0.875+0.033*Math.floor((i+20)/10))*height;})
.attr("width",0.05*dims)
.attr("height",0.025*dims)
.attr("rx",5)
.attr("ry",5)
.attr("fill","Orange")
.attr("stroke","Orange")
.attr("fill-opacity",0)
.attr("stroke-opacity",0)
.attr("stroke-width",10)
.attr("class",ID+"_"+WtOrMt+"_AAmassDials")
.attr("id",function(d,i){return ID+"_"+WtOrMt+"_AAmassDials_"+i;})
.on("mouseover",function(d,i){d3.select(this).attr("stroke-width",20);})
.on("mouseout",function(d,i){d3.select(this).attr("stroke-width",10);})
.on("click",function(d,i){if (i===0){filterAA[WtOrMt].forEach(function(d,i){d[1]="on"});d3.selectAll("."+ID+"_"+WtOrMt+"_AADialsRects").attr("fill","Orange");}else{filterAA[WtOrMt].forEach(function(d,i){d[1]="off"});d3.selectAll("."+ID+"_"+WtOrMt+"_AADialsRects").attr("fill","DimGray");};args = filterOrdinator(points);renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);})
.transition("fadein")
.attr("fill-opacity",0.85)
.attr("stroke-opacity",0.9)
.delay(function(d,i){return (i+20)*50;})
.duration(function(d,i){return 150;});
d3.select("#"+ID).selectAll("massDialsTexts")
.data(d3.range(2))
.enter()
.append("text")
.text(function(d,i){if(i===0){return "All";}else{return "None";}})
.attr("x",function(d,i){if(WtOrMt===0){return (0.1+WtOrMt*0.47+0.066*((i+20)%10))*width+0.0250*dims;}else{return (0.1+WtOrMt*0.47+0.066*((i+21)%10))*width+0.0250*dims;}})
.attr("y",function(d,i){return (0.875+0.033*Math.floor((i+20)/10))*height+0.0125*dims+dims/180;})
.attr("fill","AntiqueWhite")
.attr("fill-opacity",0)
.attr("font-size",dims/60)
.attr("font-family","sans-serif")
.attr("font-weight",500)
.style("cursor","default")
.attr("text-anchor","middle")
.attr("class",ID+"_"+WtOrMt+"_AAmassDials")
.on("mouseover",function(d,i){d3.select("#"+ID+"_"+WtOrMt+"_AAmassDials"+"_"+i).attr("stroke-width",20);})
.on("mouseout",function(d,i){d3.select("#"+ID+"_"+WtOrMt+"_AAmassDials"+"_"+i).attr("stroke-width",10);})
.on("click",function(d,i){if (i===0){filterAA[WtOrMt].forEach(function(d,i){d[1]="on"});d3.selectAll("."+ID+"_"+WtOrMt+"_AADialsRects").attr("fill","Orange");}else{filterAA[WtOrMt].forEach(function(d,i){d[1]="off"});d3.selectAll("."+ID+"_"+WtOrMt+"_AADialsRects").attr("fill","DimGray");};args = filterOrdinator(points);renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);})
.transition("fadein")
.attr("fill-opacity",0.9)
.delay(function(d,i){return i*50;})
.duration(function(d,i){return 150;});
}
//**AAMassDials--selects all or none. Places 4 buttons based on WtOrMt argument, 2 for each side.
//Show Wildtype/Mutated and Show NA
function renderShowModules(ID) {
d3.selectAll("."+ID+"_ShowModulesTexts").remove();
d3.select("#"+ID).append("text").text(function(){return glyphOrigin===1?"Show Wildtype":"Show Mutated"}).attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",function(){return width-350;}).attr("y",400).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0)
.on("mouseover",function(){d3.select(this).attr("fill","Orange");})
.on("mouseout",function(){d3.select(this).attr("fill","AntiqueWhite");})
.on("click",function(){if(glyphOrigin===1){glyphOrigin=0}else{glyphOrigin=1};d3.select(this).text(function(){return glyphOrigin===1?"Show Wildtype":"Show Mutated"});renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);})
.transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text(function(){return filterNA===1?"Show 'NA' values":"Hide 'NA' values"}).attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",275).attr("y",400).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0)
.on("mouseover",function(){d3.select(this).attr("fill","Orange");})
.on("mouseout",function(){d3.select(this).attr("fill","AntiqueWhite");})
.on("click",function(){if(filterNA===1){filterNA=0}else{filterNA=1};d3.select(this).text(function(){return filterNA===1?"Show 'NA' values":"Hide 'NA' values"});args = filterOrdinator(points);renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);})
.transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text(function(){return filterSynonymous===1?"Show Synonymous":"Hide Synonymous"}).attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",width/2).attr("y",400).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0)
.on("mouseover",function(){d3.select(this).attr("fill","Orange");})
.on("mouseout",function(){d3.select(this).attr("fill","AntiqueWhite");})
.on("click",function(){if(filterSynonymous===1){filterSynonymous=0}else{filterSynonymous=1};d3.select(this).text(function(){return filterSynonymous===1?"Show Synonymous":"Hide Synonymous"});args = filterOrdinator(points);renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);})
.transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text(function(){return showLabels===1?"Hide Labels":"Show Labels"}).attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",235).attr("y",500).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0)
.on("mouseover",function(){d3.select(this).attr("fill","Orange");})
.on("mouseout",function(){d3.select(this).attr("fill","AntiqueWhite");})
.on("click",function(){if(showLabels===1){showLabels=0}else{showLabels=1};d3.select(this).text(function(){return showLabels===1?"Hide Labels":"Show Labels"});renderAxes([currentRotateX,currentRotateY,currentRotateZ],1);})
.transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text("Show Functions").attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",function(){return width-330;}).attr("y",500).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0)
.on("mouseover",function(){d3.select(this).attr("fill","Orange");})
.on("mouseout",function(){d3.select(this).attr("fill","AntiqueWhite");})
.on("click",function(){var IDfunc= ID+"_func"; d3.select("#"+IDfunc).remove();renderWindow("svg",IDfunc,{"x":+d3.select("#"+ID).attr("x")-1500,"y":+d3.select("#"+ID).attr("y"),"width":1500,"height":2500,"rx":100,"ry":100,"iconPadding":100,"iconSize":100,"minWidth":1500,"minHeight":2500},displayFunctionTable);})
.transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text(function(){for (var i=0,syn=0;i<args.length;i++){if(synOrNonsyn(ids["mut"][args[i][3]])==="Synonymous"){syn++}} return "Syn: "+syn;}).attr("id",function(){return ID+"_synonymousIndicator"}).attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",function(){return width/2-200;}).attr("y",500).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0)
.on("mouseover",function(){d3.select(this).attr("fill","Orange");})
.on("mouseout",function(){d3.select(this).attr("fill","AntiqueWhite");})
.transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("text").text(function(){for (var i=0,nonSyn=0;i<args.length;i++){if(synOrNonsyn(ids["mut"][args[i][3]])==="Nonsynonymous"){nonSyn++}} return "Nonsyn: "+nonSyn;}).attr("id",function(){return ID+"_nonsynonymousIndicator"}).attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",function(){return width/2+100;}).attr("y",500).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0)
.on("mouseover",function(){d3.select(this).attr("fill","Orange");})
.on("mouseout",function(){d3.select(this).attr("fill","AntiqueWhite");})
.transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_ShowModulesTexts"}).attr("id",ID+"_traceRect").attr("x",width/2-75).attr("y",0.935*height).attr("width",150).attr("height",60).attr("rx",15).attr("ry",15).attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.85).attr("stroke-opacity",9).attr("stroke-width",10);
d3.select("#"+ID).append("text").text("trace").attr("class",function(){return ID+"_ShowModulesTexts"}).attr("x",width/2).attr("y",0.935*height+40).attr("font-size",40).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0.85).style("cursor","default")
.on("mouseover",function(){d3.select("#"+ID+"_traceRect").transition().attr("fill","DarkSalmon").delay(0).duration(500);})
.on("mouseout",function(){d3.select("#"+ID+"_traceRect").transition().attr("fill","Orange").delay(0).duration(500);})
.on("click",function(){if(showTraceLine===1){showTraceLine=0;d3.select("#"+ID+"_traceLine").remove();}else{showTraceLine=1;drawTraceLine(args,[currentRotateX,currentRotateY,currentRotateZ],0);}});
}
//Show Wildtype/Mutated and Show NA
//Zoom Level and Glyph size and the text size
function renderSizeControls (ID) {
renderZoom(ID);
renderTextSize(ID);
renderGlyphSize(ID);
function renderZoom (ID) {
d3.selectAll("."+ID+"_renderZoom").remove();
d3.select("#"+ID).append("text").text("zoom").attr("class",function(){return ID+"_renderZoom";}).attr("x",width-150).attr("y",615).attr("font-size","50px").attr("font-family","sans-serif").attr("font-weight",700).attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderZoom";}).attr("x",width-150).attr("y",685).attr("width",15).attr("height",300).attr("rx",15).attr("ry",15).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var knobPos = Math.max(667,Math.min(667+300,d3.event.y));
d3.select(this).attr("y",knobPos);
var zoomLevel = (knobPos-667)/300*2.5+0.5;
widthScale = zoomLevel*1/3;
heightScale = zoomLevel*1/6;
renderAxes([currentRotateX,currentRotateY,currentRotateZ],1);
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderZoom";}).attr("id",function(){return ID+"_renderZoom_knob";}).attr("x",width-168).attr("y",727).attr("width",50).attr("height",50).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").call(drag);
}
function renderTextSize (ID) {
d3.selectAll("."+ID+"_renderTextSize").remove();
d3.select("#"+ID).append("text").text("text-size").attr("class",function(){return ID+"_renderTextSize";}).attr("x",width-150).attr("y",1050).attr("font-size","50px").attr("font-family","sans-serif").attr("font-weight",700).attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderTextSize";}).attr("x",width-150).attr("y",1120).attr("width",15).attr("height",300).attr("rx",15).attr("ry",15).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var knobPos = Math.max(1102,Math.min(1102+300,d3.event.y));
d3.select(this).attr("y",knobPos);
var zoomLevel = (knobPos-1102)/300*2.75+0.25;
fontSize = wTimesH/70000*zoomLevel;
renderAxes([currentRotateX,currentRotateY,currentRotateZ],1);
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderTextSize";}).attr("id",function(){return ID+"_renderTextSize_knob";}).attr("x",width-168).attr("y",1184).attr("width",50).attr("height",50).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").call(drag);
}
function renderGlyphSize (ID) {
d3.selectAll("."+ID+"_renderGlyphSize").remove();
d3.select("#"+ID).append("text").text("glyph-size").attr("class",function(){return ID+"_renderGlyphSize";}).attr("x",width-150).attr("y",1515).attr("font-size","50px").attr("font-family","sans-serif").attr("font-weight",700).attr("text-anchor","middle").attr("fill","Orange").attr("fill-opacity",0).transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderGlyphSize";}).attr("x",width-150).attr("y",1585).attr("width",15).attr("height",300).attr("rx",15).attr("ry",15).attr("fill-opacity",0).attr("fill","Orange").transition("fadein").attr("fill-opacity",1).delay(0).duration(1000);
var drag = d3.behavior.drag().origin(function(){var x = +d3.select(this).attr("x"); var y = +d3.select(this).attr("y"); return {"x":x,"y":y};}).on("drag", dragFunc).on("dragstart",function (){d3.event.sourceEvent.stopPropagation();});
function dragFunc() {
var knobPos = Math.max(1567,Math.min(1567+300,d3.event.y));
d3.select(this).attr("y",knobPos);
glyphMultiplier = (knobPos-1567)/300*2.75+0.25;
renderAxes([currentRotateX,currentRotateY,currentRotateZ],1);
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
d3.select("#"+ID).append("rect").attr("class",function(){return ID+"_renderTextSize";}).attr("id",function(){return ID+"_renderGlyphSize_knob";}).attr("x",width-168).attr("y",1649).attr("width",50).attr("height",50).attr("rx",15).attr("ry",15).attr("fill-opacity",1).attr("fill","Orange").call(drag);
}
}
//Zoom Level and Glyph size and the text size
}
function filterOrdinator (input) {
input = input.filter(function(d,i){return pointLocations[d[3]]>=Math.round(regions[0])&&pointLocations[d[3]]<=Math.round(regions[1])});
input = input.filter(function(d,i){if(filterSynonymous===1){return wildtypeAndMutated[d[3]][0]!==wildtypeAndMutated[d[3]][1]}else{return true;}});
input = input.filter(function(d,i){return filterAA[0].some(function(u,w){return u[0]===wildtypeAndMutated[d[3]][0]&&u[1]==="on"})&&filterAA[1].some(function(u,w){return u[0]===wildtypeAndMutated[d[3]][1]&&u[1]==="on"})});
input = input.filter(function(d,i){if(filterNA===1){return d.map(function(u,w){return u*[1,-1,1,1][w]}).every(function(u,w){return u>=0})}else{return true;}})
//update syn/Nonsyn indicators
d3.select("#"+ID+"_synonymousIndicator").text(function(){for (var i=0,syn=0;i<input.length;i++){if(synOrNonsyn(ids["mut"][input[i][3]])==="Synonymous"){syn++}} return "Syn: "+syn;});
d3.select("#"+ID+"_nonsynonymousIndicator").text(function(){for (var i=0,nonSyn=0;i<input.length;i++){if(synOrNonsyn(ids["mut"][input[i][3]])==="Nonsynonymous"){nonSyn++}} return "Nonsyn: "+nonSyn;});
//update syn/Nonsyn indicators
return input;
}
function drawTraceLine (args,angleArray,refresh) {
d3.select("#"+ID+"_traceLine").remove();
var points = [];
var length = args.length;
for (var i=0;i<length;i++) {
points[i] = ordinatorRotate(args[i],angleArray);
}
points.sort(function(a,b){return pointLocations[a[3]]-pointLocations[b[3]]});
var lineArray = [];
for (var i=0;i<length;i++) {
var mapped = ordinatorMap2D(points[i]);
lineArray[i]=[];
lineArray[i][0] = (mapped[0]*widthScale+widthTranslate)*width;
lineArray[i][1] = (mapped[1]*heightScale+heightTranslate)*height;
}
var line = d3.svg.line().interpolate("cardinal");
d3.select("#"+ID).append("path")
.attr("d",function(){return refresh===1?line(lineArray):line([lineArray[0]]);})
.attr("fill","none")
.attr("stroke-width",5)
.attr("stroke","DarkSalmon")
.attr("stroke-opacity",0.6)
.attr("id",ID+"_traceLine")
.style("marker-end","url(#markerTriangle)");
if (refresh !==1){
d3.select("#"+ID+"_traceLine").transition("extendTrace").attrTween("d",function(){return trace(this,lineArray,Math.max(100,Math.min(length,300)),0)}).delay(0).duration(10000);
}
}
function registerLinks (point) {
d3.selectAll(".ordinator_"+ID+"_registerLinkBoxes").remove();
clearInterval(intervalButtons);
clearInterval(intervalHighlight);
d3.select("#"+ID).append("rect").attr("id","ordinator_"+ID+"_registerLinkRect1").attr("class","ordinator_"+ID+"_registerLinkBoxes").attr("width",240).attr("height",80).attr("rx",15).attr("ry",15).attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.85);
d3.select("#"+ID).append("rect").attr("id","ordinator_"+ID+"_registerLinkRect2").attr("class","ordinator_"+ID+"_registerLinkBoxes").attr("width",240).attr("height",80).attr("rx",15).attr("ry",15).attr("fill","Orange").attr("stroke","Orange").attr("fill-opacity",0.85);
d3.select("#"+ID).append("text").text(function(){if (linkingStatus===0){return "link"}else{return "end"}}).attr("id","ordinator_"+ID+"_registerLinkText1").attr("class","ordinator_"+ID+"_registerLinkBoxes").attr("dx",120).attr("dy",50).attr("font-size",60).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0.85).style("cursor","default")
.on("mouseover",function(){d3.select("#ordinator_"+ID+"_registerLinkRect1").attr("fill","DarkSalmon")})
.on("mouseout",function(){d3.select("#ordinator_"+ID+"_registerLinkRect1").attr("fill","Orange")})
.on("click",function(){
if(d3.select(this).text()==="link") {
linkingStatus=1;
links[linkCounter] =[];
links[linkCounter].push(point[3]);
linksColors.push("rgb(255,215,0)");
linksAlphas.push(0.5);
clearInterval(intervalButtons);
intervalHighlight = setInterval(function(){animateDashArray("#ordinatorPoint_"+ID+"_"+point[3]);},1000);
d3.selectAll(".ordinator_"+ID+"_registerLinkBoxes").remove();
} else {
linkingStatus=0;
if (links[linkCounter][links[linkCounter].length-1] !== point[3]){
links[linkCounter].push(point[3]);
}
linkCounter++;
clearInterval(intervalButtons);
clearInterval(intervalHighlight);
d3.selectAll(".ordinator_"+ID+"_registerLinkBoxes").remove();
//links[linkCounter].forEach(function(d,i){d3.select("#ordinatorPoint_"+ID+"_"+d).attr("stroke-width",2);});
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
});
d3.select("#"+ID).append("text").text("cancel").attr("id","ordinator_"+ID+"_registerLinkText2").attr("class","ordinator_"+ID+"_registerLinkBoxes").attr("dx",120).attr("dy",50).attr("font-size",60).attr("font-family","sans-serif").attr("font-weight",600).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0.85).style("cursor","default")
.on("mouseover",function(){d3.select("#ordinator_"+ID+"_registerLinkRect2").attr("fill","DarkSalmon")})
.on("mouseout",function(){d3.select("#ordinator_"+ID+"_registerLinkRect2").attr("fill","Orange")})
.on("click",function(){
if(linkingStatus===1) {
linkingStatus=0;
links.pop();
linksColors.pop();
linksAlphas.pop();
clearInterval(intervalButtons);
clearInterval(intervalHighlight);
d3.selectAll(".ordinator_"+ID+"_registerLinkBoxes").remove();
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
} else {
clearInterval(intervalButtons);
clearInterval(intervalHighlight);
d3.selectAll(".ordinator_"+ID+"_registerLinkBoxes").remove();
}
});
intervalButtons = setInterval(function(){updatePos("#ordinator_"+ID+"_registerLinkRect1","#ordinator_"+ID+"_registerLinkRect2");updatePos("#ordinator_"+ID+"_registerLinkText1","#ordinator_"+ID+"_registerLinkText2");},100);
if(linkingStatus===1) {
if (links[linkCounter][links[linkCounter].length-1] !== point[3]){
links[linkCounter].push(point[3]);
}
intervalHighlight = setInterval(function(){links[linkCounter].forEach(function(d,i){animateDashArray("#ordinatorPoint_"+ID+"_"+d);})},1000);
}
function animateDashArray(element) {
if(d3.select("#"+ID).node()) {
d3.select(element).attr("stroke-width",25).attr("stroke","Orange").attr("stroke-dasharray","20 5");
d3.select(element).transition("highlight").ease("linear").attrTween("stroke-dashoffset",function(){var interpolator = d3.interpolate(0,-25);return function(t){return interpolator(t);}}).delay(0).duration(1000);
} else {
clearInterval(intervalHighlight);
}
}
function updatePos (element1,element2) {
if(d3.select("#"+ID).node()) {
var original = points[point[3]];
original = ordinatorRotate(original,[currentRotateX,currentRotateY,currentRotateZ]);
var mapped = ordinatorMap2D(original);
var x = mapped[0]*widthScale+widthTranslate;
var y = mapped[1]*heightScale+heightTranslate;
x = x>1/2?x-0.1:x+0.1;
y = y>1/2?y-0.1:y+0.1;
d3.select(element1).attr("x",(x-0.1)*width).attr("y",y*height);
d3.select(element2).attr("x",(x+0.1)*width).attr("y",y*height);
} else {
clearInterval(intervalButtons);
}
}
}
//below function is called by renderGlyphs
function renderPseudoPoly (angleArray) {
var line = d3.svg.line();
var length = links.length;
d3.selectAll("."+ID+"_pseudoPolys").remove();
d3.selectAll("."+"ordinator_"+ID+"_colorPicker").remove();
var pointArrays = [];//[[[points],indexAbsolute,indexRender],..]
var avgZ = [];//[Z,..] default index ordered
for (var i = 0;i<length;i++) {
var currentPointArray = indexArrayToPointArray(links[i],angleArray);
var currentAbsoluteIndex = i;
var currentRenderingIndex = avgZ[i];
pointArrays.push([currentPointArray,currentAbsoluteIndex,currentRenderingIndex]);
}
pointArrays.sort(function(a,b){return a[2]-b[2]});
for (var i = 0;i<length;i++) {
renderSegment(pointArrays[i][0],pointArrays[i][1]);
}
function indexArrayToPointArray(array,angleArray) {
var result = [];
var length = array.length;
var totalZ = 0;
for (var i=0;i<length;i++) {
var original = ordinatorRotate(points[array[i]],angleArray);
var mapped = ordinatorMap2D(original);
var x = (mapped[0]*widthScale+widthTranslate)*width;
var y = (mapped[1]*heightScale+heightTranslate)*height;
totalZ += original[2];
result.push([x,y]);
}
totalZ = totalZ/length;
avgZ.push(totalZ);
return result;
}
function renderSegment (lineArray,index) {
//d3.select("#"+ID+"_pseudoPoly_"+index).remove();
//var line = d3.svg.line();
d3.select("#"+ID).append("path")
.attr("d",function(){return line(lineArray)+" Z";})
.attr("fill",linksColors[index])
.attr("fill-opacity",linksAlphas[index])
.attr("stroke-width",15)
.attr("stroke",linksColors[index])
.attr("stroke-opacity",0.6)
.attr("stroke-linejoin","round")
.attr("stroke-linecap","round")
.attr("id",ID+"_pseudoPoly_"+index)
.attr("class",ID+"_pseudoPolys")
.on("click",function(){
renderColorPicker(lineArray,index);
});
}
function renderColorPicker (lineArray,index) {
d3.selectAll("."+"ordinator_"+ID+"_colorPicker").remove();
var midPoint = [];
var length = lineArray.length;
var xTotal =0;
var yTotal =0;
for (var i =0;i<length;i++) {
xTotal += lineArray[i][0];
yTotal += lineArray[i][1];
}
midPoint.push(xTotal/length);
midPoint.push(yTotal/length);
var rgb = [0,0,0];
var alpha = 0.5;
d3.select("#"+ID).append("rect").attr("id","ordinator_"+ID+"_colorPickerRemove").attr("class","ordinator_"+ID+"_colorPicker").attr("x",function(d,i){return midPoint[0];}).attr("y",function(d,i){return midPoint[1]-80;}).attr("width",240).attr("height",40).attr("fill","Black").attr("stroke","Black").attr("stroke-width",2).attr("fill-opacity",0.85);
d3.select("#"+ID).append("text").text("REMOVE").attr("class","ordinator_"+ID+"_colorPicker").attr("x",function(d,i){return midPoint[0]+120;}).attr("y",function(d,i){return midPoint[1]-50;}).attr("font-size",30).attr("font-family","sans-serif").attr("font-weight",800).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0.85).style("cursor","default")
.on("mouseover",function(){d3.select("#ordinator_"+ID+"_colorPickerRemove").attr("stroke-width",5).attr("stroke","Orange");})
.on("mouseout",function(){d3.select("#ordinator_"+ID+"_colorPickerRemove").attr("stroke-width",2).attr("stroke","Black");})
.on("click",function(){var linksNew =[];var linksColorsNew = []; var linksAlphasNew = []; for(var i=0;i<links.length;i++){if(i !== index){linksNew.push(links[i]);linksColorsNew.push(linksColors[i]);linksAlphasNew.push(linksAlphas[i])}}; links = linksNew; linksColors = linksColorsNew; linksAlphas = linksAlphasNew; d3.select("#"+ID+"_pseudoPoly_"+index).remove();d3.selectAll("."+"ordinator_"+ID+"_colorPicker").remove();linkCounter--;});
d3.select("#"+ID).append("rect").attr("id","ordinator_"+ID+"_colorPickerApply").attr("class","ordinator_"+ID+"_colorPicker").attr("x",function(d,i){return midPoint[0];}).attr("y",function(d,i){return midPoint[1]-40;}).attr("width",240).attr("height",40).attr("fill",function(){return "rgb("+rgb+")";}).attr("stroke","Black").attr("stroke-width",2).attr("fill-opacity",0.85);
d3.select("#"+ID).append("text").text("APPLY").attr("class","ordinator_"+ID+"_colorPicker").attr("x",function(d,i){return midPoint[0]+120;}).attr("y",function(d,i){return midPoint[1]-10;}).attr("font-size",30).attr("font-family","sans-serif").attr("font-weight",800).attr("text-anchor","middle").attr("fill","AntiqueWhite").attr("fill-opacity",0.85).style("cursor","default")
.on("mouseover",function(){d3.select("#ordinator_"+ID+"_colorPickerApply").attr("stroke-width",5).attr("stroke","Orange");})
.on("mouseout",function(){d3.select("#ordinator_"+ID+"_colorPickerApply").attr("stroke-width",2).attr("stroke","Black");})
.on("click",function(){linksColors[index]="rgb("+rgb+")";linksAlphas[index]= alpha; d3.select("#"+ID+"_pseudoPoly_"+index).transition("changePseudoPolyColor").attr("fill",linksColors[index]).attr("stroke",linksColors[index]).attr("fill-opacity",linksAlphas[index]).delay(0).duration(500);d3.selectAll("."+"ordinator_"+ID+"_colorPicker").remove();});
d3.select("#"+ID).selectAll("ordinatorColorPicker")
.data(d3.range(24))
.enter()
.append("rect")
.attr("x",function(d,i){return midPoint[0]+(i%6)*40})
.attr("y",function(d,i){return midPoint[1]+Math.floor(i/6)*40})
.attr("width",0)
.attr("height",40)
.attr("fill",function(d,i){if(i<6){return "rgb("+(40+(i%6)*40)+",0,0)"}else if(i<12){return "rgb(0,"+(40+(i%6)*40)+",0)"}else if(i<18){return "rgb(0,0,"+(40+(i%6)*40)+")"}else{return "Orange"}})
.attr("fill-opacity",function(d,i){if(i<18){return 0.8}else{return 0.2+(i%6)*0.15}})
.attr("stroke","Black")
.attr("stroke-width",2)
.attr("class","ordinator_"+ID+"_colorPicker")
.on("mouseover",function(){d3.select(this).attr("stroke-width",15).attr("stroke","Orange");})
.on("mouseout",function(){d3.select(this).attr("stroke-width",2).attr("stroke","Black");})
.on("click",function(d,i){if(i<6){rgb[0]=(40+(i%6)*40);d3.select("#ordinator_"+ID+"_colorPickerApply").transition().attr("fill",function(){return "rgb("+rgb+")";}).delay(0).duration(500);}else if(i<12){rgb[1]=(40+(i%6)*40);d3.select("#ordinator_"+ID+"_colorPickerApply").transition().attr("fill",function(){return "rgb("+rgb+")";}).delay(0).duration(500);}else if(i<18){rgb[2]=(40+(i%6)*40);d3.select("#ordinator_"+ID+"_colorPickerApply").transition().attr("fill",function(){return "rgb("+rgb+")";}).delay(0).duration(500);}else{d3.select("#ordinator_"+ID+"_colorPickerApply").transition().attr("fill-opacity",function(){return 0.2+(i%6)*0.15;}).delay(0).duration(500); alpha = 0.2+(i%6)*0.15;}})
.transition("pop")
.ease("elastic")
.attr("width",40)
.delay(function(d,i){return i*20})
.duration(250);
}
}
//Render Function Table
var defaultFunctions = ["polyphen2","sift","position"];
function displayFunctionTable (ID) {
//d3.selectAll("."+ID+"_rects").remove();
//d3.selectAll("."+ID+"_texts").remove();
d3.select("#"+ID+"enlarge").remove();
d3.select("#"+ID+"magnify").remove();
d3.select("#"+ID+"minify").remove();
var options = ["X","Y","Z",
"polyphen2",
"sift",
"position",
"chemicalType",
"altType",
"AAtype",
"altAAtype",
"hydro",
"altHydro",
"avgPrediction",
"aaChange",
"domain",
"customdb",
"MAF",
"conservation",
"aggregateFeature",
"hist1",
"hist2",
"hist3"];
var svgWidth = +d3.select("#"+ID).attr("width");
var svgHeight = +d3.select("#"+ID).attr("height");
var rectWidth = 0.9*svgWidth/4;
var rectHeight = 0.8*svgHeight/(options.length-2);
var horPadding = 0.05*svgWidth;
var verPadding = 0.1*svgHeight;
//var defaultFunctions = ["polyphen2","sift","position"];
d3.select("#"+ID).selectAll("Ordinator_funcRects")
.data(d3.range((options.length-2)*4))
.enter()
.append("rect")
.attr("x",function(d,i){return horPadding+(i%4)*rectWidth;})
.attr("y",function(d,i){return verPadding+Math.floor(i/4)*rectHeight;})
.attr("width",0)
.attr("height",0)
.attr("fill",function(d,i){if(i<4 || i%4 === 0){return "Orange"}else if (options[Math.floor(i/4)+2] === defaultFunctions[(i%4)-1]){return "Green";}else{return "DimGray"}})
.attr("fill-opacity",function(d,i){return Math.sign(i)*0.5;})
.attr("stroke",function(d,i){if(i<4 || i%4 === 0){return "Orange"}else{return "DimGray"}})
.attr("stroke-opacity",function(d,i){return Math.sign(i)*0.75;})
.attr("stroke-width",4)
.attr("class",function(d,i){return ID+"_rects";})
.on("mouseover",function(d,i){if(i>4 && i%4 !== 0){d3.select(this).attr("stroke-width",20);}})
.on("mouseout",function(d,i){if(i>4 && i%4 !== 0){d3.select(this).transition().attr("stroke-width",4).delay(0).duration(300);}})
.on("click",function(d,i){
if(i>4 && i%4 !==0) {
defaultFunctions[(i%4)-1] = options[Math.floor(i/4)+2];
//console.log(defaultFunctions);
d3.selectAll("."+ID+"_rects").attr("fill",function(d,i){if(i<4 || i%4 === 0){return "Orange"}else if (options[Math.floor(i/4)+2] === defaultFunctions[(i%4)-1]){return "Green";}else{return "DimGray"}});
updatePoints(defaultFunctions);
}
})
.transition("pop")
.ease("elastic")
.attr("width",rectWidth)
.attr("height",rectHeight)
.delay(function(d,i){return i*10})
.duration(500);
d3.select("#"+ID).selectAll("Ordinator_funcTexts")
.data(d3.range(options.length))
.enter()
.append("text")
.text(function(d,i){return options[i];})
.attr("x",function(d,i){if(i<3){return horPadding+((i+1)%4)*rectWidth;}else{return horPadding;}})
.attr("dx",rectWidth/2)
.attr("y",function(d,i){if(i<3){return verPadding;}else{return verPadding+Math.floor(i-2)*rectHeight;}})
.attr("dy",rectHeight*2/3)
.attr("fill","Black")
.attr("fill-opacity",0)
.attr("stroke","DimGray")
.attr("stroke-opacity",0)
.attr("stroke-width",0)
.attr("font-size",function(d,i){if(i<3){return 80;}else{return 50;}})
.attr("font-family","sans-serif")
.attr("font-weight",function(d,i){if(i<3){return 800;}else{return 400;}})
.attr("text-anchor","middle")
.attr("class",function(d,i){return ID+"_texts";})
.transition("fadein")
.attr("fill-opacity",0.9)
.delay(function(d,i){return i*10})
.duration(500);
//prevent accidental text selection
d3.selectAll("."+ID+"_texts").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
}
//Render Function Table
//Update Points
function updatePoints (functionArray) {
args = ordinatorFetchData(functionArray[0],functionArray[1],functionArray[2]);
labels = args.labels;
labelNames = args.labelNames;
points = args.points;
pointsRef = [];
points.forEach(function(d,i){pointsRef[i]= [d[0],-d[1],d[2]];});
args = filterOrdinator(points);
renderAxes([currentRotateX,currentRotateY,currentRotateZ],1);
renderGlyphs(args,[currentRotateX,currentRotateY,currentRotateZ]);
}
//Update Points
}
//Add the logo and the initiate Indoril/Ordinator
d3.select("#master").append("path").attr("id","indorilLogoPath").attr("class","indorilLogo").attr("d","M -100,5800").attr("stroke","Orange").attr("stroke-width",300).attr("fill","transparent").attr("stroke-dasharray","20 10");
d3.select("#master").append("circle").attr("id","indorilLogoCircle").attr("class","indorilLogo").attr("r",300).attr("cx",-100).attr("cy",5800).attr("fill","AntiqueWhite").attr("fill-opacity",1);
d3.select("#master").append("svg:image").attr("xlink:href","data:image/png;base64,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")
.attr("id","indorilLogoImage").attr("class","indorilLogo").attr("title","indoril").attr("alt","indorilLogo").attr("x",-400).attr("y",5500).attr("width",600).attr("height",600).style("opacity",1)
.on("mouseover",function(){
d3.select("#indorilLogoCircle").transition().attr("fill","Orange").delay(0).duration(1000);
d3.select("#indorilLogoPath").transition().ease("linear").attrTween("d",function(){return trace(this,(function(){var result = [];for(var i=0,angle=0,radius=50;i<23;i++){var x = -100+radius*Math.sin(angle);var y = 5800-radius*Math.cos(angle);angle += Math.PI/10;radius+=10;result.push([x,y]);}return result;})(),10,1);}).delay(0).duration(750);
})
.on("mouseout",function(){
d3.select("#indorilLogoCircle").transition().attr("fill","AntiqueWhite").delay(0).duration(1000);
d3.select("#indorilLogoPath").transition().ease("linear").attrTween("d",function(){ var length = this.getTotalLength(); var terminal = this.getPointAtLength(length); var rCurrent = Math.floor(Math.sqrt(Math.pow(terminal.x+100,2)+Math.pow(terminal.y-5800,2))/10)*10; var iCurrent = (rCurrent-50)/10; var angleCurrent = iCurrent*Math.PI/10; return traceBack(this,(function(){var result = [];for(var i=0,angle=0,radius=50;i<=iCurrent;i++){var x = -100+radius*Math.sin(angle);var y = 5800-radius*Math.cos(angle);angle += Math.PI/10;radius +=10;result.push([x,y]);};return result;})(),10,1);}).delay(0).duration(750);
})
.on("click",function(){
d3.select("#Ordinator").remove();
//renderWindow("svg","Ordinator",sampleLoc,ordinator,[[1,0,0,0],[0,-1,0,1],[0,0,1,2],[0.5,0.5,0.5,3],[0.5,-1,0.75,4],[0.75,0.2,0.3,5]]);
renderWindow("svg","Ordinator",{"x":1500,"y":1500,"width":1500,"height":2500,"rx":100,"ry":100,"iconPadding":100,"iconSize":100,"minWidth":1500,"minHeight":2500,"maxWidth":5000,"maxHeight":5000},ordinator,ordinatorFetchData("polyphen2","sift","position"));
});
//Add the logo and the initiate Indoril/Ordinator
<!--Ordinator-->
<!--Global Trace Function for paths-->
//Mode 0 is where the resolution corresponds to the number of equal segments of a path. Mode 1 is unit based. In mode 1, resolution of 10 will mean the path will be divided into segments of length 10.
//If your points are equally distributed, than go for mode 0 (less work), otherwise go for mode 1 which will be more accurate (more work).
function trace (path,pointArray,resolution,mode) {
var line = d3.svg.line().interpolate("cardinal");
var endPath = path.cloneNode();
var endPathString = line(pointArray);
endPath.setAttribute("d",endPathString);
var lengthOfString = endPath.getTotalLength();
var sampleDistance = mode===0?lengthOfString/resolution:resolution;
var loopCap = mode===0?resolution:lengthOfString/resolution;
var sampledPoints = [];
for (i=0;i<=loopCap;i++) {
var u = endPath.getPointAtLength(i*sampleDistance);
sampledPoints[i] = [u.x,u.y];
}
return function(t) {
return t<1?line(sampledPoints.slice(0,Math.max(1,Math.floor(t*loopCap)))):line(pointArray)
}
}
function traceBack (path,pointArray,resolution,mode) {
var line = d3.svg.line().interpolate("cardinal");
var endPath = path.cloneNode();
var endPathString = line(pointArray);
endPath.setAttribute("d",endPathString);
var lengthOfString = endPath.getTotalLength();
var sampleDistance = mode===0?lengthOfString/resolution:resolution;
var loopCap = mode===0?resolution:lengthOfString/resolution;
var sampledPoints = [];
for (i=0;i<=loopCap;i++) {
var u = endPath.getPointAtLength(i*sampleDistance);
sampledPoints[i] = [u.x,u.y];
}
return function(t) {
return t<1?line(sampledPoints.slice(0,Math.max(1,Math.floor((1-t)*loopCap)))):line([pointArray[0]])
}
}
<!--Global Trace Function for paths-->
//***Subs***
//Keep unintended text selection issue minimal by disabling selection on majority of text. My understanding is that some text selection is necessary because I am using html5's native eventlistener to translate an svg that is embedded in an another svg. Silencing listeners on the parent svg also silences listeners on the child in this case. I could not find any other solution than selecting a bit of text by Ctrl+A OR double-clicking on the GraphSvg. After this step everything works OK.
//The two elements that are OK to text select are the Graph and the tabs that open when "length: XY aa" is clicked.
d3.select("#master").selectAll(".mut").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
d3.select("#master").selectAll(".sequence").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
d3.select("#master").selectAll(".connector").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
d3.select("#ideograms").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
d3.select("#annotation").selectAll("*").style("user-select","none").style("-moz-user-select","none").style("-webkit-user-select","none").style("-ms-user-select","none");
//Keep text selection process minimal by disabling selection on majority of above text.
//notify that I have been going down the well with someone else's rope..Well ok, perhaps I didn't have one of my own but that still doesn't change the fact.
//alert("With the recent update of chrome there has been a performance issue.\nBefore you begin anything on the page, click on the 'All' above 'Font-Size:1.0x'.\nA dropdown menu will appear.\nRandomly click on the few of the choices.\nThen click back on the 'All' to close dropdown menu.\nThe issue will be resolved.\nYou can watch a demonstration at http://i-pv.org/gifs/chromeGood.gif\nThank you for your understanding,\n\nIbrahim Tanyalcin");
//notify that I have been going down the well with someone else's rope..Well ok, perhaps I didn't have one of my own but that still doesn't change the fact.
<!--Copyright Ibrahim Tanyalcin 2012-2016, All Rights Reserved.--!>
</script>
</body>
</html>