├── dist ├── Protael.zip └── protael.css ├── doc ├── img │ ├── glyphicons-halflings.png │ └── glyphicons-halflings-white.png ├── scripts │ ├── linenumber.js │ ├── prettify │ │ ├── lang-css.js │ │ ├── Apache-License-2.0.txt │ │ └── prettify.js │ ├── toc.js │ ├── bootstrap-tab.js │ └── bootstrap-dropdown.js ├── styles │ ├── prettify-jsdoc.css │ ├── prettify-tomorrow.css │ ├── jsdoc-default.css │ ├── sunlight.default.css │ └── sunlight.dark.css ├── index.html ├── namespaces.list.html ├── classes.list.html ├── global.html ├── Protael.Protael.html ├── Protael.html └── Protael.Paper.html ├── TODO.md ├── history.md ├── .gitignore ├── README.md ├── package.json ├── conf └── jsdoc.conf.json ├── LICENSE.md ├── lib ├── LICENSE_FileSaver_Blob.md ├── saveSvgAsPng.js └── FileSaver_Blob.js ├── protaelSeed.html ├── Gruntfile.js ├── css └── protael.css ├── json ├── graphs.json ├── bnab.json ├── allFeaturesExample.json └── bnab_BG505.SOSIP.664_DQ208458_base.json └── index.html /dist/Protael.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sanshu/protaeljs/HEAD/dist/Protael.zip -------------------------------------------------------------------------------- /doc/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sanshu/protaeljs/HEAD/doc/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /doc/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sanshu/protaeljs/HEAD/doc/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | #Protael TODOs 2 | 3 | ============== 4 | 5 | - [ ] add comments to public API functions 6 | - [ ] add tests 7 | - [ ] change domain name -------------------------------------------------------------------------------- /history.md: -------------------------------------------------------------------------------- 1 | #1.1.0 2 | 3 | * Stable release 4 | * Added qtracks tooltips showing current value 5 | 6 | 7 | #0.1.0 8 | 9 | * Initial beta release -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /public_html/node_modules/ 2 | /nbproject/ 3 | /public_html/build/ 4 | /public_html/TODO.md 5 | /public_html/dist/ 6 | /config/ 7 | /node_modules/ 8 | /public_html/ 9 | /build/ -------------------------------------------------------------------------------- /doc/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var counter = 0; 3 | var numbered; 4 | var source = document.getElementsByClassName('prettyprint source'); 5 | 6 | if (source && source[0]) { 7 | source = source[0].getElementsByTagName('code')[0]; 8 | 9 | numbered = source.innerHTML.split('\n'); 10 | numbered = numbered.map(function(item) { 11 | counter++; 12 | return '' + item; 13 | }); 14 | 15 | source.innerHTML = numbered.join('\n'); 16 | } 17 | })(); 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Protael 2 | ============== 3 | 4 | [![Join the chat at https://gitter.im/sanshu/protaeljs](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/sanshu/protaeljs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![DOI](https://zenodo.org/badge/5245/sanshu/protaeljs.svg)](http://dx.doi.org/10.5281/zenodo.14840) 5 | 6 | 7 | 8 | Protael is a vector graphics library for displaying various biological sequence 9 | related data on web pages. 10 | 11 | 12 | ##Documentation 13 | 14 | Documentation and usage example could be found on [Protael website] (http://protael.org/). 15 | 16 | 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "protael", 3 | "version": "1.1.0", 4 | "description": "Protein vector vizualization Library", 5 | "main": "./dist/protael.1.1.0.min.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git@github.com:sanshu/protaeljs.git" 9 | }, 10 | "author": "Mayya Sedova", 11 | "license": "Apache License v2", 12 | "devDependencies": { 13 | "grunt": "^0.4.5", 14 | "grunt-concat-css": "^0.3.1", 15 | "grunt-contrib-clean": "^0.5.0", 16 | "grunt-contrib-compress": "^0.10.0", 17 | "grunt-contrib-concat": "^0.5.0", 18 | "grunt-contrib-copy": "^0.5.0", 19 | "grunt-contrib-uglify": "~0.2.0", 20 | "grunt-exec": "~0.4.2", 21 | "grunt-jsdoc": "^0.5.6", 22 | "snapsvg": "^0.3.0" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /conf/jsdoc.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": { 3 | "allowUnknownTags": true 4 | }, 5 | "plugins": [], 6 | "templates": { 7 | "template" : "./node_modules/grunt-jsdoc/node_modules/ink-docstrap/template", 8 | "cleverLinks": false, 9 | "monospaceLinks": false, 10 | "dateFormat": "ddd MMM Do YYYY", 11 | "outputSourceFiles": true, 12 | "outputSourcePath": true, 13 | "systemName": "Protael", 14 | "footer": "", 15 | "copyright": "© 2014 ", 16 | "navType": "vertical", 17 | "theme": "flatly", 18 | "linenums": true, 19 | "collapseSymbols": false, 20 | "inverseNav": true, 21 | "highlightTutorialCode": true, 22 | "protocol": "fred://" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /doc/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([ 2 | ["pln", /^[\t\n\f\r ]+/, null, " \t\r\n "] 3 | ], [ 4 | ["str", /^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/, null], 5 | ["str", /^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/, null], 6 | ["lang-css-str", /^url\(([^"')]*)\)/i], 7 | ["kwd", /^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i, null], 8 | ["lang-css-kw", /^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i], 9 | ["com", /^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//], 10 | ["com", /^(?:<\!--|--\>)/], 11 | ["lit", /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i], 12 | ["lit", /^#[\da-f]{3,6}/i], 13 | ["pln", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i], 14 | ["pun", /^[^\s\w"']+/] 15 | ]), ["css"]); 16 | PR.registerLangHandler(PR.createSimpleLexer([], [ 17 | ["kwd", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i] 18 | ]), ["css-kw"]); 19 | PR.registerLangHandler(PR.createSimpleLexer([], [ 20 | ["str", /^[^"')]+/] 21 | ]), ["css-str"]); -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014-2015 Mayya Sedova 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /lib/LICENSE_FileSaver_Blob.md: -------------------------------------------------------------------------------- 1 | Copyright © 2014 [Eli Grey][1]. 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | 25 | [1]: http://eligrey.com 26 | -------------------------------------------------------------------------------- /doc/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /protaelSeed.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Starter : Protael 10 | 11 | 12 | 13 | 14 | 16 | 18 | 20 | 21 | 22 | 23 | 24 | 25 | 42 | 43 | 44 |

