@fishka/seqio 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +266 -18
- package/dist/index.d.ts +266 -18
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -10
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
'use strict';function U(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function I(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function w(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function F(e,t,n){return e.subarray(t,t+n)}function ye(e){return String.fromCharCode(e>>>24&255,e>>>16&255,e>>>8&255,e&255)}var q=128,T=28;function se(e){if(e.byteLength<q)throw new Error(`ABIF too small: ${e.byteLength} bytes`);let t=0;if(U(F(e,0,4))!=="ABIF")if(e.byteLength>=132&&U(F(e,128,4))==="ABIF")t=128;else throw new Error('Not an ABIF file: missing "ABIF" magic.');let n=t;if(e.byteLength-n<q)throw new Error(`ABIF too small: ${e.byteLength-n} bytes after offset ${n}`);let r=w(e),i=r.getInt16(n+4,false),o=ie(e,r,n+6,n);if(o.tagName!=="tdir")throw new Error(`Expected "tdir" header entry, got "${o.tagName}"`);if(o.elementSize!==T)throw new Error(`Expected dir element size ${T}, got ${o.elementSize}`);let s=o.raw?.elementCount??o.elementCount,a=Math.max(0,s),c=r.getInt32(n+6+20,false);if(c<0||c+a*T>e.byteLength-n)throw new Error(`Directory out of bounds: offset=${c}, entries=${a}, file=${e.byteLength-n}`);let u=[];for(let R=0;R<a;R++)u.push(ie(e,r,n+c+R*T,n));let d=o.raw?.dataSize??a*T,f=n+c+a*T,g=Math.min(Math.max(0,d-a*T),Math.max(0,e.byteLength-f)),l={entryCount:a,rawEntryCount:s,elementType:o.elementType,tagNumber:o.tagNumber,entrySize:o.elementSize,dataSize:d,dataOffset:c,dataOffsetBytes:o.raw?.dataOffsetBytes??new Uint8Array(4),dataHandle:o.dataHandle,paddingBytes:new Uint8Array(F(e,f,g))},h=new Uint8Array(F(e,n+6+T,q-6-T)),S=t===128?new Uint8Array(F(e,0,128)):void 0,x=xe(e,n,c,d,u,t);return {version:i,tdir:l,entries:u,macBinaryOffset:t,macBinaryHeader:S,headerReserved:h,unreferencedRanges:x}}function xe(e,t,n,r,i,o){let s=e.byteLength,a=[];o===128&&a.push([0,128]),a.push([t,t+q]);let c=Math.max(i.length*T,Math.max(0,r));a.push([t+n,t+n+c]);for(let l of i)if(l.raw&&!l.raw.inline){let h=t+l.raw.dataOffset;a.push([h,h+l.payload.byteLength]);}let u=a.map(([l,h])=>[Math.max(0,Math.min(l,s)),Math.max(0,Math.min(h,s))]).filter(([l,h])=>h>l).sort((l,h)=>l[0]-h[0]),d=[];for(let[l,h]of u){let S=d[d.length-1];S&&l<=S[1]?S[1]=Math.max(S[1],h):d.push([l,h]);}let f=[],g=0;for(let[l,h]of d)l>g&&f.push({offset:g,bytes:new Uint8Array(F(e,g,l-g))}),g=Math.max(g,h);return g<s&&f.push({offset:g,bytes:new Uint8Array(F(e,g,s-g))}),f}function ie(e,t,n,r){let i=U(F(e,n,4)),o=t.getInt32(n+4,false),s=t.getInt16(n+8,false),a=t.getInt16(n+10,false),c=t.getInt32(n+12,false),u=t.getInt32(n+16,false),d=t.getInt32(n+24,false),f=Math.max(0,c*Math.max(0,a)),g=u>=0?u:f,l=u>=0?u<=4:f<=4,h=Math.max(0,a>0?Math.min(c,Math.floor(g/a)):Math.min(c,g)),S,x;if(l)x=-1,S=new Uint8Array(F(e,n+20,Math.min(4,g)));else {x=t.getInt32(n+20,false);let m=r+x;if(x<0||m+g>e.byteLength)throw new Error(`Entry ${i}${o}: payload out of bounds (offset=${x}, size=${g})`);S=new Uint8Array(F(e,m,g));}let R=new Uint8Array(F(e,n+20,4));return {tagName:i,tagNumber:o,elementType:s,elementSize:a,elementCount:h,payload:S,dataHandle:d,raw:{elementCount:c,dataSize:u,dataOffset:x,inline:l,dataOffsetBytes:R}}}function st(e){let t=e.macBinaryOffset,n=e.entries.length,r=e.tdir.entryCount,i=e.entries.map(l=>l.raw&&l.payload.byteLength===l.raw.dataSize?l.raw:void 0),o=q;o=Math.max(o,e.tdir.dataOffset+Math.max(e.tdir.dataSize,r*T));for(let l of i)l&&!l.inline&&(o=Math.max(o,l.dataOffset+l.dataSize));for(let l of e.unreferencedRanges)o=Math.max(o,l.offset-t+l.bytes.length);let s=n>r,a=o,c=s?a:e.tdir.dataOffset,u=n===r?e.tdir.dataSize:n*T;s&&(a+=u);let d=new Array(n);for(let l=0;l<n;l++){let h=e.entries[l].payload.byteLength;if(i[l]||h<=4){d[l]=-1;continue}d[l]=a,a+=h;}let f=new Uint8Array(a),g=w(f);f.set(I("ABIF"),0),g.setInt16(4,e.version,false),f.set(e.headerReserved,6+T),oe(f,g,6,{tagName:"tdir",tagNumber:e.tdir.tagNumber,elementType:e.tdir.elementType,elementSize:e.tdir.entrySize,elementCount:n,dataSize:u,dataHandle:e.tdir.dataHandle,offsetSlot:{kind:"external",value:c}}),n===r&&e.tdir.paddingBytes.length>0&&f.set(e.tdir.paddingBytes,c+n*T);for(let l=0;l<n;l++){let h=e.entries[l],S=i[l],x=c+l*T,R=h.payload.byteLength;oe(f,g,x,{tagName:h.tagName,tagNumber:h.tagNumber,elementType:h.elementType,elementSize:h.elementSize,elementCount:S?S.elementCount:h.elementCount,dataSize:S?S.dataSize:R,dataHandle:h.dataHandle,offsetSlot:R<=4?{kind:"inline",payload:h.payload,dataSize:R,staleTail:S?.dataOffsetBytes}:{kind:"external",value:S?S.dataOffset:d[l]}}),R>4&&f.set(h.payload,S?S.dataOffset:d[l]);}for(let l of e.unreferencedRanges)f.set(l.bytes,l.offset-t);return f}function oe(e,t,n,r){if(r.tagName.length!==4)throw new Error(`tagName must be 4 chars: "${r.tagName}"`);if(e.set(I(r.tagName),n),t.setInt32(n+4,r.tagNumber,false),t.setInt16(n+8,r.elementType,false),t.setInt16(n+10,r.elementSize,false),t.setInt32(n+12,r.elementCount,false),t.setInt32(n+16,r.dataSize,false),r.offsetSlot.kind==="external")t.setInt32(n+20,r.offsetSlot.value,false);else {let{payload:i,dataSize:o,staleTail:s}=r.offsetSlot;e.fill(0,n+20,n+24),e.set(i.subarray(0,o),n+20),s&&o<4&&e.set(s.subarray(o,4),n+20+o);}t.setInt32(n+24,r.dataHandle,false);}function N(e,t,n){return e.entries.find(r=>r.tagName===t&&r.tagNumber===n)}function at(e,t){return e.entries.filter(n=>n.tagName===t)}function Ce(e,t){return e.tagName!==t.tagName?e.tagName<t.tagName?-1:1:e.tagNumber-t.tagNumber}function Q(e,t){let n=e.findIndex(r=>Ce(r,t)>0);e.splice(n<0?e.length:n,0,t);}function M(e,t,n,r,i){if(r.byteLength!==i.elementCount*i.elementSize)throw new Error(`upsertEntry ${t}${n}: payload length ${r.byteLength} != count*size`);let o=N(e,t,n);o?(o.elementType=i.elementType,o.elementSize=i.elementSize,o.elementCount=i.elementCount,o.payload=r,o.raw=void 0):Q(e.entries,{tagName:t,tagNumber:n,elementType:i.elementType,elementSize:i.elementSize,elementCount:i.elementCount,payload:r,dataHandle:0});}function lt(e,t){let n=N(e,"DATA",t);if(!n)return;if(n.elementSize!==2)throw new Error(`DATA${t}: expected elementSize=2, got ${n.elementSize}`);let r=new Int16Array(n.elementCount),i=w(n.payload);for(let o=0;o<n.elementCount;o++)r[o]=i.getInt16(o*2,false);return r}function X(e){let t=N(e,"FWO_",1);return t?U(t.payload.subarray(0,t.elementCount)):"GATC"}function K(e){return /^[ACGT]{4}$/.test(e)&&new Set(e).size===4}function G(e){return !!(N(e,"DATA",9)&&N(e,"DATA",10)&&N(e,"DATA",11)&&N(e,"DATA",12))}function mt(e){return e>=5&&e<=8?"telemetry":e>=1&&e<=4||e>=9&&e<=12||e===105||e===205?"trace":"other"}function dt(e){let t=N(e,"RevC",1);if(!t)return;let n=w(t.payload);return t.payload.byteLength>=2?n.getInt16(0,false)!==0:t.payload.some(r=>r!==0)}function gt(e){let t=X(e);if(!K(t))throw new Error(`FWO_ is not a permutation of A/C/G/T: "${t}"`);return {[t[0]]:1,[t[1]]:2,[t[2]]:3,[t[3]]:4}}function pt(e){return v(e,2)??v(e,1)}function v(e,t){let n=N(e,"PBAS",t);if(n)return U(n.payload.subarray(0,n.elementCount)).replace(/\0+$/g,"")}function ht(e){return z(e,2)??z(e,1)}function z(e,t){let n=N(e,"PCON",t);if(!n)return;let r=new Array(n.elementCount);for(let i=0;i<n.elementCount;i++)r[i]=n.payload[i];return r}function bt(e){return B(e,2)??B(e,1)}function B(e,t){let n=N(e,"PLOC",t);if(!n)return;if(n.elementSize!==2)throw new Error(`PLOC${t}: expected elementSize=2, got ${n.elementSize}`);let r=w(n.payload),i=new Array(n.elementCount);for(let o=0;o<n.elementCount;o++)i[o]=r.getUint16(o*2,false);return i}function At(e){let t=N(e,"SPAC",1);if(!t||t.elementSize!==4||t.payload.byteLength<4)return;let n=w(t.payload).getFloat32(0,false);return Number.isFinite(n)&&n>0?n:void 0}function Nt(e,t,n={}){let{start:r,end:i}=t;if(!Number.isInteger(r)||!Number.isInteger(i)||r<0||i<=r)throw new Error(`cropAbif: invalid range [${r}, ${i})`);if(!G(e))throw new Error("cropAbif: no DATA9..12 block to crop \u2014 the range has nothing to apply to");let o=Math.min(H(e,9),H(e,10),H(e,11),H(e,12));if(i>o)throw new Error(`cropAbif: range end ${i} exceeds the processed trace length ${o}`);let s=n.rawTrace??"omit",a=[];for(let c of e.entries)c.tagName==="DATA"&&c.tagNumber>=9&&c.tagNumber<=12?a.push(Ne(c,r,i)):c.tagName==="DATA"&&c.tagNumber>=1&&c.tagNumber<=8?s==="full"&&a.push({...c}):c.tagName==="PBAS"||c.tagName==="PCON"||c.tagName==="PLOC"||a.push({...c});for(let c of we(e))a.push(...Re(e,c,r,i));return {version:e.version,tdir:e.tdir,entries:a,macBinaryOffset:0,macBinaryHeader:void 0,headerReserved:e.headerReserved,unreferencedRanges:[]}}function H(e,t){return N(e,"DATA",t)?.elementCount??0}function Ne(e,t,n){if(e.elementSize!==2)throw new Error(`cropAbif: DATA${e.tagNumber} expected elementSize=2, got ${e.elementSize}`);let r=new Uint8Array(e.payload.subarray(t*2,n*2));return {tagName:"DATA",tagNumber:e.tagNumber,elementType:e.elementType,elementSize:2,elementCount:n-t,payload:r,dataHandle:e.dataHandle}}function we(e){let t=new Set;for(let n of e.entries)n.tagName==="PBAS"&&t.add(n.tagNumber);return Array.from(t).sort((n,r)=>n-r)}function Re(e,t,n,r){let i=v(e,t);if(i===void 0)return [];let o=B(e,t);if(o===void 0)throw new Error(`cropAbif: PBAS${t} has no PLOC${t} to crop by`);if(o.length!==i.length)throw new Error(`cropAbif: PBAS${t}/PLOC${t} length mismatch (${i.length} vs ${o.length})`);let s=z(e,t);if(s!==void 0&&s.length!==i.length)throw new Error(`cropAbif: PBAS${t}/PCON${t} length mismatch`);let a=[];for(let f=0;f<o.length;f++)o[f]>=n&&o[f]<r&&a.push(f);let c=a.map(f=>i[f]).join(""),u=a.map(f=>o[f]-n),d=[{tagName:"PBAS",tagNumber:t,elementType:2,elementSize:1,elementCount:c.length,payload:I(c),dataHandle:0},{tagName:"PLOC",tagNumber:t,elementType:4,elementSize:2,elementCount:u.length,payload:Te(u),dataHandle:0}];if(s!==void 0){let f=a.map(g=>s[g]);d.push({tagName:"PCON",tagNumber:t,elementType:2,elementSize:1,elementCount:f.length,payload:Uint8Array.from(f),dataHandle:0});}return d}function Te(e){let t=new Uint8Array(e.length*2),n=w(t);for(let r=0;r<e.length;r++)n.setUint16(r*2,Math.max(0,Math.min(65535,e[r])),false);return t}var Ee={1:"byte",2:"char",3:"word",4:"short",5:"long",7:"float",8:"double",10:"date",11:"time",12:"thumb",13:"bool",18:"pString",19:"cString",1023:"tdir"};function J(e){return Ee[e]??(e>=1024?`user${e}`:`type${e}`)}function Fe(e,t=10){return e.length<=t?`[${e.join(", ")}]`:`[${e.slice(0,t).join(", ")}, \u2026 +${e.length-t}] (n=${e.length})`}function Le(e,t=80){return e.length>t?e.slice(0,t)+"\u2026":e}function ae(e){let t=e.subarray(0,16),n=Array.from(t,r=>r.toString(16).padStart(2,"0")).join(" ");return `${e.byteLength}B [${n}${e.byteLength>16?" \u2026":""}]`}function Z(e){if(e.kind==="numbers")return e.value;if(e.kind==="number")return [e.value]}function P(e,t,n,r){let i=Math.max(0,Math.min(t,Math.floor(e/n))),o=[];for(let s=0;s<i;s++)o.push(r(s*n));return o.length===1?{kind:"number",value:o[0]}:{kind:"numbers",value:o}}function ce(e,t,n){let r=w(n);switch(e){case 1:return {kind:"numbers",value:Array.from(n.subarray(0,t))};case 2:case 19:return {kind:"string",value:U(n.subarray(0,t)).replace(/\0+$/g,"")};case 3:return P(n.byteLength,t,2,i=>r.getUint16(i,false));case 4:return P(n.byteLength,t,2,i=>r.getInt16(i,false));case 5:return P(n.byteLength,t,4,i=>r.getInt32(i,false));case 7:return P(n.byteLength,t,4,i=>r.getFloat32(i,false));case 8:return P(n.byteLength,t,8,i=>r.getFloat64(i,false));case 10:{if(n.byteLength<4)return {kind:"unknown",value:n};let i=r.getInt16(0,false),o=r.getUint8(2),s=r.getUint8(3);return {kind:"date",value:{year:i,month:o,day:s}}}case 11:return n.byteLength<4?{kind:"unknown",value:n}:{kind:"time",value:{hour:r.getUint8(0),minute:r.getUint8(1),second:r.getUint8(2),hsec:r.getUint8(3)}};case 13:{let i=[];for(let o=0;o<Math.min(t,n.byteLength);o++)i.push(r.getUint8(o)!==0);return {kind:"bools",value:i}}case 18:{if(n.byteLength<1)return {kind:"string",value:""};let i=r.getUint8(0);return {kind:"string",value:U(F(n,1,Math.min(i,Math.max(0,t-1))))}}default:return {kind:"unknown",value:n}}}function Ue(e,t){switch(e.kind){case "number":return String(e.value);case "numbers":return Fe(e.value);case "string":return Le(JSON.stringify(e.value));case "bools":return e.value.length===1?String(e.value[0]):`[${e.value.join(", ")}]`;case "date":{let{year:n,month:r,day:i}=e.value;return `${n}-${String(r).padStart(2,"0")}-${String(i).padStart(2,"0")}`}case "time":{let{hour:n,minute:r,second:i}=e.value;return `${String(n).padStart(2,"0")}:${String(r).padStart(2,"0")}:${String(i).padStart(2,"0")}`}case "bytes":return `${J(t)} ${ae(e.value)}`;case "unknown":return `${J(t)} ${ae(e.value)}`}}function Ft(e,t=""){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=se(n),i=r.entries.map(m=>{let p=m.tagName==="PCON"&&m.elementSize===1?ce(1,m.elementCount,m.payload):ce(m.elementType,m.elementCount,m.payload);return {tag:m.tagName,tagNumber:m.tagNumber,elementType:m.elementType,elementTypeName:J(m.elementType),elementSize:m.elementSize,elementCount:m.elementCount,rawElementCount:m.raw?.elementCount??m.elementCount,dataSize:m.raw?.dataSize??m.elementCount*m.elementSize,dataOffset:m.raw?.dataOffset??-1,inline:m.raw?.inline??m.elementCount*m.elementSize<=4,decoded:p,preview:Ue(p,m.elementType)}}),o=X(r);K(o)||(o="GATC");let s={},a={A:[],C:[],G:[],T:[]},c={A:[],C:[],G:[],T:[]},u={comments:[]},d={},f={},g={},l=m=>o[m];for(let m=0;m<r.entries.length;m++){let p=r.entries[m],A=i[m].decoded;if(p.tagName==="DATA"){let b=Z(A);b&&(s[p.tagNumber]=b,p.tagNumber>=1&&p.tagNumber<=4?a[l(p.tagNumber-1)]=b:p.tagNumber>=9&&p.tagNumber<=12&&(c[l(p.tagNumber-9)]=b));}else if(p.tagName==="PBAS"&&A.kind==="string")d[p.tagNumber]=A.value;else if(p.tagName==="PCON"){let b=p.elementSize===1?Array.from(p.payload.subarray(0,p.elementCount)):Z(A);b&&(f[p.tagNumber]=b);}else if(p.tagName==="PLOC"){let b=Z(A);b&&(g[p.tagNumber]=b.map(Y=>Y<0?Y+65536:Y));}else if(p.tagName==="SPAC")if(p.elementSize===4&&p.payload.byteLength>=4){let b=w(p.payload).getFloat32(0,false);Number.isFinite(b)&&b>0&&(u.samplingRate=b);}else A.kind==="number"&&(u.samplingRate=A.value);else if(p.tagName==="SMPL"&&A.kind==="string")u.sampleName=A.value;else if(p.tagName==="LANE"&&A.kind==="number")u.laneNumber=A.value;else if(p.tagName==="TUBE"&&A.kind==="string")u.tube=A.value;else if(p.tagName==="MCHN"&&A.kind==="string")u.machineName=A.value;else if(p.tagName==="MODL"&&A.kind==="string")u.machineModel=A.value;else if(p.tagName==="RUND"&&A.kind==="date"){let b=A.value;u.runDate=`${b.year}-${String(b.month).padStart(2,"0")}-${String(b.day).padStart(2,"0")}`;}else if(p.tagName==="RUNT"&&A.kind==="time"){let b=A.value;u.runTime=`${String(b.hour).padStart(2,"0")}:${String(b.minute).padStart(2,"0")}:${String(b.second).padStart(2,"0")}`;}else p.tagName==="CMNT"&&A.kind==="string"?u.comments.push(A.value):p.tagName==="RevC"&&p.tagNumber===1&&(A.kind==="number"?u.reverseComplemented=A.value!==0:A.kind==="numbers"&&(u.reverseComplemented=A.value.some(b=>b!==0)));}let h=Object.keys(d).map(Number).sort((m,p)=>m-p).map(m=>({version:m,role:m===1?"edited":m===2?"called":"unknown",sequence:d[m],confidences:f[m]??[],positions:g[m]??[]})),S,x=2 in d?2:1 in d?1:Object.keys(d).map(Number)[0];if(x!==void 0&&d[x]!==void 0){let m=d[x].toUpperCase(),p=f[x]??[];p.length!==m.length&&(p=Object.keys(f).map(Number).map(b=>f[b]).find(b=>b.length===m.length)??[]);let A=g[x]??[];A.length!==m.length&&(A=Object.keys(g).map(Number).map(b=>g[b]).find(b=>b.length===m.length)??[]),S={sequence:m,confidences:p,positions:A,pbasVersion:x};}if(!Number.isFinite(u.samplingRate)||(u.samplingRate??0)<=0){let m=S?.positions,p=Math.max(c.A.length,c.C.length,c.G.length,c.T.length);m&&m.length>1?u.samplingRate=(m[m.length-1]-m[0])/(m.length-1):S&&S.sequence.length>0&&p>0&&(u.samplingRate=p/S.sequence.length);}let R={baseOrder:o,dataChannels:s,data1To4:a,data9To12:c};return {fileName:t,fileSize:n.byteLength,abifVersion:r.version,macBinaryOffset:r.macBinaryOffset,dirEntryCount:r.entries.length,metadata:u,chromatogram:R,baseCalls:S,baseCallVariants:h,entries:i}}function Lt(e){return e.A.length>0||e.C.length>0||e.G.length>0||e.T.length>0}function Ut(e){return Math.max(e.A.length,e.C.length,e.G.length,e.T.length)}function Mt(e,t){M(e,"PBAS",2,I(t),{elementType:2,elementSize:1,elementCount:t.length});}function Dt(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=Math.max(0,Math.min(255,Math.round(t[r])));M(e,"PCON",2,n,{elementType:2,elementSize:1,elementCount:t.length});}function qt(e,t){let n=new Uint8Array(t.length*2),r=w(n);for(let i=0;i<t.length;i++)r.setUint16(i*2,Math.max(0,Math.min(65535,t[i])),false);M(e,"PLOC",2,n,{elementType:4,elementSize:2,elementCount:t.length});}function Pt(e,t,n){let r=new Uint8Array(4);w(r).setFloat32(0,t,false),M(e,"SPAC",1,r,{elementType:7,elementSize:4,elementCount:1});let i=I(n),o=Math.min(255,i.length),s=new Uint8Array(1+o);s[0]=o,s.set(i.subarray(0,o),1),M(e,"SPAC",2,s,{elementType:18,elementSize:1,elementCount:1+o});let a=new Uint8Array(4);w(a).setFloat32(0,t,false),M(e,"SPAC",3,a,{elementType:7,elementSize:4,elementCount:1});}function vt(e){return e.length<2?0:(e[e.length-1]-e[0])/(e.length-1)}function zt(e){if(!G(e))for(let t=1;t<=4;t++){let n=N(e,"DATA",t);if(!n)continue;let r=8+t;N(e,"DATA",r)||Q(e.entries,{tagName:"DATA",tagNumber:r,elementType:n.elementType,elementSize:n.elementSize,elementCount:n.elementCount,payload:new Uint8Array(n.payload),dataHandle:0});}}function C(e,t,n){return t?{id:e,description:t,sequence:n}:{id:e,sequence:n}}function $(e){let t=typeof e=="string"?e:new TextDecoder().decode(e);return t.charCodeAt(0)===65279&&(t=t.slice(1)),t}function y(e){return $(e).split(/\r\n|\r|\n/)}function E(e){return e.replace(/\s+/g,"")}function L(e){return e.trim().length===0}function D(e){let t=e.trim(),n=t.search(/\s/);return n<0?t:t.slice(0,n)}function jt(e){let t=[],n=null,r="",i=[],o=0,s=0,a=()=>{n&&r&&i.length>0&&t.push(C(r,n,E(i.join("")))),n=null,r="",i=[],o=0,s=0;},c=(u,d,f)=>{a();let g=u.trim().split(/\s+/);n=d,r=f(g[1]??""),s=/^\d+$/.test(g[2]??"")?Number.parseInt(g[2],10):Number.POSITIVE_INFINITY;};for(let u of y(e)){if(/^CO\s/.test(u)){c(u,"consensus",f=>`Contig${f}`);continue}if(/^RD\s/.test(u)){c(u,"read",f=>f);continue}if(n===null)continue;if(L(u)||o>=s){a();continue}let d=E(u);i.push(d),o+=d.length,o>=s&&a();}return a(),t}var Ie=128,k=8192;function Xt(e){if(V(e,0,"ABIF")||V(e,Ie,"ABIF"))return "abif";if(V(e,0,".scf"))return "scf";if(V(e,0,"BAM"))return "bam";let t=qe(e);if(t===void 0)return "unknown";let n=Me(t),r=n==="clustal"&&!ue.test(t.trimStart());return (n==="unknown"||r)&&Oe(e)?"msf":n==="unknown"&&ke(e)?"pdb":n==="unknown"&&$e(e)?"gff":n}function $e(e){let t=e.length>k?e.subarray(0,k):e;return /^##FASTA[ \t]*$[\s\S]*?^>/m.test($(t))}function ke(e){let t=e.length>k?e.subarray(0,k):e,n=$(t),r=/-?\d+\.\d{3}/.source,i=new RegExp(`^(ATOM|HETATM)[ \\t]+\\d+[ \\t].*[ \\t]${r}[ \\t]+${r}[ \\t]+${r}`,"m"),o=/^SEQRES[ \t]+\d+[ \t]+(?:\S[ \t]+)?\d+[ \t]+[A-Za-z]/m,s=/^CRYST1[ \t]+\d+\.\d+[ \t]+\d+\.\d+[ \t]+\d+\.\d+/m;return i.test(n)||o.test(n)||s.test(n)}function Oe(e){let t=e.length>k?e.subarray(0,k):e,n=$(t),r=/\bMSF:\s*\d+\b[^\n]*\bCheck:\s*\d/.test(n)&&/^\s*Name:\s+.*\bLen:\s*\d/im.test(n),i=/^\s*Name:\s+\S+\s+Len:\s*\d+\s+Check:\s*\d+\s+Weight:/im.test(n);return r||i}var ue=/^(CLUSTAL|MUSCLE|MAFFT|T-?COFFEE|PROBCONS|KALIGN|MVIEW|PROMALS)\b/i;function Me(e){let t=e.trimStart();if(/^LOCUS\s/.test(t))return "genbank";if(/^ID\s/.test(t))return /(Reviewed|Unreviewed);| AA\.\s*$/.test(t)?"swissprot":"embl";if(/^#\s*STOCKHOLM/i.test(t))return "stockholm";if(/^#NEXUS/i.test(t))return "nexus";if(/^#mega\b/i.test(t))return "mega";if(/^HEADER\s{2,}/.test(t)||/^(ATOM|HETATM)\s+\d+\s/.test(t)||/^MODEL\s+\d/.test(t)||/^CRYST1\s/.test(t))return "pdb";if(/^AS\s+\d+\s+\d+\s*$/.test(t))return "ace";if(ue.test(t)||/multiple (sequence )?alignment/i.test(t)&&!/^[>@#]/.test(t)&&!/genedoc/i.test(t))return "clustal";if(/^!!(NA|AA)_MULTIPLE_ALIGNMENT/i.test(t)||/\bMSF:\s*\d/.test(t))return "msf";if(/^\d+\s+\d+\s*$/.test(t))return "phylip";if(/^##gff-version/i.test(t))return "gff";if(/^H\t(?:[^\t]*\t)*VN:Z:[12]\./.test(t))return "gfa";if(/^@(HD|SQ|RG|PG|CO)\t/.test(t))return "sam";if(/^>(P1|F1|DL|DC|RL|RC|N1|N3|XX);/i.test(t))return "pir";switch(t.charCodeAt(0)){case 62:case 59:return "fasta";case 64:return "fastq"}return De(t)?"sam":/^S\t[!-~]+\t/.test(t)?"gfa":"unknown"}function De(e){let t=e.split(" ");if(t.length<11)return false;let[,n,,r,i,o]=t;return /^\d+$/.test(n)&&/^\d+$/.test(r)&&/^\d+$/.test(i)&&/^(\*|(\d+[MIDNSHPX=])+)$/.test(o)}function qe(e){let t=e.length>k?e.subarray(0,k):e;for(let n of $(t).split(/\r\n|\r|\n/))if(n.trim().length>0)return n}function V(e,t,n){if(e.length<t+n.length)return false;for(let r=0;r<n.length;r++)if(e[t+r]!==n.charCodeAt(r))return false;return true}function tn(e){return fe(e,"embl")}function nn(e){return fe(e,"swissprot")}function fe(e,t){let n=y(e),r=[],i=false,o="",s="",a=[],c=[],u="header",d=()=>{i&&(r.push(C(Pe(t,o,s),a.join(" ").trim(),E(c.join("")))),i=false,o="",s="",a=[],c=[],u="header");};for(let f of n){if(f.startsWith("//")){d();continue}if(u==="sequence"){if(f.length===0||/^\s/.test(f)){c.push(f.replace(/[\s\d]/g,""));continue}u="header";}let g=f.slice(0,2);g==="ID"?(i&&d(),i=true,o=f.slice(2).trim()):g==="AC"?(s||(s=f.slice(2).split(";")[0].trim()),i=true):g==="DE"?(a.push(f.slice(2).trim()),i=true):g==="SQ"&&(u="sequence",i=true);}return d(),r}function Pe(e,t,n){if(e==="swissprot")return n||D(t);let r=t.split(";"),i=D(r[0]),o="";for(let s of r){let a=/^\s*SV\s+(\d+)/.exec(s);a&&(o=a[1]);}return (o?`${i}.${o}`:i)||n}var le=93,ee=33,de=60,ve=255;function ge(e){let t=y(e),n=[],r,i=[],o=()=>{r!==void 0&&n.push(ze(r,i.join("")));};for(let s of t)if(s[0]===">")o(),r=s.slice(1),i=[];else {if(L(s)||s[0]===";")continue;if(r===void 0)continue;i.push(s);}return o(),n}function sn(e){let t=y(e),n=[],r=0;for(;r<t.length;){if(L(t[r])||t[r][0]!=="@"){r++;continue}let i=t[r].slice(1);r++;let o=[];for(;r<t.length&&t[r][0]!=="+"&&t[r][0]!=="@";)o.push(t[r]),r++;let s=E(o.join(""));if(r>=t.length||t[r][0]==="@"){n.push(me(i,s,""));continue}r++;let a="";for(;r<t.length&&a.length<s.length&&!(t[r][0]==="@"&&Be(t,r));)a+=E(t[r]),r++;n.push(me(i,s,a));}return n}function an(e,t){let n=t?.lineWidth??de;return re(e).map(r=>`${te(">",r.id,r.description)}
|
|
2
|
-
${
|
|
3
|
-
${
|
|
1
|
+
'use strict';function I(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t}function O(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t}function R(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function T(e,t,n){return e.subarray(t,t+n)}function Me(e){return String.fromCharCode(e>>>24&255,e>>>16&255,e>>>8&255,e&255)}var W=128,L=28;function Se(e){if(e.byteLength<W)throw new Error(`ABIF too small: ${e.byteLength} bytes`);let t=0;if(I(T(e,0,4))!=="ABIF")if(e.byteLength>=132&&I(T(e,128,4))==="ABIF")t=128;else throw new Error('Not an ABIF file: missing "ABIF" magic.');let n=t;if(e.byteLength-n<W)throw new Error(`ABIF too small: ${e.byteLength-n} bytes after offset ${n}`);let r=R(e),i=r.getInt16(n+4,false),s=he(e,r,n+6,n);if(s.tagName!=="tdir")throw new Error(`Expected "tdir" header entry, got "${s.tagName}"`);if(s.elementSize!==L)throw new Error(`Expected dir element size ${L}, got ${s.elementSize}`);let o=s.raw?.elementCount??s.elementCount,a=Math.max(0,o),c=r.getInt32(n+6+20,false);if(c<0||c+a*L>e.byteLength-n)throw new Error(`Directory out of bounds: offset=${c}, entries=${a}, file=${e.byteLength-n}`);let u=[];for(let k=0;k<a;k++)u.push(he(e,r,n+c+k*L,n));let l=s.raw?.dataSize??a*L,f=n+c+a*L,m=Math.min(Math.max(0,l-a*L),Math.max(0,e.byteLength-f)),d={entryCount:a,rawEntryCount:o,elementType:s.elementType,tagNumber:s.tagNumber,entrySize:s.elementSize,dataSize:l,dataOffset:c,dataOffsetBytes:s.raw?.dataOffsetBytes??new Uint8Array(4),dataHandle:s.dataHandle,paddingBytes:new Uint8Array(T(e,f,m))},b=new Uint8Array(T(e,n+6+L,W-6-L)),S=t===128?new Uint8Array(T(e,0,128)):void 0,y=Ge(e,n,c,l,u,t);return {version:i,tdir:d,entries:u,macBinaryOffset:t,macBinaryHeader:S,headerReserved:b,unreferencedRanges:y}}function Ge(e,t,n,r,i,s){let o=e.byteLength,a=[];s===128&&a.push([0,128]),a.push([t,t+W]);let c=Math.max(i.length*L,Math.max(0,r));a.push([t+n,t+n+c]);for(let d of i)if(d.raw&&!d.raw.inline){let b=t+d.raw.dataOffset;a.push([b,b+d.payload.byteLength]);}let u=a.map(([d,b])=>[Math.max(0,Math.min(d,o)),Math.max(0,Math.min(b,o))]).filter(([d,b])=>b>d).sort((d,b)=>d[0]-b[0]),l=[];for(let[d,b]of u){let S=l[l.length-1];S&&d<=S[1]?S[1]=Math.max(S[1],b):l.push([d,b]);}let f=[],m=0;for(let[d,b]of l)d>m&&f.push({offset:m,bytes:new Uint8Array(T(e,m,d-m))}),m=Math.max(m,b);return m<o&&f.push({offset:m,bytes:new Uint8Array(T(e,m,o-m))}),f}function he(e,t,n,r){let i=I(T(e,n,4)),s=t.getInt32(n+4,false),o=t.getInt16(n+8,false),a=t.getInt16(n+10,false),c=t.getInt32(n+12,false),u=t.getInt32(n+16,false),l=t.getInt32(n+24,false),f=Math.max(0,c*Math.max(0,a)),m=u>=0?u:f,d=u>=0?u<=4:f<=4,b=Math.max(0,a>0?Math.min(c,Math.floor(m/a)):Math.min(c,m)),S,y;if(d)y=-1,S=new Uint8Array(T(e,n+20,Math.min(4,m)));else {y=t.getInt32(n+20,false);let g=r+y;if(y<0||g+m>e.byteLength)throw new Error(`Entry ${i}${s}: payload out of bounds (offset=${y}, size=${m})`);S=new Uint8Array(T(e,g,m));}let k=new Uint8Array(T(e,n+20,4));return {tagName:i,tagNumber:s,elementType:o,elementSize:a,elementCount:b,payload:S,dataHandle:l,raw:{elementCount:c,dataSize:u,dataOffset:y,inline:d,dataOffsetBytes:k}}}function vt(e){let t=e.macBinaryOffset,n=e.entries.length,r=e.tdir.entryCount,i=e.entries.map(d=>d.raw&&d.payload.byteLength===d.raw.dataSize?d.raw:void 0),s=W;s=Math.max(s,e.tdir.dataOffset+Math.max(e.tdir.dataSize,r*L));for(let d of i)d&&!d.inline&&(s=Math.max(s,d.dataOffset+d.dataSize));for(let d of e.unreferencedRanges)s=Math.max(s,d.offset-t+d.bytes.length);let o=n>r,a=s,c=o?a:e.tdir.dataOffset,u=n===r?e.tdir.dataSize:n*L;o&&(a+=u);let l=new Array(n);for(let d=0;d<n;d++){let b=e.entries[d].payload.byteLength;if(i[d]||b<=4){l[d]=-1;continue}l[d]=a,a+=b;}let f=new Uint8Array(a),m=R(f);f.set(O("ABIF"),0),m.setInt16(4,e.version,false),f.set(e.headerReserved,6+L),be(f,m,6,{tagName:"tdir",tagNumber:e.tdir.tagNumber,elementType:e.tdir.elementType,elementSize:e.tdir.entrySize,elementCount:n,dataSize:u,dataHandle:e.tdir.dataHandle,offsetSlot:{kind:"external",value:c}}),n===r&&e.tdir.paddingBytes.length>0&&f.set(e.tdir.paddingBytes,c+n*L);for(let d=0;d<n;d++){let b=e.entries[d],S=i[d],y=c+d*L,k=b.payload.byteLength;be(f,m,y,{tagName:b.tagName,tagNumber:b.tagNumber,elementType:b.elementType,elementSize:b.elementSize,elementCount:S?S.elementCount:b.elementCount,dataSize:S?S.dataSize:k,dataHandle:b.dataHandle,offsetSlot:k<=4?{kind:"inline",payload:b.payload,dataSize:k,staleTail:S?.dataOffsetBytes}:{kind:"external",value:S?S.dataOffset:l[d]}}),k>4&&f.set(b.payload,S?S.dataOffset:l[d]);}for(let d of e.unreferencedRanges)f.set(d.bytes,d.offset-t);return f}function be(e,t,n,r){if(r.tagName.length!==4)throw new Error(`tagName must be 4 chars: "${r.tagName}"`);if(e.set(O(r.tagName),n),t.setInt32(n+4,r.tagNumber,false),t.setInt16(n+8,r.elementType,false),t.setInt16(n+10,r.elementSize,false),t.setInt32(n+12,r.elementCount,false),t.setInt32(n+16,r.dataSize,false),r.offsetSlot.kind==="external")t.setInt32(n+20,r.offsetSlot.value,false);else {let{payload:i,dataSize:s,staleTail:o}=r.offsetSlot;e.fill(0,n+20,n+24),e.set(i.subarray(0,s),n+20),o&&s<4&&e.set(o.subarray(s,4),n+20+s);}t.setInt32(n+24,r.dataHandle,false);}function C(e,t,n){return e.entries.find(r=>r.tagName===t&&r.tagNumber===n)}function Pt(e,t){return e.entries.filter(n=>n.tagName===t)}function qe(e,t){return e.tagName!==t.tagName?e.tagName<t.tagName?-1:1:e.tagNumber-t.tagNumber}function ie(e,t){let n=e.findIndex(r=>qe(r,t)>0);e.splice(n<0?e.length:n,0,t);}function G(e,t,n,r,i){if(r.byteLength!==i.elementCount*i.elementSize)throw new Error(`upsertEntry ${t}${n}: payload length ${r.byteLength} != count*size`);let s=C(e,t,n);s?(s.elementType=i.elementType,s.elementSize=i.elementSize,s.elementCount=i.elementCount,s.payload=r,s.raw=void 0):ie(e.entries,{tagName:t,tagNumber:n,elementType:i.elementType,elementSize:i.elementSize,elementCount:i.elementCount,payload:r,dataHandle:0});}function _t(e,t){let n=C(e,"DATA",t);if(!n)return;if(n.elementSize!==2)throw new Error(`DATA${t}: expected elementSize=2, got ${n.elementSize}`);let r=new Int16Array(n.elementCount),i=R(n.payload);for(let s=0;s<n.elementCount;s++)r[s]=i.getInt16(s*2,false);return r}function se(e){let t=C(e,"FWO_",1);return t?I(t.payload.subarray(0,t.elementCount)):"GATC"}function oe(e){return /^[ACGT]{4}$/.test(e)&&new Set(e).size===4}function Q(e){return !!(C(e,"DATA",9)&&C(e,"DATA",10)&&C(e,"DATA",11)&&C(e,"DATA",12))}function Ht(e){return e>=5&&e<=8?"telemetry":e>=1&&e<=4||e>=9&&e<=12||e===105||e===205?"trace":"other"}function Vt(e){let t=C(e,"RevC",1);if(!t)return;let n=R(t.payload);return t.payload.byteLength>=2?n.getInt16(0,false)!==0:t.payload.some(r=>r!==0)}function jt(e){let t=se(e);if(!oe(t))throw new Error(`FWO_ is not a permutation of A/C/G/T: "${t}"`);return {[t[0]]:1,[t[1]]:2,[t[2]]:3,[t[3]]:4}}function Qt(e){return H(e,2)??H(e,1)}function H(e,t){let n=C(e,"PBAS",t);if(n)return I(n.payload.subarray(0,n.elementCount)).replace(/\0+$/g,"")}function Yt(e){return V(e,2)??V(e,1)}function V(e,t){let n=C(e,"PCON",t);if(!n)return;let r=new Array(n.elementCount);for(let i=0;i<n.elementCount;i++)r[i]=n.payload[i];return r}function Kt(e){return j(e,2)??j(e,1)}function j(e,t){let n=C(e,"PLOC",t);if(!n)return;if(n.elementSize!==2)throw new Error(`PLOC${t}: expected elementSize=2, got ${n.elementSize}`);let r=R(n.payload),i=new Array(n.elementCount);for(let s=0;s<n.elementCount;s++)i[s]=r.getUint16(s*2,false);return i}function Zt(e){let t=C(e,"SPAC",1);if(!t||t.elementSize!==4||t.payload.byteLength<4)return;let n=R(t.payload).getFloat32(0,false);return Number.isFinite(n)&&n>0?n:void 0}function nn(e,t,n={}){let{start:r,end:i}=t;if(!Number.isInteger(r)||!Number.isInteger(i)||r<0||i<=r)throw new Error(`cropAbif: invalid range [${r}, ${i})`);if(!Q(e))throw new Error("cropAbif: no DATA9..12 block to crop \u2014 the range has nothing to apply to");let s=Math.min(Y(e,9),Y(e,10),Y(e,11),Y(e,12));if(i>s)throw new Error(`cropAbif: range end ${i} exceeds the processed trace length ${s}`);let o=n.rawTrace??"omit",a=[];for(let c of e.entries)c.tagName==="DATA"&&c.tagNumber>=9&&c.tagNumber<=12?a.push(ve(c,r,i)):c.tagName==="DATA"&&c.tagNumber>=1&&c.tagNumber<=8?o==="full"&&a.push({...c}):c.tagName==="PBAS"||c.tagName==="PCON"||c.tagName==="PLOC"||a.push({...c});for(let c of Pe(e))a.push(...Be(e,c,r,i));return {version:e.version,tdir:e.tdir,entries:a,macBinaryOffset:0,macBinaryHeader:void 0,headerReserved:e.headerReserved,unreferencedRanges:[]}}function Y(e,t){return C(e,"DATA",t)?.elementCount??0}function ve(e,t,n){if(e.elementSize!==2)throw new Error(`cropAbif: DATA${e.tagNumber} expected elementSize=2, got ${e.elementSize}`);let r=new Uint8Array(e.payload.subarray(t*2,n*2));return {tagName:"DATA",tagNumber:e.tagNumber,elementType:e.elementType,elementSize:2,elementCount:n-t,payload:r,dataHandle:e.dataHandle}}function Pe(e){let t=new Set;for(let n of e.entries)n.tagName==="PBAS"&&t.add(n.tagNumber);return Array.from(t).sort((n,r)=>n-r)}function Be(e,t,n,r){let i=H(e,t);if(i===void 0)return [];let s=j(e,t);if(s===void 0)throw new Error(`cropAbif: PBAS${t} has no PLOC${t} to crop by`);if(s.length!==i.length)throw new Error(`cropAbif: PBAS${t}/PLOC${t} length mismatch (${i.length} vs ${s.length})`);let o=V(e,t);if(o!==void 0&&o.length!==i.length)throw new Error(`cropAbif: PBAS${t}/PCON${t} length mismatch`);let a=[];for(let f=0;f<s.length;f++)s[f]>=n&&s[f]<r&&a.push(f);let c=a.map(f=>i[f]).join(""),u=a.map(f=>s[f]-n),l=[{tagName:"PBAS",tagNumber:t,elementType:2,elementSize:1,elementCount:c.length,payload:O(c),dataHandle:0},{tagName:"PLOC",tagNumber:t,elementType:4,elementSize:2,elementCount:u.length,payload:ze(u),dataHandle:0}];if(o!==void 0){let f=a.map(m=>o[m]);l.push({tagName:"PCON",tagNumber:t,elementType:2,elementSize:1,elementCount:f.length,payload:Uint8Array.from(f),dataHandle:0});}return l}function ze(e){let t=new Uint8Array(e.length*2),n=R(t);for(let r=0;r<e.length;r++)n.setUint16(r*2,Math.max(0,Math.min(65535,e[r])),false);return t}var We={1:"byte",2:"char",3:"word",4:"short",5:"long",7:"float",8:"double",10:"date",11:"time",12:"thumb",13:"bool",18:"pString",19:"cString",1023:"tdir"};function ce(e){return We[e]??(e>=1024?`user${e}`:`type${e}`)}function _e(e,t=10){return e.length<=t?`[${e.join(", ")}]`:`[${e.slice(0,t).join(", ")}, \u2026 +${e.length-t}] (n=${e.length})`}function He(e,t=80){return e.length>t?e.slice(0,t)+"\u2026":e}function Ae(e){let t=e.subarray(0,16),n=Array.from(t,r=>r.toString(16).padStart(2,"0")).join(" ");return `${e.byteLength}B [${n}${e.byteLength>16?" \u2026":""}]`}function ae(e){if(e.kind==="numbers")return e.value;if(e.kind==="number")return [e.value]}function _(e,t,n,r){let i=Math.max(0,Math.min(t,Math.floor(e/n))),s=[];for(let o=0;o<i;o++)s.push(r(o*n));return s.length===1?{kind:"number",value:s[0]}:{kind:"numbers",value:s}}function ye(e,t,n){let r=R(n);switch(e){case 1:return {kind:"numbers",value:Array.from(n.subarray(0,t))};case 2:case 19:return {kind:"string",value:I(n.subarray(0,t)).replace(/\0+$/g,"")};case 3:return _(n.byteLength,t,2,i=>r.getUint16(i,false));case 4:return _(n.byteLength,t,2,i=>r.getInt16(i,false));case 5:return _(n.byteLength,t,4,i=>r.getInt32(i,false));case 7:return _(n.byteLength,t,4,i=>r.getFloat32(i,false));case 8:return _(n.byteLength,t,8,i=>r.getFloat64(i,false));case 10:{if(n.byteLength<4)return {kind:"unknown",value:n};let i=r.getInt16(0,false),s=r.getUint8(2),o=r.getUint8(3);return {kind:"date",value:{year:i,month:s,day:o}}}case 11:return n.byteLength<4?{kind:"unknown",value:n}:{kind:"time",value:{hour:r.getUint8(0),minute:r.getUint8(1),second:r.getUint8(2),hsec:r.getUint8(3)}};case 13:{let i=[];for(let s=0;s<Math.min(t,n.byteLength);s++)i.push(r.getUint8(s)!==0);return {kind:"bools",value:i}}case 18:{if(n.byteLength<1)return {kind:"string",value:""};let i=r.getUint8(0);return {kind:"string",value:I(T(n,1,Math.min(i,Math.max(0,t-1))))}}default:return {kind:"unknown",value:n}}}function Ve(e,t){switch(e.kind){case "number":return String(e.value);case "numbers":return _e(e.value);case "string":return He(JSON.stringify(e.value));case "bools":return e.value.length===1?String(e.value[0]):`[${e.value.join(", ")}]`;case "date":{let{year:n,month:r,day:i}=e.value;return `${n}-${String(r).padStart(2,"0")}-${String(i).padStart(2,"0")}`}case "time":{let{hour:n,minute:r,second:i}=e.value;return `${String(n).padStart(2,"0")}:${String(r).padStart(2,"0")}:${String(i).padStart(2,"0")}`}case "bytes":return `${ce(t)} ${Ae(e.value)}`;case "unknown":return `${ce(t)} ${Ae(e.value)}`}}function cn(e,t=""){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=Se(n),i=r.entries.map(g=>{let p=g.tagName==="PCON"&&g.elementSize===1?ye(1,g.elementCount,g.payload):ye(g.elementType,g.elementCount,g.payload);return {tag:g.tagName,tagNumber:g.tagNumber,elementType:g.elementType,elementTypeName:ce(g.elementType),elementSize:g.elementSize,elementCount:g.elementCount,rawElementCount:g.raw?.elementCount??g.elementCount,dataSize:g.raw?.dataSize??g.elementCount*g.elementSize,dataOffset:g.raw?.dataOffset??-1,inline:g.raw?.inline??g.elementCount*g.elementSize<=4,decoded:p,preview:Ve(p,g.elementType)}}),s=se(r);oe(s)||(s="GATC");let o={},a={A:[],C:[],G:[],T:[]},c={A:[],C:[],G:[],T:[]},u={comments:[]},l={},f={},m={},d=g=>s[g];for(let g=0;g<r.entries.length;g++){let p=r.entries[g],h=i[g].decoded;if(p.tagName==="DATA"){let A=ae(h);A&&(o[p.tagNumber]=A,p.tagNumber>=1&&p.tagNumber<=4?a[d(p.tagNumber-1)]=A:p.tagNumber>=9&&p.tagNumber<=12&&(c[d(p.tagNumber-9)]=A));}else if(p.tagName==="PBAS"&&h.kind==="string")l[p.tagNumber]=h.value;else if(p.tagName==="PCON"){let A=p.elementSize===1?Array.from(p.payload.subarray(0,p.elementCount)):ae(h);A&&(f[p.tagNumber]=A);}else if(p.tagName==="PLOC"){let A=ae(h);A&&(m[p.tagNumber]=A.map(z=>z<0?z+65536:z));}else if(p.tagName==="SPAC")if(p.elementSize===4&&p.payload.byteLength>=4){let A=R(p.payload).getFloat32(0,false);Number.isFinite(A)&&A>0&&(u.samplingRate=A);}else h.kind==="number"&&(u.samplingRate=h.value);else if(p.tagName==="SMPL"&&h.kind==="string")u.sampleName=h.value;else if(p.tagName==="LANE"&&h.kind==="number")u.laneNumber=h.value;else if(p.tagName==="TUBE"&&h.kind==="string")u.tube=h.value;else if(p.tagName==="MCHN"&&h.kind==="string")u.machineName=h.value;else if(p.tagName==="MODL"&&h.kind==="string")u.machineModel=h.value;else if(p.tagName==="RUND"&&h.kind==="date"){let A=h.value;u.runDate=`${A.year}-${String(A.month).padStart(2,"0")}-${String(A.day).padStart(2,"0")}`;}else if(p.tagName==="RUNT"&&h.kind==="time"){let A=h.value;u.runTime=`${String(A.hour).padStart(2,"0")}:${String(A.minute).padStart(2,"0")}:${String(A.second).padStart(2,"0")}`;}else p.tagName==="CMNT"&&h.kind==="string"?u.comments.push(h.value):p.tagName==="RevC"&&p.tagNumber===1&&(h.kind==="number"?u.reverseComplemented=h.value!==0:h.kind==="numbers"&&(u.reverseComplemented=h.value.some(A=>A!==0)));}let b=Object.keys(l).map(Number).sort((g,p)=>g-p).map(g=>({version:g,role:g===1?"edited":g===2?"called":"unknown",sequence:l[g],confidences:f[g]??[],positions:m[g]??[]})),S,y=2 in l?2:1 in l?1:Object.keys(l).map(Number)[0];if(y!==void 0&&l[y]!==void 0){let g=l[y].toUpperCase(),p=f[y]??[];p.length!==g.length&&(p=Object.keys(f).map(Number).map(A=>f[A]).find(A=>A.length===g.length)??[]);let h=m[y]??[];h.length!==g.length&&(h=Object.keys(m).map(Number).map(A=>m[A]).find(A=>A.length===g.length)??[]),S={sequence:g,confidences:p,positions:h,pbasVersion:y};}if(!Number.isFinite(u.samplingRate)||(u.samplingRate??0)<=0){let g=S?.positions,p=Math.max(c.A.length,c.C.length,c.G.length,c.T.length);g&&g.length>1?u.samplingRate=(g[g.length-1]-g[0])/(g.length-1):S&&S.sequence.length>0&&p>0&&(u.samplingRate=p/S.sequence.length);}let k={baseOrder:s,dataChannels:o,data1To4:a,data9To12:c};return {fileName:t,fileSize:n.byteLength,abifVersion:r.version,macBinaryOffset:r.macBinaryOffset,dirEntryCount:r.entries.length,metadata:u,chromatogram:k,baseCalls:S,baseCallVariants:b,entries:i}}function un(e){return e.A.length>0||e.C.length>0||e.G.length>0||e.T.length>0}function fn(e){return Math.max(e.A.length,e.C.length,e.G.length,e.T.length)}function pn(e,t){G(e,"PBAS",2,O(t),{elementType:2,elementSize:1,elementCount:t.length});}function hn(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=Math.max(0,Math.min(255,Math.round(t[r])));G(e,"PCON",2,n,{elementType:2,elementSize:1,elementCount:t.length});}function bn(e,t){let n=new Uint8Array(t.length*2),r=R(n);for(let i=0;i<t.length;i++)r.setUint16(i*2,Math.max(0,Math.min(65535,t[i])),false);G(e,"PLOC",2,n,{elementType:4,elementSize:2,elementCount:t.length});}function Sn(e,t,n){let r=new Uint8Array(4);R(r).setFloat32(0,t,false),G(e,"SPAC",1,r,{elementType:7,elementSize:4,elementCount:1});let i=O(n),s=Math.min(255,i.length),o=new Uint8Array(1+s);o[0]=s,o.set(i.subarray(0,s),1),G(e,"SPAC",2,o,{elementType:18,elementSize:1,elementCount:1+s});let a=new Uint8Array(4);R(a).setFloat32(0,t,false),G(e,"SPAC",3,a,{elementType:7,elementSize:4,elementCount:1});}function An(e){return e.length<2?0:(e[e.length-1]-e[0])/(e.length-1)}function yn(e){if(!Q(e))for(let t=1;t<=4;t++){let n=C(e,"DATA",t);if(!n)continue;let r=8+t;C(e,"DATA",r)||ie(e.entries,{tagName:"DATA",tagNumber:r,elementType:n.elementType,elementSize:n.elementSize,elementCount:n.elementCount,payload:new Uint8Array(n.payload),dataHandle:0});}}function w(e,t,n){return t?{id:e,description:t,sequence:n}:{id:e,sequence:n}}function U(e){let t=typeof e=="string"?e:new TextDecoder().decode(e);return t.charCodeAt(0)===65279&&(t=t.slice(1)),t}function x(e){return U(e).split(/\r\n|\r|\n/)}function N(e){return e.replace(/\s+/g,"")}function E(e){return e.trim().length===0}function q(e){let t=e.trim(),n=t.search(/\s/);return n<0?t:t.slice(0,n)}function Nn(e){let t=[],n=null,r="",i=[],s=0,o=0,a=()=>{n&&r&&i.length>0&&t.push(w(r,n,N(i.join("")))),n=null,r="",i=[],s=0,o=0;},c=(u,l,f)=>{a();let m=u.trim().split(/\s+/);n=l,r=f(m[1]??""),o=/^\d+$/.test(m[2]??"")?Number.parseInt(m[2],10):Number.POSITIVE_INFINITY;};for(let u of x(e)){if(/^CO\s/.test(u)){c(u,"consensus",f=>`Contig${f}`);continue}if(/^RD\s/.test(u)){c(u,"read",f=>f);continue}if(n===null)continue;if(E(u)||s>=o){a();continue}let l=N(u);i.push(l),s+=l.length,s>=o&&a();}return a(),t}var je=128,$=8192;function Fn(e){if(K(e,0,"ABIF")||K(e,je,"ABIF"))return "abif";if(K(e,0,".scf"))return "scf";if(K(e,0,"BAM"))return "bam";let t=Je(e);if(t===void 0)return "unknown";let n=Ze(t),r=n==="clustal"&&!xe.test(t.trimStart());return (n==="unknown"||r)&&Ke(e)?"msf":n==="unknown"&&Ye(e)?"pdb":n==="unknown"&&Qe(e)?"gff":n}function Qe(e){let t=e.length>$?e.subarray(0,$):e;return /^##FASTA[ \t]*$[\s\S]*?^>/m.test(U(t))}function Ye(e){let t=e.length>$?e.subarray(0,$):e,n=U(t),r=/-?\d+\.\d{3}/.source,i=new RegExp(`^(ATOM|HETATM)[ \\t]+\\d+[ \\t].*[ \\t]${r}[ \\t]+${r}[ \\t]+${r}`,"m"),s=/^SEQRES[ \t]+\d+[ \t]+(?:\S[ \t]+)?\d+[ \t]+[A-Za-z]/m,o=/^CRYST1[ \t]+\d+\.\d+[ \t]+\d+\.\d+[ \t]+\d+\.\d+/m;return i.test(n)||s.test(n)||o.test(n)}function Ke(e){let t=e.length>$?e.subarray(0,$):e,n=U(t),r=/\bMSF:\s*\d+\b[^\n]*\bCheck:\s*\d/.test(n)&&/^\s*Name:\s+.*\bLen:\s*\d/im.test(n),i=/^\s*Name:\s+\S+\s+Len:\s*\d+\s+Check:\s*\d+\s+Weight:/im.test(n);return r||i}var xe=/^(CLUSTAL|MUSCLE|MAFFT|T-?COFFEE|PROBCONS|KALIGN|MVIEW|PROMALS)\b/i;function Ze(e){let t=e.trimStart();if(/^LOCUS\s/.test(t))return "genbank";if(/^ID\s/.test(t))return /(Reviewed|Unreviewed);| AA\.\s*$/.test(t)?"swissprot":"embl";if(/^#\s*STOCKHOLM/i.test(t))return "stockholm";if(/^#NEXUS/i.test(t))return "nexus";if(/^#mega\b/i.test(t))return "mega";if(/^HEADER\s{2,}/.test(t)||/^(ATOM|HETATM)\s+\d+\s/.test(t)||/^MODEL\s+\d/.test(t)||/^CRYST1\s/.test(t))return "pdb";if(/^AS\s+\d+\s+\d+\s*$/.test(t))return "ace";if(xe.test(t)||/multiple (sequence )?alignment/i.test(t)&&!/^[>@#]/.test(t)&&!/genedoc/i.test(t))return "clustal";if(/^!!(NA|AA)_MULTIPLE_ALIGNMENT/i.test(t)||/\bMSF:\s*\d/.test(t))return "msf";if(/^\d+\s+\d+\s*$/.test(t))return "phylip";if(/^##gff-version/i.test(t))return "gff";if(/^H\t(?:[^\t]*\t)*VN:Z:[12]\./.test(t))return "gfa";if(/^@(HD|SQ|RG|PG|CO)\t/.test(t))return "sam";if(/^>(P1|F1|DL|DC|RL|RC|N1|N3|XX);/i.test(t))return "pir";switch(t.charCodeAt(0)){case 62:case 59:return "fasta";case 64:return "fastq"}return Xe(t)?"sam":/^S\t[!-~]+\t/.test(t)?"gfa":"unknown"}function Xe(e){let t=e.split(" ");if(t.length<11)return false;let[,n,,r,i,s]=t;return /^\d+$/.test(n)&&/^\d+$/.test(r)&&/^\d+$/.test(i)&&/^(\*|(\d+[MIDNSHPX=])+)$/.test(s)}function Je(e){let t=e.length>$?e.subarray(0,$):e;for(let n of U(t).split(/\r\n|\r|\n/))if(n.trim().length>0)return n}function K(e,t,n){if(e.length<t+n.length)return false;for(let r=0;r<n.length;r++)if(e[t+r]!==n.charCodeAt(r))return false;return true}function Dn(e){return ke(e,"embl")}function Mn(e){return ke(e,"swissprot")}function ke(e,t){let n=x(e),r=[],i=false,s="",o="",a=[],c=[],u="header",l=()=>{i&&(r.push(w(et(t,s,o),a.join(" ").trim(),N(c.join("")))),i=false,s="",o="",a=[],c=[],u="header");};for(let f of n){if(f.startsWith("//")){l();continue}if(u==="sequence"){if(f.length===0||/^\s/.test(f)){c.push(f.replace(/[\s\d]/g,""));continue}u="header";}let m=f.slice(0,2);m==="ID"?(i&&l(),i=true,s=f.slice(2).trim()):m==="AC"?(o||(o=f.slice(2).split(";")[0].trim()),i=true):m==="DE"?(a.push(f.slice(2).trim()),i=true):m==="SQ"&&(u="sequence",i=true);}return l(),r}function et(e,t,n){if(e==="swissprot")return n||q(t);let r=t.split(";"),i=q(r[0]),s="";for(let o of r){let a=/^\s*SV\s+(\d+)/.exec(o);a&&(s=a[1]);}return (s?`${i}.${s}`:i)||n}var we=93,ue=33,Re=60,tt=255;function Le(e){let t=x(e),n=[],r,i=[],s=()=>{r!==void 0&&n.push(nt(r,i.join("")));};for(let o of t)if(o[0]===">")s(),r=o.slice(1),i=[];else {if(E(o)||o[0]===";")continue;if(r===void 0)continue;i.push(o);}return s(),n}function vn(e){let t=x(e),n=[],r=0;for(;r<t.length;){if(E(t[r])||t[r][0]!=="@"){r++;continue}let i=t[r].slice(1);r++;let s=[];for(;r<t.length&&t[r][0]!=="+"&&t[r][0]!=="@";)s.push(t[r]),r++;let o=N(s.join(""));if(r>=t.length||t[r][0]==="@"){n.push(Ce(i,o,""));continue}r++;let a="";for(;r<t.length&&a.length<o.length&&!(t[r][0]==="@"&&rt(t,r));)a+=N(t[r]),r++;n.push(Ce(i,o,a));}return n}function Pn(e,t){let n=t?.lineWidth??Re;return de(e).map(r=>`${fe(">",r.id,r.description)}
|
|
2
|
+
${st(r.sequence,n)}`).join("")}function Bn(e){return de(e).map(it).join("")}function zn(e,t){let n=t?.lineWidth??Re;return de(e).map(r=>`${fe(">",r.id,r.description)}
|
|
3
|
+
${ot(r.qualities,n)}`).join("")}function Wn(e){return !!e&&e.length>0&&!e.every(t=>t===tt)}function nt(e,t){let{id:n,description:r}=Ne(e),i=N(t);return r===void 0?{id:n,sequence:i}:{id:n,description:r,sequence:i}}function Ce(e,t,n){let{id:r,description:i}=Ne(e),s=new Array(t.length);for(let o=0;o<t.length;o++){let a=o<n.length?n.charCodeAt(o):ue;s[o]=le(a-ue);}return i===void 0?{id:r,sequence:t,qualities:s}:{id:r,description:i,sequence:t,qualities:s}}function Ne(e){let t=e.trim(),n=t.search(/\s/);return n<0?{id:t}:{id:t.slice(0,n),description:t.slice(n+1).trim()||void 0}}function rt(e,t){let n=t+1;for(;n<e.length&&e[n][0]!=="+"&&e[n][0]!=="@";)n++;return e[n]?.[0]==="+"}function it(e){let{id:t,description:n,sequence:r,qualities:i}=e;if(i.length!==r.length)throw new Error(`FASTQ ${t}: ${i.length} quality scores for ${r.length} bases`);let s=i.map(at).join("");return `${fe("@",t,n)}
|
|
4
4
|
${r}
|
|
5
5
|
+
|
|
6
|
-
${
|
|
7
|
-
`}function
|
|
8
|
-
`))throw new Error("FASTX header must not contain a newline");return e+r}function
|
|
6
|
+
${s}
|
|
7
|
+
`}function fe(e,t,n){let r=n?`${t} ${n}`:t;if(r.includes(`
|
|
8
|
+
`))throw new Error("FASTX header must not contain a newline");return e+r}function st(e,t){if(e.length===0)return "";if(t<=0||e.length<=t)return `${e}
|
|
9
9
|
`;let n="";for(let r=0;r<e.length;r+=t)n+=`${e.slice(r,r+t)}
|
|
10
|
-
`;return n}function
|
|
11
|
-
`;return i}function
|
|
12
|
-
`)
|
|
13
|
-
|
|
10
|
+
`;return n}function ot(e,t){if(e.length===0)return "";let n=e.map(le),r=t<=0?n.length:t,i="";for(let s=0;s<n.length;s+=r)i+=`${n.slice(s,s+r).join(" ")}
|
|
11
|
+
`;return i}function le(e){let t=Math.round(e);return t<0?0:t>we?we:t}function at(e){return String.fromCharCode(le(e)+ue)}function de(e){return Array.isArray(e)?e:[e]}var me=class{constructor(t){this.source=t;this.offset=0;}parse(){this.skipWhitespace();let t=this.parseLocation();return this.skipWhitespace(),{location:t,complete:t.kind!=="unparsed"&&this.offset===this.source.length}}parseLocation(){this.skipWhitespace();let t=this.offset,n=this.readIdentifier();if(n&&n.toLowerCase()!=="one-of"&&this.peek()==="("){this.offset+=1;let s=[];for(;this.offset<this.source.length&&this.peek()!==")"&&(s.push(this.parseLocation()),this.skipWhitespace(),this.peek()===",");)this.offset+=1;return this.skipWhitespace(),this.peek()!==")"?this.unparsed(t):(this.offset+=1,{kind:"operator",operator:n.toLowerCase(),parts:s,raw:this.source.slice(t,this.offset)})}this.offset=t;let r=this.findRemoteColon();if(r!==void 0){let s=this.source.slice(this.offset,r).trim();this.offset=r+1;let o=this.parseLocation();return {kind:"remote",accession:s,location:o,raw:this.source.slice(t,this.offset)}}let i=this.parsePosition();if(i.kind==="unknown")return this.unparsed(t);if(this.skipWhitespace(),this.source.startsWith("..",this.offset)){this.offset+=2;let s=this.parsePosition();return s.kind==="unknown"?this.unparsed(t):{kind:"range",start:i,end:s,raw:this.source.slice(t,this.offset)}}if(this.peek()==="^"){this.offset+=1;let s=this.parsePosition();return s.kind==="unknown"?this.unparsed(t):{kind:"between",left:i,right:s,raw:this.source.slice(t,this.offset)}}return {kind:"point",position:i,raw:this.source.slice(t,this.offset)}}parsePosition(){this.skipWhitespace();let t=this.offset,n=this.peek();if((n==="<"||n===">")&&(this.offset+=1),this.readIdentifier()?.toLowerCase()==="one-of"&&this.peek()==="("){this.offset+=1;let s=[];for(;this.offset<this.source.length&&this.peek()!==")";){this.skipWhitespace();let o=this.readInteger();if(o===void 0)return {kind:"unknown",raw:this.source.slice(t,this.offset)};if(s.push(o),this.skipWhitespace(),this.peek()!==",")break;this.offset+=1;}return this.peek()!==")"?{kind:"unknown",raw:this.source.slice(t,this.offset)}:(this.offset+=1,{kind:"one-of",values:s,raw:this.source.slice(t,this.offset)})}this.offset=n==="<"||n===">"?t+1:t;let i=this.readInteger();if(i===void 0)return {kind:"unknown",raw:this.source.slice(t,this.offset)};if(this.peek()==="."&&this.source[this.offset+1]!=="."){this.offset+=1;let s=this.readInteger();return s===void 0?{kind:"unknown",raw:this.source.slice(t,this.offset)}:{kind:"within",values:[i,s],raw:this.source.slice(t,this.offset)}}return {kind:n==="<"?"before":n===">"?"after":"exact",value:i,raw:this.source.slice(t,this.offset)}}findRemoteColon(){let t=this.offset;for(;t<this.source.length;){let n=this.source[t];if(n===":")return t;if(n==="("||n===")"||n===","||n==="^"||/[ \t\r\n]/.test(n)||n==="."&&this.source[t+1]===".")return;t+=1;}}readIdentifier(){let t=/^[A-Za-z][A-Za-z0-9_-]*/.exec(this.source.slice(this.offset));if(t)return this.offset+=t[0].length,t[0]}readInteger(){let t=/^-?\d+/.exec(this.source.slice(this.offset));if(t)return this.offset+=t[0].length,Number.parseInt(t[0],10)}skipWhitespace(){for(;/\s/.test(this.peek());)this.offset+=1;}peek(){return this.source[this.offset]??""}unparsed(t){return this.offset=this.source.length,{kind:"unparsed",raw:this.source.slice(t)}}};function Te(e){return new me(e).parse()}var B=12,ge=5,ee=21;function Kn(e){return ct(e)}function Zn(e,t={}){let n=U(e),r=ut(n),i=[],s=ft(r,i),o={features:t.features??true,references:t.references??true,sequence:t.sequence??true,sections:t.sections??true};return s.map((c,u)=>lt(n,r,c,u,i,o)).map(c=>({...c,diagnostics:i.filter(u=>u.span.start>=c.span.start&&u.span.start<=c.span.end)}))}function ct(e){let t=x(e),n=[],r=false,i="",s="",o="",a=[],c=[],u="header",l=()=>{r&&(n.push(w(o||s||i,a.join(" ").trim(),N(c.join("")))),r=false,i="",s="",o="",a=[],c=[],u="header");};for(let f of t){if(f.startsWith("//")){l();continue}let m=F(f);if(u==="origin"){if(!m){c.push(f.replace(/[\s\d]/g,""));continue}u="header";}if(u==="definition"&&!m){a.push(f.trim());continue}if(!m)continue;let d=m==="LOCUS"?f.replace(/^LOCUS\s*/i,""):f.slice(B).trim();m==="LOCUS"&&r&&l(),r=true,u="header",m==="LOCUS"?i=q(d):m==="ACCESSION"?s=q(d):m==="VERSION"?o=q(d):m==="DEFINITION"?(a=[d],u="definition"):m==="ORIGIN"&&(u="origin");}return l(),n}function ut(e){let t=[],n=/[^\r\n]*(?:\r\n|\r|\n|$)/g,r;for(;(r=n.exec(e))!==null;){let i=r[0];if(i.length===0)break;let s=i.replace(/[\r\n]+$/,"");if(t.push({text:s,start:r.index,end:r.index+s.length,number:t.length+1}),n.lastIndex===e.length)break}return t}function ft(e,t){let n=[],r;for(let i=0;i<e.length;i+=1){let s=e[i];if(s){if(F(s.text)==="LOCUS"){if(r!==void 0){n.push({startLine:r,endLine:i-1,terminated:false});let o=e[i-1]??s;t.push(J("missing-record-terminator","Record ended at the next LOCUS without //.",X(o)));}r=i;continue}r!==void 0&&/^\/\/\s*$/.test(s.text)&&(n.push({startLine:r,endLine:i,terminated:true}),r=void 0);}}if(r!==void 0){let i=Math.max(r,e.length-1),s=e[i];s&&(n.push({startLine:r,endLine:i,terminated:false}),t.push(J("truncated-record","Final record has no // terminator.",X(s))));}return n}function lt(e,t,n,r,i,s){let o=t.slice(n.startLine,n.endLine+1),a=o[0],c=o[o.length-1];if(!a||!c)throw new Error("Internal GenBank record range is empty.");let u=v(a,0,c,c.text.length),l=dt(a),f=mt(e,o),{sections:m,byKey:d}=f,b=P(d.get("DEFINITION")),S=Ee(P(d.get("ACCESSION"))),y=Ee(P(d.get("VERSION"))),k=y.find(M=>!/^GI:/i.test(M)),g=y.find(M=>/^GI:/i.test(M)),p=kt(d),h=s.features?gt(o,r,i):[],A=s.sequence?At(o):"",z=s.references?yt(o):[];return {id:k??S[0]??l.name,locus:l,definition:b||void 0,accessions:S,version:k,gi:g?.slice(3),keywords:Fe(P(d.get("KEYWORDS")),";"),dbLinks:d.get("DBLINK")?.flatMap(M=>Ct(M.value))??[],sourceInfo:p,references:z,comments:d.get("COMMENT")?.map(M=>M.value)??[],features:h,sequence:A,contig:P(d.get("CONTIG"))||void 0,baseCount:wt(P(d.get("BASE COUNT"))),sections:s.sections?m:[],span:u,terminated:n.terminated,originalText:e.slice(u.start,u.end),diagnostics:[]}}function dt(e){let n=e.text.replace(/^LOCUS\s*/i,"").split(/\s+/).filter(Boolean),r=n[0]??"",i=n[1],s=i&&/^\d+$/.test(i)?Number.parseInt(i,10):void 0,o=s===void 0?void 0:n[2],a=n.slice(s===void 0?1:3),c=a.find(h=>/^(linear|circular)$/i.test(h)),u=c?c.toLowerCase():"unknown",l=[...a].reverse().find(h=>/^\d{2}-[A-Za-z]{3}-\d{4}$/.test(h)),f=l?a.indexOf(l):-1,m=f>0?a[f-1]:void 0,d=m&&/^[A-Za-z]{3}$/.test(m)?m:void 0,b=a.find(h=>/^(ss-|ds-|ms-)/i.test(h)),S=/^(ss-|ds-|ms-)(.*)$/i.exec(b??""),y=S?.[1],k=S?.[2]||void 0,g=new Set([c,l,d,b].filter(h=>h!==void 0)),p=[k,...a.filter(h=>!g.has(h))].filter(Boolean).join(" ")||void 0;return {name:r,length:s,unit:o,strandedness:y,moleculeType:p,topology:u,division:d,date:l,tokens:n,span:X(e)}}function mt(e,t){let n=[],r=new Map,i=0;for(;i<t.length;){let s=t[i];if(!s)break;let o=F(s.text);if(o==="FEATURES"){for(i+=1;i<t.length;){let S=t[i]?.text??"";if(F(S)&&!Z(S))break;i+=1;}continue}if(!o||o==="LOCUS"||o==="ORIGIN"||o==="//"){i+=1;continue}let a=i;for(;a+1<t.length;){let S=t[a+1];if(!S||F(S.text))break;a+=1;}let c=t.slice(i,a+1),u=c[c.length-1]??s,f=[s.text.slice(B).trim(),...c.slice(1).map(S=>S.text.trim())].filter(Boolean).join(" "),m=v(s,0,u,u.text.length),d={key:o,value:f,raw:e.slice(m.start,m.end),span:m};n.push(d);let b=r.get(o)??[];b.push(d),r.set(o,b),i=a+1;}return {sections:n,byKey:r}}function gt(e,t,n){let r=[],i=e.findIndex(o=>F(o.text)==="FEATURES");if(i<0)return r;let s=i+1;for(;s<e.length;){let o=e[s];if(!o)break;let a=Z(o.text);if(F(o.text)&&!a)break;if(!a){s+=1;continue}let c=s;for(s+=1;s<e.length;){let f=e[s];if(!f||Z(f.text)||F(f.text))break;s+=1;}let u=e.slice(c,s),l=pt(u,t,r.length,n);r.push(l);}return r}function pt(e,t,n,r){let i=e[0],s=e[e.length-1];if(!i||!s)throw new Error("Internal GenBank feature range is empty.");let o=Z(i.text)??"",a=[i];for(let m of e.slice(1)){if(pe(m.text).startsWith("/"))break;a.push(m);}let c=a.map(m=>pe(m.text).trim()).join(""),u=Te(c),l=a[a.length-1]??i,f=v(i,ee,l,l.text.length);return u.complete||r.push({...J("unparsed-feature-location",`Could not fully parse feature location: ${c}`,f),recordIndex:t,featureIndex:n}),{key:o,locationText:c,location:u.location,qualifiers:ht(e.slice(a.length),t,n,r),span:v(i,ge,s,s.text.length),locationSpan:f}}function ht(e,t,n,r){let i=[],s,o=()=>{s&&(s.quoted&&!s.closed&&r.push({...J("unterminated-qualifier",`Qualifier /${s.name} has no closing quote.`,X(s.endLine)),recordIndex:t,featureIndex:n}),i.push(St(s)),s=void 0);};for(let a of e){let c=pe(a.text);if(c.startsWith("/")){o(),s=bt(a,c);continue}s&&(s.chunks.push(c.trim()),s.rawChunks.push(c),s.endLine=a,s.quoted&&Ie(c)&&(s.closed=true));}return o(),i}function bt(e,t){let n=t.indexOf("="),r=t.slice(1,n<0?void 0:n).trim(),i=n<0?"":t.slice(n+1).trim(),s=i.startsWith('"');return {name:r,chunks:n<0?[]:[i],rawChunks:n<0?[]:[t.slice(n+1)],quoted:s,closed:!s||Ie(i.slice(1)),startLine:e,startColumn:Math.max(ee,e.text.indexOf("/")),endLine:e}}function St(e){let{name:t,chunks:n,rawChunks:r,quoted:i,startLine:s,startColumn:o,endLine:a}=e,c=r.length>0?r.join(`
|
|
12
|
+
`):void 0,u;if(n.length>0){let l=t==="translation"?n.join("").replace(/\s+/g,""):n.join(" ").replace(/\s+/g," ");u=i?l.replace(/^"/,"").replace(/"$/,"").replace(/""/g,'"'):l;}return {name:t,value:u,rawValue:c,quoted:i,terminated:!i||e.closed,span:v(s,o,a,a.text.length)}}function At(e){let t=e.findIndex(r=>F(r.text)==="ORIGIN");if(t<0)return "";let n=[];for(let r of e.slice(t+1)){if(F(r.text)||/^\/\/\s*$/.test(r.text))break;n.push(r.text.replace(/[\s\d]/g,""));}return n.join("")}function yt(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(!r||F(r.text)!=="REFERENCE"){n+=1;continue}let i=[r];for(n+=1;n<e.length;){let s=e[n];if(!s||F(s.text)&&!/^\s/.test(s.text))break;i.push(s),n+=1;}t.push(xt(i));}return t}function xt(e){let t=e[0],n=e[e.length-1];if(!t||!n)throw new Error("Internal GenBank reference range is empty.");let r=t.text.slice(B).trim(),i=/^(\d+)/.exec(r),s=/\((.+)\)\s*$/.exec(r),o={},a;for(let u of e.slice(1)){let l=F(u.text);l?(a=l,o[l]=[u.text.slice(B).trim()]):a&&o[a]?.push(u.text.trim());}let c=Object.fromEntries(Object.entries(o).map(([u,l])=>[u,l.filter(Boolean).join(" ")]));return {number:i?Number.parseInt(i[1]??"",10):void 0,range:s?.[1],authors:c.AUTHORS,consortium:c.CONSRTM,title:c.TITLE,journal:c.JOURNAL,pubmed:c.PUBMED,remark:c.REMARK,fields:c,span:v(t,0,n,n.text.length)}}function kt(e){let t=e.get("SOURCE")?.[0],n=e.get("ORGANISM")?.[0];if(!t&&!n)return;let r=n?.raw.split(/\r\n|\r|\n/)??[],i=r[0]?.slice(B).trim()??"",s=r.slice(1).map(o=>o.trim()).join(" ");return {description:t?.value??"",organism:i||void 0,taxonomy:Fe(s,";"),span:t?.span??n?.span}}function wt(e){let t={},n=/(\d+)\s+([A-Za-z]+)/g,r;for(;(r=n.exec(e))!==null;){let i=r[1],s=r[2];i&&s&&(t[s.toLowerCase()]=Number.parseInt(i,10));}return Object.keys(t).length>0?t:void 0}function Ct(e){return e.split(/\s+(?=[A-Za-z][A-Za-z0-9_-]*:)/).map(t=>t.trim()).filter(Boolean)}function Fe(e,t){let n=e.replace(/\.\s*$/,"");return !n||n==="."?[]:n.split(t).map(r=>r.trim()).filter(Boolean)}function P(e){return e?.map(t=>t.value).join(" ").trim()??""}function Ee(e){return e.split(/\s+/).filter(Boolean)}function F(e){if(/^\/\/\s*$/.test(e))return "//";if(/^LOCUS(?:\s|$)/i.test(e))return "LOCUS";let t=e.slice(0,B).trim();return /^[A-Za-z][A-Za-z0-9_ ]*$/.test(t)?t.toUpperCase():void 0}function Z(e){if(e.length<=ge||!/^\s{5}\S/.test(e))return;let t=e.slice(ge,ee).trim();return t&&!t.startsWith("/")?t:void 0}function pe(e){return e.slice(ee)}function Ie(e){let t=0;for(let n=0;n<e.length;n+=1)if(e[n]==='"'){if(e[n+1]==='"'){n+=1;continue}t+=1;}return t%2===1}function X(e){return v(e,0,e,e.text.length)}function v(e,t,n,r){return {start:e.start+t,end:n.start+r,startLine:e.number,startColumn:t+1,endLine:n.number,endColumn:r+1}}function J(e,t,n){return {code:e,severity:"warning",message:t,span:n}}function Rt(e){let t=[];for(let n of x(e)){if(n.charCodeAt(0)!==83||n.charCodeAt(1)!==9)continue;let r=n.split(" "),i=r[1];if(!i)continue;let s=/^\d+$/.test(r[2]??"")&&r[3]!==void 0?r[3]:r[2];!s||s==="*"||t.push(w(i,"",s));}return t}function ar(e){let t=x(e),n=t.findIndex(r=>/^##FASTA\s*$/i.test(r.trim()));return n<0?[]:Le(t.slice(n+1).join(`
|
|
13
|
+
`))}var D=class{constructor(){this.order=[];this.blocks=new Map;}add(t,n){let r=this.blocks.get(t);r?r.push(n):(this.blocks.set(t,[n]),this.order.push(t));}toRecords(){return this.order.map(t=>w(t,"",N((this.blocks.get(t)??[]).join(""))))}},Lt=/^[A-Za-z0-9.*?~-]+$/;function dr(e){let t=new D,n=false;for(let r of x(e)){if(E(r)||/^\s/.test(r)||!n&&(n=true,/multiple (sequence )?alignment/i.test(r)||/^(CLUSTAL|MUSCLE|MAFFT|T-?COFFEE|PROBCONS|KALIGN|MVIEW|PROMALS)/i.test(r)))continue;let i=/^(\S+)\s+(\S+)/.exec(r);i&&Lt.test(i[2])&&t.add(i[1],i[2]);}return t.toRecords()}function mr(e){let t=[],n=new D;for(let r of x(e)){if(r.startsWith("//")){t.push(...n.toRecords()),n=new D;continue}if(E(r)||r.startsWith("#"))continue;let i=/^(\S+)\s+(\S+)/.exec(r);i&&n.add(i[1],i[2]);}return t.push(...n.toRecords()),t}function gr(e){let t=x(e),n=0;for(;n<t.length&&E(t[n]);)n++;let r=(t[n]??"").trim().split(/\s+/),i=Number.parseInt(r[0]??"",10),s=Number.parseInt(r[1]??"",10);if(!Number.isFinite(i)||i<=0)return [];n++;let o=[],a=[];for(;n<t.length&&o.length<i;n++){if(E(t[n]))continue;let l=/^(\S+)\s+(.*)$/.exec(t[n]);l&&(o.push(l[1]),a.push(l[2].replace(/\s+/g,"")));}let c=o.length;if(c===0)return [];let u=Number.isFinite(s)&&s>0?s:Number.POSITIVE_INFINITY;for(let l=0;n<t.length;n++){if(E(t[n]))continue;let f=l%c;a[f].length<u&&(a[f]+=t[n].replace(/\s+/g,"")),l++;}return o.map((l,f)=>w(l,"",u===Number.POSITIVE_INFINITY?a[f]:a[f].slice(0,u)))}function pr(e){let t=U(e).replace(/\[[^\]]*\]/g,""),n=new D,r=false;for(let i of t.split(/\r\n|\r|\n/)){if(!r){/^\s*matrix\b/i.test(i)&&(r=true);continue}let s=i.trim();if(s===";")break;if(E(s))continue;let o=s.endsWith(";"),a=o?s.slice(0,-1).trim():s,c=/^("[^"]+"|'[^']+'|\S+)\s+(.+)$/.exec(a);if(c&&n.add(c[1].replace(/^['"]|['"]$/g,""),c[2].replace(/\s+/g,"")),o)break}return n.toRecords()}function hr(e){let t=new D,n=false;for(let r of x(e)){if(!n){r.trimStart().startsWith("//")&&(n=true);continue}if(E(r))continue;let i=/^\s*(\S+)\s+(.+)$/.exec(r);if(!i)continue;let s=i[2].replace(/\s+/g,"");/\d/.test(s)||t.add(i[1],s);}return t.toRecords()}function br(e){let t=new D,n,r=false,i=false,s=o=>{let a="";for(let c of o)i?c==='"'&&(i=false):c==='"'?i=true:a+=c;return a.replace(/\s+/g,"")};for(let o of x(e)){if(i){let c=s(o);n!==void 0&&c&&t.add(n,c);continue}let a=o.trim();if(a.length!==0){if(r){a.includes(";")&&(r=false);continue}if(!/^#mega\b/i.test(a)){if(a.startsWith("!")){a.includes(";")||(r=true);continue}if(a.startsWith("#")){let c=/^#(\S+)\s*(.*)$/.exec(a);if(c){n=c[1];let u=s(c[2]);u&&t.add(n,u);}}else if(n!==void 0){let c=s(a);c&&t.add(n,c);}}}}return t.toRecords()}var Oe={ALA:"A",ARG:"R",ASN:"N",ASP:"D",CYS:"C",GLN:"Q",GLU:"E",GLY:"G",HIS:"H",ILE:"I",LEU:"L",LYS:"K",MET:"M",PHE:"F",PRO:"P",SER:"S",THR:"T",TRP:"W",TYR:"Y",VAL:"V",MSE:"M",SEC:"U",PYL:"O",ASX:"B",GLX:"Z",UNK:"X",DA:"A",DC:"C",DG:"G",DT:"T",DU:"U",DI:"I",A:"A",C:"C",G:"G",U:"U",T:"T",I:"I",N:"N"};function Nt(e){return Oe[e.toUpperCase()]??"X"}function Tt(e){return e.length>=2&&Object.prototype.hasOwnProperty.call(Oe,e.toUpperCase())}function Et(e){if(e.length>=20&&/^\d+$/.test(e.slice(7,10).trim())&&/^\d+$/.test(e.slice(13,17).trim())){let r=e.slice(19).trim().split(/\s+/).filter(Boolean);if(r.length>0)return {chain:e[11],codes:r}}let n=e.trim().split(/\s+/);return n.length>=5?{chain:n[2],codes:n.slice(4)}:null}function Ue(e,t,n){let r=e.map.get(t);r||(e.map.set(t,r=[]),e.order.push(t)),r.push(n);}function kr(e){let t=x(e),n={order:[],map:new Map},r={order:[],map:new Map},i=new Set,s=false;for(let a of t)if(a.startsWith("SEQRES")){let c=Et(a);if(c)for(let u of c.codes)Ue(n,c.chain,u);}else if(a.startsWith("ENDMDL"))s=true;else if(!s&&a.length>=27&&(a.startsWith("ATOM")||a.startsWith("HETATM"))){let c=a.slice(17,20).trim();if(a.startsWith("ATOM")||Tt(c)){let u=a[21],l=`${u}|${a.slice(22,27)}`;i.has(l)||(i.add(l),Ue(r,u,c));}}return [...n.order,...r.order.filter(a=>!n.map.has(a))].map(a=>{let c=n.map.get(a)??r.map.get(a)??[];return w(a.trim(),"",c.map(Nt).join(""))})}function Nr(e){let t=[],n,r="",i=[],s=false,o=()=>{if(n===void 0)return;let a=N(i.join(""));a.endsWith("*")&&(a=a.slice(0,-1)),t.push(w(n,r,a)),n=void 0,r="",i=[],s=false;};for(let a of x(e))if(a.startsWith(">")){o();let c=a.slice(1),u=c.indexOf(";");n=(u>=0?c.slice(u+1):c).trim(),s=true;}else {if(n===void 0)continue;s?(r=a.trim(),s=false):i.push(a);}return o(),t}function te(e){return (e&2304)!==0}function ne(e,t){if(t&1){if(t&64)return `${e}/1`;if(t&128)return `${e}/2`}return e}function re(e,t,n){return n&4||!e||e==="*"?"unmapped":`${e}:${t} (${n&16?"-":"+"})`}var Ft="=ACMGRSVTWYHKDBN",$e=32;function It(e){let t=[];if(!(e[0]===66&&e[1]===65&&e[2]===77&&e[3]===1))return t;let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new TextDecoder,i=(s,o)=>r.decode(e.subarray(s,s+Math.max(0,o-1)));try{let s=e.length,o=4;if(o+4>s)return t;let a=n.getInt32(o,!0);if(o+=4,a<0||o+a+4>s)return t;o+=a;let c=n.getInt32(o,!0);if(o+=4,c<0)return t;let u=[];for(let l=0;l<c;l++){if(o+4>s)return t;let f=n.getInt32(o,!0);if(o+=4,f<=0||o+f+4>s)return t;u.push(i(o,f)),o+=f+4;}for(;o+4<=e.length;){let l=n.getInt32(o,!0);if(o+=4,l<$e||o+l>e.length)break;let f=o+l,m=n.getInt32(o,!0),d=n.getInt32(o+4,!0),b=n.getUint8(o+8),S=n.getUint16(o+12,!0),y=n.getUint16(o+14,!0),k=n.getInt32(o+16,!0),g=o+$e,p=i(g,b);g+=b+S*4;let h=k+1>>1;if(k>0&&g+h<=f&&!te(y)){let A=m>=0&&m<u.length?u[m]:"*";t.push(w(ne(p,y),re(A,d+1,y),Ut(e,g,k)));}o=f;}}catch{}return t}function Ut(e,t,n){let r="";for(let i=0;i<n;i++){let s=e[t+(i>>1)];r+=Ft[i&1?s&15:s>>4];}return r}function Ot(e){let t=[];for(let n of x(e)){if(n.length===0||n.charCodeAt(0)===64)continue;let r=n.split(" ");if(r.length<11)continue;let i=r[9];if(!i||i==="*")continue;let s=De(r[1]);te(s)||t.push(w(ne(r[0],s),re(r[2],De(r[3]),s),i));}return t}function De(e){let t=Number.parseInt(e,10);return Number.isFinite(t)?t:0}var $t=128;function _r(e){let t=typeof e=="string"?new TextEncoder().encode(e):e;if(t.length<$t)return [];let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(n.getUint32(0,false)!==779314022)return [];let r=n.getUint32(12,false),i=n.getUint32(24,false),s=String.fromCharCode(t[36],t[37],t[38],t[39]);if(r===0||i===0)return [];let o=[];if(Number.parseFloat(s)>=3){let c=i+r*8;for(let u=0;u<r&&c+u<t.length;u++)o.push(t[c+u]);}else for(let c=0;c<r;c++){let u=i+c*12+8;if(u>=t.length)break;o.push(t[u]);}let a=o.filter(c=>c>32&&c<127).map(c=>String.fromCharCode(c)).join("");return a.length===0?[]:[w(Dt(t,n),"",a)]}function Dt(e,t){let n=t.getUint32(28,false),r=t.getUint32(32,false);if(n===0||r===0||r+n>e.length)return "scf";let i="";for(let o=r;o<r+n;o++)i+=String.fromCharCode(e[o]);let s=/^NAME=(.+)$/im.exec(i);return s&&s[1].trim()||"scf"}
|
|
14
|
+
exports.ENTRY_SIZE=L;exports.HEADER_SIZE=W;exports.MAX_PHRED=we;exports.averagePeakSpacing=An;exports.channelMaxLength=fn;exports.cropAbif=nn;exports.dataChannelRole=Ht;exports.detectFormat=Fn;exports.ensureRawDataChannels=yn;exports.findEntries=Pt;exports.findEntry=C;exports.formatFasta=Pn;exports.formatFastq=Bn;exports.formatQual=zn;exports.getChannelMap=jt;exports.getConfidences=Yt;exports.getConfidencesForVersion=V;exports.getDataChannel=_t;exports.getFwo=se;exports.getPositions=Kt;exports.getPositionsForVersion=j;exports.getReverseComplemented=Vt;exports.getSamplingRate=Zt;exports.getSequence=Qt;exports.getSequenceForVersion=H;exports.hasData9To12Block=Q;exports.hasSignals=un;exports.hasUsableQuality=Wn;exports.insertEntrySorted=ie;exports.isFwoPermutation=oe;exports.makeSeqRecord=w;exports.parseAbif=cn;exports.parseAce=Nn;exports.parseBam=It;exports.parseClustal=dr;exports.parseEmbl=Dn;exports.parseFasta=Le;exports.parseFastq=vn;exports.parseGenbank=Kn;exports.parseGenbankDocument=Zn;exports.parseGenbankLocation=Te;exports.parseGfa=Rt;exports.parseGff=ar;exports.parseMega=br;exports.parseMsf=hr;exports.parseNexus=pr;exports.parsePdb=kr;exports.parsePhylip=gr;exports.parsePir=Nr;exports.parseSam=Ot;exports.parseScf=_r;exports.parseStockholm=mr;exports.parseSwissprot=Mn;exports.readAbif=Se;exports.setAveragePeakSpacing=Sn;exports.setConfidences=hn;exports.setPositions=bn;exports.setSequence=pn;exports.tagNameFromInt32=Me;exports.upsertEntry=G;exports.writeAbif=vt;//# sourceMappingURL=index.js.map
|
|
14
15
|
//# sourceMappingURL=index.js.map
|