jbrowse-plugin-graphgenomeviewer 8.3.0 → 8.3.2
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/README.md +7 -2
- package/dist/chunks/{GbzBaseSyntenyAdapter-EJIR3HZM.js → GbzBaseSyntenyAdapter-W5J3E5VT.js} +2 -2
- package/dist/chunks/{GbzBaseSyntenyAdapter-EJIR3HZM.js.map → GbzBaseSyntenyAdapter-W5J3E5VT.js.map} +1 -1
- package/dist/chunks/{GraphGenomeView-2AKRM74B.js → GraphGenomeView-NLPWMIBS.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-7XRZQW6T.js → GraphTrackSettingsDialog-7LHAOYX3.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-LCBGD2ZA.js → HighlightColorDialog-YQEMRPZ6.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-WWQ73BO5.js → LinearGraphDisplay-BEU7V4JU.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-4OOBJ44C.js → MinigraphBubbleAdapter-FZZLY3ZI.js} +2 -2
- package/dist/chunks/{RgfaTabixAdapter-CEGFN2QY.js → RgfaTabixAdapter-DXBQEVFS.js} +2 -2
- package/dist/chunks/{WalkFormsAdapter-LTAKACZD.js → WalkFormsAdapter-ZKZ5PUYO.js} +2 -2
- package/dist/chunks/{WalkTabixSyntenyAdapter-B6V3YNW7.js → WalkTabixSyntenyAdapter-HEGPYGKB.js} +2 -2
- package/dist/chunks/{chunk-T2VC3EEL.js → chunk-2FCFK2B5.js} +1 -1
- package/dist/chunks/{chunk-T2VC3EEL.js.map → chunk-2FCFK2B5.js.map} +1 -1
- package/dist/chunks/{chunk-PTOKTIQG.js → chunk-5X3OZSDO.js} +2 -2
- package/dist/chunks/chunk-D6NFDQQI.js +4 -0
- package/dist/chunks/chunk-D6NFDQQI.js.map +7 -0
- package/dist/chunks/chunk-D7MOOK6H.js +4 -0
- package/dist/chunks/chunk-D7MOOK6H.js.map +7 -0
- package/dist/chunks/chunk-EINURNZ6.js +2 -0
- package/dist/chunks/chunk-EKIQ3ATV.js +2 -0
- package/dist/chunks/chunk-EKIQ3ATV.js.map +7 -0
- package/dist/chunks/{chunk-WUOXZAGN.js → chunk-HM7XSNBN.js} +1 -1
- package/dist/chunks/{chunk-WUOXZAGN.js.map → chunk-HM7XSNBN.js.map} +1 -1
- package/dist/chunks/{chunk-UECOGSWM.js → chunk-IQQOJGX3.js} +2 -2
- package/dist/chunks/{chunk-UECOGSWM.js.map → chunk-IQQOJGX3.js.map} +1 -1
- package/dist/chunks/{chunk-CZXJXNZN.js → chunk-JTOW3TOE.js} +2 -2
- package/dist/chunks/{chunk-UHV6XIDG.js → chunk-KM2INI7Q.js} +2 -2
- package/dist/chunks/{chunk-UHV6XIDG.js.map → chunk-KM2INI7Q.js.map} +1 -1
- package/dist/chunks/{chunk-OGXVDZPS.js → chunk-MFMAQO3W.js} +2 -2
- package/dist/chunks/{chunk-OGXVDZPS.js.map → chunk-MFMAQO3W.js.map} +1 -1
- package/dist/chunks/{chunk-IK3MQ4ZJ.js → chunk-MNFL7BAC.js} +2 -2
- package/dist/chunks/{chunk-IK3MQ4ZJ.js.map → chunk-MNFL7BAC.js.map} +1 -1
- package/dist/chunks/{chunk-CNCYMJ5E.js → chunk-NB4X56M3.js} +2 -2
- package/dist/chunks/{chunk-CNCYMJ5E.js.map → chunk-NB4X56M3.js.map} +1 -1
- package/dist/chunks/{chunk-VKZALU57.js → chunk-OMF5XFKR.js} +1 -1
- package/dist/chunks/{chunk-VKZALU57.js.map → chunk-OMF5XFKR.js.map} +1 -1
- package/dist/chunks/{chunk-BJHWGRMP.js → chunk-TNEXOJ5F.js} +1 -1
- package/dist/chunks/{chunk-BJHWGRMP.js.map → chunk-TNEXOJ5F.js.map} +1 -1
- package/dist/chunks/chunk-VP6AGIRF.js +2 -0
- package/dist/chunks/chunk-VP6AGIRF.js.map +7 -0
- package/dist/chunks/{chunk-SL4JJJQJ.js → chunk-XBZ4C4R3.js} +3 -3
- package/dist/chunks/{chunk-SL4JJJQJ.js.map → chunk-XBZ4C4R3.js.map} +2 -2
- package/dist/chunks/chunk-Y7VFVMQI.js +2 -0
- package/dist/chunks/chunk-Y7VFVMQI.js.map +7 -0
- package/dist/chunks/{chunk-QWG7NASD.js → chunk-YMK7HFJV.js} +2 -2
- package/dist/chunks/{chunk-CVHKXFVS.js → chunk-ZWRAQSXC.js} +2 -2
- package/dist/chunks/chunk-ZWRAQSXC.js.map +7 -0
- package/dist/chunks/{renderSvg-E5Q7MLCH.js → renderSvg-XIEGA5N5.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +3 -3
- package/package.json +2 -2
- package/src/GetSubgraph.ts +2 -0
- package/src/GraphGenomeView/legendSections.ts +5 -2
- package/src/GraphGenomeView/model.ts +8 -1
- package/src/RgfaTabixAdapter/walkFiles.test.ts +14 -0
- package/src/RgfaTabixAdapter/walkReader.ts +22 -5
- package/src/version.ts +1 -1
- package/dist/chunks/chunk-CVHKXFVS.js.map +0 -7
- package/dist/chunks/chunk-CZI7IP5S.js +0 -2
- package/dist/chunks/chunk-CZI7IP5S.js.map +0 -7
- package/dist/chunks/chunk-HAAABGE7.js +0 -2
- package/dist/chunks/chunk-MCBYBZZJ.js +0 -4
- package/dist/chunks/chunk-MCBYBZZJ.js.map +0 -7
- package/dist/chunks/chunk-NOXHIOIM.js +0 -2
- package/dist/chunks/chunk-NOXHIOIM.js.map +0 -7
- package/dist/chunks/chunk-OLZZDBQJ.js +0 -4
- package/dist/chunks/chunk-OLZZDBQJ.js.map +0 -7
- package/dist/chunks/chunk-W7IHIVSE.js +0 -2
- package/dist/chunks/chunk-W7IHIVSE.js.map +0 -7
- /package/dist/chunks/{GraphGenomeView-2AKRM74B.js.map → GraphGenomeView-NLPWMIBS.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-7XRZQW6T.js.map → GraphTrackSettingsDialog-7LHAOYX3.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-LCBGD2ZA.js.map → HighlightColorDialog-YQEMRPZ6.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-WWQ73BO5.js.map → LinearGraphDisplay-BEU7V4JU.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-4OOBJ44C.js.map → MinigraphBubbleAdapter-FZZLY3ZI.js.map} +0 -0
- /package/dist/chunks/{RgfaTabixAdapter-CEGFN2QY.js.map → RgfaTabixAdapter-DXBQEVFS.js.map} +0 -0
- /package/dist/chunks/{WalkFormsAdapter-LTAKACZD.js.map → WalkFormsAdapter-ZKZ5PUYO.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-B6V3YNW7.js.map → WalkTabixSyntenyAdapter-HEGPYGKB.js.map} +0 -0
- /package/dist/chunks/{chunk-PTOKTIQG.js.map → chunk-5X3OZSDO.js.map} +0 -0
- /package/dist/chunks/{chunk-HAAABGE7.js.map → chunk-EINURNZ6.js.map} +0 -0
- /package/dist/chunks/{chunk-CZXJXNZN.js.map → chunk-JTOW3TOE.js.map} +0 -0
- /package/dist/chunks/{chunk-QWG7NASD.js.map → chunk-YMK7HFJV.js.map} +0 -0
- /package/dist/chunks/{renderSvg-E5Q7MLCH.js.map → renderSvg-XIEGA5N5.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as te,o as se,r as ft}from"./chunk-MNFL7BAC.js";import{a as Et,c as ee,d as Bt,e as Ft}from"./chunk-OMF5XFKR.js";var ye="ws",we="we",ne=["elsewhere","break","end"],Ee={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded",deleted:"deleted in this haplotype"},Fe="outside the extracted subgraph";function oe(t,e,s){if(!e&&!s)return[{bp:t}];let n=Math.min(e?.trimmed??0,t),r=Math.min(s?.trimmed??0,t-n),c=t-n-r,p=e?.kind==="break"?Math.min(e.bp,c):0;c-=p;let l=s?.kind==="break"?Math.min(s.bp,c):0;c-=l;let h=[e,s].find(f=>f?.kind==="elsewhere");return[{bp:n},{bp:p,cause:"missing"},h?.kind==="elsewhere"?{bp:c,cause:"elsewhere",chunk:h.chunk}:{bp:c,cause:"unknown"},{bp:l,cause:"missing"},{bp:r}].filter(f=>f.bp>0)}function Ct(t,e){let s=t.bp[e],n=t.chunkRefs[e];return ae(t.kindNames[t.kinds[e]],Number.isNaN(s)?void 0:s,t.trimmed[e],n<0?void 0:{refName:t.chunkRefNames[n],start:t.chunkStarts[e]})}function ae(t,e,s,n){let r=s>0?{trimmed:s}:{};return t==="elsewhere"&&n?{kind:t,chunk:n,...e===void 0?{}:{bp:e},...r}:t==="break"&&e!==void 0?{kind:t,bp:e,...n?{chunk:n}:{},...r}:t==="end"?{kind:t,...r}:void 0}function re(t){let[e,...s]=t.split(","),n,r=0,c;for(let p of s)if(p.startsWith("bp="))n=+p.slice(3);else if(p.startsWith("trimmed="))r=+p.slice(8);else if(p.startsWith("chunk=")){let l=p.lastIndexOf(":");c={refName:p.slice(6,l),start:+p.slice(l+1)}}return ae(e,n,r,c)}function Gt(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function Te(t){let e=t[ye],s=t[we];return Gt(typeof e=="string"?re(e):void 0,typeof s=="string"?re(s):void 0)}var Pe=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(ne.indexOf(t.kind)),this.bp.push("bp"in t&&t.bp!==void 0?t.bp:NaN),this.trimmed.push(t.trimmed??0);let e="chunk"in t?t.chunk:void 0;if(e){let s=this.refIndex.get(e.refName);s===void 0&&(s=this.chunkRefNames.length,this.refIndex.set(e.refName,s),this.chunkRefNames.push(e.refName)),this.chunkRefs.push(s),this.chunkStarts.push(e.start)}else this.chunkRefs.push(-1),this.chunkStarts.push(NaN)}table(){return{kinds:Uint8Array.from(this.kinds),kindNames:[...ne],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function Se(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Lt(t,e){let s=t.names[e],n=Ft(s),r=t.starts[e],c=t.abridgedSteps?.[e]??Number.NaN,p=Number.isNaN(c)?{}:{abridged:{steps:c,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Gt(t.before&&Ct(t.before,e),t.after&&Ct(t.after,e)),...p}:{name:Se(s,r,t.ends[e]),start:r}}function Ae(t,e,s,n){let r=new Int32Array(s+1);for(let h of t)r[h+1]++;for(let h=0;h<s;h++)r[h+1]+=r[h];let c=r.slice(0,s),p=new Int32Array(t.length);t.forEach((h,w)=>{p[c[h]++]=e[w]});let l=new Int32Array(n.length).fill(-1);return Array.from({length:s},(h,w)=>{let f=[];for(let F=r[w];F<r[w+1];F++){let v=p[F];l[v]!==w&&(l[v]=w,f.push(n[v]))}return f})}function Wt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),c=(l,h)=>{r[l]===0&&(r[l]=h?2:1)};for(let l=0;l<e.from.length;l++)c(e.from[l],e.strands[l]&1),c(e.to[l],e.strands[l]&2);let p=s.offsets[s.names.length]??0;for(let l=0;l<p;l++){let h=s.steps[l];c(h,s.reversed[l]),n&&n[h]++}return t.names.map((l,h)=>`${l}${r[h]===2?"-":"+"}`)}function Le({nodes:t,links:e,walks:s},n="Imported GFA"){let r=t.names.length,c=t.lengths.length,p=[];for(let o=0;o<s.names.length;o++)s.offsets[o+1]>s.offsets[o]&&p.push(o);let l=new Int32Array(r),h=Wt({nodes:t,links:e,walks:s},l),w=[];for(let o=0;o<c;o++){let k=t.refs[o];w.push({id:h[o],name:t.names[o],length:t.lengths[o],depth:Math.max(l[o],1),stable:k<0?void 0:{refName:t.refNames[k],start:t.starts[o],rank:t.ranks[o]},samples:void 0})}let f=[],F=new Array(r),v=(o,k)=>{let g=F[o];if(g){for(let x=0;x<g.length;x+=2)if(g[x]===k)return g[x+1]}},E=(o,k,g)=>{let x=F[o];x?x.push(k,g):F[o]=[k,g]},B=[],Y=0;for(let o=0;o<e.from.length;o++){let k=e.from[o],g=e.to[o];f.push({from:h[k],to:h[g],fromStrand:e.strands[o]&1?"-":"+",toStrand:e.strands[o]&2?"-":"+"});let x=v(k,g);x===void 0&&(x=Y++,E(k,g,x),E(g,k,x)),B.push(x)}let U=new Int32Array(r+1);for(let o=0;o<r;o++)U[o+1]=U[o]+(F[o]?.length??0)/2;let tt=new Int32Array(U[r]),lt=new Int32Array(U[r]);F.forEach((o,k)=>{for(let g=0;g<o.length;g+=2)tt[U[k]+g/2]=o[g],lt[U[k]+g/2]=o[g+1]});let yt=(o,k)=>{for(let g=U[o];g<U[o+1];g++)if(tt[g]===k)return lt[g];return-1},V=new Map,et=[],T=new Int32Array(s.offsets[s.names.length]??0),ht=new Int32Array(T.length),Z=0,H=new Int32Array(Y).fill(-1),X=[],M=[],dt=s.offsets[s.names.length]??0,_=new Int32Array(dt),st=new Float64Array(dt),pt=new Uint8Array(dt),nt=new Int32Array(r).fill(-1),D=[],I=[0],P=[],mt=new Map,ut=[];for(let o of p){let k=Lt(s,o),{start:g,name:x}=k,z=k.sample===void 0?s.names[o]:x,K=V.get(z);K===void 0&&(K=et.length,V.set(z,K),et.push(z),P.push(Et(z)));let rt=mt.get(x);rt===void 0&&(rt=ut.length,mt.set(x,rt),ut.push(x));let Tt=P[K],gt=s.offsets[o],St=new Array(s.offsets[o+1]-gt),a=g,d=-1;for(let S=gt;S<s.offsets[o+1];S++){let R=s.steps[S];St[S-gt]=h[R],nt[R]===-1&&(nt[R]=I.at(-1),I.push(nt[R]+l[R]),D.push(R));let O=nt[R]++;if(_[O]=K,st[O]=a,pt[O]=s.reversed[S],a+=R<c?t.lengths[R]:0,d>=0){let N=yt(d,R);N>=0&&H[N]!==o&&(H[N]=o,T[Z]=N,ht[Z++]=rt)}d=R}X.push({...k,nodeIds:St}),M.push({name:z,sample:Tt,start:g,length:a-g})}let wt=Ae(T.subarray(0,Z),ht,Y,ut);f.forEach((o,k)=>{let g=wt[B[k]];g.length>0&&(o.pathIds=g)});let C=p.length>0;return{name:n,nodes:w,edges:f,paths:C?X:void 0,anchorPaths:C?M:void 0,pathVisits:C?new se({segments:D.map(o=>t.names[o]),offsets:Int32Array.from(I),path:_.subarray(0,I.at(-1)),start:st.subarray(0,I.at(-1)),reversed:pt.subarray(0,I.at(-1)),paths:et,samples:P}):void 0,anchoredBy:w.some(o=>o.stable)?"tags":void 0}}var Dt=1,le=2,vt=4,he=[void 0,"missing","elsewhere","unknown","abridged","deleted"],de=3,ie=t=>he.indexOf(t)<<de;function pe(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function Ie(t){return pe((t.paths??[]).map(e=>ft(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}var me=t=>{let e=t&&Bt(t);return s=>s!==void 0&&(s===t||s===e)};function Re(t){let e=new Map,s=[],n=[],r=v=>{let E=e.get(v);return E===void 0&&(E=s.length,e.set(v,E),s.push(v),n.push(0)),E},c=Ie(t),p=me(c),l=new Map;for(let v of t.nodes){let E=r(v.id);n[E]=v.length,v.stable?.rank===0&&p(v.stable.refName)&&l.set(E,v.stable.start)}let h=t.paths??[],w=new Int32Array(h.length),f=new Int32Array(h.length),F=[];return h.forEach((v,E)=>{w[E]=F.length;for(let B of v.nodeIds)F.push(r(B));f[E]=F.length}),{heads:h,from:w,to:f,steps:Int32Array.from(F),lengths:Int32Array.from(n),names:s,reference:c,stableStart:v=>l.get(v)??Number.NaN}}function $e(t,e,s){let{nodes:n,walks:r}=t,c=[];for(let f=0;f<r.names.length;f++)r.offsets[f+1]>r.offsets[f]&&c.push(f);let p=c.map(f=>Lt(r,f)),l=new Set;for(let f=0;f<n.lengths.length;f++)n.refs[f]>=0&&n.ranks[f]===0&&l.add(n.refNames[n.refs[f]]);let h=pe(p.map(f=>ft(f.name).name),e,l),w=me(h);return{heads:p,from:Int32Array.from(c,f=>r.offsets[f]),to:Int32Array.from(c,f=>r.offsets[f+1]),steps:r.steps,lengths:n.lengths,names:s?Wt(t):n.names,reference:h,stableStart:f=>f<n.lengths.length&&n.ranks[f]===0&&w(n.refNames[n.refs[f]])?n.starts[f]:Number.NaN}}function Vt(t){return t.sample??Et(t.name)}function ce(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:Vt(t)}var fe=class{constructor(t){this.offsets=[0],this.values=Array.from({length:t},()=>[])}get length(){return this.values[0].length}push(t,e,s,n,r){let c=this.values;c[0].push(t),c[1].push(e),c[2].push(s),c[3].push(n),r!==void 0&&c[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,c)=>{s[c+1]=s[c]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,c)=>{let p=this.values[c],l=r(this.length),h=0;for(let w of t)for(let f=this.offsets[w];f<this.offsets[w+1];f++)l[h++]=p[f];return l});return{offsets:s,columns:n}}},kt=t=>new Float64Array(t);function ze(t,e,s={}){let{heads:n,from:r,to:c,steps:p,lengths:l,names:h,reference:w,stableStart:f}="walks"in t?$e(t,s.referencePath,s.visits):Re(t),F=l.length,v=a=>a<F?l[a]:0,E=a=>ft(n[a].name).name,B=a=>n[a].start,Y=(a,d)=>(B(a)??0)-(B(d)??0),U=n.map((a,d)=>d),tt=U.filter(a=>E(a)===w).sort(Y),lt=tt[0],yt=U.filter(a=>E(a)!==w),V="walks"in t?t.skips:void 0;if(lt===void 0||yt.length===0&&!V?.names.length)return;let et=te(yt,E),T=new Float64Array(h.length).fill(Number.NaN),ht=new Float64Array(h.length),Z=new Map,H=-1/0,X=1/0,M=e&&e.end>e.start?e:void 0;for(let a of tt){let d=B(a)??0;for(let S=r[a],R=c[a];S<R;S++){let O=p[S],N=v(O);if(Number.isNaN(T[O]))T[O]=d,ht[O]=d+N,M&&(d+N<=M.start&&(H=Math.max(H,d+N)),d>=M.end&&(X=Math.min(X,d)));else{let bt=Z.get(O);bt?bt.push(d):Z.set(O,[T[O],d])}d+=N}}let dt=M===void 0||H>-1/0&&X<1/0,_=new fe(5),st=[],pt=new Map,nt=a=>{if(!a)return-1;let d=`${a.refName}:${a.start}`,S=pt.get(d);return S===void 0&&(S=st.length,pt.set(d,S),st.push(a)),S},D=s.visits?new fe(4):void 0,I=new Int32Array(0),P=new Float64Array(0),mt=a=>{let d=n[a[0]],S=[...a].sort(Y),R=S.length-1,O=0;for(let i of S)R+=c[i]-r[i]+(n[i].abridged?1:0),O+=n[i].abridged?.steps??0;R>I.length&&(I=new Int32Array(R*2),P=new Float64Array(R*2));let N=0,bt=!1,At,It,q=new Map,Pt=0;for(let i of S){let m=B(i),y=m===void 0||At===void 0?0:m-At;(m===void 0||y<0)&&(bt=!0),y<0&&n[It].abridged&&(Pt-=y);let A=Math.min(Pt,Math.max(y,0));Pt-=A;let u=y-A;u>0&&(q.set(N,oe(u,It===void 0?void 0:n[It].after,n[i].before)),I[N]=-u,P[N++]=At);let b=m??0,$=n[i].abridged;for(let j=r[i],Q=c[i];j<Q;j++){let G=p[j],W=$?$.bp-(b-(m??0))-v(G):0;W>0&&j===Q-1&&j>r[i]&&(q.set(N,[{bp:W,cause:"abridged"}]),I[N]=-W,P[N++]=b,b+=W),I[N]=G,P[N++]=b,b+=v(G)}At=m===void 0?void 0:b,It=i}let Zt=i=>i>=0&&i<N&&I[i]>=0&&!Number.isNaN(T[I[i]]),_t=i=>{let m=I[i];return P[i]+(m<0?-m:v(m))},ue=(i,m)=>{let y=i>=0?i:m,A=-1;for(let G=1;A<0&&G<N;G++)A=[y-G,y+G].find(Zt)??-1;if(A<0)return;let u=A>y==T[I[A]]>T[I[y]],b=u===(y===i),$=b?N-1:0,j=Zt($);return{stop:{contigEnds:j,shortBp:j?Math.max(0,M.start-ht[I[$]],T[I[$]]-M.end):0},lo:b?y+1:0,hi:b?N:y,backward:!u,axisStart:u?b?_t(y):P[0]:b?_t(N-1):P[y]}},Rt=0,$t=N,ot=!1,Ht=!0,Nt=-1,Xt=-1,Ut,zt,Kt=(i,m)=>{let A=q.get(i)?.[0];if(m<=0||A?.cause!=="abridged")return 0;let u=Math.min(m,A.bp);return q.set(i,A.bp>u?[{...A,bp:A.bp-u}]:[]),I[i]+=u,u},qt=i=>q.get(i)?.[0]?.cause==="abridged",ge=i=>{let m=I[i];return m<0||q.has(i)?Number.NaN:Number.isNaN(T[m])&&(qt(i-1)||qt(i+1))?f(m):T[m]},Mt=0,Jt=0;if(M&&dt){let i=-1,m=-1,y=-1/0,A=1/0;for(let u=0;u<N;u++){let b=ge(u);if(!Number.isNaN(b)){let $=b+v(I[u]);$<=M.start&&$>y&&(y=$,i=u),b>=M.end&&b<A&&(A=b,m=u)}}if(i<0||m<0){Ht=!1;let u=i>=0||m>=0?ue(i,m):void 0;u&&({lo:Rt,hi:$t,backward:ot,axisStart:Ut,stop:zt}=u)}else{Rt=Math.min(i,m)+1,$t=Math.max(i,m),ot=i>m,Nt=i,Xt=m;let u=ot?-1:1;Mt=Kt(i+u,H-y),Jt=Kt(m-u,A-X)}}let xt=d.contig??Bt(ft(d.name).name),be=bt||N===0?void 0:Ut!==void 0?{contig:xt,start:Ut,reversed:ot}:Nt<0?{contig:xt,start:P[0],reversed:!1}:Nt<Xt?{contig:xt,start:_t(Nt)+Mt,reversed:!1}:{contig:xt,start:P[Nt]-Mt,reversed:!0},at=0,Qt=0,Yt=0,it=0,L=-1,ct=0,J=Number.NaN,Ot=Number.NaN,Ne=i=>{let m=Z.get(i);if(!m||Number.isNaN(Ot))return T[i];let y=v(i),A=m[0],u=1/0;for(let b of m){let $=Math.min(Math.abs(b-Ot),Math.abs(b+y-Ot));$<u&&(A=b,u=$)}return A},[,jt,ve,ke]=_.values;for(let i=Rt;i<$t;i++){let m=ot?$t-1-(i-Rt):i,y=I[m],A=q.get(m);if(A){for(let W of ot?[...A].reverse():A)_.push(at,W.bp,Number.NaN,vt|ie(W.cause),nt(W.chunk)),at+=W.bp;L=_.length-1,ct=vt,J=Number.NaN,Yt+=-y,it=0;continue}let u=v(y),b=Ne(y),$=!Number.isNaN(b);D?.push(y,at,u,$?1:0);let j=L>=0&&!Number.isNaN(J),Q=$&&j&&it>=0&&J+(jt[L]??0)===b,G=$&&j&&it<=0&&b+u===J;!$&&L>=0&&!(ct&(Dt|vt))?jt[L]+=u:Q||G?(jt[L]+=u,Q||(J=b,ve[L]=b,ct|=le,ke[L]=ct),it=Q?1:-1):(ct=$?Dt:0,J=$?b:Number.NaN,_.push(at,u,J,ct,-1),L=_.length-1,it=0),at+=u,$?Ot=it<0?b:b+u:Qt+=u}return _.endRow(),D?.endRow(),{name:d.name,label:ce(d),sample:Vt(d),haplotype:d.haplotype,bp:at,offReferenceBp:Qt,gapBp:Yt,complete:Ht,stop:zt,axis:be,...O>0?{abridgedSteps:O}:{},...Mt+Jt>0?{estimated:!0}:{}}},ut=(a,d,S)=>{let R=M?Math.max(d,M.start):d,O=(M?Math.min(S,M.end):S)-R;_.push(R-(M?M.start:d),O,Number.NaN,vt|ie("deleted"),-1),_.endRow(),D?.endRow();let N={name:a,...Ft(a)};return{name:a,label:ce(N),sample:Vt(N),haplotype:N.haplotype,bp:0,offReferenceBp:0,gapBp:O,complete:!0,stop:void 0,axis:void 0}},wt=mt(tt),C=[...et.values()].map((a,d)=>({meta:mt(a),row:d+1})),o=new Set(et.keys());V?.names.forEach((a,d)=>{let S=ft(a).name;o.has(S)||(o.add(S),C.push({meta:ut(S,V.starts[d],V.ends[d]),row:C.length+1}))});let k=[wt,...C.map(a=>a.meta)];if(new Set(k.map(a=>a.label)).size<k.length)for(let a of k)a.label=ee(a.name)??a.label;C.sort((a,d)=>Number(d.meta.complete)-Number(a.meta.complete)||d.meta.bp-a.meta.bp||a.meta.label.localeCompare(d.meta.label));let g=[0,...C.map(a=>a.row)],{offsets:x,columns:z}=_.reorder(g,[kt,kt,kt,a=>new Uint8Array(a),a=>new Int32Array(a)]),[K,rt,Tt,gt,St]=z;return{origin:M?M.start:B(lt)??0,rows:[wt,...C.map(a=>a.meta)],offsets:x,start:K,bp:rt,referenceStart:Tt,flags:gt,chunk:St,chunks:st,visits:D&&Me(D,g,h)}}function Me(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[w=>new Int32Array(w),kt,kt,w=>new Uint8Array(w)]),[c,p,l,h]=r;return{offsets:n,node:c,start:p,bp:l,onReference:h,names:s}}function xe(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Dt)!==0};if(s&vt){n.gap=!0;let r=he[s>>de&7];r&&(n.cause=r);let c=t.chunks[t.chunk[e]];c&&(n.chunk=c)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&le&&(n.reversed=!0),n}function Oe(t,e){let s=[];for(let n=t.offsets[e];n<t.offsets[e+1];n++)s.push({node:t.names[t.node[n]],start:t.start[n],bp:t.bp[n],onReference:t.onReference[n]===1});return s}function Ke(t,e){let s=t.rows.map((n,r)=>{let c=[];for(let p=t.offsets[r];p<t.offsets[r+1];p++)c.push(xe(t,p));return{...n,runs:c,visits:t.visits&&Oe(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{ye as a,we as b,Ee as c,Fe as d,oe as e,re as f,Te as g,Pe as h,Lt as i,Le as j,Ie as k,ze as l,Ke as m};
|
|
2
|
+
//# sourceMappingURL=chunk-Y7VFVMQI.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.2.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VA5U4F23.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.2.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-4FPEQQFT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.2.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JJJIUIE2.js"],
|
|
4
|
+
"sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\",\n abridged: \"abridged: steps not loaded\",\n // a walk file's skip row: the haplotype jumps over the window\n deleted: \"deleted in this haplotype\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-VA5U4F23.js\";\nimport {\n PathVisits\n} from \"./chunk-BEUTROKU.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n const steps = w.abridgedSteps?.[p] ?? Number.NaN;\n const abridged = Number.isNaN(steps) ? {} : { abridged: { steps, bp: w.abridgedBp?.[p] ?? 0 } };\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n ),\n ...abridged\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }, traversals) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n const node = w.steps[s];\n claim(node, w.reversed[s]);\n if (traversals) {\n traversals[node]++;\n }\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n const ids = tableNodeIds({ nodes: n, links: l, walks: w }, traversals);\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-4FPEQQFT.js\";\nimport {\n gapParts\n} from \"./chunk-VA5U4F23.js\";\nimport {\n pathOrigin\n} from \"./chunk-BRH73RCH.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNFields,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [\n void 0,\n \"missing\",\n \"elsewhere\",\n \"unknown\",\n \"abridged\",\n \"deleted\"\n];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nvar namesReference = (reference) => {\n const contig = reference && panSNContig(reference);\n return (name) => name !== void 0 && (name === reference || name === contig);\n};\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n const reference = referenceWalkName(graph);\n const onReferenceContig = namesReference(reference);\n const stable = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const i = indexOf(node.id);\n lengths[i] = node.length;\n if (node.stable?.rank === 0 && onReferenceContig(node.stable.refName)) {\n stable.set(i, node.stable.start);\n }\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps: Int32Array.from(steps),\n lengths: Int32Array.from(lengths),\n names,\n reference,\n stableStart: (node) => stable.get(node) ?? Number.NaN\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n const reference = referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n );\n const onReferenceContig = namesReference(reference);\n return {\n heads,\n from: Int32Array.from(kept, (p) => w.offsets[p]),\n to: Int32Array.from(kept, (p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference,\n stableStart: (node) => node < n.lengths.length && n.ranks[node] === 0 && onReferenceContig(n.refNames[n.refs[node]]) ? n.starts[node] : Number.NaN\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(a, b, c, d, e) {\n const v = this.values;\n v[0].push(a);\n v[1].push(b);\n v[2].push(c);\n v[3].push(d);\n if (e !== void 0) {\n v[4].push(e);\n }\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const offsets = new Uint32Array(order.length + 1);\n order.forEach((row, i) => {\n offsets[i + 1] = offsets[i] + this.offsets[row + 1] - this.offsets[row];\n });\n const columns = make.map((m, c) => {\n const from = this.values[c];\n const out = m(this.length);\n let at = 0;\n for (const row of order) {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++) {\n out[at++] = from[k];\n }\n }\n return out;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference,\n stableStart\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n const skips = \"walks\" in source ? source.skips : void 0;\n if (first === void 0 || others.length === 0 && !skips?.names.length) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n const revisits = /* @__PURE__ */ new Map();\n let flankEnd = -Infinity;\n let flankStart = Infinity;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece], stop = to[piece]; s < stop; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (!Number.isNaN(spanStart[node])) {\n const starts = revisits.get(node);\n if (starts) {\n starts.push(pos);\n } else {\n revisits.set(node, [spanStart[node], pos]);\n }\n } else {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n if (pos + len <= cut.start) {\n flankEnd = Math.max(flankEnd, pos + len);\n }\n if (pos >= cut.end) {\n flankStart = Math.min(flankStart, pos);\n }\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || flankEnd > -Infinity && flankStart < Infinity;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n let abridgedSteps = 0;\n for (const piece of ordered) {\n count += to[piece] - from[piece] + (heads[piece].abridged ? 1 : 0);\n abridgedSteps += heads[piece].abridged?.steps ?? 0;\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n let owed = 0;\n for (const piece of ordered) {\n const start2 = startOf(piece);\n const jump = start2 === void 0 || end === void 0 ? 0 : start2 - end;\n if (start2 === void 0 || jump < 0) {\n unplaced = true;\n }\n if (jump < 0 && heads[previous].abridged) {\n owed -= jump;\n }\n const covered = Math.min(owed, Math.max(jump, 0));\n owed -= covered;\n const gap = jump - covered;\n if (gap > 0) {\n partsAt.set(\n length,\n gapParts(\n gap,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -gap;\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n const abridged = heads[piece].abridged;\n for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\n const bp3 = abridged ? abridged.bp - (pos - (start2 ?? 0)) - lengthOf(node) : 0;\n if (bp3 > 0 && s === stop2 - 1 && s > from[piece]) {\n partsAt.set(length, [{ bp: bp3, cause: \"abridged\" }]);\n steps[length] = -bp3;\n stepStart[length++] = pos;\n pos += bp3;\n }\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n const trimAbridged = (inner, bp3) => {\n const parts = partsAt.get(inner);\n const gap = parts?.[0];\n if (bp3 <= 0 || gap?.cause !== \"abridged\") {\n return 0;\n }\n const trimmed = Math.min(bp3, gap.bp);\n partsAt.set(\n inner,\n gap.bp > trimmed ? [{ ...gap, bp: gap.bp - trimmed }] : []\n );\n steps[inner] += trimmed;\n return trimmed;\n };\n const abridgedAt = (i) => partsAt.get(i)?.[0]?.cause === \"abridged\";\n const placeStart = (i) => {\n const id = steps[i];\n if (id < 0 || partsAt.has(i)) {\n return Number.NaN;\n }\n return Number.isNaN(spanStart[id]) && (abridgedAt(i - 1) || abridgedAt(i + 1)) ? stableStart(id) : spanStart[id];\n };\n let leftTrim = 0;\n let rightTrim = 0;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n const start2 = placeStart(i);\n if (!Number.isNaN(start2)) {\n const end2 = start2 + lengthOf(steps[i]);\n if (end2 <= cut.start && end2 > bestEnd) {\n bestEnd = end2;\n i0 = i;\n }\n if (start2 >= cut.end && start2 < bestStart) {\n bestStart = start2;\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n const inward = backward ? -1 : 1;\n leftTrim = trimAbridged(i0 + inward, flankEnd - bestEnd);\n rightTrim = trimAbridged(i1 - inward, bestStart - flankStart);\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? {\n contig,\n start: stepEnd(flankFrom) + leftTrim,\n reversed: false\n } : {\n contig,\n start: stepStart[flankFrom] - leftTrim,\n reversed: true\n };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n let cursor = Number.NaN;\n const placeOf = (id) => {\n const starts = revisits.get(id);\n if (!starts || Number.isNaN(cursor)) {\n return spanStart[id];\n }\n const len = lengthOf(id);\n let best = starts[0];\n let bestGap = Infinity;\n for (const start2 of starts) {\n const gap = Math.min(\n Math.abs(start2 - cursor),\n Math.abs(start2 + len - cursor)\n );\n if (gap < bestGap) {\n best = start2;\n bestGap = gap;\n }\n }\n return best;\n };\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n const parts = partsAt.get(index);\n if (parts) {\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = placeOf(id);\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && at + len === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (on) {\n cursor = step < 0 ? at : at + len;\n } else {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis,\n ...abridgedSteps > 0 ? { abridgedSteps } : {},\n ...leftTrim + rightTrim > 0 ? { estimated: true } : {}\n };\n };\n const skipRowOf = (name, start2, end) => {\n const from2 = cut ? Math.max(start2, cut.start) : start2;\n const bp2 = (cut ? Math.min(end, cut.end) : end) - from2;\n runs.push(\n from2 - (cut ? cut.start : start2),\n bp2,\n Number.NaN,\n RUN_GAP | causeFlags(\"deleted\"),\n -1\n );\n runs.endRow();\n visits?.endRow();\n const head = { name, ...panSNFields(name) };\n return {\n name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: 0,\n offReferenceBp: 0,\n gapBp: bp2,\n complete: true,\n stop: void 0,\n axis: void 0\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n const drawn = new Set(walks.keys());\n skips?.names.forEach((name, k) => {\n const contig = pathOrigin(name).name;\n if (!drawn.has(contig)) {\n drawn.add(contig);\n rows.push({\n meta: skipRowOf(contig, skips.starts[k], skips.ends[k]),\n row: rows.length + 1\n });\n }\n });\n const metas = [referenceRow, ...rows.map((r) => r.meta)];\n if (new Set(metas.map((m) => m.label)).size < metas.length) {\n for (const meta of metas) {\n meta.label = panSNHaplotype(meta.name) ?? meta.label;\n }\n }\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 7];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "steps", "abridged", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "i", "fill", "grouped", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "traversals", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "a", "b", "near", "j", "addPair", "edgeLists", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "namesReference", "reference", "contig", "panSNContig", "name", "graphPieces", "index", "lengths", "indexOf", "id", "i", "onReferenceContig", "stable", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "h", "tableNodeIds", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "k", "float64", "walkRowRuns", "source", "region", "o", "all", "stableStart", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "skips", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "flankEnd", "flankStart", "cut", "piece", "pos", "s", "stop", "len", "starts", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "abridgedSteps", "length", "unplaced", "end", "previous", "partsAt", "owed", "start2", "jump", "covered", "gap", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "trimAbridged", "inner", "trimmed", "abridgedAt", "placeStart", "leftTrim", "rightTrim", "bestEnd", "bestStart", "end2", "inside", "inward", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "runBp", "runRef", "runFlags", "parts", "part", "on", "placed", "back", "skipRowOf", "from2", "panSNFields", "referenceRow", "rows", "drawn", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
|
|
7
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as Ve}from"./chunk-M2D7NUOY.js";import{b as ze}from"./chunk-
|
|
1
|
+
import{s as Ve}from"./chunk-M2D7NUOY.js";import{b as ze}from"./chunk-JTOW3TOE.js";import{a as He}from"./chunk-OMF5XFKR.js";import{a as $e,c as Ye}from"./chunk-J5RMHLFJ.js";function qe(e){let r=[],t=0,o;for(let n=0,i=e.length;n<i;n++){let a=e.charCodeAt(n);if(a>=48&&a<=57)t=t*10+a-48;else if(a===58)o=t,t=0;else{let f=e[n];f==="M"||f==="="||f==="X"?r.push({own:o===void 0?t:o,mate:t,op:"M"}):f==="I"?r.push({own:0,mate:t,op:f}):(f==="D"||f==="N")&&r.push({own:t,mate:0,op:f}),o=void 0,t=0}}return r}function Ae(e){let r="";for(let{own:t,mate:o,op:n}of qe(e))r+=n==="M"?t===0?`${o}I`:o===0?`${t}D`:`${t}M`:`${n==="I"?o:t}${n}`;return r}var Se=2**28-1;function ve(e,r,t){for(let o=r;o>0;o-=Se)e.push((Math.min(o,Se)<<4|t)>>>0)}function kr(e,r,t){if(r===t)ve(e,r,0);else{let o=Math.ceil(Math.max(r,t)/Se);for(let n=0;n<o;n++){let i=Math.floor(r*(n+1)/o)-Math.floor(r*n/o),a=Math.floor(t*(n+1)/o)-Math.floor(t*n/o);e.push((i<<4|9)>>>0,(a<<4|9)>>>0)}}}function _e(e){let r=[];for(let{own:t,mate:o,op:n}of qe(e))n==="M"?kr(r,t,o):n==="I"?ve(r,o,1):ve(r,t,n==="N"?3:2);return Uint32Array.from(r)}function Gr(e){return e>=48&&e<=57}function Dr(e){return e!==void 0&&/[A-Za-z]/.test(e)}function Ke(e,r){let t=r;for(;t<e.length&&Dr(e[t]);)t++;return t}function Qe(e,r){let t=r,o=0;for(;t<e.length&&Gr(e.charCodeAt(t));)o=o*10+(e.charCodeAt(t)-48),t++;return{value:o,next:t}}function rr(e,r){let t=0;for(;t<e.length;){let o=e[t];if(o===":"){let{value:n,next:i}=Qe(e,t+1);r(":",n,n,t+1,i),t=i}else if(o==="="){let n=Ke(e,t+1),i=n-t-1;r("=",i,i,t+1,n),t=n}else if(o==="*")r("*",1,1,t+1,Math.min(t+3,e.length)),t+=3;else if(o==="+"||o==="-"){let n=Ke(e,t+1),i=n-t-1;r(o,o==="-"?i:0,o==="+"?i:0,t+1,n),t=n}else if(o==="~"){let{value:n,next:i}=Qe(e,t+3),a=Math.min(i+2,e.length);r("~",n,0,t+1,a),t=a}else t++}}function Ce(e,r,t,o){let n=t??Number.NEGATIVE_INFINITY,i=o??Number.POSITIVE_INFINITY,a=0;rr(e,(f,p,s,c,u)=>{if(f==="*")a>=n&&a<i&&r(88,a,1,e[c+1]??"",-1,0,0);else if(f==="+"){if(a>=n&&a<=i){let m=e.slice(c,u);r(73,a,s,m,-1,0,s)}}else(f==="-"||f==="~")&&a<i&&a+p>n&&r(f==="-"?68:78,a,p,"",-1,0,0);a+=p})}function tr(e,r,t,o){let n=0,i=0,a=[],f=t&&r;for(let p=0,s=e.length;p<s;p++){let c=e[p],u=c>>>4,m=c&15;if(m===0||m===7){if(f)for(let l=0;l<u;l++)(r.charCodeAt(i+l)|32)!==(t.charCodeAt(n+l)|32)&&a.push({start:n+l,type:"mismatch",base:r[i+l],altbase:t[n+l],length:1});i+=u,n+=u}else if(m===1)a.push({start:n,type:"insertion",insertlen:u,insertedBases:r?.slice(i,i+u),length:0}),i+=u;else if(m===2)a.push({start:n,type:"deletion",length:u}),n+=u;else if(m===3)a.push({start:n,type:"skip",length:u}),n+=u;else if(m===8){for(let l=0;l<u;l++)a.push({start:n+l,type:"mismatch",base:r?.[i+l]||"X",qual:o?.[i+l],length:1});i+=u,n+=u}else m===5?a.push({start:n,type:"hardclip",cliplen:u,length:1}):m===4&&(a.push({start:n,type:"softclip",cliplen:u,length:1}),i+=u)}return a}function or(e,r,t,o,n){if(!r)return[];let i=[],a=r.length,f=o.length,p=n!==void 0,s=t.length,c=!1;for(let b=0;b<s;b++)if(t[b].type==="skip"){c=!0;break}let u=0,m=0,l=0,y=0,d=0,x=0,g=e.length;for(;x<g;){let b=e.charCodeAt(x);if(b>=48&&b<=57){let v=0;for(;x<g;){let S=e.charCodeAt(x);if(S>=48&&S<=57)v=v*10+(S-48),x++;else break}u+=v}else if(b===94)for(x++;x<g&&e.charCodeAt(x)>=65;)x++,u++;else if(b>=65){let v=e[x];if(x++,c&&s>0)for(let I=d;I<s;I++){let R=t[I];R.type==="skip"&&u>=R.start&&(u+=R.length,d=I+1)}let S=l,C=y;for(let I=m;I<a&&C<=u;I++,m=I){let R=r[I],L=R>>>4,A=R&15;A===4||A===1?S+=L:A===2||A===6||A===3?C+=L:A!==5&&(S+=L,C+=L)}l=S,y=C;let F=S-(C-u),q=F<f?o[F]:"X";i.push({start:u,base:q,qual:p?n[F]:void 0,altbase:v,length:1,type:"mismatch"}),u++}else x++}return i}var nr={77:0,73:1,68:2,78:3,83:4,72:5,80:6,61:7,88:8};function ir(e=""){let r=0,t=[];for(let o=0,n=e.length;o<n;o++){let i=e.charCodeAt(o);if(i>=48&&i<=57)r=r*10+(i-48);else{let a=nr[i];t.push(r<<4|a),r=0}}return t}function Te(e=""){let r=0;for(let i=0,a=e.length;i<a;i++){let f=e.charCodeAt(i);(f<48||f>57)&&r++}let t=new Uint32Array(r),o=0,n=0;for(let i=0,a=e.length;i<a;i++){let f=e.charCodeAt(i);f>=48&&f<=57?o=o*10+(f-48):(t[n++]=o<<4|nr[f],o=0)}return t}function J(e,r,t,o,n){let i=ir(e),a=e?tr(i,t,o,n):[];return r&&t?a.concat(or(r,i,a,t,n)):a}var N=class extends $e{get(r){return r==="mismatches"?J(this.walkableCigar):r==="clipLengthAtStartOfRead"?this.clipLengthAtStartOfRead:r==="name"?super.get("name")??this.mate?.refName:super.get(r)}get mate(){return super.get("mate")}get walkableCigar(){let r=super.get("CIGAR"),t=super.get("coarseCigar");return typeof r=="string"?r:typeof t=="string"?Ae(t):void 0}get clipLengthAtStartOfRead(){return this.mate?.start??0}forEachMismatch(r,t){let o=this.get("start"),n=t?.start===void 0?void 0:t.start-o,i=t?.end===void 0?void 0:t.end-o,a=this.get("cs");if(a)Ce(a,r,n,i);else{let f=n??Number.NEGATIVE_INFINITY,p=i??Number.POSITIVE_INFINITY;for(let s of J(this.walkableCigar))(s.type==="deletion"||s.type==="skip"?s.start<p&&s.start+s.length>f:s.start>=f&&s.start<=p)&&(s.type==="mismatch"?r(88,s.start,s.length,s.base,s.qual??-1,0,0):s.type==="insertion"?r(73,s.start,s.length,s.insertedBases??"",-1,0,s.insertlen):s.type==="deletion"?r(68,s.start,s.length,"",-1,0,0):s.type==="skip"&&r(78,s.start,s.length,"",-1,0,0))}}};var we=function(e,r){return we=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,o){t.__proto__=o}||function(t,o){for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(t[n]=o[n])},we(e,r)};function H(e,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");we(e,r);function t(){this.constructor=e}e.prototype=r===null?Object.create(r):(t.prototype=r.prototype,new t)}function ar(e,r,t,o){function n(i){return i instanceof t?i:new t(function(a){a(i)})}return new(t||(t=Promise))(function(i,a){function f(c){try{s(o.next(c))}catch(u){a(u)}}function p(c){try{s(o.throw(c))}catch(u){a(u)}}function s(c){c.done?i(c.value):n(c.value).then(f,p)}s((o=o.apply(e,r||[])).next())})}function ee(e,r){var t={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},o,n,i,a=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return a.next=f(0),a.throw=f(1),a.return=f(2),typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function f(s){return function(c){return p([s,c])}}function p(s){if(o)throw new TypeError("Generator is already executing.");for(;a&&(a=0,s[0]&&(t=0)),t;)try{if(o=1,n&&(i=s[0]&2?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[s[0]&2,i.value]),s[0]){case 0:case 1:i=s;break;case 4:return t.label++,{value:s[1],done:!1};case 5:t.label++,n=s[1],s=[0];continue;case 7:s=t.ops.pop(),t.trys.pop();continue;default:if(i=t.trys,!(i=i.length>0&&i[i.length-1])&&(s[0]===6||s[0]===2)){t=0;continue}if(s[0]===3&&(!i||s[1]>i[0]&&s[1]<i[3])){t.label=s[1];break}if(s[0]===6&&t.label<i[1]){t.label=i[1],i=s;break}if(i&&t.label<i[2]){t.label=i[2],t.ops.push(s);break}i[2]&&t.ops.pop(),t.trys.pop();continue}s=r.call(e,t)}catch(c){s=[6,c],n=0}finally{o=i=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}function P(e){var r=typeof Symbol=="function"&&Symbol.iterator,t=r&&e[r],o=0;if(t)return t.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&o>=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(r?"Object is not iterable.":"Symbol.iterator is not defined.")}function D(e,r){var t=typeof Symbol=="function"&&e[Symbol.iterator];if(!t)return e;var o=t.call(e),n,i=[],a;try{for(;(r===void 0||r-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(f){a={error:f}}finally{try{n&&!n.done&&(t=o.return)&&t.call(o)}finally{if(a)throw a.error}}return i}function j(e,r,t){if(t||arguments.length===2)for(var o=0,n=r.length,i;o<n;o++)(i||!(o in r))&&(i||(i=Array.prototype.slice.call(r,0,o)),i[o]=r[o]);return e.concat(i||Array.prototype.slice.call(r))}function k(e){return this instanceof k?(this.v=e,this):new k(e)}function sr(e,r,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=t.apply(e,r||[]),n,i=[];return n=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),f("next"),f("throw"),f("return",a),n[Symbol.asyncIterator]=function(){return this},n;function a(l){return function(y){return Promise.resolve(y).then(l,u)}}function f(l,y){o[l]&&(n[l]=function(d){return new Promise(function(x,g){i.push([l,d,x,g])>1||p(l,d)})},y&&(n[l]=y(n[l])))}function p(l,y){try{s(o[l](y))}catch(d){m(i[0][3],d)}}function s(l){l.value instanceof k?Promise.resolve(l.value.v).then(c,u):m(i[0][2],l)}function c(l){p("next",l)}function u(l){p("throw",l)}function m(l,y){l(y),i.shift(),i.length&&p(i[0][0],i[0][1])}}function fr(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e[Symbol.asyncIterator],t;return r?r.call(e):(e=typeof P=="function"?P(e):e[Symbol.iterator](),t={},o("next"),o("throw"),o("return"),t[Symbol.asyncIterator]=function(){return this},t);function o(i){t[i]=e[i]&&function(a){return new Promise(function(f,p){a=e[i](a),n(f,p,a.done,a.value)})}}function n(i,a,f,p){Promise.resolve(p).then(function(s){i({value:s,done:f})},a)}}function h(e){return typeof e=="function"}function pr(e){var r=function(o){Error.call(o),o.stack=new Error().stack},t=e(r);return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var re=pr(function(e){return function(t){e(this),this.message=t?t.length+` errors occurred during unsubscription:
|
|
2
2
|
`+t.map(function(o,n){return n+1+") "+o.toString()}).join(`
|
|
3
3
|
`):"",this.name="UnsubscriptionError",this.errors=t}});function Oe(e,r){if(e){var t=e.indexOf(r);0<=t&&e.splice(t,1)}}var te=(function(){function e(r){this.initialTeardown=r,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var r,t,o,n,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var f=P(a),p=f.next();!p.done;p=f.next()){var s=p.value;s.remove(this)}}catch(d){r={error:d}}finally{try{p&&!p.done&&(t=f.return)&&t.call(f)}finally{if(r)throw r.error}}else a.remove(this);var c=this.initialTeardown;if(h(c))try{c()}catch(d){i=d instanceof re?d.errors:[d]}var u=this._finalizers;if(u){this._finalizers=null;try{for(var m=P(u),l=m.next();!l.done;l=m.next()){var y=l.value;try{cr(y)}catch(d){i=i??[],d instanceof re?i=j(j([],D(i)),D(d.errors)):i.push(d)}}}catch(d){o={error:d}}finally{try{l&&!l.done&&(n=m.return)&&n.call(m)}finally{if(o)throw o.error}}}if(i)throw new re(i)}},e.prototype.add=function(r){var t;if(r&&r!==this)if(this.closed)cr(r);else{if(r instanceof e){if(r.closed||r._hasParent(this))return;r._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(r)}},e.prototype._hasParent=function(r){var t=this._parentage;return t===r||Array.isArray(t)&&t.includes(r)},e.prototype._addParent=function(r){var t=this._parentage;this._parentage=Array.isArray(t)?(t.push(r),t):t?[t,r]:r},e.prototype._removeParent=function(r){var t=this._parentage;t===r?this._parentage=null:Array.isArray(t)&&Oe(t,r)},e.prototype.remove=function(r){var t=this._finalizers;t&&Oe(t,r),r instanceof e&&r._removeParent(this)},e.EMPTY=(function(){var r=new e;return r.closed=!0,r})(),e})();var Zt=te.EMPTY;function oe(e){return e instanceof te||e&&"closed"in e&&h(e.remove)&&h(e.add)&&h(e.unsubscribe)}function cr(e){h(e)?e():e.unsubscribe()}var w={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var U={setTimeout:function(e,r){for(var t=[],o=2;o<arguments.length;o++)t[o-2]=arguments[o];var n=U.delegate;return n?.setTimeout?n.setTimeout.apply(n,j([e,r],D(t))):setTimeout.apply(void 0,j([e,r],D(t)))},clearTimeout:function(e){var r=U.delegate;return(r?.clearTimeout||clearTimeout)(e)},delegate:void 0};function ne(e){U.setTimeout(function(){var r=w.onUnhandledError;if(r)r(e);else throw e})}function Re(){}var ur=(function(){return Me("C",void 0,void 0)})();function lr(e){return Me("E",void 0,e)}function mr(e){return Me("N",e,void 0)}function Me(e,r,t){return{kind:e,value:r,error:t}}var G=null;function dr(e){if(w.useDeprecatedSynchronousErrorHandling){var r=!G;if(r&&(G={errorThrown:!1,error:null}),e(),r){var t=G,o=t.errorThrown,n=t.error;if(G=null,o)throw n}}else e()}function xr(e){w.useDeprecatedSynchronousErrorHandling&&G&&(G.errorThrown=!0,G.error=e)}var z=(function(e){H(r,e);function r(t){var o=e.call(this)||this;return o.isStopped=!1,t?(o.destination=t,oe(t)&&t.add(o)):o.destination=Yr,o}return r.create=function(t,o,n){return new ae(t,o,n)},r.prototype.next=function(t){this.isStopped?Le(mr(t),this):this._next(t)},r.prototype.error=function(t){this.isStopped?Le(lr(t),this):(this.isStopped=!0,this._error(t))},r.prototype.complete=function(){this.isStopped?Le(ur,this):(this.isStopped=!0,this._complete())},r.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},r.prototype._next=function(t){this.destination.next(t)},r.prototype._error=function(t){try{this.destination.error(t)}finally{this.unsubscribe()}},r.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},r})(te);var Br=Function.prototype.bind;function Fe(e,r){return Br.call(e,r)}var Wr=(function(){function e(r){this.partialObserver=r}return e.prototype.next=function(r){var t=this.partialObserver;if(t.next)try{t.next(r)}catch(o){ie(o)}},e.prototype.error=function(r){var t=this.partialObserver;if(t.error)try{t.error(r)}catch(o){ie(o)}else ie(r)},e.prototype.complete=function(){var r=this.partialObserver;if(r.complete)try{r.complete()}catch(t){ie(t)}},e})(),ae=(function(e){H(r,e);function r(t,o,n){var i=e.call(this)||this,a;if(h(t)||!t)a={next:t??void 0,error:o??void 0,complete:n??void 0};else{var f;i&&w.useDeprecatedNextContext?(f=Object.create(t),f.unsubscribe=function(){return i.unsubscribe()},a={next:t.next&&Fe(t.next,f),error:t.error&&Fe(t.error,f),complete:t.complete&&Fe(t.complete,f)}):a=t}return i.destination=new Wr(a),i}return r})(z);function ie(e){w.useDeprecatedSynchronousErrorHandling?xr(e):ne(e)}function $r(e){throw e}function Le(e,r){var t=w.onStoppedNotification;t&&U.setTimeout(function(){return t(e,r)})}var Yr={closed:!0,next:Re,error:$r,complete:Re};var B=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function hr(e){return e}function yr(e){return e.length===0?hr:e.length===1?e[0]:function(t){return e.reduce(function(o,n){return n(o)},t)}}var _=(function(){function e(r){r&&(this._subscribe=r)}return e.prototype.lift=function(r){var t=new e;return t.source=this,t.operator=r,t},e.prototype.subscribe=function(r,t,o){var n=this,i=zr(r)?r:new ae(r,t,o);return dr(function(){var a=n,f=a.operator,p=a.source;i.add(f?f.call(i,p):p?n._subscribe(i):n._trySubscribe(i))}),i},e.prototype._trySubscribe=function(r){try{return this._subscribe(r)}catch(t){r.error(t)}},e.prototype.forEach=function(r,t){var o=this;return t=gr(t),new t(function(n,i){var a=new ae({next:function(f){try{r(f)}catch(p){i(p),a.unsubscribe()}},error:i,complete:n});o.subscribe(a)})},e.prototype._subscribe=function(r){var t;return(t=this.source)===null||t===void 0?void 0:t.subscribe(r)},e.prototype[B]=function(){return this},e.prototype.pipe=function(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];return yr(r)(this)},e.prototype.toPromise=function(r){var t=this;return r=gr(r),new r(function(o,n){var i;t.subscribe(function(a){return i=a},function(a){return n(a)},function(){return o(i)})})},e.create=function(r){return new e(r)},e})();function gr(e){var r;return(r=e??w.Promise)!==null&&r!==void 0?r:Promise}function Hr(e){return e&&h(e.next)&&h(e.error)&&h(e.complete)}function zr(e){return e&&e instanceof z||Hr(e)&&oe(e)}function Vr(e){return h(e?.lift)}function E(e){return function(r){if(Vr(r))return r.lift(function(t){try{return e(t,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}function M(e,r,t,o,n){return new qr(e,r,t,o,n)}var qr=(function(e){H(r,e);function r(t,o,n,i,a,f){var p=e.call(this,t)||this;return p.onFinalize=a,p.shouldUnsubscribe=f,p._next=o?function(s){try{o(s)}catch(c){t.error(c)}}:e.prototype._next,p._error=i?function(s){try{i(s)}catch(c){t.error(c)}finally{this.unsubscribe()}}:e.prototype._error,p._complete=n?function(){try{n()}catch(s){t.error(s)}finally{this.unsubscribe()}}:e.prototype._complete,p}return r.prototype.unsubscribe=function(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var o=this.closed;e.prototype.unsubscribe.call(this),!o&&((t=this.onFinalize)===null||t===void 0||t.call(this))}},r})(z);var se=(function(e){return e&&typeof e.length=="number"&&typeof e!="function"});function fe(e){return h(e?.then)}function pe(e){return h(e[B])}function ce(e){return Symbol.asyncIterator&&h(e?.[Symbol.asyncIterator])}function ue(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Kr(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var le=Kr();function me(e){return h(e?.[le])}function de(e){return sr(this,arguments,function(){var t,o,n,i;return ee(this,function(a){switch(a.label){case 0:t=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,k(t.read())];case 3:return o=a.sent(),n=o.value,i=o.done,i?[4,k(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,k(n)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function xe(e){return h(e?.getReader)}function O(e){if(e instanceof _)return e;if(e!=null){if(pe(e))return Qr(e);if(se(e))return Xr(e);if(fe(e))return Zr(e);if(ce(e))return br(e);if(me(e))return Jr(e);if(xe(e))return et(e)}throw ue(e)}function Qr(e){return new _(function(r){var t=e[B]();if(h(t.subscribe))return t.subscribe(r);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Xr(e){return new _(function(r){for(var t=0;t<e.length&&!r.closed;t++)r.next(e[t]);r.complete()})}function Zr(e){return new _(function(r){e.then(function(t){r.closed||(r.next(t),r.complete())},function(t){return r.error(t)}).then(null,ne)})}function Jr(e){return new _(function(r){var t,o;try{for(var n=P(e),i=n.next();!i.done;i=n.next()){var a=i.value;if(r.next(a),r.closed)return}}catch(f){t={error:f}}finally{try{i&&!i.done&&(o=n.return)&&o.call(n)}finally{if(t)throw t.error}}r.complete()})}function br(e){return new _(function(r){rt(e,r).catch(function(t){return r.error(t)})})}function et(e){return br(de(e))}function rt(e,r){var t,o,n,i;return ar(this,void 0,void 0,function(){var a,f;return ee(this,function(p){switch(p.label){case 0:p.trys.push([0,5,6,11]),t=fr(e),p.label=1;case 1:return[4,t.next()];case 2:if(o=p.sent(),!!o.done)return[3,4];if(a=o.value,r.next(a),r.closed)return[2];p.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return f=p.sent(),n={error:f},[3,11];case 6:return p.trys.push([6,,9,10]),o&&!o.done&&(i=t.return)?[4,i.call(t)]:[3,8];case 7:p.sent(),p.label=8;case 8:return[3,10];case 9:if(n)throw n.error;return[7];case 10:return[7];case 11:return r.complete(),[2]}})})}function T(e,r,t,o,n){o===void 0&&(o=0),n===void 0&&(n=!1);var i=r.schedule(function(){t(),n?e.add(this.schedule(null,o)):this.unsubscribe()},o);if(e.add(i),!n)return i}function he(e,r){return r===void 0&&(r=0),E(function(t,o){t.subscribe(M(o,function(n){return T(o,e,function(){return o.next(n)},r)},function(){return T(o,e,function(){return o.complete()},r)},function(n){return T(o,e,function(){return o.error(n)},r)}))})}function ye(e,r){return r===void 0&&(r=0),E(function(t,o){o.add(e.schedule(function(){return t.subscribe(o)},r))})}function Sr(e,r){return O(e).pipe(ye(r),he(r))}function vr(e,r){return O(e).pipe(ye(r),he(r))}function Ar(e,r){return new _(function(t){var o=0;return r.schedule(function(){o===e.length?t.complete():(t.next(e[o++]),t.closed||this.schedule())})})}function _r(e,r){return new _(function(t){var o;return T(t,r,function(){o=e[le](),T(t,r,function(){var n,i,a;try{n=o.next(),i=n.value,a=n.done}catch(f){t.error(f);return}a?t.complete():t.next(i)},0,!0)}),function(){return h(o?.return)&&o.return()}})}function ge(e,r){if(!e)throw new Error("Iterable cannot be null");return new _(function(t){T(t,r,function(){var o=e[Symbol.asyncIterator]();T(t,r,function(){o.next().then(function(n){n.done?t.complete():t.next(n.value)})},0,!0)})})}function Cr(e,r){return ge(de(e),r)}function Ir(e,r){if(e!=null){if(pe(e))return Sr(e,r);if(se(e))return Ar(e,r);if(fe(e))return vr(e,r);if(ce(e))return ge(e,r);if(me(e))return _r(e,r);if(xe(e))return Cr(e,r)}throw ue(e)}function Ne(e,r){return r?Ir(e,r):O(e)}function V(e,r){return E(function(t,o){var n=0;t.subscribe(M(o,function(i){o.next(e.call(r,i,n++))}))})}function Er(e,r,t,o,n,i,a,f){var p=[],s=0,c=0,u=!1,m=function(){u&&!p.length&&!s&&r.complete()},l=function(d){return s<o?y(d):p.push(d)},y=function(d){i&&r.next(d),s++;var x=!1;O(t(d,c++)).subscribe(M(r,function(g){n?.(g),i?l(g):r.next(g)},function(){x=!0},void 0,function(){if(x)try{s--;for(var g=function(){var b=p.shift();a?T(r,a,function(){return y(b)}):y(b)};p.length&&s<o;)g();m()}catch(b){r.error(b)}}))};return e.subscribe(M(r,l,function(){u=!0,m()})),function(){f?.()}}function W(e,r,t){return t===void 0&&(t=1/0),h(r)?W(function(o,n){return V(function(i,a){return r(o,i,n,a)})(O(e(o,n)))},t):(typeof r=="number"&&(t=r),E(function(o,n){return Er(o,n,e,t)}))}function Tr(e,r,t,o,n){return function(i,a){var f=t,p=r,s=0;i.subscribe(M(a,function(c){var u=s++;p=f?e(p,c,u):(f=!0,c),o&&a.next(p)},n&&(function(){f&&a.next(p),a.complete()})))}}function wr(e,r){return E(Tr(e,r,arguments.length>=2,!1,!0))}var tt=function(e,r){return e.push(r),e};function be(){return E(function(e,r){wr(tt,[])(e).subscribe(r)})}var ot=397,nt=387,it=385;function Or(e){return(1<<e&ot)!==0}function Rr(e){return(1<<e&nt)!==0}function Mr(e){return(1<<e&it)!==0}function Pe(e,r,t,o,n,i,a){let f=n===-1?-1:1,p=r,s=n===-1?o:t,c=[],u=1/0,m=-1/0,l=1/0,y=-1/0,d=(x,g)=>{l=Math.min(l,x,g),y=Math.max(y,x,g)};for(let x=0;x<e.length;x++){let g=e[x],b=g>>>4,v=g&15,S=v===9,C=S||Or(v)?b:0,F=S?e[++x]>>>4:Rr(v)?b:0,q=p+C,I=s+F*f,R=p,L=q;if(L>=i&&R<=a)if(C>0){let A=Math.max(R,i),$=Math.min(L,a);if($>A)if(u=Math.min(u,A),m=Math.max(m,$),S){let je=F/b,Ue=$-A,Be=Math.round(Ue*je),We=Math.round(s+(A-p)*je*f);c.push(Ue<<4|9,Be<<4|9),d(We,We+Be*f)}else c.push($-A<<4|v),Mr(v)?d(s+(A-p)*f,s+($-p)*f):d(s,s)}else F>0&&(S?c.push(g,e[x]):c.push(g),u=Math.min(u,p),m=Math.max(m,p),d(s,I));if(p=q,s=I,p>a)break}if(c.length!==0)return{start:u,end:m,mateStart:l,mateEnd:y,cigar:Uint32Array.from(c)}}function at(e){return e===1||e===2||e===3}function ke(e,r,t,o,n,i){let a=n===-1?-1:1,f=[],p=r,s=n===-1?o:t,c,u=!1,m=()=>{c!==void 0&&u&&c.qHi>c.qLo&&f.push({start:c.qLo,end:c.qHi,mateStart:c.tLo,mateEnd:c.tHi,cigar:Uint32Array.from(c.ops)}),c=void 0,u=!1};for(let l=0;l<e.length;l++){let y=e[l],d=y>>>4,x=y&15,g=x===9,b=g?e[++l]:void 0,v=g||Or(x)?d:0,S=b!==void 0?b>>>4:Rr(x)?d:0,C=s+S*a;at(x)&&d>=i?m():(v>0||S>0)&&(c===void 0&&(c={qLo:p,qHi:p,tLo:s,tHi:s,ops:[]}),c.qHi=p+v,c.tLo=Math.min(c.tLo,s,C),c.tHi=Math.max(c.tHi,s,C),c.ops.push(y),b!==void 0&&c.ops.push(b),u=u||g||Mr(x)),p+=v,s=C}return m(),f}function Fr(e){let r=e.get("CIGAR");return typeof r=="string"?r:void 0}function Lr(e){let r=e.get("coarseCigar");return typeof r=="string"?r:void 0}function Ge(e){let r=Fr(e),t=r===void 0?Lr(e):void 0;return r!==void 0?Te(r):t!==void 0?_e(t):void 0}var st=["CIGAR","cs","coarseCigar","cg","cr"];function ft(e){return typeof e=="object"&&e!==null&&"refName"in e&&"start"in e&&"end"in e&&typeof e.refName=="string"&&typeof e.start=="number"&&typeof e.end=="number"}function pt(e){let r=e.get("mate");return ft(r)?r:void 0}function ct(e,r,t,o){let n=Math.max(e.start,o.start),i=Math.min(e.end,o.end),a=(r.end-r.start)/Math.max(e.end-e.start,1),f=c=>t===-1?r.end-(c-e.start)*a:r.start+(c-e.start)*a,p=Math.round(f(n)),s=Math.round(f(i));return i>n?{start:n,end:i,mateStart:Math.min(p,s),mateEnd:Math.max(p,s)}:void 0}function ut(e,r,t,o,n){let i={start:e.get("start"),end:e.get("end")},a=e.get("strand")===-1?-1:1,f=i.start>=t.start&&i.end<=t.end,p=f&&o===void 0&&!n?void 0:Ge(e);if(p===void 0){let s=f?{...i,mateStart:r.start,mateEnd:r.end}:ct(i,r,a,t);return s===void 0?[]:[s]}else return(o===void 0?[{...i,mateStart:r.start,mateEnd:r.end,cigar:p}]:ke(p,i.start,r.start,r.end,a,o)).flatMap(c=>{let u=Pe(c.cigar,c.start,c.mateStart,c.mateEnd,a,t.start,t.end);return u===void 0?[]:[u]})}function lt(e,r,t,o,n,i){let a=`:${o.start}-${o.end}${n}`,f=e.toJSON(),p={...f,uniqueId:`${e.id()}${a}`,recordId:f.recordId??e.id(),start:t.start,end:t.end,mate:{...r,start:t.mateStart,end:t.mateEnd}};f.syntenyId!==void 0&&(p.syntenyId=`${String(f.syntenyId)}${a}`);for(let s of st)delete p[s];return i&&t.cigar&&(p.alignmentOps=t.cigar),new N(p)}function Nr(e,r,t,o=!1){let n=pt(e);if(n===void 0)return[e];{let i=ut(e,n,r,t,o);return i.map((a,f)=>lt(e,n,a,r,i.length>1?`/${f}`:"",o))}}var Pr=class extends ze{constructor(){super(...arguments);this.recordsAreAlignments=!0}static{this.capabilities=["getFeatures","getRefNames"]}async hasDataForRefName(){return!0}getFeaturesInMultipleRegions(t,o={}){let{clipToRegion:n,splitAtGapBp:i,keepAlignment:a,...f}=o,p=n&&this.recordsAreAlignments,s=Ye(f.statusCallback);return Ne(t).pipe(W((c,u)=>this.getFeatures(c,{...f,statusCallback:s()}).pipe(W(m=>p?Nr(m,m.get("assemblyName")===c.assemblyName?c:{start:m.get("start"),end:m.get("end")},i,a):[m]),be(),V(m=>({index:u,features:m})))),be(),W(c=>c.sort((u,m)=>u.index-m.index).flatMap(u=>u.features)))}};var De=class extends Error{constructor(t){super(`a pair query names both lanes: queryAssemblyName ${t} came without a targetAssemblyName`);this.name="PairTargetError"}};function Xi(e){let{lanePairs:r,queryAssemblyName:t,targetAssemblyName:o}=e;if(r?.length)return r;if(t===void 0)return[];if(o===void 0)throw new De(t);return[{queryAssemblyName:t,targetAssemblyName:o}]}function Zi(e){let[r]=e;return e.length===1&&r?`Reading ${r.queryAssemblyName} against ${r.targetAssemblyName}`:`Reading ${e.length} lane pairs`}function Ji(e,r){return e[r]??e[He(r)]??r}function mt(e,r){let t=Math.max(1,r);return e>=10*t?Math.ceil(e/t):Math.max(11,Math.ceil(10*e/t))/10}function ta(e,r){if(Ve(e)&&e instanceof Error){let{fitsBp:t}=e;e.message=e.message.replace("to see the graph","to see lanes"),typeof t=="number"&&(e.message=e.message.replace(/^Zoom in to about [\d.,]*\d[KM]?bp/,`Zoom in about ${mt(r,t)}\xD7`))}return e}function ia({target:e,query:r,strand:t,cigar:o,matches:n,columns:i}){let a=`${e.name}:${e.start}-${e.end}|${r.name}:${r.start}-${r.end}`;return new N({uniqueId:a,assemblyName:e.assemblyName,refName:e.refName,start:e.start,end:e.end,type:"match",strand:t==="-"?-1:1,CIGAR:o,syntenyId:a,identity:n/Math.max(i,1),numMatches:n,blockLen:i,mate:{refName:r.refName,start:r.start,end:r.end,assemblyName:r.assemblyName}})}export{N as a,Pr as b,De as c,Xi as d,Zi as e,Ji as f,ta as g,ia as h};
|
|
4
|
-
//# sourceMappingURL=chunk-
|
|
4
|
+
//# sourceMappingURL=chunk-YMK7HFJV.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as dt,c as ht,d as yt,g as C,j as K,l as xt,q as Mt,r as $,w as bt,x as vt}from"./chunk-IK3MQ4ZJ.js";import{b as pt,c as mt}from"./chunk-VKZALU57.js";var gt=20;function be(t){let n=e=>Math.round(e*100)/100;return t.map((e,o)=>`${o?"L":"M"}${n(e.x)},${n(e.y)}`).join("")}function wt(t,n,e,o,r){let s=Math.hypot(o-n,e-t);if(s===0)return[e,o];let c=(e-t)/s,a=(o-n)/s;return[e+r*c,o+r*a]}function Y(t,n){let e=1-n,o=e*e*e,r=3*e*e*n,s=3*e*n*n,c=n*n*n;return{x:o*t.x0+r*t.cx0+s*t.cx1+c*t.x1,y:o*t.y0+r*t.cy0+s*t.cy1+c*t.y1}}function Pt(t){let n=t[Math.floor(t.length/2)];return n?Y(n,.5):void 0}function Nt(t){let n=1/0,e=1/0,o=-1/0,r=-1/0;for(let s of t)n=Math.min(n,s.x0,s.cx0,s.cx1,s.x1),o=Math.max(o,s.x0,s.cx0,s.cx1,s.x1),e=Math.min(e,s.y0,s.cy0,s.cy1,s.y1),r=Math.max(r,s.y0,s.cy0,s.cy1,s.y1);return{minX:n,minY:e,maxX:o,maxY:r}}function tn(t,n,e){let o=Y(t,n),r=Y(t,e),s=(e-n)/3,c=At(t,n),a=At(t,e);return{x0:o.x,y0:o.y,cx0:o.x+c.x*s,cy0:o.y+c.y*s,cx1:r.x-a.x*s,cy1:r.y-a.y*s,x1:r.x,y1:r.y}}function At(t,n){let e=1-n,o=3*e*e,r=6*e*n,s=3*n*n;return{x:o*(t.cx0-t.x0)+r*(t.cx1-t.cx0)+s*(t.x1-t.cx1),y:o*(t.cy0-t.y0)+r*(t.cy1-t.cy0)+s*(t.y1-t.cy1)}}var H=32;function nn(t,n,e,o){let r=[],s=0;return t.forEach((c,a)=>{let i=n[a],d=i/H,l=Y(c,0);for(let u=1;u<=H;u++){let h=Y(c,u/H);if(Math.max(l.x,h.x)+d>=e.minX&&Math.min(l.x,h.x)-d<=e.maxX&&Math.max(l.y,h.y)+d/o>=e.minY&&Math.min(l.y,h.y)-d/o<=e.maxY){let f=s+i*(u-1)/H,y=s+i*u/H,x=r.at(-1);x&&x[1]>=f?x[1]=y:r.push([f,y])}l=h}s+=i}),r}function ve(t,n,e=1,o){let r=t.map(u=>Math.hypot(u.cx0-u.x0,(u.cy0-u.y0)*e)+Math.hypot(u.cx1-u.cx0,(u.cy1-u.cy0)*e)+Math.hypot(u.x1-u.cx1,(u.y1-u.cy1)*e)),s=r.reduce((u,h)=>u+h,0),c=Math.round(s/n),a=Math.max(3,c%2?c:c+1),i=o?nn(t,r,o,e):void 0,d=0,l=[];for(let u=0;u<a;u+=2){let h=u/a*s,f=(u+1)/a*s;if(i){for(;d<i.length&&i[d][1]<h;)d++;if(d===i.length)break;if(i[d][0]>f)continue}let y=[],x=[],p=0;t.forEach((b,m)=>{let M=r[m],g=p+M;if(M>0&&g>h&&p<f){let v=Math.max(0,(h-p)/M),w=Math.min(1,(f-p)/M);y.push(tn(b,v,w)),x.push((m+v)/t.length,(m+w)/t.length)}p=g}),y.length&&l.push({curves:y,startAlong:x[0],endAlong:x.at(-1)})}return l}var ge=(t,n,e)=>({dx:t.dx+(n.dx-t.dx)*e,dy:t.dy+(n.dy-t.dy)*e});function we(t,n,e,o,r){let s=t.length,c=new Array(s);for(let a=0;a<s;a++){let i=t[a],d=a/s,l=(a+1)/s,u=n+(o-n)*d,h=e+(r-e)*d,f=n+(o-n)*l,y=e+(r-e)*l;c[a]={x0:i.x0+u,y0:i.y0+h,cx0:i.cx0+u,cy0:i.cy0+h,cx1:i.cx1+f,cy1:i.cy1+y,x1:i.x1+f,y1:i.y1+y}}return c}function Ae(t,n,e){let o=new Array(t.length);for(let r=0;r<t.length;r++){let s=t[r];o[r]={x0:s.x0+n,y0:s.y0+e,cx0:s.cx0+n,cy0:s.cy0+e,cx1:s.cx1+n,cy1:s.cy1+e,x1:s.x1+n,y1:s.y1+e}}return o}function W(t,n){let e=t.length-1;return n==="end"?{at:t[e],inward:t[e-1]}:{at:t[0],inward:t[1]}}var en=.5,on=80;function F(t){return t.endsWith("-")?"-":"+"}function q(t){let n=(e,o)=>(o??F(e))===F(e);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function _t(t){let n=1/0,e=-1/0;for(let o of t)n=Math.min(n,o.x),e=Math.max(e,o.x);return{min:n,max:e}}function Et(t,n){return Math.max(0,n.min-t,t-n.max)}function It(t,n,e){let o=Et(t[0].x,n),r=Et(t[t.length-1].x,n);return o===r?e:o<r?"start":"end"}function rn(t,n){return{from:It(t,_t(n),"end"),to:It(n,_t(t),"start")}}var Lt=new WeakMap;function sn(t,n){let e=Lt.get(t);e||(e=new WeakMap,Lt.set(t,e));let o=e.get(n);return o||(o=rn(t,n),e.set(n,o)),o}var cn=.75,an=1.15,fn=.35,un=3*gt;function ln(t,n,e,o,r,s){let c=Math.hypot(e-t,o-n),a=c===0?1:(e-t)/c,i=c===0?0:(o-n)/c,d=0,l=1/0,u=-1/0;for(let x of r){let p=x.x-t,b=x.y-n,m=p*-i+b*a;Math.abs(m)>Math.abs(d)&&(d=m);let M=p*a+b*i;l=Math.min(l,M),u=Math.max(u,M)}let h=r.length?u-l:0,f=Math.max(Math.abs(d)*an/cn,h*fn),y=s===void 0?f:Math.min(f,s);return d<0?-y:y}function Xt({scaleX:t,scaleY:n}){return n/t}var dn=3;function J(t,n,e){let o=n.x-t.x,r=(n.y-t.y)*e,s=Math.hypot(o,r);return s===0?void 0:{x:o/s,y:r/s}}function _e(t,n,e,o){let r=Xt(o),s=dn/Math.max(o.scaleX,1e-6),c=J(t[t.length-1],n[0],r)??J(t[0],t.at(-1),r)??J(n[0],n.at(-1),r)??{x:1,y:0},a=[];for(let i=0;i<e;i++){let d=(i-(e-1)/2)*s;a.push({x:-c.y*d,y:c.x*d/r})}return a}function Q(t,n){return t.map(e=>({x:e.x,y:e.y*n}))}function hn(t,n){for(let e of t)e.y0/=n,e.cy0/=n,e.cy1/=n,e.y1/=n;return t}function Z(t,n,e){let o=0;for(let r=1;r<t.length;r++){let s=t[r-1],c=t[r];o+=Math.hypot((c.x-s.x)*n,(c.y-s.y)*e)}return o}var yn=12,xn=40;function Ot(t,n){let e=Z(t,n,n);return Math.min(xn,Math.max(yn,e/2))/Math.max(n,Number.EPSILON)}function pn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Ct(t,n=!1){let e=pn(t);if(!n)return e;let o=q(t);return e===!1?o:o.from===o.to?o.from:!0}function mn(t,n){let{at:e,inward:o}=t,r=o?e.x-o.x:1,s=o?e.y-o.y:0,c=Math.hypot(r,s)||1,a=r/c,i=s/c,d=e.x,l=e.y,u=d+a*n/3,h=l+i*n/3,f=d+a*n,y=l+i*n,x=-i*n/2,p=a*n/2;return[{x0:d,y0:l,cx0:u,cy0:h,cx1:f+x,cy1:y+p,x1:f,y1:y},{x0:f,y0:y,cx0:f-x,cy0:y-p,cx1:u,cy1:h,x1:d,y1:l}]}function tt(t,n,e,o,r=[],s){let c=o.scaleX,a=Xt(o),i=s??(o.pixelRows?un:void 0);if(e===!1&&(e=sn(t,n)),a!==1)return hn(tt(Q(t,a),Q(n,a),e,{scaleX:c,scaleY:c},Q(r,a),i===void 0?void 0:i*a),a);if(typeof e=="string")return mn(W(t,e),Ot(t,c));let d=e===!0,l=e===!0?{from:"end",to:"start"}:e,u=W(t,l.from),h=W(n,l.to),f=u.at,y=h.at,x=f.x,p=f.y,b=y.x,m=y.y;if(d){let M=1,g=0;if(u.inward){let S=f.x-u.inward.x,P=f.y-u.inward.y,X=Math.hypot(S,P);X>0&&(M=S/X,g=P/X)}let v=Ot(t,c),w=-g,_=M,I=(f.x+y.x)/2+w*v,E=(f.y+y.y)/2+_*v,A=x+M*v,N=p+g*v,O=b-M*v,L=m-g*v;return[{x0:x,y0:p,cx0:A,cy0:N,cx1:A+w*v,cy1:N+_*v,x1:I,y1:E},{x0:I,y0:E,cx0:O+w*v,cy0:L+_*v,cx1:O,cy1:L,x1:b,y1:m}]}else{let M=u.inward??{x:f.x-(y.x-f.x),y:f.y-(y.y-f.y)},g=h.inward??{x:y.x-(f.x-y.x),y:y.y-(f.y-y.y)},v=Math.hypot(b-x,m-p),w=(at,it,Jt,Qt)=>{let ft=it.x-at.x,ut=it.y-at.y,lt=Math.hypot(ft,ut),Zt=lt===0?0:(Jt*ft+Qt*ut)/lt;return Math.max(0,Math.min(v*en,on,Zt*.5))},_=y.x-f.x,I=y.y-f.y,[E,A]=wt(M.x,M.y,f.x,f.y,w(M,f,_,I)),[N,O]=wt(g.x,g.y,y.x,y.y,w(g,y,-_,-I)),L=r.length?ln(x,p,b,m,r,i):0,S=v===0?1:v,P=(b-x)/S,X=(m-p)/S,T=-X*L,B=P*L,R=P*Math.abs(L),ct=X*Math.abs(L);return[{x0:x,y0:p,cx0:E+T-R,cy0:A+B-ct,cx1:N+T+R,cy1:O+B+ct,x1:b,y1:m}]}}function St(t,n){let e=t[0],o=t.at(-1);return Math.hypot(e.x-n.x,e.y-n.y)<Math.hypot(o.x-n.x,o.y-n.y)?"start":"end"}function kt(t,n,e,o){let r=W(t,o?.from??St(t,e[0])),s=W(n,o?.to??St(n,e.at(-1))),c=[r.at,...e,s.at],a=d=>{let l=c[d],u=f=>Math.hypot(f.x-l.x,f.y-l.y),h=(f,y)=>{let x=f?u(f):0,p=u(y);return x===0?{x:y.x-l.x,y:y.y-l.y}:{x:(l.x-f.x)/x*p,y:(l.y-f.y)/x*p}};if(d===0)return h(r.inward,c[1]);if(d===c.length-1){let f=h(s.inward,c[d-1]);return{x:-f.x,y:-f.y}}return{x:(c[d+1].x-c[d-1].x)/2,y:(c[d+1].y-c[d-1].y)/2}},i=[];for(let d=0;d<c.length-1;d++){let l=c[d],u=c[d+1],h=a(d),f=a(d+1);i.push({x0:l.x,y0:l.y,cx0:l.x+h.x/3,cy0:l.y+h.y/3,cx1:u.x-f.x/3,cy1:u.y-f.y/3,x1:u.x,y1:u.y})}return i}function nt(){let t=new WeakMap;return(n,e,o)=>{let r=t.get(n);if(r?.deps.length===e.length&&r.deps.every((c,a)=>Object.is(c,e[a])))return r.value;let s=o();return t.set(n,{deps:e,value:s}),s}}var Bt=11,Mn=6.2,D=4;function et(t){return t.length*Mn+D*2}function bn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function Tt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function vn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function Rt(t,n=[]){let e=[...n];return o=>Tt(o,t)||e.some(r=>bn(r,o))?!1:(e.push(o),!0)}function Le(t,n,e){let o=[],r=Bt+D*2,s=(c,a)=>{let i=et(a),d=c.y>n.height/2?-1:1;for(let l=0;l<=(c.stack??0);l++){let u=c.y+d*l*r,h={x0:c.x-i/2,x1:c.x+i/2,y0:u-Bt-D,y1:u+D};if(Tt(h,n))return;if(vn(h,n)&&(c.fits?.(h)??!0)&&e(h))return{...c,text:a,y:u,w:i}}};for(let c of t){let a=s(c,c.text)??(c.fallback===void 0?void 0:s(c,c.fallback));a&&o.push(a)}return o}function $t(t){return t==="+"?"-":"+"}function Xe(t,n=new Set){let e=t.edges.map(q),o=new Map,r=(f,y,x)=>{dt(o,`${f}|${y}`,x)};t.edges.forEach((f,y)=>{r(f.from,e[y].from,y),r(f.to,e[y].to,y)});let s=f=>{let y=o.get(`${f}|end`);if(y?.length!==1)return;let x=y[0],p=t.edges[x];return p.from===f&&p.to!==f&&!n.has(f)&&!n.has(p.to)&&e[x].from==="end"&&e[x].to==="start"&&o.get(`${p.to}|start`)?.length===1?x:void 0},c=new Set,a=new Map,i=new Map;for(let f of t.nodes){let y=o.get(`${f.id}|start`),x=y?.length===1?t.edges[y[0]].from:void 0;if(a.has(f.id)||x!==void 0&&s(x)===y[0])continue;let p=[f.id];for(;;){let b=s(p.at(-1)),m=b===void 0?void 0:t.edges[b].to;if(m===void 0||a.has(m))break;c.add(b),p.push(m)}for(let b of p)a.set(b,f.id);p.length>1&&i.set(f.id,p)}for(let f of t.nodes)a.has(f.id)||a.set(f.id,f.id);let d=new Map(t.nodes.map(f=>[f.id,f])),l=[];for(let f of t.nodes){if(a.get(f.id)!==f.id)continue;let y=i.get(f.id);if(!y){l.push(f);continue}let x=y.map(m=>d.get(m)),p=x.filter(C),b=p.length?p.reduce((m,M)=>m.stable.start<=M.stable.start?m:M):x[0];l.push({id:f.id,name:f.name,length:x.reduce((m,M)=>m+M.length,0),depth:f.depth,stable:b.stable})}let u=new Set,h=[];return t.edges.forEach((f,y)=>{let x=a.get(f.from),p=a.get(f.to),b=e[y],m=`${x}|${b.from}>${p}|${b.to}`;c.has(y)||u.has(m)||(u.add(m),h.push({from:x,to:p,...b.from==="start"?{fromStrand:$t(F(x))}:{},...b.to==="end"?{toStrand:$t(F(p))}:{}}))}),{graph:{...t,nodes:l,edges:h,paths:void 0,pathVisits:void 0},runs:i}}function Ce(t,n,e){let o={...t};for(let[r,s]of n){let c=t[r];if(!c?.length)continue;delete o[r];let a=rt(c),i=a.at(-1),d=s.map(h=>Math.max(e(h),0)),l=d.reduce((h,f)=>h+f,0),u=0;s.forEach((h,f)=>{let y=l?d[f]/l*i:i/s.length,x=f===s.length-1?i:u+y;o[h]=Yt(c,a,u,x),u=x})}return o}function ke(t,n,e){if(t.length===0)return[];let o=rt(t),r=o.at(-1);return Yt(t,o,n*r,e*r)}function Ht(t){let n=rt(t);return ot(t,n,n.at(-1)/2)}function rt(t){let n=[0];for(let e=1;e<t.length;e++)n.push(n[e-1]+Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y));return n}function Wt(t,n){let e=0,o=t.length;for(;e<o;){let r=e+o>>1;t[r]<n?e=r+1:o=r}return e}function ot(t,n,e){if(e<=0)return{...t[0]};let o=Wt(n,e);if(o>=n.length)return{...t.at(-1)};let r=n[o]-n[o-1],s=r>0?(e-n[o-1])/r:0,c=t[o-1],a=t[o];return{x:c.x+(a.x-c.x)*s,y:c.y+(a.y-c.y)*s}}function Yt(t,n,e,o){let r=[ot(t,n,e)];for(let s=Wt(n,e);s<t.length&&n[s]<o;s++)n[s]>e&&r.push({...t[s]});return r.push(ot(t,n,o)),r}function He(t,n){let e=new Set(t.nodes.filter(i=>C(i)&&K(i,n)).map(i=>i.id)),o=t.paths??[];if(e.size===0||o.length===0)return t;let r=o.map(i=>{let d=-1,l=-1;return i.nodeIds.forEach((u,h)=>{e.has(u)&&(d<0&&(d=h),l=h)}),d<0?void 0:{first:d,last:l}});if(r.every((i,d)=>i?.first===0&&i.last===o[d].nodeIds.length-1))return t;let s=new Set,c=[],a=new Map;return o.forEach((i,d)=>{let l=r[d];if(l){let u=i.nodeIds.slice(l.first,l.last+1);for(let h of u)s.add(h);c.push({...i,nodeIds:u}),a.set(i.name,{first:l.first,nodeIds:u})}}),{...t,nodes:t.nodes.filter(i=>s.has(i.id)),edges:t.edges.filter(i=>s.has(i.from)&&s.has(i.to)),paths:c,pathVisits:t.pathVisits&&gn(t.pathVisits,o,r,new Map(t.nodes.map(i=>[i.id,i.name]))),anchorPaths:bt(t,a)}}function gn(t,n,e,o){let r=t.replay(),s=new Mt;return n.forEach((c,a)=>{let i=t.pathIndex($(c.name).name),d=e[a];c.nodeIds.forEach((l,u)=>{let h=o.get(l)??l,f=r(t.slot(h),i);f>=0&&d&&u>=d.first&&u<=d.last&&s.add(h,t.paths[i],t.samples[i],t.start[f],t.reversed[f]===1)})}),s.build()}function We(t,n,e){let o=t.nodes.map(r=>{if(!C(r))return r;let s=r.stable.start,c=s+r.length,[a,i]=K(r,n)?[Math.max(s,n.start),Math.min(c,n.end)]:c<=n.start?[Math.max(s,c-e),c]:[s,Math.min(c,s+e)];return a===s&&i===c?r:{...r,length:i-a,stable:{...r.stable,start:a},unclipped:{start:s,length:r.length}}});return o.some((r,s)=>r!==t.nodes[s])?{...t,nodes:o}:t}function Ft(t){return t.nodes.some(n=>n.unclipped)?{...t,nodes:t.nodes.map(({unclipped:n,...e})=>n&&e.stable?{...e,length:n.length,stable:{...e.stable,start:n.start}}:e)}:t}var wn=1,je=t=>`skips ${t??"the reference"} sequence (a deletion)`;function An(t,n){return n.flatMap(e=>t[e]??[])}function Gt(t,n,e,o,r,s){let c=t[n.from],a=t[n.to];if(!(!c?.length||!a?.length))return r?kt(c,a,r,s?q(n):void 0):tt(c,a,Ct(n,s),e,o?An(t,o):[])}function _n(t){let n=ht(t.nodes.filter(C),e=>e.stable.refName);for(let e of n.values())e.sort((o,r)=>o.stable.start-r.stable.start);return n}function En(t,n,e){let o=[];if(t)for(let r=xt(t,n);r<t.length;r++){let s=t[r];if(s.stable.start>=e)break;s.stable.start+s.length<=e&&o.push(s.id)}return o}function In(t,n,e,o){let{fromStrand:r,toStrand:s}=t;if(r===void 0||s===void 0)return!0;let c=r===(n.stable.strand??"+"),a=s===(e.stable.strand??"+");return o?c&&a:!c&&!a}function Ln(t,n,e,o){let r;for(let s of o(n))for(let c of o(e)){let a=s<=c,i=a?{start:s+n.length,end:c}:{start:c+e.length,end:s};In(t,n,e,a)&&(!r||Math.abs(i.end-i.start)<Math.abs(r.end-r.start))&&(r=i)}return r}var On=.01;function Sn(t,n){let e=new Map;for(let[o,r]of t){let s=r.flatMap(c=>{let a=n(c);return a.slice(1).map((i,d)=>({at:a[d],copy:i-a[d]}))});s.length&&e.set(o,s.sort((c,a)=>c.at-a.at))}return e}function Pn(t,n,e){if(!t)return!1;let o=yt(t.length,s=>t[s].at<n),r=[t[o-1],t[o]].filter(s=>s!==void 0).sort((s,c)=>Math.abs(s.at-n)-Math.abs(c.at-n))[0];return r!==void 0&&Math.abs(r.at-n)<=r.copy&&Math.abs(e-r.copy)<=r.copy*On}function Ue(t){let n=Ft(t),e=new Map(n.nodes.map(a=>[a.id,a])),o=_n(n),r=vt(n),s=Sn(o,r),c=[];for(let a=0;a<n.edges.length;a++){let i=n.edges[a],d=e.get(i.from),l=e.get(i.to);if(!i.foldBridge&&d!==void 0&&l!==void 0&&C(d)&&C(l)&&d.stable.refName===l.stable.refName){let u=Ln(i,d,l,r),h=d.stable.refName,f=u?u.end-u.start:0;if(u&&f>=wn&&!Pn(s.get(h),u.start,f)){let{start:y,end:x}=u;c.push({edgeIndex:a,from:i.from,to:i.to,...i.fromStrand?{fromStrand:i.fromStrand}:{},...i.toStrand?{toStrand:i.toStrand}:{},refName:h,start:y,end:x,bp:f,bypassed:En(o.get(h),y,x)})}}}return c}function Nn(t,n){let e=new Map,o=c=>{let a=c;for(;e.has(a);)a=e.get(a);return a!==c&&e.set(c,a),a},r=(c,a)=>{let[i,d]=[o(c),o(a)];return i!==d&&e.set(i,d),i!==d},s=new Set(n.map(c=>c.edgeIndex));return t.edges.forEach((c,a)=>{s.has(a)||r(c.from,c.to)}),new Set(n.filter(c=>!r(c.from,c.to)).map(c=>c.edgeIndex))}var qt=new WeakMap;function Ke(t,n,e=!0){let o=qt.get(n);o||(o=new Map,qt.set(n,o));let r=o.get(e);if(!r){let s=e?new Set:Nn(t,n);r={shown:n.filter(c=>!s.has(c.edgeIndex)),bypassed:new Map(n.map(c=>[c.edgeIndex,c.bypassed])),hidden:s},o.set(e,r)}return r}var Xn=26,Cn=4e4,kn=8,Bn=8,Tn=5.7,Rn=6,$n=13,G=3,V=2;function U(t){return(t.length*Tn+Rn+G)/2}var k=($n+G)/2,Hn=U("1 bp");function z(t,n,e){return{x0:n-t,x1:n+t,y0:e-k,y1:e+k}}function oo(t,n){return{x0:6,x1:6+et(t)+G,y0:n-8-G/2,y1:n+8+G/2}}function j(t,n,e){return e<n?t:Math.min(Math.max(t,n),e)}function zt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function jt(t){let[n,e]=t>=999500?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${e}`}function Dt(t){return`${jt(t)} del`}function Wn(t,n,e,o){let r=t[0],s=t[t.length-1],c=(n.x-(r.x0+s.x1)/2)*e,a=(n.y-(r.y0+s.y1)/2)*o,i=Math.hypot(c,a);return i===0?{x:0,y:-1}:{x:c/i,y:a/i}}function Yn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function Fn(t,n){let e=(t.x1-t.x0)/2,o=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:e/Math.abs(n.x),n.y===0?1/0:o/Math.abs(n.y))}function qn(t,n){let e=1/0,o=1/0,r=-1/0,s=-1/0;for(let c of t)for(let a of n[c]??[])e=Math.min(e,a.x),r=Math.max(r,a.x),o=Math.min(o,a.y),s=Math.max(s,a.y);return e===1/0?void 0:{minX:e,minY:o,maxX:r,maxY:s}}var Gn=nt();function Dn(t,n){return Gn(t,[n],()=>Object.entries(t).filter(([e,o])=>o.length>0&&n.has(e)).sort(([e],[o])=>n.get(o)-n.get(e)))}var Vn=nt();function zn(t,n,e,o,r,s){let{scaleX:c,scaleY:a}=e;return Vn(t,[n,r,s,c,a,o],()=>{let i=[];for(let d of[...n].sort((l,u)=>u.bp-l.bp)){let l=Gt(t,d,e,d.bypassed,r?.[d.edgeIndex],s),u=l?Pt(l):void 0;if(l&&u){let{minX:h,minY:f,maxX:y,maxY:x}=Nt(l);i.push({deletion:d,curves:l,apex:u,extent:Math.max((y-h)*c,(x-f)*a)})}}return i})}function jn({nodePositions:t,nodeLengths:n,deletions:e,deletionRoutes:o,stranded:r=!1,alleleDeletions:s,axis:c,translateX:a,translateY:i,width:d,height:l,version:u=0}){let{scaleX:h,scaleY:f}=c,y=[],x=[];for(let{deletion:m,curves:M,apex:g,extent:v}of zn(t,e,c,u,o,r))if(v>=Xn){let w=Dt(m.bp),_=U(w),I=z(_,0,0),E=g.x*h+a,A=g.y*f+i;if(E<0||E>d||A<0||A>l)continue;let N=v>=_*2/V,O=Wn(M,g,h,f),L=Yn(I,O)+Bn,S=N?E:j(E+O.x*L,_,d-_),P=N?A:j(A+O.y*L,k,l-k),X=Math.hypot(S-E,P-A),T;if(X>0){let B={x:(S-E)/X,y:(P-A)/X},R=Fn(I,B);T={arcX:E,arcY:A,labelX:S-B.x*R,labelY:P-B.y*R}}y.push({label:{key:`del:${m.edgeIndex}`,text:w,x:S,y:P,kind:"deletion",leader:T},box:z(_,S,P)})}let p=new Set,b=[...s??[]].sort((m,M)=>M.bp-m.bp);for(let m of b){let M=qn(m.nodeIds,t);if(!M)continue;let g=Math.max(M.minX*h+a,0),v=Math.min(M.maxX*h+a,d),w=Math.max(M.minY*f+i,0),_=Math.min(M.maxY*f+i,l);if(v<g||_<w)continue;let I=Math.max(v-g,_-w),E=Dt(m.bp),A=U(E);if(I>=A*2/V){for(let L of m.nodeIds)p.add(L);let N=j((g+v)/2,A,d-A),O=j((w+_)/2,k,l-k);y.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:N,y:O,kind:"deletion"},box:z(A,N,O)})}}for(let[m,M]of Dn(t,n)){if(p.has(m))continue;let{x:g,y:v}=Ht(M),w=v*f+i;if(w+k<=0||w-k>=l)continue;let _=Z(M,h,f);if(_<Hn*2/V)continue;let I=jt(n.get(m)),E=U(I);if(_>=E*2/V){let A=g*h+a;x.push({label:{key:`node:${m}`,text:I,x:A,y:w,kind:"node"},box:z(E,A,w)})}}return{deletions:y,nodes:x}}function Un(t,n){return Math.max(kn,Math.floor(t*n/Cn))}function Vt(t,n,e=1/0){let o=[];for(let{label:r,box:s}of t){if(o.length>=e)break;n(s)&&o.push(r)}return o}function ro({reserved:t,take:n,...e}){n??=Rt(e,t);let{deletions:o,nodes:r}=jn(e);return[...Vt(o,n),...Vt(r,n,Un(e.width,e.height))]}function fo(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return Math.abs(n%360)}function Kn(t,n){return t*360/n}var Jn=.7,Qn=.5,Zn=16;function uo(t){return t>0&&t<=Zn}function te(t,n){return`hsl(${Kn(t,n)}, ${Jn*100}%, ${Qn*100}%)`}function lo(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function ne(t){let n=$(t).name.split("#"),e=n.join("#");if(n.length>=3&&pt(n[0])){let o=n.slice(2).join("#");return[o,o,e]}return[n[0],n.slice(0,2).join("#"),e]}function ee(t,n){let{start:e}=$(t);return n.map(o=>`${o} @${zt(e)}`)}function ho(t,n){let e=new Map;t.forEach((l,u)=>{e.has(l.name)||e.set(l.name,u)});let o=[...e].map(([l,u])=>({name:l,i:u})),r=o.map(l=>ne(l.name)),s=l=>o.map((u,h)=>r[h][l]),c=l=>o.map((u,h)=>ee(u.name,r[h])[l]),a=[s(0),s(1),c(0),s(2),c(1),c(2)],d=a.find(l=>new Set(l).size===o.length)??a.at(-1);return o.map(({name:l,i:u},h)=>({name:l,label:d[h],color:n?.[u]??te(u,t.length)}))}function yo(t){let n=new Map;return new Map([...t].sort((e,o)=>e.label.localeCompare(o.label)).map(e=>{let o=(n.get(e.label)??0)+1;return n.set(e.label,o),[e.name,o>1?`${e.label} (${o})`:e.label]}))}var mo=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"frequency",label:"By frequency",description:"As wide as the share of haplotypes that pass a node, or its AF tag: full width at 100%, half at 50%, and wider where a haplotype passes it more than once."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],oe=.3,st=3,re=.05;function se(t){let n=0,e=0;for(let o of t.nodes)n+=o.depth*o.length,e+=o.length;return e>0?n/e:0}function ce(t){return t.sample===void 0?mt(t.name)??t.name:`${t.sample}#${t.haplotype??0}`}function ae(t){return new Set((t.paths??[]).map(ce)).size}function ie(t,n){return t.frequency??(n>0?t.depth/n:void 0)}function fe(t,n){return n==="depth"?se(t):n==="frequency"?ae(t):0}function Ut(t){return Math.min(st,Math.max(re,t))}function ue(t,n){let e=ie(t,n);return e===void 0?1:Ut(e)}function Mo(t){return[1,.5,.1].map(n=>({label:`${n*100}%`,widthPx:t*Ut(n)}))}function le(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(st,Math.max(oe,Math.sqrt(t.depth/n)))}function de(t,n,e,o){return n*(e==="depth"?le(t,o):e==="frequency"?ue(t,o):1)}function he(t,n){return t*(n==="uniform"?1:st)}var ye=4;function xe(t,n){return Math.max(t/n,ye)}function bo(t,n,e,o,r=0){let s=t?fe(t,o):0,c=a=>r>0?xe(a,r)*r/2:a/2;return{maxHalfWidthPx:c(he(e,o)),halfWidthPx:a=>{let i=n?.get(a);return c(i?de(i,e,o,s):e)}}}var go=[{value:"uniform",label:"Uniform",description:"Every link the same thickness."},{value:"walks",label:"By walks",description:"Thicker the more walks take a link, on the square root of its count against the busiest link in the cut. A graph without walks draws uniform."}],Kt=.5,pe=4;function wo(t){let n=0;for(let e of t.edges)n=Math.max(n,e.pathIds?.length??0);return n}function Ao(t,n,e){return e==="uniform"||n===0?1:Kt+(pe-Kt)*Math.sqrt(t/n)}export{gt as a,be as b,Nt as c,ve as d,ge as e,we as f,Ae as g,F as h,q as i,Xt as j,_e as k,Z as l,nt as m,Bt as n,Mn as o,D as p,et as q,Rt as r,Le as s,Xe as t,Ce as u,ke as v,He as w,We as x,je as y,Gt as z,Ue as A,Ke as B,oo as C,zt as D,jt as E,ro as F,fo as G,Kn as H,Jn as I,Qn as J,Zn as K,uo as L,te as M,lo as N,ho as O,yo as P,mo as Q,se as R,fe as S,Mo as T,de as U,xe as V,bo as W,go as X,wo as Y,Ao as Z};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as dt,c as ht,d as yt,g as C,j as K,l as xt,q as Mt,r as $,w as bt,x as vt}from"./chunk-MNFL7BAC.js";import{b as pt,c as mt}from"./chunk-OMF5XFKR.js";var gt=20;function be(t){let n=e=>Math.round(e*100)/100;return t.map((e,o)=>`${o?"L":"M"}${n(e.x)},${n(e.y)}`).join("")}function wt(t,n,e,o,r){let s=Math.hypot(o-n,e-t);if(s===0)return[e,o];let c=(e-t)/s,a=(o-n)/s;return[e+r*c,o+r*a]}function Y(t,n){let e=1-n,o=e*e*e,r=3*e*e*n,s=3*e*n*n,c=n*n*n;return{x:o*t.x0+r*t.cx0+s*t.cx1+c*t.x1,y:o*t.y0+r*t.cy0+s*t.cy1+c*t.y1}}function Pt(t){let n=t[Math.floor(t.length/2)];return n?Y(n,.5):void 0}function Nt(t){let n=1/0,e=1/0,o=-1/0,r=-1/0;for(let s of t)n=Math.min(n,s.x0,s.cx0,s.cx1,s.x1),o=Math.max(o,s.x0,s.cx0,s.cx1,s.x1),e=Math.min(e,s.y0,s.cy0,s.cy1,s.y1),r=Math.max(r,s.y0,s.cy0,s.cy1,s.y1);return{minX:n,minY:e,maxX:o,maxY:r}}function tn(t,n,e){let o=Y(t,n),r=Y(t,e),s=(e-n)/3,c=At(t,n),a=At(t,e);return{x0:o.x,y0:o.y,cx0:o.x+c.x*s,cy0:o.y+c.y*s,cx1:r.x-a.x*s,cy1:r.y-a.y*s,x1:r.x,y1:r.y}}function At(t,n){let e=1-n,o=3*e*e,r=6*e*n,s=3*n*n;return{x:o*(t.cx0-t.x0)+r*(t.cx1-t.cx0)+s*(t.x1-t.cx1),y:o*(t.cy0-t.y0)+r*(t.cy1-t.cy0)+s*(t.y1-t.cy1)}}var H=32;function nn(t,n,e,o){let r=[],s=0;return t.forEach((c,a)=>{let i=n[a],d=i/H,l=Y(c,0);for(let u=1;u<=H;u++){let h=Y(c,u/H);if(Math.max(l.x,h.x)+d>=e.minX&&Math.min(l.x,h.x)-d<=e.maxX&&Math.max(l.y,h.y)+d/o>=e.minY&&Math.min(l.y,h.y)-d/o<=e.maxY){let f=s+i*(u-1)/H,y=s+i*u/H,x=r.at(-1);x&&x[1]>=f?x[1]=y:r.push([f,y])}l=h}s+=i}),r}function ve(t,n,e=1,o){let r=t.map(u=>Math.hypot(u.cx0-u.x0,(u.cy0-u.y0)*e)+Math.hypot(u.cx1-u.cx0,(u.cy1-u.cy0)*e)+Math.hypot(u.x1-u.cx1,(u.y1-u.cy1)*e)),s=r.reduce((u,h)=>u+h,0),c=Math.round(s/n),a=Math.max(3,c%2?c:c+1),i=o?nn(t,r,o,e):void 0,d=0,l=[];for(let u=0;u<a;u+=2){let h=u/a*s,f=(u+1)/a*s;if(i){for(;d<i.length&&i[d][1]<h;)d++;if(d===i.length)break;if(i[d][0]>f)continue}let y=[],x=[],p=0;t.forEach((b,m)=>{let M=r[m],g=p+M;if(M>0&&g>h&&p<f){let v=Math.max(0,(h-p)/M),w=Math.min(1,(f-p)/M);y.push(tn(b,v,w)),x.push((m+v)/t.length,(m+w)/t.length)}p=g}),y.length&&l.push({curves:y,startAlong:x[0],endAlong:x.at(-1)})}return l}function ge(t,n,e,o,r){let s=t.length,c=new Array(s);for(let a=0;a<s;a++){let i=t[a],d=a/s,l=(a+1)/s,u=n+(o-n)*d,h=e+(r-e)*d,f=n+(o-n)*l,y=e+(r-e)*l;c[a]={x0:i.x0+u,y0:i.y0+h,cx0:i.cx0+u,cy0:i.cy0+h,cx1:i.cx1+f,cy1:i.cy1+y,x1:i.x1+f,y1:i.y1+y}}return c}function we(t,n,e){let o=new Array(t.length);for(let r=0;r<t.length;r++){let s=t[r];o[r]={x0:s.x0+n,y0:s.y0+e,cx0:s.cx0+n,cy0:s.cy0+e,cx1:s.cx1+n,cy1:s.cy1+e,x1:s.x1+n,y1:s.y1+e}}return o}function W(t,n){let e=t.length-1;return n==="end"?{at:t[e],inward:t[e-1]}:{at:t[0],inward:t[1]}}var en=.5,on=80;function F(t){return t.endsWith("-")?"-":"+"}function q(t){let n=(e,o)=>(o??F(e))===F(e);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function _t(t){let n=1/0,e=-1/0;for(let o of t)n=Math.min(n,o.x),e=Math.max(e,o.x);return{min:n,max:e}}function Et(t,n){return Math.max(0,n.min-t,t-n.max)}function It(t,n,e){let o=Et(t[0].x,n),r=Et(t[t.length-1].x,n);return o===r?e:o<r?"start":"end"}function rn(t,n){return{from:It(t,_t(n),"end"),to:It(n,_t(t),"start")}}var Lt=new WeakMap;function sn(t,n){let e=Lt.get(t);e||(e=new WeakMap,Lt.set(t,e));let o=e.get(n);return o||(o=rn(t,n),e.set(n,o)),o}var cn=.75,an=1.15,fn=.35,un=3*gt;function ln(t,n,e,o,r,s){let c=Math.hypot(e-t,o-n),a=c===0?1:(e-t)/c,i=c===0?0:(o-n)/c,d=0,l=1/0,u=-1/0;for(let x of r){let p=x.x-t,b=x.y-n,m=p*-i+b*a;Math.abs(m)>Math.abs(d)&&(d=m);let M=p*a+b*i;l=Math.min(l,M),u=Math.max(u,M)}let h=r.length?u-l:0,f=Math.max(Math.abs(d)*an/cn,h*fn),y=s===void 0?f:Math.min(f,s);return d<0?-y:y}function Xt({scaleX:t,scaleY:n}){return n/t}var dn=3;function J(t,n,e){let o=n.x-t.x,r=(n.y-t.y)*e,s=Math.hypot(o,r);return s===0?void 0:{x:o/s,y:r/s}}function Ae(t,n,e,o){let r=Xt(o),s=dn/Math.max(o.scaleX,1e-6),c=J(t[t.length-1],n[0],r)??J(t[0],t.at(-1),r)??J(n[0],n.at(-1),r)??{x:1,y:0},a=[];for(let i=0;i<e;i++){let d=(i-(e-1)/2)*s;a.push({x:-c.y*d,y:c.x*d/r})}return a}function Q(t,n){return t.map(e=>({x:e.x,y:e.y*n}))}function hn(t,n){for(let e of t)e.y0/=n,e.cy0/=n,e.cy1/=n,e.y1/=n;return t}function Z(t,n,e){let o=0;for(let r=1;r<t.length;r++){let s=t[r-1],c=t[r];o+=Math.hypot((c.x-s.x)*n,(c.y-s.y)*e)}return o}var yn=12,xn=40;function Ot(t,n){let e=Z(t,n,n);return Math.min(xn,Math.max(yn,e/2))/Math.max(n,Number.EPSILON)}function pn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Ct(t,n=!1){let e=pn(t);if(!n)return e;let o=q(t);return e===!1?o:o.from===o.to?o.from:!0}function mn(t,n){let{at:e,inward:o}=t,r=o?e.x-o.x:1,s=o?e.y-o.y:0,c=Math.hypot(r,s)||1,a=r/c,i=s/c,d=e.x,l=e.y,u=d+a*n/3,h=l+i*n/3,f=d+a*n,y=l+i*n,x=-i*n/2,p=a*n/2;return[{x0:d,y0:l,cx0:u,cy0:h,cx1:f+x,cy1:y+p,x1:f,y1:y},{x0:f,y0:y,cx0:f-x,cy0:y-p,cx1:u,cy1:h,x1:d,y1:l}]}function tt(t,n,e,o,r=[],s){let c=o.scaleX,a=Xt(o),i=s??(o.pixelRows?un:void 0);if(e===!1&&(e=sn(t,n)),a!==1)return hn(tt(Q(t,a),Q(n,a),e,{scaleX:c,scaleY:c},Q(r,a),i===void 0?void 0:i*a),a);if(typeof e=="string")return mn(W(t,e),Ot(t,c));let d=e===!0,l=e===!0?{from:"end",to:"start"}:e,u=W(t,l.from),h=W(n,l.to),f=u.at,y=h.at,x=f.x,p=f.y,b=y.x,m=y.y;if(d){let M=1,g=0;if(u.inward){let S=f.x-u.inward.x,P=f.y-u.inward.y,X=Math.hypot(S,P);X>0&&(M=S/X,g=P/X)}let v=Ot(t,c),w=-g,_=M,I=(f.x+y.x)/2+w*v,E=(f.y+y.y)/2+_*v,A=x+M*v,N=p+g*v,O=b-M*v,L=m-g*v;return[{x0:x,y0:p,cx0:A,cy0:N,cx1:A+w*v,cy1:N+_*v,x1:I,y1:E},{x0:I,y0:E,cx0:O+w*v,cy0:L+_*v,cx1:O,cy1:L,x1:b,y1:m}]}else{let M=u.inward??{x:f.x-(y.x-f.x),y:f.y-(y.y-f.y)},g=h.inward??{x:y.x-(f.x-y.x),y:y.y-(f.y-y.y)},v=Math.hypot(b-x,m-p),w=(at,it,Jt,Qt)=>{let ft=it.x-at.x,ut=it.y-at.y,lt=Math.hypot(ft,ut),Zt=lt===0?0:(Jt*ft+Qt*ut)/lt;return Math.max(0,Math.min(v*en,on,Zt*.5))},_=y.x-f.x,I=y.y-f.y,[E,A]=wt(M.x,M.y,f.x,f.y,w(M,f,_,I)),[N,O]=wt(g.x,g.y,y.x,y.y,w(g,y,-_,-I)),L=r.length?ln(x,p,b,m,r,i):0,S=v===0?1:v,P=(b-x)/S,X=(m-p)/S,T=-X*L,B=P*L,R=P*Math.abs(L),ct=X*Math.abs(L);return[{x0:x,y0:p,cx0:E+T-R,cy0:A+B-ct,cx1:N+T+R,cy1:O+B+ct,x1:b,y1:m}]}}function St(t,n){let e=t[0],o=t.at(-1);return Math.hypot(e.x-n.x,e.y-n.y)<Math.hypot(o.x-n.x,o.y-n.y)?"start":"end"}function kt(t,n,e,o){let r=W(t,o?.from??St(t,e[0])),s=W(n,o?.to??St(n,e.at(-1))),c=[r.at,...e,s.at],a=d=>{let l=c[d],u=f=>Math.hypot(f.x-l.x,f.y-l.y),h=(f,y)=>{let x=f?u(f):0,p=u(y);return x===0?{x:y.x-l.x,y:y.y-l.y}:{x:(l.x-f.x)/x*p,y:(l.y-f.y)/x*p}};if(d===0)return h(r.inward,c[1]);if(d===c.length-1){let f=h(s.inward,c[d-1]);return{x:-f.x,y:-f.y}}return{x:(c[d+1].x-c[d-1].x)/2,y:(c[d+1].y-c[d-1].y)/2}},i=[];for(let d=0;d<c.length-1;d++){let l=c[d],u=c[d+1],h=a(d),f=a(d+1);i.push({x0:l.x,y0:l.y,cx0:l.x+h.x/3,cy0:l.y+h.y/3,cx1:u.x-f.x/3,cy1:u.y-f.y/3,x1:u.x,y1:u.y})}return i}function nt(){let t=new WeakMap;return(n,e,o)=>{let r=t.get(n);if(r?.deps.length===e.length&&r.deps.every((c,a)=>Object.is(c,e[a])))return r.value;let s=o();return t.set(n,{deps:e,value:s}),s}}var Bt=11,Mn=6.2,D=4;function et(t){return t.length*Mn+D*2}function bn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function Tt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function vn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function Rt(t,n=[]){let e=[...n];return o=>Tt(o,t)||e.some(r=>bn(r,o))?!1:(e.push(o),!0)}function Ie(t,n,e){let o=[],r=Bt+D*2,s=(c,a)=>{let i=et(a),d=c.y>n.height/2?-1:1;for(let l=0;l<=(c.stack??0);l++){let u=c.y+d*l*r,h={x0:c.x-i/2,x1:c.x+i/2,y0:u-Bt-D,y1:u+D};if(Tt(h,n))return;if(vn(h,n)&&(c.fits?.(h)??!0)&&e(h))return{...c,text:a,y:u,w:i}}};for(let c of t){let a=s(c,c.text)??(c.fallback===void 0?void 0:s(c,c.fallback));a&&o.push(a)}return o}function $t(t){return t==="+"?"-":"+"}function Ne(t,n=new Set){let e=t.edges.map(q),o=new Map,r=(f,y,x)=>{dt(o,`${f}|${y}`,x)};t.edges.forEach((f,y)=>{r(f.from,e[y].from,y),r(f.to,e[y].to,y)});let s=f=>{let y=o.get(`${f}|end`);if(y?.length!==1)return;let x=y[0],p=t.edges[x];return p.from===f&&p.to!==f&&!n.has(f)&&!n.has(p.to)&&e[x].from==="end"&&e[x].to==="start"&&o.get(`${p.to}|start`)?.length===1?x:void 0},c=new Set,a=new Map,i=new Map;for(let f of t.nodes){let y=o.get(`${f.id}|start`),x=y?.length===1?t.edges[y[0]].from:void 0;if(a.has(f.id)||x!==void 0&&s(x)===y[0])continue;let p=[f.id];for(;;){let b=s(p.at(-1)),m=b===void 0?void 0:t.edges[b].to;if(m===void 0||a.has(m))break;c.add(b),p.push(m)}for(let b of p)a.set(b,f.id);p.length>1&&i.set(f.id,p)}for(let f of t.nodes)a.has(f.id)||a.set(f.id,f.id);let d=new Map(t.nodes.map(f=>[f.id,f])),l=[];for(let f of t.nodes){if(a.get(f.id)!==f.id)continue;let y=i.get(f.id);if(!y){l.push(f);continue}let x=y.map(m=>d.get(m)),p=x.filter(C),b=p.length?p.reduce((m,M)=>m.stable.start<=M.stable.start?m:M):x[0];l.push({id:f.id,name:f.name,length:x.reduce((m,M)=>m+M.length,0),depth:f.depth,stable:b.stable})}let u=new Set,h=[];return t.edges.forEach((f,y)=>{let x=a.get(f.from),p=a.get(f.to),b=e[y],m=`${x}|${b.from}>${p}|${b.to}`;c.has(y)||u.has(m)||(u.add(m),h.push({from:x,to:p,...b.from==="start"?{fromStrand:$t(F(x))}:{},...b.to==="end"?{toStrand:$t(F(p))}:{}}))}),{graph:{...t,nodes:l,edges:h,paths:void 0,pathVisits:void 0},runs:i}}function Xe(t,n,e){let o={...t};for(let[r,s]of n){let c=t[r];if(!c?.length)continue;delete o[r];let a=rt(c),i=a.at(-1),d=s.map(h=>Math.max(e(h),0)),l=d.reduce((h,f)=>h+f,0),u=0;s.forEach((h,f)=>{let y=l?d[f]/l*i:i/s.length,x=f===s.length-1?i:u+y;o[h]=Yt(c,a,u,x),u=x})}return o}function Ce(t,n,e){if(t.length===0)return[];let o=rt(t),r=o.at(-1);return Yt(t,o,n*r,e*r)}function Ht(t){let n=rt(t);return ot(t,n,n.at(-1)/2)}function rt(t){let n=[0];for(let e=1;e<t.length;e++)n.push(n[e-1]+Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y));return n}function Wt(t,n){let e=0,o=t.length;for(;e<o;){let r=e+o>>1;t[r]<n?e=r+1:o=r}return e}function ot(t,n,e){if(e<=0)return{...t[0]};let o=Wt(n,e);if(o>=n.length)return{...t.at(-1)};let r=n[o]-n[o-1],s=r>0?(e-n[o-1])/r:0,c=t[o-1],a=t[o];return{x:c.x+(a.x-c.x)*s,y:c.y+(a.y-c.y)*s}}function Yt(t,n,e,o){let r=[ot(t,n,e)];for(let s=Wt(n,e);s<t.length&&n[s]<o;s++)n[s]>e&&r.push({...t[s]});return r.push(ot(t,n,o)),r}function $e(t,n){let e=new Set(t.nodes.filter(i=>C(i)&&K(i,n)).map(i=>i.id)),o=t.paths??[];if(e.size===0||o.length===0)return t;let r=o.map(i=>{let d=-1,l=-1;return i.nodeIds.forEach((u,h)=>{e.has(u)&&(d<0&&(d=h),l=h)}),d<0?void 0:{first:d,last:l}});if(r.every((i,d)=>i?.first===0&&i.last===o[d].nodeIds.length-1))return t;let s=new Set,c=[],a=new Map;return o.forEach((i,d)=>{let l=r[d];if(l){let u=i.nodeIds.slice(l.first,l.last+1);for(let h of u)s.add(h);c.push({...i,nodeIds:u}),a.set(i.name,{first:l.first,nodeIds:u})}}),{...t,nodes:t.nodes.filter(i=>s.has(i.id)),edges:t.edges.filter(i=>s.has(i.from)&&s.has(i.to)),paths:c,pathVisits:t.pathVisits&&gn(t.pathVisits,o,r,new Map(t.nodes.map(i=>[i.id,i.name]))),anchorPaths:bt(t,a)}}function gn(t,n,e,o){let r=t.replay(),s=new Mt;return n.forEach((c,a)=>{let i=t.pathIndex($(c.name).name),d=e[a];c.nodeIds.forEach((l,u)=>{let h=o.get(l)??l,f=r(t.slot(h),i);f>=0&&d&&u>=d.first&&u<=d.last&&s.add(h,t.paths[i],t.samples[i],t.start[f],t.reversed[f]===1)})}),s.build()}function He(t,n,e){let o=t.nodes.map(r=>{if(!C(r))return r;let s=r.stable.start,c=s+r.length,[a,i]=K(r,n)?[Math.max(s,n.start),Math.min(c,n.end)]:c<=n.start?[Math.max(s,c-e),c]:[s,Math.min(c,s+e)];return a===s&&i===c?r:{...r,length:i-a,stable:{...r.stable,start:a},unclipped:{start:s,length:r.length}}});return o.some((r,s)=>r!==t.nodes[s])?{...t,nodes:o}:t}function Ft(t){return t.nodes.some(n=>n.unclipped)?{...t,nodes:t.nodes.map(({unclipped:n,...e})=>n&&e.stable?{...e,length:n.length,stable:{...e.stable,start:n.start}}:e)}:t}var wn=1,ze=t=>`skips ${t??"the reference"} sequence (a deletion)`;function An(t,n){return n.flatMap(e=>t[e]??[])}function Gt(t,n,e,o,r,s){let c=t[n.from],a=t[n.to];if(!(!c?.length||!a?.length))return r?kt(c,a,r,s?q(n):void 0):tt(c,a,Ct(n,s),e,o?An(t,o):[])}function _n(t){let n=ht(t.nodes.filter(C),e=>e.stable.refName);for(let e of n.values())e.sort((o,r)=>o.stable.start-r.stable.start);return n}function En(t,n,e){let o=[];if(t)for(let r=xt(t,n);r<t.length;r++){let s=t[r];if(s.stable.start>=e)break;s.stable.start+s.length<=e&&o.push(s.id)}return o}function In(t,n,e,o){let{fromStrand:r,toStrand:s}=t;if(r===void 0||s===void 0)return!0;let c=r===(n.stable.strand??"+"),a=s===(e.stable.strand??"+");return o?c&&a:!c&&!a}function Ln(t,n,e,o){let r;for(let s of o(n))for(let c of o(e)){let a=s<=c,i=a?{start:s+n.length,end:c}:{start:c+e.length,end:s};In(t,n,e,a)&&(!r||Math.abs(i.end-i.start)<Math.abs(r.end-r.start))&&(r=i)}return r}var On=.01;function Sn(t,n){let e=new Map;for(let[o,r]of t){let s=r.flatMap(c=>{let a=n(c);return a.slice(1).map((i,d)=>({at:a[d],copy:i-a[d]}))});s.length&&e.set(o,s.sort((c,a)=>c.at-a.at))}return e}function Pn(t,n,e){if(!t)return!1;let o=yt(t.length,s=>t[s].at<n),r=[t[o-1],t[o]].filter(s=>s!==void 0).sort((s,c)=>Math.abs(s.at-n)-Math.abs(c.at-n))[0];return r!==void 0&&Math.abs(r.at-n)<=r.copy&&Math.abs(e-r.copy)<=r.copy*On}function je(t){let n=Ft(t),e=new Map(n.nodes.map(a=>[a.id,a])),o=_n(n),r=vt(n),s=Sn(o,r),c=[];for(let a=0;a<n.edges.length;a++){let i=n.edges[a],d=e.get(i.from),l=e.get(i.to);if(!i.foldBridge&&d!==void 0&&l!==void 0&&C(d)&&C(l)&&d.stable.refName===l.stable.refName){let u=Ln(i,d,l,r),h=d.stable.refName,f=u?u.end-u.start:0;if(u&&f>=wn&&!Pn(s.get(h),u.start,f)){let{start:y,end:x}=u;c.push({edgeIndex:a,from:i.from,to:i.to,...i.fromStrand?{fromStrand:i.fromStrand}:{},...i.toStrand?{toStrand:i.toStrand}:{},refName:h,start:y,end:x,bp:f,bypassed:En(o.get(h),y,x)})}}}return c}function Nn(t,n){let e=new Map,o=c=>{let a=c;for(;e.has(a);)a=e.get(a);return a!==c&&e.set(c,a),a},r=(c,a)=>{let[i,d]=[o(c),o(a)];return i!==d&&e.set(i,d),i!==d},s=new Set(n.map(c=>c.edgeIndex));return t.edges.forEach((c,a)=>{s.has(a)||r(c.from,c.to)}),new Set(n.filter(c=>!r(c.from,c.to)).map(c=>c.edgeIndex))}function Ue(t,n){return n?.walks.length?t.filter(e=>!n.edgeIndexes.has(e.edgeIndex)):t}var qt=new WeakMap;function Ke(t,n,e=!0){let o=qt.get(n);o||(o=new Map,qt.set(n,o));let r=o.get(e);if(!r){let s=e?new Set:Nn(t,n);r={shown:n.filter(c=>!s.has(c.edgeIndex)),bypassed:new Map(n.map(c=>[c.edgeIndex,c.bypassed])),hidden:s},o.set(e,r)}return r}var Xn=26,Cn=4e4,kn=8,Bn=8,Tn=5.7,Rn=6,$n=13,G=3,V=2;function U(t){return(t.length*Tn+Rn+G)/2}var k=($n+G)/2,Hn=U("1 bp");function z(t,n,e){return{x0:n-t,x1:n+t,y0:e-k,y1:e+k}}function oo(t,n){return{x0:6,x1:6+et(t)+G,y0:n-8-G/2,y1:n+8+G/2}}function j(t,n,e){return e<n?t:Math.min(Math.max(t,n),e)}function zt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function jt(t){let[n,e]=t>=999500?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${e}`}function Dt(t){return`${jt(t)} del`}function Wn(t,n,e,o){let r=t[0],s=t[t.length-1],c=(n.x-(r.x0+s.x1)/2)*e,a=(n.y-(r.y0+s.y1)/2)*o,i=Math.hypot(c,a);return i===0?{x:0,y:-1}:{x:c/i,y:a/i}}function Yn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function Fn(t,n){let e=(t.x1-t.x0)/2,o=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:e/Math.abs(n.x),n.y===0?1/0:o/Math.abs(n.y))}function qn(t,n){let e=1/0,o=1/0,r=-1/0,s=-1/0;for(let c of t)for(let a of n[c]??[])e=Math.min(e,a.x),r=Math.max(r,a.x),o=Math.min(o,a.y),s=Math.max(s,a.y);return e===1/0?void 0:{minX:e,minY:o,maxX:r,maxY:s}}var Gn=nt();function Dn(t,n){return Gn(t,[n],()=>Object.entries(t).filter(([e,o])=>o.length>0&&n.has(e)).sort(([e],[o])=>n.get(o)-n.get(e)))}var Vn=nt();function zn(t,n,e,o,r,s){let{scaleX:c,scaleY:a}=e;return Vn(t,[n,r,s,c,a,o],()=>{let i=[];for(let d of[...n].sort((l,u)=>u.bp-l.bp)){let l=Gt(t,d,e,d.bypassed,r?.[d.edgeIndex],s),u=l?Pt(l):void 0;if(l&&u){let{minX:h,minY:f,maxX:y,maxY:x}=Nt(l);i.push({deletion:d,curves:l,apex:u,extent:Math.max((y-h)*c,(x-f)*a)})}}return i})}function jn({nodePositions:t,nodeLengths:n,deletions:e,deletionRoutes:o,stranded:r=!1,alleleDeletions:s,axis:c,translateX:a,translateY:i,width:d,height:l,version:u=0}){let{scaleX:h,scaleY:f}=c,y=[],x=[];for(let{deletion:m,curves:M,apex:g,extent:v}of zn(t,e,c,u,o,r))if(v>=Xn){let w=Dt(m.bp),_=U(w),I=z(_,0,0),E=g.x*h+a,A=g.y*f+i;if(E<0||E>d||A<0||A>l)continue;let N=v>=_*2/V,O=Wn(M,g,h,f),L=Yn(I,O)+Bn,S=N?E:j(E+O.x*L,_,d-_),P=N?A:j(A+O.y*L,k,l-k),X=Math.hypot(S-E,P-A),T;if(X>0){let B={x:(S-E)/X,y:(P-A)/X},R=Fn(I,B);T={arcX:E,arcY:A,labelX:S-B.x*R,labelY:P-B.y*R}}y.push({label:{key:`del:${m.edgeIndex}`,text:w,x:S,y:P,kind:"deletion",leader:T},box:z(_,S,P)})}let p=new Set,b=[...s??[]].sort((m,M)=>M.bp-m.bp);for(let m of b){let M=qn(m.nodeIds,t);if(!M)continue;let g=Math.max(M.minX*h+a,0),v=Math.min(M.maxX*h+a,d),w=Math.max(M.minY*f+i,0),_=Math.min(M.maxY*f+i,l);if(v<g||_<w)continue;let I=Math.max(v-g,_-w),E=Dt(m.bp),A=U(E);if(I>=A*2/V){for(let L of m.nodeIds)p.add(L);let N=j((g+v)/2,A,d-A),O=j((w+_)/2,k,l-k);y.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:N,y:O,kind:"deletion"},box:z(A,N,O)})}}for(let[m,M]of Dn(t,n)){if(p.has(m))continue;let{x:g,y:v}=Ht(M),w=v*f+i;if(w+k<=0||w-k>=l)continue;let _=Z(M,h,f);if(_<Hn*2/V)continue;let I=jt(n.get(m)),E=U(I);if(_>=E*2/V){let A=g*h+a;x.push({label:{key:`node:${m}`,text:I,x:A,y:w,kind:"node"},box:z(E,A,w)})}}return{deletions:y,nodes:x}}function Un(t,n){return Math.max(kn,Math.floor(t*n/Cn))}function Vt(t,n,e=1/0){let o=[];for(let{label:r,box:s}of t){if(o.length>=e)break;n(s)&&o.push(r)}return o}function ro({reserved:t,take:n,...e}){n??=Rt(e,t);let{deletions:o,nodes:r}=jn(e);return[...Vt(o,n),...Vt(r,n,Un(e.width,e.height))]}function fo(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return Math.abs(n%360)}function Kn(t,n){return t*360/n}var Jn=.7,Qn=.5,Zn=16;function uo(t){return t>0&&t<=Zn}function te(t,n){return`hsl(${Kn(t,n)}, ${Jn*100}%, ${Qn*100}%)`}function lo(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function ne(t){let n=$(t).name.split("#"),e=n.join("#");if(n.length>=3&&pt(n[0])){let o=n.slice(2).join("#");return[o,o,e]}return[n[0],n.slice(0,2).join("#"),e]}function ee(t,n){let{start:e}=$(t);return n.map(o=>`${o} @${zt(e)}`)}function ho(t,n){let e=new Map;t.forEach((l,u)=>{e.has(l.name)||e.set(l.name,u)});let o=[...e].map(([l,u])=>({name:l,i:u})),r=o.map(l=>ne(l.name)),s=l=>o.map((u,h)=>r[h][l]),c=l=>o.map((u,h)=>ee(u.name,r[h])[l]),a=[s(0),s(1),c(0),s(2),c(1),c(2)],d=a.find(l=>new Set(l).size===o.length)??a.at(-1);return o.map(({name:l,i:u},h)=>({name:l,label:d[h],color:n?.[u]??te(u,t.length)}))}function yo(t){let n=new Map;return new Map([...t].sort((e,o)=>e.label.localeCompare(o.label)).map(e=>{let o=(n.get(e.label)??0)+1;return n.set(e.label,o),[e.name,o>1?`${e.label} (${o})`:e.label]}))}var mo=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"frequency",label:"By frequency",description:"As wide as the share of haplotypes that pass a node, or its AF tag: full width at 100%, half at 50%, and wider where a haplotype passes it more than once."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],oe=.3,st=3,re=.05;function se(t){let n=0,e=0;for(let o of t.nodes)n+=o.depth*o.length,e+=o.length;return e>0?n/e:0}function ce(t){return t.sample===void 0?mt(t.name)??t.name:`${t.sample}#${t.haplotype??0}`}function ae(t){return new Set((t.paths??[]).map(ce)).size}function ie(t,n){return t.frequency??(n>0?t.depth/n:void 0)}function fe(t,n){return n==="depth"?se(t):n==="frequency"?ae(t):0}function Ut(t){return Math.min(st,Math.max(re,t))}function ue(t,n){let e=ie(t,n);return e===void 0?1:Ut(e)}function Mo(t){return[1,.5,.1].map(n=>({label:`${n*100}%`,widthPx:t*Ut(n)}))}function le(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(st,Math.max(oe,Math.sqrt(t.depth/n)))}function de(t,n,e,o){return n*(e==="depth"?le(t,o):e==="frequency"?ue(t,o):1)}function he(t,n){return t*(n==="uniform"?1:st)}var ye=4;function xe(t,n){return Math.max(t/n,ye)}function bo(t,n,e,o,r=0){let s=t?fe(t,o):0,c=a=>r>0?xe(a,r)*r/2:a/2;return{maxHalfWidthPx:c(he(e,o)),halfWidthPx:a=>{let i=n?.get(a);return c(i?de(i,e,o,s):e)}}}var go=[{value:"uniform",label:"Uniform",description:"Every link the same thickness."},{value:"walks",label:"By walks",description:"Thicker the more walks take a link, on the square root of its count against the busiest link in the cut. A graph without walks draws uniform."}],Kt=.5,pe=4;function wo(t){let n=0;for(let e of t.edges)n=Math.max(n,e.pathIds?.length??0);return n}function Ao(t,n,e){return e==="uniform"||n===0?1:Kt+(pe-Kt)*Math.sqrt(t/n)}export{gt as a,be as b,Nt as c,ve as d,ge as e,we as f,F as g,q as h,Xt as i,Ae as j,Z as k,nt as l,Bt as m,Mn as n,D as o,et as p,Rt as q,Ie as r,Ne as s,Xe as t,Ce as u,$e as v,He as w,ze as x,Gt as y,je as z,Ue as A,Ke as B,oo as C,zt as D,jt as E,ro as F,fo as G,Kn as H,Jn as I,Qn as J,Zn as K,uo as L,te as M,lo as N,ho as O,yo as P,mo as Q,se as R,fe as S,Mo as T,de as U,xe as V,bo as W,go as X,wo as Y,Ao as Z};
|
|
2
|
+
//# sourceMappingURL=chunk-ZWRAQSXC.js.map
|