project files added
20
LICENSE
Normal file
@ -0,0 +1,20 @@
|
||||
Copyright (c) 2013-2018 GitHub Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
35024
LICENSES.chromium.html
Normal file
BIN
Tumortisch.exe
Normal file
BIN
api-ms-win-core-console-l1-1-0.dll
Normal file
BIN
api-ms-win-core-datetime-l1-1-0.dll
Normal file
BIN
api-ms-win-core-debug-l1-1-0.dll
Normal file
BIN
api-ms-win-core-errorhandling-l1-1-0.dll
Normal file
BIN
api-ms-win-core-file-l1-1-0.dll
Normal file
BIN
api-ms-win-core-file-l1-2-0.dll
Normal file
BIN
api-ms-win-core-file-l2-1-0.dll
Normal file
BIN
api-ms-win-core-handle-l1-1-0.dll
Normal file
BIN
api-ms-win-core-heap-l1-1-0.dll
Normal file
BIN
api-ms-win-core-interlocked-l1-1-0.dll
Normal file
BIN
api-ms-win-core-libraryloader-l1-1-0.dll
Normal file
BIN
api-ms-win-core-localization-l1-2-0.dll
Normal file
BIN
api-ms-win-core-memory-l1-1-0.dll
Normal file
BIN
api-ms-win-core-namedpipe-l1-1-0.dll
Normal file
BIN
api-ms-win-core-processenvironment-l1-1-0.dll
Normal file
BIN
api-ms-win-core-processthreads-l1-1-0.dll
Normal file
BIN
api-ms-win-core-processthreads-l1-1-1.dll
Normal file
BIN
api-ms-win-core-profile-l1-1-0.dll
Normal file
BIN
api-ms-win-core-rtlsupport-l1-1-0.dll
Normal file
BIN
api-ms-win-core-string-l1-1-0.dll
Normal file
BIN
api-ms-win-core-synch-l1-1-0.dll
Normal file
BIN
api-ms-win-core-synch-l1-2-0.dll
Normal file
BIN
api-ms-win-core-sysinfo-l1-1-0.dll
Normal file
BIN
api-ms-win-core-timezone-l1-1-0.dll
Normal file
BIN
api-ms-win-core-util-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-conio-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-convert-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-environment-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-filesystem-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-heap-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-locale-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-math-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-multibyte-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-private-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-process-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-runtime-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-stdio-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-string-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-time-l1-1-0.dll
Normal file
BIN
api-ms-win-crt-utility-l1-1-0.dll
Normal file
BIN
blink_image_resources_200_percent.pak
Normal file
BIN
content_resources_200_percent.pak
Normal file
BIN
content_shell.pak
Normal file
BIN
d3dcompiler_47.dll
Normal file
BIN
ffmpeg.dll
Normal file
BIN
icudtl.dat
Normal file
BIN
libEGL.dll
Normal file
BIN
libGLESv2.dll
Normal file
BIN
locales/am.pak
Normal file
BIN
locales/ar.pak
Normal file
BIN
locales/bg.pak
Normal file
BIN
locales/bn.pak
Normal file
BIN
locales/ca.pak
Normal file
BIN
locales/cs.pak
Normal file
BIN
locales/da.pak
Normal file
BIN
locales/de.pak
Normal file
BIN
locales/el.pak
Normal file
BIN
locales/en-GB.pak
Normal file
BIN
locales/en-US.pak
Normal file
BIN
locales/es-419.pak
Normal file
BIN
locales/es.pak
Normal file
BIN
locales/et.pak
Normal file
BIN
locales/fa.pak
Normal file
BIN
locales/fake-bidi.pak
Normal file
BIN
locales/fi.pak
Normal file
BIN
locales/fil.pak
Normal file
BIN
locales/fr.pak
Normal file
BIN
locales/gu.pak
Normal file
BIN
locales/he.pak
Normal file
BIN
locales/hi.pak
Normal file
BIN
locales/hr.pak
Normal file
BIN
locales/hu.pak
Normal file
BIN
locales/id.pak
Normal file
BIN
locales/it.pak
Normal file
BIN
locales/ja.pak
Normal file
BIN
locales/kn.pak
Normal file
BIN
locales/ko.pak
Normal file
BIN
locales/lt.pak
Normal file
BIN
locales/lv.pak
Normal file
BIN
locales/ml.pak
Normal file
BIN
locales/mr.pak
Normal file
BIN
locales/ms.pak
Normal file
BIN
locales/nb.pak
Normal file
BIN
locales/nl.pak
Normal file
BIN
locales/pl.pak
Normal file
BIN
locales/pt-BR.pak
Normal file
BIN
locales/pt-PT.pak
Normal file
BIN
locales/ro.pak
Normal file
BIN
locales/ru.pak
Normal file
BIN
locales/sk.pak
Normal file
BIN
locales/sl.pak
Normal file
BIN
locales/sr.pak
Normal file
BIN
locales/sv.pak
Normal file
BIN
locales/sw.pak
Normal file
BIN
locales/ta.pak
Normal file
BIN
locales/te.pak
Normal file
BIN
locales/th.pak
Normal file
BIN
locales/tr.pak
Normal file
BIN
locales/uk.pak
Normal file
BIN
locales/vi.pak
Normal file
BIN
locales/zh-CN.pak
Normal file
BIN
locales/zh-TW.pak
Normal file
BIN
msvcp140.dll
Normal file
8897
natives_blob.bin
Normal file
BIN
pdf_viewer_resources.pak
Normal file
2
resources/app/app/BioGraphVisart-master/.gitattributes
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
2
resources/app/app/BioGraphVisart-master/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
# silly apple
|
||||
.DS_Store
|
196
resources/app/app/BioGraphVisart-master/BioGraphVisart.html
Normal file
@ -0,0 +1,196 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
<title>BioGraphVisart</title>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.js"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.css">
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.debug.js" integrity="sha384-THVO/sM0mFD9h7dfSndI6TS0PgAGavwKvB5hAxRRvc0o9cPLohB0wb/PTA7LdUHs" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="https://d3js.org/d3.v6.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/external/html2canvas.min.js"></script>
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.15.1/cytoscape.min.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-qtip.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-cose-bilkent.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-canvas.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-no-overlap.js"></script>
|
||||
<script src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-svg.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-undo-redo.js"></script>
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/c78b41cc690d9e7f0f3ef68ff95fc3c7f1433e73/static/scripts/cytoscapescripts/cytoscape-expand-collapse.js"></script>
|
||||
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/external/cxtmenu.js"></script>
|
||||
<script src="https://unpkg.com/file-saver@1.3.8/FileSaver.js"></script>
|
||||
|
||||
<script data-main="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize.js" type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/1ebdad7d2d5ee59906b8c89227d3f92e0288bbb5/static/scripts/node_modules/requirejs/require.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/commonfunctions.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/constants.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/download_single_graph.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/keggpathways.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/legends/interactiontypes.js"></script>
|
||||
|
||||
<script type="application/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/graph.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
|
||||
<link rel="stylesheet" href="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/css/menu.css">
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/scripts/external/menu.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body id="everything">
|
||||
<script type="text/javascript">
|
||||
if (window.File && window.FileReader && window.FileList && window.Blob) {
|
||||
// Great success! All the File APIs are supported.
|
||||
} else {
|
||||
alert('The File APIs are not fully supported in this browser.');
|
||||
}
|
||||
</script>
|
||||
<div class="content">
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
<div class="topnav-right">
|
||||
<div id="downloadPart" style="visibility: hidden" class="dropdown">
|
||||
<button class="dropbtnright"><i class="fas fa-file-download fa-sm"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a onClick="downloadPDF()">PDF</a>
|
||||
<a onclick="downloadPNG()">PNG</a>
|
||||
<a onclick="downloadSVG()">SVG</a>
|
||||
<!--<a onclick="downloadJSON()">JSON</a>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="datapart" id="dataPart">
|
||||
<input type="file" accept=".graphml,.jso,.sif" id="fileName" name="file" />
|
||||
|
||||
<button class= 'butn' onclick="isFile()" id="loadGraphml" >Load file</button>
|
||||
<p></p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="configPart">
|
||||
|
||||
</div>
|
||||
<p></p>
|
||||
|
||||
<!--<button onclick=" window.print()">print</button>-->
|
||||
<p></p>
|
||||
<div align="left" id="legend" style="visibility: hidden">
|
||||
<table >
|
||||
<tr>
|
||||
<td>
|
||||
<span style="font-size:15px" ><b>Interactions</b></span>
|
||||
</td>
|
||||
<td>
|
||||
<small><a href="https://www.kegg.jp/kegg/xml/docs/" target="_blank">kegg.jp</a></small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="arrows">
|
||||
</table>
|
||||
<div id="legendNodes"></div>
|
||||
</div>
|
||||
<div class="loader" id="loader1" style="visibility: hidden"></div>
|
||||
<div align="left" id="cy"></div>
|
||||
<div align="left" id="KEGGpathsButton" style="visibility: hidden">
|
||||
<button class="butn" id="keggpathways">Show KEGG Pathways</button></p></p>
|
||||
<div class="loader" id="loader" style="visibility: hidden"></div>
|
||||
</div>
|
||||
<div align="left" id= "KEGGpaths" style="visibility: hidden;"></div>
|
||||
<script type="text/javascript">
|
||||
jQuery.get("/vis", function(data){
|
||||
if(data){
|
||||
var parser = new DOMParser;
|
||||
var dom = parser.parseFromString(
|
||||
data,
|
||||
'text/html');
|
||||
|
||||
graphString = []
|
||||
var keytag = dom.body.getElementsByTagName("graphml")[0]
|
||||
var keys = keytag.outerHTML.split("> <");
|
||||
for(var i = 0; i < keys.length-1; i++){
|
||||
if(i != keys.length-2){
|
||||
graphString.push('<'+keys[i]+'>')
|
||||
}
|
||||
else if(i == keys.length-2){
|
||||
var nodetag = keys[i].split("<node");
|
||||
for(var j = 0; j < nodetag.length; j++){
|
||||
if(nodetag[j].includes('id') && j < nodetag.length-1){
|
||||
var splitNode = nodetag[j].split('<data')
|
||||
for(var k = 0; k < splitNode.length; k++){
|
||||
if(splitNode[k].includes('id')){
|
||||
graphString.push('<node' + splitNode[k])
|
||||
}
|
||||
else{
|
||||
graphString.push('<data' + splitNode[k].split('</node>')[0])
|
||||
}
|
||||
}
|
||||
}
|
||||
if(j == nodetag.length-1){
|
||||
var splitEdge = nodetag[j].split('<edge')
|
||||
var split = splitEdge[0].split('<data')
|
||||
for(var l = 0; l < split.length; l++){
|
||||
if(split[l].includes('id')){
|
||||
graphString.push('<node' + split[l])
|
||||
}
|
||||
else{
|
||||
graphString.push('<data' + split[l])
|
||||
}
|
||||
}
|
||||
for(var m = 1; m < splitEdge.length; m++){
|
||||
var splitedEdge = splitEdge[m].split("<data")
|
||||
for(var n =0; n <splitedEdge.length; n++){
|
||||
if(splitedEdge[n].includes('source')){
|
||||
graphString.push('<edge' + splitedEdge[n])
|
||||
}
|
||||
else{
|
||||
graphString.push('<data' + splitedEdge[n].split('</edge')[0])
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
loadFile();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<footer id="footer">
|
||||
<div class="containerMerged">
|
||||
<a href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
BIN
resources/app/app/BioGraphVisart-master/Example.png
Normal file
After Width: | Height: | Size: 248 KiB |
21
resources/app/app/BioGraphVisart-master/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Mirjam Figaschewski
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
58
resources/app/app/BioGraphVisart-master/README.md
Normal file
@ -0,0 +1,58 @@
|
||||
# BioGraphVisart
|
||||
This is a web-based tool to interactively visualize networks, especially with biological background. It is written in javascript based on [cytoscape.js](http://js.cytoscape.org). It is available under [biographvisart.org](http://biographvisart.org).
|
||||
|
||||
## How to run it locally
|
||||
You need to have [nodejs](nodejs.org) installed.
|
||||
|
||||
1. In terminal go to
|
||||
|
||||
cd BioGraphVisart-master/static/scripts
|
||||
and run
|
||||
|
||||
node server.js
|
||||
|
||||
2. Open in browser
|
||||
|
||||
http://localhost:3000/BioGraphVisart
|
||||
|
||||
3. Select a .graphml-file or select a .json of a previous generated graph.
|
||||
|
||||
4. To show the KEGG Pathways disable Cross-Origin Restrictions in your Browser!
|
||||
|
||||
- **Google Chrome**:
|
||||
* Start Google Chrome in the terminal using
|
||||
|
||||
OSX
|
||||
|
||||
open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security
|
||||
Windows10
|
||||
|
||||
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --disable-gpu --user-data-dir=~/chromeTemp
|
||||
|
||||
Linux
|
||||
|
||||
google-chrome --disable-web-security
|
||||
|
||||
- **Safari**
|
||||
* Go to *Safari -> Preferences -> Advanced*
|
||||
|
||||
* Tick *Show Develop Menu* in menu bar
|
||||
|
||||
* In the Develop Menu tick *Disable Cross-Origin Restrictions* and tick *Disable local file restrictions*
|
||||
|
||||
- **Firefox**
|
||||
* install the Firefox Add-on [*cors-plugin*](https://addons.mozilla.org/en-US/firefox/addon/cors-plugin/) and activate it.
|
||||
|
||||
## Embedding in other web applications
|
||||
Import the BioGraphVisart main html into your html:
|
||||
|
||||
<head>
|
||||
<link rel="import" href="https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/templates/BioGraphVisart.html">
|
||||
</head>
|
||||
<script>
|
||||
var link = document.querySelector('link[rel="import"]');
|
||||
var content = link.import;
|
||||
var el = content.getElementById('everything');
|
||||
|
||||
document.body.appendChild(el.cloneNode(true));
|
||||
</script>
|
393
resources/app/app/BioGraphVisart-master/TvsL_rooted/S02.graphml
Normal file
@ -0,0 +1,393 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
|
||||
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
|
||||
<!-- Created by igraph -->
|
||||
<key id="v_name" for="node" attr.name="name" attr.type="string"/>
|
||||
<key id="v_entrez" for="node" attr.name="entrez" attr.type="string"/>
|
||||
<key id="v_ensembl" for="node" attr.name="ensembl" attr.type="string"/>
|
||||
<key id="v_symbol" for="node" attr.name="symbol" attr.type="string"/>
|
||||
<key id="v_id" for="node" attr.name="id" attr.type="string"/>
|
||||
<key id="v_deregnet_score" for="node" attr.name="deregnet_score" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T1__S02_liver_T1" for="node" attr.name="S02_tumor_T1__S02_liver_T1" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T2__S02_tumor_T1" for="node" attr.name="S02_tumor_T2__S02_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T1__S05_liver_T1" for="node" attr.name="S05_tumor_T1__S05_liver_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_liver_T2" for="node" attr.name="S05_tumor_T2__S05_liver_T2" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_tumor_T1" for="node" attr.name="S05_tumor_T2__S05_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T1__S06_liver_T1" for="node" attr.name="S06_tumor_T1__S06_liver_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T2__S06_tumor_T1" for="node" attr.name="S06_tumor_T2__S06_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_liver_T2" for="node" attr.name="S07_tumor_T2__S07_liver_T2" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_tumor_T1" for="node" attr.name="S07_tumor_T2__S07_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S09_tumor_T1__S09_liver_T1" for="node" attr.name="S09_tumor_T1__S09_liver_T1" attr.type="double"/>
|
||||
<key id="v_S11_tumor_T2__S11_tumor_T1" for="node" attr.name="S11_tumor_T2__S11_tumor_T1" attr.type="double"/>
|
||||
<key id="e_interaction" for="edge" attr.name="interaction" attr.type="string"/>
|
||||
<graph id="G" edgedefault="directed">
|
||||
<node id="n0">
|
||||
<data key="v_name">1109</data>
|
||||
<data key="v_entrez">1109</data>
|
||||
<data key="v_ensembl">ENSG00000198610</data>
|
||||
<data key="v_symbol">AKR1C4</data>
|
||||
<data key="v_id">n344</data>
|
||||
<data key="v_deregnet_score">4.89276689597744</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">4.89276689597744</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.15495189396612</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.866752496788239</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.77953150019477</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">2.80965718014307</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">1.39345388316494</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">0.25104315650406</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.0950421845832739</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.549906799076546</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.0725495302077123</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.540485371695126</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="v_name">10720</data>
|
||||
<data key="v_entrez">10720</data>
|
||||
<data key="v_ensembl">ENSG00000213759</data>
|
||||
<data key="v_symbol">UGT2B11</data>
|
||||
<data key="v_id">n569</data>
|
||||
<data key="v_deregnet_score">5.82038322510769</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">5.82038322510769</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.62801203676056</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.77214694693069</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">3.83581114699541</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.83299646068285</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.80112239966227</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.68538917075261</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.93346052317343</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.76938591051764</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-1.2095203234073</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.0823075521941503</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="v_name">1544</data>
|
||||
<data key="v_entrez">1544</data>
|
||||
<data key="v_ensembl">ENSG00000140505</data>
|
||||
<data key="v_symbol">CYP1A2</data>
|
||||
<data key="v_id">n1191</data>
|
||||
<data key="v_deregnet_score">-5.24630978509159</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-5.24630978509159</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.123341204319056</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-10.3807997185401</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-10.3834686919087</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.74054873338791</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-5.70864039450488</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">8.73208341643774</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.48826783586347</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">3.53978772457172</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.0750316432391748</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.652790373026588</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="v_name">1586</data>
|
||||
<data key="v_entrez">1586</data>
|
||||
<data key="v_ensembl">ENSG00000148795</data>
|
||||
<data key="v_symbol">CYP17A1</data>
|
||||
<data key="v_id">n1598</data>
|
||||
<data key="v_deregnet_score">6.42242556395707</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">6.42242556395707</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-2.02369003486191</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.87918760103872</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">5.05839777460464</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">3.50348974611651</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.9800736312255</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.83171972629695</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.43695354573534</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.96080057153428</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.863540878595533</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.422930230833811</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="v_name">5105</data>
|
||||
<data key="v_entrez">5105</data>
|
||||
<data key="v_ensembl">ENSG00000124253</data>
|
||||
<data key="v_symbol">PCK1</data>
|
||||
<data key="v_id">n1833</data>
|
||||
<data key="v_deregnet_score">-4.17067321959424</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-4.17067321959424</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.315961308608156</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-5.55465316513183</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-1.07029413042507</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">4.61922451217977</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.762874159018528</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">2.22755332083074</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.683344229406774</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.748012140457139</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.925030845291966</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.34872670770042</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="v_name">90993</data>
|
||||
<data key="v_entrez">90993</data>
|
||||
<data key="v_ensembl">ENSG00000157613</data>
|
||||
<data key="v_symbol">CREB3L1</data>
|
||||
<data key="v_id">n1926</data>
|
||||
<data key="v_deregnet_score">-2.9646296339978</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-2.9646296339978</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">1.30419094673599</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.63231266511345</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.6319721573097</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-1.22538630164837</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.516780633820235</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.403726383325318</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.799248090364271</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.800633283483196</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.213265198782758</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.989479140265932</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="v_name">5997</data>
|
||||
<data key="v_entrez">5997</data>
|
||||
<data key="v_ensembl">ENSG00000116741</data>
|
||||
<data key="v_symbol">RGS2</data>
|
||||
<data key="v_id">n2755</data>
|
||||
<data key="v_deregnet_score">6.00157810698491</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">6.00157810698491</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.55718876937457</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.77810059195969</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.4007982015182</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">0.0312518414650994</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.506033551445976</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.882677646876007</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.939049383271492</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.985047767832839</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-1.44526169194974</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.0557158354692691</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="v_name">2916</data>
|
||||
<data key="v_entrez">2916</data>
|
||||
<data key="v_ensembl">ENSG00000113262</data>
|
||||
<data key="v_symbol">GRM6</data>
|
||||
<data key="v_id">n3392</data>
|
||||
<data key="v_deregnet_score">-4.28159498879334</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-4.28159498879334</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">1.0018084993743</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.0448778924793122</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.04257117165366</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.681559945843812</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.400094810641986</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.03715847279852</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.486002122177679</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.644737512545253</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.178570156939732</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-2.49508704375534</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="v_name">5592</data>
|
||||
<data key="v_entrez">5592</data>
|
||||
<data key="v_ensembl">ENSG00000185532</data>
|
||||
<data key="v_symbol">PRKG1</data>
|
||||
<data key="v_id">n3408</data>
|
||||
<data key="v_deregnet_score">-2.26686926787255</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-2.26686926787255</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.756721842891169</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.92206535424882</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-2.38752692709002</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-4.16376459319587</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.522376100347733</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.0599034168717</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.69133768262919</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-1.16612296915722</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.236658193785087</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.07938233953787</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="v_name">8644</data>
|
||||
<data key="v_entrez">8644</data>
|
||||
<data key="v_ensembl">ENSG00000196139</data>
|
||||
<data key="v_symbol">AKR1C3</data>
|
||||
<data key="v_id">n3552</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="v_name">57016</data>
|
||||
<data key="v_entrez">57016</data>
|
||||
<data key="v_ensembl">ENSG00000198074</data>
|
||||
<data key="v_symbol">AKR1B10</data>
|
||||
<data key="v_id">n4038</data>
|
||||
<data key="v_deregnet_score">6.9473616002508</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">6.9473616002508</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.29922257422236</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">4.87275225199716</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">7.0615766357804</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">2.33106834603374</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">5.56112231578185</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.53725889034605</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.720898577294492</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.918004010375306</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.183151949775835</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.0424120538114565</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="v_name">7365</data>
|
||||
<data key="v_entrez">7365</data>
|
||||
<data key="v_ensembl">ENSG00000109181</data>
|
||||
<data key="v_symbol">UGT2B10</data>
|
||||
<data key="v_id">n4853</data>
|
||||
<data key="v_deregnet_score">4.95636591904564</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">4.95636591904564</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.22544022193002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-3.40258474686455</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.551322993790425</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">3.31655930788988</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.574368880841379</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">0.60441891669662</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.5545931441863</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.84199473263497</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.521393253755894</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.0721241608289268</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="v_name">6716</data>
|
||||
<data key="v_entrez">6716</data>
|
||||
<data key="v_ensembl">ENSG00000277893</data>
|
||||
<data key="v_symbol">SRD5A2</data>
|
||||
<data key="v_id">n5231</data>
|
||||
<data key="v_deregnet_score">-3.31356753711692</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-3.31356753711692</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.27903482246851</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-4.28309090797391</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-1.14883138068867</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">3.18284069260735</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.805699976937394</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.54942187664872</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.340690843782098</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.243981706870284</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.472691525413995</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.118879800751597</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="v_name">2052</data>
|
||||
<data key="v_entrez">2052</data>
|
||||
<data key="v_ensembl">ENSG00000143819</data>
|
||||
<data key="v_symbol">EPHX1</data>
|
||||
<data key="v_id">n5239</data>
|
||||
<data key="v_deregnet_score">4.05308874792572</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">4.05308874792572</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.26128657660356</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-3.03895414708979</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">0.79359759610715</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">4.70878814618414</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.109320086095233</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.23237957141105</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.0521008716788</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.1477281896501</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.76183662020739</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.774711348623987</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="v_name">3576</data>
|
||||
<data key="v_entrez">3576</data>
|
||||
<data key="v_ensembl">ENSG00000169429</data>
|
||||
<data key="v_symbol">CXCL8</data>
|
||||
<data key="v_id">n5368</data>
|
||||
<data key="v_deregnet_score">-3.58302126289549</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-3.58302126289549</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.624141351558466</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">2.22206482379224</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">4.40552620265477</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.34461448831965</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.821411188868186</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.931128194940757</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.655546297345688</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.325213732517111</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-1.76445861017272</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.967584072590853</data>
|
||||
</node>
|
||||
<edge source="n0" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n11">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n1" target="n9">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n3">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n11">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n13">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n3">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n9">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n12">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n3">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n4">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n5">
|
||||
<data key="e_interaction">state change</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n14">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n5">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n5">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n6">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n6">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n2">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n3">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n10">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n11">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n9">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n12" target="n0">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n12" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n12" target="n3">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n12" target="n9">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n12" target="n11">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n13" target="n2">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n7">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
</graph>
|
||||
</graphml>
|
399
resources/app/app/BioGraphVisart-master/TvsL_rooted/S05.graphml
Normal file
@ -0,0 +1,399 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
|
||||
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
|
||||
<!-- Created by igraph -->
|
||||
<key id="v_name" for="node" attr.name="name" attr.type="string"/>
|
||||
<key id="v_entrez" for="node" attr.name="entrez" attr.type="string"/>
|
||||
<key id="v_ensembl" for="node" attr.name="ensembl" attr.type="string"/>
|
||||
<key id="v_symbol" for="node" attr.name="symbol" attr.type="string"/>
|
||||
<key id="v_id" for="node" attr.name="id" attr.type="string"/>
|
||||
<key id="v_deregnet_score" for="node" attr.name="deregnet_score" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T1__S02_liver_T1" for="node" attr.name="S02_tumor_T1__S02_liver_T1" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T2__S02_tumor_T1" for="node" attr.name="S02_tumor_T2__S02_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T1__S05_liver_T1" for="node" attr.name="S05_tumor_T1__S05_liver_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_liver_T2" for="node" attr.name="S05_tumor_T2__S05_liver_T2" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_tumor_T1" for="node" attr.name="S05_tumor_T2__S05_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T1__S06_liver_T1" for="node" attr.name="S06_tumor_T1__S06_liver_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T2__S06_tumor_T1" for="node" attr.name="S06_tumor_T2__S06_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_liver_T2" for="node" attr.name="S07_tumor_T2__S07_liver_T2" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_tumor_T1" for="node" attr.name="S07_tumor_T2__S07_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S09_tumor_T1__S09_liver_T1" for="node" attr.name="S09_tumor_T1__S09_liver_T1" attr.type="double"/>
|
||||
<key id="v_S11_tumor_T2__S11_tumor_T1" for="node" attr.name="S11_tumor_T2__S11_tumor_T1" attr.type="double"/>
|
||||
<key id="e_interaction" for="edge" attr.name="interaction" attr.type="string"/>
|
||||
<graph id="G" edgedefault="directed">
|
||||
<node id="n0">
|
||||
<data key="v_name">5566</data>
|
||||
<data key="v_entrez">5566</data>
|
||||
<data key="v_ensembl">ENSG00000072062</data>
|
||||
<data key="v_symbol">PRKACA</data>
|
||||
<data key="v_id">n554</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="v_name">4625</data>
|
||||
<data key="v_entrez">4625</data>
|
||||
<data key="v_ensembl">ENSG00000092054</data>
|
||||
<data key="v_symbol">MYH7</data>
|
||||
<data key="v_id">n1276</data>
|
||||
<data key="v_deregnet_score">14.8251510948696</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.658701759441077</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">14.8251510948696</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">8.39244795377712</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-7.69690690076228</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.641070762939956</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.02131168718461</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.23187431247315</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.800492309301069</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.35843447594136</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-9.28700776374332</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="v_name">1080</data>
|
||||
<data key="v_entrez">1080</data>
|
||||
<data key="v_ensembl">ENSG00000001626</data>
|
||||
<data key="v_symbol">CFTR</data>
|
||||
<data key="v_id">n1768</data>
|
||||
<data key="v_deregnet_score">-7.13593185875471</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-4.02886196351358</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">1.01367471722464</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-7.13593185875471</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-8.53533424464492</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-1.34109771944348</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.144730234055561</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-4.24716817776394</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">3.50981828117259</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.48102340529884</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-2.6345163990084</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.818142467206227</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="v_name">4624</data>
|
||||
<data key="v_entrez">4624</data>
|
||||
<data key="v_ensembl">ENSG00000197616</data>
|
||||
<data key="v_symbol">MYH6</data>
|
||||
<data key="v_id">n1774</data>
|
||||
<data key="v_deregnet_score">7.64761236168921</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.658701759441077</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">7.64761236168921</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">2.22438649598639</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-4.49053512602129</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.641070762939956</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.82710886183851</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.514004415585024</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.51317770193379</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.21096106236531</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-3.91729765879408</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="v_name">5837</data>
|
||||
<data key="v_entrez">5837</data>
|
||||
<data key="v_ensembl">ENSG00000068976</data>
|
||||
<data key="v_symbol">PYGM</data>
|
||||
<data key="v_id">n1854</data>
|
||||
<data key="v_deregnet_score">8.21206363994462</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-0.253764462582541</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">8.21206363994462</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.40740238967204</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-7.197874084435</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.808698817461463</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">2.44450644900416</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-1.04055052903188</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.446533463556791</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">1.1912296697094</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.39184024564216</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="v_name">108</data>
|
||||
<data key="v_entrez">108</data>
|
||||
<data key="v_ensembl">ENSG00000078295</data>
|
||||
<data key="v_symbol">ADCY2</data>
|
||||
<data key="v_id">n1952</data>
|
||||
<data key="v_deregnet_score">8.53438178864342</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-0.253764462582541</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">8.53438178864342</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">3.47090537239461</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-4.88347854140604</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.641070762939956</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.02131168718461</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.72949641808977</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.72866970443853</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.64843605572591</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.96924376828345</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="v_name">477</data>
|
||||
<data key="v_entrez">477</data>
|
||||
<data key="v_ensembl">ENSG00000018625</data>
|
||||
<data key="v_symbol">ATP1A2</data>
|
||||
<data key="v_id">n2119</data>
|
||||
<data key="v_deregnet_score">7.0312349933532</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.420554166035893</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.384572555494536</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">7.0312349933532</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.20465575740625</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-5.16055953267539</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.153814228244316</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.474278101250238</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.563439900510124</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-1.42158865174456</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.08170779631787</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.45495339216011</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="v_name">85366</data>
|
||||
<data key="v_entrez">85366</data>
|
||||
<data key="v_ensembl">ENSG00000101306</data>
|
||||
<data key="v_symbol">MYLK2</data>
|
||||
<data key="v_id">n2597</data>
|
||||
<data key="v_deregnet_score">9.72571977400327</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.381145326531767</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.169855860538845</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">9.72571977400327</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">3.60384376877996</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-6.16577663598288</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-1.2961525440756</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">0.447233611750868</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.23187431247315</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.199913351222087</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.04667823404754</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.64002700521039</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="v_name">4633</data>
|
||||
<data key="v_entrez">4633</data>
|
||||
<data key="v_ensembl">ENSG00000111245</data>
|
||||
<data key="v_symbol">MYL2</data>
|
||||
<data key="v_id">n2638</data>
|
||||
<data key="v_deregnet_score">12.5943874337061</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.658701759441077</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">12.5943874337061</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">5.74581683130591</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-7.13043814324068</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.0669926875062147</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">0.447233611750868</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.106168270654973</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.325213732517111</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.363869747096693</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-7.02294212845273</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="v_name">70</data>
|
||||
<data key="v_entrez">70</data>
|
||||
<data key="v_ensembl">ENSG00000159251</data>
|
||||
<data key="v_symbol">ACTC1</data>
|
||||
<data key="v_id">n2891</data>
|
||||
<data key="v_deregnet_score">9.49712079272949</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.20792187070329</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">9.49712079272949</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">6.77783017329704</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-3.00115816027297</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.922040144919742</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.541799220675089</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.324387018865876</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.325213732517111</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">1.1912296697094</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-5.08960579511984</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="v_name">4634</data>
|
||||
<data key="v_entrez">4634</data>
|
||||
<data key="v_ensembl">ENSG00000160808</data>
|
||||
<data key="v_symbol">MYL3</data>
|
||||
<data key="v_id">n3003</data>
|
||||
<data key="v_deregnet_score">7.8257909000448</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.77727398490453</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.758250993433364</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">7.8257909000448</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">0.344939762644592</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-7.55742336063834</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.513373839240761</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.80605994386946</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.0178394782165211</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.439401952093741</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.939962009717682</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-5.64324996347192</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="v_name">801</data>
|
||||
<data key="v_entrez">801</data>
|
||||
<data key="v_ensembl">ENSG00000198668</data>
|
||||
<data key="v_symbol">CALM1</data>
|
||||
<data key="v_id">n4126</data>
|
||||
<data key="v_deregnet_score">1.38380189374643</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">1.45678199685873</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.574357722139686</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.38380189374643</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">0.267778179058853</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-1.10894298964905</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.604883121660149</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.561929013293465</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.662703763044404</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.256763916744508</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.347746806941182</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.116977618994839</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="v_name">7137</data>
|
||||
<data key="v_entrez">7137</data>
|
||||
<data key="v_ensembl">ENSG00000129991</data>
|
||||
<data key="v_symbol">TNNI3</data>
|
||||
<data key="v_id">n4373</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="v_name">779</data>
|
||||
<data key="v_entrez">779</data>
|
||||
<data key="v_ensembl">ENSG00000081248</data>
|
||||
<data key="v_symbol">CACNA1S</data>
|
||||
<data key="v_id">n4969</data>
|
||||
<data key="v_deregnet_score">9.54949821399305</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.08661921450376</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.0966654334910409</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">9.54949821399305</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">5.7742871768461</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-4.89591861851605</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.379748403463864</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.12308739343561</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.67669847379632</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.644737512545253</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.64843605572591</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-3.54406562623889</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="v_name">5506</data>
|
||||
<data key="v_entrez">5506</data>
|
||||
<data key="v_ensembl">ENSG00000154415</data>
|
||||
<data key="v_symbol">PPP1R3A</data>
|
||||
<data key="v_id">n5193</data>
|
||||
<data key="v_deregnet_score">10.2688948854879</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.658701759441077</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">10.2688948854879</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">3.84685212454644</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-5.83866422466276</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.661205852413321</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.41695759209879</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.154872208173425</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.154045494522191</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.21096106236531</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-3.69555981166179</data>
|
||||
</node>
|
||||
<edge source="n0" target="n2">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n2">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n5">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n6">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n6">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n7">
|
||||
<data key="e_interaction">inhibition</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n11">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n11">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n12">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n12">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n13">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n0" target="n13">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n1" target="n8">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n1" target="n10">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n8">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n10">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n0">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n0">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n0">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n8">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n8">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n10">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n10">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n1">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n3">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n8">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n10">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n4">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n4">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n5">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n7">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n12" target="n9">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n4">
|
||||
<data key="e_interaction">dephosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n4">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n4">
|
||||
<data key="e_interaction">inhibition</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n11">
|
||||
<data key="e_interaction">dephosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n11">
|
||||
<data key="e_interaction">inhibition</data>
|
||||
</edge>
|
||||
</graph>
|
||||
</graphml>
|
403
resources/app/app/BioGraphVisart-master/TvsL_rooted/S06.graphml
Normal file
@ -0,0 +1,403 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
|
||||
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
|
||||
<!-- Created by igraph -->
|
||||
<key id="v_name" for="node" attr.name="name" attr.type="string"/>
|
||||
<key id="v_entrez" for="node" attr.name="entrez" attr.type="string"/>
|
||||
<key id="v_ensembl" for="node" attr.name="ensembl" attr.type="string"/>
|
||||
<key id="v_symbol" for="node" attr.name="symbol" attr.type="string"/>
|
||||
<key id="v_id" for="node" attr.name="id" attr.type="string"/>
|
||||
<key id="v_deregnet_score" for="node" attr.name="deregnet_score" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T1__S02_liver_T1" for="node" attr.name="S02_tumor_T1__S02_liver_T1" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T2__S02_tumor_T1" for="node" attr.name="S02_tumor_T2__S02_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T1__S05_liver_T1" for="node" attr.name="S05_tumor_T1__S05_liver_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_liver_T2" for="node" attr.name="S05_tumor_T2__S05_liver_T2" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_tumor_T1" for="node" attr.name="S05_tumor_T2__S05_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T1__S06_liver_T1" for="node" attr.name="S06_tumor_T1__S06_liver_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T2__S06_tumor_T1" for="node" attr.name="S06_tumor_T2__S06_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_liver_T2" for="node" attr.name="S07_tumor_T2__S07_liver_T2" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_tumor_T1" for="node" attr.name="S07_tumor_T2__S07_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S09_tumor_T1__S09_liver_T1" for="node" attr.name="S09_tumor_T1__S09_liver_T1" attr.type="double"/>
|
||||
<key id="v_S11_tumor_T2__S11_tumor_T1" for="node" attr.name="S11_tumor_T2__S11_tumor_T1" attr.type="double"/>
|
||||
<key id="e_interaction" for="edge" attr.name="interaction" attr.type="string"/>
|
||||
<graph id="G" edgedefault="directed">
|
||||
<node id="n0">
|
||||
<data key="v_name">2810</data>
|
||||
<data key="v_entrez">2810</data>
|
||||
<data key="v_ensembl">ENSG00000175793</data>
|
||||
<data key="v_symbol">SFN</data>
|
||||
<data key="v_id">n377</data>
|
||||
<data key="v_deregnet_score">3.12025808565352</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">2.64641888132376</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-2.26077926338295</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">4.49734116519668</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">4.9135728803332</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.6637392642973</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.12025808565352</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.114582239346833</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.34812877496322</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.536815214740729</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.0889445714203473</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.0336382356794995</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="v_name">10720</data>
|
||||
<data key="v_entrez">10720</data>
|
||||
<data key="v_ensembl">ENSG00000213759</data>
|
||||
<data key="v_symbol">UGT2B11</data>
|
||||
<data key="v_id">n569</data>
|
||||
<data key="v_deregnet_score">3.80112239966227</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">5.82038322510769</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.62801203676056</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.77214694693069</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">3.83581114699541</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.83299646068285</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.80112239966227</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.68538917075261</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.93346052317343</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.76938591051764</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-1.2095203234073</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.0823075521941503</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="v_name">7367</data>
|
||||
<data key="v_entrez">7367</data>
|
||||
<data key="v_ensembl">ENSG00000197888</data>
|
||||
<data key="v_symbol">UGT2B17</data>
|
||||
<data key="v_id">n832</data>
|
||||
<data key="v_deregnet_score">3.36533471697888</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.135070541875581</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.358630994918083</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-4.25170420529655</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-1.15809338781921</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">3.17482914217108</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.36533471697888</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.17860098830935</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.403708194150801</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.175656421761971</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-2.66523908281484</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.39184024564216</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="v_name">1544</data>
|
||||
<data key="v_entrez">1544</data>
|
||||
<data key="v_ensembl">ENSG00000140505</data>
|
||||
<data key="v_symbol">CYP1A2</data>
|
||||
<data key="v_id">n1191</data>
|
||||
<data key="v_deregnet_score">-5.70864039450488</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-5.24630978509159</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.123341204319056</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-10.3807997185401</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-10.3834686919087</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.74054873338791</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-5.70864039450488</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">8.73208341643774</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.48826783586347</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">3.53978772457172</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.0750316432391748</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.652790373026588</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="v_name">1586</data>
|
||||
<data key="v_entrez">1586</data>
|
||||
<data key="v_ensembl">ENSG00000148795</data>
|
||||
<data key="v_symbol">CYP17A1</data>
|
||||
<data key="v_id">n1598</data>
|
||||
<data key="v_deregnet_score">3.9800736312255</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">6.42242556395707</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-2.02369003486191</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.87918760103872</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">5.05839777460464</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">3.50348974611651</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.9800736312255</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.83171972629695</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.43695354573534</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.96080057153428</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.863540878595533</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.422930230833811</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="v_name">1645</data>
|
||||
<data key="v_entrez">1645</data>
|
||||
<data key="v_ensembl">ENSG00000187134</data>
|
||||
<data key="v_symbol">AKR1C1</data>
|
||||
<data key="v_id">n2217</data>
|
||||
<data key="v_deregnet_score">3.93135252420372</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">3.90608989420543</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.47551737484035</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.797268226318685</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.56695520679137</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">2.48817397103033</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.93135252420372</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.08733518065673</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.0510915617685906</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-1.01143209498078</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-0.188925596476603</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.0379576993347989</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="v_name">8202</data>
|
||||
<data key="v_entrez">8202</data>
|
||||
<data key="v_ensembl">ENSG00000124151</data>
|
||||
<data key="v_symbol">NCOA3</data>
|
||||
<data key="v_id">n2407</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="v_name">54474</data>
|
||||
<data key="v_entrez">54474</data>
|
||||
<data key="v_ensembl">ENSG00000171431</data>
|
||||
<data key="v_symbol">KRT20</data>
|
||||
<data key="v_id">n3001</data>
|
||||
<data key="v_deregnet_score">6.14703320276914</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">2.76874552054694</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-2.50933780500786</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.27212495766397</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">1.65459089818634</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">0.503979061117767</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">6.14703320276914</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.268591165480654</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.585427497694274</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.154045494522191</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">1.71372781228624</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">2.20868820883383</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="v_name">8644</data>
|
||||
<data key="v_entrez">8644</data>
|
||||
<data key="v_ensembl">ENSG00000196139</data>
|
||||
<data key="v_symbol">AKR1C3</data>
|
||||
<data key="v_id">n3552</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="v_name">5568</data>
|
||||
<data key="v_entrez">5568</data>
|
||||
<data key="v_ensembl">ENSG00000165059</data>
|
||||
<data key="v_symbol">PRKACG</data>
|
||||
<data key="v_id">n3974</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="v_name">57016</data>
|
||||
<data key="v_entrez">57016</data>
|
||||
<data key="v_ensembl">ENSG00000198074</data>
|
||||
<data key="v_symbol">AKR1B10</data>
|
||||
<data key="v_id">n4038</data>
|
||||
<data key="v_deregnet_score">5.56112231578185</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">6.9473616002508</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.29922257422236</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">4.87275225199716</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">7.0615766357804</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">2.33106834603374</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">5.56112231578185</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.53725889034605</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.720898577294492</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.918004010375306</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.183151949775835</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.0424120538114565</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="v_name">1646</data>
|
||||
<data key="v_entrez">1646</data>
|
||||
<data key="v_ensembl">ENSG00000151632</data>
|
||||
<data key="v_symbol">AKR1C2</data>
|
||||
<data key="v_id">n4174</data>
|
||||
<data key="v_deregnet_score">3.23513408042692</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">3.09771981948785</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.15706240825394</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">2.45465210248845</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">4.89685601785009</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">2.3073132769181</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.23513408042692</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.85489315618227</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.655546297345688</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.325213732517111</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.363869747096693</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.603120873246436</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="v_name">23657</data>
|
||||
<data key="v_entrez">23657</data>
|
||||
<data key="v_ensembl">ENSG00000151012</data>
|
||||
<data key="v_symbol">SLC7A11</data>
|
||||
<data key="v_id">n4901</data>
|
||||
<data key="v_deregnet_score">5.22228834489467</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">3.79128203496861</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.666832460997196</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">2.27740352000061</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">4.39504314027532</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.00153762838583</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">5.22228834489467</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.15945744236325</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.254403233948798</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.774301674114135</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.0711673648441337</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.402549251102868</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="v_name">596</data>
|
||||
<data key="v_entrez">596</data>
|
||||
<data key="v_ensembl">ENSG00000171791</data>
|
||||
<data key="v_symbol">BCL2</data>
|
||||
<data key="v_id">n5253</data>
|
||||
<data key="v_deregnet_score">-1.54050507182279</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-0.976357654733464</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.123341204319056</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-1.63922205847672</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-1.32698848432479</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">0.123477661206546</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-1.54050507182279</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">2.28272594783528</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.585427497694274</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.154045494522191</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">0.363869747096693</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.258894301365649</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="v_name">54575</data>
|
||||
<data key="v_entrez">54575</data>
|
||||
<data key="v_ensembl">ENSG00000242515</data>
|
||||
<data key="v_symbol">UGT1A10</data>
|
||||
<data key="v_id">n5401</data>
|
||||
<data key="v_deregnet_score">3.88894339181834</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.658701759441077</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.0966654334910409</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.78720439694543</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">5.06420452433208</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">2.01279636771679</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">3.88894339181834</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.79395232134585</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.154872208173425</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.154045494522191</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">1.71372781228624</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.148581679883231</data>
|
||||
</node>
|
||||
<node id="n15">
|
||||
<data key="v_name">7157</data>
|
||||
<data key="v_entrez">7157</data>
|
||||
<data key="v_ensembl">ENSG00000141510</data>
|
||||
<data key="v_symbol">TP53</data>
|
||||
<data key="v_id">n5464</data>
|
||||
</node>
|
||||
<edge source="n1" target="n8">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n8">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n2">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n4">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n14">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n4" target="n4">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n4" target="n5">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n4" target="n8">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n2">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n4">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n8">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n11">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n14">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n6" target="n7">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n6" target="n13">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n2">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n3">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n4">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n5">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n10">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n14">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n4">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n4">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n6">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n6">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n8">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n8">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n2">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n5">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n14">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n13" target="n15">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n8">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n15" target="n0">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n15" target="n12">
|
||||
<data key="e_interaction">repression</data>
|
||||
</edge>
|
||||
<edge source="n15" target="n13">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n15" target="n13">
|
||||
<data key="e_interaction">inhibition</data>
|
||||
</edge>
|
||||
</graph>
|
||||
</graphml>
|
381
resources/app/app/BioGraphVisart-master/TvsL_rooted/S09.graphml
Normal file
@ -0,0 +1,381 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
|
||||
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
|
||||
<!-- Created by igraph -->
|
||||
<key id="v_name" for="node" attr.name="name" attr.type="string"/>
|
||||
<key id="v_entrez" for="node" attr.name="entrez" attr.type="string"/>
|
||||
<key id="v_ensembl" for="node" attr.name="ensembl" attr.type="string"/>
|
||||
<key id="v_symbol" for="node" attr.name="symbol" attr.type="string"/>
|
||||
<key id="v_id" for="node" attr.name="id" attr.type="string"/>
|
||||
<key id="v_deregnet_score" for="node" attr.name="deregnet_score" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T1__S02_liver_T1" for="node" attr.name="S02_tumor_T1__S02_liver_T1" attr.type="double"/>
|
||||
<key id="v_S02_tumor_T2__S02_tumor_T1" for="node" attr.name="S02_tumor_T2__S02_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T1__S05_liver_T1" for="node" attr.name="S05_tumor_T1__S05_liver_T1" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_liver_T2" for="node" attr.name="S05_tumor_T2__S05_liver_T2" attr.type="double"/>
|
||||
<key id="v_S05_tumor_T2__S05_tumor_T1" for="node" attr.name="S05_tumor_T2__S05_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T1__S06_liver_T1" for="node" attr.name="S06_tumor_T1__S06_liver_T1" attr.type="double"/>
|
||||
<key id="v_S06_tumor_T2__S06_tumor_T1" for="node" attr.name="S06_tumor_T2__S06_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_liver_T2" for="node" attr.name="S07_tumor_T2__S07_liver_T2" attr.type="double"/>
|
||||
<key id="v_S07_tumor_T2__S07_tumor_T1" for="node" attr.name="S07_tumor_T2__S07_tumor_T1" attr.type="double"/>
|
||||
<key id="v_S09_tumor_T1__S09_liver_T1" for="node" attr.name="S09_tumor_T1__S09_liver_T1" attr.type="double"/>
|
||||
<key id="v_S11_tumor_T2__S11_tumor_T1" for="node" attr.name="S11_tumor_T2__S11_tumor_T1" attr.type="double"/>
|
||||
<key id="e_interaction" for="edge" attr.name="interaction" attr.type="string"/>
|
||||
<graph id="G" edgedefault="directed">
|
||||
<node id="n0">
|
||||
<data key="v_name">149233</data>
|
||||
<data key="v_entrez">149233</data>
|
||||
<data key="v_ensembl">ENSG00000162594</data>
|
||||
<data key="v_symbol">IL23R</data>
|
||||
<data key="v_id">n20</data>
|
||||
<data key="v_deregnet_score">2.09648876373894</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-0.808327655436456</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">1.21012608248011</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.0648747396487099</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.398778603268964</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">0.598633708237038</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-1.4972301871336</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.75788705287593</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.47136291334481</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.03998091017272</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.09648876373894</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.457787720406716</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="v_name">1233</data>
|
||||
<data key="v_entrez">1233</data>
|
||||
<data key="v_ensembl">ENSG00000183813</data>
|
||||
<data key="v_symbol">CCR4</data>
|
||||
<data key="v_id">n21</data>
|
||||
<data key="v_deregnet_score">3.21096106236531</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-0.541029383708159</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.702218444300005</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.623599873281531</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">0.925630007983067</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.470491165807465</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.322597160234361</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.576228596795394</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-1.10150173398324</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.51317770193379</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.21096106236531</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.682462705692934</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="v_name">3977</data>
|
||||
<data key="v_entrez">3977</data>
|
||||
<data key="v_ensembl">ENSG00000113594</data>
|
||||
<data key="v_symbol">LIFR</data>
|
||||
<data key="v_id">n512</data>
|
||||
<data key="v_deregnet_score">2.09648876373894</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.77727398490453</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.329698805535045</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-2.08143673113049</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.752930104718481</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-2.23392552488066</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.82710886183851</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.106168270654973</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.325213732517111</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.09648876373894</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.148581679883231</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="v_name">468</data>
|
||||
<data key="v_entrez">468</data>
|
||||
<data key="v_ensembl">ENSG00000128272</data>
|
||||
<data key="v_symbol">ATF4</data>
|
||||
<data key="v_id">n1266</data>
|
||||
<data key="v_deregnet_score">-2.99036351570306</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.106689501142342</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.340443198378158</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.317762561927282</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.460846906351847</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.466715489126758</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.365995399490692</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-3.26937672024955</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.27276032605497</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.145066042584698</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-2.99036351570306</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.266223768990521</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="v_name">30009</data>
|
||||
<data key="v_entrez">30009</data>
|
||||
<data key="v_ensembl">ENSG00000073861</data>
|
||||
<data key="v_symbol">TBX21</data>
|
||||
<data key="v_id">n1691</data>
|
||||
<data key="v_deregnet_score">3.05838202435757</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.60462277625249</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.652877790147561</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.612668511474249</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.882120297904894</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.253942610572907</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.683425418110838</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">0.0107460563522446</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.474767805129534</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.66538532047683</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.05838202435757</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.0374671569208339</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="v_name">836</data>
|
||||
<data key="v_entrez">836</data>
|
||||
<data key="v_ensembl">ENSG00000164305</data>
|
||||
<data key="v_symbol">CASP3</data>
|
||||
<data key="v_id">n1806</data>
|
||||
<data key="v_deregnet_score">2.09648876373894</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">2.62935315415718</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.938631838823593</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.106593909943653</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.313062228928768</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">0.301941757695764</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.997070864683907</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">0.365664925599101</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.210956924660535</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.477434174891409</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.09648876373894</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.514130250679554</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="v_name">108</data>
|
||||
<data key="v_entrez">108</data>
|
||||
<data key="v_ensembl">ENSG00000078295</data>
|
||||
<data key="v_symbol">ADCY2</data>
|
||||
<data key="v_id">n1952</data>
|
||||
<data key="v_deregnet_score">2.64843605572591</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-0.253764462582541</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">8.53438178864342</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">3.47090537239461</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-4.88347854140604</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.641070762939956</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.02131168718461</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">1.72949641808977</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">1.72866970443853</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.64843605572591</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.96924376828345</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="v_name">5291</data>
|
||||
<data key="v_entrez">5291</data>
|
||||
<data key="v_ensembl">ENSG00000051382</data>
|
||||
<data key="v_symbol">PIK3CB</data>
|
||||
<data key="v_id">n2768</data>
|
||||
<data key="v_deregnet_score">-1.28191506947926</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.85362342953048</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">1.95193383768154</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.350048389662947</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.304320462133023</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.530332029356001</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.274168461110877</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.12308739343561</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.6998264312365</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.112641520811398</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-1.28191506947926</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.894437526961347</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="v_name">4352</data>
|
||||
<data key="v_entrez">4352</data>
|
||||
<data key="v_ensembl">ENSG00000117400</data>
|
||||
<data key="v_symbol">MPL</data>
|
||||
<data key="v_id">n2784</data>
|
||||
<data key="v_deregnet_score">3.35843447594136</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.087283133906727</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-1.04689387909012</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.818378002352936</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">0.292493665993647</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">0.424199284044815</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.756401891099247</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.730487038875556</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.427065167164111</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.799618917865112</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.35843447594136</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.391597323380141</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="v_name">6708</data>
|
||||
<data key="v_entrez">6708</data>
|
||||
<data key="v_ensembl">ENSG00000163554</data>
|
||||
<data key="v_symbol">SPTA1</data>
|
||||
<data key="v_id">n3012</data>
|
||||
<data key="v_deregnet_score">3.7630374552969</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.92613462913338</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">1.0018084993743</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">1.72637303777985</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">4.6535834001283</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">3.50174074767193</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">1.3796879077371</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-1.27255496816928</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.23043922106962</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.190992939003444</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.7630374552969</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.47237543722207</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="v_name">3458</data>
|
||||
<data key="v_entrez">3458</data>
|
||||
<data key="v_ensembl">ENSG00000111537</data>
|
||||
<data key="v_symbol">IFNG</data>
|
||||
<data key="v_id">n3842</data>
|
||||
<data key="v_deregnet_score">2.86125510577117</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-0.976357654733464</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.169855860538845</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.0960465035697204</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.758891165986176</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.541752602132041</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">-0.0446818160946542</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">0.32873816811121</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.474115870122456</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.148312284111318</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">2.86125510577117</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.148581679883231</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="v_name">207</data>
|
||||
<data key="v_entrez">207</data>
|
||||
<data key="v_ensembl">ENSG00000142208</data>
|
||||
<data key="v_symbol">AKT1</data>
|
||||
<data key="v_id">n4783</data>
|
||||
<data key="v_deregnet_score">1.62493273137348</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-1.64968668297706</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.756112038707824</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">-0.173562576232984</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">0.386325964358277</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">0.186115073995341</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.592616645954176</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.148284677010872</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.562684334631994</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-1.03886542971626</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">1.62493273137348</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-1.80121222758495</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="v_name">3674</data>
|
||||
<data key="v_entrez">3674</data>
|
||||
<data key="v_ensembl">ENSG00000005961</data>
|
||||
<data key="v_symbol">ITGA2B</data>
|
||||
<data key="v_id">n5029</data>
|
||||
<data key="v_deregnet_score">3.21096106236531</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-3.01524715223497</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">1.55371353186203</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">0.0224228138865539</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">-0.60037058788754</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-0.943260751867577</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.521085869249172</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-2.47223858559785</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.242457674420383</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.595297723031685</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.21096106236531</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-0.414282415030633</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="v_name">5506</data>
|
||||
<data key="v_entrez">5506</data>
|
||||
<data key="v_ensembl">ENSG00000154415</data>
|
||||
<data key="v_symbol">PPP1R3A</data>
|
||||
<data key="v_id">n5193</data>
|
||||
<data key="v_deregnet_score">3.21096106236531</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">0.658701759441077</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">-0.399294043902002</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">10.2688948854879</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">3.84685212454644</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">-5.83866422466276</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.661205852413321</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">1.41695759209879</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">0.154872208173425</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">0.154045494522191</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">3.21096106236531</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">-3.69555981166179</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="v_name">3576</data>
|
||||
<data key="v_entrez">3576</data>
|
||||
<data key="v_ensembl">ENSG00000169429</data>
|
||||
<data key="v_symbol">CXCL8</data>
|
||||
<data key="v_id">n5368</data>
|
||||
<data key="v_deregnet_score">-1.76445861017272</data>
|
||||
<data key="v_S02_tumor_T1__S02_liver_T1">-3.58302126289549</data>
|
||||
<data key="v_S02_tumor_T2__S02_tumor_T1">0.624141351558466</data>
|
||||
<data key="v_S05_tumor_T1__S05_liver_T1">2.22206482379224</data>
|
||||
<data key="v_S05_tumor_T2__S05_liver_T2">4.40552620265477</data>
|
||||
<data key="v_S05_tumor_T2__S05_tumor_T1">1.34461448831965</data>
|
||||
<data key="v_S06_tumor_T1__S06_liver_T1">0.821411188868186</data>
|
||||
<data key="v_S06_tumor_T2__S06_tumor_T1">-0.931128194940757</data>
|
||||
<data key="v_S07_tumor_T2__S07_liver_T2">-0.655546297345688</data>
|
||||
<data key="v_S07_tumor_T2__S07_tumor_T1">-0.325213732517111</data>
|
||||
<data key="v_S09_tumor_T1__S09_liver_T1">-1.76445861017272</data>
|
||||
<data key="v_S11_tumor_T2__S11_tumor_T1">0.967584072590853</data>
|
||||
</node>
|
||||
<edge source="n2" target="n7">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n3">
|
||||
<data key="e_interaction">state change</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n14">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n4" target="n10">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n9">
|
||||
<data key="e_interaction">inhibition</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n5">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n5">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n11">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n11">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n11">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n11">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n11">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n12">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n7" target="n12">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n10" target="n0">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n10" target="n2">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n10" target="n8">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n3">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n3">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n6">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n11" target="n13">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n1">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n1">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
</graph>
|
||||
</graphml>
|
@ -0,0 +1,82 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||
<title>BioGraphVisart</title>
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body id="everything">
|
||||
<script type="text/javascript">
|
||||
if (window.File && window.FileReader && window.FileList && window.Blob) {
|
||||
// Great success! All the File APIs are supported.
|
||||
} else {
|
||||
alert('The File APIs are not fully supported in this browser.');
|
||||
}
|
||||
</script>
|
||||
<div class="content">
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about" class="page-link">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="entry-content">
|
||||
<article class="post-content">
|
||||
|
||||
<!-- <p style="width: 25%;margin-top:40px; float: left">
|
||||
<a href="#GeneralDoc" style="color:black; font-weight: 600; font-size: 18px;">General</a><br>
|
||||
<a href="#NodesDoc" class="tab"style="color:black; font-weight: 500; font-size: 16px;">Comparison</a><br>
|
||||
</p> -->
|
||||
<!-- <p style="width: 50%; margin-left:25%; font-size:30px;margin-top:40px" id="GeneralDoc">General</p> -->
|
||||
<p style="width: 50%; margin-left:25%; margin-top:40px">
|
||||
|
||||
<a href="/BioGraphVisart/BioGraphVisart"><strong>BioGraphVisart</strong></a> is a web-based tool to interactively visualize networks, especially with biological background. <br><br>
|
||||
It is written in javascript based on <a href="http://js.cytoscape.org">Cytoscape.js</a>.
|
||||
The input is a graphml-file (<a href="https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/example.graphml">graphml-example</a>) or sif-file (<a href="https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/example.sif">sif-example</a>). <br>
|
||||
In addition to nodes and edges (genes and interaction types, respectively), GraphML can store information such as expression values as node attributes (more on <a href="http://graphml.graphdrawing.org">GraphML Format</a>).
|
||||
SIF cannot store additional information (more on <a href="http://www.cbmc.it/fastcent/doc/SifFormat.htm">SIF Format</a>).<br><br>
|
||||
Fig. 1 shows the network graph of the <a href="https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/example.graphml">graphml-example</a>. <a href="example"><strong>Here</strong></a> the example is displayed in BioGraphVisart. <br><br>
|
||||
|
||||
A more detailed description is given in the <a href="documentation">Documentation</a>.<br><br>
|
||||
<img class="center" src="templates/overview_annotated.png"width="80%" height="100%" style="margin-top: 10px;" /><br>
|
||||
<small>Figure 1. The red and blue numbers indicate static sections and interactive sections modifying the representation of network graph, respectively: (1) upload, (2) selection of node color attribute (number, Boolean), (3) node color legend, (4) edge style legend (According to KEGG), (5) collapse multiple edges between two nodes, (6) mouse over node displays name and value, mouse over edge displays interaction type(s), (7) layout selection, (8) highlight boolean attribute by node shape, (9) node shape legend, (10) search node by its label, (11) withdrawal of node deletion, (12) layout reset for user can zoom in and out, relocate individual nodes or entire graph, and (13) highlight KEGG pathways that appear most for displayed genes.</small>
|
||||
</p>
|
||||
<hr style="width: 50%; margin-left:25%;">
|
||||
<p style="width: 50%; margin-left:25%; font-size:30px;" id="NodesDoc">Comparison</p>
|
||||
<p style="width: 50%; margin-left:25%">
|
||||
For direct <a href="heatmap"><strong>Comparison of network graphs</strong></a> the node overlap can be calculated and be displayed in a heatmap. Also a merged network graph of two selected network graphs can be generated.<br><br>
|
||||
The input are multiple graphml-files.
|
||||
<br><br>
|
||||
<a href="exampleComparison"><strong>Here</strong></a> an example with four network graphs is displayed in BioGraphVisart.
|
||||
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<footer id="footer">
|
||||
<div class="containerMerged">
|
||||
<a href="imprint">Imprint</a><br>
|
||||
<a href="datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
81
resources/app/app/BioGraphVisart-master/about.html
Normal file
@ -0,0 +1,81 @@
|
||||
<!doctype html>
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>About</title>
|
||||
<meta name="description" content="">
|
||||
|
||||
<!--<link rel="stylesheet" href="http://www.imtools.org/css/main.css" |="" prepend:="" site.baseurl="" }}"="">-->
|
||||
<link rel="canonical" href="http://www.imtools.org/about/">
|
||||
<link rel="alternate" type="application/html" title="BioGraphVisart" href="https://mirjamfi.github.io/BioGraphVisart/">
|
||||
<script async="" src="//www.google-analytics.com/analytics.js"></script><script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', 'UA-63281686-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-content">
|
||||
<div class="wrapper">
|
||||
<div class="post">
|
||||
|
||||
<header class="post-header">
|
||||
<h1 class="post-title">About</h1>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<article class="post-content">
|
||||
|
||||
<p style="margin-top:40px"></p>
|
||||
<p style="width: 50%; margin-left:25%"><strong>BioGraphVisart</strong> is a web-based tool to interactively visualize networks, especially with biological background. It is written in javascript based on <a href="http://js.cytoscape.org">Cytoscape.js</a>. <br> BioGraphVisart can currently read generic networks from various sources through a standardized file format (graphML), which can be generated by many other tools. <br> It offers different automated layout options for the graph and mapping of generic attributes (e.g., expression levels) onto nodes and edges. Node and edge styles for different interaction types according to KEGG, the generation of legends for edge styles and the node coloring by easy selection of an attribute by the user, and grouping with respect to predefined pathways (e.g., from KEGG) are additional features currently implemented. BioGraphVisart can be easily integrated into other web applications by importing its main .html-file into the other application.
|
||||
<br> We simplified the process of analysis and visualization with an interactive user-friendly interface for faster data interpretation. <br>
|
||||
|
||||
</p>
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="containerMerged">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body></html>
|
78
resources/app/app/BioGraphVisart-master/contact.html
Normal file
@ -0,0 +1,78 @@
|
||||
<!doctype html>
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Contact</title>
|
||||
<meta name="description" content="">
|
||||
|
||||
<!--<link rel="stylesheet" href="http://www.imtools.org/css/main.css" |="" prepend:="" site.baseurl="" }}"="">-->
|
||||
<link rel="canonical" href="http://www.imtools.org/about/">
|
||||
<link rel="alternate" type="application/html" title="BioGraphVisart" href="https://mirjamfi.github.io/BioGraphVisart/">
|
||||
<script async="" src="//www.google-analytics.com/analytics.js"></script><script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
ga('create', 'UA-63281686-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<header class="site-header">
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="page-content">
|
||||
<div class="wrapper">
|
||||
<div class="post">
|
||||
|
||||
<header class="post-header">
|
||||
<h1 class="post-title">Contact</h1>
|
||||
</header>
|
||||
<div class="entry-content">
|
||||
<article class="post-content">
|
||||
|
||||
<p style="margin-top:40px"></p>
|
||||
<p style="width: 50%; margin-left:25%"><strong>BioGraphVisart</strong> was developed at <a href="https://kohlbacherlab.org/">Applied Bioinformatics Group, Universität Tübingen</a>. It is published under the <a href="https://opensource.org/licenses/MIT">MIT license</a>. <br><br>
|
||||
|
||||
For questions, comments, problems regarding <strong>BioGraphVisart</strong>, please contact <a href="mailto:figasch@informatik.uni-tuebingen.de">Mirjam Figaschewski</a>.</p>
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="containerMerged">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body></html>
|
@ -0,0 +1,131 @@
|
||||
<!doctype html>
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Datenschutzerklärung</title>
|
||||
<meta name="description" content="">
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
</div>
|
||||
<header class="site-header">
|
||||
<h1 class="site-title">Datenschutzerklärung</h1>
|
||||
</header>
|
||||
<div class="entry-content" itemprop="articleBody">
|
||||
<p>Sehr geehrte Webseitenbesucher,</p>
|
||||
<p>Vielen Dank für Ihren Besuch unserer Webseiten! Wir schätzen Ihr Interesse am BALL Projekt. Mittels dieser Datenschutzerklärung möchten wir Sie im Folgenden über die Datenverarbeitung Ihrer personenbezogenen Daten (im Folgenden „Daten“) informieren, die aus dem Besuch oder der Nutzung von Funktionen unserer Webseiten resultieren. Wir bitten Sie, diese Datenschutzerklärung sorgfältig durchzulesen, bevor Sie unsere Webseiten weiter besuchen oder die auf den Webseiten enthaltenen Funktionen nutzen. Mit dem Besuch unserer Webseiten stimmen Sie den im Folgenden beschriebenen Verarbeitungen und Nutzungen Ihrer Daten zu. Unsere Datenschutzerklärung ist nur für unsere Webseiten gültig und nicht für die Webseiten Dritter.</p>
|
||||
<h4>Datenschutz und Datensicherheit</h4>
|
||||
<p>Der Schutz Ihrer Privatsphäre ist uns ein wichtiges Anliegen. Zum Schutz Ihrer Daten trifft das BALL Projekt eine Vielzahl an technischen und organisatorischen Maßnahmen, um eine unbefugte Kenntnisnahme und Weitergabe, Manipulation, Verlust und unbefugte Löschung wirksam verhindern zu können. Die von uns ergriffenen Maßnahmen unterliegen dabei der stetigen Aktualisierung. Wir orientieren uns dabei an den gesetzlichen Vorgaben, Best-Practice-Ansätzen sowie technischen Entwicklungen. Im Folgenden unterrichten wir Sie über Art, Umfang und Zweck der Erhebung, Verarbeitung und Nutzung Ihrer Daten in unserem BALL Projekt, sofern dies aus dem Besuch oder der Nutzung der Funktionen unserer Webseiten resultiert.</p>
|
||||
<h4>Verantwortlicher für diese Datenschutzerklärung und diesen Onlineauftritt</h4>
|
||||
<p>Prof. Dr. Oliver Kohlbacher<br />
|
||||
Sand 14<br />
|
||||
72076 Tübingen</p>
|
||||
<h4>Ansprechpartner für den Datenschutz beim Verantwortlichen</h4>
|
||||
<p>Prof. Dr. Oliver Kohlbacher<br />
|
||||
Sand 14<br />
|
||||
72076 Tübingen</p>
|
||||
<h4>Umfang der Datenerhebung, -verarbeitung und -nutzung</h4>
|
||||
<p>Grundsätzlich verfolgen wir das Ziel, die Erhebung, Verarbeitung und Nutzung von personenbezogenen Daten während Ihres Besuchs unserer Webseiten, auf das erforderliche Mindestmaß zu beschränken. Auch erheben wir i.d.R. nur diejenigen Daten von Ihnen, die wir zwingend zur Zweckerfüllung benötigen. Ebenfalls erheben wir wissentlich keine personenbezogenen Daten von Minderjährigen (= Personen unter 18 Jahren). In Fällen, in denen wir feststellen, dass uns personenbezogene Daten durch Minderjährige zur Verfügung gestellt wurden, löschen wir diese Daten umgehend. Erziehungsberechtigten empfehlen wir, auf die Internet-Aktivitäten der in ihrer Obhut befindlichen Minderjährigen zu achten.</p>
|
||||
<h4>Personenbezogene Daten</h4>
|
||||
<p>Personenbezogene Daten sind gemäß Art. 4 DSGVO alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person beziehen. Dies sind z.B. Angaben wie der Vor- und Nachname, die Anschrift, die E-Mail-Adresse, die Telefon- oder Mobilfunknummer, aber i.d.R. auch die IP-Adresse.</p>
|
||||
<h4>Zweck der Datenverarbeitungen</h4>
|
||||
<p>Sofern Sie uns Ihre Daten freiwillig zu den im Folgenden aufgeführten Zwecken mitteilen, verarbeiten und nutzen wir diese Daten ausschließlich für die Zwecke, für die Sie uns Ihre Daten zukommen lassen haben. Hierzu zählen derzeit folgende Zwecke:</p>
|
||||
<h4>Portale und Plattformen zum Datenaustausch</h4>
|
||||
<p>Sofern Sie uns Ihre Daten über unsere Webseiten erreichbare Portale oder Plattformen zukommen lassen bzw. zum Abruf bereitstellen, verarbeiten und nutzen wir die von Ihnen zur Verfügung gestellten Daten ausschließlich zu den Zwecken, zu denen Sie uns die Daten zukommen lassen haben. Wir möchten Sie darauf hinweisen, dass, sofern die Portale oder Plattformen durch externe Webseitenanbieter betrieben werden, möglicher Weise andere Datenschutzregeln gelten, als auf unseren Webseiten. Bitte informieren Sie sich vorab hierzu und lesen Sie auch den Punkt „Verlinkte Webseiten“ in dieser Datenschutzerklärung.</p>
|
||||
<h4>Verbesserung unseres Onlineauftritts</h4>
|
||||
<p>Zur Verbesserung der Gestaltung und Inhalte unserer Webseiten, der Funktionen unseres Onlineauftritts und der Benutzerfreundlichkeit unserer Webseiten erheben, verarbeiten und nutzen wir folgende Daten:</p>
|
||||
<ul>
|
||||
<li>Datum und Uhrzeit des Webseitenbesuchs</li>
|
||||
<li>die Internetseite, von der aus Sie unsere Webseiten aus aufgerufen haben</li>
|
||||
<li>das durch Sie eingesetzte Betriebssystem</li>
|
||||
<li>den durch Sie eingesetzten Browser</li>
|
||||
<li>die IP-Adresse, mit der Sie unsere Webseiten besuchen</li>
|
||||
<li>die auf Ihrem Gerät verwendeten Spracheinstellungen</li>
|
||||
<li>die von Ihnen aufgerufenen Seiten unseres Onlineauftritts oder die von unseren Webseiten heruntergeladenen Dateien</li>
|
||||
<li>die während Ihres Besuchs unserer Webseiten übertragene Datenmenge</li>
|
||||
<li>eine Mitteilung, ob der Aufruf unserer Webseiten erfolgreich war</li>
|
||||
</ul>
|
||||
<p>Wir erheben, verarbeiten und nutzen diese Daten ausschließlich zu den zuvor benannten statistischen und nicht kommerziellen Zwecken in anonymisierter oder pseudonymisierter Form, sodass ein Rückschluss auf Ihre Person möglichst verhindert wird.</p>
|
||||
<h4>Cookies</h4>
|
||||
<p>Auf unseren Webseiten setzen wir „Cookies“ ein. Cookies sind Textdateien, die auf dem Speicher des Gerätes, von dem aus Sie unsere Webseiten aufgerufen haben, platziert werden. Wir setzen sowohl dauerhafte Cookies als auch temporäre Cookies (sog. Session-Cookies) ein. Dauerhafte Cookies können einige Sekunden bis mehrere Jahre lang auf Ihrem Gerät gespeichert werden. Temporäre Cookies werden automatisch gelöscht, sobald Sie Ihren Browser schließen bzw. die Session beenden.</p>
|
||||
<p>Cookies helfen uns</p>
|
||||
<ul>
|
||||
<li>bei der Identifizierung der Häufigkeit der Besuche der Webseitenbereiche</li>
|
||||
<li>Präferenzen unserer Webseitenbesucher zu erkennen und die Webseiten entsprechend optimal gestalten zu können</li>
|
||||
<li>die Navigation auf unseren Webseiten zu erleichtern und damit die Benutzerfreundlichkeit unserer Webseiten zu steigern</li>
|
||||
<li>Informationen über einen bestimmten Zeitraum vorzuhalten und den Rechner der Webseitenbesucher zu identifizieren, sobald sie wieder auf unsere Webseiten zurückkehren. Dadurch ist es z.B. möglich, die zuvor von Ihnen gewählten Einstellungen zu verwenden, so dass Sie die Einstellungen nicht erneut vornehmen müssen (z.B. Spracheinstellungen, Log-In-Informationen).</li>
|
||||
</ul>
|
||||
<p>Sofern Sie nicht möchten, dass Cookies auf Ihrem Gerät gespeichert werden, können Sie Ihren Browser so einstellen, dass er Sie über die Platzierung von Cookies benachrichtigt oder diese nicht akzeptiert. Sie können auch entscheiden, ob sie nur einige wenige oder alle Kategorien von Cookies annehmen bzw. blockieren möchten. Weitere Informationen zum Umgang mit Cookies finden Sie in der Onlinehilfe Ihres verwendeten Browsers. Sofern Sie durch uns eingesetzte Cookies blockieren, möchten wir Sie darüber informieren, dass Sie möglicherweise einzelne Funktionen unserer Webseite nicht oder nur eingeschränkt verwenden können.</p>
|
||||
<h4>Verlinkte Webseiten</h4>
|
||||
<p>Unsere Webseiten verfügen über Verlinkungen zu externen Webseiten. Auf die Inhalte dieser Webseiten haben wir keinen Einfluss und übernehmen daher keine Verantwortung oder Haftung für die Zulässigkeit, Richtigkeit, Darstellung und Vollständigkeit der dort veröffentlichten bzw. angezeigten oder abrufbaren Inhalte. Wir informieren Sie hiermit darüber, dass beim Aufruf dieser externen Webseiten möglicherweise Ihre IP-Adresse durch den jeweils zuständigen Webseitenbetreiber protokolliert wird. Wenn Sie unsere Webseiten verlassen, empfehlen wir, die Datenschutzerklärung der externen Webseitenbetreiber zu prüfen, bevor Sie die Webseiten aufrufen oder die dortigen Funktionen nutzen.</p>
|
||||
<h4>Übermittlung oder Weitergabe Ihrer Daten</h4>
|
||||
<p>Eine Übermittlung an Dritte bzw. eine Weitergabe an unsere Geschäftspartner Ihrer durch uns erhobenen, verarbeiteten oder genutzten Daten erfolgt grundsätzlich nicht ohne Ihr ausdrückliches Einverständnis, es sei denn, dass dies:</p>
|
||||
<ul>
|
||||
<li>zur Abwicklung unserer vertraglich zugesicherten Leistungen erforderlich ist.</li>
|
||||
<li>zur Durchsetzung unserer Forderungen notwendig wird.</li>
|
||||
<li>durch einen gesetzlichen Erlaubnistatbestand legimitiert wird oder wir gesetzlich zur Weitergabe der Daten verpflichtet sind.</li>
|
||||
<li>für Zwecke der Strafverfolgung, zur Gefahrenabwehr oder zum Schutz unserer Webseiten.</li>
|
||||
<li>zur Durchsetzung der Rechte Dritter oder im Rahmen der gesetzlichen Auskunftspflichten bzw. einer gerichtlichen Anordnung zur Erteilung der Auskunft erforderlich ist.</li>
|
||||
</ul>
|
||||
<h4>Datenübermittlung ins Ausland</h4>
|
||||
<p>Eine Übermittlung Ihrer Daten an Stellen in Länder außerhalb der Europäischen Union ist aufgrund unserer Tätigkeiten nicht erforderlich und findet daher derzeit nicht statt.</p>
|
||||
<h4>Auskunftsrecht</h4>
|
||||
<p>Webseitenbesucher unseres Onlineauftritts haben gemäß Art. 15 DSGVO das Recht, auf Anfrage, jederzeit und kostenfrei Auskunft über Ihre im BALL Projekt zu Ihrer Person verarbeiteten Daten zu erhalten. Der Umfang der Auskunft ergibt sich aus Art. 15 DSGVO. Ihr Auskunftsbegehren richten Sie bitte via Mail oder per Post an den oben genannten Ansprechpartner für Datenschutz.</p>
|
||||
<h4>Recht auf Berichtigung Ihrer Daten</h4>
|
||||
<p>Sie haben gemäß Art. 16 DSGVO das Recht, bei Vorliegen unrichtiger oder unvollständiger Daten über Sie, die Berichtigung oder Vervollständigung dieser zu verlangen. Wir werden entsprechende Anfragen prüfen und in berechtigten Fällen die erforderlichen Maßnahmen ergreifen.</p>
|
||||
<h4>Recht auf Löschung und Sperrung Ihrer Daten</h4>
|
||||
<p>Sie haben gemäß Art. 17 DSGVO das Recht auf Löschung Ihrer Daten.</p>
|
||||
<p>Die von uns über Sie gespeicherten Daten werden datenschutzkonform vernichtet bzw. gelöscht, wenn</p>
|
||||
<ul>
|
||||
<li>die gesetzlichen Aufbewahrungsfristen abgelaufen sind, oder</li>
|
||||
<li>die Erhebung oder Verarbeitung unrechtmäßig ist bzw. war, oder</li>
|
||||
<li>die Daten zur Erfüllung der Zwecke, zu denen sie erhoben wurden, nicht mehr erforderlich sind oder</li>
|
||||
<li>sofern Sie Ihre Einwilligung zur Verarbeitung und Nutzung widerrufen haben</li>
|
||||
<li>sofern Sie gemäß Art. 21 DSGVO Widerspruch gegen die Verarbeitung Ihrer Daten einlegen und keine vorrangigen berechtigten Gründe für die Verarbeitung vorliegen</li>
|
||||
</ul>
|
||||
<p>Wir informieren Sie darüber, dass eine vollständige Löschung erst nach Ablauf der entsprechenden Fristen der steuer- und handelsrechtlichen Vorschriften erfolgt. Bis zum Ablauf dieser Fristen und bis zur endgültigen Löschung werden Ihre Daten entsprechend gesperrt und von uns nicht weiterverarbeitet.</p>
|
||||
<h4>Recht auf Einschränkung der Datenverarbeitung</h4>
|
||||
<p>Sie haben gemäß Art. 18 DSGVO das Recht, von uns die Einschränkung der Verarbeitung Ihrer Daten in den in Art. 18 DSGVO festgelegten Fällen und Umfängen zu verlangen. Wir werden entsprechende Anfragen prüfen und in berechtigten Fällen die erforderlichen Maßnahmen ergreifen.</p>
|
||||
<h4>Recht auf Datenübertragbarkeit</h4>
|
||||
<p>Sie haben gemäß Art. 20 DSGVO das Recht, Ihre von uns verarbeiteten Daten in einem strukturierten, gängigen und maschinenlesbaren Format zu erhalten. Auf Ihren ausdrücklichen Wunsch hin, werden wir Ihre Daten, an die von Ihnen eindeutig benannten Stellen übermitteln, soweit wir dies technisch leisten können und dies datenschutzrechtlich zulässig ist.</p>
|
||||
<h4>Widerrufs- und Widerspruchsrecht</h4>
|
||||
<p>Sie haben das Recht, jederzeit und ohne Angabe von Gründen kostenfrei die uns von Ihnen erteilte Einwilligung zur Erhebung, Verarbeitung und Nutzung Ihrer Daten für die Zukunft zu widerrufen bzw. gemäß Art. 21 DSGVO Widerspruch gegen die Verarbeitung Ihrer Daten einzulegen. Ihren Widerruf Ihrer Einwilligung bzw. Widerspruch richten Sie bitte via Mail oder per Post an den oben genannten Ansprechpartner für Datenschutz.</p>
|
||||
<h4>Recht auf Beschwerde bei einer Aufsichtsbehörde</h4>
|
||||
<p>Sie haben gemäß Art. 14 i.V.m. Art. 77 DSGVO das Recht auf Beschwerde bei einer Aufsichtsbehörde für den Datenschutz, sofern Sie der Ansicht sind, dass die Verarbeitung Ihrer Daten gegen die DSGVO verstößt. Die zuständige Aufsichtsbehörde ist diejenige, in dem unser Unternehmen seinen Hauptsitz hat.</p>
|
||||
<h4>Recht auf wirksamen gerichtlichen Rechtsbehelf gegen den Verantwortlichen</h4>
|
||||
<p>Sie haben gemäß Art. 79 DSGVO das Recht auf einen wirksamen gerichtlichen Rechtsbehelf, wenn Sie der Ansicht sind, dass Ihre zuvor aufgeführten Rechte infolge einer nicht im Einklang mit den Anforderungen der DSGVO stehenden Verarbeitung Ihrer Daten durch uns oder einen von uns beauftragten Auftragsverarbeiter verletzt wurden.</p>
|
||||
<h4>Haftung und Recht auf Schadenersatz</h4>
|
||||
<p>Sie haben gemäß Art. 82 DSGVO das Anspruch auf Schadenersatz gegen uns oder die durch uns beauftragte Auftragsverarbeiter, sofern Ihnen wegen eines Verstoßes gegen die DSGVO ein materieller oder immaterieller Schaden entstanden ist.</p>
|
||||
<h4>Änderung der Datenschutzerklärung</h4>
|
||||
<p>Diese Datenschutzerklärung wird bei neuen gesetzlichen Vorgaben oder wesentlichen Änderungen des Funktionsumfangs unserer Webseiten mit Wirkung für die Zukunft aktualisiert. Wir empfehlen Ihnen daher, unsere Datenschutzerklärung in regelmäßigen zeitlichen Abständen durchzulesen.</p>
|
||||
<p>Letzte Änderung: 22.05.2018</p>
|
||||
|
||||
|
||||
</div>
|
||||
<footer>
|
||||
<div class="container">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
</body></html>
|
2382
resources/app/app/BioGraphVisart-master/documentation.html
Normal file
245
resources/app/app/BioGraphVisart-master/example.graphml
Normal file
@ -0,0 +1,245 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
|
||||
http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd">
|
||||
<!-- Created by igraph -->
|
||||
<key id="v_name" for="node" attr.name="name" attr.type="string"/>
|
||||
<key id="v_entrez" for="node" attr.name="entrez" attr.type="string"/>
|
||||
<key id="v_ensembl" for="node" attr.name="ensembl" attr.type="string"/>
|
||||
<key id="v_symbol" for="node" attr.name="symbol" attr.type="string"/>
|
||||
<key id="v_id" for="node" attr.name="id" attr.type="string"/>
|
||||
<key id="v_log2foldchange" for="node" attr.name="log2foldchange" attr.type="double"/>
|
||||
<key id="v_receptor" for="node" attr.name="receptor" attr.type="boolean"/>
|
||||
<key id="e_interaction" for="edge" attr.name="interaction" attr.type="string"/>
|
||||
<graph id="G" edgedefault="directed">
|
||||
<node id="n0">
|
||||
<data key="v_name">7366</data>
|
||||
<data key="v_entrez">7366</data>
|
||||
<data key="v_ensembl">ENSG00000196620</data>
|
||||
<data key="v_symbol">UGT2B15</data>
|
||||
<data key="v_id">n40</data>
|
||||
<data key="v_log2foldchange">3.31737</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n1">
|
||||
<data key="v_name">1571</data>
|
||||
<data key="v_entrez">1571</data>
|
||||
<data key="v_ensembl">ENSG00000130649</data>
|
||||
<data key="v_symbol">CYP2E1</data>
|
||||
<data key="v_id">n660</data>
|
||||
<data key="v_log2foldchange">2.56347</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n2">
|
||||
<data key="v_name">5594</data>
|
||||
<data key="v_entrez">5594</data>
|
||||
<data key="v_ensembl">ENSG00000100030</data>
|
||||
<data key="v_symbol">MAPK1</data>
|
||||
<data key="v_id">n938</data>
|
||||
<data key="v_log2foldchange">-0.762938</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n3">
|
||||
<data key="v_name">3265</data>
|
||||
<data key="v_entrez">3265</data>
|
||||
<data key="v_ensembl">ENSG00000174775</data>
|
||||
<data key="v_symbol">HRAS</data>
|
||||
<data key="v_id">n948</data>
|
||||
<data key="v_log2foldchange">0.789062</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n4">
|
||||
<data key="v_name">4886</data>
|
||||
<data key="v_entrez">4886</data>
|
||||
<data key="v_ensembl">ENSG00000164128</data>
|
||||
<data key="v_symbol">NPY1R</data>
|
||||
<data key="v_id">n1045</data>
|
||||
<data key="v_log2foldchange">-3.49792</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n5">
|
||||
<data key="v_name">2263</data>
|
||||
<data key="v_entrez">2263</data>
|
||||
<data key="v_ensembl">ENSG00000066468</data>
|
||||
<data key="v_symbol">FGFR2</data>
|
||||
<data key="v_id">n1057</data>
|
||||
<data key="v_log2foldchange">0.42746</data>
|
||||
<data key="v_receptor">true</data>
|
||||
</node>
|
||||
<node id="n6">
|
||||
<data key="v_name">2099</data>
|
||||
<data key="v_entrez">2099</data>
|
||||
<data key="v_ensembl">ENSG00000091831</data>
|
||||
<data key="v_symbol">ESR1</data>
|
||||
<data key="v_id">n1150</data>
|
||||
<data key="v_log2foldchange">1.57349</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n7">
|
||||
<data key="v_name">7031</data>
|
||||
<data key="v_entrez">7031</data>
|
||||
<data key="v_ensembl">ENSG00000160182</data>
|
||||
<data key="v_symbol">TFF1</data>
|
||||
<data key="v_id">n1586</data>
|
||||
<data key="v_log2foldchange">5.00941</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n8">
|
||||
<data key="v_name">5320</data>
|
||||
<data key="v_entrez">5320</data>
|
||||
<data key="v_ensembl">ENSG00000188257</data>
|
||||
<data key="v_symbol">PLA2G2A</data>
|
||||
<data key="v_id">n3113</data>
|
||||
<data key="v_log2foldchange">5.53554</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n9">
|
||||
<data key="v_name">2353</data>
|
||||
<data key="v_entrez">2353</data>
|
||||
<data key="v_ensembl">ENSG00000170345</data>
|
||||
<data key="v_symbol">FOS</data>
|
||||
<data key="v_id">n3339</data>
|
||||
<data key="v_log2foldchange">-1.9937</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n10">
|
||||
<data key="v_name">3290</data>
|
||||
<data key="v_entrez">3290</data>
|
||||
<data key="v_ensembl">ENSG00000117594</data>
|
||||
<data key="v_symbol">HSD11B1</data>
|
||||
<data key="v_id">n4009</data>
|
||||
<data key="v_log2foldchange">3.34188</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n11">
|
||||
<data key="v_name">4312</data>
|
||||
<data key="v_entrez">4312</data>
|
||||
<data key="v_ensembl">ENSG00000196611</data>
|
||||
<data key="v_symbol">MMP1</data>
|
||||
<data key="v_id">n4111</data>
|
||||
<data key="v_log2foldchange">4.16173</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n12">
|
||||
<data key="v_name">56670</data>
|
||||
<data key="v_entrez">56670</data>
|
||||
<data key="v_ensembl">ENSG00000198829</data>
|
||||
<data key="v_symbol">SUCNR1</data>
|
||||
<data key="v_id">n4138</data>
|
||||
<data key="v_log2foldchange">-6.98174</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n13">
|
||||
<data key="v_name">4852</data>
|
||||
<data key="v_entrez">4852</data>
|
||||
<data key="v_ensembl">ENSG00000122585</data>
|
||||
<data key="v_symbol">NPY</data>
|
||||
<data key="v_id">n4644</data>
|
||||
<data key="v_log2foldchange">0</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<node id="n14">
|
||||
<data key="v_name">84699</data>
|
||||
<data key="v_entrez">84699</data>
|
||||
<data key="v_ensembl">ENSG00000060566</data>
|
||||
<data key="v_symbol">CREB3L3</data>
|
||||
<data key="v_id">n5301</data>
|
||||
<data key="v_log2foldchange">4.33339</data>
|
||||
<data key="v_receptor">false</data>
|
||||
</node>
|
||||
<edge source="n1" target="n0">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n1" target="n8">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n1" target="n10">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n3">
|
||||
<data key="e_interaction">inhibition</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n3">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n6">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n6">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n8">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n9">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n9">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n9">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n9">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n14">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n14">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n2" target="n14">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n2">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n2">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n2">
|
||||
<data key="e_interaction">phosphorylation</data>
|
||||
</edge>
|
||||
<edge source="n3" target="n9">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n3">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n5" target="n3">
|
||||
<data key="e_interaction">indirect effect</data>
|
||||
</edge>
|
||||
<edge source="n6" target="n7">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n6" target="n9">
|
||||
<data key="e_interaction">binding/association</data>
|
||||
</edge>
|
||||
<edge source="n8" target="n1">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n9" target="n11">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n10" target="n0">
|
||||
<data key="e_interaction">compound</data>
|
||||
</edge>
|
||||
<edge source="n13" target="n4">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n13" target="n12">
|
||||
<data key="e_interaction">activation</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n9">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n13">
|
||||
<data key="e_interaction">expression</data>
|
||||
</edge>
|
||||
<edge source="n14" target="n14">
|
||||
<data key="e_interaction">state change</data>
|
||||
</edge>
|
||||
</graph>
|
||||
</graphml>
|
135
resources/app/app/BioGraphVisart-master/example.html
Normal file
@ -0,0 +1,135 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BioGraphVisart</title>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.js"></script>
|
||||
<script src="https://d3js.org/d3.v6.js"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.css">
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.debug.js" integrity="sha384-THVO/sM0mFD9h7dfSndI6TS0PgAGavwKvB5hAxRRvc0o9cPLohB0wb/PTA7LdUHs" crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/external/html2canvas.min.js"></script>
|
||||
<script src="https://unpkg.com/file-saver@1.3.8/FileSaver.js"></script>
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.15.1/cytoscape.min.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-qtip.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-cose-bilkent.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-canvas.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-no-overlap.js"></script>
|
||||
<script src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-svg.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-undo-redo.js"></script>
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/c78b41cc690d9e7f0f3ef68ff95fc3c7f1433e73/static/scripts/cytoscapescripts/cytoscape-expand-collapse.js"></script>
|
||||
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/external/cxtmenu.js"></script>
|
||||
|
||||
<script data-main="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize.js" type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/1ebdad7d2d5ee59906b8c89227d3f92e0288bbb5/static/scripts/node_modules/requirejs/require.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/commonfunctions.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/constants.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/download_single_graph.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/keggpathways.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/legends/interactiontypes.js"></script>
|
||||
<script type="application/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/graph.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/external/html2canvas.min.js"></script>
|
||||
<link rel="stylesheet" href="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/css/menu.css">
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/scripts/external/menu.js"></script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body id="everything">
|
||||
<script type="text/javascript">
|
||||
if (window.File && window.FileReader && window.FileList && window.Blob) {
|
||||
// Great success! All the File APIs are supported.
|
||||
} else {
|
||||
alert('The File APIs are not fully supported in this browser.');
|
||||
}
|
||||
</script>
|
||||
<div class="content">
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
<div class="topnav-right">
|
||||
<div id="downloadPart" style="visibility: hidden" class="dropdown">
|
||||
<button class="dropbtnright"><i class="fas fa-file-download fa-sm"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a onClick="downloadPDF()">PDF</a>
|
||||
<a onclick="downloadPNG()">PNG</a>
|
||||
<a onclick="downloadSVG()">SVG</a>
|
||||
<!--<a onclick="downloadJSON()">JSON</a>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="configPart">
|
||||
|
||||
</div>
|
||||
<p></p>
|
||||
|
||||
|
||||
|
||||
<div id="downloadPart" style="visibility: hidden">
|
||||
<input name="outputFile" type="text" maxlength="512" id="outputName" value="Download File name"/>
|
||||
<button class= 'butn' id="downloadPDF" onClick=downloadPDF() disabled="disabled" id="downloadPDF">.pdf</button>
|
||||
<button class= 'butn' id="downloadPNG" onclick="downloadPNG()" disabled="disabled">.png</button>
|
||||
<button class= 'butn' id="downloadSVG" onclick="downloadSVG()" disabled="disabled">.svg</button>
|
||||
<button class= 'butn' id="downloadJSON" onclick="downloadJSON()" disabled="disabled">.json</button>
|
||||
</div>
|
||||
<p></p>
|
||||
<div align="left" id="legend" style="visibility: hidden">
|
||||
<table >
|
||||
<tr>
|
||||
<td>
|
||||
<span style="font-size:15px" ><b>Interactions</b></span>
|
||||
</td>
|
||||
<td>
|
||||
<small><a href="https://www.kegg.jp/kegg/xml/docs/" target="_blank">kegg.jp</a></small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="arrows">
|
||||
</table>
|
||||
<div id="legendNodes"></div>
|
||||
</div>
|
||||
|
||||
<div class="loader" id="loader1" style="visibility: hidden"></div>
|
||||
<div align="left" id="cy"></div>
|
||||
<div align="left" id="KEGGpathsButton" style="visibility: hidden">
|
||||
<button class="butn" id="keggpathways">Show KEGG Pathways</button></p>
|
||||
<div class="loader" id="loader" style="visibility: hidden"></div>
|
||||
</div>
|
||||
<div align="left" id= "KEGGpaths" style="visibility: hidden;"></div>
|
||||
</div>
|
||||
<footer id="footer">
|
||||
<div class="containerMerged">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
<script type="text/javascript">readExample()</script>
|
||||
</body>
|
||||
|
||||
</html>
|
31
resources/app/app/BioGraphVisart-master/example.sif
Normal file
@ -0,0 +1,31 @@
|
||||
CYP2E1 compound UGT2B15
|
||||
CYP2E1 compound PLA2G2A
|
||||
CYP2E1 compound HSD11B1
|
||||
MAPK1 inhibition HRAS
|
||||
MAPK1 phosphorylation HRAS
|
||||
MAPK1 activation ESR1
|
||||
MAPK1 phosphorylation ESR1
|
||||
MAPK1 activation PLA2G2A
|
||||
MAPK1 activation FOS
|
||||
MAPK1 indirect effect FOS
|
||||
MAPK1 phosphorylation FOS
|
||||
MAPK1 expression FOS
|
||||
MAPK1 activation CREB3L3
|
||||
MAPK1 indirect effect CREB3L3
|
||||
MAPK1 phosphorylation CREB3L3
|
||||
HRAS activation MAPK1
|
||||
HRAS indirect effect MAPK1
|
||||
HRAS phosphorylation MAPK1
|
||||
HRAS indirect effect FOS
|
||||
FGFR2 activation HRAS
|
||||
FGFR2 indirect effect HRAS
|
||||
ESR1 expression TFF1
|
||||
ESR1 binding/association FOS
|
||||
PLA2G2A compound CYP2E1
|
||||
FOS expression MMP1
|
||||
HSD11B1 compound UGT2B15
|
||||
NPY activation NPY1R
|
||||
NPY activation SUCNR1
|
||||
CREB3L3 expression FOS
|
||||
CREB3L3 expression NPY
|
||||
CREB3L3 state change CREB3L3
|
170
resources/app/app/BioGraphVisart-master/exampleComparison.html
Normal file
@ -0,0 +1,170 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BioGraphVisart Comparison</title>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.js"></script>
|
||||
|
||||
<script src="https://code.highcharts.com/highcharts.js"></script>
|
||||
<script src="https://code.highcharts.com/modules/heatmap.js"></script>
|
||||
<script src="https://code.highcharts.com/modules/exporting.js"></script>
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="https://d3js.org/d3.v6.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.debug.js" integrity="sha384-THVO/sM0mFD9h7dfSndI6TS0PgAGavwKvB5hAxRRvc0o9cPLohB0wb/PTA7LdUHs" crossorigin="anonymous"></script>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.css">
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.15.1/cytoscape.min.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-qtip.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-canvas.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-cose-bilkent.js"></script>
|
||||
<script src="https://unpkg.com/file-saver@1.3.8/FileSaver.js"></script>
|
||||
<script src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-svg.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-no-overlap.js"></script>
|
||||
|
||||
<script data-main="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize_heatmap" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/1ebdad7d2d5ee59906b8c89227d3f92e0288bbb5/static/scripts/node_modules/requirejs/require.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/constants.js"></script>
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/legends/interactiontypes.js"></script>
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize_heatmap.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/download_comparison.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/keggpathways.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/commonfunctions.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/graph_heatmap.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/mergeSubgraphs.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/heatmapSubgraphs.js"></script>
|
||||
<link rel="stylesheet" href="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/css/menu.css">
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/scripts/external/menu.js"></script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
<div class="topnav-right">
|
||||
<div id="downloadPart" style="visibility: hidden" class="dropdown">
|
||||
<button class="dropbtnright"><i class="fas fa-file-download fa-sm"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a onClick="downloadPDF()">PDF</a>
|
||||
<a onclick="downloadPNG()">PNG</a>
|
||||
<a onclick="downloadSVG()">SVG</a>
|
||||
<!--<a onclick="downloadJSON()">JSON</a>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p id="description" style="font-size: 14px">Compare networks by calculating the node overlap displayed in a heatmap. Input are multiple .graphml-files.
|
||||
</p>
|
||||
|
||||
<div class="loader" id="loader" style="display: none;"></div>
|
||||
</div>
|
||||
<div id="heatmapcontainer"></div>
|
||||
<div id = "config">
|
||||
<p id="selectAttribute" style="visibility: hidden"> Select two networks for direct comparison by clicking on a cell in the heatmap. The merged network will open in a new tab.</p>
|
||||
|
||||
<ul name="values" id="values" onchange="visualize()" style="visibility: hidden">
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div align="left" id="legend_heatmap" style="visibility: hidden">
|
||||
<table >
|
||||
<tr>
|
||||
<td>
|
||||
<span style="font-size:15px" ><b>Interactions</b></span>
|
||||
</td>
|
||||
<td>
|
||||
<small><a href="https://www.kegg.jp/kegg/xml/docs/" target="_blank">kegg.jp</a></small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="arrows">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
<p></p>
|
||||
<div id="subgraphs">
|
||||
<div align="left" id="left">
|
||||
<div align="left" id="leftID"></div>
|
||||
<div align="left" id="cyLeft"></div>
|
||||
<div align="right" class="KEGGpathsbutton" id="KEGGpathsButtonLeft" style="visibility: hidden">
|
||||
<button class="butn" class="keggpathways" id="keggpathwaysLeft" style="visibility: hidden">Show KEGG Pathways</button></p>
|
||||
<div class="loader" id="loaderLeft" style="visibility: hidden"></div>
|
||||
<div align="left" class = "KEGGpaths" id= "KEGGpathsLeft" style="visibility: hidden;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="resetLeft" style="visibility: hidden">
|
||||
<div id="downloadPartLeft" style="visibility: hidden" class="dropdown" style="float: left">
|
||||
<button class="butn"><i class="fas fa-file-download fa-lg"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a id="downloadLeftPNG">.png</a>
|
||||
<a id="downloadLeftSVG">.svg</a>
|
||||
</div>
|
||||
</div>
|
||||
<button class= 'butn' id="resetLeftLayout">Reset layout</button>
|
||||
<ul id ="selectlayoutLeft"></ul>
|
||||
</div>
|
||||
<p></p>
|
||||
<div align="left" id="right">
|
||||
<div align="left" id="rightID"></div>
|
||||
<div align="left" id="cyRight"></div>
|
||||
<div align="right" class="KEGGpathsbutton" id="KEGGpathsButtonRight" style="visibility: hidden">
|
||||
<button class="butn" id="keggpathwaysRight" style="visibility: hidden">Show KEGG Pathways</button></p>
|
||||
<div class="loader" id="loaderRight" style="visibility: hidden"></div>
|
||||
<div align="left" class = "KEGGpaths" id= "KEGGpathsRight" style="visibility: hidden;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="resetRight" style="visibility: hidden">
|
||||
<div id="downloadPartRight" style="visibility: hidden" class="dropdown" style="float: left">
|
||||
<button class="butn"><i class="fas fa-file-download fa-lg"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a id="downloadRightPNG">.png</a>
|
||||
<a id="downloadRightSVG">.svg</a>
|
||||
</div>
|
||||
</div>
|
||||
<button class = "butn" id="resetRightLayout">Reset layout</button>
|
||||
<ul id ="selectlayoutRight"></ul>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<p></p>
|
||||
</div>
|
||||
<footer id="footer">
|
||||
<div class="container">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
<script type="text/javascript">loadExample()</script>
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
|
13
resources/app/app/BioGraphVisart-master/exaple_wo_tab.sif
Normal file
@ -0,0 +1,13 @@
|
||||
CYP2E1 compound UGT2B15
|
||||
CYP2E1 compound PLA2G2A
|
||||
CYP2E1 compound HSD11B1
|
||||
MAPK1 inhibition HRAS
|
||||
MAPK1 phosphorylation HRAS
|
||||
MAPK1 activation ESR1
|
||||
MAPK1 phosphorylation ESR1
|
||||
MAPK1 activation PLA2G2A
|
||||
MAPK1 activation FOS
|
||||
MAPK1 phosphorylation FOS
|
||||
MAPK1 expression FOS
|
||||
MAPK1 activation CREB3L3
|
||||
MAPK1 phosphorylation CREB3L3
|
165
resources/app/app/BioGraphVisart-master/heatmap.html
Normal file
@ -0,0 +1,165 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BioGraphVisart Comparison</title>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.js"></script>
|
||||
|
||||
<script src="https://code.highcharts.com/highcharts.js"></script>
|
||||
<script src="https://code.highcharts.com/modules/heatmap.js"></script>
|
||||
<script src="https://code.highcharts.com/modules/exporting.js"></script>
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="https://d3js.org/d3.v6.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.debug.js" integrity="sha384-THVO/sM0mFD9h7dfSndI6TS0PgAGavwKvB5hAxRRvc0o9cPLohB0wb/PTA7LdUHs" crossorigin="anonymous"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.15.1/cytoscape.min.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/1ebdad7d2d5ee59906b8c89227d3f92e0288bbb5/static/scripts/html2canvas.min.js"></script>
|
||||
<script src="https://unpkg.com/file-saver@1.3.8/FileSaver.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.15.1/cytoscape.min.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-qtip.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-cose-bilkent.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-canvas.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-no-overlap.js"></script>
|
||||
<script src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-svg.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-undo-redo.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/commonfunctions.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/constants.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/download_comparison.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/keggpathways.js"></script>
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/jquery.csv.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/legends/interactiontypes.js"></script>
|
||||
|
||||
<script data-main="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize_heatmap" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/1ebdad7d2d5ee59906b8c89227d3f92e0288bbb5/static/scripts/node_modules/requirejs/require.js"></script>
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize_heatmap.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/graph_heatmap.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/mergeSubgraphs.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/heatmapSubgraphs.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<link rel="stylesheet" href="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/css/menu.css">
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/scripts/external/menu.js"></script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="content">
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left" style="float: left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
</div>
|
||||
<p id="description" style="font-size: 14px">Compare networks by calculating the node overlap displayed in a heatmap. Input are multiple .graphml-files.
|
||||
</p>
|
||||
<div id="dataPart">
|
||||
<input type="file" accept=".graphml,.sif" id="fileName" name="file" multiple/>
|
||||
<button class= 'butn' onclick="loadDir()" id="loadGraphml" >Load files</button>
|
||||
|
||||
<div class="loader" id="loader" style="display: none;"></div>
|
||||
<div id="heatmapcontainer"></div>
|
||||
<div id = "config">
|
||||
<p id="selectAttribute" style="visibility: hidden"> Select two networks for direct comparison by clicking on a cell in the heatmap. The merged network will open in a new tab.</p>
|
||||
|
||||
<ul name="values" id="values" onchange="visualize()" style="visibility: hidden">
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div align="left" id="legend_heatmap" style="visibility: hidden">
|
||||
<table >
|
||||
<tr>
|
||||
<td>
|
||||
<span style="font-size:15px" ><b>Interactions</b></span>
|
||||
</td>
|
||||
<td>
|
||||
<small><a href="https://www.kegg.jp/kegg/xml/docs/" target="_blank">kegg.jp</a></small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table id="arrows">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
<p></p>
|
||||
<div align="left" id="left">
|
||||
<div align="left" id="leftID"></div>
|
||||
<div align="left" id="cyLeft"></div>
|
||||
<div align="right" class="KEGGpathsbutton" id="KEGGpathsButtonLeft" style="visibility: hidden">
|
||||
<button class="butn" class="keggpathways" id="keggpathwaysLeft" style="visibility: hidden">Show KEGG Pathways</button></p>
|
||||
<div class="loader" id="loaderLeft" style="visibility: hidden"></div>
|
||||
<div align="left" class = "KEGGpaths" id= "KEGGpathsLeft" style="visibility: hidden;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="resetLeft" style="visibility: hidden">
|
||||
<div id="downloadPartLeft" style="visibility: hidden" class="dropdown" style="float: left">
|
||||
<button class="butn"><i class="fas fa-file-download fa-lg"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a id="downloadLeftPNG">.png</a>
|
||||
<a id="downloadLeftSVG">.svg</a>
|
||||
</div>
|
||||
</div>
|
||||
<button class= 'butn' id="resetLeftLayout">Reset layout</button>
|
||||
<ul id ="selectlayoutLeft"></ul>
|
||||
</div>
|
||||
<p></p>
|
||||
<div align="left" id="right">
|
||||
<div align="left" id="rightID"></div>
|
||||
<div align="left" id="cyRight"></div>
|
||||
<div align="right" class="KEGGpathsbutton" id="KEGGpathsButtonRight" style="visibility: hidden">
|
||||
<button class="butn" id="keggpathwaysRight" style="visibility: hidden">Show KEGG Pathways</button></p>
|
||||
<div class="loader" id="loaderRight" style="visibility: hidden"></div>
|
||||
<div align="left" class = "KEGGpaths" id= "KEGGpathsRight" style="visibility: hidden;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="resetRight" style="visibility: hidden">
|
||||
<div id="downloadPartRight" style="visibility: hidden" class="dropdown" style="float: left">
|
||||
<button class="butn"><i class="fas fa-file-download fa-lg"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a id="downloadRightPNG">.png</a>
|
||||
<a id="downloadRightSVG">.svg</a>
|
||||
</div>
|
||||
</div>
|
||||
<button class = "butn" id="resetRightLayout">Reset layout</button>
|
||||
<ul id ="selectlayoutRight"></ul>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<p></p>
|
||||
</div>
|
||||
<footer id="footer">
|
||||
<div class="container">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
|
114
resources/app/app/BioGraphVisart-master/imprint.html
Normal file
@ -0,0 +1,114 @@
|
||||
<!doctype html>
|
||||
<html><head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>Imprint</title>
|
||||
<meta name="description" content="">
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="topnav" id ="nav">
|
||||
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
</div>
|
||||
<header class="site-header">
|
||||
<h1 class="site-title">Imprint</h1>
|
||||
</header>
|
||||
<div id="c216" class="csc-default">
|
||||
<h4>Allgemeine Informationen gem. § 5 TMG, § 55 RStVG</h4>
|
||||
<div>
|
||||
<table class="plain">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Adresse</td>
|
||||
<td>
|
||||
<p class="bodytext">Eberhard Karls Universität Tübingen<br />
|
||||
Geschwister-Scholl-Platz<br />
|
||||
72074 Tübingen</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>Die Universität Tübingen ist eine Körperschaft des öffentlichen Rechts. Sie wird durch den Rektor Prof. Dr. Bernd Engler (eMail: bernd. engler [at] uni-tuebingen.de) gesetzlich vertreten</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Telefonzentrale</td>
|
||||
<td>+49 (0) 70 71/29-0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fax Zentrale Verwaltung</td>
|
||||
<td>+49 (0) 70 71/29-59 90</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Internet-Adresse</td>
|
||||
<td><a class="external-link" href="https://www.uni-tuebingen.de/">https://www.uni-tuebingen.de</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Umsatzsteuer-Identifikationsnummer</td>
|
||||
<td>
|
||||
<p class="bodytext">gemäß § 27a Umsatzsteuergesetz: <b>DE812383453</b></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Aufsichtsbehörde</td>
|
||||
<td>Ministerium für Wissenschaft, Forschung und Kunst Baden-Württemberg</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h4>1. Externe Links</h4>
|
||||
<div id="c225" class="csc-frame csc-frame-default">
|
||||
<div class="csc-textpic-text">
|
||||
<p class="bodytext">Diese Webseite der Universität Tübingen enthält auch entsprechend gekennzeichnete Links oder Verweise auf Websites Dritter. Durch den Link vermittelt die Universität Tübingen lediglich den Zugang zur Nutzung dieser Inhalte. Eine Zustimmung zu den Inhalten den verlinkten Seiten Dritter ist damit nicht verbunden. Die Universität Tübingen übernimmt daher keine Verantwortung für die Verfügbarkeit oder den Inhalt solcher Websites und keine Haftung für Schäden oder Verletzungen, die aus der Nutzung – gleich welcher Art – solcher Inhalte entstehen. Hierfür haftet allein der Anbieter der jeweiligen Seite.</p>
|
||||
<p class="bodytext">Bei der erstmaligen Verknüpfung mit einem anderen Internetangebot hat die Redaktion dessen Inhalt daraufhin überprüft, ob durch ihn eine mögliche zivilrechtliche oder strafrechtliche Verantwortlichkeit ausgelöst wird. Dort nachträglich eingebundene Inhalte können jedoch leider nicht überprüft werden. Der Verweis auf dieses Angebot wird unverzüglich aufgehoben werden, sobald die Redaktion feststellt oder von anderen darauf hingewiesen wird, dass ein bestimmtes Angebot, zu dem ein Link bereitgestellt wurde, eine zivil- oder strafrechtliche Verantwortlichkeit auslöst.</p>
|
||||
<h4>2. Urheberrecht</h4>
|
||||
<p class="bodytext">Copyright (c), Universität Tübingen. Alle Rechte vorbehalten.</p>
|
||||
<p class="bodytext">Alle auf dieser Website veröffentlichten Inhalte (Layout, Texte, Bilder, Grafiken, Video- und Tondateien usw.) unterliegen dem Urheberrecht. Jede vom Urheberrechtsgesetz nicht zugelassene Verwertung bedarf vorheriger ausdrücklicher Zustimmung der Universität Tübingen. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Fotokopien und Downloads von Web-Seiten für den privaten, wissenschaftlichen und nicht kommerziellen Gebrauch dürfen hergestellt werden.</p>
|
||||
<p class="bodytext">Das Urheberrecht für die Wort-Bild-Marke liegt ausdrücklich bei der Universität Tübingen.</p>
|
||||
<p class="bodytext">Wir erlauben ausdrücklich und begrüßen das Zitieren unserer Dokumente und Webseiten sowie das Setzen von Links auf unsere Website.</p>
|
||||
<h4>3. Haftungsausschluss</h4>
|
||||
<p class="bodytext">Die Informationen auf dieser Website wurden nach bestem Wissen und Gewissen sorgfältig zusammengestellt und geprüft. Es wird jedoch keine Gewähr – weder ausdrücklich noch stillschweigend – für die Vollständigkeit, Richtigkeit oder Aktualität sowie die jederzeitige Verfügbarkeit der bereit gestellten Informationen übernommen. Eine Haftung für Schäden, die aus der Nutzung oder Nichtnutzung der auf dieser Website angebotenen Informationen entstehen ist – soweit gesetzlich zulässig – ausgeschlossen.</p>
|
||||
</div>
|
||||
<h4>Ansprechpartner</h4>
|
||||
<div class="csc-textpic-text">
|
||||
<p>Prof. Dr. Oliver Kohlbacher<br />
|
||||
Sand 14<br />
|
||||
72076 Tübingen<br />
|
||||
Telefon: +49-7071-29-70458<br />
|
||||
Fax: +49-7071-29-5152<br />
|
||||
eMail: oliver.kohlbacher [at] uni-tuebingen.de</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="container">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body></html>
|
1
resources/app/app/BioGraphVisart-master/kegg.html
Normal file
@ -0,0 +1 @@
|
||||
|
146
resources/app/app/BioGraphVisart-master/merge.html
Normal file
@ -0,0 +1,146 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BioGraphVisart Comparison</title>
|
||||
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.3/basic/jquery.qtip.js"></script>
|
||||
|
||||
<script src="https://code.highcharts.com/highcharts.js"></script>
|
||||
<script src="https://code.highcharts.com/modules/heatmap.js"></script>
|
||||
<script src="https://code.highcharts.com/modules/exporting.js"></script>
|
||||
<script src="https://unpkg.com/file-saver@1.3.8/FileSaver.js"></script>
|
||||
|
||||
<script src="https://d3js.org/d3.v6.js"></script>
|
||||
<script src="https://kit.fontawesome.com/342fe75ec3.js" crossorigin="anonymous"></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.4.1/jspdf.debug.js" integrity="sha384-THVO/sM0mFD9h7dfSndI6TS0PgAGavwKvB5hAxRRvc0o9cPLohB0wb/PTA7LdUHs" crossorigin="anonymous"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.15.1/cytoscape.min.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-qtip.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-klay.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-cose-bilkent.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-dagre.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-canvas.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-no-overlap.js"></script>
|
||||
<script src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-svg.js"></script>
|
||||
<script type="application/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b7067838bcd355da495fc56a4930dc8a00c67e1/static/scripts/cytoscapescripts/cytoscape-undo-redo.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/legends/interactiontypes.js"></script>
|
||||
<script data-main="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize_heatmap" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/1ebdad7d2d5ee59906b8c89227d3f92e0288bbb5/static/scripts/node_modules/requirejs/require.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/commonfunctions.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/constants.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/download_merge.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/keggpathways.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/initialize_heatmap.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/graph_heatmap.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/mergeSubgraphs.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/heatmapSubgraphs.js"></script>
|
||||
<script type="text/javascript" src="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/scripts/showMerged.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://raw.githack.com/MirjamFi/BioGraphVisart/master/static/css/subgraphCss.css">
|
||||
<link rel="stylesheet" href="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/css/menu.css">
|
||||
<script type="text/javascript" src="https://rawcdn.githack.com/MirjamFi/BioGraphVisart/2b47d3753d76023f1b0219d7cea883a2de9ebe95/static/scripts/external/menu.js"></script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="topnav" id ="nav" style="margin-bottom: 20px">
|
||||
|
||||
<div class="dropdown topnav-left">
|
||||
<button class="dropbtn_topnav"><i class="fas fa-bars"></i>
|
||||
</button>
|
||||
<div class="dropdown-content">
|
||||
<a class="page-link" href="/BioGraphVisart/heatmap">Comparison</a>
|
||||
<a class="page-link"href="/BioGraphVisart/about">About</a>
|
||||
<a class="page-link" href="/BioGraphVisart/documentation">Documentation</a>
|
||||
<a class="page-link" href="/BioGraphVisart/contact">Contact</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topnav-centered">
|
||||
<a class="page-link" href="/BioGraphVisart">BioGraphVisart</a>
|
||||
</div>
|
||||
<div class="topnav-right">
|
||||
<div id="downloadPart" class="dropdown">
|
||||
<button class="dropbtnright"><i class="fas fa-file-download fa-sm"></i></button>
|
||||
<div id="downloadTypes" class="dropdown-content">
|
||||
<a onClick="downloadMergePDF()">PDF</a>
|
||||
<a onclick="downloadMergePNG()">PNG</a>
|
||||
<a onclick="downloadMergeSVG()">SVG</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <h1>Merged Graph</h1> -->
|
||||
|
||||
<div id = "merged_graph_buttons"></div>
|
||||
</div>
|
||||
<div id = "legend_merge">
|
||||
<table style="width: 50px" id = "legend_interactions">
|
||||
<tr>
|
||||
<td>
|
||||
<span style="font-size:15px" ><b>Interactions</b></span>
|
||||
</td>
|
||||
<td>
|
||||
<small><a href="https://www.kegg.jp/kegg/xml/docs/" target="_blank">kegg.jp</a></small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table style="width: 250px"id="arrows">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<p></p>
|
||||
<div class="content">
|
||||
|
||||
<div align="left" id = "merged_graph"></div>
|
||||
<div id="merged_graph_legend" class="center-div" style="visibility: hidden;"></div>
|
||||
<div align="right" class="KEGGpathsbutton" id="KEGGpathsButtonMerge" style="visibility: hidden">
|
||||
<button class= 'butn' class="butn" id="keggpathwaysMerge" >Show KEGG Pathways</button></p>
|
||||
<div class="loader" id="loaderMerge" style="visibility: hidden"></div>
|
||||
<div align="left" class = "KEGGpathsMerge" id= "KEGGpathsMerge" style="visibility: hidden;"></div>
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
|
||||
var queryString = decodeURIComponent(window.location.search);
|
||||
queryString = queryString.substring(1);
|
||||
var queries = queryString.split("&");
|
||||
var leftID = queries[0].split('=')[1];
|
||||
var rightID = queries[1].split('=')[1];
|
||||
// var file1 = queries[2].split('=')[1].split("blob:")[1];
|
||||
// var file2 = queries[3].split('=')[1].split("blob:")[1];
|
||||
var val = queries[4].split('=')[1]
|
||||
var example = queries[5].split('=')[1]
|
||||
if(example == 'true'){
|
||||
var file1 = queries[2].split('=')[1];
|
||||
var file2 = queries[3].split('=')[1];
|
||||
createMergedExample(file1, file2, val, leftID, rightID)
|
||||
}
|
||||
else{
|
||||
var file1 = queries[2].split('=')[1].split("blob:")[1];
|
||||
var file2 = queries[3].split('=')[1].split("blob:")[1];
|
||||
createMerged(file1, file2, val, leftID, rightID)
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<footer id="footer">
|
||||
<div class="containerMerged">
|
||||
<a class="page-link" href="/BioGraphVisart/imprint">Imprint</a><br>
|
||||
<a class="page-link" href="/BioGraphVisart/datenschutzerklarung" aria-current="page">Datenschutzerklärung</a>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
||||
|
||||
|
||||
|
262
resources/app/app/BioGraphVisart-master/static/css/menu.css
Normal file
@ -0,0 +1,262 @@
|
||||
/*
|
||||
Naming convention:
|
||||
Block
|
||||
element
|
||||
-modifier
|
||||
*/
|
||||
|
||||
.Menu {
|
||||
display: none;
|
||||
position: relative;
|
||||
}
|
||||
/* Three basic menu layouts */
|
||||
/* This also enforces that menu is a ul, and that
|
||||
* layout modifier is specified
|
||||
*/
|
||||
ul.Menu.-horizontal,
|
||||
ul.Menu.-vertical {
|
||||
display: inline-block;
|
||||
}
|
||||
ul.Menu.-floating {
|
||||
display: block;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
/* Menu and menu-item layout */
|
||||
.Menu,
|
||||
.Menu li,
|
||||
.Menu li > ul {
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
.Menu li {
|
||||
display: block;
|
||||
position: relative;
|
||||
white-space: nowrap;
|
||||
word-break: keep-all;
|
||||
}
|
||||
.Menu.-horizontal > li {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
}
|
||||
.Menu li > * {
|
||||
display: block;
|
||||
position: relative;
|
||||
}
|
||||
.Menu li > ul {
|
||||
position: absolute;
|
||||
/*min-width: 100%;*/
|
||||
top: 0px;
|
||||
left: 100%;
|
||||
}
|
||||
.Menu.-horizontal.-alignRight li > ul {
|
||||
left: auto;
|
||||
right: 100%;
|
||||
}
|
||||
.Menu.-horizontal.-alignRight > li > ul {
|
||||
right: 0px;
|
||||
}
|
||||
.Menu.-horizontal > li > ul {
|
||||
top: auto;
|
||||
left: auto;
|
||||
}
|
||||
|
||||
/* Menu behaviour */
|
||||
.Menu li > ul,
|
||||
.Menu.-floating {
|
||||
display: none;
|
||||
}
|
||||
.Menu li > ul.-visible,
|
||||
ul.Menu.-floating.-visible {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Menu animation */
|
||||
.Menu li > ul,
|
||||
.Menu.-horizontal.-alignRight li > ul,
|
||||
.Menu.-floating {
|
||||
opacity: 1;
|
||||
transform: scale(1) translateY(0px);
|
||||
transform-origin: left top;
|
||||
}
|
||||
.Menu.-alignRight li > ul,
|
||||
.Menu.-floating.-alignRight {
|
||||
transform-origin: right top;
|
||||
}
|
||||
.Menu li > ul.-animating,
|
||||
.Menu.-floating.-animating {
|
||||
opacity: 0 !important;
|
||||
transform: scale(0.96) translateX(-16px);
|
||||
}
|
||||
.Menu li > ul.-animating {
|
||||
z-index: -1 !important;
|
||||
}
|
||||
.Menu.-horizontal > li > ul.-animating {
|
||||
transform: scale(0.96) translateY(-16px);
|
||||
}
|
||||
.Menu.-alignRight li > ul.-animating,
|
||||
.Menu.-floating.-alignRight.-animating {
|
||||
transform: scale(0.96) translateX(16px);
|
||||
}
|
||||
.Menu.-horizontal.-alignRight > li > ul.-animating {
|
||||
transform: scale(0.96) translateY(-16px);
|
||||
}
|
||||
|
||||
/* Menu item icons */
|
||||
.Menu *[data-icon]:before {
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 0px;
|
||||
bottom: 0px;
|
||||
margin: auto 0px;
|
||||
}
|
||||
.Menu .Icon,
|
||||
.Menu *[data-icon]:before {
|
||||
line-height: inherit;
|
||||
}
|
||||
.Menu .Icon {
|
||||
padding: 0px;
|
||||
}
|
||||
.Menu *:empty[data-icon] {
|
||||
padding-left: 0px !important;
|
||||
padding-right: 0px !important;
|
||||
}
|
||||
|
||||
/* Submenu chevrons */
|
||||
.Menu li.-hasSubmenu > a:after {
|
||||
display: block;
|
||||
position: absolute;
|
||||
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
right: 6px;
|
||||
bottom: 0px;
|
||||
top: 0px;
|
||||
margin: auto 0px;
|
||||
|
||||
transform: rotate(45deg);
|
||||
border-width: 1px;
|
||||
border-color: black;
|
||||
border-style: solid solid none none;
|
||||
|
||||
content: "";
|
||||
}
|
||||
.Menu.-horizontal > li.-hasSubmenu > a:after {
|
||||
width: 4px;
|
||||
height: 4px;
|
||||
bottom: 4px;
|
||||
top: auto;
|
||||
left: 0px;
|
||||
right: 0px;
|
||||
margin: 0px auto;
|
||||
|
||||
border-style: none solid solid none;
|
||||
}
|
||||
.Menu li.-hasSubmenu.-noChevron > a:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*
|
||||
** Configurable values
|
||||
*/
|
||||
/* Height of navbar, and menu items */
|
||||
/* All of these must be of equal value */
|
||||
.Menu {
|
||||
line-height: 30px;
|
||||
}
|
||||
.Menu.-horizontal,
|
||||
.Menu li,
|
||||
.Menu li > :first-child {
|
||||
height: 30px;
|
||||
}
|
||||
.Menu *[data-icon]:before,
|
||||
.Menu .Icon {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
.Menu *[data-icon] {
|
||||
min-width: 30px;
|
||||
min-height: 30px;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
/* Default font settings for menu */
|
||||
.Menu {
|
||||
font-family: Arial, Helvetica, Sans;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/* Icon font sizes */
|
||||
.Menu *[data-icon]:before,
|
||||
.Menu .Icon {
|
||||
font-size: 10px;
|
||||
}
|
||||
/* For submenus */
|
||||
.Menu > li ul .Icon,
|
||||
.Menu.-floating .Icon,
|
||||
.Menu > li ul *[data-icon]:before,
|
||||
.Menu.-floating *[data-icon]:before,
|
||||
{
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
/* Colouring of menus */
|
||||
/* Foreground */
|
||||
.Menu,
|
||||
.Menu li.-hasSubmenu > a:after {
|
||||
color: black;
|
||||
border-color: black; /* chevron colour */
|
||||
}
|
||||
/* Background */
|
||||
.Menu ul,
|
||||
.Menu.-floating {
|
||||
background: white;
|
||||
}
|
||||
|
||||
/* Padding for each menu item */
|
||||
.Menu li > * {
|
||||
padding: 0px 12px;
|
||||
}
|
||||
/* Indent of chevron */
|
||||
.Menu li li.-hasSubmenu > a:after,
|
||||
.Menu:not(.-horizontal) > li.-hasSubmenu > a:after {
|
||||
right: 12px;
|
||||
}
|
||||
.Menu li li.-hasSubmenu > a,
|
||||
.Menu:not(.-horizontal) > li.-hasSubmenu > a {
|
||||
padding-right: 2px;
|
||||
}
|
||||
|
||||
/* Minimum width of dropdown menus */
|
||||
.Menu.-horizontal li > ul,
|
||||
.Menu.-floating {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
/* Animation speed of dropdown menus */
|
||||
.Menu li > ul,
|
||||
.Menu.-floating {
|
||||
transition: width 0.1s, height 0.1s, transform 0.1s, opacity 0.1s;
|
||||
}
|
||||
|
||||
/* Styling of hyperlink text */
|
||||
.Menu li > a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* Animation speed of :hover shading */
|
||||
.Menu li > a:first-child {
|
||||
transition: background-color 0.2s;
|
||||
}
|
||||
|
||||
/* Colour of :hover shading */
|
||||
.Menu li:hover > a:first-child,
|
||||
.Menu li.-active > a:first-child {
|
||||
background-color: rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
/*
|
||||
** End configurable values
|
||||
*/
|
@ -0,0 +1,490 @@
|
||||
body {
|
||||
font-family: helvetica neue, helvetica, liberation sans, arial, sans-serif;
|
||||
font-size: 12px;
|
||||
height:100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
a{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.dropdown {
|
||||
/*float: right;*/
|
||||
width: 5vw;
|
||||
margin-right: 4vw;
|
||||
border-radius:4px;
|
||||
}
|
||||
.dropdown .dropbtn {
|
||||
font-size: 1vw;
|
||||
border: none;
|
||||
outline: none;
|
||||
color: black;
|
||||
/*padding: 14px 16px;*/
|
||||
background-color: inherit;
|
||||
font-family: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
.dropdown .dropbtnright {
|
||||
font-size: 1vw;
|
||||
border: none;
|
||||
outline: none;
|
||||
color: black;
|
||||
/*padding: 14px 16px;*/
|
||||
background-color: inherit;
|
||||
font-family: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.dropdown .dropbtn_topnav {
|
||||
font-size: 1vw;
|
||||
border: none;
|
||||
outline: none;
|
||||
color: black;
|
||||
/*padding: 14px 16px;*/
|
||||
background-color: inherit;
|
||||
font-family: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f9f9f9;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
z-index: 10;
|
||||
}
|
||||
li{
|
||||
z-index: 9;
|
||||
}
|
||||
ul{
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.topnav{
|
||||
position: relative;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid #DCDCDC;
|
||||
border-top: 1px solid #DCDCDC;
|
||||
color: grey;
|
||||
text-decoration: none;
|
||||
height: 3vw;
|
||||
}
|
||||
/* Style the links inside the navigation bar */
|
||||
.topnav a {
|
||||
float: left;
|
||||
text-align: center;
|
||||
padding: 1vw 16px;
|
||||
}
|
||||
|
||||
.topnav a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.dropdown-content a {
|
||||
float: none;
|
||||
color: black;
|
||||
padding: 12px 16px;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
text-align: left;
|
||||
}
|
||||
/*
|
||||
.dropdown-content a:hover {
|
||||
background-color: #ddd;
|
||||
}*/
|
||||
|
||||
.dropdown:hover .dropdown-content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
a:visited{color: blue}
|
||||
.page-link{color: #000;}
|
||||
.page-link:visited {color:#000;}
|
||||
|
||||
/* Right-aligned section inside the top navigation */
|
||||
.topnav-right {
|
||||
float: right;
|
||||
font-size: 1vw;
|
||||
/*margin-top: 1vw;*/
|
||||
}
|
||||
.topnav-left {
|
||||
float: left;
|
||||
font-size: 1vw;
|
||||
}
|
||||
.topnav-centered a{
|
||||
float: none;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
font-size: 1vw;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.vl {
|
||||
border-left: thin solid #BDBDBD;
|
||||
height: 500px;
|
||||
}
|
||||
|
||||
#description{
|
||||
font-size: 18px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
img.center {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.butn {
|
||||
cursor: pointer;
|
||||
background: #e3e3e3;
|
||||
/*background-image: -webkit-linear-gradient(top, #f9f9f9, #BDBDBD);
|
||||
background-image: -moz-linear-gradient(top, #f9f9f9, #BDBDBD);
|
||||
background-image: -ms-linear-gradient(top, #f9f9f9, #BDBDBD);
|
||||
background-image: -o-linear-gradient(top, #f9f9f9, #BDBDBD);
|
||||
background-image: linear-gradient(to bottom, #f9f9f9, #BDBDBD);*/
|
||||
-webkit-border-radius: 28;
|
||||
-moz-border-radius: 28;
|
||||
border-radius: 28px;
|
||||
font-family: Arial;
|
||||
color: black;
|
||||
font-size: 10px;
|
||||
padding: 5px 10px 5px 10px;
|
||||
border: solid #e3e3e3 3px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.butn:hover {
|
||||
background: #e3e3e3;
|
||||
/*background-image: -webkit-linear-gradient(top, #e3e3e3, #e3e3e3);
|
||||
background-image: -moz-linear-gradient(top, #e3e3e3, #e3e3e3);
|
||||
background-image: -ms-linear-gradient(top, #e3e3e3, #e3e3e3);
|
||||
background-image: -o-linear-gradient(top, #e3e3e3, #e3e3e3);
|
||||
background-image: linear-gradient(to bottom, #e3e3e3, #e3e3e3);*/
|
||||
text-decoration: none;
|
||||
border: solid #cacaca 3px;
|
||||
}
|
||||
|
||||
#resetMerge{
|
||||
width:120px;
|
||||
}
|
||||
select {
|
||||
cursor: pointer;
|
||||
border: 0.5px solid #BDBDBD;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
input {
|
||||
cursor: pointer;
|
||||
/*background-color: #BDBDBD;*/
|
||||
color: black;
|
||||
padding: 5px 8px;
|
||||
border: 0.5px solid #BDBDBD;
|
||||
border-radius:4px;
|
||||
}
|
||||
|
||||
input:hover{
|
||||
border-color: black;
|
||||
border: 1px solid #999;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
#cy {
|
||||
width: 65%;
|
||||
position: absolute;
|
||||
top: 160px;
|
||||
left: 190px;
|
||||
bottom: 70px;
|
||||
background-color:none;
|
||||
z-index: 2;
|
||||
}
|
||||
#searchgene{
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
#legend {
|
||||
position: absolute;
|
||||
top: 160px;
|
||||
left: 10px;
|
||||
font-size: 10px;
|
||||
width: 180px;
|
||||
height: 490px;
|
||||
}
|
||||
#legendNodes {
|
||||
position: absolute;
|
||||
margin-top: 10px;
|
||||
left: 10px;
|
||||
font-size: 10px;
|
||||
width: 180px;
|
||||
height: 200px;
|
||||
}
|
||||
|
||||
#selectColorAttribute{
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
.KEGGpathsButton{
|
||||
position: absolute;
|
||||
top: 160px;
|
||||
margin-left:84%;
|
||||
}
|
||||
#KEGGpaths{
|
||||
position: absolute;
|
||||
top: 210px;
|
||||
margin-left:85%;
|
||||
}
|
||||
#keggpathways{
|
||||
position: absolute;
|
||||
top: 180px;
|
||||
margin-left:85%;
|
||||
}
|
||||
#keggpathwaysMerge{
|
||||
position: absolute;
|
||||
top: 148px;
|
||||
left:86%;
|
||||
}
|
||||
#KEGGpathsMerge{
|
||||
position: absolute;
|
||||
top: 185px;
|
||||
left:86%;
|
||||
}
|
||||
|
||||
#subgraphs{
|
||||
margin-top: 5px;
|
||||
margin-left: 220px;
|
||||
}
|
||||
|
||||
#keggpathwaysRight{
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left:84%;
|
||||
}
|
||||
#KEGGpathsRight{
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left:84%;
|
||||
}
|
||||
#keggpathwaysLeft{
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left:84%;
|
||||
}
|
||||
#KEGGpathsLeft{
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
left:84%;
|
||||
}
|
||||
|
||||
#heatmap_shapes{
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.loader {
|
||||
border: 16px solid #f3f3f3;
|
||||
border-top: 16px solid #3498db;
|
||||
border-radius: 50%;
|
||||
animation: spin 5s linear infinite;
|
||||
margin: 0 auto;
|
||||
width: 1vw;
|
||||
height: 1vw;
|
||||
}
|
||||
#loader{
|
||||
position: absolute;
|
||||
top: 200px;
|
||||
left: 85%;
|
||||
right: 0;
|
||||
|
||||
}
|
||||
|
||||
.loader1 {
|
||||
border: 16px solid #f3f3f3;
|
||||
border-top: 16px solid #3498db;
|
||||
border-radius: 50%;
|
||||
width: 1vw;
|
||||
height: 1vw;
|
||||
animation: spin 5s linear infinite;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.loader1{
|
||||
position: absolute;
|
||||
top: 370px;
|
||||
left: 50%;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#loaderLeft {
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
left: 85%;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
#loaderRight {
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
left: 85%;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
#loaderMerge {
|
||||
position: absolute;
|
||||
top: 250px;
|
||||
left: 81%;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
#heatmapcontainer {
|
||||
min-width: 300px;
|
||||
max-width: 1000px;
|
||||
height: 400px;
|
||||
margin: 1em auto;
|
||||
}
|
||||
/*#downloadPartLeft{
|
||||
margin-top: 20px;
|
||||
}*/
|
||||
#outputNameHeatmap{
|
||||
margin-left: 20px;
|
||||
}
|
||||
#left {
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
position: relative;
|
||||
margin: 10px 10px 10px 10px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#right {
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
position: relative;
|
||||
margin: 10px 10px 10px 10px;
|
||||
}
|
||||
#rightID{
|
||||
font-weight: bold;
|
||||
}
|
||||
#leftID{
|
||||
font-weight: bold;
|
||||
}
|
||||
#downloadPartRight{
|
||||
margin-top: 20px;
|
||||
}
|
||||
#cyLeft {
|
||||
width: 85%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
margin: 0% 5% 5% 0px;
|
||||
}
|
||||
|
||||
#cyRight {
|
||||
width: 85%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
margin: 0% 10% 5% 0%;
|
||||
}
|
||||
#merged_graph {
|
||||
width: 65%;
|
||||
position: absolute;
|
||||
top: 150px;
|
||||
left: 280px;
|
||||
bottom: 70px;
|
||||
background-color:none;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
#legend_heatmap {
|
||||
position: absolute;
|
||||
/*top: 700px;*/
|
||||
/*left: 10px;*/
|
||||
margin-top: 40px;
|
||||
font-size: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
#merged_graph_legend {
|
||||
font-size: 10px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
#legendArrows {
|
||||
width: 300px;
|
||||
float:left;
|
||||
}
|
||||
|
||||
#merged_graph_buttons{
|
||||
position: relative;
|
||||
margin: 0px 10px 10px 10px;
|
||||
}
|
||||
|
||||
#selectlayoutMerge{
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.center-div
|
||||
{
|
||||
margin: 0 auto;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
/* Style the active class, and buttons on mouse-over */
|
||||
.active{
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.csc-default{
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.entry-content{
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.content{
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
footer
|
||||
{
|
||||
color: white;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
.container {
|
||||
border-top: 1px solid #DCDCDC;
|
||||
width: 98%;
|
||||
margin: 1em auto;
|
||||
max-width: 100%;
|
||||
padding: 0 1em;
|
||||
}
|
||||
|
||||
.containerMerged {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 98%;
|
||||
padding: 1em 1em;
|
||||
margin: 0.5em auto;
|
||||
border-top: 1px solid #DCDCDC;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.dropdown-submenu {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dropdown-submenu .dropdown-menu {
|
||||
top: 0;
|
||||
left: 100%;
|
||||
margin-top: -1px;
|
||||
}
|
@ -0,0 +1,188 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="90.87188mm"
|
||||
height="31.532946mm"
|
||||
viewBox="0 0 90.87188 31.532946"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="activation_expression.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
offset_points="2,3.6329516"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect839"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect837"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect835"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect831"
|
||||
is_visible="true"
|
||||
offset_points="2,0.30211571"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect827"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect825"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect821"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect817"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.620771"
|
||||
inkscape:cx="95.815713"
|
||||
inkscape:cy="44.327137"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-77.364146,-26.558506)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 78.105519,39.159907 h 54.635161 v 3.197185 h -55.0475 v -3.197185 z"
|
||||
id="path847"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26579934px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 133.32139,26.75261 c -0.41402,8.401876 -0.32277,18.021469 0,31.128088 l 34.59056,-16.978957 z"
|
||||
id="path851"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="102.50623"
|
||||
y="34.445686"
|
||||
id="text902"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan900"
|
||||
x="102.50623"
|
||||
y="43.809456"
|
||||
style="stroke-width:0.26458332" /></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.9 KiB |
@ -0,0 +1,200 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="90.87188mm"
|
||||
height="31.714531mm"
|
||||
viewBox="0 0 90.87188 31.714531"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="binding_association_dissociation.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.57192761"
|
||||
inkscape:cx="168.00795"
|
||||
inkscape:cy="-317.44891"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="535"
|
||||
inkscape:window-y="315"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-60.547895,-32.793777)">
|
||||
<g
|
||||
transform="translate(-16.816251,6.2694094)"
|
||||
id="layer1-0"
|
||||
inkscape:label="Ebene 1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 78.105519,39.159907 h 54.635161 v 3.197185 h -55.0475 v -3.197185 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path851"
|
||||
d="m 133.32139,26.75261 c -0.41402,8.401876 -0.32277,18.021469 0,31.128088 l 34.59056,-16.978957 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26579934px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text902"
|
||||
y="34.445686"
|
||||
x="102.50623"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.26458332"
|
||||
y="43.809456"
|
||||
x="102.50623"
|
||||
id="tspan900"
|
||||
sodipodi:role="line" /></text>
|
||||
</g>
|
||||
<rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.74958092;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect79"
|
||||
width="4.5357146"
|
||||
height="31.714531"
|
||||
x="100.46535"
|
||||
y="32.793777" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,339 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="92.98214mm"
|
||||
height="31.967878mm"
|
||||
viewBox="0 0 92.982141 31.967879"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="compound.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843-8"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839-3"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837-9"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835-0"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831-5"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827-2"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825-2"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821-7"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817-3"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="320.72996"
|
||||
inkscape:cy="-368.78719"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="362"
|
||||
inkscape:window-y="418"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-52.571148,-19.290521)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="74.839287"
|
||||
y="27.880953"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="74.839287"
|
||||
y="37.24472"
|
||||
style="font-size:14.11111069px;stroke-width:0.26458332" /></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1040"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="scale(0.26458333)"><flowRegion
|
||||
id="flowRegion1042"><rect
|
||||
id="rect1044"
|
||||
width="800"
|
||||
height="394.28571"
|
||||
x="-134.28572"
|
||||
y="-63.194599" /></flowRegion><flowPara
|
||||
id="flowPara1046"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1165"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,65.360595,12.398694)"><flowRegion
|
||||
id="flowRegion1167"><rect
|
||||
id="rect1169"
|
||||
width="571.42859"
|
||||
height="428.57144"
|
||||
x="-188.57143"
|
||||
y="-117.30562" /></flowRegion><flowPara
|
||||
id="flowPara1171"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1173"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,12.398694)"><flowRegion
|
||||
id="flowRegion1175"><rect
|
||||
id="rect1177"
|
||||
width="731.42859"
|
||||
height="405.71429"
|
||||
x="-262.85715"
|
||||
y="-93.12867" /></flowRegion><flowPara
|
||||
id="flowPara1179"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1341"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,14.050617)"><flowRegion
|
||||
id="flowRegion1343"><rect
|
||||
id="rect1345"
|
||||
width="700"
|
||||
height="451.42856"
|
||||
x="-311.42856"
|
||||
y="-119.37215" /></flowRegion><flowPara
|
||||
id="flowPara1347"></flowPara></flowRoot> <rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.84250903;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect2283"
|
||||
width="80.130951"
|
||||
height="4.5357146"
|
||||
x="52.571148"
|
||||
y="33.11554" />
|
||||
<ellipse
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path2285"
|
||||
cx="127.66242"
|
||||
cy="35.27446"
|
||||
rx="17.890867"
|
||||
ry="15.983939" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 11 KiB |
@ -0,0 +1,357 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="94.429123mm"
|
||||
height="40.987545mm"
|
||||
viewBox="0 0 94.429124 40.987546"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="dephosphorylation.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843-8"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839-3"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837-9"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835-0"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831-5"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827-2"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825-2"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821-7"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817-3"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="-501.55126"
|
||||
inkscape:cy="-354.50146"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="362"
|
||||
inkscape:window-y="418"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-51.815197,-14.050617)">
|
||||
<g
|
||||
transform="translate(-9.737339,-3.0989429)"
|
||||
id="layer1-0"
|
||||
inkscape:label="Ebene 1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 62.293909,41.380946 h 54.635201 v 3.197185 H 61.88157 v -3.197185 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path851"
|
||||
d="m 133.11604,57.919226 c 0.31713,-8.419133 0.31696,-18.063845 0.1892,-31.206569 L 110.97313,43.40644 Z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21335374px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text902"
|
||||
y="34.445686"
|
||||
x="102.50623"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.26458332"
|
||||
y="43.809456"
|
||||
x="102.50623"
|
||||
id="tspan900"
|
||||
sodipodi:role="line" /></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path850"
|
||||
d="m 133.30903,26.710989 22.48514,14.18695 -22.48514,17.024339 V 26.710989 l 22.48514,14.18695 -22.48514,17.024339 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21360484px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="74.839287"
|
||||
y="27.880953"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="74.839287"
|
||||
y="37.24472"
|
||||
style="font-size:14.11111069px;stroke-width:0.26458332" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
id="text960"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan958"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
style="font-size:24.69444466px;stroke-width:0.26458332">-p</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1040"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="scale(0.26458333)"><flowRegion
|
||||
id="flowRegion1042"><rect
|
||||
id="rect1044"
|
||||
width="800"
|
||||
height="394.28571"
|
||||
x="-134.28572"
|
||||
y="-63.194599" /></flowRegion><flowPara
|
||||
id="flowPara1046"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1165"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,65.360595,12.398694)"><flowRegion
|
||||
id="flowRegion1167"><rect
|
||||
id="rect1169"
|
||||
width="571.42859"
|
||||
height="428.57144"
|
||||
x="-188.57143"
|
||||
y="-117.30562" /></flowRegion><flowPara
|
||||
id="flowPara1171"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1173"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,12.398694)"><flowRegion
|
||||
id="flowRegion1175"><rect
|
||||
id="rect1177"
|
||||
width="731.42859"
|
||||
height="405.71429"
|
||||
x="-262.85715"
|
||||
y="-93.12867" /></flowRegion><flowPara
|
||||
id="flowPara1179"></flowPara></flowRoot> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,357 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="94.429123mm"
|
||||
height="40.987545mm"
|
||||
viewBox="0 0 94.429124 40.987546"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="glycosylation.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843-8"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839-3"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837-9"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835-0"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831-5"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827-2"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825-2"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821-7"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817-3"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="-382.12718"
|
||||
inkscape:cy="-354.50146"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="362"
|
||||
inkscape:window-y="418"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-51.815197,-14.050617)">
|
||||
<g
|
||||
transform="translate(-9.737339,-3.0989429)"
|
||||
id="layer1-0"
|
||||
inkscape:label="Ebene 1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 62.293909,41.380946 h 54.635201 v 3.197185 H 61.88157 v -3.197185 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path851"
|
||||
d="m 133.11604,57.919226 c 0.31713,-8.419133 0.31696,-18.063845 0.1892,-31.206569 L 110.97313,43.40644 Z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21335374px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text902"
|
||||
y="34.445686"
|
||||
x="102.50623"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.26458332"
|
||||
y="43.809456"
|
||||
x="102.50623"
|
||||
id="tspan900"
|
||||
sodipodi:role="line" /></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path850"
|
||||
d="m 133.30903,26.710989 22.48514,14.18695 -22.48514,17.024339 V 26.710989 l 22.48514,14.18695 -22.48514,17.024339 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21360484px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="74.839287"
|
||||
y="27.880953"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="74.839287"
|
||||
y="37.24472"
|
||||
style="font-size:14.11111069px;stroke-width:0.26458332" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
id="text960"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan958"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
style="font-size:24.69444466px;stroke-width:0.26458332">+g</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1040"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="scale(0.26458333)"><flowRegion
|
||||
id="flowRegion1042"><rect
|
||||
id="rect1044"
|
||||
width="800"
|
||||
height="394.28571"
|
||||
x="-134.28572"
|
||||
y="-63.194599" /></flowRegion><flowPara
|
||||
id="flowPara1046"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1165"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,65.360595,12.398694)"><flowRegion
|
||||
id="flowRegion1167"><rect
|
||||
id="rect1169"
|
||||
width="571.42859"
|
||||
height="428.57144"
|
||||
x="-188.57143"
|
||||
y="-117.30562" /></flowRegion><flowPara
|
||||
id="flowPara1171"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1173"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,12.398694)"><flowRegion
|
||||
id="flowRegion1175"><rect
|
||||
id="rect1177"
|
||||
width="731.42859"
|
||||
height="405.71429"
|
||||
x="-262.85715"
|
||||
y="-93.12867" /></flowRegion><flowPara
|
||||
id="flowPara1179"></flowPara></flowRoot> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,351 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="61.300194mm"
|
||||
height="25.311052mm"
|
||||
viewBox="0 0 61.300194 25.311053"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="indirect_effect.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
offset_points="2,3.6329516"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect839"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect837"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect835"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect831"
|
||||
is_visible="true"
|
||||
offset_points="2,0.30211571"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect827"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect825"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect821"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect817"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.620771"
|
||||
inkscape:cx="90.846657"
|
||||
inkscape:cy="42.114894"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-125.27945,-28.156825)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19011892px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 164.3403,28.310526 c -0.15905,5.664068 -0.0296,12.651483 0,24.98708 L 186.38669,39.66829 Z"
|
||||
id="path851"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="102.50623"
|
||||
y="34.445686"
|
||||
id="text902"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan900"
|
||||
x="102.50623"
|
||||
y="43.809456"
|
||||
style="stroke-width:0.26458332" /></text>
|
||||
<image
|
||||
y="39.366489"
|
||||
x="146.44615"
|
||||
id="image1154"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAICAYAAADqSp8ZAAAABHNCSVQICAgIfAhkiAAAAE1JREFU KJHtzTENACEMQNFfQoKJimGpNCzioAqadGA51jPQm+4ZeGJmT2ZSbc7JWkv63ht3Lw/POQA0ESnP 3tqn2x9W6BGBqpZHYwwALgNAEnhX/xm3AAAAAElFTkSuQmCC "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4290984"
|
||||
width="1.0480868" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="144.32948"
|
||||
id="image1255"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="142.21281"
|
||||
id="image1277"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="140.09613"
|
||||
id="image1299"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="137.97946"
|
||||
id="image1321"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="135.86279"
|
||||
id="image1343"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.366489"
|
||||
x="150.66925"
|
||||
id="image1376"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.366489"
|
||||
x="148.55257"
|
||||
id="image1398"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.255047"
|
||||
x="154.88794"
|
||||
id="image1420"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.255047"
|
||||
x="152.77127"
|
||||
id="image1453"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.255047"
|
||||
x="157.00461"
|
||||
id="image1475"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.255047"
|
||||
x="159.12128"
|
||||
id="image1497"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.255047"
|
||||
x="161.23795"
|
||||
id="image1519"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.255047"
|
||||
x="163.35461"
|
||||
id="image1541"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3 XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg== "
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="133.74612"
|
||||
id="image925"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI
|
||||
mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3
|
||||
XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg==
|
||||
"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="131.62946"
|
||||
id="image965"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI
|
||||
mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3
|
||||
XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg==
|
||||
"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="129.51279"
|
||||
id="image1005"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI
|
||||
mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3
|
||||
XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg==
|
||||
"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="127.39612"
|
||||
id="image1045"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI
|
||||
mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3
|
||||
XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg==
|
||||
"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
<image
|
||||
y="39.356003"
|
||||
x="125.27945"
|
||||
id="image1085"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAANCAIAAAABnFjhAAAAA3NCSVQICAjb4U/gAAAAW0lEQVQI
|
||||
mX3OsQ3AIBADQP+HDWAMGIF9mBwJfUOFqHCKECVp4u5kybKUUnrva60Y4zHGqLW21uaczszMDID3
|
||||
XnGHpKpui8jTfADgBySftXfjSIYQNnLO17eU0glzcivdmlVTEwAAAABJRU5ErkJggg==
|
||||
"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="1.0583333" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
@ -0,0 +1,195 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="59.590939mm"
|
||||
height="19.638334mm"
|
||||
viewBox="0 0 59.590939 19.638334"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="inhibition_repression.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
offset_points="2,3.6329516"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect839"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect837"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect835"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect831"
|
||||
is_visible="true"
|
||||
offset_points="2,0.30211571"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect827"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect825"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect821"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect817"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.7063299"
|
||||
inkscape:cx="120.25464"
|
||||
inkscape:cy="38.019582"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-77.364146,-30.888885)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 78.105519,42.357092 h 54.635161 v -3.197185 h -55.0475 v 3.197185 z"
|
||||
id="path847"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="102.50623"
|
||||
y="34.445686"
|
||||
id="text902"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan900"
|
||||
x="102.50623"
|
||||
y="43.809456"
|
||||
style="stroke-width:0.26458332" /></text>
|
||||
<image
|
||||
y="-136.98935"
|
||||
x="30.741003"
|
||||
id="image5891"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANMAAAAPCAYAAAB++/qNAAAABHNCSVQICAgIfAhkiAAAAF5JREFU aIHt00ENgDAUBcEPQURF9VC/dcANRSCClzSQGQV72a2q7gJeGWOc++oI+AszQYiZIMRMEGImCDET hJgJQswEIWaCEDNBiJkgxEwQYiYIOXrv1+oI+LrW2nwA4CAFkdZMm7MAAAAASUVORK5CYII= "
|
||||
preserveAspectRatio="none"
|
||||
height="3.96875"
|
||||
width="19.633934"
|
||||
transform="rotate(90.063705)"
|
||||
inkscape:transform-center-x="-2.2159022"
|
||||
inkscape:transform-center-y="0.48666674"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.2 KiB |
@ -0,0 +1,179 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="svg911"
|
||||
width="52.916668mm"
|
||||
height="13.229167mm"
|
||||
viewBox="0 0 200.00001 50.000003"
|
||||
sodipodi:docname="legend2.svg"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
|
||||
<metadata
|
||||
id="metadata917">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs915">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4811">
|
||||
<stop
|
||||
id="stop4809"
|
||||
offset="0"
|
||||
style="stop-color:#d50000;stop-opacity:0;" />
|
||||
<stop
|
||||
id="stop4807"
|
||||
offset="1"
|
||||
style="stop-color:#d50000;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4731">
|
||||
<stop
|
||||
style="stop-color:#006cf0;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4727" />
|
||||
<stop
|
||||
style="stop-color:#006cf0;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4729" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4731"
|
||||
id="linearGradient4733"
|
||||
x1="-0.17253789"
|
||||
y1="25.042307"
|
||||
x2="100.00731"
|
||||
y2="25.222162"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0.17252813,-50.042305)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4811"
|
||||
id="linearGradient4813"
|
||||
x1="100.71942"
|
||||
y1="78.592888"
|
||||
x2="199.82014"
|
||||
y2="78.053322"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="translate(0.17984813,-53.053322)" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1656"
|
||||
inkscape:window-height="1148"
|
||||
id="namedview913"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
showborder="false"
|
||||
units="mm"
|
||||
inkscape:snap-global="true"
|
||||
inkscape:lockguides="false"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:snap-others="true"
|
||||
inkscape:snap-object-midpoints="false"
|
||||
inkscape:snap-center="false"
|
||||
inkscape:snap-text-baseline="false"
|
||||
inkscape:snap-page="false"
|
||||
inkscape:snap-grids="false"
|
||||
inkscape:snap-to-guides="false"
|
||||
inkscape:zoom="5.56"
|
||||
inkscape:cx="99.820137"
|
||||
inkscape:cy="24.100706"
|
||||
inkscape:window-x="498"
|
||||
inkscape:window-y="137"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg911" />
|
||||
<rect
|
||||
style="opacity:0;fill:#ff0000;fill-opacity:1"
|
||||
id="rect3244"
|
||||
width="566"
|
||||
height="60"
|
||||
x="-1.2012482"
|
||||
y="725.41571" />
|
||||
<rect
|
||||
style="opacity:0;fill:#ff0000;fill-opacity:1"
|
||||
id="rect3246"
|
||||
width="9.6165047"
|
||||
height="153.86407"
|
||||
x="362.85217"
|
||||
y="586.21667" />
|
||||
<rect
|
||||
style="opacity:0;fill:#ff0000;fill-opacity:1"
|
||||
id="rect3248"
|
||||
width="453.34952"
|
||||
height="157.98544"
|
||||
x="2.920105"
|
||||
y="457.08075" />
|
||||
<rect
|
||||
style="opacity:0;fill:#ff0000;fill-opacity:1"
|
||||
id="rect3250"
|
||||
width="695.13593"
|
||||
height="208.81554"
|
||||
x="-108.3566"
|
||||
y="430.97882" />
|
||||
<rect
|
||||
style="opacity:0;fill:#ff0000;fill-opacity:1"
|
||||
id="rect3252"
|
||||
width="571.49512"
|
||||
height="277.50485"
|
||||
x="-8.0701904"
|
||||
y="1006.5953" />
|
||||
<ellipse
|
||||
style="opacity:0;fill:#ff0000;fill-opacity:1"
|
||||
id="path3254"
|
||||
cx="160.90553"
|
||||
cy="388.39148"
|
||||
rx="97.538834"
|
||||
ry="125.01456" />
|
||||
<ellipse
|
||||
style="opacity:0;fill:#ff0000;fill-opacity:1"
|
||||
id="path3256"
|
||||
cx="102.51961"
|
||||
cy="430.29193"
|
||||
rx="236.97815"
|
||||
ry="176.53156" />
|
||||
<rect
|
||||
style="opacity:1;fill:url(#linearGradient4733);fill-opacity:1;fill-rule:nonzero"
|
||||
id="rect4717"
|
||||
width="200"
|
||||
height="50"
|
||||
x="0"
|
||||
y="-50"
|
||||
transform="scale(1,-1)" />
|
||||
<rect
|
||||
style="opacity:1;fill:url(#linearGradient4813);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-opacity:1"
|
||||
id="rect4805"
|
||||
width="200"
|
||||
height="50"
|
||||
x="0"
|
||||
y="0" />
|
||||
</svg>
|
After Width: | Height: | Size: 4.8 KiB |
@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="199.99998mm"
|
||||
height="50mm"
|
||||
viewBox="0 0 199.99998 50"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="legend_bool.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
id="linearGradient2275"
|
||||
osb:paint="solid">
|
||||
<stop
|
||||
style="stop-color:#006cf0;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2273" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="1.1845499"
|
||||
inkscape:cx="378.20274"
|
||||
inkscape:cy="94.488189"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
showborder="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-5.2916665,-8.2261925)">
|
||||
<rect
|
||||
style="opacity:1;fill:#006cf0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.18708865;stroke-opacity:1"
|
||||
id="rect815"
|
||||
width="100"
|
||||
height="50"
|
||||
x="5.2916665"
|
||||
y="8.2261925" />
|
||||
<rect
|
||||
style="opacity:1;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.26458332;stroke-opacity:1"
|
||||
id="rect2307"
|
||||
width="100"
|
||||
height="50"
|
||||
x="105.29166"
|
||||
y="8.2261925" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
@ -0,0 +1,368 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="94.429123mm"
|
||||
height="42.639469mm"
|
||||
viewBox="0 0 94.429124 42.63947"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="methylation.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843-8"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839-3"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837-9"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835-0"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831-5"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827-2"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825-2"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821-7"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817-3"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="-382.12718"
|
||||
inkscape:cy="-354.50146"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="362"
|
||||
inkscape:window-y="418"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-51.815197,-12.398694)">
|
||||
<g
|
||||
transform="translate(-9.737339,-3.0989429)"
|
||||
id="layer1-0"
|
||||
inkscape:label="Ebene 1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 62.293909,41.380946 h 54.635201 v 3.197185 H 61.88157 v -3.197185 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path851"
|
||||
d="m 133.11604,57.919226 c 0.31713,-8.419133 0.31696,-18.063845 0.1892,-31.206569 L 110.97313,43.40644 Z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21335374px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text902"
|
||||
y="34.445686"
|
||||
x="102.50623"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.26458332"
|
||||
y="43.809456"
|
||||
x="102.50623"
|
||||
id="tspan900"
|
||||
sodipodi:role="line" /></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path850"
|
||||
d="m 133.30903,26.710989 22.48514,14.18695 -22.48514,17.024339 V 26.710989 l 22.48514,14.18695 -22.48514,17.024339 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21360484px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="74.839287"
|
||||
y="27.880953"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="74.839287"
|
||||
y="37.24472"
|
||||
style="font-size:14.11111069px;stroke-width:0.26458332" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
id="text960"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan958"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
style="font-size:24.69444466px;stroke-width:0.26458332">+m</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1040"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="scale(0.26458333)"><flowRegion
|
||||
id="flowRegion1042"><rect
|
||||
id="rect1044"
|
||||
width="800"
|
||||
height="394.28571"
|
||||
x="-134.28572"
|
||||
y="-63.194599" /></flowRegion><flowPara
|
||||
id="flowPara1046"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1165"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,65.360595,12.398694)"><flowRegion
|
||||
id="flowRegion1167"><rect
|
||||
id="rect1169"
|
||||
width="571.42859"
|
||||
height="428.57144"
|
||||
x="-188.57143"
|
||||
y="-117.30562" /></flowRegion><flowPara
|
||||
id="flowPara1171"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1173"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,12.398694)"><flowRegion
|
||||
id="flowRegion1175"><rect
|
||||
id="rect1177"
|
||||
width="731.42859"
|
||||
height="405.71429"
|
||||
x="-262.85715"
|
||||
y="-93.12867" /></flowRegion><flowPara
|
||||
id="flowPara1179"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1341"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,14.050617)"><flowRegion
|
||||
id="flowRegion1343"><rect
|
||||
id="rect1345"
|
||||
width="700"
|
||||
height="451.42856"
|
||||
x="-311.42856"
|
||||
y="-119.37215" /></flowRegion><flowPara
|
||||
id="flowPara1347"></flowPara></flowRoot> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="90.658752mm"
|
||||
height="31.532946mm"
|
||||
viewBox="0 0 90.658752 31.532946"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="missing_interaction.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
offset_points="2,3.6329516"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect839"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect837"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect835"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect831"
|
||||
is_visible="true"
|
||||
offset_points="2,0.30211571"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect827"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect825"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect821"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect817"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.620771"
|
||||
inkscape:cx="29.953009"
|
||||
inkscape:cy="59.589817"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1418"
|
||||
inkscape:window-x="-3"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-77.577272,-26.558506)">
|
||||
<rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect340"
|
||||
width="9.261137"
|
||||
height="3.3664281"
|
||||
x="79.188202"
|
||||
y="39.620533" />
|
||||
<image
|
||||
y="39.651867"
|
||||
x="92.671944"
|
||||
id="image359"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAANCAYAAADBo8xmAAAABHNCSVQICAgIfAhkiAAAADxJREFU
|
||||
OI1jZGBg+M8wSEBDQwMz00A7Ah2MOogQGHUQITDqIEJg1EGEwKiDCAFGc3PzNwPtCBg4efKkCADp
|
||||
bQab0EnF1QAAAABJRU5ErkJggg==
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.5249996" />
|
||||
<image
|
||||
y="39.449955"
|
||||
x="106.70486"
|
||||
id="image379"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAANCAIAAABOwVsxAAAAA3NCSVQICAjb4U/gAAAAKklEQVQ4
|
||||
jWNgoBf49+8fE90sY2BgGLVs1LJRy0YtIx+wuLm50ccmRkZGANzIA+qvEQv4AAAAAElFTkSuQmCC
|
||||
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.5249996" />
|
||||
<image
|
||||
y="39.550915"
|
||||
x="120.7378"
|
||||
id="image399"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAANCAIAAABOwVsxAAAAA3NCSVQICAjb4U/gAAAAKklEQVQ4
|
||||
jWNgoBf49+8fE90sY2BgGLVs1LJRy0YtIx+wuLm50ccmRkZGANzIA+qvEQv4AAAAAElFTkSuQmCC
|
||||
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.5249996" />
|
||||
<image
|
||||
y="39.620533"
|
||||
x="134.22148"
|
||||
id="image419"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAANCAIAAABOwVsxAAAAA3NCSVQICAjb4U/gAAAAKklEQVQ4
|
||||
jWNgoBf49+8fE90sY2BgGLVs1LJRy0YtIx+wuLm50ccmRkZGANzIA+qvEQv4AAAAAElFTkSuQmCC
|
||||
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.5249996" />
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 133.32139,26.75261 34.59056,14.149131 -34.59056,16.978957 z"
|
||||
id="path338"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="102.50623"
|
||||
y="34.445686"
|
||||
id="text902"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan900"
|
||||
x="102.50623"
|
||||
y="43.809456"
|
||||
style="stroke-width:0.26458332" /></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.4 KiB |
@ -0,0 +1,172 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="210mm"
|
||||
height="297mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="molecular_events.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
offset_points="2,3.6329516"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect839"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect837"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect835"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect831"
|
||||
is_visible="true"
|
||||
offset_points="2,0.30211571"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect827"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect825"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect821"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect817"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.84145287"
|
||||
inkscape:cx="232.75292"
|
||||
inkscape:cy="823.74893"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19623141px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 78.294639,38.721467 h 83.325621 v 4.842871 H 77.665766 v -4.842871 z"
|
||||
id="path847"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26579934px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 133.32139,26.75261 c 10.58194,8.628597 14.66437,18.330482 0,31.128088 l 34.59056,-16.978957 z"
|
||||
id="path851"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.2 KiB |
@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="90.078751mm"
|
||||
height="31.369284mm"
|
||||
viewBox="0 0 90.078751 31.369284"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="multiple_interactions.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.57192761"
|
||||
inkscape:cx="243.69718"
|
||||
inkscape:cy="-314.85697"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="535"
|
||||
inkscape:window-y="315"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-62.727394,-33.824809)">
|
||||
<rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.90072626;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect119"
|
||||
width="61.661617"
|
||||
height="3.8126364"
|
||||
x="62.727394"
|
||||
y="46.817169" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 117.89299,33.947253 34.59056,14.149131 -34.59056,16.978953 16.21098,-15.370768 z"
|
||||
id="path139"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.4 KiB |
236
resources/app/app/BioGraphVisart-master/static/legends/other.svg
Normal file
@ -0,0 +1,236 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="90.658752mm"
|
||||
height="31.532946mm"
|
||||
viewBox="0 0 90.658752 31.532946"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="other.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
offset_points="2,3.6329516"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect839"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect837"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect835"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect831"
|
||||
is_visible="true"
|
||||
offset_points="2,0.30211571"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect827"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect825"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect821"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect817"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.620771"
|
||||
inkscape:cx="160.83053"
|
||||
inkscape:cy="59.589817"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="470"
|
||||
inkscape:window-y="178"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-77.577272,-26.558506)">
|
||||
<path
|
||||
style="fill:#000000;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 133.32139,26.75261 34.59056,14.148842 -34.59056,16.979246 c 0,0 8.57851,-10.5101 8.37938,-16.749904 -0.17695,-5.54441 -8.37938,-14.378184 -8.37938,-14.378184 z"
|
||||
id="path31"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccac" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="102.50623"
|
||||
y="34.445686"
|
||||
id="text902"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan900"
|
||||
x="102.50623"
|
||||
y="43.809456"
|
||||
style="stroke-width:0.26458332" /></text>
|
||||
<rect
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="rect115"
|
||||
width="9.260417"
|
||||
height="3.4395833"
|
||||
x="136.97339"
|
||||
y="39.04937" />
|
||||
<image
|
||||
y="-42.489452"
|
||||
x="123.30527"
|
||||
id="image134"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAANCAIAAACsHUBIAAAAA3NCSVQICAjb4U/gAAAAFElEQVQ4
|
||||
jWNgGAWjYBSMglFAGwAABWIAAT+OtcUAAAAASUVORK5CYII=
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.260417"
|
||||
transform="scale(1,-1)" />
|
||||
<image
|
||||
y="39.04987"
|
||||
x="109.29133"
|
||||
id="image154"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAANCAIAAACsHUBIAAAAA3NCSVQICAjb4U/gAAAAFElEQVQ4
|
||||
jWNgGAWjYBSMglFAGwAABWIAAT+OtcUAAAAASUVORK5CYII=
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.260417" />
|
||||
<image
|
||||
y="39.04987"
|
||||
x="95.391792"
|
||||
id="image174"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAANCAIAAACsHUBIAAAAA3NCSVQICAjb4U/gAAAAFElEQVQ4
|
||||
jWNgGAWjYBSMglFAGwAABWIAAT+OtcUAAAAASUVORK5CYII=
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.260417" />
|
||||
<image
|
||||
y="39.04987"
|
||||
x="81.805122"
|
||||
id="image194"
|
||||
xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAANCAIAAACsHUBIAAAAA3NCSVQICAjb4U/gAAAAFElEQVQ4
|
||||
jWNgGAWjYBSMglFAGwAABWIAAT+OtcUAAAAASUVORK5CYII=
|
||||
"
|
||||
style="image-rendering:optimizeQuality"
|
||||
preserveAspectRatio="none"
|
||||
height="3.4395833"
|
||||
width="9.260417" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.4 KiB |
@ -0,0 +1,357 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="94.429123mm"
|
||||
height="42.639469mm"
|
||||
viewBox="0 0 94.429124 42.63947"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="phosphorylation.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843-8"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839-3"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837-9"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835-0"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831-5"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827-2"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825-2"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821-7"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817-3"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="-501.55126"
|
||||
inkscape:cy="-354.50145"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="362"
|
||||
inkscape:window-y="418"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-51.815197,-12.398694)">
|
||||
<g
|
||||
transform="translate(-9.737339,-3.0989429)"
|
||||
id="layer1-0"
|
||||
inkscape:label="Ebene 1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 62.293909,41.380946 h 54.635201 v 3.197185 H 61.88157 v -3.197185 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path851"
|
||||
d="m 133.11604,57.919226 c 0.31713,-8.419133 0.31696,-18.063845 0.1892,-31.206569 L 110.97313,43.40644 Z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21335374px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text902"
|
||||
y="34.445686"
|
||||
x="102.50623"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.26458332"
|
||||
y="43.809456"
|
||||
x="102.50623"
|
||||
id="tspan900"
|
||||
sodipodi:role="line" /></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path850"
|
||||
d="m 133.30903,26.710989 22.48514,14.18695 -22.48514,17.024339 V 26.710989 l 22.48514,14.18695 -22.48514,17.024339 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21360484px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="74.839287"
|
||||
y="27.880953"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="74.839287"
|
||||
y="37.24472"
|
||||
style="font-size:14.11111069px;stroke-width:0.26458332" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
id="text960"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan958"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
style="font-size:24.69444466px;stroke-width:0.26458332">+p</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1040"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="scale(0.26458333)"><flowRegion
|
||||
id="flowRegion1042"><rect
|
||||
id="rect1044"
|
||||
width="800"
|
||||
height="394.28571"
|
||||
x="-134.28572"
|
||||
y="-63.194599" /></flowRegion><flowPara
|
||||
id="flowPara1046"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1165"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,65.360595,12.398694)"><flowRegion
|
||||
id="flowRegion1167"><rect
|
||||
id="rect1169"
|
||||
width="571.42859"
|
||||
height="428.57144"
|
||||
x="-188.57143"
|
||||
y="-117.30562" /></flowRegion><flowPara
|
||||
id="flowPara1171"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1173"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,12.398694)"><flowRegion
|
||||
id="flowRegion1175"><rect
|
||||
id="rect1177"
|
||||
width="731.42859"
|
||||
height="405.71429"
|
||||
x="-262.85715"
|
||||
y="-93.12867" /></flowRegion><flowPara
|
||||
id="flowPara1179"></flowPara></flowRoot> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="69.28315mm"
|
||||
height="14mm"
|
||||
viewBox="0 0 69.28315 14"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="state_change.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect843"
|
||||
is_visible="true"
|
||||
offset_points="2,3.6329516"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect839"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect837"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect835"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect831"
|
||||
is_visible="true"
|
||||
offset_points="2,0.30211571"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect827"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect825"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="simplify"
|
||||
id="path-effect821"
|
||||
is_visible="true"
|
||||
steps="1"
|
||||
threshold="0.5"
|
||||
smooth_angles="360"
|
||||
helper_size="0"
|
||||
simplify_individual_paths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplifyJustCoalesce="false" />
|
||||
<inkscape:path-effect
|
||||
effect="powerstroke"
|
||||
id="path-effect817"
|
||||
is_visible="true"
|
||||
offset_points="1,0.13229166"
|
||||
sort_points="true"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
interpolator_beta="0.2"
|
||||
start_linecap_type="zerowidth"
|
||||
linejoin_type="extrp_arc"
|
||||
miter_limit="4"
|
||||
end_linecap_type="zerowidth" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="3.4140695"
|
||||
inkscape:cx="72.640587"
|
||||
inkscape:cy="26.456689"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="1"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-82.860936,-35.776746)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 83.602309,41.087353 h 54.635161 v 3.197185 h -55.0475 v -3.197185 z"
|
||||
id="path847"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="102.50623"
|
||||
y="34.445686"
|
||||
id="text902"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan900"
|
||||
x="102.50623"
|
||||
y="43.809456"
|
||||
style="stroke-width:0.26458332" /></text>
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.27495834px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 138.28157,35.914225 v 13.725042 h 13.72504 V 35.914225 Z"
|
||||
id="path5941"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.8 KiB |
@ -0,0 +1,368 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="94.429123mm"
|
||||
height="42.639469mm"
|
||||
viewBox="0 0 94.429124 42.63947"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 5c3e80d, 2017-08-06"
|
||||
sodipodi:docname="ubiquination.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,3.6329516"
|
||||
is_visible="true"
|
||||
id="path-effect843-8"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect839-3"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect837-9"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect835-0"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="2,0.30211571"
|
||||
is_visible="true"
|
||||
id="path-effect831-5"
|
||||
effect="powerstroke" />
|
||||
<inkscape:path-effect
|
||||
only_selected="false"
|
||||
apply_with_weight="true"
|
||||
apply_no_weight="true"
|
||||
helper_size="0"
|
||||
steps="2"
|
||||
weight="33.333333"
|
||||
is_visible="true"
|
||||
id="path-effect827-2"
|
||||
effect="bspline" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect825-2"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
simplifyJustCoalesce="false"
|
||||
simplifyindividualpaths="false"
|
||||
simplify_just_coalesce="false"
|
||||
simplify_individual_paths="false"
|
||||
helper_size="0"
|
||||
smooth_angles="360"
|
||||
threshold="0.5"
|
||||
steps="1"
|
||||
is_visible="true"
|
||||
id="path-effect821-7"
|
||||
effect="simplify" />
|
||||
<inkscape:path-effect
|
||||
end_linecap_type="zerowidth"
|
||||
miter_limit="4"
|
||||
linejoin_type="extrp_arc"
|
||||
start_linecap_type="zerowidth"
|
||||
interpolator_beta="0.2"
|
||||
interpolator_type="CubicBezierJohan"
|
||||
sort_points="true"
|
||||
offset_points="1,0.13229166"
|
||||
is_visible="true"
|
||||
id="path-effect817-3"
|
||||
effect="powerstroke" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="-382.12719"
|
||||
inkscape:cy="-354.50147"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1440"
|
||||
inkscape:window-height="855"
|
||||
inkscape:window-x="362"
|
||||
inkscape:window-y="418"
|
||||
inkscape:window-maximized="0"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Ebene 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-51.815197,-12.398694)">
|
||||
<g
|
||||
transform="translate(-9.737339,-3.0989429)"
|
||||
id="layer1-0"
|
||||
inkscape:label="Ebene 1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 62.293909,41.380946 h 54.635201 v 3.197185 H 61.88157 v -3.197185 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.65806717;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path851"
|
||||
d="m 133.11604,57.919226 c 0.31713,-8.419133 0.31696,-18.063845 0.1892,-31.206569 L 110.97313,43.40644 Z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21335374px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<text
|
||||
id="text902"
|
||||
y="34.445686"
|
||||
x="102.50623"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
xml:space="preserve"><tspan
|
||||
style="stroke-width:0.26458332"
|
||||
y="43.809456"
|
||||
x="102.50623"
|
||||
id="tspan900"
|
||||
sodipodi:role="line" /></text>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path850"
|
||||
d="m 133.30903,26.710989 22.48514,14.18695 -22.48514,17.024339 V 26.710989 l 22.48514,14.18695 -22.48514,17.024339 z"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.21360484px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="74.839287"
|
||||
y="27.880953"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="74.839287"
|
||||
y="37.24472"
|
||||
style="font-size:14.11111069px;stroke-width:0.26458332" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
id="text960"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan958"
|
||||
x="62.744045"
|
||||
y="27.880953"
|
||||
style="font-size:24.69444466px;stroke-width:0.26458332">+u</tspan></text>
|
||||
<flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1040"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="scale(0.26458333)"><flowRegion
|
||||
id="flowRegion1042"><rect
|
||||
id="rect1044"
|
||||
width="800"
|
||||
height="394.28571"
|
||||
x="-134.28572"
|
||||
y="-63.194599" /></flowRegion><flowPara
|
||||
id="flowPara1046"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1165"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,65.360595,12.398694)"><flowRegion
|
||||
id="flowRegion1167"><rect
|
||||
id="rect1169"
|
||||
width="571.42859"
|
||||
height="428.57144"
|
||||
x="-188.57143"
|
||||
y="-117.30562" /></flowRegion><flowPara
|
||||
id="flowPara1171"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1173"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,12.398694)"><flowRegion
|
||||
id="flowRegion1175"><rect
|
||||
id="rect1177"
|
||||
width="731.42859"
|
||||
height="405.71429"
|
||||
x="-262.85715"
|
||||
y="-93.12867" /></flowRegion><flowPara
|
||||
id="flowPara1179"></flowPara></flowRoot> <flowRoot
|
||||
xml:space="preserve"
|
||||
id="flowRoot1341"
|
||||
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,51.815197,14.050617)"><flowRegion
|
||||
id="flowRegion1343"><rect
|
||||
id="rect1345"
|
||||
width="700"
|
||||
height="451.42856"
|
||||
x="-311.42856"
|
||||
y="-119.37215" /></flowRegion><flowPara
|
||||
id="flowPara1347"></flowPara></flowRoot> </g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
320
resources/app/app/BioGraphVisart-master/static/package-lock.json
generated
Normal file
@ -0,0 +1,320 @@
|
||||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "1.6.2",
|
||||
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
|
||||
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^2.2.2",
|
||||
"typedarray": "^0.0.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"decompress-response": {
|
||||
"version": "3.3.0",
|
||||
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
|
||||
"integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
|
||||
"requires": {
|
||||
"mimic-response": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"duplexer3": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
|
||||
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
|
||||
},
|
||||
"extract-zip": {
|
||||
"version": "1.6.7",
|
||||
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
|
||||
"integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
|
||||
"requires": {
|
||||
"concat-stream": "1.6.2",
|
||||
"debug": "2.6.9",
|
||||
"mkdirp": "0.5.1",
|
||||
"yauzl": "2.4.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
}
|
||||
}
|
||||
},
|
||||
"fd-slicer": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
|
||||
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
|
||||
"requires": {
|
||||
"pend": "~1.2.0"
|
||||
}
|
||||
},
|
||||
"get-stream": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
|
||||
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
|
||||
},
|
||||
"got": {
|
||||
"version": "7.1.0",
|
||||
"resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz",
|
||||
"integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==",
|
||||
"requires": {
|
||||
"decompress-response": "^3.2.0",
|
||||
"duplexer3": "^0.1.4",
|
||||
"get-stream": "^3.0.0",
|
||||
"is-plain-obj": "^1.1.0",
|
||||
"is-retry-allowed": "^1.0.0",
|
||||
"is-stream": "^1.0.0",
|
||||
"isurl": "^1.0.0-alpha5",
|
||||
"lowercase-keys": "^1.0.0",
|
||||
"p-cancelable": "^0.3.0",
|
||||
"p-timeout": "^1.1.1",
|
||||
"safe-buffer": "^5.0.1",
|
||||
"timed-out": "^4.0.0",
|
||||
"url-parse-lax": "^1.0.0",
|
||||
"url-to-options": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"has-symbol-support-x": {
|
||||
"version": "1.4.2",
|
||||
"resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
|
||||
"integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw=="
|
||||
},
|
||||
"has-to-string-tag-x": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
|
||||
"integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
|
||||
"requires": {
|
||||
"has-symbol-support-x": "^1.4.1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"is-object": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
|
||||
"integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA="
|
||||
},
|
||||
"is-plain-obj": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
|
||||
"integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
|
||||
},
|
||||
"is-retry-allowed": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
|
||||
"integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg=="
|
||||
},
|
||||
"is-stream": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
|
||||
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
},
|
||||
"isurl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
|
||||
"integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
|
||||
"requires": {
|
||||
"has-to-string-tag-x": "^1.2.0",
|
||||
"is-object": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"lowercase-keys": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
|
||||
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.40.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
|
||||
"integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA=="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.24",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
|
||||
"integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
|
||||
"requires": {
|
||||
"mime-db": "1.40.0"
|
||||
}
|
||||
},
|
||||
"mimic-response": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
|
||||
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
|
||||
},
|
||||
"minimist": {
|
||||
"version": ">=1.2.2"
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
||||
},
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
|
||||
},
|
||||
"p-cancelable": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
|
||||
"integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw=="
|
||||
},
|
||||
"p-finally": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
|
||||
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
|
||||
},
|
||||
"p-timeout": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz",
|
||||
"integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=",
|
||||
"requires": {
|
||||
"p-finally": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"pend": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
|
||||
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
|
||||
},
|
||||
"prepend-http": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
|
||||
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"timed-out": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
|
||||
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
||||
"requires": {
|
||||
"os-tmpdir": "~1.0.2"
|
||||
}
|
||||
},
|
||||
"tunnel": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
|
||||
},
|
||||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
|
||||
},
|
||||
"url-parse-lax": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
|
||||
"integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
|
||||
"requires": {
|
||||
"prepend-http": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"url-to-options": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
|
||||
"integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k="
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"yauzl": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
|
||||
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
|
||||
"requires": {
|
||||
"fd-slicer": "~1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,899 @@
|
||||
// create dropdown for node attributes
|
||||
function createSele(){
|
||||
var sele = document.createElement("OPTION");
|
||||
sele.text = "Color attribute";
|
||||
sele.value = "";
|
||||
sele.disabled = true
|
||||
|
||||
return sele;
|
||||
}
|
||||
|
||||
//create dropdown for layout
|
||||
function createLayoutSele(){
|
||||
var seleLayout =document.createElement("OPTION");
|
||||
seleLayout.text = "Layout";
|
||||
return seleLayout;
|
||||
}
|
||||
|
||||
// add layout options
|
||||
function addLayoutOptions(graphLayout, layoutOpt){
|
||||
var optnLayout = document.createElement("li");
|
||||
optnLayout.innerHTML="<a href='#'>"+graphLayout+"</a>";
|
||||
if(graphLayout == "cose-bilkent"){
|
||||
optnLayout.innerHTML="<a href='#'><i class='fas fa-check "+ layoutOpt+"' style='margin-right:5px'></i>"+graphLayout+"</a>";
|
||||
}
|
||||
optnLayout.id=graphLayout;
|
||||
return optnLayout;
|
||||
}
|
||||
|
||||
// add legend for node color
|
||||
function addcolorlegend(cy){
|
||||
cy.$('node[id = "l1"]')
|
||||
.style('color', 'black')
|
||||
.style('background-height',50)
|
||||
.style('background-width',200)
|
||||
.style('background-position-y','100%')
|
||||
.style('shape','rectangle')
|
||||
.style('width',200)
|
||||
.style('height',50)
|
||||
.style('border-width',1)
|
||||
.style('text-valign' , 'bottom')
|
||||
.style('text-max-width', 200)
|
||||
}
|
||||
|
||||
// create label for color legend
|
||||
function calculateLabelColorLegend(labelVal, fontSize, cy, nodesMin, nodesMax){
|
||||
var whitespace = getTextWidth(' ', fontSize +" arial");
|
||||
var minspace = getTextWidth(nodesMin, fontSize +" arial");
|
||||
var valspace = getTextWidth(labelVal, fontSize +" arial");
|
||||
var maxspace = getTextWidth(nodesMax, fontSize +" arial");
|
||||
var neededWhitespace =
|
||||
((200-(minspace+whitespace+valspace+whitespace+maxspace))/whitespace)/2;
|
||||
if(neededWhitespace <= 0){
|
||||
while(neededWhitespace <= 0){
|
||||
labelVal = labelVal.slice(0, -1);
|
||||
valspace = getTextWidth(labelVal+'...', fontSize +" arial");
|
||||
neededWhitespace =
|
||||
((200-(minspace+whitespace+valspace+whitespace+maxspace))/
|
||||
whitespace)/2;
|
||||
}
|
||||
labelVal = labelVal+'...';
|
||||
}
|
||||
if(!isNaN(nodesMin)){
|
||||
cy.$('node[id = "l1"]')
|
||||
.style('background-image',backgroundimg_num)
|
||||
}
|
||||
else{
|
||||
cy.$('node[id = "l1"]')
|
||||
.style('background-image',backgroundimg_bool)
|
||||
}
|
||||
cy.$('node[id = "l1"]')
|
||||
.style('label', nodesMin+' '+' '.repeat(neededWhitespace)+ labelVal +' '
|
||||
+' '.repeat(neededWhitespace) + nodesMax)
|
||||
|
||||
}
|
||||
function appendText(text, interact){
|
||||
if(text != ""){
|
||||
text = text + ", "
|
||||
}
|
||||
text = text + capitalize(interact);
|
||||
return text;
|
||||
}
|
||||
|
||||
function createImg(){
|
||||
var img = document.createElement('img');
|
||||
img.width =40;
|
||||
img.height =30;
|
||||
return img;
|
||||
}
|
||||
const capitalize = (s) => {
|
||||
if (typeof s !== 'string') return ''
|
||||
return s.charAt(0).toUpperCase() + s.slice(1)
|
||||
}
|
||||
|
||||
function appendToInteractionLegend(table, text, img){
|
||||
// Insert a row in the table at the last row
|
||||
var newRow = table.insertRow();
|
||||
// Insert a cells
|
||||
var newInteraction = newRow.insertCell(0);
|
||||
var newArrow = newRow.insertCell(1);
|
||||
var newText = document.createTextNode(text);
|
||||
newInteraction.appendChild(newText);
|
||||
newArrow.appendChild(img);
|
||||
}
|
||||
// create legend for edges
|
||||
function createInteractionLegend(interactionTypes, graphLeft, edgesToMerge, graphRight=undefined, edgesToMergeRight = null) {
|
||||
// show legend and update if necessary
|
||||
var table = document.getElementById('arrows');
|
||||
if(table.rows.length == 0){
|
||||
var i = 0;
|
||||
var otherisset = false;
|
||||
var firstText = "";
|
||||
var secondText = "";
|
||||
var thirdText = "";
|
||||
var fourthText = "";
|
||||
var fifthText = "";
|
||||
var sixthText = "";
|
||||
var seventhText = "";
|
||||
var eightthText = "";
|
||||
var ninethText = "";
|
||||
var tenthText = "";
|
||||
var eleventhText = "";
|
||||
var twelvethText = "";
|
||||
|
||||
var firstimg = createImg();
|
||||
var secondimg = createImg();
|
||||
var thirdimg = createImg();
|
||||
var fourthimg = createImg();
|
||||
var fifthimg = createImg();
|
||||
var sixthimg = createImg();
|
||||
var seventhimg = createImg();
|
||||
var seventhimg = createImg();
|
||||
var eightthimg = createImg();
|
||||
var ninethimg = createImg();
|
||||
var tenthimg = createImg();
|
||||
var eleventhimg = createImg();
|
||||
var twelvethimg = createImg();
|
||||
for(var interact of interactionTypes){
|
||||
if(["activation", "expression", "stimulation", "targets"].includes(interact)){
|
||||
firstText = appendText(firstText, interact)
|
||||
firstimg.src = activation_expression;
|
||||
}
|
||||
else if(["inhibition", "repression"].includes(interact)){
|
||||
secondText = appendText(secondText, interact)
|
||||
secondimg.src = inhibition_repression;
|
||||
}
|
||||
else if(["compound", "non-covalent binding", "molecular interaction"].includes(interact)){
|
||||
thirdText = appendText(thirdText, interact)
|
||||
thirdimg.src = compound;
|
||||
}
|
||||
else if(["binding/association", "dissociation"].includes(interact)){
|
||||
fourthText = appendText(fourthText, interact)
|
||||
fourthimg.src = bindingassociation_dissociation;
|
||||
}
|
||||
else if(["state change, control"].includes(interact)){
|
||||
fifthText = appendText(fifthText, interact)
|
||||
fifthimg.src = statechange;
|
||||
}
|
||||
else if(["indirect effect"].includes(interact)){
|
||||
sixthText = appendText(sixthText, interact)
|
||||
sixthimg.src = indirecteffect;
|
||||
}
|
||||
else if(["missing interaction"].includes(interact)){
|
||||
seventhText = appendText(seventhText, interact)
|
||||
seventhimg.src = missinginteraction;
|
||||
}
|
||||
else if(["phosphorylation"].includes(interact)){
|
||||
eightthText = appendText(eightthText, interact)
|
||||
eightthimg.src = phosphorylation;
|
||||
}
|
||||
else if(["dephosphorylation"].includes(interact)){
|
||||
ninethText = appendText(ninethText, interact)
|
||||
ninethimg.src = dephosphorylation;
|
||||
}
|
||||
else if(["glycosylation"].includes(interact)){
|
||||
tenthText = appendText(tenthText, interact)
|
||||
tenthimg.src = glycosylation;
|
||||
}
|
||||
else if(["methylation"].includes(interact)){
|
||||
eleventhText = appendText(eleventhText, interact)
|
||||
eleventhimg.src = methylation;
|
||||
}
|
||||
else if(["ubiquitination"].includes(interact)){
|
||||
twelvethText = appendText(twelvethText, interact)
|
||||
twelvethimg.src = ubiquitination;
|
||||
}
|
||||
else{
|
||||
otherisset = true;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if(i == interactionTypes.size){
|
||||
if(firstText != ""){
|
||||
appendToInteractionLegend(table, firstText, firstimg)
|
||||
}
|
||||
if(secondText != ""){
|
||||
appendToInteractionLegend(table, secondText, secondimg)
|
||||
}
|
||||
if(thirdText != ""){
|
||||
appendToInteractionLegend(table, thirdText, thirdimg)
|
||||
}
|
||||
if(fourthText != ""){
|
||||
appendToInteractionLegend(table, fourthText, fourthimg)
|
||||
}
|
||||
if(fifthText != ""){
|
||||
appendToInteractionLegend(table, fifthText, fifthimg)
|
||||
}
|
||||
if(sixthText != ""){
|
||||
appendToInteractionLegend(table, sixthText, sixthimg)
|
||||
}
|
||||
if(seventhText != ""){
|
||||
appendToInteractionLegend(table, seventhText, seventhimg)
|
||||
}
|
||||
if(eightthText != ""){
|
||||
appendToInteractionLegend(table, eightthText, eightthimg)
|
||||
}
|
||||
if(ninethText != ""){
|
||||
appendToInteractionLegend(table, ninethText, ninethimg)
|
||||
}
|
||||
if(tenthText != ""){
|
||||
appendToInteractionLegend(table, tenthText, tenthimg)
|
||||
}
|
||||
if(eleventhText != ""){
|
||||
appendToInteractionLegend(table, eleventhText, eleventhimg)
|
||||
}
|
||||
if(twelvethText != ""){
|
||||
appendToInteractionLegend(table, twelvethText, twelvethimg)
|
||||
}
|
||||
if(otherisset){
|
||||
var img = createImg();
|
||||
img.src = other;
|
||||
appendToInteractionLegend(table, 'Other', img)
|
||||
}
|
||||
|
||||
if(i == interactionTypes.size && (edgesToMerge || edgesToMergeRight)){
|
||||
var newRow = table.insertRow();
|
||||
var multipleInteractions = table.insertRow();
|
||||
var checkMultiple = newRow.insertCell(0);
|
||||
var newArrow = newRow.insertCell(1);
|
||||
|
||||
var newCheckMultiple = document.createElement('input');
|
||||
newCheckMultiple.type = "checkbox";
|
||||
newCheckMultiple.id = "mergeEdges";
|
||||
newCheckMultiple.checked = true;
|
||||
newCheckMultiple.addEventListener('click', function(){
|
||||
mergeEdges(graphLeft);
|
||||
if(graphRight){
|
||||
mergeEdges(graphRight)
|
||||
}
|
||||
});
|
||||
|
||||
var label = document.createElement('label')
|
||||
label.htmlFor = "mergeEdges";
|
||||
label.appendChild(document.createTextNode('Multiple interactions'));
|
||||
|
||||
checkMultiple.appendChild(newCheckMultiple);
|
||||
checkMultiple.appendChild(label)
|
||||
|
||||
var img = createImg();
|
||||
img.src = multipleinteractions;
|
||||
newArrow.appendChild(img);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// merging of multiple edges between two nodes
|
||||
function mergeEdges(cy, cy2=undefined){
|
||||
// do not merge edges
|
||||
if(!document.getElementById("mergeEdges").checked) {
|
||||
loopEdges:
|
||||
for(var i = 0; i<cy.edges().length;i++){
|
||||
var e = cy.edges()[i].data();
|
||||
// find multiple edges
|
||||
if(typeof e.interaction != "string"){
|
||||
// hide merged edge
|
||||
cy.edges('edge[id = "'+e.id+'"]').style('display', 'none');
|
||||
loopInteraction:
|
||||
for(var interact of e.interaction){
|
||||
loopId:
|
||||
for(var j = i; j < cy.edges().length; j++){
|
||||
// single edge is already contained
|
||||
if(cy.edges()[j].data().id == e.id+'_'+interact.trim()){
|
||||
//show single edge
|
||||
cy.edges('edge[id = "'+e.id+'_'+interact.trim()+'"]')
|
||||
.style('display', 'element').update;
|
||||
continue loopInteraction;
|
||||
}
|
||||
}
|
||||
// add single edge to graph
|
||||
cy.add({
|
||||
group: 'edges',
|
||||
data: { id:e.id+'_'+interact.trim(), source:e.source,
|
||||
target:e.target, interaction:interact.trim()},
|
||||
});
|
||||
}
|
||||
}
|
||||
else if(e.interaction.includes(",")){
|
||||
cy.edges()[i].data().interaction = e.interaction.split(",");
|
||||
cy.edges()[i].style('target-arrow-shape', 'vee')
|
||||
.style('line-style','solid').update;
|
||||
i--;
|
||||
}
|
||||
}
|
||||
showMetaInfo(cy);
|
||||
}
|
||||
// merge edge
|
||||
else if(document.getElementById("mergeEdges").checked){
|
||||
for(var i = 0; i < cy.edges().length; i++){
|
||||
var edge = cy.edges()[i]
|
||||
// show merged edges
|
||||
if(edge.hidden()){
|
||||
edge.style('display', 'element').style('target-arrow-shape', 'vee')
|
||||
.style('line-style','solid');
|
||||
}
|
||||
// hide single edges
|
||||
else if(edge.data().id.includes(edge.data().interaction) ||
|
||||
edge.data().id.includes(',')){
|
||||
edge.style('display', 'none');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if(cy2 != undefined){
|
||||
mergeEdges(cy2);
|
||||
}
|
||||
}
|
||||
|
||||
// get nodes and edges grom graphml string
|
||||
function getNodesAndEdges(graphString, nodeVal,graphpos = undefined, noOptn = false){
|
||||
var nodes = [];
|
||||
var edges = [];
|
||||
var nodeValuesNum = [];
|
||||
var interactionTypes = new Set();
|
||||
var edgesToMerge = false;
|
||||
var drugnodes = [];
|
||||
var drugedges = [];
|
||||
var drugtargets = {};
|
||||
if(graphpos == "left"){
|
||||
var leftNodes = [];
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
var rightNodes = [];
|
||||
}
|
||||
|
||||
var prevId = "";
|
||||
var pos = 0;
|
||||
|
||||
var regExp = /\>([^)]+)\</; // get symbol name between > <
|
||||
|
||||
for (var i = 0; i <= graphString.length - 1; i++) {
|
||||
if(graphString[i].includes("node id")){ // get node id
|
||||
var curNode = {};
|
||||
curNode.id = graphString[i].split("\"")[1] ;
|
||||
if(graphpos == "left"){
|
||||
curNode.graph = "g1";
|
||||
leftNodes.push({data: curNode});
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
curNode.graph = "g2";
|
||||
rightNodes.push({data: curNode});
|
||||
}
|
||||
nodes.push({data: curNode});
|
||||
}
|
||||
if(!isEmpty(curNode)){
|
||||
if(graphString[i].includes("key=\"v_") &&
|
||||
!graphString[i].includes("v_id")){
|
||||
var attrname = graphString[i].split("v_")[1].split("\">")[0]
|
||||
var val = graphString[i].split(/\>/)[1].split(/\</)[0]
|
||||
if(attrname == "entrez_gene" && val.includes("http")){
|
||||
val = val.split("/").pop()
|
||||
}
|
||||
if(!isNaN(parseFloat(val)) && attrname != "name"){
|
||||
curNode[attrname] = parseFloat(val);
|
||||
}
|
||||
else{
|
||||
curNode[attrname] = val;
|
||||
}
|
||||
}
|
||||
if(graphString[i].includes("\"v_"+nodeVal+"\"\>")){
|
||||
var val = regExp.exec(graphString[i])[1]; // if availabe get node value
|
||||
if(!isNaN(parseFloat(val))){
|
||||
var splitGraphString = graphString[i].split(" ")
|
||||
attrID = splitGraphString.filter(s => s.includes('key'))[0].split("\"")[1];
|
||||
currVal = {};
|
||||
currVal.val = parseFloat(val);
|
||||
nodeValuesNum.push(currVal.val);
|
||||
}
|
||||
else if(val === "false" || val === "true"){
|
||||
currVal = {};
|
||||
currVal[val] = val;
|
||||
currVal.attr = "boolean";
|
||||
nodeValuesNum.push(currVal);
|
||||
curNode.val = val;
|
||||
}
|
||||
}
|
||||
if(graphString[i].includes("\"v_midrug_id\"\>")){
|
||||
drugnodes.push(curNode.id)
|
||||
}
|
||||
}
|
||||
if(graphString[i].includes("edge source")){ // get edges
|
||||
var curEdge = {};
|
||||
s = graphString[i].split("\"")[1];
|
||||
t = graphString[i].split("\"")[3];
|
||||
curEdge.id = s.concat(t);
|
||||
curEdge.source = s;
|
||||
curEdge.target = t;
|
||||
if(drugnodes.includes(curEdge.source)){
|
||||
if(!drugedges[curEdge.target]){
|
||||
drugedges[curEdge.target] = []
|
||||
}
|
||||
drugedges[curEdge.target].push(curEdge.source)
|
||||
}
|
||||
}
|
||||
if(!isEmpty(curEdge)){
|
||||
if(graphString[i].includes("e_interaction")){ // get edges interaction type
|
||||
var interact = regExp.exec(graphString[i])[1];
|
||||
if(interact.includes(",")){
|
||||
var interactarray = interact.split(",")
|
||||
for(let inter of interactarray){
|
||||
interactionTypes.add(inter);
|
||||
}
|
||||
}
|
||||
else{
|
||||
interactionTypes.add(interact);
|
||||
}
|
||||
|
||||
if(prevId == curEdge.id){ // multiple edges between two nodes
|
||||
if(!Array.isArray(edges[pos-1].data.interaction)){
|
||||
curEdge.interaction=
|
||||
[edges[pos-1].data.interaction, interact]
|
||||
if(graphpos == "left"){
|
||||
leftEdges.splice(pos-1,1)
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
rightEdges.splice(pos-1,1)
|
||||
}
|
||||
edges.splice(pos-1,1)
|
||||
pos = pos -1
|
||||
}
|
||||
else{
|
||||
edges[pos-1].data.interaction.push(interact)
|
||||
if(graphpos == "left"){
|
||||
if(!Array.isArray(leftEdges[pos-1].data.interaction)){
|
||||
leftEdges[pos-1].data.interaction =
|
||||
[leftEdges[pos-1].data.interaction]
|
||||
}
|
||||
leftEdges[pos-1].data.interaction.push(interact);
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
if(!Array.isArray(rightEdges[pos-1].data.interaction)){
|
||||
rightEdges[pos-1].data.interaction =
|
||||
[rightEdges[pos-1].data.interaction]
|
||||
}
|
||||
rightEdges[pos-1].data.interaction.push(interact)
|
||||
}
|
||||
continue;
|
||||
}
|
||||
edgesToMerge = true;
|
||||
}
|
||||
else{
|
||||
curEdge.interaction = interact;
|
||||
}
|
||||
if(graphpos == "left"){
|
||||
curEdge.graph = "g1";
|
||||
leftEdges.push({data: curEdge});
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
curEdge.graph = "g2";
|
||||
rightEdges.push({data: curEdge});
|
||||
}
|
||||
edges.push({data: curEdge} );
|
||||
|
||||
prevId = curEdge.id;
|
||||
pos = pos +1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!noOptn){
|
||||
var legendNode = {};
|
||||
legendNode.id = "l1";
|
||||
legendNode.symbol = "legend";
|
||||
nodes.push({data:legendNode});
|
||||
}
|
||||
return [nodes, edges, nodeValuesNum, interactionTypes, edgesToMerge, drugedges];
|
||||
}
|
||||
|
||||
// get nodes and edges grom sif string
|
||||
function getNodesAndEdgesSIF(graphString, graphpos = undefined, noOptn = false){
|
||||
var nodes = [];
|
||||
var edges = [];
|
||||
var interactionTypes = new Set();
|
||||
var edgesToMerge = false;
|
||||
if(graphpos == "left"){
|
||||
var leftNodes = [];
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
var rightNodes = [];
|
||||
}
|
||||
|
||||
var prevId = "";
|
||||
var pos = 0;
|
||||
var nodesSet = new Set();
|
||||
|
||||
var el = graphString.find(a =>a.includes("\t"));
|
||||
for (var i = 0; i <= graphString.length - 1; i++) {
|
||||
if(el){
|
||||
var nodesAndInteraction = graphString[i].split("\t");
|
||||
}
|
||||
else{
|
||||
var nodesAndInteraction = graphString[i].split(" ");
|
||||
}
|
||||
var n1 = nodesAndInteraction[0].trim();
|
||||
nodesSet.add(n1);
|
||||
var interact = nodesAndInteraction[1].trim();
|
||||
var n2 = nodesAndInteraction[2].trim();
|
||||
nodesSet.add(n2);
|
||||
|
||||
if(interact.includes(",")){
|
||||
var interactarray = interact.split(",")
|
||||
for(let inter of interactarray){
|
||||
interactionTypes.add(inter);
|
||||
}
|
||||
}
|
||||
else{
|
||||
interactionTypes.add(interact);
|
||||
}
|
||||
}
|
||||
var nodesWIDs = {};
|
||||
var j = 0;
|
||||
for(var node of nodesSet){
|
||||
var curNode = {};
|
||||
curNode.id = "n"+j;
|
||||
curNode.name = node;
|
||||
nodesWIDs[node] = curNode.id;
|
||||
j++;
|
||||
if(graphpos == "left"){
|
||||
curNode.graph = "g1";
|
||||
leftNodes.push({data: curNode});
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
curNode.graph = "g2";
|
||||
rightNodes.push({data: curNode});
|
||||
}
|
||||
nodes.push({data: curNode});
|
||||
}
|
||||
for (var i = 0; i <= graphString.length - 1; i++) {
|
||||
var curEdge = {};
|
||||
if(el){
|
||||
var nodesAndInteraction = graphString[i].split("\t");
|
||||
}
|
||||
else{
|
||||
var nodesAndInteraction = graphString[i].split(" ");
|
||||
}
|
||||
var n1 = nodesAndInteraction[0].trim();
|
||||
var interact = nodesAndInteraction[1].trim();
|
||||
var n2 = nodesAndInteraction[2].trim();
|
||||
var s = nodesWIDs[n1];
|
||||
var t = nodesWIDs[n2];
|
||||
curEdge.id = s.concat(t)
|
||||
curEdge.source = s;
|
||||
curEdge.target = t;
|
||||
if(prevId == curEdge.id){ // multiple edges between two nodes
|
||||
if(!Array.isArray(edges[pos-1].data.interaction)){
|
||||
curEdge.interaction=
|
||||
[edges[pos-1].data.interaction, interact]
|
||||
if(graphpos == "left"){
|
||||
leftEdges.splice(pos-1,1)
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
rightEdges.splice(pos-1,1)
|
||||
}
|
||||
edges.splice(pos-1,1)
|
||||
pos = pos -1
|
||||
}
|
||||
else{
|
||||
edges[pos-1].data.interaction.push(interact)
|
||||
if(graphpos == "left"){
|
||||
if(!Array.isArray(leftEdges[pos-1].data.interaction)){
|
||||
leftEdges[pos-1].data.interaction =
|
||||
[leftEdges[pos-1].data.interaction]
|
||||
}
|
||||
leftEdges[pos-1].data.interaction.push(interact);
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
if(!Array.isArray(rightEdges[pos-1].data.interaction)){
|
||||
rightEdges[pos-1].data.interaction =
|
||||
[rightEdges[pos-1].data.interaction]
|
||||
}
|
||||
rightEdges[pos-1].data.interaction.push(interact)
|
||||
}
|
||||
continue;
|
||||
}
|
||||
edgesToMerge = true;
|
||||
}
|
||||
else{
|
||||
curEdge.interaction = interact;
|
||||
}
|
||||
if(graphpos == "left"){
|
||||
curEdge.graph = "g1";
|
||||
leftEdges.push({data: curEdge});
|
||||
}
|
||||
else if(graphpos == "right"){
|
||||
curEdge.graph = "g2";
|
||||
rightEdges.push({data: curEdge});
|
||||
}
|
||||
edges.push({data: curEdge} );
|
||||
|
||||
prevId = curEdge.id;
|
||||
pos = pos +1;
|
||||
}
|
||||
if(!noOptn){
|
||||
var legendNode = {};
|
||||
legendNode.id = "l1";
|
||||
legendNode.symbol = "legend";
|
||||
nodes.push({data:legendNode});
|
||||
}
|
||||
return [nodes, edges, [], interactionTypes, edgesToMerge];
|
||||
}
|
||||
|
||||
//set legends range by min and max of nodes' attributes
|
||||
function legendsRange(nodeValuesNum){
|
||||
if(!isEmpty(nodeValuesNum)){
|
||||
if(!nodeValuesNum.includes("empty")){
|
||||
var nodesMin = nodeValuesNum.reduce(function(a, b) {
|
||||
return parseFloat(Math.min(a, b).toFixed(2));
|
||||
});
|
||||
if(nodesMin > 0){
|
||||
nodesMin = -1;
|
||||
}
|
||||
else if(nodesMin >= 0){
|
||||
nodesMin = -1.0;
|
||||
}
|
||||
var nodesMax = nodeValuesNum.reduce(function(a, b) {
|
||||
return parseFloat(Math.max(a, b).toFixed(2));
|
||||
});
|
||||
if(nodesMax < 0){
|
||||
nodesMax = 1;
|
||||
}
|
||||
|
||||
if(nodesMax <= 0){
|
||||
nodesMax = 1.0;
|
||||
}
|
||||
else if(isNaN(nodesMin) && isNaN(nodesMax)){
|
||||
nodesMin = "false";
|
||||
nodesMax = "true";
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(isEmpty(nodeValuesNum)){
|
||||
var nodesMin = "false";
|
||||
var nodesMax = "true";
|
||||
}
|
||||
return [nodesMin, nodesMax]
|
||||
}
|
||||
|
||||
/* helper functions */
|
||||
// test if object is empty
|
||||
function isEmpty(obj) {
|
||||
for(var key in obj) {
|
||||
if(obj.hasOwnProperty(key))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// show drop downs for nodes' shapes attribute and shape itself
|
||||
function activateNodeShapeChange(){
|
||||
document.getElementById('nodeShapesAttr')
|
||||
.setAttribute('style','visibility:visible');
|
||||
}
|
||||
|
||||
function activateShapes(){
|
||||
document.getElementById('nodeShapes')
|
||||
.setAttribute('style','visibility:visible');
|
||||
}
|
||||
|
||||
// change node shape of nodes with given attribute
|
||||
function changeNodeShapes(cy, container, shapeAttribute, shape){
|
||||
// select nodes with given attribute
|
||||
if(cy.nodes().filter('node['+shapeAttribute+' ="true"]').length > 0){
|
||||
cy.style()
|
||||
.selector('node['+shapeAttribute+' ="true"]')
|
||||
.style('shape', shape)
|
||||
.update();
|
||||
}
|
||||
|
||||
// list all shapes already used
|
||||
usedShapes = []
|
||||
for (var key in usedShapeAttributes) {
|
||||
if (Object.prototype.hasOwnProperty.call(usedShapeAttributes, key)) {
|
||||
var val = usedShapeAttributes[key];
|
||||
usedShapes[val] = key;
|
||||
}
|
||||
}
|
||||
|
||||
// no shapes have been used so far
|
||||
if(isEmpty(usedShapeAttributes)){
|
||||
usedShapeAttributes[shapeAttribute] = shape;
|
||||
shapeNode = cytoscape({
|
||||
container: document.getElementById(container),
|
||||
autolock: true,
|
||||
layout: {
|
||||
name: 'preset'
|
||||
},
|
||||
style: [
|
||||
{selector: 'node',
|
||||
style: {
|
||||
width: 18,
|
||||
height: 18,
|
||||
shape: shape,
|
||||
'background-color': '#666666',
|
||||
label: 'data(id)',
|
||||
'font-size': 10,
|
||||
'overlay-opacity': 0,
|
||||
}
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
shapeNode.userZoomingEnabled( false );
|
||||
shapeNode.add({ // node n1
|
||||
group: 'nodes',
|
||||
|
||||
data: {
|
||||
id: shapeAttribute,
|
||||
},
|
||||
position: { // the model position of the node (optional on init, mandatory after)
|
||||
x: 80,
|
||||
y: 50
|
||||
},
|
||||
locked: true,
|
||||
});
|
||||
ycoord = 50;
|
||||
shapeNode.nodes().ungrabify();
|
||||
|
||||
}
|
||||
// test if shape has been used for another attribute
|
||||
else if(Object.keys(usedShapes).includes(shape)){
|
||||
if(usedShapes[shape] == shapeAttribute) return;
|
||||
var replace =
|
||||
confirm("Shape is already used. Do you want to replace "+
|
||||
usedShapes[shape]+" by "+ shapeAttribute+"?")
|
||||
|
||||
// is shape has been used change previous attributes shape back to ellipse
|
||||
if(replace){
|
||||
delete(usedShapeAttributes[usedShapes[shape]]);
|
||||
ycoord = shapeNode.$('node[id ="'+usedShapes[shape]+'"]')
|
||||
.position()['y']-35;
|
||||
shapeNode.remove('node[id ="'+usedShapes[shape]+'"]');
|
||||
}
|
||||
else return;
|
||||
|
||||
}
|
||||
|
||||
// update shape of a attribute already used
|
||||
if (usedShapeAttributes.hasOwnProperty(shapeAttribute)){
|
||||
if(shape == "ellipse"){
|
||||
shapeNode.remove('node[id ="'+shapeAttribute+'"]')
|
||||
if(shapeNode.nodes().length == 0){
|
||||
usedShapeAttributes = [];
|
||||
}
|
||||
}
|
||||
else{
|
||||
usedShapeAttributes[shapeAttribute] = shape;
|
||||
usedShapes[shape] = shapeAttribute
|
||||
shapeNode.style()
|
||||
.selector('node[id ="'+shapeAttribute+'"]')
|
||||
.style('shape', shape)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
// add new shape and attribute
|
||||
else if(!isEmpty(usedShapeAttributes) &&
|
||||
!usedShapeAttributes.hasOwnProperty(shapeAttribute)){
|
||||
ycoord = ycoord + 35;
|
||||
usedShapeAttributes[shapeAttribute] = shape;
|
||||
shapeNode.add( { group: "nodes", data: { id: shapeAttribute},
|
||||
position:{'x':80, 'y':ycoord}});
|
||||
shapeNode.style()
|
||||
.selector('node[id ="'+shapeAttribute+'"]')
|
||||
.style('shape', shape)
|
||||
.update();
|
||||
shapeNode.nodes().ungrabify().update();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Uses canvas.measureText to compute and return the width of the given text of given font in pixels.
|
||||
*/
|
||||
function getTextWidth(text, font) {
|
||||
// re-use canvas object for better performance
|
||||
var canvas = getTextWidth.canvas || (getTextWidth.canvas =
|
||||
document.createElement("canvas"));
|
||||
var context = canvas.getContext("2d");
|
||||
context.font = font;
|
||||
var metrics = context.measureText(text);
|
||||
return metrics.width;
|
||||
}
|
||||
|
||||
function changeLayout(cy, selectedLayout){
|
||||
var animateLayout = true;
|
||||
// var selectedLayout = document.getElementById('selectlayout'+pos).id;
|
||||
if(selectedLayout == "klay"){
|
||||
var options = {
|
||||
animate: animateLayout, // Whether to transition the node positions
|
||||
klay: {
|
||||
aspectRatio: 1.49, // The aimed aspect ratio of the drawing, that is the quotient of width by height
|
||||
compactComponents: true, // Tries to further compact components (disconnected sub-graphs).
|
||||
nodeLayering:'LONGEST_PATH', // Strategy for node layering.
|
||||
/* NETWORK_SIMPLEX This algorithm tries to minimize the length of edges. This is the most computationally intensive algorithm.
|
||||
The number of iterations after which it aborts if it hasn't found a result yet can be set with the Maximal Iterations option.
|
||||
LONGEST_PATH A very simple algorithm that distributes nodes along their longest path to a sink node.
|
||||
INTERACTIVE Distributes the nodes into layers by comparing their positions before the layout algorithm was started. The idea is that the relative horizontal order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive node layering algorithm uses the Interactive Reference Point option to determine which reference point of nodes are used to compare positions. */
|
||||
thoroughness: 10 // How much effort should be spent to produce a nice layout..
|
||||
},
|
||||
};
|
||||
cy.layout({
|
||||
name:'klay',
|
||||
options
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "breadthfirst"){
|
||||
cy.layout({
|
||||
name: "breadthfirst",
|
||||
spacingFactor: 0.5,
|
||||
animate: animateLayout
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "dagre"){
|
||||
cy.layout({
|
||||
name: "dagre",
|
||||
animate: animateLayout
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "cose-bilkent"){
|
||||
cy.layout({
|
||||
name: "cose-bilkent",
|
||||
// Gravity range (constant)
|
||||
gravityRange: 1.3,
|
||||
animate: true,
|
||||
randomize: false
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "grid"){
|
||||
cy.layout({
|
||||
name: "grid",
|
||||
animate: animateLayout,
|
||||
avoidOverlapPadding: 5
|
||||
}).run();
|
||||
}
|
||||
else{
|
||||
cy.layout({
|
||||
name: "cose-bilkent",
|
||||
// Gravity range (constant)
|
||||
gravityRange: 1.3,
|
||||
animate: true,
|
||||
randomize: false
|
||||
}).run();
|
||||
}
|
||||
}
|
||||
|
||||
// highlight gene searched by text input
|
||||
function highlightSearchedGene(cy, secondcy=undefined){
|
||||
var gene = document.getElementById('searchgene').value;
|
||||
if(gene == ""){
|
||||
cy.$('node').style("border-width", 2);
|
||||
cy.$('node[id = "l1"]').style("border-width", 1);
|
||||
if(secondcy){
|
||||
secondcy.$('node').style("border-width", 2);
|
||||
secondcy.$('node[id = "l1"]').style("border-width", 1);
|
||||
}
|
||||
document.getElementById('searchgene').value = "Search gene"
|
||||
}
|
||||
else if(cy.$('node[symbol=\'' + gene + '\']').length>0){
|
||||
cy.$('node').style("border-width", 2);
|
||||
cy.$('node[symbol =\'' + gene + '\']').style("border-width", 10);
|
||||
cy.$('node[id = "l1"]').style("border-width", 1);
|
||||
if(secondcy && secondcy.$('node[symbol=\'' + gene + '\']').length>0){
|
||||
secondcy.$('node').style("border-width", 2);
|
||||
secondcy.$('node[symbol =\'' + gene + '\']').style("border-width", 10);
|
||||
secondcy.$('node[id = "l1"]').style("border-width", 1);
|
||||
}
|
||||
}
|
||||
else if(cy.$('node[name =\'' + gene + '\']').length>0){
|
||||
cy.$('node').style("border-width", 2);
|
||||
cy.$('node[name =\'' + gene + '\']').style("border-width", 10);
|
||||
cy.$('node[id = "l1"]').style("border-width", 1);
|
||||
if(secondcy && secondcy.$('node[name =\'' + gene + '\']').length>0){
|
||||
secondcy.$('node').style("border-width", 2);
|
||||
secondcy.$('node[name =\'' + gene + '\']').style("border-width", 10);
|
||||
secondcy.$('node[id = "l1"]').style("border-width", 1);
|
||||
}
|
||||
}
|
||||
else{
|
||||
document.getElementById('searchgene').value = gene+" not found"
|
||||
}
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
"use strict";
|
||||
|
||||
(function () {
|
||||
// registers the extension on a cytoscape lib ref
|
||||
var register = function register(cytoscape) {
|
||||
if (!cytoscape) {
|
||||
return;
|
||||
}
|
||||
|
||||
var cyCanvas = function cyCanvas(args) {
|
||||
var cy = this;
|
||||
var container = cy.container();
|
||||
|
||||
var canvas = document.createElement("canvas");
|
||||
|
||||
container.appendChild(canvas);
|
||||
|
||||
var defaults = {
|
||||
zIndex: 1,
|
||||
pixelRatio: "auto"
|
||||
};
|
||||
|
||||
var options = Object.assign({}, defaults, args);
|
||||
|
||||
if (options.pixelRatio === "auto") {
|
||||
options.pixelRatio = window.devicePixelRatio || 1;
|
||||
}
|
||||
|
||||
function resize() {
|
||||
var width = container.offsetWidth;
|
||||
var height = container.offsetHeight;
|
||||
|
||||
var canvasWidth = width * options.pixelRatio;
|
||||
var canvasHeight = height * options.pixelRatio;
|
||||
|
||||
canvas.width = canvasWidth;
|
||||
canvas.height = canvasHeight;
|
||||
|
||||
canvas.style.width = width + "px";
|
||||
canvas.style.height = height + "px";
|
||||
|
||||
cy.trigger("cyCanvas.resize");
|
||||
}
|
||||
|
||||
cy.on("resize", function () {
|
||||
resize();
|
||||
});
|
||||
|
||||
canvas.setAttribute("style", "position:absolute; top:0; left:0; z-index:" + options.zIndex + ";");
|
||||
|
||||
resize();
|
||||
|
||||
return {
|
||||
/**
|
||||
* @return {Canvas} The generated canvas
|
||||
*/
|
||||
getCanvas: function getCanvas() {
|
||||
return canvas;
|
||||
},
|
||||
|
||||
/**
|
||||
* Helper: Clear the canvas
|
||||
* @param {CanvasRenderingContext2D} ctx
|
||||
*/
|
||||
clear: function clear(ctx) {
|
||||
var width = cy.width();
|
||||
var height = cy.height();
|
||||
ctx.save();
|
||||
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
||||
ctx.clearRect(0, 0, width * options.pixelRatio, height * options.pixelRatio);
|
||||
ctx.restore();
|
||||
},
|
||||
|
||||
/**
|
||||
* Helper: Reset the context transform to an identity matrix
|
||||
* @param {CanvasRenderingContext2D} ctx
|
||||
*/
|
||||
resetTransform: function resetTransform(ctx) {
|
||||
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* Helper: Set the context transform to match Cystoscape's zoom & pan
|
||||
* @param {CanvasRenderingContext2D} ctx
|
||||
*/
|
||||
setTransform: function setTransform(ctx) {
|
||||
var pan = cy.pan();
|
||||
var zoom = cy.zoom();
|
||||
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
||||
ctx.translate(pan.x * options.pixelRatio, pan.y * options.pixelRatio);
|
||||
ctx.scale(zoom * options.pixelRatio, zoom * options.pixelRatio);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
cytoscape("core", "cyCanvas", cyCanvas);
|
||||
};
|
||||
|
||||
if (typeof module !== "undefined" && module.exports) {
|
||||
// expose as a commonjs module
|
||||
module.exports = function (cytoscape) {
|
||||
register(cytoscape);
|
||||
};
|
||||
}
|
||||
|
||||
if (typeof define !== "undefined" && define.amd) {
|
||||
// expose as an amd/requirejs module
|
||||
define("cytoscape-canvas", function () {
|
||||
return register;
|
||||
});
|
||||
}
|
||||
|
||||
if (typeof cytoscape !== "undefined") {
|
||||
// expose to global cytoscape (i.e. window.cytoscape)
|
||||
register(cytoscape);
|
||||
}
|
||||
})();
|
@ -0,0 +1,222 @@
|
||||
/*!
|
||||
Copyright (c) The Cytoscape Consortium
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the “Software”), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
;(function(){ 'use strict';
|
||||
|
||||
// registers the extension on a cytoscape lib ref
|
||||
var register = function( cytoscape, dagre ){
|
||||
if( !cytoscape || !dagre ){ return; } // can't register if cytoscape unspecified
|
||||
|
||||
var isFunction = function(o){ return typeof o === 'function'; };
|
||||
|
||||
// default layout options
|
||||
var defaults = {
|
||||
// dagre algo options, uses default value on undefined
|
||||
nodeSep: undefined, // the separation between adjacent nodes in the same rank
|
||||
edgeSep: undefined, // the separation between adjacent edges in the same rank
|
||||
rankSep: undefined, // the separation between adjacent nodes in the same rank
|
||||
rankDir: undefined, // 'TB' for top to bottom flow, 'LR' for left to right,
|
||||
ranker: undefined, // Type of algorithm to assigns a rank to each node in the input graph.
|
||||
// Possible values: network-simplex, tight-tree or longest-path
|
||||
minLen: function( edge ){ return 1; }, // number of ranks to keep between the source and target of the edge
|
||||
edgeWeight: function( edge ){ return 1; }, // higher weight edges are generally made shorter and straighter than lower weight edges
|
||||
|
||||
// general layout options
|
||||
fit: true, // whether to fit to viewport
|
||||
padding: 30, // fit padding
|
||||
spacingFactor: undefined, // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up
|
||||
nodeDimensionsIncludeLabels: undefined, // whether labels should be included in determining the space used by a node (default true)
|
||||
animate: false, // whether to transition the node positions
|
||||
animateFilter: function( node, i ){ return true; }, // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions
|
||||
animationDuration: 500, // duration of animation in ms if enabled
|
||||
animationEasing: undefined, // easing of animation if enabled
|
||||
boundingBox: undefined, // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h }
|
||||
transform: function( node, pos ){ return pos; }, // a function that applies a transform to the final node position
|
||||
ready: function(){}, // on layoutready
|
||||
stop: function(){} // on layoutstop
|
||||
};
|
||||
|
||||
// constructor
|
||||
// options : object containing layout options
|
||||
function DagreLayout( options ){
|
||||
var opts = this.options = {};
|
||||
for( var i in defaults ){ opts[i] = defaults[i]; }
|
||||
for( var i in options ){ opts[i] = options[i]; }
|
||||
}
|
||||
|
||||
// runs the layout
|
||||
DagreLayout.prototype.run = function(){
|
||||
var options = this.options;
|
||||
var layout = this;
|
||||
|
||||
var cy = options.cy; // cy is automatically populated for us in the constructor
|
||||
var eles = options.eles;
|
||||
|
||||
var getVal = function( ele, val ){
|
||||
return isFunction(val) ? val.apply( ele, [ ele ] ) : val;
|
||||
};
|
||||
|
||||
var bb = options.boundingBox || { x1: 0, y1: 0, w: cy.width(), h: cy.height() };
|
||||
if( bb.x2 === undefined ){ bb.x2 = bb.x1 + bb.w; }
|
||||
if( bb.w === undefined ){ bb.w = bb.x2 - bb.x1; }
|
||||
if( bb.y2 === undefined ){ bb.y2 = bb.y1 + bb.h; }
|
||||
if( bb.h === undefined ){ bb.h = bb.y2 - bb.y1; }
|
||||
|
||||
var g = new dagre.graphlib.Graph({
|
||||
multigraph: true,
|
||||
compound: true
|
||||
});
|
||||
|
||||
var gObj = {};
|
||||
var setGObj = function( name, val ){
|
||||
if( val != null ){
|
||||
gObj[ name ] = val;
|
||||
}
|
||||
};
|
||||
|
||||
setGObj( 'nodesep', options.nodeSep );
|
||||
setGObj( 'edgesep', options.edgeSep );
|
||||
setGObj( 'ranksep', options.rankSep );
|
||||
setGObj( 'rankdir', options.rankDir );
|
||||
setGObj( 'ranker', options.ranker );
|
||||
|
||||
g.setGraph( gObj );
|
||||
|
||||
g.setDefaultEdgeLabel(function() { return {}; });
|
||||
g.setDefaultNodeLabel(function() { return {}; });
|
||||
|
||||
// add nodes to dagre
|
||||
var nodes = eles.nodes();
|
||||
for( var i = 0; i < nodes.length; i++ ){
|
||||
var node = nodes[i];
|
||||
var nbb = node.layoutDimensions( options );
|
||||
|
||||
g.setNode( node.id(), {
|
||||
width: nbb.w,
|
||||
height: nbb.h,
|
||||
name: node.id()
|
||||
} );
|
||||
|
||||
// console.log( g.node(node.id()) );
|
||||
}
|
||||
|
||||
// set compound parents
|
||||
for( var i = 0; i < nodes.length; i++ ){
|
||||
var node = nodes[i];
|
||||
|
||||
if( node.isChild() ){
|
||||
g.setParent( node.id(), node.parent().id() );
|
||||
}
|
||||
}
|
||||
|
||||
// add edges to dagre
|
||||
var edges = eles.edges().stdFilter(function( edge ){
|
||||
return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes
|
||||
});
|
||||
for( var i = 0; i < edges.length; i++ ){
|
||||
var edge = edges[i];
|
||||
|
||||
g.setEdge( edge.source().id(), edge.target().id(), {
|
||||
minlen: getVal( edge, options.minLen ),
|
||||
weight: getVal( edge, options.edgeWeight ),
|
||||
name: edge.id()
|
||||
}, edge.id() );
|
||||
|
||||
// console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) );
|
||||
}
|
||||
|
||||
dagre.layout( g );
|
||||
|
||||
var gNodeIds = g.nodes();
|
||||
for( var i = 0; i < gNodeIds.length; i++ ){
|
||||
var id = gNodeIds[i];
|
||||
var n = g.node( id );
|
||||
|
||||
cy.getElementById(id).scratch().dagre = n;
|
||||
}
|
||||
|
||||
var dagreBB;
|
||||
|
||||
if( options.boundingBox ){
|
||||
dagreBB = { x1: Infinity, x2: -Infinity, y1: Infinity, y2: -Infinity };
|
||||
nodes.forEach(function( node ){
|
||||
var dModel = node.scratch().dagre;
|
||||
|
||||
dagreBB.x1 = Math.min( dagreBB.x1, dModel.x );
|
||||
dagreBB.x2 = Math.max( dagreBB.x2, dModel.x );
|
||||
|
||||
dagreBB.y1 = Math.min( dagreBB.y1, dModel.y );
|
||||
dagreBB.y2 = Math.max( dagreBB.y2, dModel.y );
|
||||
});
|
||||
|
||||
dagreBB.w = dagreBB.x2 - dagreBB.x1;
|
||||
dagreBB.h = dagreBB.y2 - dagreBB.y1;
|
||||
} else {
|
||||
dagreBB = bb;
|
||||
}
|
||||
|
||||
var constrainPos = function( p ){
|
||||
if( options.boundingBox ){
|
||||
var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w;
|
||||
var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h;
|
||||
|
||||
return {
|
||||
x: bb.x1 + xPct * bb.w,
|
||||
y: bb.y1 + yPct * bb.h
|
||||
};
|
||||
} else {
|
||||
return p;
|
||||
}
|
||||
};
|
||||
|
||||
nodes.layoutPositions(layout, options, function( ele ){
|
||||
ele = typeof ele === "object" ? ele : this;
|
||||
var dModel = ele.scratch().dagre;
|
||||
|
||||
return constrainPos({
|
||||
x: dModel.x,
|
||||
y: dModel.y
|
||||
});
|
||||
});
|
||||
|
||||
return this; // chaining
|
||||
};
|
||||
|
||||
cytoscape('layout', 'dagre', DagreLayout);
|
||||
|
||||
};
|
||||
|
||||
if( typeof module !== 'undefined' && module.exports ){ // expose as a commonjs module
|
||||
module.exports = function( cytoscape, dagre ){
|
||||
register( cytoscape, dagre || require('dagre') );
|
||||
};
|
||||
} else if( typeof define !== 'undefined' && define.amd ){ // expose as an amd/requirejs module
|
||||
define('cytoscape-dagre', function(){
|
||||
return register;
|
||||
});
|
||||
}
|
||||
|
||||
if( typeof cytoscape !== 'undefined' && typeof dagre !== 'undefined' ){ // expose to global cytoscape (i.e. window.cytoscape)
|
||||
register( cytoscape, dagre );
|
||||
}
|
||||
|
||||
})();
|
@ -0,0 +1,469 @@
|
||||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory(require("klayjs"));
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define(["klayjs"], factory);
|
||||
else if(typeof exports === 'object')
|
||||
exports["cytoscapeKlay"] = factory(require("klayjs"));
|
||||
else
|
||||
root["cytoscapeKlay"] = factory(root["$klay"]);
|
||||
})(this, function(__WEBPACK_EXTERNAL_MODULE_4__) {
|
||||
return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // identity function for calling harmony imports with the correct context
|
||||
/******/ __webpack_require__.i = function(value) { return value; };
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, {
|
||||
/******/ configurable: false,
|
||||
/******/ enumerable: true,
|
||||
/******/ get: getter
|
||||
/******/ });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "";
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(__webpack_require__.s = 3);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([
|
||||
/* 0 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var klay = __webpack_require__(4);
|
||||
var assign = __webpack_require__(1);
|
||||
var defaults = __webpack_require__(2);
|
||||
|
||||
var klayNSLookup = {
|
||||
'addUnnecessaryBendpoints': 'de.cau.cs.kieler.klay.layered.unnecessaryBendpoints',
|
||||
'alignment': 'de.cau.cs.kieler.alignment',
|
||||
'aspectRatio': 'de.cau.cs.kieler.aspectRatio',
|
||||
'borderSpacing': 'borderSpacing',
|
||||
'compactComponents': 'de.cau.cs.kieler.klay.layered.components.compact',
|
||||
'compactionStrategy': 'de.cau.cs.kieler.klay.layered.nodeplace.compactionStrategy',
|
||||
'contentAlignment': 'de.cau.cs.kieler.klay.layered.contentAlignment',
|
||||
'crossingMinimization': 'de.cau.cs.kieler.klay.layered.crossMin',
|
||||
'cycleBreaking': 'de.cau.cs.kieler.klay.layered.cycleBreaking',
|
||||
'debugMode': 'de.cau.cs.kieler.debugMode',
|
||||
'direction': 'de.cau.cs.kieler.direction',
|
||||
'edgeLabelSideSelection': 'de.cau.cs.kieler.klay.layered.edgeLabelSideSelection',
|
||||
// <broken> 'de.cau.cs.kieler.klay.layered.edgeNodeSpacingFactor': options.edgeNodeSpacingFactor,
|
||||
'edgeRouting': 'de.cau.cs.kieler.edgeRouting',
|
||||
'edgeSpacingFactor': 'de.cau.cs.kieler.klay.layered.edgeSpacingFactor',
|
||||
'feedbackEdges': 'de.cau.cs.kieler.klay.layered.feedBackEdges',
|
||||
'fixedAlignment': 'de.cau.cs.kieler.klay.layered.fixedAlignment',
|
||||
'greedySwitchCrossingMinimization': 'de.cau.cs.kieler.klay.layered.greedySwitch',
|
||||
'hierarchyHandling': 'de.cau.cs.kieler.hierarchyHandling',
|
||||
'inLayerSpacingFactor': 'de.cau.cs.kieler.klay.layered.inLayerSpacingFactor',
|
||||
'interactiveReferencePoint': 'de.cau.cs.kieler.klay.layered.interactiveReferencePoint',
|
||||
'layerConstraint': 'de.cau.cs.kieler.klay.layered.layerConstraint',
|
||||
'layoutHierarchy': 'de.cau.cs.kieler.layoutHierarchy',
|
||||
'linearSegmentsDeflectionDampening': 'de.cau.cs.kieler.klay.layered.linearSegmentsDeflectionDampening',
|
||||
'mergeEdges': 'de.cau.cs.kieler.klay.layered.mergeEdges',
|
||||
'mergeHierarchyCrossingEdges': 'de.cau.cs.kieler.klay.layered.mergeHierarchyEdges',
|
||||
'noLayout': 'de.cau.cs.kieler.noLayout',
|
||||
'nodeLabelPlacement': 'de.cau.cs.kieler.nodeLabelPlacement',
|
||||
'nodeLayering': 'de.cau.cs.kieler.klay.layered.nodeLayering',
|
||||
'nodePlacement': 'de.cau.cs.kieler.klay.layered.nodePlace',
|
||||
'portAlignment': 'de.cau.cs.kieler.portAlignment',
|
||||
'portAlignmentEastern': 'de.cau.cs.kieler.portAlignment.east',
|
||||
'portAlignmentNorth': 'de.cau.cs.kieler.portAlignment.north',
|
||||
'portAlignmentSouth': 'de.cau.cs.kieler.portAlignment.south',
|
||||
'portAlignmentWest': 'de.cau.cs.kieler.portAlignment.west',
|
||||
'portConstraints': 'de.cau.cs.kieler.portConstraints',
|
||||
'portLabelPlacement': 'de.cau.cs.kieler.portLabelPlacement',
|
||||
'portOffset': 'de.cau.cs.kieler.offset',
|
||||
'portSide': 'de.cau.cs.kieler.portSide',
|
||||
'portSpacing': 'de.cau.cs.kieler.portSpacing',
|
||||
'postCompaction': 'de.cau.cs.kieler.klay.layered.postCompaction',
|
||||
'priority': 'de.cau.cs.kieler.priority',
|
||||
'randomizationSeed': 'de.cau.cs.kieler.randomSeed',
|
||||
'routeSelfLoopInside': 'de.cau.cs.kieler.selfLoopInside',
|
||||
'separateConnectedComponents': 'de.cau.cs.kieler.separateConnComp',
|
||||
'sizeConstraint': 'de.cau.cs.kieler.sizeConstraint',
|
||||
'sizeOptions': 'de.cau.cs.kieler.sizeOptions',
|
||||
'spacing': 'de.cau.cs.kieler.spacing',
|
||||
'splineSelfLoopPlacement': 'de.cau.cs.kieler.klay.layered.splines.selfLoopPlacement',
|
||||
'thoroughness': 'de.cau.cs.kieler.klay.layered.thoroughness',
|
||||
'wideNodesOnMultipleLayers': 'de.cau.cs.kieler.klay.layered.wideNodesOnMultipleLayers'
|
||||
};
|
||||
|
||||
var mapToKlayNS = function mapToKlayNS(klayOpts) {
|
||||
var keys = Object.keys(klayOpts);
|
||||
var ret = {};
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var key = keys[i];
|
||||
var nsKey = klayNSLookup[key];
|
||||
var val = klayOpts[key];
|
||||
|
||||
ret[nsKey] = val;
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
|
||||
var klayOverrides = {
|
||||
interactiveReferencePoint: 'CENTER' // Determines which point of a node is considered by interactive layout phases.
|
||||
};
|
||||
|
||||
var getPos = function getPos(ele) {
|
||||
var parent = ele.parent();
|
||||
var k = ele.scratch('klay');
|
||||
var p = {
|
||||
x: k.x,
|
||||
y: k.y
|
||||
};
|
||||
|
||||
if (parent.nonempty()) {
|
||||
var kp = parent.scratch('klay');
|
||||
|
||||
p.x += kp.x;
|
||||
p.y += kp.y;
|
||||
}
|
||||
|
||||
return p;
|
||||
};
|
||||
|
||||
var makeNode = function makeNode(node, options) {
|
||||
var dims = node.layoutDimensions(options);
|
||||
var padding = node.numericStyle('padding');
|
||||
|
||||
var k = {
|
||||
_cyEle: node,
|
||||
id: node.id(),
|
||||
padding: {
|
||||
top: padding,
|
||||
left: padding,
|
||||
bottom: padding,
|
||||
right: padding
|
||||
}
|
||||
};
|
||||
|
||||
if (!node.isParent()) {
|
||||
k.width = dims.w;
|
||||
k.height = dims.h;
|
||||
}
|
||||
|
||||
node.scratch('klay', k);
|
||||
|
||||
return k;
|
||||
};
|
||||
|
||||
var makeEdge = function makeEdge(edge, options) {
|
||||
var k = {
|
||||
_cyEle: edge,
|
||||
id: edge.id(),
|
||||
source: edge.data('source'),
|
||||
target: edge.data('target')
|
||||
};
|
||||
|
||||
var priority = options.priority(edge);
|
||||
|
||||
if (priority != null) {
|
||||
k.priority = priority;
|
||||
}
|
||||
|
||||
edge.scratch('klay', k);
|
||||
|
||||
return k;
|
||||
};
|
||||
|
||||
var makeGraph = function makeGraph(nodes, edges, options) {
|
||||
var klayNodes = [];
|
||||
var klayEdges = [];
|
||||
var klayEleLookup = {};
|
||||
var graph = {
|
||||
id: 'root',
|
||||
children: [],
|
||||
edges: []
|
||||
};
|
||||
|
||||
// map all nodes
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
var n = nodes[i];
|
||||
var k = makeNode(n, options);
|
||||
|
||||
klayNodes.push(k);
|
||||
|
||||
klayEleLookup[n.id()] = k;
|
||||
}
|
||||
|
||||
// map all edges
|
||||
for (var _i = 0; _i < edges.length; _i++) {
|
||||
var e = edges[_i];
|
||||
var _k = makeEdge(e, options);
|
||||
|
||||
klayEdges.push(_k);
|
||||
|
||||
klayEleLookup[e.id()] = _k;
|
||||
}
|
||||
|
||||
// make hierarchy
|
||||
for (var _i2 = 0; _i2 < klayNodes.length; _i2++) {
|
||||
var _k2 = klayNodes[_i2];
|
||||
var _n = _k2._cyEle;
|
||||
|
||||
if (!_n.isChild()) {
|
||||
graph.children.push(_k2);
|
||||
} else {
|
||||
var parent = _n.parent();
|
||||
var parentK = klayEleLookup[parent.id()];
|
||||
|
||||
var children = parentK.children = parentK.children || [];
|
||||
|
||||
children.push(_k2);
|
||||
}
|
||||
}
|
||||
|
||||
for (var _i3 = 0; _i3 < klayEdges.length; _i3++) {
|
||||
var _k3 = klayEdges[_i3];
|
||||
var _e = _k3._cyEle;
|
||||
var parentSrc = _e.source().parent();
|
||||
var parentTgt = _e.target().parent();
|
||||
|
||||
// put all edges in the top level for now
|
||||
// TODO does this cause issues in certain edgecases?
|
||||
if (false) {
|
||||
var kp = klayEleLookup[parentSrc.id()];
|
||||
|
||||
kp.edges = kp.edges || [];
|
||||
|
||||
kp.edges.push(_k3);
|
||||
} else {
|
||||
graph.edges.push(_k3);
|
||||
}
|
||||
}
|
||||
|
||||
return graph;
|
||||
};
|
||||
|
||||
function Layout(options) {
|
||||
var klayOptions = options.klay;
|
||||
|
||||
this.options = assign({}, defaults, options);
|
||||
|
||||
this.options.klay = assign({}, defaults.klay, klayOptions, klayOverrides);
|
||||
}
|
||||
|
||||
Layout.prototype.run = function () {
|
||||
var layout = this;
|
||||
var options = this.options;
|
||||
|
||||
var eles = options.eles;
|
||||
var nodes = eles.nodes();
|
||||
var edges = eles.edges();
|
||||
|
||||
var graph = makeGraph(nodes, edges, options);
|
||||
|
||||
klay.layout({
|
||||
graph: graph,
|
||||
options: mapToKlayNS(options.klay),
|
||||
success: function success() {},
|
||||
error: function error(_error) {
|
||||
throw _error;
|
||||
}
|
||||
});
|
||||
|
||||
nodes.filter(function (n) {
|
||||
return !n.isParent();
|
||||
}).layoutPositions(layout, options, getPos);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Layout.prototype.stop = function () {
|
||||
return this; // chaining
|
||||
};
|
||||
|
||||
Layout.prototype.destroy = function () {
|
||||
return this; // chaining
|
||||
};
|
||||
|
||||
module.exports = Layout;
|
||||
|
||||
/***/ }),
|
||||
/* 1 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
// Simple, internal Object.assign() polyfill for options objects etc.
|
||||
|
||||
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
|
||||
for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
||||
srcs[_key - 1] = arguments[_key];
|
||||
}
|
||||
|
||||
srcs.filter(function (src) {
|
||||
return src != null;
|
||||
}).forEach(function (src) {
|
||||
Object.keys(src).forEach(function (k) {
|
||||
return tgt[k] = src[k];
|
||||
});
|
||||
});
|
||||
|
||||
return tgt;
|
||||
};
|
||||
|
||||
/***/ }),
|
||||
/* 2 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var defaults = {
|
||||
nodeDimensionsIncludeLabels: false, // Boolean which changes whether label dimensions are included when calculating node dimensions
|
||||
fit: true, // Whether to fit
|
||||
padding: 20, // Padding on fit
|
||||
animate: false, // Whether to transition the node positions
|
||||
animateFilter: function animateFilter(node, i) {
|
||||
return true;
|
||||
}, // Whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions
|
||||
animationDuration: 500, // Duration of animation in ms if enabled
|
||||
animationEasing: undefined, // Easing of animation if enabled
|
||||
transform: function transform(node, pos) {
|
||||
return pos;
|
||||
}, // A function that applies a transform to the final node position
|
||||
ready: undefined, // Callback on layoutready
|
||||
stop: undefined, // Callback on layoutstop
|
||||
klay: {
|
||||
// Following descriptions taken from http://layout.rtsys.informatik.uni-kiel.de:9444/Providedlayout.html?algorithm=de.cau.cs.kieler.klay.layered
|
||||
addUnnecessaryBendpoints: false, // Adds bend points even if an edge does not change direction.
|
||||
aspectRatio: 1.6, // The aimed aspect ratio of the drawing, that is the quotient of width by height
|
||||
borderSpacing: 20, // Minimal amount of space to be left to the border
|
||||
compactComponents: false, // Tries to further compact components (disconnected sub-graphs).
|
||||
crossingMinimization: 'LAYER_SWEEP', // Strategy for crossing minimization.
|
||||
/* LAYER_SWEEP The layer sweep algorithm iterates multiple times over the layers, trying to find node orderings that minimize the number of crossings. The algorithm uses randomization to increase the odds of finding a good result. To improve its results, consider increasing the Thoroughness option, which influences the number of iterations done. The Randomization seed also influences results.
|
||||
INTERACTIVE Orders the nodes of each layer by comparing their positions before the layout algorithm was started. The idea is that the relative order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive layer sweep algorithm uses the Interactive Reference Point option to determine which reference point of nodes are used to compare positions. */
|
||||
cycleBreaking: 'GREEDY', // Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right).
|
||||
/* GREEDY This algorithm reverses edges greedily. The algorithm tries to avoid edges that have the Priority property set.
|
||||
INTERACTIVE The interactive algorithm tries to reverse edges that already pointed leftwards in the input graph. This requires node and port coordinates to have been set to sensible values.*/
|
||||
direction: 'UNDEFINED', // Overall direction of edges: horizontal (right / left) or vertical (down / up)
|
||||
/* UNDEFINED, RIGHT, LEFT, DOWN, UP */
|
||||
edgeRouting: 'ORTHOGONAL', // Defines how edges are routed (POLYLINE, ORTHOGONAL, SPLINES)
|
||||
edgeSpacingFactor: 0.5, // Factor by which the object spacing is multiplied to arrive at the minimal spacing between edges.
|
||||
feedbackEdges: false, // Whether feedback edges should be highlighted by routing around the nodes.
|
||||
fixedAlignment: 'NONE', // Tells the BK node placer to use a certain alignment instead of taking the optimal result. This option should usually be left alone.
|
||||
/* NONE Chooses the smallest layout from the four possible candidates.
|
||||
LEFTUP Chooses the left-up candidate from the four possible candidates.
|
||||
RIGHTUP Chooses the right-up candidate from the four possible candidates.
|
||||
LEFTDOWN Chooses the left-down candidate from the four possible candidates.
|
||||
RIGHTDOWN Chooses the right-down candidate from the four possible candidates.
|
||||
BALANCED Creates a balanced layout from the four possible candidates. */
|
||||
inLayerSpacingFactor: 1.0, // Factor by which the usual spacing is multiplied to determine the in-layer spacing between objects.
|
||||
layoutHierarchy: false, // Whether the selected layouter should consider the full hierarchy
|
||||
linearSegmentsDeflectionDampening: 0.3, // Dampens the movement of nodes to keep the diagram from getting too large.
|
||||
mergeEdges: false, // Edges that have no ports are merged so they touch the connected nodes at the same points.
|
||||
mergeHierarchyCrossingEdges: true, // If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible.
|
||||
nodeLayering: 'NETWORK_SIMPLEX', // Strategy for node layering.
|
||||
/* NETWORK_SIMPLEX This algorithm tries to minimize the length of edges. This is the most computationally intensive algorithm. The number of iterations after which it aborts if it hasn't found a result yet can be set with the Maximal Iterations option.
|
||||
LONGEST_PATH A very simple algorithm that distributes nodes along their longest path to a sink node.
|
||||
INTERACTIVE Distributes the nodes into layers by comparing their positions before the layout algorithm was started. The idea is that the relative horizontal order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive node layering algorithm uses the Interactive Reference Point option to determine which reference point of nodes are used to compare positions. */
|
||||
nodePlacement: 'BRANDES_KOEPF', // Strategy for Node Placement
|
||||
/* BRANDES_KOEPF Minimizes the number of edge bends at the expense of diagram size: diagrams drawn with this algorithm are usually higher than diagrams drawn with other algorithms.
|
||||
LINEAR_SEGMENTS Computes a balanced placement.
|
||||
INTERACTIVE Tries to keep the preset y coordinates of nodes from the original layout. For dummy nodes, a guess is made to infer their coordinates. Requires the other interactive phase implementations to have run as well.
|
||||
SIMPLE Minimizes the area at the expense of... well, pretty much everything else. */
|
||||
randomizationSeed: 1, // Seed used for pseudo-random number generators to control the layout algorithm; 0 means a new seed is generated
|
||||
routeSelfLoopInside: false, // Whether a self-loop is routed around or inside its node.
|
||||
separateConnectedComponents: true, // Whether each connected component should be processed separately
|
||||
spacing: 20, // Overall setting for the minimal amount of space to be left between objects
|
||||
thoroughness: 7 // How much effort should be spent to produce a nice layout..
|
||||
},
|
||||
priority: function priority(edge) {
|
||||
return null;
|
||||
} // Edges with a non-nil value are skipped when geedy edge cycle breaking is enabled
|
||||
};
|
||||
|
||||
module.exports = defaults;
|
||||
|
||||
/***/ }),
|
||||
/* 3 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var impl = __webpack_require__(0);
|
||||
|
||||
// registers the extension on a cytoscape lib ref
|
||||
var register = function register(cytoscape) {
|
||||
if (!cytoscape) {
|
||||
return;
|
||||
} // can't register if cytoscape unspecified
|
||||
|
||||
cytoscape('layout', 'klay', impl); // register with cytoscape.js
|
||||
};
|
||||
|
||||
if (typeof cytoscape !== 'undefined') {
|
||||
// expose to global cytoscape (i.e. window.cytoscape)
|
||||
register(cytoscape);
|
||||
}
|
||||
|
||||
module.exports = register;
|
||||
|
||||
/***/ }),
|
||||
/* 4 */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
|
||||
|
||||
/***/ })
|
||||
/******/ ]);
|
||||
});
|
@ -0,0 +1,202 @@
|
||||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory();
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define([], factory);
|
||||
else if(typeof exports === 'object')
|
||||
exports["cytoscapeNoOverlap"] = factory();
|
||||
else
|
||||
root["cytoscapeNoOverlap"] = factory();
|
||||
})(this, function() {
|
||||
return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // identity function for calling harmony imports with the correct context
|
||||
/******/ __webpack_require__.i = function(value) { return value; };
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, {
|
||||
/******/ configurable: false,
|
||||
/******/ enumerable: true,
|
||||
/******/ get: getter
|
||||
/******/ });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "";
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(__webpack_require__.s = 1);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([
|
||||
/* 0 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
/**
|
||||
* Verifies each points of the bounding box (a) and looks if any of these points are inside the second bounding box (b)
|
||||
* @param {CytoscapeElement} a Node to compare
|
||||
* @param {CytoscapeElement} b Node to compare
|
||||
* @returns {boolean} Return true if node a overlaps node b
|
||||
*/
|
||||
function compareNodes(a, b) {
|
||||
var isOverlapping = false;
|
||||
// bottom right
|
||||
if (a.x1 < b.x2 && a.x1 > b.x1 && a.y1 < b.y2 && a.y1 > b.y1) {
|
||||
isOverlapping = true;
|
||||
}
|
||||
// bottom left
|
||||
if (a.x2 < b.x2 && a.x2 > b.x1 && a.y1 < b.y2 && a.y1 > b.y1) {
|
||||
isOverlapping = true;
|
||||
}
|
||||
// top left
|
||||
if (a.x2 < b.x2 && a.x2 > b.x1 && a.y2 > b.y1 && a.y2 < b.y2) {
|
||||
isOverlapping = true;
|
||||
}
|
||||
// top right
|
||||
if (a.x1 < b.x2 && a.x1 > b.x1 && a.y2 < b.y2 && a.y2 > b.y1) {
|
||||
isOverlapping = true;
|
||||
}
|
||||
return isOverlapping;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively checks if a node or it's parent overlaps any of the shown nodes
|
||||
* @param {CytoscapeElement} node The node to verify
|
||||
* @param {number} padding A bigger padding will make the overlap happen before
|
||||
* @returns {boolean} True if the node overlaps any of the other nodes
|
||||
*/
|
||||
function checkIfOverlaps(node, padding) {
|
||||
var siblings = void 0;
|
||||
if (node.isChild()) {
|
||||
siblings = node.parent().children().difference(node);
|
||||
} else {
|
||||
siblings = node.cy().nodes().orphans().difference(node);
|
||||
}
|
||||
var isOverlapping = false;
|
||||
siblings.forEach(function (neighbor) {
|
||||
var neighborBB = {
|
||||
w: neighbor.renderedOuterWidth(),
|
||||
h: neighbor.renderedOuterHeight(),
|
||||
x1: neighbor.renderedPoint().x - neighbor.renderedOuterWidth() / 2 - padding,
|
||||
x2: neighbor.renderedPoint().x + neighbor.renderedOuterWidth() / 2 + padding,
|
||||
y1: neighbor.renderedPoint().y - neighbor.renderedOuterHeight() / 2 - padding,
|
||||
y2: neighbor.renderedPoint().y + neighbor.renderedOuterHeight() / 2 + padding
|
||||
};
|
||||
var currentNodeBB = {
|
||||
w: node.renderedOuterWidth(),
|
||||
h: node.renderedOuterHeight(),
|
||||
x1: node.renderedPoint().x - node.renderedOuterWidth() / 2 - padding,
|
||||
x2: node.renderedPoint().x + node.renderedOuterWidth() / 2 + padding,
|
||||
y1: node.renderedPoint().y - node.renderedOuterHeight() / 2 - padding,
|
||||
y2: node.renderedPoint().y + node.renderedOuterHeight() / 2 + padding
|
||||
};
|
||||
if (compareNodes(currentNodeBB, neighborBB)) {
|
||||
isOverlapping = true;
|
||||
}
|
||||
if (compareNodes(neighborBB, currentNodeBB)) {
|
||||
isOverlapping = true;
|
||||
}
|
||||
});
|
||||
if (node.parent().length > 0) {
|
||||
if (checkIfOverlaps(node.parent(), padding)) {
|
||||
isOverlapping = true;
|
||||
}
|
||||
}
|
||||
return isOverlapping;
|
||||
}
|
||||
|
||||
module.exports = function () {
|
||||
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
||||
_ref$padding = _ref.padding,
|
||||
padding = _ref$padding === undefined ? 0 : _ref$padding;
|
||||
|
||||
this.on('drag', function (evt) {
|
||||
if (checkIfOverlaps(evt.target, padding)) {
|
||||
evt.target.position(evt.target.scratch('previousPosition'));
|
||||
} else {
|
||||
evt.target.scratch('previousPosition', JSON.parse(JSON.stringify(evt.target.position())));
|
||||
}
|
||||
});
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/***/ }),
|
||||
/* 1 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var impl = __webpack_require__(0);
|
||||
|
||||
// registers the extension on a cytoscape lib ref
|
||||
var register = function register(cytoscape) {
|
||||
if (!cytoscape) {
|
||||
return;
|
||||
} // can't register if cytoscape unspecified
|
||||
|
||||
cytoscape('collection', 'noOverlap', impl); // register with cytoscape.js
|
||||
};
|
||||
|
||||
if (typeof cytoscape !== 'undefined') {
|
||||
// expose to global cytoscape (i.e. window.cytoscape)
|
||||
register(window.cytoscape);
|
||||
}
|
||||
|
||||
module.exports = register;
|
||||
|
||||
/***/ })
|
||||
/******/ ]);
|
||||
});
|
@ -0,0 +1,406 @@
|
||||
/*!
|
||||
Copyright (c) The Cytoscape Consortium
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the “Software”), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
;(function( $, $$ ){ 'use strict';
|
||||
|
||||
var isObject = function(o){
|
||||
return o != null && typeof o === 'object';
|
||||
};
|
||||
|
||||
var isFunction = function(o){
|
||||
return o != null && typeof o === 'function';
|
||||
};
|
||||
|
||||
var isNumber = function(o){
|
||||
return o != null && typeof o === 'number';
|
||||
};
|
||||
|
||||
var isString = function(o){
|
||||
return o != null && typeof o === 'string';
|
||||
};
|
||||
|
||||
var isUndef = function(o){
|
||||
return o === undefined;
|
||||
};
|
||||
|
||||
var wrap = function(obj, target) {
|
||||
if( isFunction(obj) ) {
|
||||
return function(event, api){
|
||||
return obj.apply( target, [event, api] );
|
||||
};
|
||||
} else {
|
||||
return obj;
|
||||
}
|
||||
};
|
||||
|
||||
var throttle = function(func, wait, options) {
|
||||
var leading = true,
|
||||
trailing = true;
|
||||
|
||||
if (options === false) {
|
||||
leading = false;
|
||||
} else if (isObject(options)) {
|
||||
leading = 'leading' in options ? options.leading : leading;
|
||||
trailing = 'trailing' in options ? options.trailing : trailing;
|
||||
}
|
||||
options = options || {};
|
||||
options.leading = leading;
|
||||
options.maxWait = wait;
|
||||
options.trailing = trailing;
|
||||
|
||||
return debounce(func, wait, options);
|
||||
};
|
||||
|
||||
var debounce = function(func, wait, options) { // ported lodash debounce function
|
||||
var args,
|
||||
maxTimeoutId,
|
||||
result,
|
||||
stamp,
|
||||
thisArg,
|
||||
timeoutId,
|
||||
trailingCall,
|
||||
lastCalled = 0,
|
||||
maxWait = false,
|
||||
trailing = true;
|
||||
|
||||
if (!isFunction(func)) {
|
||||
return;
|
||||
}
|
||||
wait = Math.max(0, wait) || 0;
|
||||
if (options === true) {
|
||||
var leading = true;
|
||||
trailing = false;
|
||||
} else if (isObject(options)) {
|
||||
leading = options.leading;
|
||||
maxWait = 'maxWait' in options && (Math.max(wait, options.maxWait) || 0);
|
||||
trailing = 'trailing' in options ? options.trailing : trailing;
|
||||
}
|
||||
var delayed = function() {
|
||||
var remaining = wait - (Date.now() - stamp);
|
||||
if (remaining <= 0) {
|
||||
if (maxTimeoutId) {
|
||||
clearTimeout(maxTimeoutId);
|
||||
}
|
||||
var isCalled = trailingCall;
|
||||
maxTimeoutId = timeoutId = trailingCall = undefined;
|
||||
if (isCalled) {
|
||||
lastCalled = Date.now();
|
||||
result = func.apply(thisArg, args);
|
||||
if (!timeoutId && !maxTimeoutId) {
|
||||
args = thisArg = null;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
timeoutId = setTimeout(delayed, remaining);
|
||||
}
|
||||
};
|
||||
|
||||
var maxDelayed = function() {
|
||||
if (timeoutId) {
|
||||
clearTimeout(timeoutId);
|
||||
}
|
||||
maxTimeoutId = timeoutId = trailingCall = undefined;
|
||||
if (trailing || (maxWait !== wait)) {
|
||||
lastCalled = Date.now();
|
||||
result = func.apply(thisArg, args);
|
||||
if (!timeoutId && !maxTimeoutId) {
|
||||
args = thisArg = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return function() {
|
||||
args = arguments;
|
||||
stamp = Date.now();
|
||||
thisArg = this;
|
||||
trailingCall = trailing && (timeoutId || !leading);
|
||||
|
||||
if (maxWait === false) {
|
||||
var leadingCall = leading && !timeoutId;
|
||||
} else {
|
||||
if (!maxTimeoutId && !leading) {
|
||||
lastCalled = stamp;
|
||||
}
|
||||
var remaining = maxWait - (stamp - lastCalled),
|
||||
isCalled = remaining <= 0;
|
||||
|
||||
if (isCalled) {
|
||||
if (maxTimeoutId) {
|
||||
maxTimeoutId = clearTimeout(maxTimeoutId);
|
||||
}
|
||||
lastCalled = stamp;
|
||||
result = func.apply(thisArg, args);
|
||||
}
|
||||
else if (!maxTimeoutId) {
|
||||
maxTimeoutId = setTimeout(maxDelayed, remaining);
|
||||
}
|
||||
}
|
||||
if (isCalled && timeoutId) {
|
||||
timeoutId = clearTimeout(timeoutId);
|
||||
}
|
||||
else if (!timeoutId && wait !== maxWait) {
|
||||
timeoutId = setTimeout(delayed, wait);
|
||||
}
|
||||
if (leadingCall) {
|
||||
isCalled = true;
|
||||
result = func.apply(thisArg, args);
|
||||
}
|
||||
if (isCalled && !timeoutId && !maxTimeoutId) {
|
||||
args = thisArg = null;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
};
|
||||
|
||||
function register( $$, $ ){
|
||||
|
||||
// use a single dummy dom ele as target for every qtip
|
||||
var $qtipContainer = $('<div></div>');
|
||||
var viewportDebounceRate = 250;
|
||||
|
||||
$qtipContainer.css({
|
||||
'z-index': -1,
|
||||
'position': 'absolute'
|
||||
});
|
||||
|
||||
function generateOpts( target, passedOpts ){
|
||||
var qtip = target.scratch().qtip;
|
||||
var opts = $.extend( {}, passedOpts );
|
||||
|
||||
if( !opts.id ){
|
||||
opts.id = 'cy-qtip-target-' + ( Date.now() + Math.round( Math.random() * 10000) );
|
||||
}
|
||||
|
||||
if( !qtip.$domEle ){
|
||||
qtip.$domEle = $qtipContainer;
|
||||
}
|
||||
|
||||
// qtip should be positioned relative to cy dom container
|
||||
opts.position = opts.position || {};
|
||||
opts.position.container = opts.position.container || $( document.body );
|
||||
opts.position.viewport = opts.position.viewport || $( document.body );
|
||||
opts.position.target = [0, 0];
|
||||
opts.position.my = opts.position.my || 'top center';
|
||||
opts.position.at = opts.position.at || 'bottom center';
|
||||
|
||||
// adjust
|
||||
var adjust = opts.position.adjust = opts.position.adjust || {};
|
||||
adjust.method = adjust.method || 'flip';
|
||||
adjust.mouse = false;
|
||||
|
||||
// default show event
|
||||
opts.show = opts.show || {};
|
||||
|
||||
if( isUndef(opts.show.event) ){
|
||||
opts.show.event = 'tap';
|
||||
}
|
||||
|
||||
// default hide event
|
||||
opts.hide = opts.hide || {};
|
||||
opts.hide.cyViewport = opts.hide.cyViewport === undefined ? true : opts.hide.cyViewport;
|
||||
|
||||
if( isUndef(opts.hide.event) ){
|
||||
opts.hide.event = 'unfocus';
|
||||
}
|
||||
|
||||
// so multiple qtips can exist at once (only works on recent qtip2 versions)
|
||||
opts.overwrite = false;
|
||||
|
||||
if( opts.content ){
|
||||
if ( isFunction(opts.content) || isString(opts.content) ){
|
||||
opts.content = wrap( opts.content, target );
|
||||
} else {
|
||||
opts.content = {
|
||||
text: wrap( opts.content.text, target ),
|
||||
title: wrap( opts.content.title, target )
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return opts;
|
||||
}
|
||||
|
||||
function updatePosition(ele, qtip, evt){
|
||||
var e = evt;
|
||||
var isCy = isFunction( ele.pan );
|
||||
var isEle = !isCy;
|
||||
var isNode = isEle && ele.isNode();
|
||||
var cy = isCy ? ele : ele.cy();
|
||||
var cOff = cy.container().getBoundingClientRect();
|
||||
var pos = isNode ? ele.renderedPosition() : ( e ? e.renderedPosition || e.cyRenderedPosition : undefined );
|
||||
if( !pos || pos.x == null || isNaN(pos.x) ){ return; }
|
||||
|
||||
var bb = isNode ? ele.renderedBoundingBox({
|
||||
includeNodes: true,
|
||||
includeEdges: false,
|
||||
includeLabels: false,
|
||||
includeShadows: false
|
||||
}) : {
|
||||
x1: pos.x - 1,
|
||||
x2: pos.x + 1,
|
||||
w: 3,
|
||||
y1: pos.y - 1,
|
||||
y2: pos.y + 1,
|
||||
h: 3
|
||||
};
|
||||
|
||||
if( qtip.$domEle.parent().length === 0 ){
|
||||
qtip.$domEle.appendTo(document.body);
|
||||
}
|
||||
|
||||
qtip.$domEle.css({
|
||||
'width': bb.w,
|
||||
'height': bb.h,
|
||||
'top': bb.y1 + cOff.top + window.pageYOffset,
|
||||
'left': bb.x1 + cOff.left + window.pageXOffset,
|
||||
'position': 'absolute',
|
||||
'pointer-events': 'none',
|
||||
'background': 'red',
|
||||
'z-index': 99999999,
|
||||
'opacity': 0.5,
|
||||
'visibility': 'hidden'
|
||||
});
|
||||
|
||||
qtip.api.set('position.target', qtip.$domEle);
|
||||
}
|
||||
|
||||
$$('collection', 'qtip', function( passedOpts ){
|
||||
var eles = this;
|
||||
var cy = this.cy();
|
||||
var container = cy.container();
|
||||
|
||||
if( passedOpts === 'api' ){
|
||||
return this.scratch().qtip.api;
|
||||
}
|
||||
|
||||
eles.each(function(ele, i){
|
||||
// Perform 2.x and 1.x backwards compatibility check
|
||||
if(isNumber(ele)){
|
||||
ele = i;
|
||||
}
|
||||
var scratch = ele.scratch();
|
||||
var qtip = scratch.qtip = scratch.qtip || {};
|
||||
var opts = generateOpts( ele, passedOpts );
|
||||
var adjNums = opts.position.adjust;
|
||||
|
||||
qtip.$domEle.qtip( opts );
|
||||
var qtipApi = qtip.api = qtip.$domEle.qtip('api'); // save api ref
|
||||
qtip.$domEle.removeData('qtip'); // remove qtip dom/api ref to be safe
|
||||
|
||||
updatePosition(ele, qtip);
|
||||
|
||||
ele.on( opts.show.event, function(e){
|
||||
updatePosition(ele, qtip, e);
|
||||
qtipApi.show();
|
||||
} );
|
||||
|
||||
ele.on( opts.hide.event, function(e){
|
||||
qtipApi.hide();
|
||||
} );
|
||||
|
||||
if( opts.hide.cyViewport ){
|
||||
cy.on('viewport', debounce(function(){
|
||||
qtipApi.hide();
|
||||
}, viewportDebounceRate, { leading: true }) );
|
||||
}
|
||||
|
||||
if( opts.position.adjust.cyViewport ){
|
||||
cy.on('pan zoom', debounce(function(e){
|
||||
updatePosition(ele, qtip, e);
|
||||
|
||||
qtipApi.reposition();
|
||||
}, viewportDebounceRate, { trailing: true }) );
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
return this; // chainability
|
||||
|
||||
});
|
||||
|
||||
$$('core', 'qtip', function( passedOpts ){
|
||||
var cy = this;
|
||||
var container = cy.container();
|
||||
|
||||
if( passedOpts === 'api' ){
|
||||
return this.scratch().qtip.api;
|
||||
}
|
||||
|
||||
var scratch = cy.scratch();
|
||||
var qtip = scratch.qtip = scratch.qtip || {};
|
||||
var opts = generateOpts( cy, passedOpts );
|
||||
|
||||
|
||||
qtip.$domEle.qtip( opts );
|
||||
var qtipApi = qtip.api = qtip.$domEle.qtip('api'); // save api ref
|
||||
qtip.$domEle.removeData('qtip'); // remove qtip dom/api ref to be safe
|
||||
|
||||
cy.on( opts.show.event, function(e){
|
||||
if( !opts.show.cyBgOnly || (opts.show.cyBgOnly && (e.target === cy || e.cyTarget === cy)) ){
|
||||
updatePosition(cy, qtip, e);
|
||||
|
||||
qtipApi.show();
|
||||
}
|
||||
} );
|
||||
|
||||
cy.on( opts.hide.event, function(e){
|
||||
if( !opts.hide.cyBgOnly || (opts.hide.cyBgOnly && (e.target === cy || e.cyTarget === cy)) ){
|
||||
qtipApi.hide();
|
||||
}
|
||||
} );
|
||||
|
||||
if( opts.hide.cyViewport ){
|
||||
cy.on('viewport', debounce(function(){
|
||||
qtipApi.hide();
|
||||
}, viewportDebounceRate, { leading: true }) );
|
||||
}
|
||||
|
||||
return this; // chainability
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if( typeof module !== 'undefined' && module.exports ){ // expose as a commonjs module
|
||||
module.exports = function( cytoscape ){
|
||||
var oldJq = window.jQuery;
|
||||
var old$ = window.$;
|
||||
|
||||
var jQuery = window.jQuery = window.$ = require('jquery'); // qtip requires global jquery
|
||||
var qtip = require('qtip2');
|
||||
|
||||
register( cytoscape, jQuery );
|
||||
|
||||
window.jQuery = oldJq;
|
||||
window.$ = old$;
|
||||
};
|
||||
} else if( typeof define !== 'undefined' && define.amd ){ // expose as an amd/requirejs module
|
||||
define('cytoscape-qtip', function(){
|
||||
return register;
|
||||
});
|
||||
}
|
||||
|
||||
if( $ && $$ ){
|
||||
register( $$, $ );
|
||||
}
|
||||
|
||||
})(
|
||||
typeof jQuery !== 'undefined' ? jQuery : null,
|
||||
typeof cytoscape !== 'undefined' ? cytoscape : null
|
||||
);
|
@ -0,0 +1,668 @@
|
||||
;(function () {
|
||||
'use strict';
|
||||
|
||||
// registers the extension on a cytoscape lib ref
|
||||
var register = function (cytoscape) {
|
||||
|
||||
if (!cytoscape) {
|
||||
return;
|
||||
} // can't register if cytoscape unspecified
|
||||
|
||||
// Get scratch pad reserved for this extension on the given element or the core if 'name' parameter is not set,
|
||||
// if the 'name' parameter is set then return the related property in the scratch instead of the whole scratchpad
|
||||
function getScratch (eleOrCy, name) {
|
||||
|
||||
if (eleOrCy.scratch("_undoRedo") === undefined) {
|
||||
eleOrCy.scratch("_undoRedo", {});
|
||||
}
|
||||
|
||||
var scratchPad = eleOrCy.scratch("_undoRedo");
|
||||
|
||||
return ( name === undefined ) ? scratchPad : scratchPad[name];
|
||||
}
|
||||
|
||||
// Set the a field (described by 'name' parameter) of scratchPad (that is reserved for this extension
|
||||
// on an element or the core) to the given value (by 'val' parameter)
|
||||
function setScratch (eleOrCy, name, val) {
|
||||
|
||||
var scratchPad = getScratch(eleOrCy);
|
||||
scratchPad[name] = val;
|
||||
eleOrCy.scratch("_undoRedo", scratchPad);
|
||||
}
|
||||
|
||||
// Generate an instance of the extension for the given cy instance
|
||||
function generateInstance (cy) {
|
||||
var instance = {};
|
||||
|
||||
instance.options = {
|
||||
isDebug: false, // Debug mode for console messages
|
||||
actions: {},// actions to be added
|
||||
undoableDrag: true, // Whether dragging nodes are undoable can be a function as well
|
||||
stackSizeLimit: undefined, // Size limit of undo stack, note that the size of redo stack cannot exceed size of undo stack
|
||||
beforeUndo: function () { // callback before undo is triggered.
|
||||
|
||||
},
|
||||
afterUndo: function () { // callback after undo is triggered.
|
||||
|
||||
},
|
||||
beforeRedo: function () { // callback before redo is triggered.
|
||||
|
||||
},
|
||||
afterRedo: function () { // callback after redo is triggered.
|
||||
|
||||
},
|
||||
ready: function () {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
instance.actions = {};
|
||||
|
||||
instance.undoStack = [];
|
||||
|
||||
instance.redoStack = [];
|
||||
|
||||
//resets undo and redo stacks
|
||||
instance.reset = function(undos, redos)
|
||||
{
|
||||
this.undoStack = undos || [];
|
||||
this.redoStack = redos || [];
|
||||
}
|
||||
|
||||
// Undo last action
|
||||
instance.undo = function () {
|
||||
if (!this.isUndoStackEmpty()) {
|
||||
|
||||
var action = this.undoStack.pop();
|
||||
cy.trigger("beforeUndo", [action.name, action.args]);
|
||||
|
||||
var res = this.actions[action.name]._undo(action.args);
|
||||
|
||||
this.redoStack.push({
|
||||
name: action.name,
|
||||
args: res
|
||||
});
|
||||
|
||||
cy.trigger("afterUndo", [action.name, action.args, res]);
|
||||
return res;
|
||||
} else if (this.options.isDebug) {
|
||||
console.log("Undoing cannot be done because undo stack is empty!");
|
||||
}
|
||||
};
|
||||
|
||||
// Redo last action
|
||||
instance.redo = function () {
|
||||
|
||||
if (!this.isRedoStackEmpty()) {
|
||||
var action = this.redoStack.pop();
|
||||
|
||||
cy.trigger(action.firstTime ? "beforeDo" : "beforeRedo", [action.name, action.args]);
|
||||
|
||||
if (!action.args)
|
||||
action.args = {};
|
||||
action.args.firstTime = action.firstTime ? true : false;
|
||||
|
||||
var res = this.actions[action.name]._do(action.args);
|
||||
|
||||
this.undoStack.push({
|
||||
name: action.name,
|
||||
args: res
|
||||
});
|
||||
|
||||
if (this.options.stackSizeLimit != undefined && this.undoStack.length > this.options.stackSizeLimit ) {
|
||||
this.undoStack.shift();
|
||||
}
|
||||
|
||||
cy.trigger(action.firstTime ? "afterDo" : "afterRedo", [action.name, action.args, res]);
|
||||
return res;
|
||||
} else if (this.options.isDebug) {
|
||||
console.log("Redoing cannot be done because redo stack is empty!");
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Calls registered function with action name actionName via actionFunction(args)
|
||||
instance.do = function (actionName, args) {
|
||||
|
||||
this.redoStack.length = 0;
|
||||
this.redoStack.push({
|
||||
name: actionName,
|
||||
args: args,
|
||||
firstTime: true
|
||||
});
|
||||
|
||||
return this.redo();
|
||||
};
|
||||
|
||||
// Undo all actions in undo stack
|
||||
instance.undoAll = function() {
|
||||
|
||||
while( !this.isUndoStackEmpty() ) {
|
||||
this.undo();
|
||||
}
|
||||
};
|
||||
|
||||
// Redo all actions in redo stack
|
||||
instance.redoAll = function() {
|
||||
|
||||
while( !this.isRedoStackEmpty() ) {
|
||||
this.redo();
|
||||
}
|
||||
};
|
||||
|
||||
// Register action with its undo function & action name.
|
||||
instance.action = function (actionName, _do, _undo) {
|
||||
|
||||
this.actions[actionName] = {
|
||||
_do: _do,
|
||||
_undo: _undo
|
||||
};
|
||||
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
// Removes action stated with actionName param
|
||||
instance.removeAction = function (actionName) {
|
||||
delete this.actions[actionName];
|
||||
};
|
||||
|
||||
// Gets whether undo stack is empty
|
||||
instance.isUndoStackEmpty = function () {
|
||||
return (this.undoStack.length === 0);
|
||||
};
|
||||
|
||||
// Gets whether redo stack is empty
|
||||
instance.isRedoStackEmpty = function () {
|
||||
return (this.redoStack.length === 0);
|
||||
};
|
||||
|
||||
// Gets actions (with their args) in undo stack
|
||||
instance.getUndoStack = function () {
|
||||
return this.undoStack;
|
||||
};
|
||||
|
||||
// Gets actions (with their args) in redo stack
|
||||
instance.getRedoStack = function () {
|
||||
return this.redoStack;
|
||||
};
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
// design implementation
|
||||
cytoscape("core", "undoRedo", function (options, dontInit) {
|
||||
var cy = this;
|
||||
var instance = getScratch(cy, 'instance') || generateInstance(cy);
|
||||
setScratch(cy, 'instance', instance);
|
||||
|
||||
if (options) {
|
||||
for (var key in options)
|
||||
if (instance.options.hasOwnProperty(key))
|
||||
instance.options[key] = options[key];
|
||||
|
||||
if (options.actions)
|
||||
for (var key in options.actions)
|
||||
instance.actions[key] = options.actions[key];
|
||||
|
||||
}
|
||||
|
||||
if (!getScratch(cy, 'isInitialized') && !dontInit) {
|
||||
|
||||
var defActions = defaultActions(cy);
|
||||
for (var key in defActions)
|
||||
instance.actions[key] = defActions[key];
|
||||
|
||||
|
||||
setDragUndo(cy, instance.options.undoableDrag);
|
||||
setScratch(cy, 'isInitialized', true);
|
||||
}
|
||||
|
||||
instance.options.ready();
|
||||
|
||||
return instance;
|
||||
|
||||
});
|
||||
|
||||
function setDragUndo(cy, undoable) {
|
||||
var lastMouseDownNodeInfo = null;
|
||||
|
||||
cy.on("grab", "node", function () {
|
||||
if (typeof undoable === 'function' ? undoable.call(this) : undoable) {
|
||||
lastMouseDownNodeInfo = {};
|
||||
lastMouseDownNodeInfo.lastMouseDownPosition = {
|
||||
x: this.position("x"),
|
||||
y: this.position("y")
|
||||
};
|
||||
lastMouseDownNodeInfo.node = this;
|
||||
}
|
||||
});
|
||||
cy.on("free", "node", function () {
|
||||
|
||||
var instance = getScratch(cy, 'instance');
|
||||
|
||||
if (typeof undoable === 'function' ? undoable.call(this) : undoable) {
|
||||
if (lastMouseDownNodeInfo == null) {
|
||||
return;
|
||||
}
|
||||
var node = lastMouseDownNodeInfo.node;
|
||||
var lastMouseDownPosition = lastMouseDownNodeInfo.lastMouseDownPosition;
|
||||
var mouseUpPosition = {
|
||||
x: node.position("x"),
|
||||
y: node.position("y")
|
||||
};
|
||||
if (mouseUpPosition.x != lastMouseDownPosition.x ||
|
||||
mouseUpPosition.y != lastMouseDownPosition.y) {
|
||||
var positionDiff = {
|
||||
x: mouseUpPosition.x - lastMouseDownPosition.x,
|
||||
y: mouseUpPosition.y - lastMouseDownPosition.y
|
||||
};
|
||||
|
||||
var nodes;
|
||||
if (node.selected()) {
|
||||
nodes = cy.nodes(":visible").filter(":selected");
|
||||
}
|
||||
else {
|
||||
nodes = cy.collection([node]);
|
||||
}
|
||||
|
||||
var param = {
|
||||
positionDiff: positionDiff,
|
||||
nodes: nodes, move: false
|
||||
};
|
||||
|
||||
instance.do("drag", param);
|
||||
|
||||
lastMouseDownNodeInfo = null;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Default actions
|
||||
function defaultActions(cy) {
|
||||
|
||||
function getTopMostNodes(nodes) {
|
||||
var nodesMap = {};
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
nodesMap[nodes[i].id()] = true;
|
||||
}
|
||||
var roots = nodes.filter(function (ele, i) {
|
||||
if(typeof ele === "number") {
|
||||
ele = i;
|
||||
}
|
||||
var parent = ele.parent()[0];
|
||||
while(parent != null){
|
||||
if(nodesMap[parent.id()]){
|
||||
return false;
|
||||
}
|
||||
parent = parent.parent()[0];
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
return roots;
|
||||
}
|
||||
|
||||
function moveNodes(positionDiff, nodes, notCalcTopMostNodes) {
|
||||
var topMostNodes = notCalcTopMostNodes?nodes:getTopMostNodes(nodes);
|
||||
for (var i = 0; i < topMostNodes.length; i++) {
|
||||
var node = topMostNodes[i];
|
||||
var oldX = node.position("x");
|
||||
var oldY = node.position("y");
|
||||
//Only simple nodes are moved since the movement of compounds caused the position to be moved twice
|
||||
if (!node.isParent())
|
||||
{
|
||||
node.position({
|
||||
x: oldX + positionDiff.x,
|
||||
y: oldY + positionDiff.y
|
||||
});
|
||||
}
|
||||
var children = node.children();
|
||||
moveNodes(positionDiff, children, true);
|
||||
}
|
||||
}
|
||||
|
||||
function getEles(_eles) {
|
||||
return (typeof _eles === "string") ? cy.$(_eles) : _eles;
|
||||
}
|
||||
|
||||
function restoreEles(_eles) {
|
||||
return getEles(_eles).restore();
|
||||
}
|
||||
|
||||
|
||||
function returnToPositions(positions) {
|
||||
var currentPositions = {};
|
||||
cy.nodes().not(":parent").positions(function (ele, i) {
|
||||
if(typeof ele === "number") {
|
||||
ele = i;
|
||||
}
|
||||
|
||||
currentPositions[ele.id()] = {
|
||||
x: ele.position("x"),
|
||||
y: ele.position("y")
|
||||
};
|
||||
var pos = positions[ele.id()];
|
||||
return {
|
||||
x: pos.x,
|
||||
y: pos.y
|
||||
};
|
||||
});
|
||||
|
||||
return currentPositions;
|
||||
}
|
||||
|
||||
function getNodePositions() {
|
||||
var positions = {};
|
||||
var nodes = cy.nodes();
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
var node = nodes[i];
|
||||
positions[node.id()] = {
|
||||
x: node.position("x"),
|
||||
y: node.position("y")
|
||||
};
|
||||
}
|
||||
return positions;
|
||||
}
|
||||
|
||||
function changeParentOld(param) {
|
||||
var result = {
|
||||
};
|
||||
// If this is first time we should move the node to its new parent and relocate it by given posDiff params
|
||||
// else we should remove the moved eles and restore the eles to restore
|
||||
if (param.firstTime) {
|
||||
var newParentId = param.parentData == undefined ? null : param.parentData;
|
||||
// These eles includes the nodes and their connected edges and will be removed in nodes.move().
|
||||
// They should be restored in undo
|
||||
var withDescendant = param.nodes.union(param.nodes.descendants());
|
||||
result.elesToRestore = withDescendant.union(withDescendant.connectedEdges());
|
||||
// These are the eles created by nodes.move(), they should be removed in undo.
|
||||
result.movedEles = param.nodes.move({"parent": newParentId});
|
||||
|
||||
var posDiff = {
|
||||
x: param.posDiffX,
|
||||
y: param.posDiffY
|
||||
};
|
||||
|
||||
moveNodes(posDiff, result.movedEles);
|
||||
}
|
||||
else {
|
||||
result.elesToRestore = param.movedEles.remove();
|
||||
result.movedEles = param.elesToRestore.restore();
|
||||
}
|
||||
|
||||
if (param.callback) {
|
||||
result.callback = param.callback; // keep the provided callback so it can be reused after undo/redo
|
||||
param.callback(result.movedEles); // apply the callback on newly created elements
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function changeParentNew(param) {
|
||||
var result = {
|
||||
};
|
||||
// If this is first time we should move the node to its new parent and relocate it by given posDiff params
|
||||
// else we should remove the moved eles and restore the eles to restore
|
||||
if (param.firstTime) {
|
||||
var newParentId = param.parentData == undefined ? null : param.parentData;
|
||||
// These eles includes the nodes and their connected edges and will be removed in nodes.move().
|
||||
// They should be restored in undo
|
||||
var withDescendant = param.nodes.union(param.nodes.descendants());
|
||||
var parentData = {};
|
||||
withDescendant.forEach(function(ele){
|
||||
if(ele.parent().id())
|
||||
parentData[ele.id()] = ele.parent();
|
||||
else
|
||||
parentData[ele.id()] = null;
|
||||
});
|
||||
var positionData = {};
|
||||
withDescendant.forEach(function(ele){
|
||||
positionData[ele.id()] = {};
|
||||
positionData[ele.id()].x = ele.position('x');
|
||||
positionData[ele.id()].y = ele.position('y');
|
||||
});
|
||||
result.oldParent = parentData;
|
||||
result.oldPosition = positionData;
|
||||
result.newParent = newParentId;
|
||||
result.movedEles = withDescendant;
|
||||
param.nodes.move({"parent": newParentId}).nodes();
|
||||
var posDiff = {
|
||||
x: param.posDiffX,
|
||||
y: param.posDiffY
|
||||
};
|
||||
|
||||
moveNodes(posDiff, result.movedEles);
|
||||
}
|
||||
else {
|
||||
result.oldParent = {};
|
||||
param.movedEles.forEach(function(ele){
|
||||
if(ele.parent().id())
|
||||
result.oldParent[ele.id()] = ele.parent();
|
||||
else
|
||||
result.oldParent[ele.id()] = null;
|
||||
});
|
||||
result.oldPosition = {};
|
||||
param.movedEles.forEach(function(ele){
|
||||
result.oldPosition[ele.id()] = {};
|
||||
result.oldPosition[ele.id()].x = ele.position("x");
|
||||
result.oldPosition[ele.id()].y = ele.position("y");
|
||||
});
|
||||
result.newParent = param.oldParent;
|
||||
result.movedEles = param.movedEles;
|
||||
result.movedEles.forEach(function(ele){
|
||||
if(typeof result.newParent !== 'object')
|
||||
ele.move({'parent': result.newParent});
|
||||
else if(result.newParent[ele.id()] == null)
|
||||
ele.move({'parent': null});
|
||||
else
|
||||
ele.move({'parent': result.newParent[ele.id()].id()});
|
||||
|
||||
ele.position(param.oldPosition[ele.id()]);
|
||||
});
|
||||
}
|
||||
|
||||
if (param.callback) {
|
||||
result.callback = param.callback; // keep the provided callback so it can be reused after undo/redo
|
||||
param.callback(result.movedEles); // apply the callback on newly created elements
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// function registered in the defaultActions below
|
||||
// to be used like .do('batch', actionList)
|
||||
// allows to apply any quantity of registered action in one go
|
||||
// the whole batch can be undone/redone with one key press
|
||||
function batch (actionList, doOrUndo) {
|
||||
var tempStack = []; // corresponds to the results of every action queued in actionList
|
||||
var instance = getScratch(cy, 'instance'); // get extension instance through cy
|
||||
var actions = instance.actions;
|
||||
|
||||
// here we need to check in advance if all the actions provided really correspond to available functions
|
||||
// if one of the action cannot be executed, the whole batch is corrupted because we can't go back after
|
||||
for (var i = 0; i < actionList.length; i++) {
|
||||
var action = actionList[i];
|
||||
if (!actions.hasOwnProperty(action.name)) {
|
||||
throw "Action " + action.name + " does not exist as an undoable function";
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < actionList.length; i++) {
|
||||
var action = actionList[i];
|
||||
// firstTime property is automatically injected into actionList by the do() function
|
||||
// we use that to pass it down to the actions in the batch
|
||||
action.param.firstTime = actionList.firstTime;
|
||||
var actionResult;
|
||||
if (doOrUndo == "undo") {
|
||||
actionResult = actions[action.name]._undo(action.param);
|
||||
}
|
||||
else {
|
||||
actionResult = actions[action.name]._do(action.param);
|
||||
}
|
||||
|
||||
tempStack.unshift({
|
||||
name: action.name,
|
||||
param: actionResult
|
||||
});
|
||||
}
|
||||
|
||||
return tempStack;
|
||||
};
|
||||
|
||||
return {
|
||||
"add": {
|
||||
_do: function (eles) {
|
||||
return eles.firstTime ? cy.add(eles) : restoreEles(eles);
|
||||
},
|
||||
_undo: cy.remove
|
||||
},
|
||||
"remove": {
|
||||
_do: cy.remove,
|
||||
_undo: restoreEles
|
||||
},
|
||||
"restore": {
|
||||
_do: restoreEles,
|
||||
_undo: cy.remove
|
||||
},
|
||||
"select": {
|
||||
_do: function (_eles) {
|
||||
return getEles(_eles).select();
|
||||
},
|
||||
_undo: function (_eles) {
|
||||
return getEles(_eles).unselect();
|
||||
}
|
||||
},
|
||||
"unselect": {
|
||||
_do: function (_eles) {
|
||||
return getEles(_eles).unselect();
|
||||
},
|
||||
_undo: function (_eles) {
|
||||
return getEles(_eles).select();
|
||||
}
|
||||
},
|
||||
"move": {
|
||||
_do: function (args) {
|
||||
var eles = getEles(args.eles);
|
||||
var nodes = eles.nodes();
|
||||
var edges = eles.edges();
|
||||
|
||||
return {
|
||||
oldNodes: nodes,
|
||||
newNodes: nodes.move(args.location),
|
||||
oldEdges: edges,
|
||||
newEdges: edges.move(args.location)
|
||||
};
|
||||
},
|
||||
_undo: function (eles) {
|
||||
var newEles = cy.collection();
|
||||
var location = {};
|
||||
if (eles.newNodes.length > 0) {
|
||||
location.parent = eles.newNodes[0].parent();
|
||||
|
||||
for (var i = 0; i < eles.newNodes.length; i++) {
|
||||
var newNode = eles.newNodes[i].move({
|
||||
parent: eles.oldNodes[i].parent()
|
||||
});
|
||||
newEles.union(newNode);
|
||||
}
|
||||
} else {
|
||||
location.source = location.newEdges[0].source();
|
||||
location.target = location.newEdges[0].target();
|
||||
|
||||
for (var i = 0; i < eles.newEdges.length; i++) {
|
||||
var newEdge = eles.newEdges[i].move({
|
||||
source: eles.oldEdges[i].source(),
|
||||
target: eles.oldEdges[i].target()
|
||||
});
|
||||
newEles.union(newEdge);
|
||||
}
|
||||
}
|
||||
return {
|
||||
eles: newEles,
|
||||
location: location
|
||||
};
|
||||
}
|
||||
},
|
||||
"drag": {
|
||||
_do: function (args) {
|
||||
if (args.move)
|
||||
moveNodes(args.positionDiff, args.nodes);
|
||||
return args;
|
||||
},
|
||||
_undo: function (args) {
|
||||
var diff = {
|
||||
x: -1 * args.positionDiff.x,
|
||||
y: -1 * args.positionDiff.y
|
||||
};
|
||||
var result = {
|
||||
positionDiff: args.positionDiff,
|
||||
nodes: args.nodes,
|
||||
move: true
|
||||
};
|
||||
moveNodes(diff, args.nodes);
|
||||
return result;
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
_do: function (args) {
|
||||
if (args.firstTime){
|
||||
var positions = getNodePositions();
|
||||
var layout;
|
||||
if(args.eles) {
|
||||
layout = getEles(args.eles).layout(args.options);
|
||||
}
|
||||
else {
|
||||
layout = cy.layout(args.options);
|
||||
}
|
||||
|
||||
// Do this check for cytoscape.js backward compatibility
|
||||
if (layout && layout.run) {
|
||||
layout.run();
|
||||
}
|
||||
|
||||
return positions;
|
||||
} else
|
||||
return returnToPositions(args);
|
||||
},
|
||||
_undo: function (nodesData) {
|
||||
return returnToPositions(nodesData);
|
||||
}
|
||||
},
|
||||
"changeParent": {
|
||||
_do: function (args) {
|
||||
return (cy.nodes()[0].component ? changeParentNew(args) : changeParentOld(args));
|
||||
},
|
||||
_undo: function (args) {
|
||||
return (cy.nodes()[0].component ? changeParentNew(args) : changeParentOld(args));
|
||||
}
|
||||
},
|
||||
"batch": {
|
||||
_do: function (args) {
|
||||
return batch(args, "do");
|
||||
},
|
||||
_undo: function (args) {
|
||||
return batch(args, "undo");
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
if (typeof module !== 'undefined' && module.exports) { // expose as a commonjs module
|
||||
module.exports = register;
|
||||
}
|
||||
|
||||
if (typeof define !== 'undefined' && define.amd) { // expose as an amd/requirejs module
|
||||
define('cytoscape.js-undo-redo', function () {
|
||||
return register;
|
||||
});
|
||||
}
|
||||
|
||||
if (typeof cytoscape !== 'undefined') { // expose to global cytoscape (i.e. window.cytoscape)
|
||||
register(cytoscape);
|
||||
}
|
||||
|
||||
})();
|
@ -0,0 +1,45 @@
|
||||
/*
|
||||
download png of graph
|
||||
*/
|
||||
|
||||
|
||||
function downloadPNG(cy, pos, name){
|
||||
|
||||
var png64 = cy.png({'output': 'blob'});
|
||||
saveAs(new Blob([png64], {type:"image/png"}));
|
||||
}
|
||||
|
||||
function downloadSVG(cy, pos, name, nodeVal){
|
||||
var svgContent = cy.svg({scale: 1, full: true});
|
||||
saveAs(new Blob([svgContent], {type:"image/svg+xml;charset=utf-8"}));
|
||||
}
|
||||
|
||||
function downloadPDF() {
|
||||
jQuery(window).scrollTop(0);
|
||||
const domElement = document.getElementById('body');
|
||||
var divHeight = window.innerHeight
|
||||
var divWidth = window.innerWidth
|
||||
var ratio = divHeight / divWidth;
|
||||
|
||||
var doc = new jsPDF("l", "mm");
|
||||
var width = doc.internal.pageSize.getWidth();
|
||||
var height = (ratio * width);
|
||||
|
||||
html2canvas(jQuery("body").get(0), { onclone: (document) => {
|
||||
document.getElementById('description').remove();
|
||||
document.getElementById('heatmapcontainer').remove();
|
||||
document.getElementById('selectAttribute').remove();
|
||||
document.getElementById('downloadPDF').remove();
|
||||
document.getElementById('resetLeft').remove();
|
||||
document.getElementById('resetRight').remove();
|
||||
document.getElementById('keggpathwaysLeft').style.visibility = 'hidden'
|
||||
document.getElementById('keggpathwaysRight').style.visibility = 'hidden'
|
||||
document.getElementById('nav').style.visibility = 'hidden'
|
||||
document.getElementById('footer').style.visibility = 'hidden'
|
||||
}}).then(function(canvas){
|
||||
var imgData = canvas.toDataURL('image/png');
|
||||
|
||||
doc.addImage(imgData, 'PNG', 0, 0, width, height);
|
||||
doc.save();
|
||||
});
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
download merged graph
|
||||
*/
|
||||
|
||||
function downloadMergePNG(){
|
||||
var png64 = merge_graph.png({'output': 'blob'});
|
||||
saveAs(new Blob([png64], {type:"image/png"}));
|
||||
}
|
||||
|
||||
function downloadMergeSVG(){
|
||||
var svgContent = merge_graph.svg({scale: 1, full: true});
|
||||
saveAs(new Blob([svgContent], {type:"image/svg+xml;charset=utf-8"}));
|
||||
}
|
||||
|
||||
function downloadMergePDF(){
|
||||
const domElement = document.getElementById('body');
|
||||
var divHeight = window.innerHeight
|
||||
var divWidth = window.innerWidth
|
||||
var ratio = divHeight / divWidth;
|
||||
|
||||
var doc = new jsPDF("l", "mm");
|
||||
var width = doc.internal.pageSize.getWidth();
|
||||
var height = (ratio * width);
|
||||
|
||||
html2canvas(jQuery("#body").get(0), { onclone: (document) => {
|
||||
document.getElementById('nav').style.visibility = 'hidden'
|
||||
document.getElementById('resetMerge').style.visibility = 'hidden'
|
||||
document.getElementById('nav').style.visibility = 'hidden';
|
||||
document.getElementById('merged_graph_buttons').style.visibility = 'hidden'
|
||||
document.getElementById('keggpathwaysMerge').style.visibility = 'hidden'
|
||||
document.getElementById('footer').style.visibility = 'hidden'
|
||||
document.getElementById('searchbutn').style.visibility = 'hidden'
|
||||
if(document.getElementById('searchgene').value == "Search gene"){
|
||||
document.getElementById('searchgene').style.visibility = 'hidden'
|
||||
}
|
||||
}}).then(function(canvas){
|
||||
var imgData = canvas.toDataURL('image/png');
|
||||
|
||||
doc.addImage(imgData, 'PNG', 0, 0, width, height);
|
||||
doc.save();
|
||||
})
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
/*
|
||||
download of graph
|
||||
*/
|
||||
|
||||
// function downloadName(ext){
|
||||
// outputName = document.getElementById('outputName').value;
|
||||
// if(outputName != "Download File name"){
|
||||
// return outputName + ext;
|
||||
// }
|
||||
// else if(path){
|
||||
// return path.replace(".graphml", "_") + '_' + nodeVal + ext;
|
||||
// }
|
||||
// else{
|
||||
// return "example" + ext;
|
||||
// }
|
||||
// }
|
||||
|
||||
function downloadPNG(){
|
||||
var png64 = cy.png({'output': 'blob'});
|
||||
saveAs(new Blob([png64], {type:"image/png"}));
|
||||
}
|
||||
|
||||
function downloadSVG(){
|
||||
var svgContent = cy.svg({scale: 1, full: true});
|
||||
saveAs(new Blob([svgContent], {type:"image/svg+xml;charset=utf-8"}));
|
||||
}
|
||||
|
||||
function downloadJSON(){
|
||||
var json = JSON.stringify(cy.json());
|
||||
jQuery('#downloadJSON').attr('href', json);
|
||||
var download = document.createElement('a');
|
||||
download.href = 'data:text/json;charset=utf-8,'+encodeURIComponent(json);
|
||||
document.body.appendChild(download); // required for firefox
|
||||
// download.download = downloadName('.json');
|
||||
download.click();
|
||||
}
|
||||
|
||||
function downloadPDF () {
|
||||
const domElement = document.getElementById('everything');
|
||||
var divHeight = window.innerHeight
|
||||
var divWidth = window.innerWidth
|
||||
var ratio = divHeight / divWidth;
|
||||
|
||||
var doc = new jsPDF("l", "mm");
|
||||
var width = doc.internal.pageSize.getWidth();
|
||||
var height = (ratio * width);
|
||||
|
||||
html2canvas(jQuery("#everything").get(0), { onclone: (document) => {
|
||||
document.getElementById('nav').style.visibility = 'hidden'
|
||||
// document.getElementById('description').style.visibility = 'hidden'
|
||||
document.getElementById('downloadPart').style.visibility = 'hidden'
|
||||
document.getElementById('resetLayout').style.visibility = 'hidden'
|
||||
// document.getElementById('loadGraphml').style.visibility = 'hidden'
|
||||
document.getElementById('keggpathways').style.visibility = 'hidden'
|
||||
document.getElementById('footer').style.visibility = 'hidden'
|
||||
document.getElementById('searchbutn').style.visibility = 'hidden'
|
||||
document.getElementById('undobutn').style.visibility = 'hidden'
|
||||
// document.getElementById('exampleFile').style.visibility = 'hidden'
|
||||
if(!noDrpShapes){
|
||||
document.getElementById('nodeShapesAttr').style.visibility = 'hidden'
|
||||
document.getElementById('nodeShapes').style.visibility = 'hidden'
|
||||
}
|
||||
if(document.getElementById('searchgene').value == "Search gene"){
|
||||
document.getElementById('searchgene').style.visibility = 'hidden'
|
||||
}
|
||||
}}).then(function(canvas){
|
||||
var imgData = canvas.toDataURL('image/png');
|
||||
|
||||
doc.addImage(imgData, 'PNG', 0, 0, width, height);
|
||||
|
||||
doc.save();
|
||||
});
|
||||
}
|
795
resources/app/app/BioGraphVisart-master/static/scripts/external/cxtmenu.js
vendored
Normal file
@ -0,0 +1,795 @@
|
||||
(function webpackUniversalModuleDefinition(root, factory) {
|
||||
if(typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = factory();
|
||||
else if(typeof define === 'function' && define.amd)
|
||||
define([], factory);
|
||||
else if(typeof exports === 'object')
|
||||
exports["cytoscapeCxtmenu"] = factory();
|
||||
else
|
||||
root["cytoscapeCxtmenu"] = factory();
|
||||
})(this, function() {
|
||||
return /******/ (function(modules) { // webpackBootstrap
|
||||
/******/ // The module cache
|
||||
/******/ var installedModules = {};
|
||||
/******/
|
||||
/******/ // The require function
|
||||
/******/ function __webpack_require__(moduleId) {
|
||||
/******/
|
||||
/******/ // Check if module is in cache
|
||||
/******/ if(installedModules[moduleId]) {
|
||||
/******/ return installedModules[moduleId].exports;
|
||||
/******/ }
|
||||
/******/ // Create a new module (and put it into the cache)
|
||||
/******/ var module = installedModules[moduleId] = {
|
||||
/******/ i: moduleId,
|
||||
/******/ l: false,
|
||||
/******/ exports: {}
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Execute the module function
|
||||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||||
/******/
|
||||
/******/ // Flag the module as loaded
|
||||
/******/ module.l = true;
|
||||
/******/
|
||||
/******/ // Return the exports of the module
|
||||
/******/ return module.exports;
|
||||
/******/ }
|
||||
/******/
|
||||
/******/
|
||||
/******/ // expose the modules object (__webpack_modules__)
|
||||
/******/ __webpack_require__.m = modules;
|
||||
/******/
|
||||
/******/ // expose the module cache
|
||||
/******/ __webpack_require__.c = installedModules;
|
||||
/******/
|
||||
/******/ // identity function for calling harmony imports with the correct context
|
||||
/******/ __webpack_require__.i = function(value) { return value; };
|
||||
/******/
|
||||
/******/ // define getter function for harmony exports
|
||||
/******/ __webpack_require__.d = function(exports, name, getter) {
|
||||
/******/ if(!__webpack_require__.o(exports, name)) {
|
||||
/******/ Object.defineProperty(exports, name, {
|
||||
/******/ configurable: false,
|
||||
/******/ enumerable: true,
|
||||
/******/ get: getter
|
||||
/******/ });
|
||||
/******/ }
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
||||
/******/ __webpack_require__.n = function(module) {
|
||||
/******/ var getter = module && module.__esModule ?
|
||||
/******/ function getDefault() { return module['default']; } :
|
||||
/******/ function getModuleExports() { return module; };
|
||||
/******/ __webpack_require__.d(getter, 'a', getter);
|
||||
/******/ return getter;
|
||||
/******/ };
|
||||
/******/
|
||||
/******/ // Object.prototype.hasOwnProperty.call
|
||||
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
||||
/******/
|
||||
/******/ // __webpack_public_path__
|
||||
/******/ __webpack_require__.p = "";
|
||||
/******/
|
||||
/******/ // Load entry module and return exports
|
||||
/******/ return __webpack_require__(__webpack_require__.s = 4);
|
||||
/******/ })
|
||||
/************************************************************************/
|
||||
/******/ ([
|
||||
/* 0 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var defaults = __webpack_require__(2);
|
||||
var assign = __webpack_require__(1);
|
||||
|
||||
var _require = __webpack_require__(3),
|
||||
removeEles = _require.removeEles,
|
||||
setStyles = _require.setStyles,
|
||||
createElement = _require.createElement,
|
||||
getPixelRatio = _require.getPixelRatio,
|
||||
getOffset = _require.getOffset;
|
||||
|
||||
var cxtmenu = function cxtmenu(params) {
|
||||
var options = assign({}, defaults, params);
|
||||
var cy = this;
|
||||
var container = cy.container();
|
||||
var target = void 0;
|
||||
|
||||
var data = {
|
||||
options: options,
|
||||
handlers: [],
|
||||
container: createElement({ class: 'cxtmenu' })
|
||||
};
|
||||
|
||||
var wrapper = data.container;
|
||||
var parent = createElement();
|
||||
var canvas = createElement({ tag: 'canvas' });
|
||||
var commands = [];
|
||||
var c2d = canvas.getContext('2d');
|
||||
var r = options.menuRadius;
|
||||
var containerSize = (r + options.activePadding) * 2;
|
||||
var activeCommandI = void 0;
|
||||
var offset = void 0;
|
||||
|
||||
container.insertBefore(wrapper, container.firstChild);
|
||||
wrapper.appendChild(parent);
|
||||
parent.appendChild(canvas);
|
||||
|
||||
setStyles(wrapper, {
|
||||
position: 'absolute',
|
||||
zIndex: options.zIndex,
|
||||
userSelect: 'none',
|
||||
pointerEvents: 'none' // prevent events on menu in modern browsers
|
||||
});
|
||||
|
||||
// prevent events on menu in legacy browsers
|
||||
['mousedown', 'mousemove', 'mouseup', 'contextmenu'].forEach(function (evt) {
|
||||
wrapper.addEventListener(evt, function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
setStyles(parent, {
|
||||
display: 'none',
|
||||
width: containerSize + 'px',
|
||||
height: containerSize + 'px',
|
||||
position: 'absolute',
|
||||
zIndex: 1,
|
||||
marginLeft: -options.activePadding + 'px',
|
||||
marginTop: -options.activePadding + 'px',
|
||||
userSelect: 'none'
|
||||
});
|
||||
|
||||
canvas.width = containerSize;
|
||||
canvas.height = containerSize;
|
||||
|
||||
function createMenuItems() {
|
||||
removeEles('.cxtmenu-item', parent);
|
||||
var dtheta = 2 * Math.PI / commands.length;
|
||||
var theta1 = Math.PI / 2;
|
||||
var theta2 = theta1 + dtheta;
|
||||
|
||||
for (var i = 0; i < commands.length; i++) {
|
||||
var command = commands[i];
|
||||
|
||||
var midtheta = (theta1 + theta2) / 2;
|
||||
var rx1 = 0.66 * r * Math.cos(midtheta);
|
||||
var ry1 = 0.66 * r * Math.sin(midtheta);
|
||||
|
||||
var item = createElement({ class: 'cxtmenu-item' });
|
||||
setStyles(item, {
|
||||
color: options.itemColor,
|
||||
cursor: 'default',
|
||||
display: 'table',
|
||||
'text-align': 'center',
|
||||
//background: 'red',
|
||||
position: 'absolute',
|
||||
'text-shadow': '-1px -1px 2px ' + options.itemTextShadowColor + ', 1px -1px 2px ' + options.itemTextShadowColor + ', -1px 1px 2px ' + options.itemTextShadowColor + ', 1px 1px 1px ' + options.itemTextShadowColor,
|
||||
left: '50%',
|
||||
top: '50%',
|
||||
'min-height': r * 0.66 + 'px',
|
||||
width: r * 0.66 + 'px',
|
||||
height: r * 0.66 + 'px',
|
||||
marginLeft: rx1 - r * 0.33 + 'px',
|
||||
marginTop: -ry1 - r * 0.33 + 'px'
|
||||
});
|
||||
|
||||
var content = createElement({ class: 'cxtmenu-content' });
|
||||
|
||||
if (command.content instanceof HTMLElement) {
|
||||
content.appendChild(command.content);
|
||||
} else {
|
||||
content.innerHTML = command.content;
|
||||
}
|
||||
|
||||
setStyles(content, {
|
||||
'width': r * 0.66 + 'px',
|
||||
'height': r * 0.66 + 'px',
|
||||
'vertical-align': 'middle',
|
||||
'display': 'table-cell'
|
||||
});
|
||||
|
||||
setStyles(content, command.contentStyle || {});
|
||||
|
||||
if (command.disabled === true || command.enabled === false) {
|
||||
content.setAttribute('class', 'cxtmenu-content cxtmenu-disabled');
|
||||
}
|
||||
|
||||
parent.appendChild(item);
|
||||
item.appendChild(content);
|
||||
|
||||
theta1 += dtheta;
|
||||
theta2 += dtheta;
|
||||
}
|
||||
}
|
||||
|
||||
function queueDrawBg(rspotlight) {
|
||||
redrawQueue.drawBg = [rspotlight];
|
||||
}
|
||||
|
||||
function drawBg(rspotlight) {
|
||||
rspotlight = rspotlight !== undefined ? rspotlight : rs;
|
||||
|
||||
c2d.globalCompositeOperation = 'source-over';
|
||||
|
||||
c2d.clearRect(0, 0, containerSize, containerSize);
|
||||
|
||||
// draw background items
|
||||
c2d.fillStyle = options.fillColor;
|
||||
var dtheta = 2 * Math.PI / commands.length;
|
||||
var theta1 = Math.PI / 2;
|
||||
var theta2 = theta1 + dtheta;
|
||||
|
||||
for (var index = 0; index < commands.length; index++) {
|
||||
var command = commands[index];
|
||||
|
||||
if (command.fillColor) {
|
||||
c2d.fillStyle = command.fillColor;
|
||||
}
|
||||
c2d.beginPath();
|
||||
c2d.moveTo(r + options.activePadding, r + options.activePadding);
|
||||
c2d.arc(r + options.activePadding, r + options.activePadding, r, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true);
|
||||
c2d.closePath();
|
||||
c2d.fill();
|
||||
|
||||
theta1 += dtheta;
|
||||
theta2 += dtheta;
|
||||
|
||||
c2d.fillStyle = options.fillColor;
|
||||
}
|
||||
|
||||
// draw separators between items
|
||||
c2d.globalCompositeOperation = 'destination-out';
|
||||
c2d.strokeStyle = 'white';
|
||||
c2d.lineWidth = options.separatorWidth;
|
||||
theta1 = Math.PI / 2;
|
||||
theta2 = theta1 + dtheta;
|
||||
|
||||
for (var i = 0; i < commands.length; i++) {
|
||||
var rx1 = r * Math.cos(theta1);
|
||||
var ry1 = r * Math.sin(theta1);
|
||||
c2d.beginPath();
|
||||
c2d.moveTo(r + options.activePadding, r + options.activePadding);
|
||||
c2d.lineTo(r + options.activePadding + rx1, r + options.activePadding - ry1);
|
||||
c2d.closePath();
|
||||
c2d.stroke();
|
||||
|
||||
theta1 += dtheta;
|
||||
theta2 += dtheta;
|
||||
}
|
||||
|
||||
c2d.fillStyle = 'white';
|
||||
c2d.globalCompositeOperation = 'destination-out';
|
||||
c2d.beginPath();
|
||||
c2d.arc(r + options.activePadding, r + options.activePadding, rspotlight + options.spotlightPadding, 0, Math.PI * 2, true);
|
||||
c2d.closePath();
|
||||
c2d.fill();
|
||||
|
||||
c2d.globalCompositeOperation = 'source-over';
|
||||
}
|
||||
|
||||
function queueDrawCommands(rx, ry, theta) {
|
||||
redrawQueue.drawCommands = [rx, ry, theta];
|
||||
}
|
||||
|
||||
function drawCommands(rx, ry, theta) {
|
||||
var dtheta = 2 * Math.PI / commands.length;
|
||||
var theta1 = Math.PI / 2;
|
||||
var theta2 = theta1 + dtheta;
|
||||
|
||||
theta1 += dtheta * activeCommandI;
|
||||
theta2 += dtheta * activeCommandI;
|
||||
|
||||
c2d.fillStyle = options.activeFillColor;
|
||||
c2d.strokeStyle = 'black';
|
||||
c2d.lineWidth = 1;
|
||||
c2d.beginPath();
|
||||
c2d.moveTo(r + options.activePadding, r + options.activePadding);
|
||||
c2d.arc(r + options.activePadding, r + options.activePadding, r + options.activePadding, 2 * Math.PI - theta1, 2 * Math.PI - theta2, true);
|
||||
c2d.closePath();
|
||||
c2d.fill();
|
||||
|
||||
c2d.fillStyle = 'white';
|
||||
c2d.globalCompositeOperation = 'destination-out';
|
||||
|
||||
var tx = r + options.activePadding + rx / r * (rs + options.spotlightPadding - options.indicatorSize / 4);
|
||||
var ty = r + options.activePadding + ry / r * (rs + options.spotlightPadding - options.indicatorSize / 4);
|
||||
var rot = Math.PI / 4 - theta;
|
||||
|
||||
c2d.translate(tx, ty);
|
||||
c2d.rotate(rot);
|
||||
|
||||
// clear the indicator
|
||||
c2d.beginPath();
|
||||
c2d.fillRect(-options.indicatorSize / 2, -options.indicatorSize / 2, options.indicatorSize, options.indicatorSize);
|
||||
c2d.closePath();
|
||||
c2d.fill();
|
||||
|
||||
c2d.rotate(-rot);
|
||||
c2d.translate(-tx, -ty);
|
||||
|
||||
// c2d.setTransform( 1, 0, 0, 1, 0, 0 );
|
||||
|
||||
// clear the spotlight
|
||||
c2d.beginPath();
|
||||
c2d.arc(r + options.activePadding, r + options.activePadding, rs + options.spotlightPadding, 0, Math.PI * 2, true);
|
||||
c2d.closePath();
|
||||
c2d.fill();
|
||||
|
||||
c2d.globalCompositeOperation = 'source-over';
|
||||
}
|
||||
|
||||
function updatePixelRatio() {
|
||||
var pxr = getPixelRatio();
|
||||
var w = containerSize;
|
||||
var h = containerSize;
|
||||
|
||||
canvas.width = w * pxr;
|
||||
canvas.height = h * pxr;
|
||||
|
||||
canvas.style.width = w + 'px';
|
||||
canvas.style.height = h + 'px';
|
||||
|
||||
c2d.setTransform(1, 0, 0, 1, 0, 0);
|
||||
c2d.scale(pxr, pxr);
|
||||
}
|
||||
|
||||
var redrawing = true;
|
||||
var redrawQueue = {};
|
||||
|
||||
var raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (fn) {
|
||||
return setTimeout(fn, 16);
|
||||
};
|
||||
|
||||
var redraw = function redraw() {
|
||||
if (redrawQueue.drawBg) {
|
||||
drawBg.apply(null, redrawQueue.drawBg);
|
||||
}
|
||||
|
||||
if (redrawQueue.drawCommands) {
|
||||
drawCommands.apply(null, redrawQueue.drawCommands);
|
||||
}
|
||||
|
||||
redrawQueue = {};
|
||||
|
||||
if (redrawing) {
|
||||
raf(redraw);
|
||||
}
|
||||
};
|
||||
|
||||
// kick off
|
||||
updatePixelRatio();
|
||||
redraw();
|
||||
|
||||
var ctrx = void 0,
|
||||
ctry = void 0,
|
||||
rs = void 0;
|
||||
|
||||
var bindings = {
|
||||
on: function on(events, selector, fn) {
|
||||
|
||||
var _fn = fn;
|
||||
if (selector === 'core') {
|
||||
_fn = function _fn(e) {
|
||||
if (e.cyTarget === cy || e.target === cy) {
|
||||
// only if event target is directly core
|
||||
return fn.apply(this, [e]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
data.handlers.push({
|
||||
events: events,
|
||||
selector: selector,
|
||||
fn: _fn
|
||||
});
|
||||
|
||||
if (selector === 'core') {
|
||||
cy.on(events, _fn);
|
||||
} else {
|
||||
cy.on(events, selector, _fn);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
function addEventListeners() {
|
||||
var grabbable = void 0;
|
||||
var inGesture = false;
|
||||
var dragHandler = void 0;
|
||||
var zoomEnabled = void 0;
|
||||
var panEnabled = void 0;
|
||||
var boxEnabled = void 0;
|
||||
var gestureStartEvent = void 0;
|
||||
|
||||
var restoreZoom = function restoreZoom() {
|
||||
if (zoomEnabled) {
|
||||
cy.userZoomingEnabled(true);
|
||||
}
|
||||
};
|
||||
|
||||
var restoreGrab = function restoreGrab() {
|
||||
if (grabbable) {
|
||||
target.grabify();
|
||||
}
|
||||
};
|
||||
|
||||
var restorePan = function restorePan() {
|
||||
if (panEnabled) {
|
||||
cy.userPanningEnabled(true);
|
||||
}
|
||||
};
|
||||
|
||||
var restoreBoxSeln = function restoreBoxSeln() {
|
||||
if (boxEnabled) {
|
||||
cy.boxSelectionEnabled(true);
|
||||
}
|
||||
};
|
||||
|
||||
var restoreGestures = function restoreGestures() {
|
||||
restoreGrab();
|
||||
restoreZoom();
|
||||
restorePan();
|
||||
restoreBoxSeln();
|
||||
};
|
||||
|
||||
window.addEventListener('resize', updatePixelRatio);
|
||||
|
||||
bindings.on('resize', function () {
|
||||
updatePixelRatio();
|
||||
}).on(options.openMenuEvents, options.selector, function (e) {
|
||||
target = this; // Remember which node the context menu is for
|
||||
var ele = this;
|
||||
var isCy = this === cy;
|
||||
|
||||
if (inGesture) {
|
||||
parent.style.display = 'none';
|
||||
|
||||
inGesture = false;
|
||||
|
||||
restoreGestures();
|
||||
}
|
||||
|
||||
if (typeof options.commands === 'function') {
|
||||
var res = options.commands(target);
|
||||
if (res.then) {
|
||||
res.then(function (_commands) {
|
||||
commands = _commands;
|
||||
openMenu();
|
||||
});
|
||||
} else {
|
||||
commands = res;
|
||||
openMenu();
|
||||
}
|
||||
} else {
|
||||
commands = options.commands;
|
||||
openMenu();
|
||||
}
|
||||
|
||||
function openMenu() {
|
||||
if (!commands || commands.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
zoomEnabled = cy.userZoomingEnabled();
|
||||
cy.userZoomingEnabled(false);
|
||||
|
||||
panEnabled = cy.userPanningEnabled();
|
||||
cy.userPanningEnabled(false);
|
||||
|
||||
boxEnabled = cy.boxSelectionEnabled();
|
||||
cy.boxSelectionEnabled(false);
|
||||
|
||||
grabbable = target.grabbable && target.grabbable();
|
||||
if (grabbable) {
|
||||
target.ungrabify();
|
||||
}
|
||||
|
||||
var rp = void 0,
|
||||
rw = void 0,
|
||||
rh = void 0;
|
||||
if (!isCy && ele.isNode() && !ele.isParent() && !options.atMouse) {
|
||||
rp = ele.renderedPosition();
|
||||
rw = ele.renderedWidth();
|
||||
rh = ele.renderedHeight();
|
||||
} else {
|
||||
rp = e.renderedPosition || e.cyRenderedPosition;
|
||||
rw = 1;
|
||||
rh = 1;
|
||||
}
|
||||
|
||||
offset = getOffset(container);
|
||||
|
||||
ctrx = rp.x;
|
||||
ctry = rp.y;
|
||||
|
||||
createMenuItems();
|
||||
|
||||
setStyles(parent, {
|
||||
display: 'block',
|
||||
left: rp.x - r + 'px',
|
||||
top: rp.y - r + 'px'
|
||||
});
|
||||
|
||||
rs = Math.max(rw, rh) / 2;
|
||||
rs = Math.max(rs, options.minSpotlightRadius);
|
||||
rs = Math.min(rs, options.maxSpotlightRadius);
|
||||
|
||||
queueDrawBg();
|
||||
|
||||
activeCommandI = undefined;
|
||||
|
||||
inGesture = true;
|
||||
gestureStartEvent = e;
|
||||
}
|
||||
}).on('cxtdrag tapdrag', options.selector, dragHandler = function dragHandler(e) {
|
||||
|
||||
if (!inGesture) {
|
||||
return;
|
||||
}
|
||||
|
||||
var origE = e.originalEvent;
|
||||
var isTouch = origE.touches && origE.touches.length > 0;
|
||||
|
||||
var pageX = (isTouch ? origE.touches[0].pageX : origE.pageX) - window.scrollX;
|
||||
var pageY = (isTouch ? origE.touches[0].pageY : origE.pageY) - window.scrollY;
|
||||
|
||||
activeCommandI = undefined;
|
||||
|
||||
var dx = pageX - offset.left - ctrx;
|
||||
var dy = pageY - offset.top - ctry;
|
||||
|
||||
if (dx === 0) {
|
||||
dx = 0.01;
|
||||
}
|
||||
|
||||
var d = Math.sqrt(dx * dx + dy * dy);
|
||||
var cosTheta = (dy * dy - d * d - dx * dx) / (-2 * d * dx);
|
||||
var theta = Math.acos(cosTheta);
|
||||
|
||||
if (d < rs + options.spotlightPadding) {
|
||||
queueDrawBg();
|
||||
return;
|
||||
}
|
||||
|
||||
queueDrawBg();
|
||||
|
||||
var rx = dx * r / d;
|
||||
var ry = dy * r / d;
|
||||
|
||||
if (dy > 0) {
|
||||
theta = Math.PI + Math.abs(theta - Math.PI);
|
||||
}
|
||||
|
||||
var dtheta = 2 * Math.PI / commands.length;
|
||||
var theta1 = Math.PI / 2;
|
||||
var theta2 = theta1 + dtheta;
|
||||
|
||||
for (var i = 0; i < commands.length; i++) {
|
||||
var command = commands[i];
|
||||
|
||||
var inThisCommand = theta1 <= theta && theta <= theta2 || theta1 <= theta + 2 * Math.PI && theta + 2 * Math.PI <= theta2;
|
||||
|
||||
if (command.disabled === true || command.enabled === false) {
|
||||
inThisCommand = false;
|
||||
}
|
||||
|
||||
if (inThisCommand) {
|
||||
activeCommandI = i;
|
||||
break;
|
||||
}
|
||||
|
||||
theta1 += dtheta;
|
||||
theta2 += dtheta;
|
||||
}
|
||||
|
||||
queueDrawCommands(rx, ry, theta);
|
||||
}).on('tapdrag', dragHandler).on('cxttapend tapend', function () {
|
||||
parent.style.display = 'none';
|
||||
|
||||
if (activeCommandI !== undefined) {
|
||||
var select = commands[activeCommandI].select;
|
||||
|
||||
if (select) {
|
||||
select.apply(target, [target, gestureStartEvent]);
|
||||
activeCommandI = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
inGesture = false;
|
||||
|
||||
restoreGestures();
|
||||
});
|
||||
}
|
||||
|
||||
function removeEventListeners() {
|
||||
var handlers = data.handlers;
|
||||
|
||||
for (var i = 0; i < handlers.length; i++) {
|
||||
var h = handlers[i];
|
||||
|
||||
if (h.selector === 'core') {
|
||||
cy.off(h.events, h.fn);
|
||||
} else {
|
||||
cy.off(h.events, h.selector, h.fn);
|
||||
}
|
||||
}
|
||||
|
||||
window.removeEventListener('resize', updatePixelRatio);
|
||||
}
|
||||
|
||||
function destroyInstance() {
|
||||
redrawing = false;
|
||||
|
||||
removeEventListeners();
|
||||
|
||||
wrapper.remove();
|
||||
}
|
||||
|
||||
addEventListeners();
|
||||
|
||||
return {
|
||||
destroy: function destroy() {
|
||||
destroyInstance();
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = cxtmenu;
|
||||
|
||||
/***/ }),
|
||||
/* 1 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
// Simple, internal Object.assign() polyfill for options objects etc.
|
||||
|
||||
module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) {
|
||||
for (var _len = arguments.length, srcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
||||
srcs[_key - 1] = arguments[_key];
|
||||
}
|
||||
|
||||
srcs.filter(function (src) {
|
||||
return src != null;
|
||||
}).forEach(function (src) {
|
||||
Object.keys(src).forEach(function (k) {
|
||||
return tgt[k] = src[k];
|
||||
});
|
||||
});
|
||||
|
||||
return tgt;
|
||||
};
|
||||
|
||||
/***/ }),
|
||||
/* 2 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var defaults = {
|
||||
menuRadius: 100, // the radius of the circular menu in pixels
|
||||
selector: 'node', // elements matching this Cytoscape.js selector will trigger cxtmenus
|
||||
commands: [// an array of commands to list in the menu or a function that returns the array
|
||||
/*
|
||||
{ // example command
|
||||
fillColor: 'rgba(200, 200, 200, 0.75)', // optional: custom background color for item
|
||||
content: 'a command name' // html/text content to be displayed in the menu
|
||||
contentStyle: {}, // css key:value pairs to set the command's css in js if you want
|
||||
select: function(ele){ // a function to execute when the command is selected
|
||||
console.log( ele.id() ) // `ele` holds the reference to the active element
|
||||
},
|
||||
enabled: true // whether the command is selectable
|
||||
}
|
||||
*/
|
||||
], // function( ele ){ return [ /*...*/ ] }, // example function for commands
|
||||
fillColor: 'rgba(0, 0, 0, 0.75)', // the background colour of the menu
|
||||
activeFillColor: 'rgba(1, 105, 217, 0.75)', // the colour used to indicate the selected command
|
||||
activePadding: 20, // additional size in pixels for the active command
|
||||
indicatorSize: 24, // the size in pixels of the pointer to the active command
|
||||
separatorWidth: 3, // the empty spacing in pixels between successive commands
|
||||
spotlightPadding: 4, // extra spacing in pixels between the element and the spotlight
|
||||
minSpotlightRadius: 24, // the minimum radius in pixels of the spotlight
|
||||
maxSpotlightRadius: 38, // the maximum radius in pixels of the spotlight
|
||||
openMenuEvents: 'cxttapstart taphold', // space-separated cytoscape events that will open the menu; only `cxttapstart` and/or `taphold` work here
|
||||
itemColor: 'white', // the colour of text in the command's content
|
||||
itemTextShadowColor: 'transparent', // the text shadow colour of the command's content
|
||||
zIndex: 9999, // the z-index of the ui div
|
||||
atMouse: false // draw menu at mouse position
|
||||
};
|
||||
|
||||
module.exports = defaults;
|
||||
|
||||
/***/ }),
|
||||
/* 3 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var removeEles = function removeEles(query) {
|
||||
var ancestor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
|
||||
|
||||
var els = ancestor.querySelectorAll(query);
|
||||
|
||||
for (var i = 0; i < els.length; i++) {
|
||||
var el = els[i];
|
||||
|
||||
el.parentNode.removeChild(el);
|
||||
}
|
||||
};
|
||||
|
||||
var setStyles = function setStyles(el, style) {
|
||||
var props = Object.keys(style);
|
||||
|
||||
for (var i = 0, l = props.length; i < l; i++) {
|
||||
el.style[props[i]] = style[props[i]];
|
||||
}
|
||||
};
|
||||
|
||||
var createElement = function createElement(options) {
|
||||
options = options || {};
|
||||
|
||||
var el = document.createElement(options.tag || 'div');
|
||||
|
||||
el.className = options.class || '';
|
||||
|
||||
if (options.style) {
|
||||
setStyles(el, options.style);
|
||||
}
|
||||
|
||||
return el;
|
||||
};
|
||||
|
||||
var getPixelRatio = function getPixelRatio() {
|
||||
return window.devicePixelRatio || 1;
|
||||
};
|
||||
|
||||
var getOffset = function getOffset(el) {
|
||||
var offset = el.getBoundingClientRect();
|
||||
|
||||
return {
|
||||
left: offset.left + document.body.scrollLeft + parseFloat(getComputedStyle(document.body)['padding-left']) + parseFloat(getComputedStyle(document.body)['border-left-width']),
|
||||
top: offset.top + document.body.scrollTop + parseFloat(getComputedStyle(document.body)['padding-top']) + parseFloat(getComputedStyle(document.body)['border-top-width'])
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = { removeEles: removeEles, setStyles: setStyles, createElement: createElement, getPixelRatio: getPixelRatio, getOffset: getOffset };
|
||||
|
||||
/***/ }),
|
||||
/* 4 */
|
||||
/***/ (function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var cxtmenu = __webpack_require__(0);
|
||||
|
||||
// registers the extension on a cytoscape lib ref
|
||||
var register = function register(cytoscape) {
|
||||
if (!cytoscape) {
|
||||
return;
|
||||
} // can't register if cytoscape unspecified
|
||||
|
||||
cytoscape('core', 'cxtmenu', cxtmenu); // register with cytoscape.js
|
||||
};
|
||||
|
||||
if (typeof cytoscape !== 'undefined') {
|
||||
// expose to global cytoscape (i.e. window.cytoscape)
|
||||
register(cytoscape);
|
||||
}
|
||||
|
||||
module.exports = register;
|
||||
|
||||
/***/ })
|
||||
/******/ ]);
|
||||
});
|
6
resources/app/app/BioGraphVisart-master/static/scripts/external/html2canvas.min.js
vendored
Normal file
51
resources/app/app/BioGraphVisart-master/static/scripts/external/menu.js
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
|
||||
function $(selector, context){
|
||||
context = context || document;
|
||||
return context["querySelectorAll"](selector);
|
||||
}
|
||||
|
||||
function forEach(collection, iterator){
|
||||
for(var key in Object.keys(collection)){
|
||||
iterator(collection[key]);
|
||||
}
|
||||
}
|
||||
|
||||
function showMenu(menu){
|
||||
var menu = this;
|
||||
var ul = $("ul", menu)[0];
|
||||
|
||||
if(!ul || ul.classList.contains("-visible")) return;
|
||||
|
||||
menu.classList.add("-active");
|
||||
ul.classList.add("-animating");
|
||||
ul.classList.add("-visible");
|
||||
setTimeout(function(){
|
||||
ul.classList.remove("-animating")
|
||||
}, 25);
|
||||
}
|
||||
|
||||
function hideMenu(menu){
|
||||
var menu = this;
|
||||
var ul = $("ul", menu)[0];
|
||||
|
||||
if(!ul || !ul.classList.contains("-visible")) return;
|
||||
|
||||
menu.classList.remove("-active");
|
||||
ul.classList.add("-animating");
|
||||
setTimeout(function(){
|
||||
ul.classList.remove("-visible");
|
||||
ul.classList.remove("-animating");
|
||||
}, 300);
|
||||
}
|
||||
|
||||
function hideAllInactiveMenus(menu){
|
||||
var menu = this;
|
||||
forEach(
|
||||
$("li.-hasSubmenu.-active:not(:hover)", menu.parent),
|
||||
function(e){
|
||||
e.hideMenu && e.hideMenu();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
693
resources/app/app/BioGraphVisart-master/static/scripts/graph.js
Normal file
@ -0,0 +1,693 @@
|
||||
/*
|
||||
create a graph with Cytoscape
|
||||
*/
|
||||
|
||||
/*
|
||||
visualize a graph from .graphml-file
|
||||
*/
|
||||
|
||||
var removedNodes;
|
||||
function visualize(graphString, noOptn) {
|
||||
document.getElementById('loader1').style.visibility = "visibile";
|
||||
|
||||
// if(!noOptn && !clicked && !defaultVal){
|
||||
// nodeVal = document.getElementById('values').value;
|
||||
// }
|
||||
if(isJson){
|
||||
var nodes = graphString.elements.nodes;
|
||||
var edges = graphString.elements.edges;
|
||||
var nodeValuesNum = []
|
||||
for(let n of nodes){
|
||||
if(n.data[nodeVal]){
|
||||
nodeValuesNum.push(n.data[nodeVal])
|
||||
}
|
||||
}
|
||||
var interactionTypes=[]
|
||||
for(let e of edges){
|
||||
interactionTypes.push(e.data.interaction)
|
||||
}
|
||||
interactionTypes = interactionTypes.flat();
|
||||
interactionTypes = new Set(interactionTypes)
|
||||
var edgesToMerge = true;
|
||||
}
|
||||
else{
|
||||
// get nodes and edges
|
||||
if(isSIF){
|
||||
var nodesAndEdges = getNodesAndEdgesSIF(graphString, nodeVal, "", noOptn);
|
||||
}
|
||||
else{
|
||||
var nodesAndEdges = getNodesAndEdges(graphString, nodeVal,"", noOptn);
|
||||
}
|
||||
var nodes = nodesAndEdges[0];
|
||||
var edges = nodesAndEdges[1];
|
||||
var nodeValuesNum = nodesAndEdges[2];
|
||||
interactionTypes = nodesAndEdges[3];
|
||||
var edgesToMerge = nodesAndEdges[4]
|
||||
var drugedges = nodesAndEdges[5];
|
||||
}
|
||||
if(!noOptn){
|
||||
// set min and max for legend
|
||||
var range = legendsRange(nodeValuesNum);
|
||||
var nodesMin = range[0];
|
||||
var nodesMax = range[1];
|
||||
};
|
||||
// add nodes and edges to graph
|
||||
addNodesAndEdges(nodes, edges, drugedges, nodesMin, nodesMax, noOptn);
|
||||
|
||||
if(!clicked){
|
||||
document.getElementById('arrows').innerHTML = "";
|
||||
createInteractionLegend(interactionTypes, cy, edgesToMerge, noOptn);
|
||||
document.getElementById('legend').setAttribute('style','visibility:visible');
|
||||
|
||||
document.getElementById('downloadPart').style.visibility = "visible";
|
||||
}
|
||||
showMetaInfo(noOptn);
|
||||
document.getElementById('loader1').style.visibility = "hidden";
|
||||
document.getElementById('selectlayout').setAttribute('style','visibility:visible');
|
||||
|
||||
document.getElementById('resetLayout').onclick= function(){changeLayout(cy, selectedLayout)};
|
||||
|
||||
// if(! noDrpShapes){
|
||||
// activateNodeShapeChange();
|
||||
// }
|
||||
|
||||
document.getElementById('KEGGpathsButton').style.visibility ="visible";
|
||||
document.getElementById('KEGGpaths').style.visibility ="visible";
|
||||
|
||||
// set background layer to hoghlight pathways
|
||||
var layer = createLayoutKeggPathways(cy, allPaths)
|
||||
var canvas = layer.getCanvas();
|
||||
var ctx = canvas.getContext('2d');
|
||||
document.getElementById('keggpathways').onclick = function(){if(!collapsed){listKEGGPathways(ctx, cy, nodes, layer, canvas, "")}};
|
||||
var defaultVal = false;
|
||||
|
||||
|
||||
if(document.getElementById('nodeShapesAttr').value){
|
||||
cy.style()
|
||||
.selector('node['+document.getElementById('nodeShapesAttr').value+' ="true"]')
|
||||
.style('shape', document.getElementById('nodeShapes').value)
|
||||
.update();
|
||||
}
|
||||
addcolorlegend(cy);
|
||||
var api = cy.expandCollapse('get');
|
||||
var options = {
|
||||
layoutBy: null, // to rearrange after expand/collapse. It's just layout options or whole layout function. Choose your side!
|
||||
// recommended usage: use cose-bilkent layout with randomize: false to preserve mental map upon expand/collapse
|
||||
fisheye: false, // whether to perform fisheye view after expand/collapse you can specify a function too
|
||||
animate: true, // whether to animate on drawing changes you can specify a function too
|
||||
animationDuration: 1000, // when animate is true, the duration in milliseconds of the animation
|
||||
ready: function () {}, // callback when expand/collapse initialized
|
||||
undoable: true, // and if undoRedoExtension exists,
|
||||
|
||||
cueEnabled: true, // Whether cues are enabled
|
||||
expandCollapseCuePosition: 'top-left', // default cue position is top left you can specify a function per node too
|
||||
expandCollapseCueSize: 12, // size of expand-collapse cue
|
||||
expandCollapseCueLineSize: 8, // size of lines used for drawing plus-minus icons
|
||||
expandCueImage: undefined, // image of expand icon if undefined draw regular expand cue
|
||||
collapseCueImage: undefined, // image of collapse icon if undefined draw regular collapse cue
|
||||
expandCollapseCueSensitivity: 1, // sensitivity of expand-collapse cues
|
||||
edgeTypeInfo: "interaction", // the name of the field that has the edge type, retrieved from edge.data(), can be a function, if reading the field returns undefined the collapsed edge type will be "unknown"
|
||||
groupEdgesOfSameTypeOnCollapse : true, // if true, the edges to be collapsed will be grouped according to their types, and the created collapsed edges will have same type as their group. if false the collapased edge will have "unknown" type.
|
||||
allowNestedEdgeCollapse: true, // when you want to collapse a compound edge (edge which contains other edges) and normal edge, should it collapse without expanding the compound first
|
||||
zIndex: 999 // z-index value of the canvas in which cue ımages are drawn
|
||||
};
|
||||
api.collapseAll(options)
|
||||
changeLayout(cy);
|
||||
|
||||
}
|
||||
|
||||
//add nodes and edges to cy-object (update if attribute has changed)
|
||||
function addNodesAndEdges(nodes, edges, drugedges, nodesMin, nodesMax, noOptn){
|
||||
// add parent nodes for every drug group
|
||||
for(const [target, drugs] of Object.entries(drugedges)){
|
||||
for(const [target2, drugs2] of Object.entries(drugedges)){
|
||||
if(target == target2){
|
||||
continue;
|
||||
}
|
||||
if(drugs.length === drugs2.length &&
|
||||
drugs.every((val, index) => val === drugs2[index])){
|
||||
delete drugedges[target2]
|
||||
}
|
||||
}
|
||||
}
|
||||
for(const [target, drugs] of Object.entries(drugedges)){
|
||||
if(drugs.length > 1){
|
||||
var drugNode = {};
|
||||
drugNode.id = "n"+(nodes.length-1).toString()
|
||||
drugNode.symbol = drugs.length + " Drugs"
|
||||
nodes.push({data: drugNode});
|
||||
for(var drugnode of drugs){
|
||||
for(var node of nodes){
|
||||
if(node.data.id == drugnode){
|
||||
node.data.parent = drugNode.id
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
cy = cytoscape({
|
||||
container: document.getElementById('cy'),
|
||||
ready: function(){
|
||||
},
|
||||
elements: nodes.concat(edges),
|
||||
style: [
|
||||
// style nodes
|
||||
basicstyle,
|
||||
{selector: 'node[!'+nodeVal+']',
|
||||
style: {
|
||||
'background-color': 'white',
|
||||
'color':'black'
|
||||
}},
|
||||
// attributes with numbers
|
||||
{selector: 'node['+nodeVal+']['+nodeVal+' < "0"]',
|
||||
style: {
|
||||
'background-color': 'mapData('+nodeVal+','+ nodesMin+', 0, #006cf0, white)',
|
||||
'color': 'black'
|
||||
}},
|
||||
{selector: 'node['+nodeVal+']['+nodeVal+' <='+0.5*nodesMin+']',
|
||||
style: {
|
||||
'color': 'white'
|
||||
}},
|
||||
{selector: 'node['+nodeVal+']['+nodeVal+' > "0"]',
|
||||
style: {
|
||||
'background-color': 'mapData('+nodeVal+', 0,'+ nodesMax+', white, #d50000)',
|
||||
'color': 'black'
|
||||
}},
|
||||
{selector: 'node['+nodeVal+']['+nodeVal+' >='+0.5*nodesMax+']',
|
||||
style: {
|
||||
'color': 'white'
|
||||
}},
|
||||
{selector: 'node['+nodeVal+']['+nodeVal+' = "0"]',
|
||||
style: {
|
||||
'background-color': 'white',
|
||||
'color':'black'
|
||||
}},
|
||||
|
||||
// attributes with boolean
|
||||
{selector: 'node['+nodeVal+']['+nodeVal+' = "false"]',
|
||||
style: {
|
||||
'background-color': '#006cf0',
|
||||
'color':'white'
|
||||
}},
|
||||
{selector: 'node['+nodeVal+']['+nodeVal+' = "true"]',
|
||||
style: {
|
||||
'background-color': '#d50000',
|
||||
'color':'white'
|
||||
}},
|
||||
|
||||
{selector: 'node[id = "l1"]',
|
||||
style:{
|
||||
'color': 'black',
|
||||
'background-height':50,
|
||||
'background-width':200,
|
||||
'background-position-y':'100%',
|
||||
'shape': 'rectangle',
|
||||
'width':200,
|
||||
'height':50,
|
||||
'border-width':1,
|
||||
'text-valign' : 'bottom',
|
||||
'text-max-width': 200
|
||||
}},
|
||||
{selector: 'node[midrug_id]',
|
||||
style:{
|
||||
'background-image': 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjIsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSIyNDkuMjM1cHgiCiAgIGhlaWdodD0iMjQ5LjIzNnB4IgogICB2aWV3Qm94PSIwIDAgMjQ5LjIzNSAyNDkuMjM2IgogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNDkuMjM1IDI0OS4yMzYiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHNvZGlwb2RpOmRvY25hbWU9InBpbGxfaWNvbl9yZWRfMjU2LnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4yIDVjM2U4MGQsIDIwMTctMDgtMDYiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEzIj48cmRmOlJERj48Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcwogICAgIGlkPSJkZWZzMTEiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSI3NzgiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNDgwIgogICAgIGlkPSJuYW1lZHZpZXc5IgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSIwLjk0Njg5Mzc0IgogICAgIGlua3NjYXBlOmN4PSIxMjQuNjE3NSIKICAgICBpbmtzY2FwZTpjeT0iMTI0LjYxOCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMjIzIgogICAgIGlua3NjYXBlOndpbmRvdy15PSI3NCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9IkxheWVyXzEiIC8+PGcKICAgICBpZD0iZzYiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MSI+PHBhdGgKICAgICAgIGZpbGw9IiNGQkZCRkIiCiAgICAgICBkPSJNMTk1LjUxMiw1NC4yOTRjLTguMTQyLTguMTQzLTE4LjgxNS0xMi4yMjYtMjkuNDk0LTEyLjIyNmMtMTAuNjc0LDAtMjEuMzUxLDQuMDgzLTI5LjQ3LDEyLjIyNiAgIEw5NC4zOTYsOTYuNDM4bDAsMGwtNDIuMTQyLDQyLjEzNWMtMTYuMjg3LDE2LjI2Ny0xNi4yODcsNDIuNjgsMC4wMSw1OC45NjVjMTYuMjY2LDE2LjI3OCw0Mi42ODIsMTYuMjc4LDU4Ljk1NiwwbDMzLjE2My0zMy4xNSAgIGw1MS4xMTktNTEuMTE5QzIxMS43NzYsOTYuOTc0LDIxMS43NzYsNzAuNTU5LDE5NS41MTIsNTQuMjk0eiBNMTg2LjUzMiwxMDQuMjgzbC00Mi4xNDgsNDIuMTRMMTAzLjM2NSwxMDUuNGw0Mi4xNDItNDIuMTQgICBjNS40NzMtNS40NzQsMTIuNzY1LTguNTA3LDIwLjQ5Mi04LjUwN2M3Ljc1MSwwLDE1LjA0MiwzLjAzMywyMC41MTgsOC41MDdDMTk3LjgzOCw3NC41NjQsMTk3LjgzOCw5Mi45ODMsMTg2LjUzMiwxMDQuMjgzeiIKICAgICAgIGlkPSJwYXRoNCIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiIC8+PC9nPjwvc3ZnPg==',
|
||||
'background-width': '45%',
|
||||
'background-height': '45%',
|
||||
'background-position-y': '100%',
|
||||
}},
|
||||
{selector: ':parent',
|
||||
style: {
|
||||
'border-width':0.5,
|
||||
"background-color": "lightgrey",
|
||||
'background-opacity': 0.5,
|
||||
}},
|
||||
{selector: "node.cy-expand-collapse-collapsed-node",
|
||||
style: {
|
||||
'shape': "diamond",
|
||||
"background-color": "lightgrey",
|
||||
'background-image': 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjIsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSIyNDkuMjM1cHgiCiAgIGhlaWdodD0iMjQ5LjIzNnB4IgogICB2aWV3Qm94PSIwIDAgMjQ5LjIzNSAyNDkuMjM2IgogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNDkuMjM1IDI0OS4yMzYiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHNvZGlwb2RpOmRvY25hbWU9InBpbGxfaWNvbl9yZWRfMjU2LnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4yIDVjM2U4MGQsIDIwMTctMDgtMDYiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEzIj48cmRmOlJERj48Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcwogICAgIGlkPSJkZWZzMTEiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSI3NzgiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNDgwIgogICAgIGlkPSJuYW1lZHZpZXc5IgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSIwLjk0Njg5Mzc0IgogICAgIGlua3NjYXBlOmN4PSIxMjQuNjE3NSIKICAgICBpbmtzY2FwZTpjeT0iMTI0LjYxOCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMjIzIgogICAgIGlua3NjYXBlOndpbmRvdy15PSI3NCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9IkxheWVyXzEiIC8+PGcKICAgICBpZD0iZzYiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MSI+PHBhdGgKICAgICAgIGZpbGw9IiNGQkZCRkIiCiAgICAgICBkPSJNMTk1LjUxMiw1NC4yOTRjLTguMTQyLTguMTQzLTE4LjgxNS0xMi4yMjYtMjkuNDk0LTEyLjIyNmMtMTAuNjc0LDAtMjEuMzUxLDQuMDgzLTI5LjQ3LDEyLjIyNiAgIEw5NC4zOTYsOTYuNDM4bDAsMGwtNDIuMTQyLDQyLjEzNWMtMTYuMjg3LDE2LjI2Ny0xNi4yODcsNDIuNjgsMC4wMSw1OC45NjVjMTYuMjY2LDE2LjI3OCw0Mi42ODIsMTYuMjc4LDU4Ljk1NiwwbDMzLjE2My0zMy4xNSAgIGw1MS4xMTktNTEuMTE5QzIxMS43NzYsOTYuOTc0LDIxMS43NzYsNzAuNTU5LDE5NS41MTIsNTQuMjk0eiBNMTg2LjUzMiwxMDQuMjgzbC00Mi4xNDgsNDIuMTRMMTAzLjM2NSwxMDUuNGw0Mi4xNDItNDIuMTQgICBjNS40NzMtNS40NzQsMTIuNzY1LTguNTA3LDIwLjQ5Mi04LjUwN2M3Ljc1MSwwLDE1LjA0MiwzLjAzMywyMC41MTgsOC41MDdDMTk3LjgzOCw3NC41NjQsMTk3LjgzOCw5Mi45ODMsMTg2LjUzMiwxMDQuMjgzeiIKICAgICAgIGlkPSJwYXRoNCIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiIC8+PC9nPjwvc3ZnPg==',
|
||||
'background-width': '45%',
|
||||
'background-height': '45%',
|
||||
'background-position-y': '100%'
|
||||
|
||||
}},
|
||||
|
||||
// style edges
|
||||
basicedgestyle,
|
||||
actstyle,
|
||||
expstyle,
|
||||
inhistyle,
|
||||
reprstyle,
|
||||
bindstyle,
|
||||
dissostyle,
|
||||
compstyle,
|
||||
indeffstyle,
|
||||
missstyle,
|
||||
statestyle,
|
||||
phosphostyle,
|
||||
dephosphostyle,
|
||||
glycostyle,
|
||||
ubiquistyle,
|
||||
methystyle,
|
||||
{'selector': 'edge.cy-expand-collapse-meta-edge',
|
||||
style: {
|
||||
'curve-style': 'unbundled-bezier',
|
||||
'control-point-distances': '0 0 0',
|
||||
'target-arrow-shape': 'triangle',
|
||||
},
|
||||
},
|
||||
]
|
||||
});
|
||||
var selectedLayout = document.getElementById('selectlayout').value;
|
||||
var layoutBy = {};
|
||||
if(selectedLayout == "klay"){
|
||||
var options = {
|
||||
animate: animateLayout, // Whether to transition the node positions
|
||||
klay: {
|
||||
aspectRatio: 1.49, // The aimed aspect ratio of the drawing, that is the quotient of width by height
|
||||
compactComponents: true, // Tries to further compact components (disconnected sub-graphs).
|
||||
nodeLayering:'LONGEST_PATH', // Strategy for node layering.
|
||||
/* NETWORK_SIMPLEX This algorithm tries to minimize the length of edges. This is the most computationally intensive algorithm.
|
||||
The number of iterations after which it aborts if it hasn't found a result yet can be set with the Maximal Iterations option.
|
||||
LONGEST_PATH A very simple algorithm that distributes nodes along their longest path to a sink node.
|
||||
INTERACTIVE Distributes the nodes into layers by comparing their positions before the layout algorithm was started. The idea is that the relative horizontal order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive node layering algorithm uses the Interactive Reference Point option to determine which reference point of nodes are used to compare positions. */
|
||||
thoroughness: 10 // How much effort should be spent to produce a nice layout..
|
||||
},
|
||||
};
|
||||
layoutBy ={
|
||||
name:'klay',
|
||||
options
|
||||
}
|
||||
}
|
||||
else if(selectedLayout == "breadthfirst"){
|
||||
layoutBy ={
|
||||
name: "breadthfirst",
|
||||
spacingFactor: 0.5,
|
||||
animate: animateLayout
|
||||
}
|
||||
}
|
||||
else if(selectedLayout == "dagre"){
|
||||
layoutBy ={
|
||||
name: "dagre",
|
||||
animate: animateLayout
|
||||
}
|
||||
}
|
||||
else if(selectedLayout == "cose-bilkent"){
|
||||
layoutBy ={
|
||||
name: "cose-bilkent",
|
||||
gravityRange: 1.3,
|
||||
animate: true,
|
||||
randomize: false
|
||||
}
|
||||
}
|
||||
else if(selectedLayout == "grid"){
|
||||
layoutBy ={
|
||||
name: "grid",
|
||||
animate: animateLayout,
|
||||
avoidOverlapPadding: 5
|
||||
}
|
||||
}
|
||||
else{
|
||||
layoutBy ={
|
||||
name: "cose-bilkent",
|
||||
// Gravity range (constant)
|
||||
gravityRange: 1.3,
|
||||
animate: true,
|
||||
randomize: false
|
||||
}
|
||||
}
|
||||
// add drug group node as parent to according drug nodes
|
||||
var options = {
|
||||
layoutBy: layoutBy, // to rearrange after expand/collapse. It's just layout options or whole layout function. Choose your side!
|
||||
// recommended usage: use cose-bilkent layout with randomize: false to preserve mental map upon expand/collapse
|
||||
fisheye: false, // whether to perform fisheye view after expand/collapse you can specify a function too
|
||||
animate: true, // whether to animate on drawing changes you can specify a function too
|
||||
animationDuration: 1000, // when animate is true, the duration in milliseconds of the animation
|
||||
ready: function () {
|
||||
cy.style().selector('edge[interaction = \'targets\']').style('target-arrow-shape', 'triangle').update();}, // callback when expand/collapse initialized
|
||||
undoable: true, // and if undoRedoExtension exists,
|
||||
|
||||
cueEnabled: true, // Whether cues are enabled
|
||||
expandCollapseCuePosition: 'top-left', // default cue position is top left you can specify a function per node too
|
||||
expandCollapseCueSize: 12, // size of expand-collapse cue
|
||||
expandCollapseCueLineSize: 8, // size of lines used for drawing plus-minus icons
|
||||
expandCueImage: undefined, // image of expand icon if undefined draw regular expand cue
|
||||
collapseCueImage: undefined, // image of collapse icon if undefined draw regular collapse cue
|
||||
expandCollapseCueSensitivity: 1, // sensitivity of expand-collapse cues
|
||||
edgeTypeInfo: "interaction", // the name of the field that has the edge type, retrieved from edge.data(), can be a function, if reading the field returns undefined the collapsed edge type will be "unknown"
|
||||
groupEdgesOfSameTypeOnCollapse : true, // if true, the edges to be collapsed will be grouped according to their types, and the created collapsed edges will have same type as their group. if false the collapased edge will have "unknown" type.
|
||||
allowNestedEdgeCollapse: true, // when you want to collapse a compound edge (edge which contains other edges) and normal edge, should it collapse without expanding the compound first
|
||||
zIndex: 999 // z-index value of the canvas in which cue ımages are drawn
|
||||
};
|
||||
cy.expandCollapse(options)
|
||||
var api = cy.expandCollapse('get');
|
||||
|
||||
// shorten too long labels
|
||||
for(n=0; n < nodes.length; n++){
|
||||
cy.batch(function(){
|
||||
var labelText, oldLabelText;
|
||||
if(nodes[n].data.symbol){
|
||||
labelText = nodes[n].data.symbol;
|
||||
oldLabelText = nodes[n].data.symbol;
|
||||
while(getTextWidth(labelText, fontSize +" arial") > 49){
|
||||
oldLabelText = oldLabelText.slice(0,-1);
|
||||
labelText = oldLabelText+'...';
|
||||
}
|
||||
}
|
||||
else if(nodes[n].data.name){
|
||||
labelText = nodes[n].data.name;
|
||||
oldLabelText = nodes[n].data.name;
|
||||
while(getTextWidth(labelText, fontSize +" arial") > 49){
|
||||
oldLabelText = oldLabelText.slice(0,-1);
|
||||
labelText = oldLabelText+'...';
|
||||
}
|
||||
}
|
||||
cy.$('node[id =\'' + nodes[n].data.id + '\']').style("label", labelText);
|
||||
} )
|
||||
}
|
||||
for(var e =0; e < edges.length; e++){
|
||||
cy.batch(function(){
|
||||
if(Array.isArray(edges[e].data.interaction) || edges[e].data.interaction.split(",").length > 1){
|
||||
cy.$('edge[id =\'' + edges[e].data.id + '\']').style('target-arrow-shape', 'vee').style('line-style','solid');
|
||||
}
|
||||
});
|
||||
}
|
||||
// on tap
|
||||
cy.nodes().noOverlap({ padding: 5 });
|
||||
if(!noOptn){
|
||||
// calculate label position for legend and style legend
|
||||
var fontSize = 10;
|
||||
calculateLabelColorLegend(nodeVal, fontSize, cy, nodesMin, nodesMax);
|
||||
}
|
||||
|
||||
removedNodes = [];
|
||||
let defaults = {
|
||||
menuRadius: 100, // the radius of the circular menu in pixels
|
||||
selector: 'node', // elements matching this Cytoscape.js selector will trigger cxtmenus
|
||||
commands: [ // an array of commands to list in the menu or a function that returns the array
|
||||
|
||||
{ // example command
|
||||
fillColor: 'rgba(200, 200, 200, 0.75)', // optional: custom background color for item
|
||||
content: 'delete node', // html/text content to be displayed in the menu
|
||||
contentStyle: {}, // css key:value pairs to set the command's css in js if you want
|
||||
select: function(ele){ // a function to execute when the command is selected
|
||||
let selectedNode = cy.elements('node[id="'+ele.id()+'"]')
|
||||
removedNodes.push(selectedNode.union(selectedNode.connectedEdges()));
|
||||
cy.remove(selectedNode) // `ele` holds the reference to the active element
|
||||
},
|
||||
enabled: true // whether the command is selectable
|
||||
}
|
||||
|
||||
], // function( ele ){ return [ /*...*/ ] }, // a function that returns commands or a promise of commands
|
||||
fillColor: 'rgba(0, 0, 0, 0.75)', // the background colour of the menu
|
||||
activeFillColor: 'rgba(1, 105, 217, 0.75)', // the colour used to indicate the selected command
|
||||
activePadding: 20, // additional size in pixels for the active command
|
||||
indicatorSize: 24, // the size in pixels of the pointer to the active command
|
||||
separatorWidth: 3, // the empty spacing in pixels between successive commands
|
||||
spotlightPadding: 4, // extra spacing in pixels between the element and the spotlight
|
||||
minSpotlightRadius: 24, // the minimum radius in pixels of the spotlight
|
||||
maxSpotlightRadius: 38, // the maximum radius in pixels of the spotlight
|
||||
openMenuEvents: 'cxttapstart taphold', // space-separated cytoscape events that will open the menu; only `cxttapstart` and/or `taphold` work here
|
||||
itemColor: 'white', // the colour of text in the command's content
|
||||
itemTextShadowColor: 'transparent', // the text shadow colour of the command's content
|
||||
zIndex: 9999, // the z-index of the ui div
|
||||
atMouse: false // draw menu at mouse position
|
||||
};
|
||||
let menu = cy.cxtmenu( defaults );
|
||||
|
||||
// on click collapse all other nodes and expand database nodes for clicked node
|
||||
if(!collapsed){
|
||||
cy.on('tap', 'node', function(evt){
|
||||
var clickedNode = evt.target;
|
||||
if(clickedNode.data().symbol != undefined){
|
||||
var targetNode = clickedNode.data().symbol
|
||||
}
|
||||
else if(clickedNode.data().name != undefined && clickedNode.data().drugbank_id == undefined && !clickedNode.data().symbol.includes("Drugs")){
|
||||
var targetNode = clickedNode.data().name
|
||||
}
|
||||
else if(clickedNode.data().drugbank_id != undefined){
|
||||
var info = "<div align='left' id='information'><table><tr>"
|
||||
Object.keys(clickedNode.data()).forEach(function(key) {
|
||||
if(key == "id"){
|
||||
return;
|
||||
}
|
||||
if(key == "drugbank_id"){
|
||||
info+= "<td><b>"+key.charAt(0).toUpperCase() + key.slice(1).split("_").join(" ")+
|
||||
"</b></td><td><a href='https://www.drugbank.ca/drugs/"+clickedNode.data()[key]+"'target='_blank'>"+clickedNode.data()[key]+"</a></td></tr>"
|
||||
}
|
||||
else{
|
||||
info += "<td><b>"+key.charAt(0).toUpperCase() + key.slice(1).split("_").join(" ")+"</b></td><td>"+clickedNode.data()[key]+"</td></tr>"
|
||||
}
|
||||
});
|
||||
info += "</table>"
|
||||
var newWindow = window.open("BioGraphVisart/DrugInformation");
|
||||
var doc = newWindow.document;
|
||||
doc.open("text/html", "replace");
|
||||
doc.write("<HTML><HEAD><TITLE>"+clickedNode.data().name+
|
||||
"</TITLE><link rel='stylesheet' type='text/css' href='http://127.0.0.1:3000/static/css/subgraphCss.css'></HEAD>"+
|
||||
"<BODY><H1>"+clickedNode.data().name+
|
||||
"</H1>"+info+"</BODY></HTML>");
|
||||
doc.close();
|
||||
}
|
||||
else if(clickedNode.data().symbol.includes("Drugs")){
|
||||
clickedNode.style('shape','diamond')
|
||||
// api.expand(clickedNode)
|
||||
}
|
||||
var clickedNodesPosition = cy.$(clickedNode).position();
|
||||
if(clickedNode.data().drugbank_id === undefined && !clickedNode.data().symbol.includes("Drugs")){
|
||||
var neighboringgraphml = getGraphforGene(targetNode).then(
|
||||
response => {return response.text()});
|
||||
neighboringgraphml.then(function(response){
|
||||
document.getElementById("loader1").style.visibility = "hidden";
|
||||
if(response){
|
||||
if(response=="undefined"){
|
||||
alert("No network found for " +targetNode+".")
|
||||
}
|
||||
else{
|
||||
if(document.getElementById('values')){
|
||||
document.getElementById('values').disabled = true;
|
||||
}
|
||||
if(document.getElementById('nodeShapesAttr')){
|
||||
document.getElementById('nodeShapesAttr').disabled = true;
|
||||
}
|
||||
if(document.getElementById('nodeShapes')){
|
||||
document.getElementById('nodeShapes').disabled = true;
|
||||
}
|
||||
collapsed = true;
|
||||
var noOptn_collapsed = true;
|
||||
visualize(response.split("\n"), noOptn_collapsed);
|
||||
cy.remove(cy.elements('node[id = "l1"]'))
|
||||
cy.elements('node[name = "'+ targetNode+'"] ').style('border-width', 5).style('font-weight', 'bold')
|
||||
|
||||
cy.elements('node[midrug_id]').style('background-image', 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNS4wLjIsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4KCjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0iTGF5ZXJfMSIKICAgeD0iMHB4IgogICB5PSIwcHgiCiAgIHdpZHRoPSIyNDkuMjM1cHgiCiAgIGhlaWdodD0iMjQ5LjIzNnB4IgogICB2aWV3Qm94PSIwIDAgMjQ5LjIzNSAyNDkuMjM2IgogICBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNDkuMjM1IDI0OS4yMzYiCiAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgIHNvZGlwb2RpOmRvY25hbWU9InBpbGxfaWNvbl9yZWRfMjU2LnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi4yIDVjM2U4MGQsIDIwMTctMDgtMDYiPjxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTEzIj48cmRmOlJERj48Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPjwvY2M6V29yaz48L3JkZjpSREY+PC9tZXRhZGF0YT48ZGVmcwogICAgIGlkPSJkZWZzMTEiIC8+PHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSI3NzgiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNDgwIgogICAgIGlkPSJuYW1lZHZpZXc5IgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSIwLjk0Njg5Mzc0IgogICAgIGlua3NjYXBlOmN4PSIxMjQuNjE3NSIKICAgICBpbmtzY2FwZTpjeT0iMTI0LjYxOCIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMjIzIgogICAgIGlua3NjYXBlOndpbmRvdy15PSI3NCIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9IkxheWVyXzEiIC8+PGcKICAgICBpZD0iZzYiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MSI+PHBhdGgKICAgICAgIGZpbGw9IiNGQkZCRkIiCiAgICAgICBkPSJNMTk1LjUxMiw1NC4yOTRjLTguMTQyLTguMTQzLTE4LjgxNS0xMi4yMjYtMjkuNDk0LTEyLjIyNmMtMTAuNjc0LDAtMjEuMzUxLDQuMDgzLTI5LjQ3LDEyLjIyNiAgIEw5NC4zOTYsOTYuNDM4bDAsMGwtNDIuMTQyLDQyLjEzNWMtMTYuMjg3LDE2LjI2Ny0xNi4yODcsNDIuNjgsMC4wMSw1OC45NjVjMTYuMjY2LDE2LjI3OCw0Mi42ODIsMTYuMjc4LDU4Ljk1NiwwbDMzLjE2My0zMy4xNSAgIGw1MS4xMTktNTEuMTE5QzIxMS43NzYsOTYuOTc0LDIxMS43NzYsNzAuNTU5LDE5NS41MTIsNTQuMjk0eiBNMTg2LjUzMiwxMDQuMjgzbC00Mi4xNDgsNDIuMTRMMTAzLjM2NSwxMDUuNGw0Mi4xNDItNDIuMTQgICBjNS40NzMtNS40NzQsMTIuNzY1LTguNTA3LDIwLjQ5Mi04LjUwN2M3Ljc1MSwwLDE1LjA0MiwzLjAzMywyMC41MTgsOC41MDdDMTk3LjgzOCw3NC41NjQsMTk3LjgzOCw5Mi45ODMsMTg2LjUzMiwxMDQuMjgzeiIKICAgICAgIGlkPSJwYXRoNCIKICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiIC8+PC9nPjwvc3ZnPg==')
|
||||
.style('background-width', '45%')
|
||||
.style('background-height', '45%')
|
||||
.style('background-position-y', '100%')
|
||||
};
|
||||
}});
|
||||
}
|
||||
});
|
||||
|
||||
if(document.getElementById("maingraph")){
|
||||
document.getElementById("maingraph").remove();
|
||||
}
|
||||
}
|
||||
else if(collapsed){ // display additional drug info in extra tab/window from database graph
|
||||
cy.on('tap', 'node', function(evt){
|
||||
var clickedNode = evt.target.data();
|
||||
if(clickedNode.midrug_id != undefined){
|
||||
var info = "<div align='left' id='information'><table><tr>"
|
||||
Object.keys(clickedNode).forEach(function(key) {
|
||||
if(key == "id"){
|
||||
return;
|
||||
}
|
||||
if(key == "drugbank_id"){
|
||||
info+= "<td><b>"+key.charAt(0).toUpperCase() + key.slice(1).split("_").join(" ")+"</b></td><td><a href='https://www.drugbank.ca/drugs/"+clickedNode[key]+"'target='_blank'>"+clickedNode[key]+"</a></td></tr>"
|
||||
}
|
||||
else{
|
||||
info += "<td><b>"+key.charAt(0).toUpperCase() + key.slice(1).split("_").join(" ")+"</b></td><td>"+clickedNode[key]+"</td></tr>"
|
||||
}
|
||||
});
|
||||
info += "</table>"
|
||||
var newWindow = window.open("");
|
||||
var doc = newWindow.document;
|
||||
doc.open("text/html", "replace");
|
||||
doc.write("<HTML><HEAD><TITLE>"+clickedNode.name+
|
||||
"</TITLE><link rel='stylesheet' type='text/css' href='http://127.0.0.1:3000/static/subgraphCss.css'></HEAD>"+
|
||||
"<BODY><H1>"+clickedNode.name+
|
||||
"</H1>"+info+"</BODY></HTML>");
|
||||
doc.close();
|
||||
}});
|
||||
// if (process.browser) {
|
||||
cy.elements('node').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
return this.data('name')
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
},
|
||||
})
|
||||
if(!document.getElementById("maingraph")){
|
||||
var maingraph = document.createElement("button");
|
||||
maingraph.id = "maingraph";
|
||||
maingraph.id = "maingraph";
|
||||
maingraph.innerHTML = "Initial Network";
|
||||
// maingraph.style.cssFloat = "right"
|
||||
document.getElementById("configPart").appendChild(maingraph);
|
||||
document.getElementById("maingraph").className = 'butn';
|
||||
maingraph.onclick = function(){
|
||||
if(document.getElementById('values')){
|
||||
document.getElementById('values').disabled = false;
|
||||
}
|
||||
if(document.getElementById('nodeShapesAttr')){
|
||||
document.getElementById('nodeShapesAttr').disabled = false
|
||||
}
|
||||
if(document.getElementById('nodeShapes')){
|
||||
document.getElementById('nodeShapes').disabled = false;
|
||||
}
|
||||
collapsed = false;
|
||||
if(document.getElementById('values')){
|
||||
noOptn = false;
|
||||
}
|
||||
visualize(graphString, noOptn)};
|
||||
}
|
||||
}
|
||||
// update node values if tracer or values change
|
||||
if(!firstTime){
|
||||
for(n=0; n < nodes.length; n++){
|
||||
cy.batch(function(){
|
||||
cy.$('node[id =\'' + nodes[n].data.id + '\']')
|
||||
.data(nodeVal, nodes[n].data[nodeVal])
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function getGraphforGene(name){
|
||||
document.getElementById("loader1").style.visibility = "visible"
|
||||
var data = {'name':name};
|
||||
const response = await fetch("/BioGraphVisart/graph", {
|
||||
method: 'POST', // *GET, POST, PUT, DELETE, etc.
|
||||
mode: 'cors', // no-cors, *cors, same-origin
|
||||
//credentials: 'same-origin', // include, *same-origin, omit
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data) // body data type must match "Content-Type" header
|
||||
});
|
||||
return await response; // parses JSON response into native JavaScript objects
|
||||
}
|
||||
|
||||
|
||||
//show meta-information of nodes by mouseover
|
||||
function showMetaInfo(noOptn){
|
||||
if(! noOptn || isJson){
|
||||
cy.elements('node').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
if(!isNaN(parseFloat(this.data()[nodeVal]))){
|
||||
if(this.data('symbol') != undefined){
|
||||
return '<b>'+ this.data('symbol') +'</b><br>' +
|
||||
'<b>'+nodeVal +'</b>: ' + parseFloat(this.data()[nodeVal]).toFixed(2)}
|
||||
else if(this.data('name') != undefined){
|
||||
return '<b>'+ this.data('name')+'</b><br>' +
|
||||
'<b>'+nodeVal +'</b>: ' + parseFloat(this.data()[nodeVal]).toFixed(2)}
|
||||
} //numbers
|
||||
else{
|
||||
if(this.data('symbol') != undefined){
|
||||
return '<b>'+ this.data('symbol') +'</b><br>' +
|
||||
'<b>'+nodeVal +'</b>: '+ this.data()[nodeVal];
|
||||
}
|
||||
else if(this.data('name') != undefined){
|
||||
return '<b>'+ this.data('name')+'</b><br>' +
|
||||
'<b>'+nodeVal +'</b>: '+ this.data()[nodeVal];
|
||||
}
|
||||
}
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
else if(noOptn){
|
||||
cy.elements('node').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
if(this.data('symbol')){
|
||||
return '<b>'+ this.data('symbol') +'</b>'; } //numbers
|
||||
else if(this.data('name')){
|
||||
return '<b>'+ this.data('name')+'</b>';
|
||||
}
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
cy.elements('edge').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
return '<b>'+this.data()['interaction'] +'</b> '
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
/* undo deletion of nodes */
|
||||
function undoDeletion(){
|
||||
entry = removedNodes.pop()
|
||||
if(entry != undefined){
|
||||
entry.restore();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,381 @@
|
||||
/*
|
||||
create a graph with Cytoscape
|
||||
*/
|
||||
var path;
|
||||
var nodes;
|
||||
var colorschemePathsLeft = [];
|
||||
var colorschemePathsRight = [];
|
||||
var colorschemePathsMerge = [];
|
||||
var leftEdges = [];
|
||||
var rightEdges = [];
|
||||
var graphLeft;
|
||||
var graphRight;
|
||||
/*
|
||||
visualize a graph from .graphml-file
|
||||
*/
|
||||
function visualize(firstTime=false, files, example) {
|
||||
// move edge legend when scrolling
|
||||
if(!!right){
|
||||
var cys = ['cyLeft', 'cyRight'];
|
||||
jQuery(window).scroll(function() {
|
||||
if (jQuery(window).scrollTop() >= document.getElementById("right").offsetTop-700 && !!right) {
|
||||
jQuery("#legend_heatmap").css({
|
||||
"top": document.getElementById("right").offsetTop + "px",
|
||||
"left": (jQuery(window).scrollLeft()) + "px",
|
||||
"position":"absolute",
|
||||
"margin-top":0+"px",
|
||||
"margin-left":10+"px"
|
||||
});
|
||||
}
|
||||
else if(jQuery(window).scrollTop() <= document.getElementById("left").offsetTop && !!right){
|
||||
// if($(window).scrollTop() <= window.innerHeight/2){
|
||||
jQuery("#legend_heatmap").css({
|
||||
"top": document.getElementById("left").offsetTop +"px",
|
||||
"left": (jQuery(window).scrollLeft()) + "px",
|
||||
"position":"absolute",
|
||||
"margin-top":0+"px",
|
||||
"margin-left":10+"px"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
var cys = ['cyLeft'];
|
||||
// document.getElementById("legendGraphsRight").innerHTML="";
|
||||
document.getElementById('downloadPartRight').style.visibility = "hidden";
|
||||
document.getElementById('resetRight').style.visibility = "hidden";
|
||||
document.getElementById('right').style.visibility = "hidden";
|
||||
document.getElementById('keggpathwaysRight').style.visibility = "hidden";
|
||||
}
|
||||
var interactionTypes;
|
||||
var leftNodes;
|
||||
var leftEdges;
|
||||
var rightNodes;
|
||||
var rightEdges;
|
||||
var edgesToMergeLeft;
|
||||
var edgesToMergeRight;
|
||||
cys.forEach(function(cyO){
|
||||
// get nodes and edges
|
||||
if(cyO == 'cyLeft'){
|
||||
leftGraph = true;
|
||||
graphString = graphStringLeft;
|
||||
if(isSIF){
|
||||
var leftnodesAndEdges = getNodesAndEdgesSIF(graphString, 'left');
|
||||
}
|
||||
else{
|
||||
var leftnodesAndEdges = getNodesAndEdges(graphString,nodeVal,'left');
|
||||
}
|
||||
leftNodes = leftnodesAndEdges[0];
|
||||
leftEdges = leftnodesAndEdges[1];
|
||||
var leftNodeValuesNum = leftnodesAndEdges[2];
|
||||
interactionTypes = leftnodesAndEdges[3];
|
||||
edgesToMergeLeft = leftnodesAndEdges[4]
|
||||
// set min and max for legend and add nodes and edges to graph
|
||||
var leftRange = legendsRange(leftNodeValuesNum);
|
||||
var leftNodesMin = leftRange[0];
|
||||
var leftNodesMax = leftRange[1];
|
||||
graphLeft= createCyObject(cyO, leftNodesMin, leftNodesMax, nodeVal);
|
||||
addNodesAndEdges(graphLeft, leftNodes, leftEdges, leftFirstTime, leftNodesMin, leftNodesMax);
|
||||
// document.getElementById('downloadPDF').style.visibility = "visible";
|
||||
// document.getElementById('downloadPDF').disabled = false;
|
||||
showConfigurationParts('Left', graphLeft, left);
|
||||
showMetaInfo(graphLeft, nodeVal);
|
||||
// set background layer to hoghlight pathways
|
||||
var layerLeft = createLayoutKeggPathways(graphLeft, allPathsLeft, "Left")
|
||||
var canvasLeft = layerLeft.getCanvas();
|
||||
var ctxLeft = canvasLeft.getContext('2d');
|
||||
showKEGGParts('Left', ctxLeft, graphLeft, leftNodes, layerLeft, canvasLeft)
|
||||
|
||||
graphLeft.on('tap', 'node',function(evt){
|
||||
highlightNodeTapped(evt.target.data().symbol, graphLeft);
|
||||
evt.target.addClass('highlighted');
|
||||
if(right){
|
||||
highlightNodeTapped(evt.target.data().symbol, graphLeft, graphRight);
|
||||
}
|
||||
})
|
||||
graphLeft.on('tap', function(event){
|
||||
var evtTarget = event.target;
|
||||
if( evtTarget === graphLeft ){
|
||||
graphLeft.$('node').removeClass('highlighted')
|
||||
if(right){
|
||||
graphRight.$('node').removeClass('highlighted')
|
||||
}
|
||||
}
|
||||
});
|
||||
changeLayout(graphLeft, 'Left')
|
||||
}
|
||||
else if(cyO = 'cyRight'){
|
||||
leftGraph = false;
|
||||
graphString = graphStringRight;
|
||||
if(isSIF){
|
||||
var rightnodesAndEdges = getNodesAndEdgesSIF(graphString, 'right');
|
||||
}
|
||||
else{
|
||||
var rightnodesAndEdges = getNodesAndEdges(graphString, nodeVal, 'right');
|
||||
}
|
||||
rightNodes = rightnodesAndEdges[0];
|
||||
rightEdges = rightnodesAndEdges[1];
|
||||
var rightNodeValuesNum = rightnodesAndEdges[2];
|
||||
var interactionTypesRight = rightnodesAndEdges[3];
|
||||
edgesToMergeRight = rightnodesAndEdges[4]
|
||||
|
||||
interactionTypes = interactionTypes.add(...interactionTypesRight);
|
||||
// set min and max for legend and add nodes and edges to graph
|
||||
var rightRange = legendsRange(rightNodeValuesNum);
|
||||
var rightNodesMin = rightRange[0];
|
||||
var rightNodesMax = rightRange[1];
|
||||
graphRight= createCyObject(cyO, rightNodesMin, rightNodesMax, nodeVal);
|
||||
|
||||
addNodesAndEdges(graphRight,rightNodes, rightEdges, rightFirstTime, rightNodesMin, rightNodesMax);
|
||||
document.getElementById('cyRight').style.visibility = "visible";
|
||||
showConfigurationParts('Right', graphRight, right);
|
||||
document.getElementById('right').style.visibility = "visibile";
|
||||
document.getElementById('rightID').style.visibility = "visible";
|
||||
showMetaInfo(graphRight, nodeVal);
|
||||
// set background layer to hoghlight pathways
|
||||
var layerRight = createLayoutKeggPathways(graphRight, allPathsRight,"Right")
|
||||
var canvasRight = layerRight.getCanvas();
|
||||
var ctxRight = canvasRight.getContext('2d');
|
||||
showKEGGParts('Right',ctxRight, graphRight, rightNodes, layerRight, canvasRight);
|
||||
|
||||
|
||||
graphRight.on('tap', 'node',function(evt){
|
||||
highlightNodeTapped(evt.target.data().symbol, graphLeft, graphRight);
|
||||
evt.target.addClass('highlighted');
|
||||
})
|
||||
graphRight.on('tap', function(event){
|
||||
var evtTarget = event.target;
|
||||
if( evtTarget === graphRight ){
|
||||
graphLeft.$('node').removeClass('highlighted')
|
||||
graphRight.$('node').removeClass('highlighted')
|
||||
}
|
||||
});
|
||||
changeLayout(graphRight, "Right")
|
||||
}
|
||||
});
|
||||
document.getElementById("arrows").innerHTML = "";
|
||||
createInteractionLegend(interactionTypes, graphLeft, edgesToMergeLeft, graphRight, edgesToMergeRight);
|
||||
// if(document.getElementById('nodeShapesAttr')){
|
||||
if(!document.getElementById('heatmap_shapes')){
|
||||
var shapelegend = document.createElement("div")
|
||||
shapelegend.id = "heatmap_shapes";
|
||||
shapelegend.visibility = "visible";
|
||||
document.getElementById("legend_heatmap").appendChild(shapelegend);
|
||||
|
||||
}
|
||||
// }
|
||||
if(firstTime && graphRight){
|
||||
firstTime = false;
|
||||
clickMerge(files, nodeVal, example);
|
||||
}
|
||||
|
||||
document.getElementById('legend_heatmap').setAttribute('style','visibility:visible');
|
||||
document.getElementById('searchgene').setAttribute('style','visibility:visible');
|
||||
document.getElementById('searchbutton').setAttribute('style','visibility:visible');
|
||||
document.getElementById('searchbutton').onclick=function(){highlightSearchedGene(graphLeft, graphRight)}
|
||||
|
||||
}
|
||||
|
||||
function showConfigurationParts(pos, cy, name){
|
||||
document.getElementById('reset'+pos).style.visibility = "visible";
|
||||
document.getElementById('reset'+pos+'Layout').onclick=function(){resetLayout(cy, pos)}
|
||||
document.getElementById('downloadPart'+pos).style.visibility = "visible";
|
||||
document.getElementById('download'+pos+'SVG').disabled = false;
|
||||
document.getElementById('download'+pos+'PNG').disabled = false;
|
||||
document.getElementById('download'+pos+'SVG').onclick = function(){
|
||||
downloadSVG(cy, pos, name)
|
||||
}
|
||||
document.getElementById('download'+pos+'PNG').onclick = function(){
|
||||
downloadPNG(cy, pos, name)
|
||||
}
|
||||
document.getElementById('KEGGpathsButton'+pos).style.visibility ="visible";
|
||||
document.getElementById('keggpathways'+pos).style.visibility = "visible";
|
||||
// document.getElementById("selectlayout"+pos).visibility = "visible";
|
||||
// document.getElementById("selectlayout"+pos).onchange= function(){changeLayout(cy, pos)}
|
||||
}
|
||||
|
||||
function showKEGGParts(pos, ctx, cy, nodes, layer, canvas){
|
||||
document.getElementById("keggpathways"+pos).addEventListener('click',
|
||||
function(){listKEGGPathways(ctx, cy, nodes, layer, canvas, pos);});
|
||||
document.getElementById('KEGGpaths'+pos).style.visibility = "visible";
|
||||
|
||||
}
|
||||
//add nodes and edges to cy-object (update if attribute has changed)
|
||||
function addNodesAndEdges(cyObject, nodes, edges, firstTime, nodesMin, nodesMax){
|
||||
|
||||
if(loadGraphCount > 1){
|
||||
cyObject.elements().remove();
|
||||
if(cyObject === 'cyLeft'){
|
||||
leftFirstTime = false;
|
||||
}
|
||||
else if(cyObject === 'cyRight'){
|
||||
rightFirstTime = false;
|
||||
}
|
||||
loadGraphCount = 0;
|
||||
}
|
||||
cyObject.add(nodes);
|
||||
cyObject.add(edges);
|
||||
cyObject.nodes().noOverlap({ padding: 5 });
|
||||
// calculate label position for legend and style legend
|
||||
var fontSize = 10;
|
||||
|
||||
if(nodes.every(function(x){return(x.data["symbol"])})){
|
||||
for(n=0; n < nodes.length; n++){
|
||||
cyObject.batch(function(){
|
||||
var labelText = nodes[n].data.symbol;
|
||||
var oldLabelText = nodes[n].data.symbol;
|
||||
while(getTextWidth(labelText, fontSize +" arial") > 49){
|
||||
oldLabelText = oldLabelText.slice(0,-1);
|
||||
labelText = oldLabelText+'...';
|
||||
}
|
||||
// }
|
||||
cyObject.$('node[id =\'' + nodes[n].data.id + '\']').style("label", labelText);
|
||||
});
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(n=0; n < nodes.length; n++){
|
||||
cyObject.batch(function(){
|
||||
var labelText = nodes[n].data.name;
|
||||
var oldLabelText = nodes[n].data.name;
|
||||
while(getTextWidth(labelText, fontSize +" arial") > 49){
|
||||
oldLabelText = oldLabelText.slice(0,-1);
|
||||
labelText = oldLabelText+'...';
|
||||
}
|
||||
// }
|
||||
cyObject.$('node[id =\'' + nodes[n].data.id + '\']').style("label",labelText);
|
||||
});
|
||||
}
|
||||
}
|
||||
// update node values if tracer or values change
|
||||
if(!firstTime){
|
||||
for(n=0; n < nodes.length; n++){
|
||||
cyObject.batch(function(){
|
||||
cyObject.$('node[id =\'' + nodes[n].data.id + '\']')
|
||||
.data(nodeVal, nodes[n].data.val)
|
||||
});
|
||||
}
|
||||
}
|
||||
calculateLabelColorLegend(nodeVal, fontSize, cyObject, nodesMin, nodesMax);
|
||||
|
||||
addcolorlegend(cyObject)
|
||||
cyObject.layout({
|
||||
name: 'dagre'
|
||||
}).run();
|
||||
|
||||
}
|
||||
|
||||
//show meta-information of nodes by mouseover
|
||||
function showMetaInfo(cyObject, nodeVal){
|
||||
cyObject.elements('node').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
if(!isNaN(parseFloat(this.data(nodeVal)))){
|
||||
return '<b>'+nodeVal +'</b>: ' + parseFloat(this.data(nodeVal)).toFixed(2); } //numbers
|
||||
else{
|
||||
return '<b>'+nodeVal +'</b>: '+ this.data(nodeVal); //bools
|
||||
}
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
},
|
||||
});
|
||||
cyObject.elements('edge').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
return '<b>'+this.data()['interaction'] +'</b> '
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
reset view (zoom, position)
|
||||
*/
|
||||
function resetLayout(cy, pos){
|
||||
var animateLayout = true;
|
||||
var selectedLayout = document.getElementById('selectlayout' + pos).value;
|
||||
if(selectedLayout == "klay"){
|
||||
var options = {
|
||||
animate: animateLayout, // Whether to transition the node positions
|
||||
klay: {
|
||||
aspectRatio: 1.49, // The aimed aspect ratio of the drawing, that is the quotient of width by height
|
||||
compactComponents: true, // Tries to further compact components (disconnected sub-graphs).
|
||||
nodeLayering:'LONGEST_PATH', // Strategy for node layering.
|
||||
/* NETWORK_SIMPLEX This algorithm tries to minimize the length of edges. This is the most computationally intensive algorithm.
|
||||
The number of iterations after which it aborts if it hasn't found a result yet can be set with the Maximal Iterations option.
|
||||
LONGEST_PATH A very simple algorithm that distributes nodes along their longest path to a sink node.
|
||||
INTERACTIVE Distributes the nodes into layers by comparing their positions before the layout algorithm was started. The idea is that the relative horizontal order of nodes as it was before layout was applied is not changed. This of course requires valid positions for all nodes to have been set on the input graph before calling the layout algorithm. The interactive node layering algorithm uses the Interactive Reference Point option to determine which reference point of nodes are used to compare positions. */
|
||||
thoroughness: 10 // How much effort should be spent to produce a nice layout..
|
||||
},
|
||||
};
|
||||
cy.layout({
|
||||
name:'klay',
|
||||
options
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "breadthfirst"){
|
||||
cy.layout({
|
||||
name: "breadthfirst",
|
||||
spacingFactor: 0.5,
|
||||
animate: animateLayout
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "dagre (default)"){
|
||||
cy.layout({
|
||||
name: "dagre",
|
||||
animate: animateLayout
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "cose-bilkent"){
|
||||
cy.layout({
|
||||
name: "cose-bilkent",
|
||||
// Gravity range (constant)
|
||||
gravityRange: 1.3,
|
||||
animate: true
|
||||
}).run();
|
||||
}
|
||||
else if(selectedLayout == "grid"){
|
||||
cy.layout({
|
||||
name: "grid",
|
||||
animate: animateLayout,
|
||||
avoidOverlapPadding: 5
|
||||
}).run();
|
||||
}
|
||||
else{
|
||||
cy.layout({
|
||||
name: "dagre",
|
||||
animate: animateLayout
|
||||
}).run();
|
||||
document.getElementById('selectlayout'+pos).value = "dagre (default)";
|
||||
}
|
||||
if(highlightedNode){
|
||||
cy.$('node[symbol="'+highlightedNode+'"]').addClass("highlighted");
|
||||
}
|
||||
};
|
||||
|
@ -0,0 +1,193 @@
|
||||
var left, right;
|
||||
var leftNodesMin = -1;
|
||||
var leftNodesMax = 1;
|
||||
var rightNodesMin = -1;
|
||||
var rightNodesMax = 1;
|
||||
var leftOldMin;
|
||||
var leftOldMax;
|
||||
var rightOldMin;
|
||||
var rightOldMax;
|
||||
var leftGraph = false;
|
||||
var leftNodes = [];
|
||||
var rightNodes = [];
|
||||
var leftEdges = [];
|
||||
var rightEdges = [];
|
||||
var graphStringLeft;
|
||||
var graphStringRight;
|
||||
var path_left;
|
||||
var path_right;
|
||||
var leftFirstTime = true;
|
||||
var rightFirstTime = true;
|
||||
var loadGraphCount = 0;
|
||||
var svg_part;
|
||||
var firstShape = true;
|
||||
var usedShapeAttributes = [];
|
||||
var getDrpDwnFiles = true;
|
||||
var leftNodeValuesNum = [];
|
||||
var rightNodeValuesNum = [];
|
||||
var merge_graph;
|
||||
|
||||
function createHeatmap(heatmapData, foundFiles, graphsList, example=false){
|
||||
/*
|
||||
get axes labels (samples) and overlap values
|
||||
*/
|
||||
var axes = [];
|
||||
var overlapArrays = [];
|
||||
//var overlapValues = [];
|
||||
|
||||
var xLabels = [];
|
||||
|
||||
for (let i in heatmapData){ //get file names
|
||||
axes.push(heatmapData[i]["sample"]);
|
||||
var reverse = heatmapData[i]["sample"].split("").reverse().join("")
|
||||
var reversesplit = reverse.split(".")
|
||||
var reverseselect = reversesplit.slice(1,reversesplit.length).join(".").split("").reverse().join("");
|
||||
let filenameSplit = reverseselect
|
||||
xLabels.push(filenameSplit);
|
||||
}
|
||||
|
||||
var normalizedValues = heatmapData;
|
||||
var sampleSizes = [];
|
||||
for (let i in heatmapData){
|
||||
sample = heatmapData[i]['sample']
|
||||
sampleSizes[sample] = heatmapData[i][sample];
|
||||
}
|
||||
|
||||
for (let i in heatmapData){
|
||||
sampleRow = heatmapData[i]['sample'];
|
||||
for(j=0;j < axes.length; j++){
|
||||
sampleCol = axes[j];
|
||||
i = parseInt(i);
|
||||
overlapArrays.push([j,i, Math.round(parseInt(heatmapData[i][axes[j]])*200/(parseInt(sampleSizes[sampleRow])+parseInt(sampleSizes[sampleCol])))]);
|
||||
}
|
||||
}
|
||||
var heatmapColorStopsDist = 1/9;
|
||||
|
||||
var viridis = ['#440154', '#482777', '#3F4A8A', '#31678E', '#26838F', '#1F9D8A', '#6CCE5A', '#B6DE2B', '#FEE825']
|
||||
|
||||
var heatmapColors = [];
|
||||
var j = 0;
|
||||
for(i=0; i < 9; i++){
|
||||
heatmapColors.push([j, viridis[i]]);
|
||||
j = j + heatmapColorStopsDist;
|
||||
}
|
||||
|
||||
/*
|
||||
create heatmap
|
||||
*/
|
||||
|
||||
jQuery(function () {
|
||||
var leftSelect;
|
||||
var rightSelect;
|
||||
jQuery('#heatmapcontainer').highcharts({
|
||||
|
||||
chart: {
|
||||
type: 'heatmap',
|
||||
marginTop: 70,
|
||||
marginBottom: 70
|
||||
},
|
||||
plotOptions: {
|
||||
series: {
|
||||
events: {
|
||||
click: function (event) {
|
||||
if(isSIF){
|
||||
left = leftSelect+'.sif';
|
||||
right=rightSelect+'.sif';
|
||||
}
|
||||
else{
|
||||
left = leftSelect+'.graphml';
|
||||
right=rightSelect+'.graphml';
|
||||
}
|
||||
document.getElementById("leftID").innerHTML = "";
|
||||
document.getElementById("rightID").innerHTML = "";
|
||||
// document.getElementById('values').setAttribute('style','visibility:visible');
|
||||
document.getElementById("leftID").innerHTML = leftSelect;
|
||||
if(left === right){
|
||||
document.getElementById("rightID").innerHTML = "";
|
||||
document.getElementById("cyRight").innerHTML = "";
|
||||
right = null;
|
||||
}
|
||||
else{
|
||||
document.getElementById("rightID").innerHTML = rightSelect;
|
||||
|
||||
}
|
||||
var files = []
|
||||
if(example){
|
||||
for(file of foundFiles){
|
||||
if(file.name.includes(left)){
|
||||
files.push(file)
|
||||
}
|
||||
else if(file.name.includes(right)){
|
||||
files.push(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
for(file of foundFiles){
|
||||
if(file.name == left){
|
||||
files.push(file)
|
||||
}
|
||||
else if(file.name == right){
|
||||
files.push(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
loadGraphml(left, right, graphsList);
|
||||
visualize(true, files, example);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
title: {
|
||||
text: 'Node Overlap'
|
||||
},
|
||||
xAxis: {
|
||||
categories: xLabels,
|
||||
labels: {
|
||||
rotation: -25,
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
categories: xLabels,
|
||||
title: null
|
||||
},
|
||||
colorAxis: {
|
||||
stops: heatmapColors ,
|
||||
min:0,
|
||||
max: 100,
|
||||
reversed: false
|
||||
},
|
||||
legend: {
|
||||
align: 'right',
|
||||
layout: 'vertical',
|
||||
margin: 0,
|
||||
verticalAlign: 'top',
|
||||
y: 25,
|
||||
symbolHeight: 320
|
||||
},
|
||||
tooltip: {
|
||||
formatter: function () {
|
||||
leftSelect = this.series.xAxis.categories[this.point.y];
|
||||
rightSelect = this.series.yAxis.categories[this.point.x];
|
||||
return '<b>' + this.series.xAxis.categories[this.point.x] + '</b> has a overlap of <br><b>' +
|
||||
this.point.value + '% </b> with <br><b>' + this.series.yAxis.categories[this.point.y] + '</b>';
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
name: 'Node overlap',
|
||||
borderWidth: 1,
|
||||
data: overlapArrays, // first:x, second:y, thirsd:value
|
||||
dataLabels: {
|
||||
enabled: true,
|
||||
color: 'black',
|
||||
style: {
|
||||
textShadow: 'none'
|
||||
},
|
||||
format: this.percentage
|
||||
}
|
||||
}]
|
||||
})
|
||||
});
|
||||
document.getElementById("loader").style.display="none";
|
||||
};
|
@ -0,0 +1,422 @@
|
||||
var path, tracer, nodeVal, outputName, nodeAttributes,
|
||||
graphString, nodeShapeAttr, shapeNode, ycoord;
|
||||
// no attributes for node coloring/shape
|
||||
var noDrpShapes = true;
|
||||
var firstTime = true;
|
||||
var loadGraphCount = 0;
|
||||
var legendDrawn = false;
|
||||
var svg;
|
||||
var cy;
|
||||
var firstShape = true;
|
||||
var usedShapeAttributes = [];
|
||||
var getDrpDwnFiles = true;
|
||||
var isJson = false;
|
||||
var collapsed = false;
|
||||
var expandGraphs = [];
|
||||
var clicked = false;
|
||||
var clickedNode;
|
||||
var clickedNodesPosition;
|
||||
var defaultVal = false;
|
||||
var isSIF = false;
|
||||
var allPaths;
|
||||
var collapsed = false;
|
||||
var selectedLayout;
|
||||
|
||||
function isFile(){
|
||||
document.getElementById('loader1').style.visibility = "visible";
|
||||
var file = document.getElementById('fileName').files[0];
|
||||
if(file == undefined){
|
||||
alert("No file given.")
|
||||
document.getElementById('loader1').style.visibility = "hidden";
|
||||
return;
|
||||
}
|
||||
var file = document.getElementById('fileName').files[0];
|
||||
if(file["name"].endsWith("json")){
|
||||
isJson = true;
|
||||
readFile(file);
|
||||
document.getElementById('loader1').style.visibility = "hidden";
|
||||
}
|
||||
else if(file["name"].endsWith("graphml") || file["name"].endsWith("sif")){
|
||||
isJson = false;
|
||||
readFile(file);
|
||||
}
|
||||
else{
|
||||
alert('Please select a .graphml or .sif-file.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
remove old buttons
|
||||
*/
|
||||
function cleanSelections(layer = undefined){
|
||||
// if it is not the first graph read, delete all selectable options
|
||||
usedShapeAttributes = [];
|
||||
var myNode = document.getElementById("configPart");
|
||||
document.getElementById("arrows").innerHTML = "";
|
||||
document.getElementById('KEGGpaths').innerHTML = "";
|
||||
if(!isJson){
|
||||
document.getElementById('keggpathways').firstChild.data = "Show KEGG Pathways";
|
||||
}
|
||||
document.getElementById('KEGGpaths').style.visibility = "hidden";
|
||||
allPaths = null;
|
||||
if(layer){
|
||||
layer.resetTransform(ctx);
|
||||
ctx.clearRect(0,0,canvas.width, canvas.height);
|
||||
layer.setTransform(ctx);
|
||||
ctx.save();
|
||||
}
|
||||
var domValues = document.getElementById("values");
|
||||
if(domValues){
|
||||
domValues.parentNode.removeChild(domValues);}
|
||||
var domNodeShapesAttr = document.getElementById("nodeShapesAttr");
|
||||
var domLayout = document.getElementById("selectlayout");
|
||||
if(domNodeShapesAttr){
|
||||
domNodeShapesAttr.parentNode.removeChild(domNodeShapesAttr);}
|
||||
var domNodeShapes = document.getElementById("nodeShapes");
|
||||
if(domNodeShapes)
|
||||
{domNodeShapes.parentNode.removeChild(domNodeShapes);}
|
||||
if(domLayout)
|
||||
{domLayout.parentNode.removeChild(domLayout);}
|
||||
var searchgene = document.getElementById("searchgene")
|
||||
if(searchgene){
|
||||
searchgene.parentNode.removeChild(searchgene);}
|
||||
var searchbutn = document.getElementById("searchbutn")
|
||||
if(searchbutn){
|
||||
searchbutn.parentNode.removeChild(searchbutn); }
|
||||
var undobutn = document.getElementById("undobutn")
|
||||
if(undobutn){
|
||||
undobutn.parentNode.removeChild(undobutn); }
|
||||
if(document.getElementById('mergeEdges'))
|
||||
document.getElementById('mergeEdges').checked = true;
|
||||
noOptn = true;
|
||||
noDrpShapes = true;
|
||||
nodeVal = undefined;
|
||||
collapsed = false;
|
||||
}
|
||||
|
||||
/* load example graphml file*/
|
||||
function readExample(layer = undefined){
|
||||
cleanSelections();
|
||||
// read text from URL location
|
||||
var request = new XMLHttpRequest();
|
||||
request.open('GET', 'https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/example.graphml', false);
|
||||
request.onreadystatechange = function () {
|
||||
if (request.readyState === 4 && request.status === 200) {
|
||||
var type = request.getResponseHeader('Content-Type');
|
||||
if (type.indexOf("text") !== 1) {
|
||||
graphString = request.responseText.split("\n")
|
||||
isJson = false;
|
||||
loadFile();
|
||||
return graphString;
|
||||
}
|
||||
}
|
||||
}
|
||||
request.send(null);
|
||||
}
|
||||
|
||||
/*
|
||||
read from grphml - file and initialize cy-object
|
||||
*/
|
||||
function readFile(file, layer = undefined) {
|
||||
cleanSelections();
|
||||
|
||||
if(shapeNode){
|
||||
shapeNode.elements().remove();
|
||||
}
|
||||
|
||||
// // IS file a graphml?
|
||||
if(file["name"].endsWith("sif")){
|
||||
isSIF = true;
|
||||
}
|
||||
|
||||
// read file
|
||||
path = file.name;
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = function(evt) {
|
||||
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
|
||||
var arrayBuffer = evt.target.result;
|
||||
if(isJson){
|
||||
graphString = JSON.parse(arrayBuffer)
|
||||
}
|
||||
else{
|
||||
graphString = arrayBuffer.split('\n');
|
||||
}
|
||||
loadFile();
|
||||
}
|
||||
};
|
||||
reader.readAsText(file);
|
||||
}
|
||||
|
||||
function loadFile() {
|
||||
var noOptn = true;
|
||||
// put node atttributes into dropdown select object
|
||||
var drp = document.createElement("ul");
|
||||
drp.classList.add("Menu")
|
||||
drp.classList.add("-horizontal")
|
||||
drp.id = "values";
|
||||
drp.style.visibility = "visible";
|
||||
document.getElementById("configPart").appendChild(drp);
|
||||
|
||||
var labelDrp = document.createElement("li")
|
||||
labelDrp.classList.add("-hasSubmenu")
|
||||
labelDrp.innerHTML = "<a href='#'>Color attribute</a>"
|
||||
drp.appendChild(labelDrp)
|
||||
var ulDrp = document.createElement("ul")
|
||||
labelDrp.appendChild(ulDrp)
|
||||
|
||||
// layout dropdown
|
||||
var drpLayout = document.createElement("ul");
|
||||
drpLayout.classList.add("Menu")
|
||||
drpLayout.classList.add("-horizontal")
|
||||
drpLayout.id = "selectlayout";
|
||||
document.getElementById("configPart").appendChild(drpLayout);
|
||||
var labelLayout = document.createElement("li")
|
||||
labelLayout.classList.add("-hasSubmenu")
|
||||
labelLayout.innerHTML = "<a href='#'>Layout</a>"
|
||||
drpLayout.appendChild(labelLayout)
|
||||
var ulLayout = document.createElement("ul")
|
||||
labelLayout.appendChild(ulLayout)
|
||||
|
||||
layoutArray.forEach(function(s){
|
||||
var optnLayout = addLayoutOptions(s, "layoutOpt");
|
||||
optnLayout.onclick = function(){
|
||||
selectedLayout = s;
|
||||
changeLayout(cy, s);
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('layoutOpt')){
|
||||
e.remove()}});
|
||||
optnLayout.innerHTML = "<a href='#'><i class='fas fa-check layoutOpt' style='margin-right:5px'></i>"+s+"</a>"
|
||||
};
|
||||
ulLayout.appendChild(optnLayout);
|
||||
});
|
||||
|
||||
// dropdown for shape selection
|
||||
var drpShapes = document.createElement("ul")
|
||||
drpShapes.classList.add("Menu")
|
||||
drpShapes.classList.add("-horizontal")
|
||||
drpShapes.id="nodeShapesAttr"
|
||||
document.getElementById("configPart").appendChild(drpShapes);
|
||||
var labelShape = document.createElement("li")
|
||||
labelShape.classList.add("-hasSubmenu")
|
||||
labelShape.innerHTML = "<a href='#'>Node shape</a>"
|
||||
drpShapes.appendChild(labelShape)
|
||||
var ulShapes = document.createElement("ul")
|
||||
labelShape.appendChild(ulShapes)
|
||||
|
||||
const shapesArray = ["rectangle", "octagon", "rhomboid", "pentagon", "tag"];
|
||||
|
||||
// search gene
|
||||
var searchgene = document.createElement("input");
|
||||
searchgene.id = "searchgene";
|
||||
searchgene.value = "Node label"
|
||||
document.getElementById("configPart").appendChild(searchgene);
|
||||
searchgene.setAttribute("type", "text");
|
||||
searchgene.setAttribute("width", 30);
|
||||
var searchbutn = document.createElement("button");
|
||||
searchbutn.id = "searchbutn";
|
||||
searchbutn.innerHTML = "Search";
|
||||
document.getElementById("configPart").appendChild(searchbutn);
|
||||
document.getElementById("searchbutn").className = 'butn';
|
||||
searchbutn.onclick = function(){highlightSearchedGene(cy)};
|
||||
|
||||
// undo deletion
|
||||
var undobutn = document.createElement("button");
|
||||
undobutn.id = "undobutn";
|
||||
undobutn.innerHTML = "Undo delete";
|
||||
document.getElementById("configPart").appendChild(undobutn);
|
||||
document.getElementById("undobutn").className = 'butn';
|
||||
undobutn.onclick = undoDeletion;
|
||||
|
||||
var resetbutn = document.createElement("button");
|
||||
resetbutn.id = "resetLayout";
|
||||
resetbutn.innerHTML = "Reset layout";
|
||||
document.getElementById("configPart").appendChild(resetbutn);
|
||||
document.getElementById("resetLayout").className = 'butn';
|
||||
undobutn.onclick = changeLayout;
|
||||
if(!isJson && ! isSIF){
|
||||
// get attributes for coloring -> double/boolean and shape -> boolean
|
||||
for (var i = 0; i <= graphString.length - 1; i++) {
|
||||
if(graphString[i].includes("for=\"node\"") &&
|
||||
((graphString[i].includes("attr.type=\"double\"") ||
|
||||
(graphString[i].includes("attr.type=\"boolean\""))))){
|
||||
noOptn = false;
|
||||
var nodeattr = graphString[i].split("attr.name=")[1].split(" ")[0].replace(/"/g, "");
|
||||
|
||||
var optnDrp = document.createElement("li");
|
||||
optnDrp.innerHTML="<a href='#'>"+nodeattr+"</a>";
|
||||
optnDrp.id=nodeattr;
|
||||
ulDrp.appendChild(optnDrp)
|
||||
optnDrp.onclick = function(){
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('optnDrp')){
|
||||
e.remove()}});
|
||||
this.innerHTML = "<a href='#'><i class='fas fa-check optnDrp' style='margin-right:5px'></i>"+this.id+"</a>"
|
||||
nodeVal = this.id;
|
||||
var newValues = []
|
||||
for(var i = 0; i < cy.filter('node').size(); i++){
|
||||
if(cy.nodes()[i].data()[nodeVal]){
|
||||
newValues.push(cy.nodes()[i].data()[nodeVal])
|
||||
}
|
||||
}
|
||||
var range = legendsRange(newValues);
|
||||
var nodesMin = range[0];
|
||||
var nodesMa
|
||||
x = range[1];
|
||||
cy.style().selector('node[!'+nodeVal+']').style({
|
||||
'background-color': 'white',
|
||||
'color':'black'
|
||||
}).update()
|
||||
// attributes with numbers
|
||||
cy.style().selector('node['+nodeVal+' < "0"]').style({
|
||||
'background-color': 'mapData('+nodeVal+','+ nodesMin+', 0, #006cf0, white)',
|
||||
'color': 'black'
|
||||
}).update()
|
||||
cy.style().selector('node['+nodeVal+' <='+0.5*nodesMin+']').style({
|
||||
'color': 'white'
|
||||
}).update()
|
||||
cy.style().selector('node['+nodeVal+' > "0"]').style({
|
||||
'background-color': 'mapData('+nodeVal+', 0,'+ nodesMax+', white, #d50000)',
|
||||
'color': 'black'
|
||||
}).update()
|
||||
cy.style().selector('node['+nodeVal+' >='+0.5*nodesMax+']').style({
|
||||
'color': 'white'
|
||||
}).update()
|
||||
cy.style().selector('node['+nodeVal+' = "0"]').style({
|
||||
'background-color': 'white',
|
||||
'color':'black'
|
||||
}).update()
|
||||
|
||||
// attributes with boolean
|
||||
cy.style().selector('node['+nodeVal+' = "false"]').style({
|
||||
'background-color': '#006cf0',
|
||||
'color':'white'
|
||||
}).update()
|
||||
cy.style().selector('node['+nodeVal+' = "true"]').style({
|
||||
'background-color': '#d50000',
|
||||
'color':'white'
|
||||
}).update()
|
||||
var fontSize = 10;
|
||||
calculateLabelColorLegend(nodeVal, fontSize, cy, nodesMin, nodesMax);
|
||||
};
|
||||
|
||||
|
||||
if(graphString[i].includes("attr.type=\"boolean\"")){
|
||||
var nodeattrShape = graphString[i].split("attr.name=")[1].split(" ")[0].replace(/"/g, "");
|
||||
var liShape = document.createElement("li")
|
||||
liShape.classList.add("-hasSubmenu")
|
||||
liShape.innerHTML = "<a href='#'>"+nodeattrShape+"</a>"
|
||||
liShape.id= nodeattrShape
|
||||
liShape.id="nodeShapes"
|
||||
ulShapes.appendChild(liShape)
|
||||
var ulShape = document.createElement("ul")
|
||||
ulShape.id = nodeattrShape
|
||||
liShape.appendChild(ulShape)
|
||||
shapesArray.forEach(function(s){
|
||||
var optnShape = document.createElement("li")
|
||||
optnShape.innerHTML = "<a hre='#'>"+s+"</a>"
|
||||
optnShape.id= s
|
||||
ulShape.appendChild(optnShape)
|
||||
optnShape.onclick=function(){
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('optnShape')){
|
||||
e.remove()}});
|
||||
optnShape.innerHTML = "<a href='#'><i class='fas fa-check optnShape' style='margin-right:5px'></i>"+s+"</a>"
|
||||
// optnShape.parentElement.innerHTML = "<a href='#'><i class='fas fa-check liShape' style='margin-right:5px'></i>"+optnShape.parentElement.id+"</a>"
|
||||
changeNodeShapes(cy, 'legendNodes', optnShape.parentElement.id,s);
|
||||
hideMenu(document.getElementById("nodeShapesAttr"))}
|
||||
})
|
||||
|
||||
noDrpShapes = false;
|
||||
}
|
||||
forEach($(".Menu li.-hasSubmenu"), function(e){
|
||||
e.showMenu = showMenu;
|
||||
e.hideMenu = hideMenu;
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu"), function(e){
|
||||
e.addEventListener("click", showMenu);
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu li"), function(e){
|
||||
e.addEventListener("mouseenter", hideAllInactiveMenus);
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu li.-hasSubmenu"), function(e){
|
||||
e.addEventListener("click", showMenu);
|
||||
});
|
||||
|
||||
document.addEventListener("click", hideAllInactiveMenus);
|
||||
};
|
||||
// do not search whole file, only header
|
||||
if(graphString[i].includes("<node id=\"n0\">")){
|
||||
break;
|
||||
};
|
||||
};
|
||||
if(ulDrp.children.length>0){
|
||||
ulDrp.children[0].innerHTML = "<a href='#'><i class='fas fa-check optnDrp' style='margin-right:5px'></i>"+ulDrp.children[0].id+"</a>";
|
||||
nodeVal = ulDrp.children[0].id;
|
||||
defaultVal = true;
|
||||
noOptn = false;
|
||||
visualize(graphString, noOptn);
|
||||
}
|
||||
}
|
||||
else if(isJson){
|
||||
var nodeattr = graphString.elements.nodes[0].data
|
||||
for(let d in nodeattr){
|
||||
if(nodeattr[d] == "true" || nodeattr[d] == "false"){
|
||||
var nodeattrShape = d
|
||||
var optnShape = document.createElement("OPTION");
|
||||
optnShape.text=nodeattrShape;
|
||||
optnShape.value=nodeattrShape;
|
||||
drpShapes.add(optnShape);
|
||||
noDrpShapes = false;
|
||||
noOptn = false
|
||||
|
||||
var optn = document.createElement("OPTION");
|
||||
optn.text=d;
|
||||
optn.value=d;
|
||||
drp.add(optn);
|
||||
}
|
||||
|
||||
else if(!isNaN(parseFloat(nodeattr[d])) && d != "name" && d!="entrezID" && d != "entrez"){
|
||||
var optn = document.createElement("OPTION");
|
||||
optn.text=d;
|
||||
optn.value=d;
|
||||
drp.add(optn);
|
||||
noOptn = false;
|
||||
}
|
||||
|
||||
}
|
||||
if(drp.options[1]){
|
||||
nodeVal = drp.options[1].value;
|
||||
document.getElementById('values').value = nodeVal;
|
||||
defaultVal = true;
|
||||
noOptn = false;
|
||||
visualize(graphString, noOptn);
|
||||
}
|
||||
}
|
||||
// if no attributes found for coloring/shape, remove dropdown menus and visualize
|
||||
if(noOptn && noDrpShapes){
|
||||
drp.parentNode.removeChild(drp);
|
||||
drpShapes.parentNode.removeChild(drpShapes);
|
||||
defaultVal = false;
|
||||
// if(!isJson){
|
||||
visualize(graphString, noOptn);
|
||||
// }
|
||||
}
|
||||
else if(noDrpShapes){
|
||||
drpShapes.parentNode.removeChild(drpShapes);
|
||||
}
|
||||
loadGraphCount ++;
|
||||
};
|
||||
|
||||
/* undo deletion of nodes */
|
||||
function undoDeletion(){
|
||||
entry = removedNodes.pop()
|
||||
if(entry != undefined){
|
||||
entry.restore();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,619 @@
|
||||
var allPathsLeft;
|
||||
var allPathsRight;
|
||||
var allPathsMerge;
|
||||
var layerLeft;
|
||||
var canvasLeft;
|
||||
var ctxLeft;
|
||||
var layerRight;
|
||||
var canvasRight;
|
||||
var ctxRight;
|
||||
var layerMerge;
|
||||
var cavasMerge;
|
||||
var ctxMerge;
|
||||
var shapeNode;
|
||||
var nodeVal;
|
||||
|
||||
var highlightedNode;
|
||||
|
||||
var graphsList = [];
|
||||
|
||||
var isSIF = false;
|
||||
|
||||
var example = false;
|
||||
|
||||
function getAllIndexes(arr, val) {
|
||||
|
||||
var indexes = [];
|
||||
for(var i = 0; i < arr.length; i++)
|
||||
if (arr[i].includes(val))
|
||||
indexes.push(arr[i]);
|
||||
return indexes;
|
||||
}
|
||||
|
||||
/*
|
||||
files from directory */
|
||||
function loadDir(){
|
||||
document.getElementById("loader").style.display="block";
|
||||
document.getElementById("heatmapcontainer").innerHTML = "";
|
||||
document.getElementById("cyLeft").innerHTML = "";
|
||||
document.getElementById("cyRight").innerHTML = "";
|
||||
document.getElementById('keggpathwaysLeft').style.visibility = "hidden";
|
||||
document.getElementById('KEGGpathsButtonLeft').style.visibility = "hidden";
|
||||
document.getElementById('KEGGpathsLeft').style.visibility = "hidden";
|
||||
document.getElementById('keggpathwaysRight').style.visibility = "hidden";
|
||||
document.getElementById('KEGGpathsButtonRight').style.visibility = "hidden";
|
||||
document.getElementById('KEGGpathsRight').style.visibility = "hidden";
|
||||
document.getElementById('downloadPartLeft').style.visibility = "hidden";
|
||||
document.getElementById('downloadPartRight').style.visibility = "hidden";
|
||||
document.getElementById('resetLeft').style.visibility = "hidden";
|
||||
document.getElementById('resetRight').style.visibility = "hidden";
|
||||
document.getElementById("leftID").innerHTML = "";
|
||||
document.getElementById("rightID").innerHTML = "";
|
||||
|
||||
cleanSelectionsHeatmap();
|
||||
|
||||
isSIF = false;
|
||||
let foundFiles = document.getElementById('fileName').files;
|
||||
counterlimit = foundFiles.length;
|
||||
var data = {};
|
||||
let node_ids = [];
|
||||
let node_attributes = {};
|
||||
let j = 0;
|
||||
var count = 0;
|
||||
var regExp = /\>(.*)\</;
|
||||
graphsList = [];
|
||||
Array.from(foundFiles).forEach(function(file){
|
||||
// read file
|
||||
var path = file.name;
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = function(evt) {
|
||||
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
|
||||
var arrayBuffer = evt.target.result;
|
||||
graphsList[path] = arrayBuffer.split("\n");
|
||||
count = count+ 1;
|
||||
if(count == foundFiles.length){
|
||||
for(g in graphsList){
|
||||
var graphml = graphsList[g];
|
||||
j ++;
|
||||
if(file.name.endsWith("graphml")){
|
||||
let keyList = getAllIndexes(graphml,'symbol')
|
||||
if(keyList.length == 0){
|
||||
keyList = getAllIndexes(graphml, 'name')
|
||||
}
|
||||
keyList.forEach(function(key){ // get keys
|
||||
if(key.includes('data')){
|
||||
var symbol = regExp.exec(key)[1];
|
||||
if(data[g] == undefined){
|
||||
data[g] = []
|
||||
}
|
||||
data[g].push(symbol);
|
||||
if(j == Object.keys(graphsList).length){
|
||||
var overlapDict = calculateOverlap(data);
|
||||
createHeatmap(overlapDict, foundFiles, graphsList);
|
||||
document.getElementById('selectAttribute').style.visibility = "visible";
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
else if(file.name.endsWith("sif")){
|
||||
isSIF = true;
|
||||
if(data[g] == undefined){
|
||||
data[g] = []
|
||||
}
|
||||
var nodesSet = new Set();
|
||||
|
||||
var el = graphml.find(a =>a.includes("\t"));
|
||||
for (var i = 0; i <= graphml.length - 1; i++) {
|
||||
if(el){
|
||||
var nodesAndInteraction = graphml[i].split("\t");
|
||||
}
|
||||
else{
|
||||
var nodesAndInteraction = graphml[i].split(" ");
|
||||
}
|
||||
var n1 = nodesAndInteraction[0].trim();
|
||||
nodesSet.add(n1);
|
||||
var n2 = nodesAndInteraction[2].trim();
|
||||
nodesSet.add(n2);
|
||||
}
|
||||
data[g] = Array.from(nodesSet);
|
||||
if(j == Object.keys(graphsList).length){
|
||||
var overlapDict = calculateOverlap(data);
|
||||
createHeatmap(overlapDict, foundFiles, graphsList);
|
||||
document.getElementById('selectAttribute').style.visibility = "visible";
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
reader.readAsText(file);
|
||||
})
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
files from directory */
|
||||
function loadExample(){
|
||||
example = true;
|
||||
|
||||
// layout dropdown
|
||||
var drpLayoutLeft = document.getElementById("selectlayoutLeft")
|
||||
drpLayoutLeft.classList.add("Menu")
|
||||
drpLayoutLeft.classList.add("-horizontal")
|
||||
|
||||
var drpLayoutRight = document.getElementById("selectlayoutRight")
|
||||
drpLayoutRight.classList.add("Menu")
|
||||
drpLayoutRight.classList.add("-horizontal")
|
||||
drpLayoutRight.id = "selectlayoutRight";
|
||||
|
||||
var labelLayoutLeft = document.createElement("li")
|
||||
labelLayoutLeft.classList.add("-hasSubmenu")
|
||||
labelLayoutLeft.innerHTML = "<a href='#'>Layout</a>"
|
||||
drpLayoutLeft.appendChild(labelLayoutLeft)
|
||||
var ulLayoutLeft = document.createElement("ul")
|
||||
labelLayoutLeft.appendChild(ulLayoutLeft)
|
||||
|
||||
var labelLayoutRight = document.createElement("li")
|
||||
labelLayoutRight.classList.add("-hasSubmenu")
|
||||
labelLayoutRight.innerHTML = "<a href='#'>Layout</a>"
|
||||
drpLayoutRight.appendChild(labelLayoutRight)
|
||||
var ulLayoutRight = document.createElement("ul")
|
||||
labelLayoutRight.appendChild(ulLayoutRight)
|
||||
|
||||
layoutArray.forEach(function(s){
|
||||
var optnLayoutLeft = addLayoutOptions(s, "layoutOptLeft");
|
||||
optnLayoutLeft.onclick = function(){
|
||||
selectedLayoutLeft = s;
|
||||
changeLayout(graphLeft, s);
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('layoutOptLeft')){
|
||||
e.remove()}});
|
||||
optnLayoutLeft.innerHTML = "<a href='#'><i class='fas fa-check layoutOptLeft' style='margin-right:5px'></i>"+s+"</a>"
|
||||
};
|
||||
ulLayoutLeft.appendChild(optnLayoutLeft);
|
||||
var optnLayoutRight= addLayoutOptions(s, "layoutOptRight");
|
||||
optnLayoutRight.onclick = function(){
|
||||
selectedLayoutRight = s;
|
||||
changeLayout(graphRight, s);
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('layoutOptRight')){
|
||||
e.remove()}});
|
||||
optnLayoutRight.innerHTML = "<a href='#'><i class='fas fa-check layoutOptRight style='margin-right:5px'></i>"+s+"</a>"
|
||||
};
|
||||
ulLayoutRight.appendChild(optnLayoutRight);
|
||||
});
|
||||
forEach($(".Menu li.-hasSubmenu"), function(e){
|
||||
e.showMenu = showMenu;
|
||||
e.hideMenu = hideMenu;
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu"), function(e){
|
||||
e.addEventListener("click", showMenu);
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu li"), function(e){
|
||||
e.addEventListener("mouseenter", hideAllInactiveMenus);
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu li.-hasSubmenu"), function(e){
|
||||
e.addEventListener("click", showMenu);
|
||||
});
|
||||
|
||||
document.addEventListener("click", hideAllInactiveMenus);
|
||||
|
||||
isSIF = false;
|
||||
var foundFiles =[{name:"https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/TvsL_rooted/S02.graphml"}, {name:"https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/TvsL_rooted/S05.graphml"}, {name:"https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/TvsL_rooted/S06.graphml"},{name:"https://raw.githubusercontent.com/MirjamFi/BioGraphVisart/master/TvsL_rooted/S09.graphml"}]
|
||||
graphsList=[]
|
||||
var regExp = /\>(.*)\</;
|
||||
var data = {};
|
||||
for(let file of foundFiles){
|
||||
var request = new XMLHttpRequest();
|
||||
request.open('GET', file["name"], false);
|
||||
request.onreadystatechange = function () {
|
||||
if (request.readyState === 4 && request.status === 200) {
|
||||
var type = request.getResponseHeader('Content-Type');
|
||||
if (type.indexOf("text") !== 1) {
|
||||
graphString = request.responseText.split("\n")
|
||||
isJson = false;
|
||||
var filesplit = file["name"].split("/")
|
||||
graphsList[filesplit[filesplit.length-1]] = graphString
|
||||
}
|
||||
}
|
||||
}
|
||||
request.send(null);
|
||||
}
|
||||
for(g in graphsList){
|
||||
var graphml = graphsList[g]
|
||||
let keyList = getAllIndexes(graphml,'symbol')
|
||||
if(keyList.length == 0){
|
||||
keyList = getAllIndexes(graphml, 'name')
|
||||
}
|
||||
keyList.forEach(function(key){ // get keys
|
||||
if(key.includes('data')){
|
||||
var symbol = regExp.exec(key)[1];
|
||||
if(data[g] == undefined){
|
||||
data[g] = []
|
||||
}
|
||||
data[g].push(symbol);
|
||||
if(g == Object.keys(graphsList)[Object.keys(graphsList).length-1]){
|
||||
var overlapDict = calculateOverlap(data);
|
||||
createHeatmap(overlapDict, foundFiles, graphsList, example);
|
||||
document.getElementById('selectAttribute').style.visibility = "visible";
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
calculate overlap between loaded graohs
|
||||
*/
|
||||
function calculateOverlap(data){
|
||||
let overlap = {};
|
||||
for(let counter = 0; counter < Object.keys(data).length; counter++){ // first graph
|
||||
let key = Object.keys(data)[counter];
|
||||
overlap[counter] = {};
|
||||
overlap[counter]["sample"]=key;
|
||||
let symbols1 = data[key];
|
||||
for(let count2=0; count2 < Object.keys(data).length; count2++){ // second graph
|
||||
let key2 = Object.keys(data)[count2];
|
||||
let symbols2 = data[key2];
|
||||
let sym2 = new Set(symbols2);
|
||||
let overlapnodes = symbols1.filter(x => sym2.has(x)); // overlap number
|
||||
overlap[counter][key2]=overlapnodes.length;
|
||||
if(counter == Object.keys(data).length-1){
|
||||
if(count2 == Object.keys(data).length-1){
|
||||
return(overlap);
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
var drpValues = [];
|
||||
var shapeAttributes = [];
|
||||
var onceSearch=false;
|
||||
|
||||
function loadGraphml(sampleLeft, sampleRight, graphsList) {
|
||||
cleanSelectionsHeatmap();
|
||||
samples = [sampleLeft, sampleRight];
|
||||
var onceAttr = false
|
||||
var firstVal = true;
|
||||
var onceShapes = false
|
||||
samples.forEach(sample=>{
|
||||
var graphString;
|
||||
if(!!sample){
|
||||
if(sample == sampleLeft){
|
||||
path_left = sample;
|
||||
graphString = graphsList[path_left];
|
||||
graphStringLeft = graphsList[path_left];
|
||||
}
|
||||
else if(sample == sampleRight){
|
||||
path_right=sample;
|
||||
graphString = graphsList[path_right];
|
||||
graphStringRight = graphsList[path_right];
|
||||
}
|
||||
// put node atttributes into dropdown select object
|
||||
if(!isSIF){
|
||||
|
||||
for (var i = 0; i <= graphString.length - 1; i++) {
|
||||
if(graphString[i].includes("for=\"node\"") &&
|
||||
(graphString[i].includes("attr.type=\"double\"") ||
|
||||
(graphString[i].includes("attr.type=\"boolean\"")))){
|
||||
var nodeattr = graphString[i].split("attr.name=")[1].split(" ")[0].replace(/"/g, "");
|
||||
if(!drpValues.includes(nodeattr)){
|
||||
drpValues.push(nodeattr);
|
||||
if(!onceAttr){
|
||||
var drp = document.getElementById("values")
|
||||
drp.classList.add("Menu")
|
||||
drp.classList.add("-horizontal")
|
||||
drp.id = "values";
|
||||
drp.style.visibility = "visible";
|
||||
|
||||
var labelDrp = document.createElement("li")
|
||||
labelDrp.classList.add("-hasSubmenu")
|
||||
labelDrp.innerHTML = "<a href='#'>Color attribute</a>"
|
||||
drp.appendChild(labelDrp)
|
||||
var ulDrp = document.createElement("ul")
|
||||
ulDrp.id="ulDrp"
|
||||
labelDrp.appendChild(ulDrp)
|
||||
onceAttr = true
|
||||
}
|
||||
var ulDrp = document.getElementById("ulDrp")
|
||||
var optnDrp = document.createElement("li");
|
||||
optnDrp.id=nodeattr;
|
||||
|
||||
if(firstVal){
|
||||
optnDrp.innerHTML="<a href='#'><i class='fas fa-check optnDrp' style='margin-right:5px'></i>"+optnDrp.id+"</a>"
|
||||
nodeVal = optnDrp.id
|
||||
firstVal = false;
|
||||
}
|
||||
else{
|
||||
optnDrp.innerHTML="<a href='#'>"+nodeattr+"</a>";}
|
||||
ulDrp.appendChild(optnDrp)
|
||||
optnDrp.onclick = function(){
|
||||
document.querySelectorAll('.fa-check').forEach(e =>{
|
||||
if(e.classList.contains('optnDrp')){
|
||||
e.remove()}});
|
||||
this.innerHTML = "<a href='#'><i class='fas fa-check optnDrp' style='margin-right:5px'></i>"+this.id+"</a>"
|
||||
nodeVal = this.id
|
||||
visualize()
|
||||
}
|
||||
if(graphString[i].includes("attr.type=\"boolean\"")){
|
||||
shapeAttributes.push(nodeattr);
|
||||
if(!onceShapes){
|
||||
var drpShapes = document.createElement("ul")
|
||||
drpShapes.id="nodeShapesAttr"
|
||||
drpShapes.classList.add("Menu")
|
||||
drpShapes.classList.add("-horizontal")
|
||||
drpShapes.style.visibility = "visible"
|
||||
document.getElementById("config").appendChild("drpShapes")
|
||||
var labelShape = document.createElement("li")
|
||||
labelShape.classList.add("-hasSubmenu")
|
||||
labelShape.innerHTML = "<a href='#'>Node shape</a>"
|
||||
drpShapes.appendChild(labelShape)
|
||||
var ulShapes = document.createElement("ul")
|
||||
labelShape.appendChild(ulShapes)
|
||||
const shapesArray = ["rectangle", "octagon", "rhomboid", "pentagon", "tag"];
|
||||
onceShapes = true
|
||||
}
|
||||
var liShape = document.createElement("li")
|
||||
liShape.classList.add("-hasSubmenu")
|
||||
liShape.innerHTML = "<a href='#'>"+nodeattr+"</a>"
|
||||
liShape.id= nodeattr
|
||||
liShape.id="nodeShapes"
|
||||
ulShapes.appendChild(liShape)
|
||||
var ulShape = document.createElement("ul")
|
||||
ulShape.id = nodeattrShape
|
||||
liShape.appendChild(ulShape)
|
||||
shapesArray.forEach(function(s){
|
||||
var optnShape = document.createElement("li")
|
||||
optnShape.innerHTML = "<a hre='#'>"+s+"</a>"
|
||||
optnShape.id= s
|
||||
ulShape.appendChild(optnShape)
|
||||
optnShape.onclick=function(){
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('optnShape')){
|
||||
e.remove()}});
|
||||
optnShape.innerHTML = "<a href='#'><i class='fas fa-check optnShape' style='margin-right:5px'></i>"+s+"</a>"
|
||||
// optnShape.parentElement.innerHTML = "<a href='#'><i class='fas fa-check liShape' style='margin-right:5px'></i>"+optnShape.parentElement.id+"</a>"
|
||||
changeNodeShapes(graphLeft, "heatmapcontainer", optnShape.parentElement.id, this.id)
|
||||
changeNodeShapes(graphRight, "heatmapcontainer", optnShape.parentElement.id, this.id)
|
||||
hideMenu(document.getElementById("nodeShapesAttr"))}
|
||||
})
|
||||
}
|
||||
}
|
||||
};
|
||||
if(graphString[i].includes("<node id=\"n0\">")){
|
||||
break;
|
||||
};
|
||||
};
|
||||
if(!onceSearch){
|
||||
var searchgeneInput = document.createElement("input")
|
||||
searchgeneInput.type = "text"
|
||||
searchgeneInput.id = "searchgene"
|
||||
searchgeneInput.size = "10"
|
||||
searchgeneInput.style.visibility = "hidden"
|
||||
searchgeneInput.value = "Node label"
|
||||
document.getElementById("config").appendChild(searchgeneInput)
|
||||
var searchgenebtn = document.createElement("button")
|
||||
searchgenebtn.classList.add("butn")
|
||||
searchgenebtn.id = "searchbutton"
|
||||
searchgenebtn.style.visibility = "hidden"
|
||||
searchgenebtn.innerHTML = "Search"
|
||||
document.getElementById("config").appendChild(searchgenebtn)
|
||||
var downloadbtn = document.createElement("button")
|
||||
downloadbtn.classList.add("butn")
|
||||
downloadbtn.id = "downloadPDF"
|
||||
downloadbtn.onclick=downloadPDF;
|
||||
// downloadbtn.disabled="disabled"
|
||||
// downloadbtn.style.visibility ="hidden"
|
||||
downloadbtn.innerHTML="<i class='fas fa-file-download fa-lg'></i>"
|
||||
document.getElementById("config").appendChild(downloadbtn)
|
||||
onceSearch = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
return;
|
||||
}
|
||||
});
|
||||
// layout dropdown
|
||||
var drpLayoutLeft = document.getElementById("selectlayoutLeft")
|
||||
drpLayoutLeft.classList.add("Menu")
|
||||
drpLayoutLeft.classList.add("-horizontal")
|
||||
|
||||
var drpLayoutRight = document.getElementById("selectlayoutRight")
|
||||
drpLayoutRight.classList.add("Menu")
|
||||
drpLayoutRight.classList.add("-horizontal")
|
||||
drpLayoutRight.id = "selectlayoutRight";
|
||||
|
||||
var labelLayoutLeft = document.createElement("li")
|
||||
labelLayoutLeft.classList.add("-hasSubmenu")
|
||||
labelLayoutLeft.innerHTML = "<a href='#'>Layout</a>"
|
||||
drpLayoutLeft.appendChild(labelLayoutLeft)
|
||||
var ulLayoutLeft = document.createElement("ul")
|
||||
labelLayoutLeft.appendChild(ulLayoutLeft)
|
||||
|
||||
var labelLayoutRight = document.createElement("li")
|
||||
labelLayoutRight.classList.add("-hasSubmenu")
|
||||
labelLayoutRight.innerHTML = "<a href='#'>Layout</a>"
|
||||
drpLayoutRight.appendChild(labelLayoutRight)
|
||||
var ulLayoutRight = document.createElement("ul")
|
||||
labelLayoutRight.appendChild(ulLayoutRight)
|
||||
|
||||
layoutArray.forEach(function(s){
|
||||
var optnLayoutLeft = addLayoutOptions(s, "layoutOptLeft");
|
||||
optnLayoutLeft.onclick = function(){
|
||||
selectedLayoutLeft = s;
|
||||
changeLayout(graphLeft, s);
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('layoutOptLeft')){
|
||||
e.remove()}});
|
||||
optnLayoutLeft.innerHTML = "<a ><i class='fas fa-check layoutOptLeft' style='margin-right:5px'></i>"+s+"</a>"
|
||||
};
|
||||
ulLayoutLeft.appendChild(optnLayoutLeft);
|
||||
var optnLayoutRight= addLayoutOptions(s, "layoutOptRight");
|
||||
optnLayoutRight.onclick = function(){
|
||||
selectedLayoutRight = s;
|
||||
changeLayout(graphRight, s);
|
||||
document.querySelectorAll('.fa-check').forEach(function(e){
|
||||
if(e.classList.contains('layoutOptRight')){
|
||||
e.remove()}});
|
||||
optnLayoutRight.innerHTML = "<a><i class='fas fa-check layoutOptRight style='margin-right:5px'></i>"+s+"</a>"
|
||||
};
|
||||
ulLayoutRight.appendChild(optnLayoutRight);
|
||||
});
|
||||
forEach($(".Menu li.-hasSubmenu"), function(e){
|
||||
e.showMenu = showMenu;
|
||||
e.hideMenu = hideMenu;
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu"), function(e){
|
||||
e.addEventListener("click", showMenu);
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu li"), function(e){
|
||||
e.addEventListener("mouseenter", hideAllInactiveMenus);
|
||||
});
|
||||
|
||||
forEach($(".Menu > li.-hasSubmenu li.-hasSubmenu"), function(e){
|
||||
e.addEventListener("click", showMenu);
|
||||
});
|
||||
|
||||
document.addEventListener("click", hideAllInactiveMenus);
|
||||
};
|
||||
|
||||
//remove all options of dropdown
|
||||
function removeOptions(selectbox){
|
||||
var i;
|
||||
for(i = selectbox.options.length - 1 ; i >= 0 ; i--)
|
||||
{
|
||||
selectbox.remove(i);
|
||||
}
|
||||
}
|
||||
|
||||
function cleanSelectionsHeatmap(){
|
||||
if(shapeNode){
|
||||
shapeNode.elements().remove();
|
||||
}
|
||||
document.getElementById('keggpathwaysLeft').firstChild.data = "Show KEGG Pathways";
|
||||
//document.getElementById('KEGGpathsLeft').style.visibility = "hidden";
|
||||
document.getElementById('KEGGpathsLeft').innerHTML = "";
|
||||
document.getElementById('keggpathwaysRight').firstChild.data = "Show KEGG Pathways";
|
||||
//document.getElementById('KEGGpathsRight').style.visibility = "hidden";
|
||||
document.getElementById('KEGGpathsRight').innerHTML = "";
|
||||
if(document.getElementById('keggpathwaysMerge')){
|
||||
document.getElementById('keggpathwaysMerge').style.visibility = "hidden";
|
||||
}
|
||||
document.getElementById('selectlayoutLeft').innerHTML = "";
|
||||
document.getElementById('selectlayoutRight').innerHTML = "";
|
||||
|
||||
path= null;
|
||||
|
||||
leftGraph = false;
|
||||
graphStringLeft =null;
|
||||
graphStringRight =null;
|
||||
path_left =null;
|
||||
path_right =null;
|
||||
leftFirstTime = true;
|
||||
rightFirstTime = true;
|
||||
loadGraphCount = 0;
|
||||
svg_part =null;
|
||||
firstShape = true;
|
||||
usedShapeAttributes = [];
|
||||
getDrpDwnFiles = true;
|
||||
|
||||
}
|
||||
|
||||
// initiate cytoscape graph
|
||||
function createCyObject(cyDiv, nodesMin, nodesMax, val){
|
||||
document.getElementById(cyDiv).innerHTML = "";
|
||||
return cytoscape({
|
||||
container: document.getElementById(cyDiv),
|
||||
ready: function(){
|
||||
},
|
||||
style: [
|
||||
// style nodes
|
||||
basicstyle,
|
||||
// {selector: 'node',
|
||||
// style:{
|
||||
// 'label':'data(symbol)'
|
||||
// }},
|
||||
// attributes with numbers
|
||||
{selector: 'node['+val+' <0]',
|
||||
style: {
|
||||
'background-color': 'mapData('+val+','+ nodesMin+', 0, #006cf0, white)',
|
||||
'color': 'black'
|
||||
}},
|
||||
{selector: 'node['+val+'<='+0.5*nodesMin+']',
|
||||
style: {
|
||||
'color': 'white'
|
||||
}},
|
||||
{selector: 'node['+val+'>0]',
|
||||
style: {
|
||||
'background-color': 'mapData('+val+', 0,'+ nodesMax+', white, #d50000)',
|
||||
'color': 'black'
|
||||
}},
|
||||
{selector: 'node['+val+'>='+0.5*nodesMax+']',
|
||||
style: {
|
||||
'color': 'white'
|
||||
}},
|
||||
{selector: 'node['+val+'= 0]',
|
||||
style: {
|
||||
'background-color': 'white',
|
||||
'color':'black'
|
||||
}},
|
||||
|
||||
// attributes with boolean
|
||||
{selector: 'node['+val+'= "false"]',
|
||||
style: {
|
||||
'background-color': '#006cf0',
|
||||
'color':'white'
|
||||
}},
|
||||
{selector: 'node['+val+'= "true"]',
|
||||
style: {
|
||||
'background-color': '#d50000',
|
||||
'color':'white'
|
||||
}},
|
||||
|
||||
{selector: '.highlighted',
|
||||
style:{
|
||||
'border-width': 8,
|
||||
'height':70,
|
||||
width:70
|
||||
}},
|
||||
|
||||
// style edges
|
||||
basicedgestyle,
|
||||
actstyle,
|
||||
expstyle,
|
||||
inhistyle,
|
||||
reprstyle,
|
||||
bindstyle,
|
||||
dissostyle,
|
||||
compstyle,
|
||||
indeffstyle,
|
||||
missstyle,
|
||||
statestyle,
|
||||
phosphostyle,
|
||||
dephosphostyle,
|
||||
glycostyle,
|
||||
ubiquistyle,
|
||||
methystyle
|
||||
],
|
||||
})
|
||||
}
|
||||
|
||||
function highlightNodeTapped(symbol, graphL=undefined, graphR=undefined){
|
||||
if(graphL){
|
||||
graphL.$('node').removeClass('highlighted')
|
||||
graphL.$('node[symbol="'+symbol+'"]').addClass('highlighted')
|
||||
}
|
||||
if(graphR){
|
||||
graphR.$('node').removeClass('highlighted')
|
||||
graphR.$('node[symbol="'+symbol+'"]').addClass('highlighted')
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,442 @@
|
||||
// create canvas for kegg pathway rectangles
|
||||
function createLayoutKeggPathways(cy, nodes, allPaths, pos=""){
|
||||
var layer = cy.cyCanvas({
|
||||
zIndex: -1,
|
||||
});
|
||||
var canvas = layer.getCanvas();
|
||||
var ctx = canvas.getContext('2d');
|
||||
if(document.getElementById("keggpathways"+pos)){
|
||||
var b = jQuery.extend( [], document.getElementById("keggpathways"+pos)
|
||||
.firstChild.data).join("");
|
||||
if(b == "Hide KEGG Pathways" && allPaths){
|
||||
// highlightKEGGpaths(ctx, cy, layer, canvas);
|
||||
highlightKEGGpaths(ctx, canvas, cy, nodes, layer, pos, allPaths, colorschemePaths)
|
||||
}
|
||||
else if(b == "Show KEGG Pathways" && allPaths){
|
||||
document.getElementById("KEGGpaths"+pos).style.visibility ="hidden";
|
||||
}
|
||||
}
|
||||
return layer;
|
||||
}
|
||||
|
||||
// create list of top 5 KEGG pathways of the displayed nodes
|
||||
async function listKEGGPathways(ctx, cy, nodes, layer, canvas, pos = ""){
|
||||
//swap button "Hide"/"show"
|
||||
if(document.getElementById('keggpathways'+pos)
|
||||
.firstChild.data == "Show KEGG Pathways"){
|
||||
document.getElementById('keggpathways'+pos)
|
||||
.firstChild.data = "Hide KEGG Pathways";
|
||||
|
||||
if(document.getElementById('KEGGpaths'+pos).style.visibility == "hidden"){
|
||||
document.getElementById('KEGGpaths'+pos).style.visibility="visible";
|
||||
}
|
||||
//get pathways from KEGG, show loader while doing so
|
||||
else{
|
||||
document.getElementById('loader'+pos).style.visibility = "visible";
|
||||
document.getElementById('keggpathways'+pos).disabled = true;
|
||||
var pathsCount = [];
|
||||
allPaths = [];
|
||||
colorschemePaths = [];
|
||||
for(var n of nodes){
|
||||
if(n["data"]["symbol"]!="legend"){
|
||||
if(n["data"]["entrezID"] != undefined){
|
||||
var entrezID = n["data"]["entrezID"].toString();
|
||||
}
|
||||
else if(n["data"]["entrez"] != undefined){
|
||||
var entrezID = n["data"]["entrez"].toString();
|
||||
}
|
||||
let keggpaths = await getPathwaysFromKEGG(entrezID);
|
||||
keggpaths = keggpaths.split("\n")
|
||||
var line = 0;
|
||||
while(line < keggpaths.length){
|
||||
if(keggpaths[line].includes("<nobr>Pathway</nobr>")){
|
||||
line++;
|
||||
var splitarray =keggpaths[line].split("</td>")
|
||||
for(var i = 1; i < splitarray.length-2; i=i+2){
|
||||
let hsa = "hsa"+splitarray[i-1].split(">hsa")[1].split("</a>")[0]
|
||||
let p = splitarray[i].split("<td>")[1]
|
||||
p = hsa+" "+p;
|
||||
if(p != undefined){
|
||||
if(typeof allPaths[p] == 'undefined'){
|
||||
allPaths[p]=[];
|
||||
}
|
||||
allPaths[p].push(entrezID);
|
||||
if(isNaN(pathsCount[p])){
|
||||
pathsCount[p]=1;
|
||||
}
|
||||
else{
|
||||
pathsCount[p]=pathsCount[p]+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
else{
|
||||
line++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// only get top 5 of pathways (most genes in)
|
||||
var props = Object.keys(pathsCount).map(function(key) {
|
||||
return { key: key, value: this[key] };}, pathsCount);
|
||||
props = props.sort(function(p1, p2) { return p2.value - p1.value; });
|
||||
var topFive = props.slice(0, 5);
|
||||
//show table of pathways
|
||||
var tbody = document.getElementById("KEGGpaths"+pos);
|
||||
var keggForm = document.createElement('form');
|
||||
keggForm.id = "form"+pos
|
||||
|
||||
var headerKegg = document.createElement ("h3");
|
||||
headerKegg.innerHTML = "KEGG Pathways:"
|
||||
keggForm.appendChild(headerKegg)
|
||||
// var htmlString ="<form> <h3>KEGG Pathways:</h3><br>";
|
||||
var colors = ["#66c2a5","#dfc27d","#8da0cb","#e78ac3","#a6d854"]
|
||||
|
||||
for (var i = 0; i < topFive.length; i++) {
|
||||
colorschemePaths[topFive[i].key] = colors[i];
|
||||
var checkboxKegg = document.createElement('input');
|
||||
checkboxKegg.type = 'checkbox';
|
||||
checkboxKegg.value = topFive[i].key
|
||||
checkboxKegg.onclick=
|
||||
function(){highlightKEGGpaths(ctx, canvas, cy, nodes, layer, pos, allPaths,
|
||||
colorschemePaths)};
|
||||
var label = document.createElement('label')
|
||||
label.innerHTML = topFive[i].key;
|
||||
label.style.color = colors[i];
|
||||
label.id = topFive[i].key;
|
||||
label.style.fontWeight = "bold";
|
||||
// label.appendChild(checkboxKegg);
|
||||
keggForm.appendChild(checkboxKegg);
|
||||
keggForm.appendChild(label)
|
||||
keggForm.appendChild(document.createElement("br"))
|
||||
keggForm.appendChild(document.createElement("br"))
|
||||
}
|
||||
tbody.appendChild(keggForm)
|
||||
document.getElementById('loader'+pos).style.visibility = "hidden";
|
||||
document.getElementById('keggpathways'+pos).disabled = false;
|
||||
document.getElementById('KEGGpaths'+pos).style.visibility = "visible";
|
||||
}
|
||||
}
|
||||
//Hide table, switch button to show
|
||||
else {
|
||||
document.getElementById('keggpathways'+pos)
|
||||
.firstChild.data = "Show KEGG Pathways";
|
||||
document.getElementById('KEGGpaths'+pos).style.visibility = "hidden";
|
||||
document.getElementById('loader'+pos).style.visibility = "hidden";
|
||||
var mergeEdgeschecked = document.getElementById('mergeEdges').checked;
|
||||
jQuery('#form'+pos+' input:checkbox').prop('checked', false);
|
||||
if(mergeEdgeschecked){
|
||||
document.getElementById('mergeEdges').checked = true;
|
||||
}
|
||||
layer.resetTransform(ctx);
|
||||
ctx.clearRect(0,0,canvas.width, canvas.height);
|
||||
layer.setTransform(ctx);
|
||||
ctx.save();
|
||||
}
|
||||
}
|
||||
|
||||
// show rectangles for selected pathways
|
||||
function highlightKEGGpaths(ctx, canvas, cy, nodes, layer, pos="", allPaths, colorschemePaths){
|
||||
ctx.clearRect(0,0,canvas.width, canvas.height);
|
||||
cy.on("render cyCanvas.resize", evt => {
|
||||
layer.resetTransform(ctx);
|
||||
ctx.clearRect(0,0,canvas.width, canvas.height);
|
||||
layer.setTransform(ctx);
|
||||
ctx.save();
|
||||
drawPathwayRectangles(ctx, cy, nodes, allPaths, colorschemePaths, pos);
|
||||
ctx.restore();
|
||||
});
|
||||
cy.zoom(cy.zoom()*1.000000000000001);
|
||||
}
|
||||
|
||||
// draw rectangles highlighting the selected pathways
|
||||
function drawPathwayRectangles(ctx, cy, nodes, allPaths, colorschemePaths, pos=""){
|
||||
var allCheckedPaths = getCheckedBoxes(jQuery('#form'+pos+' input:checkbox'));
|
||||
if(allCheckedPaths){
|
||||
for(var path of allCheckedPaths){
|
||||
var cp = [... allPaths[path]];
|
||||
//get neighbored nodes in same pathway for each node
|
||||
var nearest_groups = getNeighbors(cp, cy);
|
||||
// merge group of neighboring nodes if they intersect
|
||||
var merged_nodes = mergeNodeGroups(nearest_groups, cp);
|
||||
//mark connected nodes in pathway
|
||||
ctx.globalAlpha = 0.6;
|
||||
var merged_nodes_grouped = Object.values(merged_nodes)
|
||||
for(var grouped_nodes of merged_nodes_grouped){
|
||||
var max_dist_x = 0;
|
||||
var max_dist_y = 0;
|
||||
var most_x=100000;
|
||||
var most_y=100000;
|
||||
// multiple nodes in one rectangle
|
||||
if(grouped_nodes.size > 1){
|
||||
for(let n of grouped_nodes){
|
||||
if(cy.$("node[entrezID ="+n+"]").position()){
|
||||
var position = cy.$("node[entrezID ="+n+"]").position();
|
||||
}
|
||||
else if(cy.$("node[entrez ="+n+"]").position()){
|
||||
var position = cy.$("node[entrez ="+n+"]").position();
|
||||
}
|
||||
for(let m of grouped_nodes){
|
||||
var pos_m;
|
||||
if(cy.$("node[entrezID ="+m+"]").position()){
|
||||
pos_m = cy.$("node[entrezID ="+m+"]").position()
|
||||
}
|
||||
else if(cy.$("node[entrez ="+m+"]").position()){
|
||||
pos_m = cy.$("node[entrez ="+m+"]").position()
|
||||
}
|
||||
let dist_x = Math.abs(position['x'] - pos_m['x']);
|
||||
if(dist_x >= max_dist_x){
|
||||
max_dist_x = dist_x
|
||||
if(position['x'] <= pos_m['x'] && position['x'] < most_x){
|
||||
most_x = position['x'];
|
||||
}
|
||||
else if(position['x'] > pos_m['x'] && pos_m['x'] < most_x){
|
||||
most_x = pos_m['x'];
|
||||
}
|
||||
}
|
||||
let dist_y = Math.abs(position['y'] - pos_m['y']);
|
||||
if(dist_y >= max_dist_y){
|
||||
max_dist_y = dist_y
|
||||
if(position['y'] <= pos_m['y'] && position['y'] < most_y){
|
||||
most_y = position['y'];
|
||||
}
|
||||
else if(position['y'] > pos_m['y'] && pos_m['y'] < most_y){
|
||||
most_y = pos_m['y'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(cy.$("node[entrezID ="+[...grouped_nodes][0]+"]").length > 0){
|
||||
var renderedWidth =
|
||||
cy.$("node[entrezID ="+[...grouped_nodes][0]+"]").width();
|
||||
}
|
||||
else if(cy.$("node[entrez ="+[...grouped_nodes][0]+"]").length > 0){
|
||||
var renderedWidth =
|
||||
cy.$("node[entrez ="+[...grouped_nodes][0]+"]").width();
|
||||
}
|
||||
max_dist_x = (max_dist_x + renderedWidth);
|
||||
max_dist_y = (max_dist_y + renderedWidth);
|
||||
|
||||
// if nodes lay on one line, set sides to node width
|
||||
if(max_dist_x==0){
|
||||
max_dist_x = renderedWidth;
|
||||
}
|
||||
if(max_dist_y==0){
|
||||
max_dist_y = renderedWidth;
|
||||
}
|
||||
centroid = {"x": most_x, "y":most_y}
|
||||
var breaked = false;
|
||||
for(var node of nodes){
|
||||
if(cy.$("node[entrez ="+node.data['entrez']+"]")){
|
||||
var testposition = cy.$("node[entrez ="+node.data['entrez']+"]").renderedPosition();}
|
||||
else if(cy.$("node[entrezID ="+node.data['entrezID']+"]")){
|
||||
var testposition = cy.$("node[entrezID ="+node.data['entrezID']+"]").renderedPosition();}
|
||||
if(!grouped_nodes.has(node.data["symbol"]) && testposition &&
|
||||
testposition['x'] > centroid['x']-(0.5*renderedWidth) && testposition['x'] < centroid['x']-(0.5*renderedWidth) + max_dist_x &&
|
||||
testposition['y'] > centroid['y']-(0.5*renderedWidth) && testposition['y'] < centroid['y']-(0.5*renderedWidth) + max_dist_y){
|
||||
for(var n of grouped_nodes){
|
||||
if(cy.$("node[entrez ="+n+"]")){
|
||||
var npos = cy.$("node[entrez ="+n+"]").position();}
|
||||
else if(cy.$("node[entrezID ="+n+"]")){
|
||||
var npos = cy.$("node[entrezID ="+n+"]").position();}
|
||||
merged_nodes_grouped.push(new Set([n]));
|
||||
}
|
||||
breaked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!breaked){
|
||||
drawRect(pos, centroid, renderedWidth, max_dist_x, max_dist_y, path,
|
||||
ctx, colorschemePaths)
|
||||
}
|
||||
}
|
||||
|
||||
// single node in square
|
||||
else if(grouped_nodes.size == 1){
|
||||
var k = [...grouped_nodes][0];
|
||||
let renderedPos_id = cy.$("node[entrezID ="+k+"]").position();
|
||||
let renderedPos = cy.$("node[entrez ="+k+"]").position();
|
||||
if(renderedPos_id){
|
||||
var position = renderedPos_id;
|
||||
var side = (cy.$("node[entrezID ="+k+"]").width()/Math.sqrt(2))*1.7;
|
||||
drawRect(pos, position, side, side, side, path, ctx, colorschemePaths);
|
||||
}
|
||||
else if(renderedPos){
|
||||
var position = renderedPos;
|
||||
var side = (cy.$("node[entrez ="+k+"]").width()/Math.sqrt(2))*1.7;
|
||||
drawRect(pos, position, side, side, side, path, ctx, colorschemePaths);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Pass the checkbox name to the function
|
||||
function getCheckedBoxes(chkboxName) {
|
||||
var checkboxes = chkboxName;
|
||||
var checkboxesChecked = [];
|
||||
// loop over them all
|
||||
for (var i=0; i<checkboxes.length; i++) {
|
||||
// And stick the checked ones onto an array...
|
||||
if (checkboxes[i].checked) {
|
||||
checkboxesChecked.push(checkboxes[i].value);
|
||||
}
|
||||
}
|
||||
// Return the array if it is non-empty, or null
|
||||
return checkboxesChecked.length > 0 ? checkboxesChecked : null;
|
||||
}
|
||||
|
||||
// make httprequest to kegg
|
||||
async function getPathwaysFromKEGG(name) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', "https://www.kegg.jp/entry/hsa:" + name);
|
||||
xhr.onload = function () {
|
||||
if (this.status >= 200 && this.status < 300) {
|
||||
resolve(xhr.response);
|
||||
} else {
|
||||
reject({
|
||||
status: this.status,
|
||||
statusText: xhr.statusText
|
||||
});
|
||||
}
|
||||
};
|
||||
xhr.onerror = function () {
|
||||
reject({
|
||||
status: this.status,
|
||||
statusText: xhr.statusText
|
||||
});
|
||||
};
|
||||
xhr.send();
|
||||
});
|
||||
}
|
||||
|
||||
// get neighbored nodes in same pathway for each node
|
||||
function getNeighbors(cp, cy){
|
||||
var g = 0;
|
||||
var nearest_groups = {};
|
||||
for(var i = 0; i < cp.length-1; i++){
|
||||
let renderedPos_i_id = cy.$("node[entrezID ="+cp[i]+"]").renderedPosition();
|
||||
let renderedPos_i = cy.$("node[entrez ="+cp[i]+"]").renderedPosition();
|
||||
var position = 0;
|
||||
if(renderedPos_i_id){
|
||||
position = renderedPos_i_id;
|
||||
}
|
||||
else if(renderedPos_i){
|
||||
position = renderedPos_i;
|
||||
}
|
||||
else{
|
||||
continue;
|
||||
}
|
||||
for(var j = 1; j < cp.length; j++){
|
||||
let renderedPos_j_id = cy.$("node[entrezID ="+cp[j]+"]").renderedPosition();
|
||||
let renderedPos_j = cy.$("node[entrez ="+cp[j]+"]").renderedPosition();
|
||||
var pos_m = 0;
|
||||
if(renderedPos_j_id){
|
||||
pos_m = renderedPos_j_id;
|
||||
}
|
||||
else if(renderedPos_j){
|
||||
pos_m = renderedPos_j;
|
||||
}
|
||||
else{
|
||||
continue;
|
||||
}
|
||||
let dist =
|
||||
Math.getDistance(position['x'], position['y'], pos_m['x'], pos_m['y']);
|
||||
if(dist < (0.1*cy.width()) && dist > 0){
|
||||
nearest_groups[g] = new Set()
|
||||
nearest_groups[g].add(cp[i]);
|
||||
nearest_groups[g].add(cp[j]);
|
||||
}
|
||||
}
|
||||
g += 1;
|
||||
}
|
||||
return nearest_groups;
|
||||
}
|
||||
|
||||
//calculate distance between two nodes
|
||||
Math.getDistance = function( x1, y1, x2, y2 ) {
|
||||
var xs = x2 - x1,
|
||||
ys = y2 - y1;
|
||||
xs *= xs;
|
||||
ys *= ys;
|
||||
return Math.sqrt( xs + ys );
|
||||
};
|
||||
|
||||
|
||||
// merge groups if they intersect
|
||||
function mergeNodeGroups(nearest_groups, cp_copy){
|
||||
var merged_nodes={};
|
||||
var m = 0;
|
||||
var nearest_groups_values = Object.values(nearest_groups);
|
||||
for(let group1 of nearest_groups_values){
|
||||
var new_group = new Set();
|
||||
for(let group2 of nearest_groups_values){
|
||||
let intersection = new Set([...group1].filter(x => group2.has(x)));
|
||||
if(intersection.size > 0){
|
||||
let union = new Set([...group1, ...group2]);
|
||||
new_group = new Set([...new_group, ...union]);
|
||||
cp_copy = new Set([...cp_copy].filter(x => !union.has(x)));
|
||||
}
|
||||
}
|
||||
var cur_group = Array.from(new_group);
|
||||
var added = false;
|
||||
|
||||
if(Object.keys(merged_nodes).length == 0){
|
||||
merged_nodes[m] = new Set();
|
||||
merged_nodes[m]= new_group;
|
||||
}
|
||||
else{
|
||||
for(let k of Object.keys(merged_nodes)){
|
||||
if(cur_group.some(x=> merged_nodes[k].has(x))){
|
||||
merged_nodes[k] = new Set([...merged_nodes[k], ...cur_group]);
|
||||
added = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!added){
|
||||
m += 1;
|
||||
merged_nodes[m] = new Set([...cur_group]);
|
||||
}
|
||||
}
|
||||
}
|
||||
for(let single of cp_copy){
|
||||
m+=1;
|
||||
merged_nodes[m]=new Set([single]);
|
||||
}
|
||||
|
||||
// check again if groups can be further uninionized
|
||||
var merged_nodes_new = {};
|
||||
var new_ind = 0;
|
||||
merged_nodes_new[new_ind] = new Set();
|
||||
for(let k of Object.keys(merged_nodes)){
|
||||
let intersection = new Set([...merged_nodes[k]]
|
||||
.filter(x => merged_nodes_new[new_ind].has(x)));
|
||||
if(intersection.size > 0){
|
||||
var union = new Set([...merged_nodes[k], ...merged_nodes_new[new_ind]]);
|
||||
merged_nodes_new[new_ind] = new Set([...union]);
|
||||
}
|
||||
else{
|
||||
if(!merged_nodes_new[new_ind].size == 0){
|
||||
new_ind += 1;
|
||||
merged_nodes_new[new_ind] = merged_nodes[k];
|
||||
}
|
||||
else{
|
||||
merged_nodes_new[new_ind] = merged_nodes[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
return merged_nodes_new;
|
||||
}
|
||||
|
||||
// draw a rectangle at given position with given sidelengths and colored by pathway
|
||||
function drawRect(pos, position, nodeWidth, side_x, side_y, path, ctx, colorschemePaths){
|
||||
ctx.beginPath();
|
||||
ctx.rect(position['x']-(0.5*nodeWidth), position['y']-
|
||||
(0.5*nodeWidth), side_x, side_y);
|
||||
ctx.fillStyle =colorschemePaths[path];
|
||||
ctx.fill();
|
||||
ctx.closePath();
|
||||
}
|
@ -0,0 +1,296 @@
|
||||
// map values to node color for GA
|
||||
function mapValuestoNodeColor(merge_graph, group, pieno, mergeMin, mergeMax, val){
|
||||
if(!shapeAttributes.includes(val)){
|
||||
// if(value < 0){
|
||||
merge_graph.style() // update the elements in the graph with the new style
|
||||
.selector('node')
|
||||
.style('color', 'black').update();
|
||||
merge_graph.style() // update the elements in the graph with the new style
|
||||
.selector('node['+val+' <0]')
|
||||
.style('color', 'black').update();
|
||||
merge_graph.style()
|
||||
.selector('node['+val+' <='+0.5*mergeMin+']')
|
||||
.style('color', 'white').update();
|
||||
merge_graph.style().selector('node[graph="'+group+'"]['+val+' <0]')
|
||||
.style('background-color', 'mapData('+val+','+ mergeMin+', 0, #006cf0, white)').update();
|
||||
merge_graph.style().selector('node[graph="both"]['+val+'_'+group+' <0]')
|
||||
.style('pie-'+pieno+'-background-color', 'mapData('+val+'_'+group+','+ mergeMin+', 0, #006cf0, white)')
|
||||
.style('pie-'+pieno+'-background-size','50').update();
|
||||
// else if(value > 0){
|
||||
merge_graph.style()
|
||||
.selector('node['+val+' >0]')
|
||||
.style('color', 'black').update();
|
||||
merge_graph.style()
|
||||
.selector('node['+val+' >='+0.5*mergeMax+']')
|
||||
.style('color', 'white').update();
|
||||
merge_graph.style().selector('node[graph="'+group+'"]['+val+' >0]')
|
||||
.style('background-color', 'mapData('+val+', 0,'+ mergeMax+', white, #d50000)').update();
|
||||
merge_graph.style().selector('node[graph="both"]['+val+'_'+group+' >0]')
|
||||
.style('pie-'+pieno+'-background-color', 'mapData('+val+'_'+group+', 0,'+ mergeMax+', white, #d50000)')
|
||||
.style('pie-'+pieno+'-background-size','50').update();
|
||||
// else if(value == 0){
|
||||
merge_graph.style().selector('node[graph="'+group+'"]['+val+' =0]')
|
||||
.style('background-color','white').update();
|
||||
merge_graph.style() // update the elements in the graph with the new style
|
||||
.selector('node['+val+' = 0]')
|
||||
.style('color', 'black').update();
|
||||
}
|
||||
else{
|
||||
// if(value false){
|
||||
merge_graph.style() // update the elements in the graph with the new style
|
||||
.selector('node')
|
||||
.style('color', 'black').update();
|
||||
merge_graph.style() // update the elements in the graph with the new style
|
||||
.selector('node['+val+']')
|
||||
.style('color', 'white').update();
|
||||
|
||||
merge_graph.style().selector('node[graph="'+group+'"]['+val+' = "false"]')
|
||||
.style('background-color', '#006cf0').update();
|
||||
merge_graph.style().selector('node[graph="both"]['+val+'_'+group+' = "false"]')
|
||||
.style('pie-'+pieno+'-background-color', '#006cf0')
|
||||
.style('pie-'+pieno+'-background-size','50').update();
|
||||
// else if(value true){
|
||||
merge_graph.style().selector('node[graph="'+group+'"]['+val+' = "true"]')
|
||||
.style('background-color', '#d50000').update();
|
||||
merge_graph.style().selector('node[graph="both"]['+val+'_'+group+' = "true"]')
|
||||
.style('pie-'+pieno+'-background-color', '#d50000')
|
||||
.style('pie-'+pieno+'-background-size','50').update();
|
||||
}
|
||||
merge_graph.style().selector('node[graph="both"]')
|
||||
.style('border-style','double').update();
|
||||
merge_graph.$('node[id = "l1"]').style("border-width", 1);
|
||||
|
||||
}
|
||||
|
||||
// mousover shows value of node
|
||||
function mergeMousover(merge_graph, GA, nodeVal, filenameSplit){
|
||||
merge_graph.elements('node[graph="'+GA+'"]').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
if(!isNaN(parseFloat(this.data(nodeVal)))){
|
||||
return '<b>'+nodeVal +' ' +filenameSplit +'</b>: ' + parseFloat(this.data(nodeVal)).toFixed(2) ; } //numbers
|
||||
else{
|
||||
return '<b>'+nodeVal +'</b>: '+ this.data(nodeVal) ; //bools
|
||||
}
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
}
|
||||
});
|
||||
merge_graph.elements('edge').qtip({ // show node attibute value by mouseover
|
||||
show: {
|
||||
event: 'mouseover',
|
||||
solo: true,
|
||||
},
|
||||
content: {text : function(){
|
||||
return '<b>'+this.data()['interaction'] +'</b> '
|
||||
}},
|
||||
position: {
|
||||
my: 'top center',
|
||||
at: 'bottom center'
|
||||
},
|
||||
style: {
|
||||
classes: 'qtip-bootstrap',
|
||||
tip: {
|
||||
width: 8,
|
||||
height: 8
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
Uses canvas.measureText to compute and return the width of the given text of given font in pixels.
|
||||
*/
|
||||
function getNodeValueRange(nodes, val){
|
||||
const nodesFilteredNaN = nodes.filter(node => node.data[val]);
|
||||
const nodesFilteredNaNg1 = nodes.filter(node => node.data[val+'_g1']);
|
||||
const nodesFilteredNaNg2 = nodes.filter(node => node.data[val+'_g2']);
|
||||
var valArray = [];
|
||||
for(var n of nodesFilteredNaN){
|
||||
valArray.push(parseFloat(n.data[val]))
|
||||
}
|
||||
for(var n of nodesFilteredNaNg1){
|
||||
valArray.push(parseFloat(n.data[val+'_g1']))
|
||||
}
|
||||
for(var n of nodesFilteredNaNg2){
|
||||
valArray.push(parseFloat(n.data[val+'_g2']))
|
||||
}
|
||||
const nodesMin = parseFloat(Math.min(...valArray)).toFixed(2);
|
||||
const nodesMax = parseFloat(Math.max(...valArray)).toFixed(2);
|
||||
return [nodesMin, nodesMax];
|
||||
}
|
||||
|
||||
var unionNodes;
|
||||
function getmergedGraph(nodesL, nodesR, edgesL, edgesR, interactionTypes, edgesToMerge, nodeVal){
|
||||
var nodes1 = nodesL;
|
||||
var nodes2 = nodesR;
|
||||
var edges1 = edgesL;
|
||||
var edges2 = edgesR;
|
||||
// add length of nodes1 to node ids of nodes2 and according edges to make them unique
|
||||
for(var i = 0; i < nodes2.length; i++){
|
||||
var n = nodes2[i].data;
|
||||
if(n.graph == "g2"){
|
||||
if(n.id != undefined){
|
||||
var old_id = n.id
|
||||
nodes2[i].data.id = "n"+ (Number(n.id.replace( /^\D+/g, ''))+nodes1.length);
|
||||
for(var j=0; j < edges2.length; j++){
|
||||
if(edges2[j].data.source == old_id){
|
||||
edges2[j].data.source = nodes2[i].data.id;
|
||||
edges2[j].data.id = edges2[j].data.source+edges2[j].data.target;
|
||||
|
||||
}
|
||||
if(edges2[j].data.target == old_id){
|
||||
edges2[j].data.target = nodes2[i].data.id;
|
||||
edges2[j].data.id = edges2[j].data.source+edges2[j].data.target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var mergedNodes = [];
|
||||
for(var i = 0; i < nodes1.length; i++){
|
||||
var n1 = nodes1[i];
|
||||
for(var j = 0; j < nodes2.length; j++){
|
||||
var n2 = nodes2[j];
|
||||
if(n1.data.symbol == n2.data.symbol || n1.data.name == n2.data.name){
|
||||
mergedNodes[i] = n1;
|
||||
mergedNodes[i].data.graph = "both";
|
||||
for(let d in n1.data){
|
||||
if(!isNaN(n1.data[d]) || !isNaN(n2.data[d]) || n1.data[d] === "true" || n2.data[d] === "true" || n1.data[d] === "false" || n2.data[d] === "false"){
|
||||
if(d != "val"){
|
||||
mergedNodes[i].data[d+"_g1"] = n1.data[d];
|
||||
mergedNodes[i].data[d+"_g2"] = n2.data[d];
|
||||
}
|
||||
}
|
||||
}
|
||||
for(var k=0; k < edges2.length; k++){
|
||||
if(edges2[k].data.source == n2.data.id){
|
||||
edges2[k].data.source = n1.data.id;
|
||||
edges2[k].data.id = edges2[k].data.source+edges2[k].data.target;
|
||||
|
||||
}
|
||||
if(edges2[k].data.target == n2.data.id){
|
||||
edges2[k].data.target = n1.data.id;
|
||||
edges2[k].data.id = edges2[k].data.source+edges2[k].data.target;
|
||||
}
|
||||
}
|
||||
nodes2.splice(j,1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(mergedNodes[i] == undefined|| mergedNodes[i].data.id != n1.data.id){
|
||||
mergedNodes.push(n1);
|
||||
}
|
||||
}
|
||||
for(var l = 0; l < nodes2.length; l++){
|
||||
mergedNodes.push(nodes2[l])
|
||||
}
|
||||
var legendNode = {};
|
||||
legendNode.data = {};
|
||||
legendNode.data.id = "l1";
|
||||
legendNode.data.symbol = "legend";
|
||||
mergedNodes.push(legendNode);
|
||||
|
||||
var g1Legend = {};
|
||||
g1Legend.data={};
|
||||
g1Legend.data.id = "g1";
|
||||
g1Legend.data.graph = "g1";
|
||||
g1Legend.data.symbol = leftID;
|
||||
mergedNodes.push(g1Legend);
|
||||
var g2Legend = {};
|
||||
g2Legend.data={};
|
||||
g2Legend.data.id = "g2";
|
||||
g2Legend.data.graph = "g2";
|
||||
g2Legend.data.symbol = rightID;
|
||||
mergedNodes.push(g2Legend);
|
||||
|
||||
// mergedArray have duplicates, lets remove the duplicates using Set
|
||||
let set = new Set();
|
||||
unionNodes = Array.from(mergedNodes.filter(item => {
|
||||
if(item.data.symbol){
|
||||
if (!set.has(item.data.symbol)) {
|
||||
set.add(item.data.symbol);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else{
|
||||
if (!set.has(item.data.name)) {
|
||||
set.add(item.data.name);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}, set));
|
||||
const mergedEdges = [...edges1, ...edges2];
|
||||
for(var i = 0; i<mergedEdges.length; i++){
|
||||
var n1 = mergedEdges[i];
|
||||
for(var j =1; j < mergedEdges.length; j++){
|
||||
var n2 = mergedEdges[j];
|
||||
if(n1.data.id == n2.data.id && n1.data.graph != n2.data.graph){
|
||||
mergedEdges[i].data.graph = "both"
|
||||
mergedEdges.splice(j, 1);
|
||||
j--;
|
||||
}
|
||||
}
|
||||
}
|
||||
// mergedArray have duplicates, lets remove the duplicates using Set
|
||||
set = new Set();
|
||||
let unionEdges = Array.from(mergedEdges.filter(item => {
|
||||
if (!set.has(item.data.id)) {
|
||||
set.add(item.data.id);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}, set));
|
||||
var minMax = getNodeValueRange(unionNodes, nodeVal);
|
||||
mergeMin = minMax[0];
|
||||
mergeMax = minMax[1];
|
||||
createInteractionLegend(interactionTypes, merge_graph, edgesToMerge);
|
||||
if(!document.getElementById('heatmap_shapes')){
|
||||
var shapelegend = document.createElement("div")
|
||||
shapelegend.id = "heatmap_shapes";
|
||||
shapelegend.visibility = "visible";
|
||||
document.getElementById("legend_merge").appendChild(shapelegend);
|
||||
document.getElementById("heatmap_shapes")
|
||||
}
|
||||
return [unionNodes, unionEdges];
|
||||
};
|
||||
|
||||
var merge_graph;
|
||||
|
||||
function merge(){
|
||||
document.getElementById('arrows').innerHTML = "";
|
||||
document.getElementById('searchgene').style.visibility = "visible";
|
||||
document.getElementById('searchbutton').style.visibility = "visible";
|
||||
}
|
||||
|
||||
async function clickMerge(files,val, example){
|
||||
var leftID = document.getElementById('leftID').innerHTML;
|
||||
var rightID = document.getElementById('rightID').innerHTML;
|
||||
if(example){
|
||||
var objectURL1 =files[0]["name"];
|
||||
var objectURL2 = files[1]["name"];
|
||||
}
|
||||
else{
|
||||
var objectURL1 = URL.createObjectURL(files[0]);
|
||||
var objectURL2 = URL.createObjectURL(files[1]);
|
||||
}
|
||||
|
||||
window.open('/BioGraphVisart/merge?leftID='+leftID+'&rightID='+rightID +'&file1='+objectURL1+'&file2='+objectURL2+'&nodeVal='+val+'&example='+example);
|
||||
}
|
||||
|
1
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/.bin/mime
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
../mime/cli.js
|
1
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/.bin/r.js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
../requirejs/bin/r.js
|
1
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/.bin/r_js
generated
vendored
Normal file
@ -0,0 +1 @@
|
||||
../requirejs/bin/r.js
|
236
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/accepts/HISTORY.md
generated
vendored
Normal file
@ -0,0 +1,236 @@
|
||||
1.3.7 / 2019-04-29
|
||||
==================
|
||||
|
||||
* deps: negotiator@0.6.2
|
||||
- Fix sorting charset, encoding, and language with extra parameters
|
||||
|
||||
1.3.6 / 2019-04-28
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.24
|
||||
- deps: mime-db@~1.40.0
|
||||
|
||||
1.3.5 / 2018-02-28
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.18
|
||||
- deps: mime-db@~1.33.0
|
||||
|
||||
1.3.4 / 2017-08-22
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.16
|
||||
- deps: mime-db@~1.29.0
|
||||
|
||||
1.3.3 / 2016-05-02
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.11
|
||||
- deps: mime-db@~1.23.0
|
||||
* deps: negotiator@0.6.1
|
||||
- perf: improve `Accept` parsing speed
|
||||
- perf: improve `Accept-Charset` parsing speed
|
||||
- perf: improve `Accept-Encoding` parsing speed
|
||||
- perf: improve `Accept-Language` parsing speed
|
||||
|
||||
1.3.2 / 2016-03-08
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.10
|
||||
- Fix extension of `application/dash+xml`
|
||||
- Update primary extension for `audio/mp4`
|
||||
- deps: mime-db@~1.22.0
|
||||
|
||||
1.3.1 / 2016-01-19
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.9
|
||||
- deps: mime-db@~1.21.0
|
||||
|
||||
1.3.0 / 2015-09-29
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.7
|
||||
- deps: mime-db@~1.19.0
|
||||
* deps: negotiator@0.6.0
|
||||
- Fix including type extensions in parameters in `Accept` parsing
|
||||
- Fix parsing `Accept` parameters with quoted equals
|
||||
- Fix parsing `Accept` parameters with quoted semicolons
|
||||
- Lazy-load modules from main entry point
|
||||
- perf: delay type concatenation until needed
|
||||
- perf: enable strict mode
|
||||
- perf: hoist regular expressions
|
||||
- perf: remove closures getting spec properties
|
||||
- perf: remove a closure from media type parsing
|
||||
- perf: remove property delete from media type parsing
|
||||
|
||||
1.2.13 / 2015-09-06
|
||||
===================
|
||||
|
||||
* deps: mime-types@~2.1.6
|
||||
- deps: mime-db@~1.18.0
|
||||
|
||||
1.2.12 / 2015-07-30
|
||||
===================
|
||||
|
||||
* deps: mime-types@~2.1.4
|
||||
- deps: mime-db@~1.16.0
|
||||
|
||||
1.2.11 / 2015-07-16
|
||||
===================
|
||||
|
||||
* deps: mime-types@~2.1.3
|
||||
- deps: mime-db@~1.15.0
|
||||
|
||||
1.2.10 / 2015-07-01
|
||||
===================
|
||||
|
||||
* deps: mime-types@~2.1.2
|
||||
- deps: mime-db@~1.14.0
|
||||
|
||||
1.2.9 / 2015-06-08
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.1
|
||||
- perf: fix deopt during mapping
|
||||
|
||||
1.2.8 / 2015-06-07
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.1.0
|
||||
- deps: mime-db@~1.13.0
|
||||
* perf: avoid argument reassignment & argument slice
|
||||
* perf: avoid negotiator recursive construction
|
||||
* perf: enable strict mode
|
||||
* perf: remove unnecessary bitwise operator
|
||||
|
||||
1.2.7 / 2015-05-10
|
||||
==================
|
||||
|
||||
* deps: negotiator@0.5.3
|
||||
- Fix media type parameter matching to be case-insensitive
|
||||
|
||||
1.2.6 / 2015-05-07
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.11
|
||||
- deps: mime-db@~1.9.1
|
||||
* deps: negotiator@0.5.2
|
||||
- Fix comparing media types with quoted values
|
||||
- Fix splitting media types with quoted commas
|
||||
|
||||
1.2.5 / 2015-03-13
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.10
|
||||
- deps: mime-db@~1.8.0
|
||||
|
||||
1.2.4 / 2015-02-14
|
||||
==================
|
||||
|
||||
* Support Node.js 0.6
|
||||
* deps: mime-types@~2.0.9
|
||||
- deps: mime-db@~1.7.0
|
||||
* deps: negotiator@0.5.1
|
||||
- Fix preference sorting to be stable for long acceptable lists
|
||||
|
||||
1.2.3 / 2015-01-31
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.8
|
||||
- deps: mime-db@~1.6.0
|
||||
|
||||
1.2.2 / 2014-12-30
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.7
|
||||
- deps: mime-db@~1.5.0
|
||||
|
||||
1.2.1 / 2014-12-30
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.5
|
||||
- deps: mime-db@~1.3.1
|
||||
|
||||
1.2.0 / 2014-12-19
|
||||
==================
|
||||
|
||||
* deps: negotiator@0.5.0
|
||||
- Fix list return order when large accepted list
|
||||
- Fix missing identity encoding when q=0 exists
|
||||
- Remove dynamic building of Negotiator class
|
||||
|
||||
1.1.4 / 2014-12-10
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.4
|
||||
- deps: mime-db@~1.3.0
|
||||
|
||||
1.1.3 / 2014-11-09
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.3
|
||||
- deps: mime-db@~1.2.0
|
||||
|
||||
1.1.2 / 2014-10-14
|
||||
==================
|
||||
|
||||
* deps: negotiator@0.4.9
|
||||
- Fix error when media type has invalid parameter
|
||||
|
||||
1.1.1 / 2014-09-28
|
||||
==================
|
||||
|
||||
* deps: mime-types@~2.0.2
|
||||
- deps: mime-db@~1.1.0
|
||||
* deps: negotiator@0.4.8
|
||||
- Fix all negotiations to be case-insensitive
|
||||
- Stable sort preferences of same quality according to client order
|
||||
|
||||
1.1.0 / 2014-09-02
|
||||
==================
|
||||
|
||||
* update `mime-types`
|
||||
|
||||
1.0.7 / 2014-07-04
|
||||
==================
|
||||
|
||||
* Fix wrong type returned from `type` when match after unknown extension
|
||||
|
||||
1.0.6 / 2014-06-24
|
||||
==================
|
||||
|
||||
* deps: negotiator@0.4.7
|
||||
|
||||
1.0.5 / 2014-06-20
|
||||
==================
|
||||
|
||||
* fix crash when unknown extension given
|
||||
|
||||
1.0.4 / 2014-06-19
|
||||
==================
|
||||
|
||||
* use `mime-types`
|
||||
|
||||
1.0.3 / 2014-06-11
|
||||
==================
|
||||
|
||||
* deps: negotiator@0.4.6
|
||||
- Order by specificity when quality is the same
|
||||
|
||||
1.0.2 / 2014-05-29
|
||||
==================
|
||||
|
||||
* Fix interpretation when header not in request
|
||||
* deps: pin negotiator@0.4.5
|
||||
|
||||
1.0.1 / 2014-01-18
|
||||
==================
|
||||
|
||||
* Identity encoding isn't always acceptable
|
||||
* deps: negotiator@~0.4.0
|
||||
|
||||
1.0.0 / 2013-12-27
|
||||
==================
|
||||
|
||||
* Genesis
|
23
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/accepts/LICENSE
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
|
||||
Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
142
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/accepts/README.md
generated
vendored
Normal file
@ -0,0 +1,142 @@
|
||||
# accepts
|
||||
|
||||
[![NPM Version][npm-version-image]][npm-url]
|
||||
[![NPM Downloads][npm-downloads-image]][npm-url]
|
||||
[![Node.js Version][node-version-image]][node-version-url]
|
||||
[![Build Status][travis-image]][travis-url]
|
||||
[![Test Coverage][coveralls-image]][coveralls-url]
|
||||
|
||||
Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator).
|
||||
Extracted from [koa](https://www.npmjs.com/package/koa) for general use.
|
||||
|
||||
In addition to negotiator, it allows:
|
||||
|
||||
- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])`
|
||||
as well as `('text/html', 'application/json')`.
|
||||
- Allows type shorthands such as `json`.
|
||||
- Returns `false` when no types match
|
||||
- Treats non-existent headers as `*`
|
||||
|
||||
## Installation
|
||||
|
||||
This is a [Node.js](https://nodejs.org/en/) module available through the
|
||||
[npm registry](https://www.npmjs.com/). Installation is done using the
|
||||
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
|
||||
|
||||
```sh
|
||||
$ npm install accepts
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
<!-- eslint-disable no-unused-vars -->
|
||||
|
||||
```js
|
||||
var accepts = require('accepts')
|
||||
```
|
||||
|
||||
### accepts(req)
|
||||
|
||||
Create a new `Accepts` object for the given `req`.
|
||||
|
||||
#### .charset(charsets)
|
||||
|
||||
Return the first accepted charset. If nothing in `charsets` is accepted,
|
||||
then `false` is returned.
|
||||
|
||||
#### .charsets()
|
||||
|
||||
Return the charsets that the request accepts, in the order of the client's
|
||||
preference (most preferred first).
|
||||
|
||||
#### .encoding(encodings)
|
||||
|
||||
Return the first accepted encoding. If nothing in `encodings` is accepted,
|
||||
then `false` is returned.
|
||||
|
||||
#### .encodings()
|
||||
|
||||
Return the encodings that the request accepts, in the order of the client's
|
||||
preference (most preferred first).
|
||||
|
||||
#### .language(languages)
|
||||
|
||||
Return the first accepted language. If nothing in `languages` is accepted,
|
||||
then `false` is returned.
|
||||
|
||||
#### .languages()
|
||||
|
||||
Return the languages that the request accepts, in the order of the client's
|
||||
preference (most preferred first).
|
||||
|
||||
#### .type(types)
|
||||
|
||||
Return the first accepted type (and it is returned as the same text as what
|
||||
appears in the `types` array). If nothing in `types` is accepted, then `false`
|
||||
is returned.
|
||||
|
||||
The `types` array can contain full MIME types or file extensions. Any value
|
||||
that is not a full MIME types is passed to `require('mime-types').lookup`.
|
||||
|
||||
#### .types()
|
||||
|
||||
Return the types that the request accepts, in the order of the client's
|
||||
preference (most preferred first).
|
||||
|
||||
## Examples
|
||||
|
||||
### Simple type negotiation
|
||||
|
||||
This simple example shows how to use `accepts` to return a different typed
|
||||
respond body based on what the client wants to accept. The server lists it's
|
||||
preferences in order and will get back the best match between the client and
|
||||
server.
|
||||
|
||||
```js
|
||||
var accepts = require('accepts')
|
||||
var http = require('http')
|
||||
|
||||
function app (req, res) {
|
||||
var accept = accepts(req)
|
||||
|
||||
// the order of this list is significant; should be server preferred order
|
||||
switch (accept.type(['json', 'html'])) {
|
||||
case 'json':
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
res.write('{"hello":"world!"}')
|
||||
break
|
||||
case 'html':
|
||||
res.setHeader('Content-Type', 'text/html')
|
||||
res.write('<b>hello, world!</b>')
|
||||
break
|
||||
default:
|
||||
// the fallback is text/plain, so no need to specify it above
|
||||
res.setHeader('Content-Type', 'text/plain')
|
||||
res.write('hello, world!')
|
||||
break
|
||||
}
|
||||
|
||||
res.end()
|
||||
}
|
||||
|
||||
http.createServer(app).listen(3000)
|
||||
```
|
||||
|
||||
You can test this out with the cURL program:
|
||||
```sh
|
||||
curl -I -H'Accept: text/html' http://localhost:3000/
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
|
||||
[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master
|
||||
[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master
|
||||
[node-version-image]: https://badgen.net/npm/node/accepts
|
||||
[node-version-url]: https://nodejs.org/en/download
|
||||
[npm-downloads-image]: https://badgen.net/npm/dm/accepts
|
||||
[npm-url]: https://npmjs.org/package/accepts
|
||||
[npm-version-image]: https://badgen.net/npm/v/accepts
|
||||
[travis-image]: https://badgen.net/travis/jshttp/accepts/master
|
||||
[travis-url]: https://travis-ci.org/jshttp/accepts
|
238
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/accepts/index.js
generated
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
/*!
|
||||
* accepts
|
||||
* Copyright(c) 2014 Jonathan Ong
|
||||
* Copyright(c) 2015 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var Negotiator = require('negotiator')
|
||||
var mime = require('mime-types')
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
* @public
|
||||
*/
|
||||
|
||||
module.exports = Accepts
|
||||
|
||||
/**
|
||||
* Create a new Accepts object for the given req.
|
||||
*
|
||||
* @param {object} req
|
||||
* @public
|
||||
*/
|
||||
|
||||
function Accepts (req) {
|
||||
if (!(this instanceof Accepts)) {
|
||||
return new Accepts(req)
|
||||
}
|
||||
|
||||
this.headers = req.headers
|
||||
this.negotiator = new Negotiator(req)
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given `type(s)` is acceptable, returning
|
||||
* the best match when true, otherwise `undefined`, in which
|
||||
* case you should respond with 406 "Not Acceptable".
|
||||
*
|
||||
* The `type` value may be a single mime type string
|
||||
* such as "application/json", the extension name
|
||||
* such as "json" or an array `["json", "html", "text/plain"]`. When a list
|
||||
* or array is given the _best_ match, if any is returned.
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
* // Accept: text/html
|
||||
* this.types('html');
|
||||
* // => "html"
|
||||
*
|
||||
* // Accept: text/*, application/json
|
||||
* this.types('html');
|
||||
* // => "html"
|
||||
* this.types('text/html');
|
||||
* // => "text/html"
|
||||
* this.types('json', 'text');
|
||||
* // => "json"
|
||||
* this.types('application/json');
|
||||
* // => "application/json"
|
||||
*
|
||||
* // Accept: text/*, application/json
|
||||
* this.types('image/png');
|
||||
* this.types('png');
|
||||
* // => undefined
|
||||
*
|
||||
* // Accept: text/*;q=.5, application/json
|
||||
* this.types(['html', 'json']);
|
||||
* this.types('html', 'json');
|
||||
* // => "json"
|
||||
*
|
||||
* @param {String|Array} types...
|
||||
* @return {String|Array|Boolean}
|
||||
* @public
|
||||
*/
|
||||
|
||||
Accepts.prototype.type =
|
||||
Accepts.prototype.types = function (types_) {
|
||||
var types = types_
|
||||
|
||||
// support flattened arguments
|
||||
if (types && !Array.isArray(types)) {
|
||||
types = new Array(arguments.length)
|
||||
for (var i = 0; i < types.length; i++) {
|
||||
types[i] = arguments[i]
|
||||
}
|
||||
}
|
||||
|
||||
// no types, return all requested types
|
||||
if (!types || types.length === 0) {
|
||||
return this.negotiator.mediaTypes()
|
||||
}
|
||||
|
||||
// no accept header, return first given type
|
||||
if (!this.headers.accept) {
|
||||
return types[0]
|
||||
}
|
||||
|
||||
var mimes = types.map(extToMime)
|
||||
var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))
|
||||
var first = accepts[0]
|
||||
|
||||
return first
|
||||
? types[mimes.indexOf(first)]
|
||||
: false
|
||||
}
|
||||
|
||||
/**
|
||||
* Return accepted encodings or best fit based on `encodings`.
|
||||
*
|
||||
* Given `Accept-Encoding: gzip, deflate`
|
||||
* an array sorted by quality is returned:
|
||||
*
|
||||
* ['gzip', 'deflate']
|
||||
*
|
||||
* @param {String|Array} encodings...
|
||||
* @return {String|Array}
|
||||
* @public
|
||||
*/
|
||||
|
||||
Accepts.prototype.encoding =
|
||||
Accepts.prototype.encodings = function (encodings_) {
|
||||
var encodings = encodings_
|
||||
|
||||
// support flattened arguments
|
||||
if (encodings && !Array.isArray(encodings)) {
|
||||
encodings = new Array(arguments.length)
|
||||
for (var i = 0; i < encodings.length; i++) {
|
||||
encodings[i] = arguments[i]
|
||||
}
|
||||
}
|
||||
|
||||
// no encodings, return all requested encodings
|
||||
if (!encodings || encodings.length === 0) {
|
||||
return this.negotiator.encodings()
|
||||
}
|
||||
|
||||
return this.negotiator.encodings(encodings)[0] || false
|
||||
}
|
||||
|
||||
/**
|
||||
* Return accepted charsets or best fit based on `charsets`.
|
||||
*
|
||||
* Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`
|
||||
* an array sorted by quality is returned:
|
||||
*
|
||||
* ['utf-8', 'utf-7', 'iso-8859-1']
|
||||
*
|
||||
* @param {String|Array} charsets...
|
||||
* @return {String|Array}
|
||||
* @public
|
||||
*/
|
||||
|
||||
Accepts.prototype.charset =
|
||||
Accepts.prototype.charsets = function (charsets_) {
|
||||
var charsets = charsets_
|
||||
|
||||
// support flattened arguments
|
||||
if (charsets && !Array.isArray(charsets)) {
|
||||
charsets = new Array(arguments.length)
|
||||
for (var i = 0; i < charsets.length; i++) {
|
||||
charsets[i] = arguments[i]
|
||||
}
|
||||
}
|
||||
|
||||
// no charsets, return all requested charsets
|
||||
if (!charsets || charsets.length === 0) {
|
||||
return this.negotiator.charsets()
|
||||
}
|
||||
|
||||
return this.negotiator.charsets(charsets)[0] || false
|
||||
}
|
||||
|
||||
/**
|
||||
* Return accepted languages or best fit based on `langs`.
|
||||
*
|
||||
* Given `Accept-Language: en;q=0.8, es, pt`
|
||||
* an array sorted by quality is returned:
|
||||
*
|
||||
* ['es', 'pt', 'en']
|
||||
*
|
||||
* @param {String|Array} langs...
|
||||
* @return {Array|String}
|
||||
* @public
|
||||
*/
|
||||
|
||||
Accepts.prototype.lang =
|
||||
Accepts.prototype.langs =
|
||||
Accepts.prototype.language =
|
||||
Accepts.prototype.languages = function (languages_) {
|
||||
var languages = languages_
|
||||
|
||||
// support flattened arguments
|
||||
if (languages && !Array.isArray(languages)) {
|
||||
languages = new Array(arguments.length)
|
||||
for (var i = 0; i < languages.length; i++) {
|
||||
languages[i] = arguments[i]
|
||||
}
|
||||
}
|
||||
|
||||
// no languages, return all requested languages
|
||||
if (!languages || languages.length === 0) {
|
||||
return this.negotiator.languages()
|
||||
}
|
||||
|
||||
return this.negotiator.languages(languages)[0] || false
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert extnames to mime.
|
||||
*
|
||||
* @param {String} type
|
||||
* @return {String}
|
||||
* @private
|
||||
*/
|
||||
|
||||
function extToMime (type) {
|
||||
return type.indexOf('/') === -1
|
||||
? mime.lookup(type)
|
||||
: type
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if mime is valid.
|
||||
*
|
||||
* @param {String} type
|
||||
* @return {String}
|
||||
* @private
|
||||
*/
|
||||
|
||||
function validMime (type) {
|
||||
return typeof type === 'string'
|
||||
}
|
86
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/accepts/package.json
generated
vendored
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
"_from": "accepts@~1.3.7",
|
||||
"_id": "accepts@1.3.7",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
|
||||
"_location": "/accepts",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "accepts@~1.3.7",
|
||||
"name": "accepts",
|
||||
"escapedName": "accepts",
|
||||
"rawSpec": "~1.3.7",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "~1.3.7"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/express"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
|
||||
"_shasum": "531bc726517a3b2b41f850021c6cc15eaab507cd",
|
||||
"_spec": "accepts@~1.3.7",
|
||||
"_where": "/Users/mirjam/Documents/subgraphVisualization/BioGraphVisart/static/scripts/node_modules/express",
|
||||
"bugs": {
|
||||
"url": "https://github.com/jshttp/accepts/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"contributors": [
|
||||
{
|
||||
"name": "Douglas Christopher Wilson",
|
||||
"email": "doug@somethingdoug.com"
|
||||
},
|
||||
{
|
||||
"name": "Jonathan Ong",
|
||||
"email": "me@jongleberry.com",
|
||||
"url": "http://jongleberry.com"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"mime-types": "~2.1.24",
|
||||
"negotiator": "0.6.2"
|
||||
},
|
||||
"deprecated": false,
|
||||
"description": "Higher-level content negotiation",
|
||||
"devDependencies": {
|
||||
"deep-equal": "1.0.1",
|
||||
"eslint": "5.16.0",
|
||||
"eslint-config-standard": "12.0.0",
|
||||
"eslint-plugin-import": "2.17.2",
|
||||
"eslint-plugin-markdown": "1.0.0",
|
||||
"eslint-plugin-node": "8.0.1",
|
||||
"eslint-plugin-promise": "4.1.1",
|
||||
"eslint-plugin-standard": "4.0.0",
|
||||
"mocha": "6.1.4",
|
||||
"nyc": "14.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
},
|
||||
"files": [
|
||||
"LICENSE",
|
||||
"HISTORY.md",
|
||||
"index.js"
|
||||
],
|
||||
"homepage": "https://github.com/jshttp/accepts#readme",
|
||||
"keywords": [
|
||||
"content",
|
||||
"negotiation",
|
||||
"accept",
|
||||
"accepts"
|
||||
],
|
||||
"license": "MIT",
|
||||
"name": "accepts",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/jshttp/accepts.git"
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "eslint --plugin markdown --ext js,md .",
|
||||
"test": "mocha --reporter spec --check-leaks --bail test/",
|
||||
"test-cov": "nyc --reporter=html --reporter=text npm test",
|
||||
"test-travis": "nyc --reporter=text npm test"
|
||||
},
|
||||
"version": "1.3.7"
|
||||
}
|
21
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/array-flatten/LICENSE
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
43
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/array-flatten/README.md
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
# Array Flatten
|
||||
|
||||
[![NPM version][npm-image]][npm-url]
|
||||
[![NPM downloads][downloads-image]][downloads-url]
|
||||
[![Build status][travis-image]][travis-url]
|
||||
[![Test coverage][coveralls-image]][coveralls-url]
|
||||
|
||||
> Flatten an array of nested arrays into a single flat array. Accepts an optional depth.
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
npm install array-flatten --save
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
var flatten = require('array-flatten')
|
||||
|
||||
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9])
|
||||
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
|
||||
flatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)
|
||||
//=> [1, 2, 3, [4, [5], 6], 7, 8, 9]
|
||||
|
||||
(function () {
|
||||
flatten(arguments) //=> [1, 2, 3]
|
||||
})(1, [2, 3])
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
[npm-image]: https://img.shields.io/npm/v/array-flatten.svg?style=flat
|
||||
[npm-url]: https://npmjs.org/package/array-flatten
|
||||
[downloads-image]: https://img.shields.io/npm/dm/array-flatten.svg?style=flat
|
||||
[downloads-url]: https://npmjs.org/package/array-flatten
|
||||
[travis-image]: https://img.shields.io/travis/blakeembrey/array-flatten.svg?style=flat
|
||||
[travis-url]: https://travis-ci.org/blakeembrey/array-flatten
|
||||
[coveralls-image]: https://img.shields.io/coveralls/blakeembrey/array-flatten.svg?style=flat
|
||||
[coveralls-url]: https://coveralls.io/r/blakeembrey/array-flatten?branch=master
|
64
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/array-flatten/array-flatten.js
generated
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Expose `arrayFlatten`.
|
||||
*/
|
||||
module.exports = arrayFlatten
|
||||
|
||||
/**
|
||||
* Recursive flatten function with depth.
|
||||
*
|
||||
* @param {Array} array
|
||||
* @param {Array} result
|
||||
* @param {Number} depth
|
||||
* @return {Array}
|
||||
*/
|
||||
function flattenWithDepth (array, result, depth) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
var value = array[i]
|
||||
|
||||
if (depth > 0 && Array.isArray(value)) {
|
||||
flattenWithDepth(value, result, depth - 1)
|
||||
} else {
|
||||
result.push(value)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursive flatten function. Omitting depth is slightly faster.
|
||||
*
|
||||
* @param {Array} array
|
||||
* @param {Array} result
|
||||
* @return {Array}
|
||||
*/
|
||||
function flattenForever (array, result) {
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
var value = array[i]
|
||||
|
||||
if (Array.isArray(value)) {
|
||||
flattenForever(value, result)
|
||||
} else {
|
||||
result.push(value)
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* Flatten an array, with the ability to define a depth.
|
||||
*
|
||||
* @param {Array} array
|
||||
* @param {Number} depth
|
||||
* @return {Array}
|
||||
*/
|
||||
function arrayFlatten (array, depth) {
|
||||
if (depth == null) {
|
||||
return flattenForever(array, [])
|
||||
}
|
||||
|
||||
return flattenWithDepth(array, [], depth)
|
||||
}
|
64
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/array-flatten/package.json
generated
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
{
|
||||
"_from": "array-flatten@1.1.1",
|
||||
"_id": "array-flatten@1.1.1",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
|
||||
"_location": "/array-flatten",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "version",
|
||||
"registry": true,
|
||||
"raw": "array-flatten@1.1.1",
|
||||
"name": "array-flatten",
|
||||
"escapedName": "array-flatten",
|
||||
"rawSpec": "1.1.1",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "1.1.1"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/express"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"_shasum": "9a5f699051b1e7073328f2a008968b64ea2955d2",
|
||||
"_spec": "array-flatten@1.1.1",
|
||||
"_where": "/Users/mirjam/Documents/subgraphVisualization/BioGraphVisart/static/scripts/node_modules/express",
|
||||
"author": {
|
||||
"name": "Blake Embrey",
|
||||
"email": "hello@blakeembrey.com",
|
||||
"url": "http://blakeembrey.me"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/blakeembrey/array-flatten/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"deprecated": false,
|
||||
"description": "Flatten an array of nested arrays into a single flat array",
|
||||
"devDependencies": {
|
||||
"istanbul": "^0.3.13",
|
||||
"mocha": "^2.2.4",
|
||||
"pre-commit": "^1.0.7",
|
||||
"standard": "^3.7.3"
|
||||
},
|
||||
"files": [
|
||||
"array-flatten.js",
|
||||
"LICENSE"
|
||||
],
|
||||
"homepage": "https://github.com/blakeembrey/array-flatten",
|
||||
"keywords": [
|
||||
"array",
|
||||
"flatten",
|
||||
"arguments",
|
||||
"depth"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "array-flatten.js",
|
||||
"name": "array-flatten",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/blakeembrey/array-flatten.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "istanbul cover _mocha -- -R spec"
|
||||
},
|
||||
"version": "1.1.1"
|
||||
}
|
609
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/body-parser/HISTORY.md
generated
vendored
Normal file
@ -0,0 +1,609 @@
|
||||
1.19.0 / 2019-04-25
|
||||
===================
|
||||
|
||||
* deps: bytes@3.1.0
|
||||
- Add petabyte (`pb`) support
|
||||
* deps: http-errors@1.7.2
|
||||
- Set constructor name when possible
|
||||
- deps: setprototypeof@1.1.1
|
||||
- deps: statuses@'>= 1.5.0 < 2'
|
||||
* deps: iconv-lite@0.4.24
|
||||
- Added encoding MIK
|
||||
* deps: qs@6.7.0
|
||||
- Fix parsing array brackets after index
|
||||
* deps: raw-body@2.4.0
|
||||
- deps: bytes@3.1.0
|
||||
- deps: http-errors@1.7.2
|
||||
- deps: iconv-lite@0.4.24
|
||||
* deps: type-is@~1.6.17
|
||||
- deps: mime-types@~2.1.24
|
||||
- perf: prevent internal `throw` on invalid type
|
||||
|
||||
1.18.3 / 2018-05-14
|
||||
===================
|
||||
|
||||
* Fix stack trace for strict json parse error
|
||||
* deps: depd@~1.1.2
|
||||
- perf: remove argument reassignment
|
||||
* deps: http-errors@~1.6.3
|
||||
- deps: depd@~1.1.2
|
||||
- deps: setprototypeof@1.1.0
|
||||
- deps: statuses@'>= 1.3.1 < 2'
|
||||
* deps: iconv-lite@0.4.23
|
||||
- Fix loading encoding with year appended
|
||||
- Fix deprecation warnings on Node.js 10+
|
||||
* deps: qs@6.5.2
|
||||
* deps: raw-body@2.3.3
|
||||
- deps: http-errors@1.6.3
|
||||
- deps: iconv-lite@0.4.23
|
||||
* deps: type-is@~1.6.16
|
||||
- deps: mime-types@~2.1.18
|
||||
|
||||
1.18.2 / 2017-09-22
|
||||
===================
|
||||
|
||||
* deps: debug@2.6.9
|
||||
* perf: remove argument reassignment
|
||||
|
||||
1.18.1 / 2017-09-12
|
||||
===================
|
||||
|
||||
* deps: content-type@~1.0.4
|
||||
- perf: remove argument reassignment
|
||||
- perf: skip parameter parsing when no parameters
|
||||
* deps: iconv-lite@0.4.19
|
||||
- Fix ISO-8859-1 regression
|
||||
- Update Windows-1255
|
||||
* deps: qs@6.5.1
|
||||
- Fix parsing & compacting very deep objects
|
||||
* deps: raw-body@2.3.2
|
||||
- deps: iconv-lite@0.4.19
|
||||
|
||||
1.18.0 / 2017-09-08
|
||||
===================
|
||||
|
||||
* Fix JSON strict violation error to match native parse error
|
||||
* Include the `body` property on verify errors
|
||||
* Include the `type` property on all generated errors
|
||||
* Use `http-errors` to set status code on errors
|
||||
* deps: bytes@3.0.0
|
||||
* deps: debug@2.6.8
|
||||
* deps: depd@~1.1.1
|
||||
- Remove unnecessary `Buffer` loading
|
||||
* deps: http-errors@~1.6.2
|
||||
- deps: depd@1.1.1
|
||||
* deps: iconv-lite@0.4.18
|
||||
- Add support for React Native
|
||||
- Add a warning if not loaded as utf-8
|
||||
- Fix CESU-8 decoding in Node.js 8
|
||||
- Improve speed of ISO-8859-1 encoding
|
||||
* deps: qs@6.5.0
|
||||
* deps: raw-body@2.3.1
|
||||
- Use `http-errors` for standard emitted errors
|
||||
- deps: bytes@3.0.0
|
||||
- deps: iconv-lite@0.4.18
|
||||
- perf: skip buffer decoding on overage chunk
|
||||
* perf: prevent internal `throw` when missing charset
|
||||
|
||||
1.17.2 / 2017-05-17
|
||||
===================
|
||||
|
||||
* deps: debug@2.6.7
|
||||
- Fix `DEBUG_MAX_ARRAY_LENGTH`
|
||||
- deps: ms@2.0.0
|
||||
* deps: type-is@~1.6.15
|
||||
- deps: mime-types@~2.1.15
|
||||
|
||||
1.17.1 / 2017-03-06
|
||||
===================
|
||||
|
||||
* deps: qs@6.4.0
|
||||
- Fix regression parsing keys starting with `[`
|
||||
|
||||
1.17.0 / 2017-03-01
|
||||
===================
|
||||
|
||||
* deps: http-errors@~1.6.1
|
||||
- Make `message` property enumerable for `HttpError`s
|
||||
- deps: setprototypeof@1.0.3
|
||||
* deps: qs@6.3.1
|
||||
- Fix compacting nested arrays
|
||||
|
||||
1.16.1 / 2017-02-10
|
||||
===================
|
||||
|
||||
* deps: debug@2.6.1
|
||||
- Fix deprecation messages in WebStorm and other editors
|
||||
- Undeprecate `DEBUG_FD` set to `1` or `2`
|
||||
|
||||
1.16.0 / 2017-01-17
|
||||
===================
|
||||
|
||||
* deps: debug@2.6.0
|
||||
- Allow colors in workers
|
||||
- Deprecated `DEBUG_FD` environment variable
|
||||
- Fix error when running under React Native
|
||||
- Use same color for same namespace
|
||||
- deps: ms@0.7.2
|
||||
* deps: http-errors@~1.5.1
|
||||
- deps: inherits@2.0.3
|
||||
- deps: setprototypeof@1.0.2
|
||||
- deps: statuses@'>= 1.3.1 < 2'
|
||||
* deps: iconv-lite@0.4.15
|
||||
- Added encoding MS-31J
|
||||
- Added encoding MS-932
|
||||
- Added encoding MS-936
|
||||
- Added encoding MS-949
|
||||
- Added encoding MS-950
|
||||
- Fix GBK/GB18030 handling of Euro character
|
||||
* deps: qs@6.2.1
|
||||
- Fix array parsing from skipping empty values
|
||||
* deps: raw-body@~2.2.0
|
||||
- deps: iconv-lite@0.4.15
|
||||
* deps: type-is@~1.6.14
|
||||
- deps: mime-types@~2.1.13
|
||||
|
||||
1.15.2 / 2016-06-19
|
||||
===================
|
||||
|
||||
* deps: bytes@2.4.0
|
||||
* deps: content-type@~1.0.2
|
||||
- perf: enable strict mode
|
||||
* deps: http-errors@~1.5.0
|
||||
- Use `setprototypeof` module to replace `__proto__` setting
|
||||
- deps: statuses@'>= 1.3.0 < 2'
|
||||
- perf: enable strict mode
|
||||
* deps: qs@6.2.0
|
||||
* deps: raw-body@~2.1.7
|
||||
- deps: bytes@2.4.0
|
||||
- perf: remove double-cleanup on happy path
|
||||
* deps: type-is@~1.6.13
|
||||
- deps: mime-types@~2.1.11
|
||||
|
||||
1.15.1 / 2016-05-05
|
||||
===================
|
||||
|
||||
* deps: bytes@2.3.0
|
||||
- Drop partial bytes on all parsed units
|
||||
- Fix parsing byte string that looks like hex
|
||||
* deps: raw-body@~2.1.6
|
||||
- deps: bytes@2.3.0
|
||||
* deps: type-is@~1.6.12
|
||||
- deps: mime-types@~2.1.10
|
||||
|
||||
1.15.0 / 2016-02-10
|
||||
===================
|
||||
|
||||
* deps: http-errors@~1.4.0
|
||||
- Add `HttpError` export, for `err instanceof createError.HttpError`
|
||||
- deps: inherits@2.0.1
|
||||
- deps: statuses@'>= 1.2.1 < 2'
|
||||
* deps: qs@6.1.0
|
||||
* deps: type-is@~1.6.11
|
||||
- deps: mime-types@~2.1.9
|
||||
|
||||
1.14.2 / 2015-12-16
|
||||
===================
|
||||
|
||||
* deps: bytes@2.2.0
|
||||
* deps: iconv-lite@0.4.13
|
||||
* deps: qs@5.2.0
|
||||
* deps: raw-body@~2.1.5
|
||||
- deps: bytes@2.2.0
|
||||
- deps: iconv-lite@0.4.13
|
||||
* deps: type-is@~1.6.10
|
||||
- deps: mime-types@~2.1.8
|
||||
|
||||
1.14.1 / 2015-09-27
|
||||
===================
|
||||
|
||||
* Fix issue where invalid charset results in 400 when `verify` used
|
||||
* deps: iconv-lite@0.4.12
|
||||
- Fix CESU-8 decoding in Node.js 4.x
|
||||
* deps: raw-body@~2.1.4
|
||||
- Fix masking critical errors from `iconv-lite`
|
||||
- deps: iconv-lite@0.4.12
|
||||
* deps: type-is@~1.6.9
|
||||
- deps: mime-types@~2.1.7
|
||||
|
||||
1.14.0 / 2015-09-16
|
||||
===================
|
||||
|
||||
* Fix JSON strict parse error to match syntax errors
|
||||
* Provide static `require` analysis in `urlencoded` parser
|
||||
* deps: depd@~1.1.0
|
||||
- Support web browser loading
|
||||
* deps: qs@5.1.0
|
||||
* deps: raw-body@~2.1.3
|
||||
- Fix sync callback when attaching data listener causes sync read
|
||||
* deps: type-is@~1.6.8
|
||||
- Fix type error when given invalid type to match against
|
||||
- deps: mime-types@~2.1.6
|
||||
|
||||
1.13.3 / 2015-07-31
|
||||
===================
|
||||
|
||||
* deps: type-is@~1.6.6
|
||||
- deps: mime-types@~2.1.4
|
||||
|
||||
1.13.2 / 2015-07-05
|
||||
===================
|
||||
|
||||
* deps: iconv-lite@0.4.11
|
||||
* deps: qs@4.0.0
|
||||
- Fix dropping parameters like `hasOwnProperty`
|
||||
- Fix user-visible incompatibilities from 3.1.0
|
||||
- Fix various parsing edge cases
|
||||
* deps: raw-body@~2.1.2
|
||||
- Fix error stack traces to skip `makeError`
|
||||
- deps: iconv-lite@0.4.11
|
||||
* deps: type-is@~1.6.4
|
||||
- deps: mime-types@~2.1.2
|
||||
- perf: enable strict mode
|
||||
- perf: remove argument reassignment
|
||||
|
||||
1.13.1 / 2015-06-16
|
||||
===================
|
||||
|
||||
* deps: qs@2.4.2
|
||||
- Downgraded from 3.1.0 because of user-visible incompatibilities
|
||||
|
||||
1.13.0 / 2015-06-14
|
||||
===================
|
||||
|
||||
* Add `statusCode` property on `Error`s, in addition to `status`
|
||||
* Change `type` default to `application/json` for JSON parser
|
||||
* Change `type` default to `application/x-www-form-urlencoded` for urlencoded parser
|
||||
* Provide static `require` analysis
|
||||
* Use the `http-errors` module to generate errors
|
||||
* deps: bytes@2.1.0
|
||||
- Slight optimizations
|
||||
* deps: iconv-lite@0.4.10
|
||||
- The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails
|
||||
- Leading BOM is now removed when decoding
|
||||
* deps: on-finished@~2.3.0
|
||||
- Add defined behavior for HTTP `CONNECT` requests
|
||||
- Add defined behavior for HTTP `Upgrade` requests
|
||||
- deps: ee-first@1.1.1
|
||||
* deps: qs@3.1.0
|
||||
- Fix dropping parameters like `hasOwnProperty`
|
||||
- Fix various parsing edge cases
|
||||
- Parsed object now has `null` prototype
|
||||
* deps: raw-body@~2.1.1
|
||||
- Use `unpipe` module for unpiping requests
|
||||
- deps: iconv-lite@0.4.10
|
||||
* deps: type-is@~1.6.3
|
||||
- deps: mime-types@~2.1.1
|
||||
- perf: reduce try block size
|
||||
- perf: remove bitwise operations
|
||||
* perf: enable strict mode
|
||||
* perf: remove argument reassignment
|
||||
* perf: remove delete call
|
||||
|
||||
1.12.4 / 2015-05-10
|
||||
===================
|
||||
|
||||
* deps: debug@~2.2.0
|
||||
* deps: qs@2.4.2
|
||||
- Fix allowing parameters like `constructor`
|
||||
* deps: on-finished@~2.2.1
|
||||
* deps: raw-body@~2.0.1
|
||||
- Fix a false-positive when unpiping in Node.js 0.8
|
||||
- deps: bytes@2.0.1
|
||||
* deps: type-is@~1.6.2
|
||||
- deps: mime-types@~2.0.11
|
||||
|
||||
1.12.3 / 2015-04-15
|
||||
===================
|
||||
|
||||
* Slight efficiency improvement when not debugging
|
||||
* deps: depd@~1.0.1
|
||||
* deps: iconv-lite@0.4.8
|
||||
- Add encoding alias UNICODE-1-1-UTF-7
|
||||
* deps: raw-body@1.3.4
|
||||
- Fix hanging callback if request aborts during read
|
||||
- deps: iconv-lite@0.4.8
|
||||
|
||||
1.12.2 / 2015-03-16
|
||||
===================
|
||||
|
||||
* deps: qs@2.4.1
|
||||
- Fix error when parameter `hasOwnProperty` is present
|
||||
|
||||
1.12.1 / 2015-03-15
|
||||
===================
|
||||
|
||||
* deps: debug@~2.1.3
|
||||
- Fix high intensity foreground color for bold
|
||||
- deps: ms@0.7.0
|
||||
* deps: type-is@~1.6.1
|
||||
- deps: mime-types@~2.0.10
|
||||
|
||||
1.12.0 / 2015-02-13
|
||||
===================
|
||||
|
||||
* add `debug` messages
|
||||
* accept a function for the `type` option
|
||||
* use `content-type` to parse `Content-Type` headers
|
||||
* deps: iconv-lite@0.4.7
|
||||
- Gracefully support enumerables on `Object.prototype`
|
||||
* deps: raw-body@1.3.3
|
||||
- deps: iconv-lite@0.4.7
|
||||
* deps: type-is@~1.6.0
|
||||
- fix argument reassignment
|
||||
- fix false-positives in `hasBody` `Transfer-Encoding` check
|
||||
- support wildcard for both type and subtype (`*/*`)
|
||||
- deps: mime-types@~2.0.9
|
||||
|
||||
1.11.0 / 2015-01-30
|
||||
===================
|
||||
|
||||
* make internal `extended: true` depth limit infinity
|
||||
* deps: type-is@~1.5.6
|
||||
- deps: mime-types@~2.0.8
|
||||
|
||||
1.10.2 / 2015-01-20
|
||||
===================
|
||||
|
||||
* deps: iconv-lite@0.4.6
|
||||
- Fix rare aliases of single-byte encodings
|
||||
* deps: raw-body@1.3.2
|
||||
- deps: iconv-lite@0.4.6
|
||||
|
||||
1.10.1 / 2015-01-01
|
||||
===================
|
||||
|
||||
* deps: on-finished@~2.2.0
|
||||
* deps: type-is@~1.5.5
|
||||
- deps: mime-types@~2.0.7
|
||||
|
||||
1.10.0 / 2014-12-02
|
||||
===================
|
||||
|
||||
* make internal `extended: true` array limit dynamic
|
||||
|
||||
1.9.3 / 2014-11-21
|
||||
==================
|
||||
|
||||
* deps: iconv-lite@0.4.5
|
||||
- Fix Windows-31J and X-SJIS encoding support
|
||||
* deps: qs@2.3.3
|
||||
- Fix `arrayLimit` behavior
|
||||
* deps: raw-body@1.3.1
|
||||
- deps: iconv-lite@0.4.5
|
||||
* deps: type-is@~1.5.3
|
||||
- deps: mime-types@~2.0.3
|
||||
|
||||
1.9.2 / 2014-10-27
|
||||
==================
|
||||
|
||||
* deps: qs@2.3.2
|
||||
- Fix parsing of mixed objects and values
|
||||
|
||||
1.9.1 / 2014-10-22
|
||||
==================
|
||||
|
||||
* deps: on-finished@~2.1.1
|
||||
- Fix handling of pipelined requests
|
||||
* deps: qs@2.3.0
|
||||
- Fix parsing of mixed implicit and explicit arrays
|
||||
* deps: type-is@~1.5.2
|
||||
- deps: mime-types@~2.0.2
|
||||
|
||||
1.9.0 / 2014-09-24
|
||||
==================
|
||||
|
||||
* include the charset in "unsupported charset" error message
|
||||
* include the encoding in "unsupported content encoding" error message
|
||||
* deps: depd@~1.0.0
|
||||
|
||||
1.8.4 / 2014-09-23
|
||||
==================
|
||||
|
||||
* fix content encoding to be case-insensitive
|
||||
|
||||
1.8.3 / 2014-09-19
|
||||
==================
|
||||
|
||||
* deps: qs@2.2.4
|
||||
- Fix issue with object keys starting with numbers truncated
|
||||
|
||||
1.8.2 / 2014-09-15
|
||||
==================
|
||||
|
||||
* deps: depd@0.4.5
|
||||
|
||||
1.8.1 / 2014-09-07
|
||||
==================
|
||||
|
||||
* deps: media-typer@0.3.0
|
||||
* deps: type-is@~1.5.1
|
||||
|
||||
1.8.0 / 2014-09-05
|
||||
==================
|
||||
|
||||
* make empty-body-handling consistent between chunked requests
|
||||
- empty `json` produces `{}`
|
||||
- empty `raw` produces `new Buffer(0)`
|
||||
- empty `text` produces `''`
|
||||
- empty `urlencoded` produces `{}`
|
||||
* deps: qs@2.2.3
|
||||
- Fix issue where first empty value in array is discarded
|
||||
* deps: type-is@~1.5.0
|
||||
- fix `hasbody` to be true for `content-length: 0`
|
||||
|
||||
1.7.0 / 2014-09-01
|
||||
==================
|
||||
|
||||
* add `parameterLimit` option to `urlencoded` parser
|
||||
* change `urlencoded` extended array limit to 100
|
||||
* respond with 413 when over `parameterLimit` in `urlencoded`
|
||||
|
||||
1.6.7 / 2014-08-29
|
||||
==================
|
||||
|
||||
* deps: qs@2.2.2
|
||||
- Remove unnecessary cloning
|
||||
|
||||
1.6.6 / 2014-08-27
|
||||
==================
|
||||
|
||||
* deps: qs@2.2.0
|
||||
- Array parsing fix
|
||||
- Performance improvements
|
||||
|
||||
1.6.5 / 2014-08-16
|
||||
==================
|
||||
|
||||
* deps: on-finished@2.1.0
|
||||
|
||||
1.6.4 / 2014-08-14
|
||||
==================
|
||||
|
||||
* deps: qs@1.2.2
|
||||
|
||||
1.6.3 / 2014-08-10
|
||||
==================
|
||||
|
||||
* deps: qs@1.2.1
|
||||
|
||||
1.6.2 / 2014-08-07
|
||||
==================
|
||||
|
||||
* deps: qs@1.2.0
|
||||
- Fix parsing array of objects
|
||||
|
||||
1.6.1 / 2014-08-06
|
||||
==================
|
||||
|
||||
* deps: qs@1.1.0
|
||||
- Accept urlencoded square brackets
|
||||
- Accept empty values in implicit array notation
|
||||
|
||||
1.6.0 / 2014-08-05
|
||||
==================
|
||||
|
||||
* deps: qs@1.0.2
|
||||
- Complete rewrite
|
||||
- Limits array length to 20
|
||||
- Limits object depth to 5
|
||||
- Limits parameters to 1,000
|
||||
|
||||
1.5.2 / 2014-07-27
|
||||
==================
|
||||
|
||||
* deps: depd@0.4.4
|
||||
- Work-around v8 generating empty stack traces
|
||||
|
||||
1.5.1 / 2014-07-26
|
||||
==================
|
||||
|
||||
* deps: depd@0.4.3
|
||||
- Fix exception when global `Error.stackTraceLimit` is too low
|
||||
|
||||
1.5.0 / 2014-07-20
|
||||
==================
|
||||
|
||||
* deps: depd@0.4.2
|
||||
- Add `TRACE_DEPRECATION` environment variable
|
||||
- Remove non-standard grey color from color output
|
||||
- Support `--no-deprecation` argument
|
||||
- Support `--trace-deprecation` argument
|
||||
* deps: iconv-lite@0.4.4
|
||||
- Added encoding UTF-7
|
||||
* deps: raw-body@1.3.0
|
||||
- deps: iconv-lite@0.4.4
|
||||
- Added encoding UTF-7
|
||||
- Fix `Cannot switch to old mode now` error on Node.js 0.10+
|
||||
* deps: type-is@~1.3.2
|
||||
|
||||
1.4.3 / 2014-06-19
|
||||
==================
|
||||
|
||||
* deps: type-is@1.3.1
|
||||
- fix global variable leak
|
||||
|
||||
1.4.2 / 2014-06-19
|
||||
==================
|
||||
|
||||
* deps: type-is@1.3.0
|
||||
- improve type parsing
|
||||
|
||||
1.4.1 / 2014-06-19
|
||||
==================
|
||||
|
||||
* fix urlencoded extended deprecation message
|
||||
|
||||
1.4.0 / 2014-06-19
|
||||
==================
|
||||
|
||||
* add `text` parser
|
||||
* add `raw` parser
|
||||
* check accepted charset in content-type (accepts utf-8)
|
||||
* check accepted encoding in content-encoding (accepts identity)
|
||||
* deprecate `bodyParser()` middleware; use `.json()` and `.urlencoded()` as needed
|
||||
* deprecate `urlencoded()` without provided `extended` option
|
||||
* lazy-load urlencoded parsers
|
||||
* parsers split into files for reduced mem usage
|
||||
* support gzip and deflate bodies
|
||||
- set `inflate: false` to turn off
|
||||
* deps: raw-body@1.2.2
|
||||
- Support all encodings from `iconv-lite`
|
||||
|
||||
1.3.1 / 2014-06-11
|
||||
==================
|
||||
|
||||
* deps: type-is@1.2.1
|
||||
- Switch dependency from mime to mime-types@1.0.0
|
||||
|
||||
1.3.0 / 2014-05-31
|
||||
==================
|
||||
|
||||
* add `extended` option to urlencoded parser
|
||||
|
||||
1.2.2 / 2014-05-27
|
||||
==================
|
||||
|
||||
* deps: raw-body@1.1.6
|
||||
- assert stream encoding on node.js 0.8
|
||||
- assert stream encoding on node.js < 0.10.6
|
||||
- deps: bytes@1
|
||||
|
||||
1.2.1 / 2014-05-26
|
||||
==================
|
||||
|
||||
* invoke `next(err)` after request fully read
|
||||
- prevents hung responses and socket hang ups
|
||||
|
||||
1.2.0 / 2014-05-11
|
||||
==================
|
||||
|
||||
* add `verify` option
|
||||
* deps: type-is@1.2.0
|
||||
- support suffix matching
|
||||
|
||||
1.1.2 / 2014-05-11
|
||||
==================
|
||||
|
||||
* improve json parser speed
|
||||
|
||||
1.1.1 / 2014-05-11
|
||||
==================
|
||||
|
||||
* fix repeated limit parsing with every request
|
||||
|
||||
1.1.0 / 2014-05-10
|
||||
==================
|
||||
|
||||
* add `type` option
|
||||
* deps: pin for safety and consistency
|
||||
|
||||
1.0.2 / 2014-04-14
|
||||
==================
|
||||
|
||||
* use `type-is` module
|
||||
|
||||
1.0.1 / 2014-03-20
|
||||
==================
|
||||
|
||||
* lower default limits to 100kb
|
23
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/body-parser/LICENSE
generated
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
(The MIT License)
|
||||
|
||||
Copyright (c) 2014 Jonathan Ong <me@jongleberry.com>
|
||||
Copyright (c) 2014-2015 Douglas Christopher Wilson <doug@somethingdoug.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
443
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/body-parser/README.md
generated
vendored
Normal file
@ -0,0 +1,443 @@
|
||||
# body-parser
|
||||
|
||||
[![NPM Version][npm-image]][npm-url]
|
||||
[![NPM Downloads][downloads-image]][downloads-url]
|
||||
[![Build Status][travis-image]][travis-url]
|
||||
[![Test Coverage][coveralls-image]][coveralls-url]
|
||||
|
||||
Node.js body parsing middleware.
|
||||
|
||||
Parse incoming request bodies in a middleware before your handlers, available
|
||||
under the `req.body` property.
|
||||
|
||||
**Note** As `req.body`'s shape is based on user-controlled input, all
|
||||
properties and values in this object are untrusted and should be validated
|
||||
before trusting. For example, `req.body.foo.toString()` may fail in multiple
|
||||
ways, for example the `foo` property may not be there or may not be a string,
|
||||
and `toString` may not be a function and instead a string or other user input.
|
||||
|
||||
[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/).
|
||||
|
||||
_This does not handle multipart bodies_, due to their complex and typically
|
||||
large nature. For multipart bodies, you may be interested in the following
|
||||
modules:
|
||||
|
||||
* [busboy](https://www.npmjs.org/package/busboy#readme) and
|
||||
[connect-busboy](https://www.npmjs.org/package/connect-busboy#readme)
|
||||
* [multiparty](https://www.npmjs.org/package/multiparty#readme) and
|
||||
[connect-multiparty](https://www.npmjs.org/package/connect-multiparty#readme)
|
||||
* [formidable](https://www.npmjs.org/package/formidable#readme)
|
||||
* [multer](https://www.npmjs.org/package/multer#readme)
|
||||
|
||||
This module provides the following parsers:
|
||||
|
||||
* [JSON body parser](#bodyparserjsonoptions)
|
||||
* [Raw body parser](#bodyparserrawoptions)
|
||||
* [Text body parser](#bodyparsertextoptions)
|
||||
* [URL-encoded form body parser](#bodyparserurlencodedoptions)
|
||||
|
||||
Other body parsers you might be interested in:
|
||||
|
||||
- [body](https://www.npmjs.org/package/body#readme)
|
||||
- [co-body](https://www.npmjs.org/package/co-body#readme)
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
$ npm install body-parser
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
<!-- eslint-disable no-unused-vars -->
|
||||
|
||||
```js
|
||||
var bodyParser = require('body-parser')
|
||||
```
|
||||
|
||||
The `bodyParser` object exposes various factories to create middlewares. All
|
||||
middlewares will populate the `req.body` property with the parsed body when
|
||||
the `Content-Type` request header matches the `type` option, or an empty
|
||||
object (`{}`) if there was no body to parse, the `Content-Type` was not matched,
|
||||
or an error occurred.
|
||||
|
||||
The various errors returned by this module are described in the
|
||||
[errors section](#errors).
|
||||
|
||||
### bodyParser.json([options])
|
||||
|
||||
Returns middleware that only parses `json` and only looks at requests where
|
||||
the `Content-Type` header matches the `type` option. This parser accepts any
|
||||
Unicode encoding of the body and supports automatic inflation of `gzip` and
|
||||
`deflate` encodings.
|
||||
|
||||
A new `body` object containing the parsed data is populated on the `request`
|
||||
object after the middleware (i.e. `req.body`).
|
||||
|
||||
#### Options
|
||||
|
||||
The `json` function takes an optional `options` object that may contain any of
|
||||
the following keys:
|
||||
|
||||
##### inflate
|
||||
|
||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
|
||||
`false`, deflated bodies are rejected. Defaults to `true`.
|
||||
|
||||
##### limit
|
||||
|
||||
Controls the maximum request body size. If this is a number, then the value
|
||||
specifies the number of bytes; if it is a string, the value is passed to the
|
||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
|
||||
to `'100kb'`.
|
||||
|
||||
##### reviver
|
||||
|
||||
The `reviver` option is passed directly to `JSON.parse` as the second
|
||||
argument. You can find more information on this argument
|
||||
[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter).
|
||||
|
||||
##### strict
|
||||
|
||||
When set to `true`, will only accept arrays and objects; when `false` will
|
||||
accept anything `JSON.parse` accepts. Defaults to `true`.
|
||||
|
||||
##### type
|
||||
|
||||
The `type` option is used to determine what media type the middleware will
|
||||
parse. This option can be a string, array of strings, or a function. If not a
|
||||
function, `type` option is passed directly to the
|
||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this can
|
||||
be an extension name (like `json`), a mime type (like `application/json`), or
|
||||
a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type`
|
||||
option is called as `fn(req)` and the request is parsed if it returns a truthy
|
||||
value. Defaults to `application/json`.
|
||||
|
||||
##### verify
|
||||
|
||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
|
||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
|
||||
encoding of the request. The parsing can be aborted by throwing an error.
|
||||
|
||||
### bodyParser.raw([options])
|
||||
|
||||
Returns middleware that parses all bodies as a `Buffer` and only looks at
|
||||
requests where the `Content-Type` header matches the `type` option. This
|
||||
parser supports automatic inflation of `gzip` and `deflate` encodings.
|
||||
|
||||
A new `body` object containing the parsed data is populated on the `request`
|
||||
object after the middleware (i.e. `req.body`). This will be a `Buffer` object
|
||||
of the body.
|
||||
|
||||
#### Options
|
||||
|
||||
The `raw` function takes an optional `options` object that may contain any of
|
||||
the following keys:
|
||||
|
||||
##### inflate
|
||||
|
||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
|
||||
`false`, deflated bodies are rejected. Defaults to `true`.
|
||||
|
||||
##### limit
|
||||
|
||||
Controls the maximum request body size. If this is a number, then the value
|
||||
specifies the number of bytes; if it is a string, the value is passed to the
|
||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
|
||||
to `'100kb'`.
|
||||
|
||||
##### type
|
||||
|
||||
The `type` option is used to determine what media type the middleware will
|
||||
parse. This option can be a string, array of strings, or a function.
|
||||
If not a function, `type` option is passed directly to the
|
||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this
|
||||
can be an extension name (like `bin`), a mime type (like
|
||||
`application/octet-stream`), or a mime type with a wildcard (like `*/*` or
|
||||
`application/*`). If a function, the `type` option is called as `fn(req)`
|
||||
and the request is parsed if it returns a truthy value. Defaults to
|
||||
`application/octet-stream`.
|
||||
|
||||
##### verify
|
||||
|
||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
|
||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
|
||||
encoding of the request. The parsing can be aborted by throwing an error.
|
||||
|
||||
### bodyParser.text([options])
|
||||
|
||||
Returns middleware that parses all bodies as a string and only looks at
|
||||
requests where the `Content-Type` header matches the `type` option. This
|
||||
parser supports automatic inflation of `gzip` and `deflate` encodings.
|
||||
|
||||
A new `body` string containing the parsed data is populated on the `request`
|
||||
object after the middleware (i.e. `req.body`). This will be a string of the
|
||||
body.
|
||||
|
||||
#### Options
|
||||
|
||||
The `text` function takes an optional `options` object that may contain any of
|
||||
the following keys:
|
||||
|
||||
##### defaultCharset
|
||||
|
||||
Specify the default character set for the text content if the charset is not
|
||||
specified in the `Content-Type` header of the request. Defaults to `utf-8`.
|
||||
|
||||
##### inflate
|
||||
|
||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
|
||||
`false`, deflated bodies are rejected. Defaults to `true`.
|
||||
|
||||
##### limit
|
||||
|
||||
Controls the maximum request body size. If this is a number, then the value
|
||||
specifies the number of bytes; if it is a string, the value is passed to the
|
||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
|
||||
to `'100kb'`.
|
||||
|
||||
##### type
|
||||
|
||||
The `type` option is used to determine what media type the middleware will
|
||||
parse. This option can be a string, array of strings, or a function. If not
|
||||
a function, `type` option is passed directly to the
|
||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this can
|
||||
be an extension name (like `txt`), a mime type (like `text/plain`), or a mime
|
||||
type with a wildcard (like `*/*` or `text/*`). If a function, the `type`
|
||||
option is called as `fn(req)` and the request is parsed if it returns a
|
||||
truthy value. Defaults to `text/plain`.
|
||||
|
||||
##### verify
|
||||
|
||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
|
||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
|
||||
encoding of the request. The parsing can be aborted by throwing an error.
|
||||
|
||||
### bodyParser.urlencoded([options])
|
||||
|
||||
Returns middleware that only parses `urlencoded` bodies and only looks at
|
||||
requests where the `Content-Type` header matches the `type` option. This
|
||||
parser accepts only UTF-8 encoding of the body and supports automatic
|
||||
inflation of `gzip` and `deflate` encodings.
|
||||
|
||||
A new `body` object containing the parsed data is populated on the `request`
|
||||
object after the middleware (i.e. `req.body`). This object will contain
|
||||
key-value pairs, where the value can be a string or array (when `extended` is
|
||||
`false`), or any type (when `extended` is `true`).
|
||||
|
||||
#### Options
|
||||
|
||||
The `urlencoded` function takes an optional `options` object that may contain
|
||||
any of the following keys:
|
||||
|
||||
##### extended
|
||||
|
||||
The `extended` option allows to choose between parsing the URL-encoded data
|
||||
with the `querystring` library (when `false`) or the `qs` library (when
|
||||
`true`). The "extended" syntax allows for rich objects and arrays to be
|
||||
encoded into the URL-encoded format, allowing for a JSON-like experience
|
||||
with URL-encoded. For more information, please
|
||||
[see the qs library](https://www.npmjs.org/package/qs#readme).
|
||||
|
||||
Defaults to `true`, but using the default has been deprecated. Please
|
||||
research into the difference between `qs` and `querystring` and choose the
|
||||
appropriate setting.
|
||||
|
||||
##### inflate
|
||||
|
||||
When set to `true`, then deflated (compressed) bodies will be inflated; when
|
||||
`false`, deflated bodies are rejected. Defaults to `true`.
|
||||
|
||||
##### limit
|
||||
|
||||
Controls the maximum request body size. If this is a number, then the value
|
||||
specifies the number of bytes; if it is a string, the value is passed to the
|
||||
[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults
|
||||
to `'100kb'`.
|
||||
|
||||
##### parameterLimit
|
||||
|
||||
The `parameterLimit` option controls the maximum number of parameters that
|
||||
are allowed in the URL-encoded data. If a request contains more parameters
|
||||
than this value, a 413 will be returned to the client. Defaults to `1000`.
|
||||
|
||||
##### type
|
||||
|
||||
The `type` option is used to determine what media type the middleware will
|
||||
parse. This option can be a string, array of strings, or a function. If not
|
||||
a function, `type` option is passed directly to the
|
||||
[type-is](https://www.npmjs.org/package/type-is#readme) library and this can
|
||||
be an extension name (like `urlencoded`), a mime type (like
|
||||
`application/x-www-form-urlencoded`), or a mime type with a wildcard (like
|
||||
`*/x-www-form-urlencoded`). If a function, the `type` option is called as
|
||||
`fn(req)` and the request is parsed if it returns a truthy value. Defaults
|
||||
to `application/x-www-form-urlencoded`.
|
||||
|
||||
##### verify
|
||||
|
||||
The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`,
|
||||
where `buf` is a `Buffer` of the raw request body and `encoding` is the
|
||||
encoding of the request. The parsing can be aborted by throwing an error.
|
||||
|
||||
## Errors
|
||||
|
||||
The middlewares provided by this module create errors depending on the error
|
||||
condition during parsing. The errors will typically have a `status`/`statusCode`
|
||||
property that contains the suggested HTTP response code, an `expose` property
|
||||
to determine if the `message` property should be displayed to the client, a
|
||||
`type` property to determine the type of error without matching against the
|
||||
`message`, and a `body` property containing the read body, if available.
|
||||
|
||||
The following are the common errors emitted, though any error can come through
|
||||
for various reasons.
|
||||
|
||||
### content encoding unsupported
|
||||
|
||||
This error will occur when the request had a `Content-Encoding` header that
|
||||
contained an encoding but the "inflation" option was set to `false`. The
|
||||
`status` property is set to `415`, the `type` property is set to
|
||||
`'encoding.unsupported'`, and the `charset` property will be set to the
|
||||
encoding that is unsupported.
|
||||
|
||||
### request aborted
|
||||
|
||||
This error will occur when the request is aborted by the client before reading
|
||||
the body has finished. The `received` property will be set to the number of
|
||||
bytes received before the request was aborted and the `expected` property is
|
||||
set to the number of expected bytes. The `status` property is set to `400`
|
||||
and `type` property is set to `'request.aborted'`.
|
||||
|
||||
### request entity too large
|
||||
|
||||
This error will occur when the request body's size is larger than the "limit"
|
||||
option. The `limit` property will be set to the byte limit and the `length`
|
||||
property will be set to the request body's length. The `status` property is
|
||||
set to `413` and the `type` property is set to `'entity.too.large'`.
|
||||
|
||||
### request size did not match content length
|
||||
|
||||
This error will occur when the request's length did not match the length from
|
||||
the `Content-Length` header. This typically occurs when the request is malformed,
|
||||
typically when the `Content-Length` header was calculated based on characters
|
||||
instead of bytes. The `status` property is set to `400` and the `type` property
|
||||
is set to `'request.size.invalid'`.
|
||||
|
||||
### stream encoding should not be set
|
||||
|
||||
This error will occur when something called the `req.setEncoding` method prior
|
||||
to this middleware. This module operates directly on bytes only and you cannot
|
||||
call `req.setEncoding` when using this module. The `status` property is set to
|
||||
`500` and the `type` property is set to `'stream.encoding.set'`.
|
||||
|
||||
### too many parameters
|
||||
|
||||
This error will occur when the content of the request exceeds the configured
|
||||
`parameterLimit` for the `urlencoded` parser. The `status` property is set to
|
||||
`413` and the `type` property is set to `'parameters.too.many'`.
|
||||
|
||||
### unsupported charset "BOGUS"
|
||||
|
||||
This error will occur when the request had a charset parameter in the
|
||||
`Content-Type` header, but the `iconv-lite` module does not support it OR the
|
||||
parser does not support it. The charset is contained in the message as well
|
||||
as in the `charset` property. The `status` property is set to `415`, the
|
||||
`type` property is set to `'charset.unsupported'`, and the `charset` property
|
||||
is set to the charset that is unsupported.
|
||||
|
||||
### unsupported content encoding "bogus"
|
||||
|
||||
This error will occur when the request had a `Content-Encoding` header that
|
||||
contained an unsupported encoding. The encoding is contained in the message
|
||||
as well as in the `encoding` property. The `status` property is set to `415`,
|
||||
the `type` property is set to `'encoding.unsupported'`, and the `encoding`
|
||||
property is set to the encoding that is unsupported.
|
||||
|
||||
## Examples
|
||||
|
||||
### Express/Connect top-level generic
|
||||
|
||||
This example demonstrates adding a generic JSON and URL-encoded parser as a
|
||||
top-level middleware, which will parse the bodies of all incoming requests.
|
||||
This is the simplest setup.
|
||||
|
||||
```js
|
||||
var express = require('express')
|
||||
var bodyParser = require('body-parser')
|
||||
|
||||
var app = express()
|
||||
|
||||
// parse application/x-www-form-urlencoded
|
||||
app.use(bodyParser.urlencoded({ extended: false }))
|
||||
|
||||
// parse application/json
|
||||
app.use(bodyParser.json())
|
||||
|
||||
app.use(function (req, res) {
|
||||
res.setHeader('Content-Type', 'text/plain')
|
||||
res.write('you posted:\n')
|
||||
res.end(JSON.stringify(req.body, null, 2))
|
||||
})
|
||||
```
|
||||
|
||||
### Express route-specific
|
||||
|
||||
This example demonstrates adding body parsers specifically to the routes that
|
||||
need them. In general, this is the most recommended way to use body-parser with
|
||||
Express.
|
||||
|
||||
```js
|
||||
var express = require('express')
|
||||
var bodyParser = require('body-parser')
|
||||
|
||||
var app = express()
|
||||
|
||||
// create application/json parser
|
||||
var jsonParser = bodyParser.json()
|
||||
|
||||
// create application/x-www-form-urlencoded parser
|
||||
var urlencodedParser = bodyParser.urlencoded({ extended: false })
|
||||
|
||||
// POST /login gets urlencoded bodies
|
||||
app.post('/login', urlencodedParser, function (req, res) {
|
||||
res.send('welcome, ' + req.body.username)
|
||||
})
|
||||
|
||||
// POST /api/users gets JSON bodies
|
||||
app.post('/api/users', jsonParser, function (req, res) {
|
||||
// create user in req.body
|
||||
})
|
||||
```
|
||||
|
||||
### Change accepted type for parsers
|
||||
|
||||
All the parsers accept a `type` option which allows you to change the
|
||||
`Content-Type` that the middleware will parse.
|
||||
|
||||
```js
|
||||
var express = require('express')
|
||||
var bodyParser = require('body-parser')
|
||||
|
||||
var app = express()
|
||||
|
||||
// parse various different custom JSON types as JSON
|
||||
app.use(bodyParser.json({ type: 'application/*+json' }))
|
||||
|
||||
// parse some custom thing into a Buffer
|
||||
app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }))
|
||||
|
||||
// parse an HTML body into a string
|
||||
app.use(bodyParser.text({ type: 'text/html' }))
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
|
||||
[npm-image]: https://img.shields.io/npm/v/body-parser.svg
|
||||
[npm-url]: https://npmjs.org/package/body-parser
|
||||
[travis-image]: https://img.shields.io/travis/expressjs/body-parser/master.svg
|
||||
[travis-url]: https://travis-ci.org/expressjs/body-parser
|
||||
[coveralls-image]: https://img.shields.io/coveralls/expressjs/body-parser/master.svg
|
||||
[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master
|
||||
[downloads-image]: https://img.shields.io/npm/dm/body-parser.svg
|
||||
[downloads-url]: https://npmjs.org/package/body-parser
|
157
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/body-parser/index.js
generated
vendored
Normal file
@ -0,0 +1,157 @@
|
||||
/*!
|
||||
* body-parser
|
||||
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var deprecate = require('depd')('body-parser')
|
||||
|
||||
/**
|
||||
* Cache of loaded parsers.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var parsers = Object.create(null)
|
||||
|
||||
/**
|
||||
* @typedef Parsers
|
||||
* @type {function}
|
||||
* @property {function} json
|
||||
* @property {function} raw
|
||||
* @property {function} text
|
||||
* @property {function} urlencoded
|
||||
*/
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
* @type {Parsers}
|
||||
*/
|
||||
|
||||
exports = module.exports = deprecate.function(bodyParser,
|
||||
'bodyParser: use individual json/urlencoded middlewares')
|
||||
|
||||
/**
|
||||
* JSON parser.
|
||||
* @public
|
||||
*/
|
||||
|
||||
Object.defineProperty(exports, 'json', {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get: createParserGetter('json')
|
||||
})
|
||||
|
||||
/**
|
||||
* Raw parser.
|
||||
* @public
|
||||
*/
|
||||
|
||||
Object.defineProperty(exports, 'raw', {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get: createParserGetter('raw')
|
||||
})
|
||||
|
||||
/**
|
||||
* Text parser.
|
||||
* @public
|
||||
*/
|
||||
|
||||
Object.defineProperty(exports, 'text', {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get: createParserGetter('text')
|
||||
})
|
||||
|
||||
/**
|
||||
* URL-encoded parser.
|
||||
* @public
|
||||
*/
|
||||
|
||||
Object.defineProperty(exports, 'urlencoded', {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
get: createParserGetter('urlencoded')
|
||||
})
|
||||
|
||||
/**
|
||||
* Create a middleware to parse json and urlencoded bodies.
|
||||
*
|
||||
* @param {object} [options]
|
||||
* @return {function}
|
||||
* @deprecated
|
||||
* @public
|
||||
*/
|
||||
|
||||
function bodyParser (options) {
|
||||
var opts = {}
|
||||
|
||||
// exclude type option
|
||||
if (options) {
|
||||
for (var prop in options) {
|
||||
if (prop !== 'type') {
|
||||
opts[prop] = options[prop]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var _urlencoded = exports.urlencoded(opts)
|
||||
var _json = exports.json(opts)
|
||||
|
||||
return function bodyParser (req, res, next) {
|
||||
_json(req, res, function (err) {
|
||||
if (err) return next(err)
|
||||
_urlencoded(req, res, next)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a getter for loading a parser.
|
||||
* @private
|
||||
*/
|
||||
|
||||
function createParserGetter (name) {
|
||||
return function get () {
|
||||
return loadParser(name)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a parser module.
|
||||
* @private
|
||||
*/
|
||||
|
||||
function loadParser (parserName) {
|
||||
var parser = parsers[parserName]
|
||||
|
||||
if (parser !== undefined) {
|
||||
return parser
|
||||
}
|
||||
|
||||
// this uses a switch for static require analysis
|
||||
switch (parserName) {
|
||||
case 'json':
|
||||
parser = require('./lib/types/json')
|
||||
break
|
||||
case 'raw':
|
||||
parser = require('./lib/types/raw')
|
||||
break
|
||||
case 'text':
|
||||
parser = require('./lib/types/text')
|
||||
break
|
||||
case 'urlencoded':
|
||||
parser = require('./lib/types/urlencoded')
|
||||
break
|
||||
}
|
||||
|
||||
// store to prevent invoking require()
|
||||
return (parsers[parserName] = parser)
|
||||
}
|
181
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/body-parser/lib/read.js
generated
vendored
Normal file
@ -0,0 +1,181 @@
|
||||
/*!
|
||||
* body-parser
|
||||
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var createError = require('http-errors')
|
||||
var getBody = require('raw-body')
|
||||
var iconv = require('iconv-lite')
|
||||
var onFinished = require('on-finished')
|
||||
var zlib = require('zlib')
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
*/
|
||||
|
||||
module.exports = read
|
||||
|
||||
/**
|
||||
* Read a request into a buffer and parse.
|
||||
*
|
||||
* @param {object} req
|
||||
* @param {object} res
|
||||
* @param {function} next
|
||||
* @param {function} parse
|
||||
* @param {function} debug
|
||||
* @param {object} options
|
||||
* @private
|
||||
*/
|
||||
|
||||
function read (req, res, next, parse, debug, options) {
|
||||
var length
|
||||
var opts = options
|
||||
var stream
|
||||
|
||||
// flag as parsed
|
||||
req._body = true
|
||||
|
||||
// read options
|
||||
var encoding = opts.encoding !== null
|
||||
? opts.encoding
|
||||
: null
|
||||
var verify = opts.verify
|
||||
|
||||
try {
|
||||
// get the content stream
|
||||
stream = contentstream(req, debug, opts.inflate)
|
||||
length = stream.length
|
||||
stream.length = undefined
|
||||
} catch (err) {
|
||||
return next(err)
|
||||
}
|
||||
|
||||
// set raw-body options
|
||||
opts.length = length
|
||||
opts.encoding = verify
|
||||
? null
|
||||
: encoding
|
||||
|
||||
// assert charset is supported
|
||||
if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) {
|
||||
return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
|
||||
charset: encoding.toLowerCase(),
|
||||
type: 'charset.unsupported'
|
||||
}))
|
||||
}
|
||||
|
||||
// read body
|
||||
debug('read body')
|
||||
getBody(stream, opts, function (error, body) {
|
||||
if (error) {
|
||||
var _error
|
||||
|
||||
if (error.type === 'encoding.unsupported') {
|
||||
// echo back charset
|
||||
_error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', {
|
||||
charset: encoding.toLowerCase(),
|
||||
type: 'charset.unsupported'
|
||||
})
|
||||
} else {
|
||||
// set status code on error
|
||||
_error = createError(400, error)
|
||||
}
|
||||
|
||||
// read off entire request
|
||||
stream.resume()
|
||||
onFinished(req, function onfinished () {
|
||||
next(createError(400, _error))
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// verify
|
||||
if (verify) {
|
||||
try {
|
||||
debug('verify body')
|
||||
verify(req, res, body, encoding)
|
||||
} catch (err) {
|
||||
next(createError(403, err, {
|
||||
body: body,
|
||||
type: err.type || 'entity.verify.failed'
|
||||
}))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// parse
|
||||
var str = body
|
||||
try {
|
||||
debug('parse body')
|
||||
str = typeof body !== 'string' && encoding !== null
|
||||
? iconv.decode(body, encoding)
|
||||
: body
|
||||
req.body = parse(str)
|
||||
} catch (err) {
|
||||
next(createError(400, err, {
|
||||
body: str,
|
||||
type: err.type || 'entity.parse.failed'
|
||||
}))
|
||||
return
|
||||
}
|
||||
|
||||
next()
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the content stream of the request.
|
||||
*
|
||||
* @param {object} req
|
||||
* @param {function} debug
|
||||
* @param {boolean} [inflate=true]
|
||||
* @return {object}
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function contentstream (req, debug, inflate) {
|
||||
var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase()
|
||||
var length = req.headers['content-length']
|
||||
var stream
|
||||
|
||||
debug('content-encoding "%s"', encoding)
|
||||
|
||||
if (inflate === false && encoding !== 'identity') {
|
||||
throw createError(415, 'content encoding unsupported', {
|
||||
encoding: encoding,
|
||||
type: 'encoding.unsupported'
|
||||
})
|
||||
}
|
||||
|
||||
switch (encoding) {
|
||||
case 'deflate':
|
||||
stream = zlib.createInflate()
|
||||
debug('inflate body')
|
||||
req.pipe(stream)
|
||||
break
|
||||
case 'gzip':
|
||||
stream = zlib.createGunzip()
|
||||
debug('gunzip body')
|
||||
req.pipe(stream)
|
||||
break
|
||||
case 'identity':
|
||||
stream = req
|
||||
stream.length = length
|
||||
break
|
||||
default:
|
||||
throw createError(415, 'unsupported content encoding "' + encoding + '"', {
|
||||
encoding: encoding,
|
||||
type: 'encoding.unsupported'
|
||||
})
|
||||
}
|
||||
|
||||
return stream
|
||||
}
|
230
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/body-parser/lib/types/json.js
generated
vendored
Normal file
@ -0,0 +1,230 @@
|
||||
/*!
|
||||
* body-parser
|
||||
* Copyright(c) 2014 Jonathan Ong
|
||||
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
* @private
|
||||
*/
|
||||
|
||||
var bytes = require('bytes')
|
||||
var contentType = require('content-type')
|
||||
var createError = require('http-errors')
|
||||
var debug = require('debug')('body-parser:json')
|
||||
var read = require('../read')
|
||||
var typeis = require('type-is')
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
*/
|
||||
|
||||
module.exports = json
|
||||
|
||||
/**
|
||||
* RegExp to match the first non-space in a string.
|
||||
*
|
||||
* Allowed whitespace is defined in RFC 7159:
|
||||
*
|
||||
* ws = *(
|
||||
* %x20 / ; Space
|
||||
* %x09 / ; Horizontal tab
|
||||
* %x0A / ; Line feed or New line
|
||||
* %x0D ) ; Carriage return
|
||||
*/
|
||||
|
||||
var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*(.)/ // eslint-disable-line no-control-regex
|
||||
|
||||
/**
|
||||
* Create a middleware to parse JSON bodies.
|
||||
*
|
||||
* @param {object} [options]
|
||||
* @return {function}
|
||||
* @public
|
||||
*/
|
||||
|
||||
function json (options) {
|
||||
var opts = options || {}
|
||||
|
||||
var limit = typeof opts.limit !== 'number'
|
||||
? bytes.parse(opts.limit || '100kb')
|
||||
: opts.limit
|
||||
var inflate = opts.inflate !== false
|
||||
var reviver = opts.reviver
|
||||
var strict = opts.strict !== false
|
||||
var type = opts.type || 'application/json'
|
||||
var verify = opts.verify || false
|
||||
|
||||
if (verify !== false && typeof verify !== 'function') {
|
||||
throw new TypeError('option verify must be function')
|
||||
}
|
||||
|
||||
// create the appropriate type checking function
|
||||
var shouldParse = typeof type !== 'function'
|
||||
? typeChecker(type)
|
||||
: type
|
||||
|
||||
function parse (body) {
|
||||
if (body.length === 0) {
|
||||
// special-case empty json body, as it's a common client-side mistake
|
||||
// TODO: maybe make this configurable or part of "strict" option
|
||||
return {}
|
||||
}
|
||||
|
||||
if (strict) {
|
||||
var first = firstchar(body)
|
||||
|
||||
if (first !== '{' && first !== '[') {
|
||||
debug('strict violation')
|
||||
throw createStrictSyntaxError(body, first)
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
debug('parse json')
|
||||
return JSON.parse(body, reviver)
|
||||
} catch (e) {
|
||||
throw normalizeJsonSyntaxError(e, {
|
||||
message: e.message,
|
||||
stack: e.stack
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return function jsonParser (req, res, next) {
|
||||
if (req._body) {
|
||||
debug('body already parsed')
|
||||
next()
|
||||
return
|
||||
}
|
||||
|
||||
req.body = req.body || {}
|
||||
|
||||
// skip requests without bodies
|
||||
if (!typeis.hasBody(req)) {
|
||||
debug('skip empty body')
|
||||
next()
|
||||
return
|
||||
}
|
||||
|
||||
debug('content-type %j', req.headers['content-type'])
|
||||
|
||||
// determine if request should be parsed
|
||||
if (!shouldParse(req)) {
|
||||
debug('skip parsing')
|
||||
next()
|
||||
return
|
||||
}
|
||||
|
||||
// assert charset per RFC 7159 sec 8.1
|
||||
var charset = getCharset(req) || 'utf-8'
|
||||
if (charset.substr(0, 4) !== 'utf-') {
|
||||
debug('invalid charset')
|
||||
next(createError(415, 'unsupported charset "' + charset.toUpperCase() + '"', {
|
||||
charset: charset,
|
||||
type: 'charset.unsupported'
|
||||
}))
|
||||
return
|
||||
}
|
||||
|
||||
// read
|
||||
read(req, res, next, parse, debug, {
|
||||
encoding: charset,
|
||||
inflate: inflate,
|
||||
limit: limit,
|
||||
verify: verify
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create strict violation syntax error matching native error.
|
||||
*
|
||||
* @param {string} str
|
||||
* @param {string} char
|
||||
* @return {Error}
|
||||
* @private
|
||||
*/
|
||||
|
||||
function createStrictSyntaxError (str, char) {
|
||||
var index = str.indexOf(char)
|
||||
var partial = str.substring(0, index) + '#'
|
||||
|
||||
try {
|
||||
JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation')
|
||||
} catch (e) {
|
||||
return normalizeJsonSyntaxError(e, {
|
||||
message: e.message.replace('#', char),
|
||||
stack: e.stack
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first non-whitespace character in a string.
|
||||
*
|
||||
* @param {string} str
|
||||
* @return {function}
|
||||
* @private
|
||||
*/
|
||||
|
||||
function firstchar (str) {
|
||||
return FIRST_CHAR_REGEXP.exec(str)[1]
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the charset of a request.
|
||||
*
|
||||
* @param {object} req
|
||||
* @api private
|
||||
*/
|
||||
|
||||
function getCharset (req) {
|
||||
try {
|
||||
return (contentType.parse(req).parameters.charset || '').toLowerCase()
|
||||
} catch (e) {
|
||||
return undefined
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize a SyntaxError for JSON.parse.
|
||||
*
|
||||
* @param {SyntaxError} error
|
||||
* @param {object} obj
|
||||
* @return {SyntaxError}
|
||||
*/
|
||||
|
||||
function normalizeJsonSyntaxError (error, obj) {
|
||||
var keys = Object.getOwnPropertyNames(error)
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var key = keys[i]
|
||||
if (key !== 'stack' && key !== 'message') {
|
||||
delete error[key]
|
||||
}
|
||||
}
|
||||
|
||||
// replace stack before message for Node.js 0.10 and below
|
||||
error.stack = obj.stack.replace(error.message, obj.message)
|
||||
error.message = obj.message
|
||||
|
||||
return error
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the simple type checker.
|
||||
*
|
||||
* @param {string} type
|
||||
* @return {function}
|
||||
*/
|
||||
|
||||
function typeChecker (type) {
|
||||
return function checkType (req) {
|
||||
return Boolean(typeis(req, type))
|
||||
}
|
||||
}
|
101
resources/app/app/BioGraphVisart-master/static/scripts/node_modules/body-parser/lib/types/raw.js
generated
vendored
Normal file
@ -0,0 +1,101 @@
|
||||
/*!
|
||||
* body-parser
|
||||
* Copyright(c) 2014-2015 Douglas Christopher Wilson
|
||||
* MIT Licensed
|
||||
*/
|
||||
|
||||
'use strict'
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var bytes = require('bytes')
|
||||
var debug = require('debug')('body-parser:raw')
|
||||
var read = require('../read')
|
||||
var typeis = require('type-is')
|
||||
|
||||
/**
|
||||
* Module exports.
|
||||
*/
|
||||
|
||||
module.exports = raw
|
||||
|
||||
/**
|
||||
* Create a middleware to parse raw bodies.
|
||||
*
|
||||
* @param {object} [options]
|
||||
* @return {function}
|
||||
* @api public
|
||||
*/
|
||||
|
||||
function raw (options) {
|
||||
var opts = options || {}
|
||||
|
||||
var inflate = opts.inflate !== false
|
||||
var limit = typeof opts.limit !== 'number'
|
||||
? bytes.parse(opts.limit || '100kb')
|
||||
: opts.limit
|
||||
var type = opts.type || 'application/octet-stream'
|
||||
var verify = opts.verify || false
|
||||
|
||||
if (verify !== false && typeof verify !== 'function') {
|
||||
throw new TypeError('option verify must be function')
|
||||
}
|
||||
|
||||
// create the appropriate type checking function
|
||||
var shouldParse = typeof type !== 'function'
|
||||
? typeChecker(type)
|
||||
: type
|
||||
|
||||
function parse (buf) {
|
||||
return buf
|
||||
}
|
||||
|
||||
return function rawParser (req, res, next) {
|
||||
if (req._body) {
|
||||
debug('body already parsed')
|
||||
next()
|
||||
return
|
||||
}
|
||||
|
||||
req.body = req.body || {}
|
||||
|
||||
// skip requests without bodies
|
||||
if (!typeis.hasBody(req)) {
|
||||
debug('skip empty body')
|
||||
next()
|
||||
return
|
||||
}
|
||||
|
||||
debug('content-type %j', req.headers['content-type'])
|
||||
|
||||
// determine if request should be parsed
|
||||
if (!shouldParse(req)) {
|
||||
debug('skip parsing')
|
||||
next()
|
||||
return
|
||||
}
|
||||
|
||||
// read
|
||||
read(req, res, next, parse, debug, {
|
||||
encoding: null,
|
||||
inflate: inflate,
|
||||
limit: limit,
|
||||
verify: verify
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the simple type checker.
|
||||
*
|
||||
* @param {string} type
|
||||
* @return {function}
|
||||
*/
|
||||
|
||||
function typeChecker (type) {
|
||||
return function checkType (req) {
|
||||
return Boolean(typeis(req, type))
|
||||
}
|
||||
}
|