diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a5ac67..421fb84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file, following the suggestions of [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to [Semantic Versioning](http://semver.org/). +## [v0.2.1] - 2016-04-25 +### Changed +- fixed MMTF.version not included in distribution files + + ## [v0.2.0] - 2016-04-25 ### Added - MMTF namespace @@ -25,4 +30,5 @@ All notable changes to this project will be documented in this file, following t - Initial release +[v0.2.1]: https://github.com/rcsb/mmtf-javascript/compare/v0.2.0...v0.2.1 [v0.2.0]: https://github.com/rcsb/mmtf-javascript/compare/v0.1.0...v0.2.0 \ No newline at end of file diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 5edf978..5eebdc9 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -10,4 +10,6 @@ Change the version number in: - CHANGELOG.md - src/mmtf.js +Make sure the distribution files are up-to-date. + Push to github. Make a release on github, tag the commit and copy the relevant info from the changelog file. diff --git a/README.md b/README.md index 2c4bd54..09365a3 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ [![Build Status](https://travis-ci.org/rcsb/mmtf-javascript.svg?branch=master)](https://travis-ci.org/rcsb/mmtf-javascript) [![License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/rcsb/mmtf-javascript/blob/master/LICENSE) -[![Version](http://img.shields.io/badge/version-0.2.0-blue.svg?style=flat)](https://github.com/rcsb/mmtf-javascript/tree/master) +[![Version](http://img.shields.io/badge/version-0.2.1-blue.svg?style=flat)](https://github.com/rcsb/mmtf-javascript/releases/tag/v0.2.1) [![Changelog](https://img.shields.io/badge/changelog--lightgrey.svg?style=flat)](https://github.com/rcsb/mmtf-javascript/blob/master/CHANGELOG.md) JavaScript decoder for MMTF files. For a description of the format see the [MMTF specification](https://github.com/rcsb/mmtf/blob/master/spec.md). The minified library is available for [download](dist/mmtf.js). - ## Table of contents * [Decoding](#decoding) diff --git a/dist/mmtf.js b/dist/mmtf.js index 71f1013..90a06e5 100644 --- a/dist/mmtf.js +++ b/dist/mmtf.js @@ -1 +1 @@ -!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(r.MMTF=r.MMTF||{})}(this,function(r){"use strict";function t(r){function t(r){for(var t={},e=0;r>e;e++){var n=a();t[n]=a()}return t}function e(t){var e=r.subarray(i,i+t);return i+=t,e}function n(t){var e=r.subarray(i,i+t);i+=t;var n=65535;if(t>n){for(var o=[],a=0;ae;e++)t[e]=a();return t}function a(){var a,s,c,d=r[i];if(0===(128&d))return i++,d;if(128===(240&d))return s=15&d,i++,t(s);if(144===(240&d))return s=15&d,i++,o(s);if(160===(224&d))return s=31&d,i++,n(s);if(224===(224&d))return a=u.getInt8(i),i++,a;switch(d){case 192:return i++,null;case 194:return i++,!1;case 195:return i++,!0;case 196:return s=u.getUint8(i+1),i+=2,e(s);case 197:return s=u.getUint16(i+1),i+=3,e(s);case 198:return s=u.getUint32(i+1),i+=5,e(s);case 199:return s=u.getUint8(i+1),c=u.getUint8(i+2),i+=3,[c,e(s)];case 200:return s=u.getUint16(i+1),c=u.getUint8(i+3),i+=4,[c,e(s)];case 201:return s=u.getUint32(i+1),c=u.getUint8(i+5),i+=6,[c,e(s)];case 202:return a=u.getFloat32(i+1),i+=5,a;case 203:return a=u.getFloat64(i+1),i+=9,a;case 204:return a=r[i+1],i+=2,a;case 205:return a=u.getUint16(i+1),i+=3,a;case 206:return a=u.getUint32(i+1),i+=5,a;case 207:return i+=9,0;case 208:return a=u.getInt8(i+1),i+=2,a;case 209:return a=u.getInt16(i+1),i+=3,a;case 210:return a=u.getInt32(i+1),i+=5,a;case 211:return i+=9,0;case 212:return c=u.getUint8(i+1),i+=2,[c,e(1)];case 213:return c=u.getUint8(i+1),i+=2,[c,e(2)];case 214:return c=u.getUint8(i+1),i+=2,[c,e(4)];case 215:return c=u.getUint8(i+1),i+=2,[c,e(8)];case 216:return c=u.getUint8(i+1),i+=2,[c,e(16)];case 217:return s=u.getUint8(i+1),i+=2,n(s);case 218:return s=u.getUint16(i+1),i+=3,n(s);case 219:return s=u.getUint32(i+1),i+=5,n(s);case 220:return s=u.getUint16(i+1),i+=3,o(s);case 221:return s=u.getUint32(i+1),i+=5,o(s);case 222:return s=u.getUint16(i+1),i+=3,t(s);case 223:return s=u.getUint32(i+1),i+=5,t(s)}throw new Error("Unknown type 0x"+d.toString(16))}var i=0,u=new DataView(r.buffer);return a()}function e(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function n(r){return new Int8Array(r.buffer,r.byteOffset,r.byteLength)}function o(r,t){var e,n,o,a=(r.byteOffset,r.byteLength);for(t||(t=new Int16Array(a/2)),e=0,n=0,o=a/2;o>e;++e,n+=2)t[e]=r[n]<<8^r[n+1]<<0;return t}function a(r,t){var e,n,o,a=(r.byteOffset,r.byteLength);for(t||(t=new Int32Array(a/4)),e=0,n=0,o=a/4;o>e;++e,n+=4)t[e]=r[n]<<24^r[n+1]<<16^r[n+2]<<8^r[n+3]<<0;return t}function i(r){return new Int32Array(r.buffer,r.byteOffset,r.byteLength/4)}function u(r,t,e){var n=r.length,o=1/t;e||(e=new Float32Array(n));for(var a=0;n>a;++a)e[a]=r[a]*o;return e}function s(r,t){var e,n;if(!t){var o=0;for(e=0,n=r.length;n>e;e+=2)o+=r[e+1];t=new r.constructor(o)}var a=0;for(e=0,n=r.length;n>e;e+=2)for(var i=r[e],u=r[e+1],s=0;u>s;++s)t[a]=i,a+=1;return t}function c(r){for(var t=1,e=r.length;e>t;++t)r[t]+=r[t-1];return r}function d(r,t,e){var n=r.length/2+t.length;e||(e=new Int32Array(n));for(var o=0,a=0,i=0,u=r.length;u>i;i+=2){var s=r[i],c=r[i+1];e[o]=s,0!==i&&(e[o]+=e[o-1]),o+=1;for(var d=0;c>d;++d)e[o]=e[o-1]+t[a],o+=1,a+=1}return e}function f(r,t,e,n){var s=r.length/4/2+t.length/2;n||(n=new Float32Array(s));var c=i(n),f=d(a(r),o(t),c);return u(f,e,n)}function g(r,t,e){var n=e?i(e):void 0,o=s(a(r),n);return u(o,t,e)}function l(r,t){function o(r){return i?-1===i.indexOf(r):!0}t=t||{};var i=t.ignoreFields,u=(r.numBonds||0,r.numAtoms||0),d=r.groupTypeList.length/4,l=r.chainIdList.length/4,m=r.chainsPerModel.length,L={numGroups:d,numChains:l,numModels:m};["mmtfVersion","mmtfProducer","unitCell","spaceGroup","structureId","title","depositionDate","releaseDate","experimentalMethods","resolution","rFree","rWork","bioAssemblyList","entityList","groupList","numBonds","numAtoms","groupsPerChain","chainsPerModel"].forEach(function(t){void 0!==r[t]&&(L[t]=r[t])});var h="bondAtomList";r[h]&&o(h)&&(L[h]=a(r[h]));var y="bondOrderList";r[y]&&o(y)&&(L[y]=e(r[y])),L.xCoordList=f(r.xCoordBig,r.xCoordSmall,1e3),L.yCoordList=f(r.yCoordBig,r.yCoordSmall,1e3),L.zCoordList=f(r.zCoordBig,r.zCoordSmall,1e3);var p="bFactorList",v="bFactorBig",C="bFactorSmall";r[v]&&r[C]&&o(p)&&(L[p]=f(r[v],r[C],100));var I="atomIdList";r[I]&&o(I)&&(L[I]=c(s(a(r[I]))));var b="altLocList";r[b]&&o(b)&&(L[b]=s(a(r[b]),new Uint8Array(u)));var U="occupancyList";r[U]&&o(U)&&(L[U]=g(r[U],100)),L.groupIdList=c(s(a(r.groupIdList))),L.groupTypeList=a(r.groupTypeList);var x="secStructList";r[x]&&o(x)&&(L[x]=n(r[x]));var A="insCodeList";r[A]&&o(A)&&(L[A]=s(a(r[A]),new Uint8Array(d)));var w="sequenceIndexList";r[w]&&o(w)&&(L[w]=c(s(a(r[w])))),L.chainIdList=e(r.chainIdList);var F="chainNameList";return r[F]&&o(F)&&(L[F]=e(r[F])),L}function m(r){return String.fromCharCode.apply(null,r).replace(/\0/g,"")}function L(r,t){var e,n,o,a,i=t.onModel,u=t.onChain,s=t.onGroup,c=t.onAtom,d=t.onBond,f=0,g=0,l=0,L=0,h=r.chainNameList,y=r.secStructList,p=r.insCodeList,v=r.sequenceIndexList,C=r.bFactorList,I=r.altLocList,b=r.occupancyList,U=r.bondAtomList,x=r.bondOrderList;if(r.chainsPerModel.forEach(function(t){for(i&&i({chainCount:t,modelIndex:f}),e=0;t>e;++e){var U=r.groupsPerChain[g];if(u){var x=m(r.chainIdList.subarray(4*g,4*g+4)),A=null;h&&(A=m(h.subarray(4*g,4*g+4))),u({groupCount:U,chainIndex:g,modelIndex:f,chainId:x,chainName:A})}for(n=0;U>n;++n){var w=r.groupList[r.groupTypeList[l]],F=w.atomNameList.length;if(s){var S=null;y&&(S=y[l]);var O=null;r.insCodeList&&(O=String.fromCharCode(p[l]));var M=null;v&&(M=v[l]),s({atomCount:F,groupIndex:l,chainIndex:g,modelIndex:f,groupId:r.groupIdList[l],groupType:r.groupTypeList[l],groupName:w.groupName,singleLetterCode:w.singleLetterCode,chemCompType:w.chemCompType,secStruct:S,insCode:O,sequenceIndex:M})}if(d){var T=w.bondAtomList;for(o=0,a=w.bondOrderList.length;a>o;++o)d({atomIndex1:L+T[2*o],atomIndex2:L+T[2*o+1],bondOrder:w.bondOrderList[o]})}for(o=0;F>o;++o){if(c){var B=null;C&&(B=C[L]);var N=null;I&&(N=String.fromCharCode(I[L]));var P=null;b&&(P=b[L]),c({atomIndex:L,groupIndex:l,chainIndex:g,modelIndex:f,atomId:r.atomIdList[L],element:w.elementList[o],atomName:w.atomNameList[o],atomCharge:w.atomChargeList[o],xCoord:r.xCoordList[L],yCoord:r.yCoordList[L],zCoord:r.zCoordList[L],bFactor:B,altLoc:N,occupancy:P})}L+=1}l+=1}g+=1}f+=1}),d&&U)for(o=0,a=U.length;a>o;o+=2)d({atomIndex1:U[o],atomIndex2:U[o+1],bondOrder:x?x[o/2]:null})}function h(r,e){r instanceof ArrayBuffer&&(r=new Uint8Array(r));var n;return n=r instanceof Uint8Array?t(r):r,l(n,e)}var y=L;r.decode=h,r.traverse=y}); \ No newline at end of file +!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(r.MMTF=r.MMTF||{})}(this,function(r){"use strict";function t(r){function t(r){for(var t={},e=0;r>e;e++){var n=a();t[n]=a()}return t}function e(t){var e=r.subarray(i,i+t);return i+=t,e}function n(t){var e=r.subarray(i,i+t);i+=t;var n=65535;if(t>n){for(var o=[],a=0;ae;e++)t[e]=a();return t}function a(){var a,s,c,d=r[i];if(0===(128&d))return i++,d;if(128===(240&d))return s=15&d,i++,t(s);if(144===(240&d))return s=15&d,i++,o(s);if(160===(224&d))return s=31&d,i++,n(s);if(224===(224&d))return a=u.getInt8(i),i++,a;switch(d){case 192:return i++,null;case 194:return i++,!1;case 195:return i++,!0;case 196:return s=u.getUint8(i+1),i+=2,e(s);case 197:return s=u.getUint16(i+1),i+=3,e(s);case 198:return s=u.getUint32(i+1),i+=5,e(s);case 199:return s=u.getUint8(i+1),c=u.getUint8(i+2),i+=3,[c,e(s)];case 200:return s=u.getUint16(i+1),c=u.getUint8(i+3),i+=4,[c,e(s)];case 201:return s=u.getUint32(i+1),c=u.getUint8(i+5),i+=6,[c,e(s)];case 202:return a=u.getFloat32(i+1),i+=5,a;case 203:return a=u.getFloat64(i+1),i+=9,a;case 204:return a=r[i+1],i+=2,a;case 205:return a=u.getUint16(i+1),i+=3,a;case 206:return a=u.getUint32(i+1),i+=5,a;case 207:return i+=9,0;case 208:return a=u.getInt8(i+1),i+=2,a;case 209:return a=u.getInt16(i+1),i+=3,a;case 210:return a=u.getInt32(i+1),i+=5,a;case 211:return i+=9,0;case 212:return c=u.getUint8(i+1),i+=2,[c,e(1)];case 213:return c=u.getUint8(i+1),i+=2,[c,e(2)];case 214:return c=u.getUint8(i+1),i+=2,[c,e(4)];case 215:return c=u.getUint8(i+1),i+=2,[c,e(8)];case 216:return c=u.getUint8(i+1),i+=2,[c,e(16)];case 217:return s=u.getUint8(i+1),i+=2,n(s);case 218:return s=u.getUint16(i+1),i+=3,n(s);case 219:return s=u.getUint32(i+1),i+=5,n(s);case 220:return s=u.getUint16(i+1),i+=3,o(s);case 221:return s=u.getUint32(i+1),i+=5,o(s);case 222:return s=u.getUint16(i+1),i+=3,t(s);case 223:return s=u.getUint32(i+1),i+=5,t(s)}throw new Error("Unknown type 0x"+d.toString(16))}var i=0,u=new DataView(r.buffer);return a()}function e(r){return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}function n(r){return new Int8Array(r.buffer,r.byteOffset,r.byteLength)}function o(r,t){var e,n,o,a=(r.byteOffset,r.byteLength);for(t||(t=new Int16Array(a/2)),e=0,n=0,o=a/2;o>e;++e,n+=2)t[e]=r[n]<<8^r[n+1]<<0;return t}function a(r,t){var e,n,o,a=(r.byteOffset,r.byteLength);for(t||(t=new Int32Array(a/4)),e=0,n=0,o=a/4;o>e;++e,n+=4)t[e]=r[n]<<24^r[n+1]<<16^r[n+2]<<8^r[n+3]<<0;return t}function i(r){return new Int32Array(r.buffer,r.byteOffset,r.byteLength/4)}function u(r,t,e){var n=r.length,o=1/t;e||(e=new Float32Array(n));for(var a=0;n>a;++a)e[a]=r[a]*o;return e}function s(r,t){var e,n;if(!t){var o=0;for(e=0,n=r.length;n>e;e+=2)o+=r[e+1];t=new r.constructor(o)}var a=0;for(e=0,n=r.length;n>e;e+=2)for(var i=r[e],u=r[e+1],s=0;u>s;++s)t[a]=i,a+=1;return t}function c(r){for(var t=1,e=r.length;e>t;++t)r[t]+=r[t-1];return r}function d(r,t,e){var n=r.length/2+t.length;e||(e=new Int32Array(n));for(var o=0,a=0,i=0,u=r.length;u>i;i+=2){var s=r[i],c=r[i+1];e[o]=s,0!==i&&(e[o]+=e[o-1]),o+=1;for(var d=0;c>d;++d)e[o]=e[o-1]+t[a],o+=1,a+=1}return e}function f(r,t,e,n){var s=r.length/4/2+t.length/2;n||(n=new Float32Array(s));var c=i(n),f=d(a(r),o(t),c);return u(f,e,n)}function g(r,t,e){var n=e?i(e):void 0,o=s(a(r),n);return u(o,t,e)}function l(r,t){function o(r){return i?-1===i.indexOf(r):!0}t=t||{};var i=t.ignoreFields,u=(r.numBonds||0,r.numAtoms||0),d=r.groupTypeList.length/4,l=r.chainIdList.length/4,m=r.chainsPerModel.length,L={numGroups:d,numChains:l,numModels:m};["mmtfVersion","mmtfProducer","unitCell","spaceGroup","structureId","title","depositionDate","releaseDate","experimentalMethods","resolution","rFree","rWork","bioAssemblyList","entityList","groupList","numBonds","numAtoms","groupsPerChain","chainsPerModel"].forEach(function(t){void 0!==r[t]&&(L[t]=r[t])});var h="bondAtomList";r[h]&&o(h)&&(L[h]=a(r[h]));var v="bondOrderList";r[v]&&o(v)&&(L[v]=e(r[v])),L.xCoordList=f(r.xCoordBig,r.xCoordSmall,1e3),L.yCoordList=f(r.yCoordBig,r.yCoordSmall,1e3),L.zCoordList=f(r.zCoordBig,r.zCoordSmall,1e3);var y="bFactorList",p="bFactorBig",C="bFactorSmall";r[p]&&r[C]&&o(y)&&(L[y]=f(r[p],r[C],100));var I="atomIdList";r[I]&&o(I)&&(L[I]=c(s(a(r[I]))));var b="altLocList";r[b]&&o(b)&&(L[b]=s(a(r[b]),new Uint8Array(u)));var U="occupancyList";r[U]&&o(U)&&(L[U]=g(r[U],100)),L.groupIdList=c(s(a(r.groupIdList))),L.groupTypeList=a(r.groupTypeList);var x="secStructList";r[x]&&o(x)&&(L[x]=n(r[x]));var A="insCodeList";r[A]&&o(A)&&(L[A]=s(a(r[A]),new Uint8Array(d)));var w="sequenceIndexList";r[w]&&o(w)&&(L[w]=c(s(a(r[w])))),L.chainIdList=e(r.chainIdList);var F="chainNameList";return r[F]&&o(F)&&(L[F]=e(r[F])),L}function m(r){return String.fromCharCode.apply(null,r).replace(/\0/g,"")}function L(r,t){var e,n,o,a,i=t.onModel,u=t.onChain,s=t.onGroup,c=t.onAtom,d=t.onBond,f=0,g=0,l=0,L=0,h=r.chainNameList,v=r.secStructList,y=r.insCodeList,p=r.sequenceIndexList,C=r.bFactorList,I=r.altLocList,b=r.occupancyList,U=r.bondAtomList,x=r.bondOrderList;if(r.chainsPerModel.forEach(function(t){for(i&&i({chainCount:t,modelIndex:f}),e=0;t>e;++e){var U=r.groupsPerChain[g];if(u){var x=m(r.chainIdList.subarray(4*g,4*g+4)),A=null;h&&(A=m(h.subarray(4*g,4*g+4))),u({groupCount:U,chainIndex:g,modelIndex:f,chainId:x,chainName:A})}for(n=0;U>n;++n){var w=r.groupList[r.groupTypeList[l]],F=w.atomNameList.length;if(s){var S=null;v&&(S=v[l]);var O=null;r.insCodeList&&(O=String.fromCharCode(y[l]));var M=null;p&&(M=p[l]),s({atomCount:F,groupIndex:l,chainIndex:g,modelIndex:f,groupId:r.groupIdList[l],groupType:r.groupTypeList[l],groupName:w.groupName,singleLetterCode:w.singleLetterCode,chemCompType:w.chemCompType,secStruct:S,insCode:O,sequenceIndex:M})}if(d){var T=w.bondAtomList;for(o=0,a=w.bondOrderList.length;a>o;++o)d({atomIndex1:L+T[2*o],atomIndex2:L+T[2*o+1],bondOrder:w.bondOrderList[o]})}for(o=0;F>o;++o){if(c){var B=null;C&&(B=C[L]);var N=null;I&&(N=String.fromCharCode(I[L]));var P=null;b&&(P=b[L]),c({atomIndex:L,groupIndex:l,chainIndex:g,modelIndex:f,atomId:r.atomIdList[L],element:w.elementList[o],atomName:w.atomNameList[o],atomCharge:w.atomChargeList[o],xCoord:r.xCoordList[L],yCoord:r.yCoordList[L],zCoord:r.zCoordList[L],bFactor:B,altLoc:N,occupancy:P})}L+=1}l+=1}g+=1}f+=1}),d&&U)for(o=0,a=U.length;a>o;o+=2)d({atomIndex1:U[o],atomIndex2:U[o+1],bondOrder:x?x[o/2]:null})}function h(r,e){r instanceof ArrayBuffer&&(r=new Uint8Array(r));var n;return n=r instanceof Uint8Array?t(r):r,l(n,e)}var v="v0.2.1",y=L;r.decode=h,r.traverse=y,r.version=v}); \ No newline at end of file diff --git a/package.json b/package.json index 8c5d546..b88e430 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mmtf-javascript", - "version": "0.2.0", + "version": "0.2.1", "description": "JavaScript library for working with MMTF files", "main": "dist/mmtf-decode.js", "scripts": { diff --git a/src/mmtf.js b/src/mmtf.js index bab9baf..76a4aa3 100644 --- a/src/mmtf.js +++ b/src/mmtf.js @@ -7,7 +7,7 @@ import decodeMsgpack from "./msgpack-decode.js"; import decodeMmtf from "./mmtf-decode.js"; import traverseMmtf from "./mmtf-traverse.js"; -var version = "v0.2.0"; +var version = "v0.2.1"; /** * Decode MMTF fields @@ -37,5 +37,5 @@ function decode( binOrDict, params ){ var traverse = traverseMmtf; export { - decode, traverse + decode, traverse, version };