This is a starter page for you Protael data visualization

45 |

Edit your protein object and paste it into <script> tag, then reload this page. You can use Protael JSON generator.

46 |

JQuery, JQueryUI and SnapSVG will be loaded from CDN.

47 | 48 |
49 | 50 | -------------------------------------------------------------------------------- /doc/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Menlo, Monaco, Consolas, monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /doc/scripts/toc.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | $.fn.toc = function(options) { 3 | var self = this; 4 | var opts = $.extend({}, jQuery.fn.toc.defaults, options); 5 | 6 | var container = $(opts.container); 7 | var headings = $(opts.selectors, container); 8 | var headingOffsets = []; 9 | var activeClassName = opts.prefix+'-active'; 10 | 11 | var scrollTo = function(e) { 12 | if (opts.smoothScrolling) { 13 | e.preventDefault(); 14 | var elScrollTo = $(e.target).attr('href'); 15 | var $el = $(elScrollTo); 16 | 17 | $('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() { 18 | location.hash = elScrollTo; 19 | }); 20 | } 21 | $('li', self).removeClass(activeClassName); 22 | $(e.target).parent().addClass(activeClassName); 23 | }; 24 | 25 | //highlight on scroll 26 | var timeout; 27 | var highlightOnScroll = function(e) { 28 | if (timeout) { 29 | clearTimeout(timeout); 30 | } 31 | timeout = setTimeout(function() { 32 | var top = $(window).scrollTop(), 33 | highlighted; 34 | for (var i = 0, c = headingOffsets.length; i < c; i++) { 35 | if (headingOffsets[i] >= top) { 36 | $('li', self).removeClass(activeClassName); 37 | highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName); 38 | opts.onHighlight(highlighted); 39 | break; 40 | } 41 | } 42 | }, 50); 43 | }; 44 | if (opts.highlightOnScroll) { 45 | $(window).bind('scroll', highlightOnScroll); 46 | highlightOnScroll(); 47 | } 48 | 49 | return this.each(function() { 50 | //build TOC 51 | var el = $(this); 52 | var ul = $('