{"_id":"@bighatbio/msa","_rev":"4-6eb63de2f8db769daae4b72b93d23313","name":"@bighatbio/msa","dist-tags":{"latest":"1.0.6"},"versions":{"1.0.4":{"name":"@bighatbio/msa","description":"Display multiple sequences","version":"1.0.4","homepage":"http://github.com/BigHat-Biosciences/msa","repository":{"type":"git","url":"git://github.com/BigHat-Biosciences/msa.git"},"contributors":[{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com","url":"https://sebi.wilzba.ch"},{"name":"Tatyana Goldberg","email":"goldberg@rostlab.org","url":"http://rostlab.org/~goldberg/"},{"name":"Guy Yachdav","email":"yachdav@rostlab.org","url":"https://www.linkedin.com/in/gyachdav"},{"name":"Jeremy Hert","email":"jhert@bighatbio.com","url":"https://www.linkedin.com/in/jeremy-hert"},{"name":"Edward Abrams","email":"eddie@bighatbio.com","url":"https://www.linkedin.com/in/zeroaltitude"}],"author":{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com"},"dependencies":{"backbone-childs":"^1.0.3","backbone-thin":"^1.0.8","backbone-viewj":"^1.0.1","bio.io":"git+https://github.com/wilzbach/bio.io.git#233c569a000b4e481bc682dc1c5024aaa8f4c3b6","biojs-events":"^0.0.4","biojs-model":"^0.0.2","biojs-vis-seqlogo":"0.0.14","blueimp_canvastoblob":"^1.0.0","browser-saveas":"^1.0.1","dom-helper":"^1.0.0","jbone":"^1.1.2","koala-js":"^1.0.7","linear-scale":"0.0.1","lodash":"^4.13.1","mouse-pos":"^1.0.3","msa-colorschemes":"^1.0.10","@bighatbio/stat.seqs":"^0.1.22","xhr":"^2.2.0"},"devDependencies":{"babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-loader":"^6.2.4","babel-plugin-transform-export-extensions":"^6.8.0","babel-preset-es2015":"^6.3.13","biojs-io-newick":"^1.5.0","chai":"^1.9.1","css-loader":"^0.23.1","d3-scale":"^0.7.0","gulp":"^3.8.7","gulp-chmod":"^1.1.0","gulp-concat":"^2.3.4","gulp-gzip":"0.0.8","gulp-minify-css":"^0.3.7","gulp-mocha":"^0.5.2","gulp-rename":"^1.2.0","gulp-uglify":"^0.3.1","mkdirp-then":"^1.1.1","mocha":"^1.21.4","msa-tnt":"^0.1.20","prunner":"^1.0.0","sinon":"^1.12.1","sniper":"^0.2.16","strip-loader":"^0.1.2","style-loader":"^0.13.0","through2":"^0.6.3","tnt.tree":"0.1.4","uglify-js":"~2.6.2","webpack":"^1.13.0"},"keywords":["bio","biological","biojs","galaxy-vis","msa","multiple","sequence","alignment","fasta","clustal"],"main":"lib/index.js","scripts":{"test":"echo 'temporarily disabled'","prepublish":"node ./node_modules/webpack/bin/webpack.js -p && gulp build && babel -d lib src","build":"node ./node_modules/webpack/bin/webpack.js -p && gulp build","sniper":"node ./node_modules/sniper/bin/sniper .","watch":"node ./node_modules/webpack/bin/webpack.js -w","w":"prunner \"npm run sniper\" \"npm run watch\""},"license":"BSL-1.0","biojs":{"registryHeight":"400","screenshot":"screenshot.png","logo":"/logo.png","eventInstance":"m.g"},"sniper":{"noBrowserify":true,"buildJS":["https://cdn.bio.sh/msa/latest/msa.min.gz.js"],"js":["dist/msa.js"],"snippets":["snippets"],"first":"fer1"},"galaxy":{"datatypes":["sequence.Fasta","sequences","msa.clustal"]},"gitHead":"47042e8c3574fb62fad3b94de04183e5a0b09a97","bugs":{"url":"https://github.com/BigHat-Biosciences/msa/issues"},"_id":"@bighatbio/msa@1.0.4","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-SiRLMnJBB0wt7Gzf8PrAPDJKe0af03D+gf+9qB2tBkVBR7Egxpn3SXKHyoNS4o62hv1dVXKIJnNNqlpziSJdMw==","shasum":"64115b4d2e54559521020154323d25b2847fd7b8","tarball":"https://registry.npmjs.org/@bighatbio/msa/-/msa-1.0.4.tgz","fileCount":89,"unpackedSize":3138625,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHJ5sSjLAXylTw4r5i5MTHx+6eFFlpov5xk+9/NhNtnhAiEAt2LmpCuBRKRCsX5QYanP0+OIWT/wUkiT8jIBpvnY8qk="}]},"_npmUser":{"name":"bighat","email":"infotech-admin@bighatbio.com"},"directories":{},"maintainers":[{"name":"bighat","email":"infotech-admin@bighatbio.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/msa_1.0.4_1634572001149_0.2906089077106542"},"_hasShrinkwrap":false},"1.0.5":{"name":"@bighatbio/msa","description":"Display multiple sequences","version":"1.0.5","homepage":"http://github.com/BigHat-Biosciences/msa","repository":{"type":"git","url":"git://github.com/BigHat-Biosciences/msa.git"},"contributors":[{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com","url":"https://sebi.wilzba.ch"},{"name":"Tatyana Goldberg","email":"goldberg@rostlab.org","url":"http://rostlab.org/~goldberg/"},{"name":"Guy Yachdav","email":"yachdav@rostlab.org","url":"https://www.linkedin.com/in/gyachdav"},{"name":"Jeremy Hert","email":"jhert@bighatbio.com","url":"https://www.linkedin.com/in/jeremy-hert"},{"name":"Edward Abrams","email":"eddie@bighatbio.com","url":"https://www.linkedin.com/in/zeroaltitude"}],"author":{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com"},"dependencies":{"backbone-childs":"^1.0.3","backbone-thin":"^1.0.8","backbone-viewj":"^1.0.1","bio.io":"git+https://github.com/wilzbach/bio.io.git#233c569a000b4e481bc682dc1c5024aaa8f4c3b6","biojs-events":"^0.0.4","biojs-model":"^0.0.2","biojs-vis-seqlogo":"0.0.14","blueimp_canvastoblob":"^1.0.0","browser-saveas":"^1.0.1","dom-helper":"^1.0.0","jbone":"^1.1.2","koala-js":"^1.0.7","linear-scale":"0.0.1","lodash":"^4.13.1","mouse-pos":"^1.0.3","msa-colorschemes":"^1.0.10","@bighatbio/stat.seqs":"^0.1.22","xhr":"^2.2.0"},"devDependencies":{"babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-loader":"^6.2.4","babel-plugin-transform-export-extensions":"^6.8.0","babel-preset-es2015":"^6.3.13","biojs-io-newick":"^1.5.0","chai":"^1.9.1","css-loader":"^0.23.1","d3-scale":"^0.7.0","gulp":"^3.8.7","gulp-chmod":"^1.1.0","gulp-concat":"^2.3.4","gulp-gzip":"0.0.8","gulp-minify-css":"^0.3.7","gulp-mocha":"^0.5.2","gulp-rename":"^1.2.0","gulp-uglify":"^0.3.1","mkdirp-then":"^1.1.1","mocha":"^1.21.4","msa-tnt":"^0.1.20","prunner":"^1.0.0","sinon":"^1.12.1","sniper":"^0.2.16","strip-loader":"^0.1.2","style-loader":"^0.13.0","through2":"^0.6.3","tnt.tree":"0.1.4","uglify-js":"~2.6.2","webpack":"^1.13.0"},"keywords":["bio","biological","biojs","galaxy-vis","msa","multiple","sequence","alignment","fasta","clustal"],"main":"lib/index.js","scripts":{"test":"echo 'temporarily disabled'","prepublish":"node ./node_modules/webpack/bin/webpack.js -p && gulp build && babel -d lib src","build":"node ./node_modules/webpack/bin/webpack.js -p && gulp build","sniper":"node ./node_modules/sniper/bin/sniper .","watch":"node ./node_modules/webpack/bin/webpack.js -w","w":"prunner \"npm run sniper\" \"npm run watch\""},"license":"BSL-1.0","biojs":{"registryHeight":"400","screenshot":"screenshot.png","logo":"/logo.png","eventInstance":"m.g"},"sniper":{"noBrowserify":true,"buildJS":["https://cdn.bio.sh/msa/latest/msa.min.gz.js"],"js":["dist/msa.js"],"snippets":["snippets"],"first":"fer1"},"galaxy":{"datatypes":["sequence.Fasta","sequences","msa.clustal"]},"gitHead":"b4d9cbaf19d0ff6a5fd4d1716aaff08cf18a031b","bugs":{"url":"https://github.com/BigHat-Biosciences/msa/issues"},"_id":"@bighatbio/msa@1.0.5","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-4IG3aJ/MNsrz5hV3mWZJYTtE+kGa3MRy/hynmtAySU4NfL5npf0G+cdtcdYmu9NhWm2YFLIJ9beUoRhkg2xz1A==","shasum":"6b7f0a27cb5dd67325ac3b7cd8cfc520165a2f09","tarball":"https://registry.npmjs.org/@bighatbio/msa/-/msa-1.0.5.tgz","fileCount":89,"unpackedSize":3138842,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFGnl/9iJ6BfxSpPpKYk+bDXBMKUQH0u34exyChxlLaAAiA78dlYiR96FB/Lz8m/4KMCsry1rvDTGWoU/UXdPZoXKQ=="}]},"_npmUser":{"name":"bighat","email":"infotech-admin@bighatbio.com"},"directories":{},"maintainers":[{"name":"bighat","email":"infotech-admin@bighatbio.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/msa_1.0.5_1634583792179_0.36204141381048505"},"_hasShrinkwrap":false},"1.0.6":{"name":"@bighatbio/msa","description":"Display multiple sequences","version":"1.0.6","homepage":"http://github.com/BigHat-Biosciences/msa","repository":{"type":"git","url":"git://github.com/BigHat-Biosciences/msa.git"},"contributors":[{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com","url":"https://sebi.wilzba.ch"},{"name":"Tatyana Goldberg","email":"goldberg@rostlab.org","url":"http://rostlab.org/~goldberg/"},{"name":"Guy Yachdav","email":"yachdav@rostlab.org","url":"https://www.linkedin.com/in/gyachdav"},{"name":"Jeremy Hert","email":"jhert@bighatbio.com","url":"https://www.linkedin.com/in/jeremy-hert"},{"name":"Edward Abrams","email":"eddie@bighatbio.com","url":"https://www.linkedin.com/in/zeroaltitude"}],"author":{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com"},"dependencies":{"backbone-childs":"^1.0.3","backbone-thin":"^1.0.8","backbone-viewj":"^1.0.1","bio.io":"^1.0.6","biojs-events":"^0.0.4","biojs-model":"^0.0.2","biojs-vis-seqlogo":"0.0.14","blueimp_canvastoblob":"^1.0.0","browser-saveas":"^1.0.1","dom-helper":"^1.0.0","jbone":"^1.1.2","koala-js":"^1.0.7","linear-scale":"0.0.1","lodash":"^4.13.1","mouse-pos":"^1.0.3","msa-colorschemes":"^1.0.10","@bighatbio/stat.seqs":"^0.1.22","xhr":"^2.2.0"},"devDependencies":{"babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-loader":"^6.2.4","babel-plugin-transform-export-extensions":"^6.8.0","babel-preset-es2015":"^6.3.13","biojs-io-newick":"^1.5.0","chai":"^1.9.1","css-loader":"^0.23.1","d3-scale":"^0.7.0","gulp":"^3.8.7","gulp-chmod":"^1.1.0","gulp-concat":"^2.3.4","gulp-gzip":"0.0.8","gulp-minify-css":"^0.3.7","gulp-mocha":"^0.5.2","gulp-rename":"^1.2.0","gulp-uglify":"^0.3.1","mkdirp-then":"^1.1.1","mocha":"^1.21.4","msa-tnt":"^0.1.20","prunner":"^1.0.0","sinon":"^1.12.1","sniper":"^0.2.16","strip-loader":"^0.1.2","style-loader":"^0.13.0","through2":"^0.6.3","tnt.tree":"0.1.4","uglify-js":"~2.6.2","webpack":"^1.13.0"},"keywords":["bio","biological","biojs","galaxy-vis","msa","multiple","sequence","alignment","fasta","clustal"],"main":"lib/index.js","scripts":{"test":"echo 'temporarily disabled'","prepublish":"node ./node_modules/webpack/bin/webpack.js -p && gulp build && babel -d lib src","build":"node ./node_modules/webpack/bin/webpack.js -p && gulp build","sniper":"node ./node_modules/sniper/bin/sniper .","watch":"node ./node_modules/webpack/bin/webpack.js -w","w":"prunner \"npm run sniper\" \"npm run watch\""},"license":"BSL-1.0","biojs":{"registryHeight":"400","screenshot":"screenshot.png","logo":"/logo.png","eventInstance":"m.g"},"sniper":{"noBrowserify":true,"buildJS":["https://cdn.bio.sh/msa/latest/msa.min.gz.js"],"js":["dist/msa.js"],"snippets":["snippets"],"first":"fer1"},"galaxy":{"datatypes":["sequence.Fasta","sequences","msa.clustal"]},"gitHead":"f52219488f0d313aa6b3125349c5079a9357ec40","bugs":{"url":"https://github.com/BigHat-Biosciences/msa/issues"},"_id":"@bighatbio/msa@1.0.6","_nodeVersion":"11.15.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-NU4sNX5D/hpet+MIu0HUInJIfVmXw+G+g7YVpGa/MI2k9MI+mjwlHeI+MGBCRXat02B2lOBFQXWTWPhPIsdXkg==","shasum":"d69d84b3ce33cb1471ab79d5a9ced0bf04479fb7","tarball":"https://registry.npmjs.org/@bighatbio/msa/-/msa-1.0.6.tgz","fileCount":89,"unpackedSize":3138770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzHucCRA9TVsSAnZWagAAlbYP/RpfpiHg6YzRMiI5JMEd\n80BhGoDfTTHVDz1cB7ZcKoIiHRngaAFlj72Uri6eCaDP+rj4SYoZvdoN6eDM\nVM99c4hzU4CAXp5jTNOQsRG32cTA83Ti6SP1iqdbx90R3p8PF8Xr0IISEczg\nF3wJV3IFHV/d1dT2EaVeDzENwnIaMCeZDFXjynoAexNfWDJ2iJi1pRuR7ujQ\nsyJEdkqzysWi36NnrK008b/qGWRVqIzz5ATcGqWh+OM1SuQDba0NgjtvJorU\nhvB9IjDVM/Pv+LIxDiRM/qcq2X929XAcFoqYsqzv9dFNLrbiCj9pr/F1C8vO\n8ZmV52Q34hwwkbY8o76Eyqe6zeZCnw1pz4Ka91uwPEpa396VJbWReBp9A0ZT\ny2vwN3iDa/XxWF3F0pNk/wBG558R2lXS1H+2TfFK/XYG0qYFw1oqZOA4zhSH\nkefRBcAWrvZdCX063ob42LO2Fy0a0bYfvbwI7s/yaKi+kCmNMxAgJZsMn3iB\n2AtLhuBZXXukKw7lgnIaRXJN4WL21Pfx7+YvkbE+mwgrrkV7MOJRO05p/JwE\n0ifrBLJ3eqmlyJv2IFgggzzZ8tVTAakTSz0ctK0o4r9gMbJuz+70fNwlExgK\nbf3lbz9i3nhBlHzs4ArhVnncTmQfnIDgXRMuebcLw0mauFzltQiFFV9e5Zlv\nuhFM\r\n=Kt7H\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEnM2uV7Jz8tnTgFz05rG2ycScpGzKiBTsdM0B8VoMOAAiEAlP0toFHgLutWwjDCtL4cS0Repj6AlqVkADtF29Wfx4o="}]},"_npmUser":{"name":"bighat","email":"infotech-admin@bighatbio.com"},"directories":{},"maintainers":[{"name":"bighat","email":"infotech-admin@bighatbio.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/msa_1.0.6_1634589683000_0.621398860747636"},"_hasShrinkwrap":false}},"time":{"created":"2021-10-18T15:46:41.094Z","1.0.4":"2021-10-18T15:46:41.335Z","modified":"2022-04-04T18:46:18.391Z","1.0.5":"2021-10-18T19:03:12.400Z","1.0.6":"2021-10-18T20:41:23.255Z"},"maintainers":[{"name":"bighat","email":"infotech-admin@bighatbio.com"}],"description":"Display multiple sequences","homepage":"http://github.com/BigHat-Biosciences/msa","keywords":["bio","biological","biojs","galaxy-vis","msa","multiple","sequence","alignment","fasta","clustal"],"repository":{"type":"git","url":"git://github.com/BigHat-Biosciences/msa.git"},"contributors":[{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com","url":"https://sebi.wilzba.ch"},{"name":"Tatyana Goldberg","email":"goldberg@rostlab.org","url":"http://rostlab.org/~goldberg/"},{"name":"Guy Yachdav","email":"yachdav@rostlab.org","url":"https://www.linkedin.com/in/gyachdav"},{"name":"Jeremy Hert","email":"jhert@bighatbio.com","url":"https://www.linkedin.com/in/jeremy-hert"},{"name":"Edward Abrams","email":"eddie@bighatbio.com","url":"https://www.linkedin.com/in/zeroaltitude"}],"author":{"name":"Sebastian Wilzbach","email":"sebi.wilzbach@gmail.com"},"bugs":{"url":"https://github.com/BigHat-Biosciences/msa/issues"},"license":"BSL-1.0","readme":"MSAViewer\n==========\n\nMultiple Sequence Alignment Viewer - the MSAViewer - a BioJS component.\n\n```\n          .         .\n         ,8.       ,8.            d888888o.           .8.\n        ,888.     ,888.         .`8888:' `88.        .888.\n       .`8888.   .`8888.        8.`8888.   Y8       :88888.\n      ,8.`8888. ,8.`8888.       `8.`8888.          . `88888.\n     ,8'8.`8888,8^8.`8888.       `8.`8888.        .8. `88888.\n    ,8' `8.`8888' `8.`8888.       `8.`8888.      .8`8. `88888.\n   ,8'   `8.`88'   `8.`8888.       `8.`8888.    .8' `8. `88888.\n  ,8'     `8.`'     `8.`8888.  8b   `8.`8888.  .8'   `8. `88888.\n ,8'       `8        `8.`8888. `8b.  ;8.`8888 .888888888. `88888.\n,8'         `         `8.`8888. `Y8888P ,88P'.8'       `8. `88888.\n```\n\n[![Build Status](https://travis-ci.org/wilzbach/msa.svg?branch=master)](https://travis-ci.org/wilzbach/msa)\n[![NPM version](http://img.shields.io/npm/v/msa.svg)](https://www.npmjs.org/package/msa)\n[![Join the chat at https://gitter.im/wilzbach/msa](https://badges.gitter.im/wilzbach/msa.svg)](https://gitter.im/wilzbach/msa?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n[![Dependencies](https://david-dm.org/wilzbach/msa.png)](https://david-dm.org/wilzbach/msa)\n[![Code Climate](https://codeclimate.com/github/wilzbach/msa/badges/gpa.svg)](https://codeclimate.com/github/wilzbach/msa)\n[![NPM downloads](http://img.shields.io/npm/dm/msa.svg)](https://www.npmjs.org/package/msa)\n\n\n```html\n<script src=//cdn.bio.sh/msa/1.0/msa.min.gz.js></script>\n```\n\nYes you can either link to the minified, gzipped CDN version or download the dev version from S3 .\n\n[![Min version](http://img.shields.io/badge/prod-35kB-blue.svg)](https://cdn.bio.sh/msa/latest/msa.min.gz.js)\n[![Dev version](http://img.shields.io/badge/dev-latest-yellow.svg)](https://cdn.bio.sh/msa/latest/msa.js)\n\n[![NPM](https://nodei.co/npm/msa.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/msa/)\n\nUse it\n------\n\n[Full screen](http://msa.biojs.net/app) mode.\n\nDemo\n-----\n\nThese examples show how you could embed the MSAViewer into your page.\n\n[![JSBin clustal](http://img.shields.io/badge/jsbin-clustal-blue.svg)](http://jsbin.com/quvex/4/edit?js,output)\n[![JSBin large](http://img.shields.io/badge/jsbin-large-blue.svg)](http://jsbin.com/zunuko/4/edit?html,js,output)\n\n\n[Current sniper](http://workmen.biojs.net/demo/msa) with different examples\n\n#### display an MSA\n\n![basic MSA](https://i.imgur.com/nQtfMmI.png)\n\n\n####  Features\n* runs purely in the Browser\n* import files in format like FASTA, Clustal, ...\n* be interactive and receive [Events](https://github.com/wilzbach/msa/wiki/Events)\n* filter, sort, hide the sequences\n* display sequence [features](https://github.com/wilzbach/biojs-vis-easy_features/)\n* extendable [Views](https://github.com/wilzbach/msa/wiki/Views) for your integration\n* customizable viewport\n* simplicity as design rule\n* export to fASTAb\n* generate the consenus seq\n* more to come ...\n\n## Use the MSAViewer\n\n**The following examples assume that the ```msa()``` constructor is available.**\n\nIf you have loaded ```msa``` as a script in your web page with something like...\n```\n<script src=\"//cdn.bio.sh/msa/latest/msa.min.gz.js\"></script>\n```\n... then congratulations! You are ready to go.\n\nIf you are using ```npm``` and are adding msa as a dependency, then you can use the following:\n```\nvar msa = require(\"msa\");\n```\n\n### Import seqs\n\n#### a) Directly import a url\n\n```js\nvar opts = {\n  el: rootDiv,\n  importURL: \"./data/fer1.clustal\",\n};\nvar m = msa(opts);\n```\n\n-> [JSBin example](http://jsbin.com/yusifufiwa/1/edit?js,output)\n\n### b) Import your own sequences from a string\n\n```js\n// your fasta file (advice: save it in a DOM node)\nvar fasta = \">seq1\\n\\\nACTG\\n\\\n>seq2\\n\\\nACGG\\n\";\n\n// parsed array of the sequences\nvar seqs =  msa.io.fasta.parse(fasta);\n\nvar m = msa({\n     el: rootDiv,\n     seqs: seqs\n});\nm.render();\n```\n\n-> [JSBin Example](http://jsbin.com/zutaqofuro/1/edit?html,js,output)\n\n#### c) Asynchronously import seqs\n\n```js\nvar m = msa({\n\tel: rootDiv,\n});\nmsa.io.clustal.read(\"https://raw.githubusercontent.com/wilzbach/msa/master/test/dummy/samples/p53.clustalo.clustal\", function(err, seqs){\n\tm.seqs.reset(seqs);\n\tm.render();\n});\n```\n\n-> [JSBin example](http://jsbin.com/zesihapede/1/edit)\n\n### d) Import your sequences from the DOM\n\n```js\nvar fasta = document.getElementById(\"fasta-file\").innerText;\nvar seqs = msa.io.fasta.parse(fasta);\n\nvar m = msa({\n    el: rootDiv,\n    seqs: seqs\n});\nm.render();\n```\n\nwith the following data stored in your HTML page:\n\n```html\n<pre style=\"display: none\" id=\"fasta-file\">\n>seq1\nACTG\n>seq2\nACGG</pre>\n```\n\n-> [JSBin Example](http://jsbin.com/megecapene/1/edit?html,js,output)\n\n### Basic config parameters\n\n* `bootstrapMenu`: automagically show a menu\n* `el`: the root DOM element\n* `importURL`: when you want to import a file automagically\n* `seqs`: if you prefer to pass sequences as object\n\nThere also many other option - grouped into these categories. See below for more details.\n\n* `column`: hide columns\n* `colorscheme`: everything about a colorscheme\n* `conf`: basic configuration\n* `vis`:  visual elements\n* `visorder`: ordering of the visual elements\n* `zoomer`: everything that is pixel-based\n\n## Getting help\n\nPlease open an [issue](https://github.com/wilzbach/msa/issues/new)\nor ping us on [Gitter](https://gitter.im/wilzbach/msa)\n\n### MSAViewer in Action\n\n- [VaPoR](http://vapor.biojs.tgac.ac.uk)\n- [CATH](http://www.cathdb.info/) - [example](http://cathdb.info/version/v4_1_0/superfamily/3.40.50.620/funfam/89168/alignment)\n- [Gene3D](http://gene3d.biochem.ucl.ac.uk/) - [Paper](http://nar.oxfordjournals.org/content/early/2015/11/16/nar.gkv1231.full#F1), [example](http://gene3d.biochem.ucl.ac.uk/model?smd5=408c333701ec7e889d495aeb32d7ae10;regs=81_147;fam=2.30.30.40.FF19354;mregs=81_147;cath_mod=na)\n- [msaR](https://github.com/bene200/msaR) - Visualize an MSA as interactive R plot or shiny widget\n- [MPI Bioinformatics Toolkit for protein sequence analysis](http://toolkit.tuebingen.mpg.de/sections/alignment)\n- [PolyMarker](http://www.ncbi.nlm.nih.gov/pubmed/25649618)\n- [Galaxy visualization plugin](http://www.benjamenwhite.com/2015/07/biojs2galaxy-a-step-by-step-guide)\n- [BitterDB](http://bitterdb.agri.huji.ac.il/bitterdbtest/dbbitter.php#ReceptorAlignment)\n- [@thejmazz's _JavaScript and Bioinformatics_ tutorial](https://github.com/thejmazz/js-bioinformatics-exercise)\n- [Center for Phage Technology](https://cpt.tamu.edu/clustalw-msa-and-visualisations)\n- [PHYLOViZ Online](https://online.phyloviz.net)\n- [HistoneDB 2.0](https://www.ncbi.nlm.nih.gov/projects/HistoneDB2.0/index.fcgi/browse/)\n\nAre you using the MSAViewer? Don't hesistate to make a PR and let us know!\n\n### Change the colorscheme\n\nCheckout this [live example](http://workmen.biojs.net/demo/msa/colorscheme) or [edit](http://workmen.biojs.net/jsbin/msa/colorscheme).\n\n```\nvar opts = {\n  el: rootDiv,\n  importURL: \"./data/fer1.clustal\",\n  colorscheme: {\"scheme\": \"hydro\"}\n};\nvar m = msa(opts);\n```\n\nOwn colorscheme\n\n```\nvar opts = {\n  el: rootDiv,\n  importURL: \"./data/fer1.clustal\",\n  colorscheme: {\"scheme\": \"hydro\"}\n};\nvar m = msa(opts);\nm.g.colorscheme.addStaticScheme(\"own\",{A: \"orange\", C: \"red\", G: \"green\", T: \"blue\"});\nm.g.colorscheme.set(\"scheme\", \"own\");\n```\n\nHave a look at the [doc](https://github.com/wilzbach/msa-colorschemes) for more info.\n\n\n### Add features\n\nCheckout this [live example](http://workmen.biojs.net/demo/msa/fer1_annoted) or [edit](http://workmen.biojs.net/jsbin/msa/fer1_annoted).\n\n```\nvar xhr = require(\"xhr\");\nvar gffParser = require(\"biojs-io-gff\");\nvar m = msa({el: rootDiv, importURL: \"https://raw.githubusercontent.com/wilzbach/msa/master/test/dummy/samples/p53.clustalo.clustal\");\n\n// add features\nxhr(\"./data/fer1.gff3\", function(err, request, body) {\n  var features = gffParser.parseSeqs(body);\n  m.seqs.addFeatures(features);\n});\n\n// or even more\nxhr(\"./data/fer1.gff_jalview\", function(err, request, body) {\n  var features = gffParser.parseSeqs(body);\n  m.seqs.addFeatures(features);\n});\n```\n\n### Update seqs\n\n```\nm.seqs.at(0).set(\"hidden\", true) // hides the first seq\nm.seqs.at(0).get(\"seq\") // get raw seq\nm.seqs.at(0).get(\"seqId\") // get seqid\nm.seqs.at(0).set(\"seq\", \"AAAA\") // sets seq\nm.seqs.add({seq: \"AAA\"});  // we add a new seq at the end\nm.seqs.unshift({seq: \"AAA\"});  // we add a new seq at the beginning\nm.seqs.pop() // remove and return last seq\nm.seqs.shift() // remove and return first seq\nm.seqs.length // nr\nm.seqs.pluck(\"seqId\") // [\"id1\", \"id2\", ..]\nm.seqs.remove(m.seqs.at(2)) // remove seq2\nm.seqs.getMaxLength() // 200\nm.seqs.addFeatures()\nm.seqs.removeAllFeatures()\nm.seqs.setRef(m.seqs.at(1)) // sets the second seq as reference (default: first)\nm.seqs.comparator = \"seqId\" // sort after seqId\nm.seqs.sort() // apply our new comparator\nm.seqs.comparator =  function(a,b){ return - a.get(\"seq\").localeCompare(b.get(\"seq\"))} // sort after the seq itself in descending order\nm.seqs.sort()\n```\n\nEven [more](http://backbonejs.org/#Collection) is possible.\n\n### Update selection\n\n```\nm.g.selcol.add(new msa.selection.rowsel({seqId: \"f1\"})); // row-based\nm.g.selcol.add(new msa.selection.columnsel({xStart: 10, xEnd: 12})); // column-wise\nm.g.selcol.add(new msa.selection.possel({xStart: 10, xEnd: 12, seqId: \"f1\"})); // union of row and column\nm.g.selcol.reset([new msa.selection.rowsel({seqId: \"f1\"})]); // reset\n```\n\n```\nm.g.selcol.getBlocksForRow() // array of all selected residues for a row\nm.g.selcol.getAllColumnBlocks() // array with all selected columns\nm.g.selcol.invertRow(@model.pluck \"id\")\nm.g.selcol.invertCol([0,1,2])\nm.g.selcol.reset() // remove the entire selection\nm.g.user.set(\"searchText\", search) // search\n```\n\n### Jump to a column\n\n```\nm.g.zoomer.setLeftOffset(10) // jumps to column 10\n```\n\n### Export and save\n\n\n```\nm.utils.export.saveAsFile(m, \"all.fasta\") // export seqs\nm.utils.export.saveSelection(m, \"selection.fasta\")\nm.utils.export.saveAnnots(m, \"features.gff3\")\nm.utils.export.saveAsImg(m,\"biojs-msa.png\")\n\n// share the seqs with the public = get a public link\nm.utils.export.shareLink(m, function(link){\n\twindow.open(link, '_blank')\n})\n\n// share via jalview\nvar url =  m.g.config.get('url')\nif url.indexOf(\"localhost\") || url === \"dragimport\"\n    m.utils.export.publishWeb(m, function(link){\n    \tm.utils.export.openInJalview(link, m.g.colorscheme.get(\"scheme\"))\n    });\n}else{\n    m.utils.export.openInJalview(url, m.g.colorscheme.get(\"scheme\"))\n}\n```\n\n\n### Update attributes\n\n```\nmsa.g.vis.set(\"marker\", false); // hides the markers\nmsa.g.zoomer.set(\"alignmentHeight\", 500) // modifies the default height\n```\n\n### Listen to attribute events\n\nAll classes\n\n```\nm.g.selcol.on(\"change\", function(prev, new){\n\n})\n```\n\nYou can also listen to more specific events\n\n```\nm.g.vis.on(\"change:alignmentWidth\", function(prev, new){\n\n})\n```\n\n### Listen to user interactions\n\n```\nmsa.g.on(\"residue:click\", function(data){ ... }):\nmsa.g.on(\"residue:mousein\", function(data){ ... }):\nmsa.g.on(\"residue:mouseout\", function(data){ ... }):\n```\n\nIf you want to listen to mouse events, you need to set the flag: `conf.registerMouseHover`.\nThere is a plethora of events that you can listen to\n\n```\nmsa.g.on(\"row:click\", function(data){ ... }):\nmsa.g.on(\"column:click\", function(data){ ... }):\nmsa.g.on(\"meta:click\", function(data){ ... }):\n...\n```\n\n\n### Config parameters in g\n\n```\nconf: {\n    registerMouseHover: false,\n    registerMouseClicks: true,\n    importProxy: \"https://cors-anywhere.herokuapp.com/\",\n    eventBus: true,\n    alphabetSize: 20,\n    dropImport: false,\n    debug: false,\n    hasRef: false // hasReference,\n    manualRendering: false // manually control the render (not recommened)\n},\ncolorscheme: {\n    scheme: \"taylor\", // name of your color scheme\n    colorBackground: true, // otherwise only the text will be colored\n    showLowerCase: true, // used to hide and show lowercase chars in the overviewbox\n    opacity: 0.6 //opacity for the residues\n},\ncolumns: {\n\thidden: [] // hidden columns\n}\nvis: {\n    sequences: true,\n    markers: true,\n    metacell: false,\n    conserv: false,\n    overviewbox: false,\n    seqlogo: false,\n    gapHeader: false,\n    leftHeader: true,\n\n    // about the labels\n    labels: true,\n    labelName: true,\n    labelId: true,\n    labelPartition: false,\n    labelCheckbox: false,\n\n    // meta stuff\n    metaGaps: true,\n    metaIdentity: true,\n    metaLinks: true\n},\nzoomer: {\n    // general\n    alignmentWidth: \"auto\",\n    alignmentHeight: 225,\n    columnWidth: 15,\n    rowHeight: 15,\n    autoResize: true, // only for the width\n\n    // labels\n    textVisible: true,\n    labelIdLength: 30,\n    labelNameLength: 100,\n    labelPartLength: 15,\n    labelCheckLength: 15,\n    labelFontsize: 13,\n    labelLineHeight: \"13px\",\n\n    // marker\n    markerFontsize: \"10px\",\n    stepSize: 1,\n    markerStepSize: 2,\n    markerHeight: 20,\n\n    // canvas\n    residueFont: \"13\", //in px\n    canvasEventScale: 1,\n\n    // overview box\n    boxRectHeight: 2,\n    boxRectWidth: 2,\n    overviewboxPaddingTop: 10,\n\n    // meta cell\n    metaGapWidth: 35,\n    metaIdentWidth: 40,\n    metaLinksWidth: 25\n}\n```\n\nThe menu has its own small set of properties that can be modified. It's the `menu`\nproperty for both the defaultmenu as using the menu bootstrapping.\n\n```\nmenu: {\n    menuFontsize: \"14px\",\n    menuItemFontsize: \"14px\",\n    menuItemLineHeight: \"14px\",\n    menuMarginLeft: \"3px\",\n    menuPadding: \"3px 4px 3px 4px\",\n}\n```\n\n### Sequence model\n\n```\n{\n  name: \"\",\n  id: \"\",\n  seq: \"\",\n  height: 1,\n  ref: false // reference: the sequence used in BLAST or the consensus seq\n}\n```\n\nFAQ\n----\n\nQ: How can I define my own color scheme?\n\n↝ [play in JSBin](http://workmen.biojs.net/jsbin/msa/colorscheme)\n↝ [read the documentation](https://github.com/wilzbach/msa-colorschemes)\n\nGuidelines\n-----------\n\n* [KISS](http://en.wikipedia.org/wiki/KISS_principle) -> avoid komplexity\n* keep it modular\n* avoid boiler-plate code\n* avoid more than two args for public methods -> accepting a dictionary is more flexible\n* max. 200 lines per file (-> better organization)\n\nStep 1) Setting up\n-----------------\n\n```bash\ngit clone https://github.com/wilzbach/msa\ncd msa\nnpm install\n```\n\n* __npm__: You will need the `npm` package manager (and node) for this.\nOn most distributions there is a package, look [here](https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager)\n\nStep 2) Developing\n------------------\n\nIn the root dir execute:\n\n```\n./w\n```\n\nYou can browse the snippets at [localhost:9090/snippets](http:localhost:9090/snippets).\n\nCompiling for the browser\n--------------------------\n\nFor most cases using our CDN builds, is the best way to go.\nIf you need to make some changes to the MSA, you can get a minified bundle in\nthe folder `dist` with:\n\n```\ngulp build\n```\n\nPackage list\n-----------\n\n↝ [Package list](https://github.com/wilzbach/msa/wiki/Package-list)\n\nProject structure\n------------------\n\n* `browser.js` main file for browserify - defines the global namespace in the browser\n* `css` stylesheet folder (previously used for SASS)\n* `gulpfile.js` task definition file (for [gulp](http://gulpjs.com/])\n* `package.json` [npm config](https://www.npmjs.org/doc/files/package.json.html)\n* `examples` short coding snippets that are run by [`sniper`](https://github.com/biojs/sniper)\n* `src` the main source code\n\nWant to learn more?\n-------------------\n\nContinue at the [wiki](https://github.com/wilzbach/msa/wiki).\n\nGetting involved\n----------------\n\nJust pick a open issue on the [issue tracker](https://github.com/wilzbach/msa/issues)\nand help to make the MSAViewer better.\n\nThe best way to get your feature request is to send us a pull request.\nDon't worry about simple implementations, we will help you to make it better.\n\nFor more questions, ping us on the issue tracker or [Gitter](https://gitter.im/wilzbach/msa).\n\nTeam\n----\n\nWithout the help of these awesome people the MSAViewer project wouldn't have been possible:\n\nSebastian Wilzbach (Technical University of Munich; TUM), Ian Sillitoe (University College London), Benedikt Rauscher (TUM), Robert Sheridan (Harvard Medical School), James Procter (University of Dundee), Suzanna Lewis (Berkeley), Burkhard Rost (TUM), Tatyana Goldberg(TUM) and Guy Yachdav (TUM).\n\nDo you want to be part of the team? Just grab an issue and send us a PR!\nAsk us on [Gitter](https://gitter.im/wilzbach/msa) if you need help to get started.\n\nVersioning & CDN\n----------------\n\nNew MSA versions are released following [semantic versioning](http://semver.org/).\nStarting from 1.0.3 [git tags](https://github.com/wilzbach/msa/tags) match the versions deployed on npm and our CDN.\nOn our CDN we offer four different versions:  \n\n```\nhttps://cdn.bio.sh/msa/1.0.3/msa.min.gz.js // static, won't change\nhttps://cdn.bio.sh/msa/1.0/msa.min.gz.js // will be updated until a new minor version is released\nhttps://cdn.bio.sh/msa/1/msa.min.gz.js // will be updated until a new major version is released\nhttps://cdn.bio.sh/msa/latest/msa.min.gz.js // will be updated on every commit\n```\n\nIf you use the MSAViewer in production, we recommend to lock the CDN version to an exact release and update from time to time.\n\nLicense\n-------\n\nThis project is licensed under the [Boost Software License 1.0](https://github.com/wilzbach/msa/blob/master/LICENSE).\n\n> Permission is hereby granted, free of charge, to any person or organization\n> obtaining a copy of the software and accompanying documentation covered by\n> this license (the \"Software\") to use, reproduce, display, distribute,\n> execute, and transmit the Software, and to prepare derivative works of the\n> Software, and to permit third-parties to whom the Software is furnished to\n> do so, all subject to the following:\n\nIf you use the MSAViewer on your website, it solely requires you to link to us.\n\nCiting the MSAViewer\n--------------------\n\nThe MSAViewer has been published :tada:\n\nPlease cite [this paper](http://bioinformatics.oxfordjournals.org/content/early/2016/07/12/bioinformatics.btw474.abstract), when you use the MSAViewer in your project.\n\n> Guy Yachdav and Sebastian Wilzbach and Benedikt Rauscher and Robert Sheridan and Ian Sillitoe and James Procter and Suzanna Lewis and Burkhard Rost and Tatyana Goldberg. \"MSAViewer: interactive JavaScript visualization of multiple sequence alignments.\" Bioinformatics (2016)\n\nAs Bibtex:\n\n```\n@Article{msaviewer,\n   Author = {Guy Yachdav and Sebastian Wilzbach and Benedikt Rauscher and Robert Sheridan and Ian Sillitoe and James Procter and Suzanna Lewis and Burkhard Rost and Tatyana Goldberg},\n   Title=\"{{M}{S}{A}{V}iewer: interactive {J}ava{S}cript visualization of multiple sequence alignments}\",\n   Journal=\"Bioinformatics\",\n   Year=\"2016\",\n   Pages=\" \",\n   Month=\"Jul\",\n   Doi = {10.1093/bioinformatics/btw474},\n   Url = {http://dx.doi.org/10.1093/bioinformatics/btw474}\n}\n```\n","readmeFilename":"README.md"}