jbrowse-plugin-graphgenomeviewer 7.4.4 → 7.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{GbzBaseSyntenyAdapter-A5MNPCKX.js → GbzBaseSyntenyAdapter-3PVPTKNW.js} +2 -2
- package/dist/chunks/{GbzBaseSyntenyAdapter-A5MNPCKX.js.map → GbzBaseSyntenyAdapter-3PVPTKNW.js.map} +1 -1
- package/dist/chunks/{GraphGenomeView-SEAPDRXS.js → GraphGenomeView-GQW4YC23.js} +2 -2
- package/dist/chunks/GraphTrackSettingsDialog-ARWCWJW4.js +4 -0
- package/dist/chunks/GraphTrackSettingsDialog-ARWCWJW4.js.map +7 -0
- package/dist/chunks/{HighlightColorDialog-QAYWLO5I.js → HighlightColorDialog-PD3KMF2U.js} +2 -2
- package/dist/chunks/LinearGraphDisplay-QNS4EAL3.js +2 -0
- package/dist/chunks/{LinearGraphDisplay-ZC4BQ27J.js.map → LinearGraphDisplay-QNS4EAL3.js.map} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-3QM4XV47.js → MinigraphBubbleAdapter-L6JSQIOL.js} +2 -2
- package/dist/chunks/RgfaTabixAdapter-5HCAJ7QI.js +2 -0
- package/dist/chunks/RgfaTabixAdapter-5HCAJ7QI.js.map +7 -0
- package/dist/chunks/{WalkFormsAdapter-FT2SW4H6.js → WalkFormsAdapter-NX36GP35.js} +2 -2
- package/dist/chunks/WalkTabixSyntenyAdapter-JFNFX3JP.js +2 -0
- package/dist/chunks/{WalkTabixSyntenyAdapter-3WRVNDLB.js.map → WalkTabixSyntenyAdapter-JFNFX3JP.js.map} +2 -2
- package/dist/chunks/{chunk-KIYRMZWP.js → chunk-2CPD5NX2.js} +2 -2
- package/dist/chunks/{chunk-KIYRMZWP.js.map → chunk-2CPD5NX2.js.map} +1 -1
- package/dist/chunks/chunk-3AC33AXB.js +2 -0
- package/dist/chunks/{chunk-HF4H6LQI.js → chunk-4PHM6JNU.js} +2 -2
- package/dist/chunks/chunk-5LFPNQWH.js +2 -0
- package/dist/chunks/{chunk-6VNU7SD4.js.map → chunk-5LFPNQWH.js.map} +4 -4
- package/dist/chunks/{chunk-6WUWQX2P.js → chunk-CNEUOM7X.js} +2 -2
- package/dist/chunks/{chunk-6WUWQX2P.js.map → chunk-CNEUOM7X.js.map} +1 -1
- package/dist/chunks/{chunk-P3FBI5ML.js → chunk-DOC7QIE2.js} +1 -1
- package/dist/chunks/{chunk-P3FBI5ML.js.map → chunk-DOC7QIE2.js.map} +1 -1
- package/dist/chunks/{chunk-G53BI7VK.js → chunk-G4OPM6G7.js} +2 -2
- package/dist/chunks/{chunk-G53BI7VK.js.map → chunk-G4OPM6G7.js.map} +1 -1
- package/dist/chunks/chunk-GRLNDNX4.js +2 -0
- package/dist/chunks/{chunk-S333HOG5.js.map → chunk-GRLNDNX4.js.map} +4 -4
- package/dist/chunks/{chunk-7RJMG6I2.js → chunk-JYYF3U2H.js} +1 -1
- package/dist/chunks/{chunk-7RJMG6I2.js.map → chunk-JYYF3U2H.js.map} +1 -1
- package/dist/chunks/chunk-KDXVLEHS.js +3 -0
- package/dist/chunks/chunk-KDXVLEHS.js.map +7 -0
- package/dist/chunks/chunk-LGV6BTOY.js +2 -0
- package/dist/chunks/{chunk-HCDKP3IP.js.map → chunk-LGV6BTOY.js.map} +4 -4
- package/dist/chunks/{chunk-2KVE7YAS.js → chunk-LJ7O3736.js} +1 -1
- package/dist/chunks/{chunk-2KVE7YAS.js.map → chunk-LJ7O3736.js.map} +1 -1
- package/dist/chunks/{chunk-OJWBLPPH.js → chunk-OQHN2GWX.js} +2 -2
- package/dist/chunks/chunk-PTDOYJFH.js +4 -0
- package/dist/chunks/chunk-PTDOYJFH.js.map +7 -0
- package/dist/chunks/chunk-SGP63UMC.js +2 -0
- package/dist/chunks/chunk-SGP63UMC.js.map +7 -0
- package/dist/chunks/{chunk-XXBE4IFZ.js → chunk-SI5VLKVN.js} +2 -2
- package/dist/chunks/{chunk-XXBE4IFZ.js.map → chunk-SI5VLKVN.js.map} +1 -1
- package/dist/chunks/{chunk-6SWXMRAV.js → chunk-TWPUVVYH.js} +1 -1
- package/dist/chunks/{chunk-6SWXMRAV.js.map → chunk-TWPUVVYH.js.map} +1 -1
- package/dist/chunks/{chunk-FTXDTU27.js → chunk-XF6GU4GK.js} +3 -3
- package/dist/chunks/{chunk-FTXDTU27.js.map → chunk-XF6GU4GK.js.map} +2 -2
- package/dist/chunks/{chunk-MUONTMYZ.js → chunk-XSDGE4RF.js} +2 -2
- package/dist/chunks/{chunk-LE7FZM6Y.js → chunk-ZFJGNGIB.js} +2 -2
- package/dist/chunks/{chunk-LE7FZM6Y.js.map → chunk-ZFJGNGIB.js.map} +1 -1
- package/dist/chunks/chunk-ZI7RFIA2.js +4 -0
- package/dist/chunks/chunk-ZI7RFIA2.js.map +7 -0
- package/dist/chunks/{renderSvg-ZIUOPWJQ.js → renderSvg-NIWFCY3U.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -3
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
- package/package.json +2 -2
- package/src/GraphComputeLayout.test.ts +24 -0
- package/src/GraphComputeLayout.ts +4 -2
- package/src/GraphGenomeView/components/GraphSettingsDialog.tsx +16 -0
- package/src/GraphGenomeView/components/WalkRowsOverlay.tsx +83 -0
- package/src/GraphGenomeView/components/usePaneGestures.test.tsx +82 -5
- package/src/GraphGenomeView/components/usePaneGestures.ts +10 -4
- package/src/GraphGenomeView/graphLayers.ts +14 -1
- package/src/GraphGenomeView/legendSections.ts +32 -0
- package/src/GraphGenomeView/model.test.ts +307 -7
- package/src/GraphGenomeView/model.ts +3 -10
- package/src/GraphGenomeView/nodeColor.test.ts +27 -1
- package/src/GraphGenomeView/nodeColor.ts +38 -29
- package/src/GraphGenomeView/nodeSize.test.ts +21 -5
- package/src/GraphGenomeView/nodeSize.ts +24 -8
- package/src/GraphGenomeView/pane/fitViews.ts +5 -1
- package/src/GraphGenomeView/pane/graphViews.ts +102 -20
- package/src/GraphGenomeView/pane/launchActions.ts +55 -11
- package/src/GraphGenomeView/pane/launchViews.ts +46 -0
- package/src/GraphGenomeView/pane/loadActions.ts +85 -25
- package/src/GraphGenomeView/pane/morph.test.ts +25 -1
- package/src/GraphGenomeView/pane/morph.ts +3 -1
- package/src/GraphGenomeView/pane/paneBase.ts +5 -0
- package/src/GraphGenomeView/pane/renderingActions.ts +61 -2
- package/src/GraphGenomeView/pane/settingActions.ts +65 -5
- package/src/GraphGenomeView/pane/walkRowViews.ts +17 -6
- package/src/GraphGenomeView/retiredNodeColor.test.ts +46 -0
- package/src/GraphGenomeView/retiredNodeColor.ts +76 -0
- package/src/GraphGenomeView/tubeMapPanels.ts +2 -1
- package/src/GraphGenomeView/viewModel.ts +16 -9
- package/src/GraphGenomeView/walkRowBlocks.ts +50 -0
- package/src/LinearGraphDisplay/LinearGraphDisplay.test.ts +97 -10
- package/src/LinearGraphDisplay/components/GraphStatusChrome.test.tsx +18 -0
- package/src/LinearGraphDisplay/components/GraphStatusChrome.tsx +4 -2
- package/src/LinearGraphDisplay/components/SubgraphHaplotypesField.test.tsx +41 -1
- package/src/LinearGraphDisplay/components/SubgraphHaplotypesField.tsx +33 -19
- package/src/LinearGraphDisplay/configSchema.ts +18 -10
- package/src/LinearGraphDisplay/model.ts +4 -2
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +2 -9
- package/src/WalkTabixSyntenyAdapter/WalkTabixSyntenyAdapter.ts +3 -6
- package/src/hoverSync/graphViewHighlights.test.ts +53 -0
- package/src/hoverSync/graphViewHighlights.ts +25 -0
- package/src/hoverSync/lgvHover.test.ts +100 -1
- package/src/hoverSync/lgvHover.ts +77 -6
- package/src/launchFromGraph/contributors.test.ts +52 -0
- package/src/launchFromGraph/contributors.ts +105 -1
- package/src/launchFromGraph/launchFromGraph.ts +2 -2
- package/src/panSNTabix.test.ts +28 -0
- package/src/panSNTabix.ts +26 -8
- package/src/version.ts +1 -1
- package/dist/chunks/GraphTrackSettingsDialog-EVIIGC5G.js +0 -6
- package/dist/chunks/GraphTrackSettingsDialog-EVIIGC5G.js.map +0 -7
- package/dist/chunks/LinearGraphDisplay-ZC4BQ27J.js +0 -2
- package/dist/chunks/RgfaTabixAdapter-XSOIEWBK.js +0 -2
- package/dist/chunks/RgfaTabixAdapter-XSOIEWBK.js.map +0 -7
- package/dist/chunks/WalkTabixSyntenyAdapter-3WRVNDLB.js +0 -2
- package/dist/chunks/chunk-6VNU7SD4.js +0 -2
- package/dist/chunks/chunk-GRTN25B6.js +0 -3
- package/dist/chunks/chunk-GRTN25B6.js.map +0 -7
- package/dist/chunks/chunk-HCDKP3IP.js +0 -2
- package/dist/chunks/chunk-LE43I4PT.js +0 -4
- package/dist/chunks/chunk-LE43I4PT.js.map +0 -7
- package/dist/chunks/chunk-QV7SSOMJ.js +0 -2
- package/dist/chunks/chunk-S333HOG5.js +0 -2
- package/dist/chunks/chunk-VZQ6VOUP.js +0 -2
- package/dist/chunks/chunk-VZQ6VOUP.js.map +0 -7
- package/dist/chunks/chunk-WLRRI35A.js +0 -3
- package/dist/chunks/chunk-WLRRI35A.js.map +0 -7
- package/src/launchFromGraph/launchTracks.test.ts +0 -95
- package/src/launchFromGraph/launchTracks.ts +0 -49
- /package/dist/chunks/{GraphGenomeView-SEAPDRXS.js.map → GraphGenomeView-GQW4YC23.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-QAYWLO5I.js.map → HighlightColorDialog-PD3KMF2U.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-3QM4XV47.js.map → MinigraphBubbleAdapter-L6JSQIOL.js.map} +0 -0
- /package/dist/chunks/{WalkFormsAdapter-FT2SW4H6.js.map → WalkFormsAdapter-NX36GP35.js.map} +0 -0
- /package/dist/chunks/{chunk-QV7SSOMJ.js.map → chunk-3AC33AXB.js.map} +0 -0
- /package/dist/chunks/{chunk-HF4H6LQI.js.map → chunk-4PHM6JNU.js.map} +0 -0
- /package/dist/chunks/{chunk-OJWBLPPH.js.map → chunk-OQHN2GWX.js.map} +0 -0
- /package/dist/chunks/{chunk-MUONTMYZ.js.map → chunk-XSDGE4RF.js.map} +0 -0
- /package/dist/chunks/{renderSvg-ZIUOPWJQ.js.map → renderSvg-NIWFCY3U.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as Wt,o as Ht,r as pt}from"./chunk-LE7FZM6Y.js";import{a as St,c as Dt,d as Vt,e as Zt}from"./chunk-6SWXMRAV.js";var fe="ws",ce="we",Xt=["elsewhere","break","end"],ke={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded"},ye="outside the extracted subgraph";function Kt(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),i=t-n-r,h=e?.kind==="break"?Math.min(e.bp,i):0;i-=h;let c=s?.kind==="break"?Math.min(s.bp,i):0;i-=c;let o=[e,s].find(k=>k?.kind==="elsewhere");return[{bp:n},{bp:h,cause:"missing"},o?.kind==="elsewhere"?{bp:i,cause:"elsewhere",chunk:o.chunk}:{bp:i,cause:"unknown"},{bp:c,cause:"missing"},{bp:r}].filter(k=>k.bp>0)}function xt(t,e){let s=t.bp[e],n=t.chunkRefs[e];return qt(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 qt(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 zt(t){let[e,...s]=t.split(","),n,r=0,i;for(let h of s)if(h.startsWith("bp="))n=+h.slice(3);else if(h.startsWith("trimmed="))r=+h.slice(8);else if(h.startsWith("chunk=")){let c=h.lastIndexOf(":");i={refName:h.slice(6,c),start:+h.slice(c+1)}}return qt(e,n,r,i)}function Ft(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function Ae(t){let e=t[fe],s=t[ce];return Ft(typeof e=="string"?zt(e):void 0,typeof s=="string"?zt(s):void 0)}var we=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(Xt.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:[...Xt],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function le(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Mt(t,e){let s=t.names[e],n=Zt(s),r=t.starts[e],i=t.abridgedSteps?.[e]??Number.NaN,h=Number.isNaN(i)?{}:{abridged:{steps:i,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Ft(t.before&&xt(t.before,e),t.after&&xt(t.after,e)),...h}:{name:le(s,r,t.ends[e]),start:r}}function he(t,e,s,n){let r=new Int32Array(s+1);for(let o of t)r[o+1]++;for(let o=0;o<s;o++)r[o+1]+=r[o];let i=r.slice(0,s),h=new Int32Array(t.length);t.forEach((o,p)=>{h[i[o]++]=e[p]});let c=new Int32Array(n.length).fill(-1);return Array.from({length:s},(o,p)=>{let k=[];for(let R=r[p];R<r[p+1];R++){let j=h[R];c[j]!==p&&(c[j]=p,k.push(n[j]))}return k})}function Tt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),i=(c,o)=>{r[c]===0&&(r[c]=o?2:1)};for(let c=0;c<e.from.length;c++)i(e.from[c],e.strands[c]&1),i(e.to[c],e.strands[c]&2);let h=s.offsets[s.names.length]??0;for(let c=0;c<h;c++){let o=s.steps[c];i(o,s.reversed[c]),n&&n[o]++}return t.names.map((c,o)=>`${c}${r[o]===2?"-":"+"}`)}function xe({nodes:t,links:e,walks:s},n="Imported GFA"){let r=t.names.length,i=t.lengths.length,h=[];for(let a=0;a<s.names.length;a++)s.offsets[a+1]>s.offsets[a]&&h.push(a);let c=new Int32Array(r),o=Tt({nodes:t,links:e,walks:s},c),p=[];for(let a=0;a<i;a++){let v=t.refs[a];p.push({id:o[a],name:t.names[a],length:t.lengths[a],depth:Math.max(c[a],1),stable:v<0?void 0:{refName:t.refNames[v],start:t.starts[a],rank:t.ranks[a]},samples:void 0})}let k=[],R=new Array(r),j=(a,v)=>{let u=R[a];if(u){for(let w=0;w<u.length;w+=2)if(u[w]===v)return u[w+1]}},W=(a,v,u)=>{let w=R[a];w?w.push(v,u):R[a]=[v,u]},at=[],tt=0;for(let a=0;a<e.from.length;a++){let v=e.from[a],u=e.to[a];k.push({from:o[v],to:o[u],fromStrand:e.strands[a]&1?"-":"+",toStrand:e.strands[a]&2?"-":"+"});let w=j(v,u);w===void 0&&(w=tt++,W(v,u,w),W(u,v,w)),at.push(w)}let M=new Int32Array(r+1);for(let a=0;a<r;a++)M[a+1]=M[a]+(R[a]?.length??0)/2;let it=new Int32Array(M[r]),ft=new Int32Array(M[r]);R.forEach((a,v)=>{for(let u=0;u<a.length;u+=2)it[M[v]+u/2]=a[u],ft[M[v]+u/2]=a[u+1]});let Rt=(a,v)=>{for(let u=M[a];u<M[a+1];u++)if(it[u]===v)return ft[u];return-1},O=new Map,B=[],V=new Int32Array(s.offsets[s.names.length]??0),ct=new Int32Array(V.length),et=0,x=new Int32Array(tt).fill(-1),gt=[],U=[],Z=s.offsets[s.names.length]??0,lt=new Int32Array(Z),Nt=new Float64Array(Z),H=new Uint8Array(Z),I=new Int32Array(r).fill(-1),T=[],G=[0],st=[],X=new Map,z=[];for(let a of h){let v=Mt(s,a),{start:u,name:w}=v,K=v.sample===void 0?s.names[a]:w,q=O.get(K);q===void 0&&(q=B.length,O.set(K,q),B.push(K),st.push(St(K)));let f=X.get(w);f===void 0&&(f=z.length,X.set(w,f),z.push(w));let g=st[q],$=s.offsets[a],L=new Array(s.offsets[a+1]-$),E=u,y=-1;for(let P=$;P<s.offsets[a+1];P++){let S=s.steps[P];L[P-$]=o[S],I[S]===-1&&(I[S]=G.at(-1),G.push(I[S]+c[S]),T.push(S));let J=I[S]++;if(lt[J]=q,Nt[J]=E,H[J]=s.reversed[P],E+=S<i?t.lengths[S]:0,y>=0){let D=Rt(y,S);D>=0&&x[D]!==a&&(x[D]=a,V[et]=D,ct[et++]=f)}y=S}gt.push({...v,nodeIds:L}),U.push({name:K,sample:g,start:u,length:E-u})}let bt=he(V.subarray(0,et),ct,tt,z);k.forEach((a,v)=>{let u=bt[at[v]];u.length>0&&(a.pathIds=u)});let ht=h.length>0;return{name:n,nodes:p,edges:k,paths:ht?gt:void 0,anchorPaths:ht?U:void 0,pathVisits:ht?new Ht({segments:T.map(a=>t.names[a]),offsets:Int32Array.from(G),path:lt.subarray(0,G.at(-1)),start:Nt.subarray(0,G.at(-1)),reversed:H.subarray(0,G.at(-1)),paths:B,samples:st}):void 0,anchoredBy:p.some(a=>a.stable)?"tags":void 0}}var Pt=1,Qt=2,It=4,Yt=[void 0,"missing","elsewhere","unknown","abridged"],te=3,ue=t=>Yt.indexOf(t)<<te;function ee(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function de(t){return ee((t.paths??[]).map(e=>pt(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}function pe(t){let e=new Map,s=[],n=[],r=p=>{let k=e.get(p);return k===void 0&&(k=s.length,e.set(p,k),s.push(p),n.push(0)),k};for(let p of t.nodes)n[r(p.id)]=p.length;let i=t.paths??[],h=new Int32Array(i.length),c=new Int32Array(i.length),o=[];return i.forEach((p,k)=>{h[k]=o.length;for(let R of p.nodeIds)o.push(r(R));c[k]=o.length}),{heads:i,from:h,to:c,steps:Int32Array.from(o),lengths:Int32Array.from(n),names:s,reference:de(t)}}function me(t,e,s){let{nodes:n,walks:r}=t,i=[];for(let o=0;o<r.names.length;o++)r.offsets[o+1]>r.offsets[o]&&i.push(o);let h=i.map(o=>Mt(r,o)),c=new Set;for(let o=0;o<n.lengths.length;o++)n.refs[o]>=0&&n.ranks[o]===0&&c.add(n.refNames[n.refs[o]]);return{heads:h,from:Int32Array.from(i,o=>r.offsets[o]),to:Int32Array.from(i,o=>r.offsets[o+1]),steps:r.steps,lengths:n.lengths,names:s?Tt(t):n.names,reference:ee(h.map(o=>pt(o.name).name),e,c)}}function se(t){return t.sample??St(t.name)}function ge(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:se(t)}var Jt=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 i=this.values;i[0].push(t),i[1].push(e),i[2].push(s),i[3].push(n),r!==void 0&&i[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,i)=>{s[i+1]=s[i]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,i)=>{let h=this.values[i],c=r(this.length),o=0;for(let p of t)for(let k=this.offsets[p];k<this.offsets[p+1];k++)c[o++]=h[k];return c});return{offsets:s,columns:n}}},mt=t=>new Float64Array(t);function je(t,e,s={}){let{heads:n,from:r,to:i,steps:h,lengths:c,names:o,reference:p}="walks"in t?me(t,s.referencePath,s.visits):pe(t),k=c.length,R=f=>f<k?c[f]:0,j=f=>pt(n[f].name).name,W=f=>n[f].start,at=(f,g)=>(W(f)??0)-(W(g)??0),tt=n.map((f,g)=>g),M=tt.filter(f=>j(f)===p).sort(at),it=M[0],ft=tt.filter(f=>j(f)!==p);if(it===void 0||ft.length===0)return;let Rt=Wt(ft,j),O=new Float64Array(o.length).fill(Number.NaN),B=new Float64Array(o.length),V=new Map,ct=!1,et=!1,x=e&&e.end>e.start?e:void 0;for(let f of M){let g=W(f)??0;for(let $=r[f],L=i[f];$<L;$++){let E=h[$],y=R(E);if(Number.isNaN(O[E]))O[E]=g,B[E]=g+y,x&&(ct||=g+y<=x.start,et||=g>=x.end);else{let P=V.get(E);P?P.push(g):V.set(E,[O[E],g])}g+=y}}let gt=x===void 0||ct&&et,U=new Jt(5),Z=[],lt=new Map,Nt=f=>{if(!f)return-1;let g=`${f.refName}:${f.start}`,$=lt.get(g);return $===void 0&&($=Z.length,lt.set(g,$),Z.push(f)),$},H=s.visits?new Jt(4):void 0,I=new Int32Array(0),T=new Float64Array(0),G=f=>{let g=n[f[0]],$=[...f].sort(at),L=$.length-1,E=0;for(let l of $)L+=i[l]-r[l]+(n[l].abridged?1:0),E+=n[l].abridged?.steps??0;L>I.length&&(I=new Int32Array(L*2),T=new Float64Array(L*2));let y=0,P=!1,S,J,D=new Map;for(let l of $){let d=W(l);(d===void 0||S!==void 0&&d<S)&&(P=!0),S!==void 0&&d!==void 0&&d>S&&(D.set(y,Kt(d-S,J===void 0?void 0:n[J].after,n[l].before)),I[y]=-(d-S),T[y++]=S);let b=d??0,A=n[l].abridged;for(let m=r[l],N=i[l];m<N;m++){let F=h[m],_=A?A.bp-(b-(d??0))-R(F):0;_>0&&m===N-1&&m>r[l]&&(D.set(y,[{bp:_,cause:"abridged"}]),I[y]=-_,T[y++]=b,b+=_),I[y]=F,T[y++]=b,b+=R(F)}S=d===void 0?void 0:b,J=l}let _t=l=>l>=0&&l<y&&I[l]>=0&&!Number.isNaN(O[I[l]]),$t=l=>{let d=I[l];return T[l]+(d<0?-d:R(d))},ne=(l,d)=>{let b=l>=0?l:d,A=-1;for(let Y=1;A<0&&Y<y;Y++)A=[b-Y,b+Y].find(_t)??-1;if(A<0)return;let m=A>b==O[I[A]]>O[I[b]],N=m===(b===l),F=N?y-1:0,_=_t(F);return{stop:{contigEnds:_,shortBp:_?Math.max(0,x.start-B[I[F]],O[I[F]]-x.end):0},lo:N?b+1:0,hi:N?y:b,backward:!m,axisStart:m?N?$t(b):T[0]:N?$t(y-1):T[b]}},vt=0,kt=y,ut=!1,Ut=!0,dt=-1,jt=-1,Ot,Bt;if(x&>){let l=-1,d=-1,b=-1/0,A=1/0;for(let m=0;m<y;m++){let N=I[m];N>=0&&!Number.isNaN(O[N])&&(B[N]<=x.start&&B[N]>b&&(b=B[N],l=m),O[N]>=x.end&&O[N]<A&&(A=O[N],d=m))}if(l<0||d<0){Ut=!1;let m=l>=0||d>=0?ne(l,d):void 0;m&&({lo:vt,hi:kt,backward:ut,axisStart:Ot,stop:Bt}=m)}else vt=Math.min(l,d)+1,kt=Math.max(l,d),ut=l>d,dt=l,jt=d}let yt=g.contig??Vt(pt(g.name).name),re=P||y===0?void 0:Ot!==void 0?{contig:yt,start:Ot,reversed:ut}:dt<0?{contig:yt,start:T[0],reversed:!1}:dt<jt?{contig:yt,start:$t(dt),reversed:!1}:{contig:yt,start:T[dt],reversed:!0},nt=0,Gt=0,Lt=0,rt=0,C=-1,ot=0,Q=Number.NaN,At=Number.NaN,oe=l=>{let d=V.get(l);if(!d||Number.isNaN(At))return O[l];let b=R(l),A=d[0],m=1/0;for(let N of d){let F=Math.min(Math.abs(N-At),Math.abs(N+b-At));F<m&&(A=N,m=F)}return A},[,Et,ae,ie]=U.values;for(let l=vt;l<kt;l++){let d=ut?kt-1-(l-vt):l,b=I[d];if(b<0){let Y=D.get(d);for(let wt of ut?[...Y].reverse():Y)U.push(nt,wt.bp,Number.NaN,It|ue(wt.cause),Nt(wt.chunk)),nt+=wt.bp;C=U.length-1,ot=It,Q=Number.NaN,Lt+=-b,rt=0;continue}let A=R(b),m=oe(b),N=!Number.isNaN(m);H?.push(b,nt,A,N?1:0);let F=C>=0&&!Number.isNaN(Q),_=N&&F&&rt>=0&&Q+(Et[C]??0)===m,Ct=N&&F&&rt<=0&&m+A===Q;!N&&C>=0&&!(ot&(Pt|It))?Et[C]+=A:_||Ct?(Et[C]+=A,_||(Q=m,ae[C]=m,ot|=Qt,ie[C]=ot),rt=_?1:-1):(ot=N?Pt:0,Q=N?m:Number.NaN,U.push(nt,A,Q,ot,-1),C=U.length-1,rt=0),nt+=A,N?At=rt<0?m:m+A:Gt+=A}return U.endRow(),H?.endRow(),{name:g.name,label:ge(g),sample:se(g),haplotype:g.haplotype,bp:nt,offReferenceBp:Gt,gapBp:Lt,complete:Ut,stop:Bt,axis:re,...E>0?{abridgedSteps:E}:{}}},st=G(M),X=[...Rt.values()].map((f,g)=>({meta:G(f),row:g+1})),z=[st,...X.map(f=>f.meta)];if(new Set(z.map(f=>f.label)).size<z.length)for(let f of z)f.label=Dt(f.name)??f.label;X.sort((f,g)=>Number(g.meta.complete)-Number(f.meta.complete)||g.meta.bp-f.meta.bp||f.meta.label.localeCompare(g.meta.label));let bt=[0,...X.map(f=>f.row)],{offsets:ht,columns:a}=U.reorder(bt,[mt,mt,mt,f=>new Uint8Array(f),f=>new Int32Array(f)]),[v,u,w,K,q]=a;return{origin:x?x.start:W(it)??0,rows:[st,...X.map(f=>f.meta)],offsets:ht,start:v,bp:u,referenceStart:w,flags:K,chunk:q,chunks:Z,visits:H&&Ne(H,bt,o)}}function Ne(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[p=>new Int32Array(p),mt,mt,p=>new Uint8Array(p)]),[i,h,c,o]=r;return{offsets:n,node:i,start:h,bp:c,onReference:o,names:s}}function be(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Pt)!==0};if(s&It){n.gap=!0;let r=Yt[s>>te&7];r&&(n.cause=r);let i=t.chunks[t.chunk[e]];i&&(n.chunk=i)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&Qt&&(n.reversed=!0),n}function ve(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 Be(t,e){let s=t.rows.map((n,r)=>{let i=[];for(let h=t.offsets[r];h<t.offsets[r+1];h++)i.push(be(t,h));return{...n,runs:i,visits:t.visits&&ve(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{fe as a,ce as b,ke as c,ye as d,Kt as e,zt as f,Ae as g,we as h,Mt as i,xe as j,de as k,je as l,Be as m};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{c as Wt,o as Ht,r as pt}from"./chunk-ZFJGNGIB.js";import{a as St,c as Dt,d as Vt,e as Zt}from"./chunk-TWPUVVYH.js";var fe="ws",ce="we",Xt=["elsewhere","break","end"],ke={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded"},ye="outside the extracted subgraph";function Kt(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),i=t-n-r,h=e?.kind==="break"?Math.min(e.bp,i):0;i-=h;let c=s?.kind==="break"?Math.min(s.bp,i):0;i-=c;let o=[e,s].find(k=>k?.kind==="elsewhere");return[{bp:n},{bp:h,cause:"missing"},o?.kind==="elsewhere"?{bp:i,cause:"elsewhere",chunk:o.chunk}:{bp:i,cause:"unknown"},{bp:c,cause:"missing"},{bp:r}].filter(k=>k.bp>0)}function xt(t,e){let s=t.bp[e],n=t.chunkRefs[e];return qt(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 qt(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 zt(t){let[e,...s]=t.split(","),n,r=0,i;for(let h of s)if(h.startsWith("bp="))n=+h.slice(3);else if(h.startsWith("trimmed="))r=+h.slice(8);else if(h.startsWith("chunk=")){let c=h.lastIndexOf(":");i={refName:h.slice(6,c),start:+h.slice(c+1)}}return qt(e,n,r,i)}function Ft(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function Ae(t){let e=t[fe],s=t[ce];return Ft(typeof e=="string"?zt(e):void 0,typeof s=="string"?zt(s):void 0)}var we=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(Xt.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:[...Xt],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function le(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Mt(t,e){let s=t.names[e],n=Zt(s),r=t.starts[e],i=t.abridgedSteps?.[e]??Number.NaN,h=Number.isNaN(i)?{}:{abridged:{steps:i,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Ft(t.before&&xt(t.before,e),t.after&&xt(t.after,e)),...h}:{name:le(s,r,t.ends[e]),start:r}}function he(t,e,s,n){let r=new Int32Array(s+1);for(let o of t)r[o+1]++;for(let o=0;o<s;o++)r[o+1]+=r[o];let i=r.slice(0,s),h=new Int32Array(t.length);t.forEach((o,p)=>{h[i[o]++]=e[p]});let c=new Int32Array(n.length).fill(-1);return Array.from({length:s},(o,p)=>{let k=[];for(let R=r[p];R<r[p+1];R++){let j=h[R];c[j]!==p&&(c[j]=p,k.push(n[j]))}return k})}function Tt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),i=(c,o)=>{r[c]===0&&(r[c]=o?2:1)};for(let c=0;c<e.from.length;c++)i(e.from[c],e.strands[c]&1),i(e.to[c],e.strands[c]&2);let h=s.offsets[s.names.length]??0;for(let c=0;c<h;c++){let o=s.steps[c];i(o,s.reversed[c]),n&&n[o]++}return t.names.map((c,o)=>`${c}${r[o]===2?"-":"+"}`)}function xe({nodes:t,links:e,walks:s},n="Imported GFA"){let r=t.names.length,i=t.lengths.length,h=[];for(let a=0;a<s.names.length;a++)s.offsets[a+1]>s.offsets[a]&&h.push(a);let c=new Int32Array(r),o=Tt({nodes:t,links:e,walks:s},c),p=[];for(let a=0;a<i;a++){let v=t.refs[a];p.push({id:o[a],name:t.names[a],length:t.lengths[a],depth:Math.max(c[a],1),stable:v<0?void 0:{refName:t.refNames[v],start:t.starts[a],rank:t.ranks[a]},samples:void 0})}let k=[],R=new Array(r),j=(a,v)=>{let u=R[a];if(u){for(let w=0;w<u.length;w+=2)if(u[w]===v)return u[w+1]}},W=(a,v,u)=>{let w=R[a];w?w.push(v,u):R[a]=[v,u]},at=[],tt=0;for(let a=0;a<e.from.length;a++){let v=e.from[a],u=e.to[a];k.push({from:o[v],to:o[u],fromStrand:e.strands[a]&1?"-":"+",toStrand:e.strands[a]&2?"-":"+"});let w=j(v,u);w===void 0&&(w=tt++,W(v,u,w),W(u,v,w)),at.push(w)}let M=new Int32Array(r+1);for(let a=0;a<r;a++)M[a+1]=M[a]+(R[a]?.length??0)/2;let it=new Int32Array(M[r]),ft=new Int32Array(M[r]);R.forEach((a,v)=>{for(let u=0;u<a.length;u+=2)it[M[v]+u/2]=a[u],ft[M[v]+u/2]=a[u+1]});let Rt=(a,v)=>{for(let u=M[a];u<M[a+1];u++)if(it[u]===v)return ft[u];return-1},O=new Map,B=[],V=new Int32Array(s.offsets[s.names.length]??0),ct=new Int32Array(V.length),et=0,x=new Int32Array(tt).fill(-1),gt=[],U=[],Z=s.offsets[s.names.length]??0,lt=new Int32Array(Z),Nt=new Float64Array(Z),H=new Uint8Array(Z),I=new Int32Array(r).fill(-1),T=[],G=[0],st=[],X=new Map,z=[];for(let a of h){let v=Mt(s,a),{start:u,name:w}=v,K=v.sample===void 0?s.names[a]:w,q=O.get(K);q===void 0&&(q=B.length,O.set(K,q),B.push(K),st.push(St(K)));let f=X.get(w);f===void 0&&(f=z.length,X.set(w,f),z.push(w));let g=st[q],$=s.offsets[a],L=new Array(s.offsets[a+1]-$),E=u,y=-1;for(let P=$;P<s.offsets[a+1];P++){let S=s.steps[P];L[P-$]=o[S],I[S]===-1&&(I[S]=G.at(-1),G.push(I[S]+c[S]),T.push(S));let J=I[S]++;if(lt[J]=q,Nt[J]=E,H[J]=s.reversed[P],E+=S<i?t.lengths[S]:0,y>=0){let D=Rt(y,S);D>=0&&x[D]!==a&&(x[D]=a,V[et]=D,ct[et++]=f)}y=S}gt.push({...v,nodeIds:L}),U.push({name:K,sample:g,start:u,length:E-u})}let bt=he(V.subarray(0,et),ct,tt,z);k.forEach((a,v)=>{let u=bt[at[v]];u.length>0&&(a.pathIds=u)});let ht=h.length>0;return{name:n,nodes:p,edges:k,paths:ht?gt:void 0,anchorPaths:ht?U:void 0,pathVisits:ht?new Ht({segments:T.map(a=>t.names[a]),offsets:Int32Array.from(G),path:lt.subarray(0,G.at(-1)),start:Nt.subarray(0,G.at(-1)),reversed:H.subarray(0,G.at(-1)),paths:B,samples:st}):void 0,anchoredBy:p.some(a=>a.stable)?"tags":void 0}}var Pt=1,Qt=2,It=4,Yt=[void 0,"missing","elsewhere","unknown","abridged"],te=3,ue=t=>Yt.indexOf(t)<<te;function ee(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function de(t){return ee((t.paths??[]).map(e=>pt(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}function pe(t){let e=new Map,s=[],n=[],r=p=>{let k=e.get(p);return k===void 0&&(k=s.length,e.set(p,k),s.push(p),n.push(0)),k};for(let p of t.nodes)n[r(p.id)]=p.length;let i=t.paths??[],h=new Int32Array(i.length),c=new Int32Array(i.length),o=[];return i.forEach((p,k)=>{h[k]=o.length;for(let R of p.nodeIds)o.push(r(R));c[k]=o.length}),{heads:i,from:h,to:c,steps:Int32Array.from(o),lengths:Int32Array.from(n),names:s,reference:de(t)}}function me(t,e,s){let{nodes:n,walks:r}=t,i=[];for(let o=0;o<r.names.length;o++)r.offsets[o+1]>r.offsets[o]&&i.push(o);let h=i.map(o=>Mt(r,o)),c=new Set;for(let o=0;o<n.lengths.length;o++)n.refs[o]>=0&&n.ranks[o]===0&&c.add(n.refNames[n.refs[o]]);return{heads:h,from:Int32Array.from(i,o=>r.offsets[o]),to:Int32Array.from(i,o=>r.offsets[o+1]),steps:r.steps,lengths:n.lengths,names:s?Tt(t):n.names,reference:ee(h.map(o=>pt(o.name).name),e,c)}}function se(t){return t.sample??St(t.name)}function ge(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:se(t)}var Jt=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 i=this.values;i[0].push(t),i[1].push(e),i[2].push(s),i[3].push(n),r!==void 0&&i[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,i)=>{s[i+1]=s[i]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,i)=>{let h=this.values[i],c=r(this.length),o=0;for(let p of t)for(let k=this.offsets[p];k<this.offsets[p+1];k++)c[o++]=h[k];return c});return{offsets:s,columns:n}}},mt=t=>new Float64Array(t);function je(t,e,s={}){let{heads:n,from:r,to:i,steps:h,lengths:c,names:o,reference:p}="walks"in t?me(t,s.referencePath,s.visits):pe(t),k=c.length,R=f=>f<k?c[f]:0,j=f=>pt(n[f].name).name,W=f=>n[f].start,at=(f,g)=>(W(f)??0)-(W(g)??0),tt=n.map((f,g)=>g),M=tt.filter(f=>j(f)===p).sort(at),it=M[0],ft=tt.filter(f=>j(f)!==p);if(it===void 0||ft.length===0)return;let Rt=Wt(ft,j),O=new Float64Array(o.length).fill(Number.NaN),B=new Float64Array(o.length),V=new Map,ct=!1,et=!1,x=e&&e.end>e.start?e:void 0;for(let f of M){let g=W(f)??0;for(let $=r[f],L=i[f];$<L;$++){let E=h[$],y=R(E);if(Number.isNaN(O[E]))O[E]=g,B[E]=g+y,x&&(ct||=g+y<=x.start,et||=g>=x.end);else{let P=V.get(E);P?P.push(g):V.set(E,[O[E],g])}g+=y}}let gt=x===void 0||ct&&et,U=new Jt(5),Z=[],lt=new Map,Nt=f=>{if(!f)return-1;let g=`${f.refName}:${f.start}`,$=lt.get(g);return $===void 0&&($=Z.length,lt.set(g,$),Z.push(f)),$},H=s.visits?new Jt(4):void 0,I=new Int32Array(0),T=new Float64Array(0),G=f=>{let g=n[f[0]],$=[...f].sort(at),L=$.length-1,E=0;for(let l of $)L+=i[l]-r[l]+(n[l].abridged?1:0),E+=n[l].abridged?.steps??0;L>I.length&&(I=new Int32Array(L*2),T=new Float64Array(L*2));let y=0,P=!1,S,J,D=new Map;for(let l of $){let d=W(l);(d===void 0||S!==void 0&&d<S)&&(P=!0),S!==void 0&&d!==void 0&&d>S&&(D.set(y,Kt(d-S,J===void 0?void 0:n[J].after,n[l].before)),I[y]=-(d-S),T[y++]=S);let b=d??0,A=n[l].abridged;for(let m=r[l],N=i[l];m<N;m++){let F=h[m],_=A?A.bp-(b-(d??0))-R(F):0;_>0&&m===N-1&&m>r[l]&&(D.set(y,[{bp:_,cause:"abridged"}]),I[y]=-_,T[y++]=b,b+=_),I[y]=F,T[y++]=b,b+=R(F)}S=d===void 0?void 0:b,J=l}let _t=l=>l>=0&&l<y&&I[l]>=0&&!Number.isNaN(O[I[l]]),$t=l=>{let d=I[l];return T[l]+(d<0?-d:R(d))},ne=(l,d)=>{let b=l>=0?l:d,A=-1;for(let Y=1;A<0&&Y<y;Y++)A=[b-Y,b+Y].find(_t)??-1;if(A<0)return;let m=A>b==O[I[A]]>O[I[b]],N=m===(b===l),F=N?y-1:0,_=_t(F);return{stop:{contigEnds:_,shortBp:_?Math.max(0,x.start-B[I[F]],O[I[F]]-x.end):0},lo:N?b+1:0,hi:N?y:b,backward:!m,axisStart:m?N?$t(b):T[0]:N?$t(y-1):T[b]}},vt=0,kt=y,ut=!1,Ut=!0,dt=-1,jt=-1,Ot,Bt;if(x&>){let l=-1,d=-1,b=-1/0,A=1/0;for(let m=0;m<y;m++){let N=I[m];N>=0&&!Number.isNaN(O[N])&&(B[N]<=x.start&&B[N]>b&&(b=B[N],l=m),O[N]>=x.end&&O[N]<A&&(A=O[N],d=m))}if(l<0||d<0){Ut=!1;let m=l>=0||d>=0?ne(l,d):void 0;m&&({lo:vt,hi:kt,backward:ut,axisStart:Ot,stop:Bt}=m)}else vt=Math.min(l,d)+1,kt=Math.max(l,d),ut=l>d,dt=l,jt=d}let yt=g.contig??Vt(pt(g.name).name),re=P||y===0?void 0:Ot!==void 0?{contig:yt,start:Ot,reversed:ut}:dt<0?{contig:yt,start:T[0],reversed:!1}:dt<jt?{contig:yt,start:$t(dt),reversed:!1}:{contig:yt,start:T[dt],reversed:!0},nt=0,Gt=0,Lt=0,rt=0,C=-1,ot=0,Q=Number.NaN,At=Number.NaN,oe=l=>{let d=V.get(l);if(!d||Number.isNaN(At))return O[l];let b=R(l),A=d[0],m=1/0;for(let N of d){let F=Math.min(Math.abs(N-At),Math.abs(N+b-At));F<m&&(A=N,m=F)}return A},[,Et,ae,ie]=U.values;for(let l=vt;l<kt;l++){let d=ut?kt-1-(l-vt):l,b=I[d];if(b<0){let Y=D.get(d);for(let wt of ut?[...Y].reverse():Y)U.push(nt,wt.bp,Number.NaN,It|ue(wt.cause),Nt(wt.chunk)),nt+=wt.bp;C=U.length-1,ot=It,Q=Number.NaN,Lt+=-b,rt=0;continue}let A=R(b),m=oe(b),N=!Number.isNaN(m);H?.push(b,nt,A,N?1:0);let F=C>=0&&!Number.isNaN(Q),_=N&&F&&rt>=0&&Q+(Et[C]??0)===m,Ct=N&&F&&rt<=0&&m+A===Q;!N&&C>=0&&!(ot&(Pt|It))?Et[C]+=A:_||Ct?(Et[C]+=A,_||(Q=m,ae[C]=m,ot|=Qt,ie[C]=ot),rt=_?1:-1):(ot=N?Pt:0,Q=N?m:Number.NaN,U.push(nt,A,Q,ot,-1),C=U.length-1,rt=0),nt+=A,N?At=rt<0?m:m+A:Gt+=A}return U.endRow(),H?.endRow(),{name:g.name,label:ge(g),sample:se(g),haplotype:g.haplotype,bp:nt,offReferenceBp:Gt,gapBp:Lt,complete:Ut,stop:Bt,axis:re,...E>0?{abridgedSteps:E}:{}}},st=G(M),X=[...Rt.values()].map((f,g)=>({meta:G(f),row:g+1})),z=[st,...X.map(f=>f.meta)];if(new Set(z.map(f=>f.label)).size<z.length)for(let f of z)f.label=Dt(f.name)??f.label;X.sort((f,g)=>Number(g.meta.complete)-Number(f.meta.complete)||g.meta.bp-f.meta.bp||f.meta.label.localeCompare(g.meta.label));let bt=[0,...X.map(f=>f.row)],{offsets:ht,columns:a}=U.reorder(bt,[mt,mt,mt,f=>new Uint8Array(f),f=>new Int32Array(f)]),[v,u,w,K,q]=a;return{origin:x?x.start:W(it)??0,rows:[st,...X.map(f=>f.meta)],offsets:ht,start:v,bp:u,referenceStart:w,flags:K,chunk:q,chunks:Z,visits:H&&Ne(H,bt,o)}}function Ne(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[p=>new Int32Array(p),mt,mt,p=>new Uint8Array(p)]),[i,h,c,o]=r;return{offsets:n,node:i,start:h,bp:c,onReference:o,names:s}}function be(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Pt)!==0};if(s&It){n.gap=!0;let r=Yt[s>>te&7];r&&(n.cause=r);let i=t.chunks[t.chunk[e]];i&&(n.chunk=i)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&Qt&&(n.reversed=!0),n}function ve(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 Be(t,e){let s=t.rows.map((n,r)=>{let i=[];for(let h=t.offsets[r];h<t.offsets[r+1];h++)i.push(be(t,h));return{...n,runs:i,visits:t.visits&&ve(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{fe as a,ce as b,ke as c,ye as d,Kt as e,zt as f,Ae as g,we as h,Mt as i,xe as j,de as k,je as l,Be as m};
|
|
2
|
+
//# sourceMappingURL=chunk-G4OPM6G7.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LG2UK4MB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7L7MN2OM.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LODKC7PJ.js"],
|
|
4
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};\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-LG2UK4MB.js\";\nimport {\n PathVisits\n} from \"./chunk-ZPZ7GNBT.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-7L7MN2OM.js\";\nimport {\n gapParts\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\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];\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}\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 for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\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: referenceWalkName(graph)\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 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: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\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 } = \"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 if (first === void 0 || others.length === 0) {\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 reachesBefore = false;\n let reachesAfter = false;\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 reachesBefore ||= pos + len <= cut.start;\n reachesAfter ||= pos >= cut.end;\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || reachesBefore && reachesAfter;\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 for (const piece of ordered) {\n const start2 = startOf(piece);\n if (start2 === void 0 || end !== void 0 && start2 < end) {\n unplaced = true;\n }\n if (end !== void 0 && start2 !== void 0 && start2 > end) {\n partsAt.set(\n length,\n gapParts(\n start2 - end,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -(start2 - end);\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 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 id = steps[i];\n if (id >= 0 && !Number.isNaN(spanStart[id])) {\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\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 }\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 ? { contig, start: stepEnd(flankFrom), reversed: false } : { contig, start: stepStart[flankFrom], reversed: true };\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 if (id < 0) {\n const parts = partsAt.get(index);\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 };\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 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
5
|
"mappings": "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",
|
|
6
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", "b", "near", "j", "addPair", "edgeLists", "a", "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", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "reachesBefore", "reachesAfter", "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", "start2", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "bestEnd", "bestStart", "inside", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "gap", "runBp", "runRef", "runFlags", "k", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as lt,c as dt,d as ht,g as N,j as J,l as xt,q as pt,r as R,w as mt,x as Mt}from"./chunk-ZFJGNGIB.js";import{b as yt}from"./chunk-TWPUVVYH.js";var bt=20;function lo(t){let n=o=>Math.round(o*100)/100;return t.map((o,e)=>`${e?"L":"M"}${n(o.x)},${n(o.y)}`).join("")}function gt(t,n,o,e,s){let r=Math.hypot(e-n,o-t);if(r===0)return[o,e];let c=(o-t)/r,a=(e-n)/r;return[o+s*c,e+s*a]}function Y(t,n){let o=1-n,e=o*o*o,s=3*o*o*n,r=3*o*n*n,c=n*n*n;return{x:e*t.x0+s*t.cx0+r*t.cx1+c*t.x1,y:e*t.y0+s*t.cy0+r*t.cy1+c*t.y1}}function Ot(t){let n=t[Math.floor(t.length/2)];return n?Y(n,.5):void 0}function St(t){let n=1/0,o=1/0,e=-1/0,s=-1/0;for(let r of t)n=Math.min(n,r.x0,r.cx0,r.cx1,r.x1),e=Math.max(e,r.x0,r.cx0,r.cx1,r.x1),o=Math.min(o,r.y0,r.cy0,r.cy1,r.y1),s=Math.max(s,r.y0,r.cy0,r.cy1,r.y1);return{minX:n,minY:o,maxX:e,maxY:s}}function Qt(t,n,o){let e=Y(t,n),s=Y(t,o),r=(o-n)/3,c=vt(t,n),a=vt(t,o);return{x0:e.x,y0:e.y,cx0:e.x+c.x*r,cy0:e.y+c.y*r,cx1:s.x-a.x*r,cy1:s.y-a.y*r,x1:s.x,y1:s.y}}function vt(t,n){let o=1-n,e=3*o*o,s=6*o*n,r=3*n*n;return{x:e*(t.cx0-t.x0)+s*(t.cx1-t.cx0)+r*(t.x1-t.cx1),y:e*(t.cy0-t.y0)+s*(t.cy1-t.cy0)+r*(t.y1-t.cy1)}}var H=32;function Zt(t,n,o,e){let s=[],r=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>=o.minX&&Math.min(l.x,h.x)-d<=o.maxX&&Math.max(l.y,h.y)+d/e>=o.minY&&Math.min(l.y,h.y)-d/e<=o.maxY){let f=r+i*(u-1)/H,x=r+i*u/H,y=s.at(-1);y&&y[1]>=f?y[1]=x:s.push([f,x])}l=h}r+=i}),s}function ho(t,n,o=1,e){let s=t.map(u=>Math.hypot(u.cx0-u.x0,(u.cy0-u.y0)*o)+Math.hypot(u.cx1-u.cx0,(u.cy1-u.cy0)*o)+Math.hypot(u.x1-u.cx1,(u.y1-u.cy1)*o)),r=s.reduce((u,h)=>u+h,0),c=Math.round(r/n),a=Math.max(3,c%2?c:c+1),i=e?Zt(t,s,e,o):void 0,d=0,l=[];for(let u=0;u<a;u+=2){let h=u/a*r,f=(u+1)/a*r;if(i){for(;d<i.length&&i[d][1]<h;)d++;if(d===i.length)break;if(i[d][0]>f)continue}let x=[],y=[],p=0;t.forEach((b,m)=>{let M=s[m],v=p+M;if(M>0&&v>h&&p<f){let g=Math.max(0,(h-p)/M),w=Math.min(1,(f-p)/M);x.push(Qt(b,g,w)),y.push((m+g)/t.length,(m+w)/t.length)}p=v}),x.length&&l.push({curves:x,startAlong:y[0],endAlong:y.at(-1)})}return l}var xo=(t,n,o)=>({dx:t.dx+(n.dx-t.dx)*o,dy:t.dy+(n.dy-t.dy)*o});function yo(t,n,o,e,s){let r=t.length,c=new Array(r);for(let a=0;a<r;a++){let i=t[a],d=a/r,l=(a+1)/r,u=n+(e-n)*d,h=o+(s-o)*d,f=n+(e-n)*l,x=o+(s-o)*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+x,x1:i.x1+f,y1:i.y1+x}}return c}function po(t,n,o){let e=new Array(t.length);for(let s=0;s<t.length;s++){let r=t[s];e[s]={x0:r.x0+n,y0:r.y0+o,cx0:r.cx0+n,cy0:r.cy0+o,cx1:r.cx1+n,cy1:r.cy1+o,x1:r.x1+n,y1:r.y1+o}}return e}function $(t,n){let o=t.length-1;return n==="end"?{at:t[o],inward:t[o-1]}:{at:t[0],inward:t[1]}}var tn=.5,nn=80;function F(t){return t.endsWith("-")?"-":"+"}function G(t){let n=(o,e)=>(e??F(o))===F(o);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function wt(t){let n=1/0,o=-1/0;for(let e of t)n=Math.min(n,e.x),o=Math.max(o,e.x);return{min:n,max:o}}function At(t,n){return Math.max(0,n.min-t,t-n.max)}function _t(t,n,o){let e=At(t[0].x,n),s=At(t[t.length-1].x,n);return e===s?o:e<s?"start":"end"}function on(t,n){return{from:_t(t,wt(n),"end"),to:_t(n,wt(t),"start")}}var Et=new WeakMap;function en(t,n){let o=Et.get(t);o||(o=new WeakMap,Et.set(t,o));let e=o.get(n);return e||(e=on(t,n),o.set(n,e)),e}var sn=.75,rn=1.15,cn=.35,an=3*bt;function fn(t,n,o,e,s,r){let c=Math.hypot(o-t,e-n),a=c===0?1:(o-t)/c,i=c===0?0:(e-n)/c,d=0,l=1/0,u=-1/0;for(let y of s){let p=y.x-t,b=y.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=s.length?u-l:0,f=Math.max(Math.abs(d)*rn/sn,h*cn),x=r===void 0?f:Math.min(f,r);return d<0?-x:x}function Pt({scaleX:t,scaleY:n}){return n/t}var un=3;function K(t,n,o){let e=n.x-t.x,s=(n.y-t.y)*o,r=Math.hypot(e,s);return r===0?void 0:{x:e/r,y:s/r}}function mo(t,n,o,e){let s=Pt(e),r=un/Math.max(e.scaleX,1e-6),c=K(t[t.length-1],n[0],s)??K(t[0],t.at(-1),s)??K(n[0],n.at(-1),s)??{x:1,y:0},a=[];for(let i=0;i<o;i++){let d=(i-(o-1)/2)*r;a.push({x:-c.y*d,y:c.x*d/s})}return a}function Q(t,n){return t.map(o=>({x:o.x,y:o.y*n}))}function ln(t,n){for(let o of t)o.y0/=n,o.cy0/=n,o.cy1/=n,o.y1/=n;return t}function Z(t,n,o){let e=0;for(let s=1;s<t.length;s++){let r=t[s-1],c=t[s];e+=Math.hypot((c.x-r.x)*n,(c.y-r.y)*o)}return e}var dn=12,hn=40;function It(t,n){let o=Z(t,n,n);return Math.min(hn,Math.max(dn,o/2))/Math.max(n,Number.EPSILON)}function xn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Xt(t,n=!1){let o=xn(t);if(!n)return o;let e=G(t);return o===!1?e:e.from===e.to?e.from:!0}function yn(t,n){let{at:o,inward:e}=t,s=e?o.x-e.x:1,r=e?o.y-e.y:0,c=Math.hypot(s,r)||1,a=s/c,i=r/c,d=o.x,l=o.y,u=d+a*n/3,h=l+i*n/3,f=d+a*n,x=l+i*n,y=-i*n/2,p=a*n/2;return[{x0:d,y0:l,cx0:u,cy0:h,cx1:f+y,cy1:x+p,x1:f,y1:x},{x0:f,y0:x,cx0:f-y,cy0:x-p,cx1:u,cy1:h,x1:d,y1:l}]}function tt(t,n,o,e,s=[],r){let c=e.scaleX,a=Pt(e),i=r??(e.pixelRows?an:void 0);if(o===!1&&(o=en(t,n)),a!==1)return ln(tt(Q(t,a),Q(n,a),o,{scaleX:c,scaleY:c},Q(s,a),i===void 0?void 0:i*a),a);if(typeof o=="string")return yn($(t,o),It(t,c));let d=o===!0,l=o===!0?{from:"end",to:"start"}:o,u=$(t,l.from),h=$(n,l.to),f=u.at,x=h.at,y=f.x,p=f.y,b=x.x,m=x.y;if(d){let M=1,v=0;if(u.inward){let S=f.x-u.inward.x,P=f.y-u.inward.y,C=Math.hypot(S,P);C>0&&(M=S/C,v=P/C)}let g=It(t,c),w=-v,_=M,I=(f.x+x.x)/2+w*g,E=(f.y+x.y)/2+_*g,A=y+M*g,X=p+v*g,O=b-M*g,L=m-v*g;return[{x0:y,y0:p,cx0:A,cy0:X,cx1:A+w*g,cy1:X+_*g,x1:I,y1:E},{x0:I,y0:E,cx0:O+w*g,cy0:L+_*g,cx1:O,cy1:L,x1:b,y1:m}]}else{let M=u.inward??{x:f.x-(x.x-f.x),y:f.y-(x.y-f.y)},v=h.inward??{x:x.x-(f.x-x.x),y:x.y-(f.y-x.y)},g=Math.hypot(b-y,m-p),w=(ct,at,Ut,Jt)=>{let it=at.x-ct.x,ft=at.y-ct.y,ut=Math.hypot(it,ft),Kt=ut===0?0:(Ut*it+Jt*ft)/ut;return Math.max(0,Math.min(g*tn,nn,Kt*.5))},_=x.x-f.x,I=x.y-f.y,[E,A]=gt(M.x,M.y,f.x,f.y,w(M,f,_,I)),[X,O]=gt(v.x,v.y,x.x,x.y,w(v,x,-_,-I)),L=s.length?fn(y,p,b,m,s,i):0,S=g===0?1:g,P=(b-y)/S,C=(m-p)/S,T=-C*L,B=P*L,W=P*Math.abs(L),rt=C*Math.abs(L);return[{x0:y,y0:p,cx0:E+T-W,cy0:A+B-rt,cx1:X+T+W,cy1:O+B+rt,x1:b,y1:m}]}}function Lt(t,n){let o=t[0],e=t.at(-1);return Math.hypot(o.x-n.x,o.y-n.y)<Math.hypot(e.x-n.x,e.y-n.y)?"start":"end"}function Ct(t,n,o,e){let s=$(t,e?.from??Lt(t,o[0])),r=$(n,e?.to??Lt(n,o.at(-1))),c=[s.at,...o,r.at],a=d=>{let l=c[d],u=f=>Math.hypot(f.x-l.x,f.y-l.y),h=(f,x)=>{let y=f?u(f):0,p=u(x);return y===0?{x:x.x-l.x,y:x.y-l.y}:{x:(l.x-f.x)/y*p,y:(l.y-f.y)/y*p}};if(d===0)return h(s.inward,c[1]);if(d===c.length-1){let f=h(r.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,o,e)=>{let s=t.get(n);if(s?.deps.length===o.length&&s.deps.every((c,a)=>Object.is(c,o[a])))return s.value;let r=e();return t.set(n,{deps:o,value:r}),r}}var Nt=11,pn=6.2,V=4;function ot(t){return t.length*pn+V*2}function mn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function kt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function Mn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function Bt(t,n=[]){let o=[...n];return e=>kt(e,t)||o.some(s=>mn(s,e))?!1:(o.push(e),!0)}function go(t,n,o){let e=[],s=Nt+V*2,r=(c,a)=>{let i=ot(a),d=c.y>n.height/2?-1:1;for(let l=0;l<=(c.stack??0);l++){let u=c.y+d*l*s,h={x0:c.x-i/2,x1:c.x+i/2,y0:u-Nt-V,y1:u+V};if(kt(h,n))return;if(Mn(h,n)&&(c.fits?.(h)??!0)&&o(h))return{...c,text:a,y:u,w:i}}};for(let c of t){let a=r(c,c.text)??(c.fallback===void 0?void 0:r(c,c.fallback));a&&e.push(a)}return e}function Tt(t){return t==="+"?"-":"+"}function Eo(t,n=new Set){let o=t.edges.map(G),e=new Map,s=(f,x,y)=>{lt(e,`${f}|${x}`,y)};t.edges.forEach((f,x)=>{s(f.from,o[x].from,x),s(f.to,o[x].to,x)});let r=f=>{let x=e.get(`${f}|end`);if(x?.length!==1)return;let y=x[0],p=t.edges[y];return p.from===f&&p.to!==f&&!n.has(f)&&!n.has(p.to)&&o[y].from==="end"&&o[y].to==="start"&&e.get(`${p.to}|start`)?.length===1?y:void 0},c=new Set,a=new Map,i=new Map;for(let f of t.nodes){let x=e.get(`${f.id}|start`),y=x?.length===1?t.edges[x[0]].from:void 0;if(a.has(f.id)||y!==void 0&&r(y)===x[0])continue;let p=[f.id];for(;;){let b=r(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 x=i.get(f.id);if(!x){l.push(f);continue}let y=x.map(m=>d.get(m)),p=y.filter(N),b=p.length?p.reduce((m,M)=>m.stable.start<=M.stable.start?m:M):y[0];l.push({id:f.id,name:f.name,length:y.reduce((m,M)=>m+M.length,0),depth:f.depth,stable:b.stable})}let u=new Set,h=[];return t.edges.forEach((f,x)=>{let y=a.get(f.from),p=a.get(f.to),b=o[x],m=`${y}|${b.from}>${p}|${b.to}`;c.has(x)||u.has(m)||(u.add(m),h.push({from:y,to:p,...b.from==="start"?{fromStrand:Tt(F(y))}:{},...b.to==="end"?{toStrand:Tt(F(p))}:{}}))}),{graph:{...t,nodes:l,edges:h,paths:void 0,pathVisits:void 0},runs:i}}function Io(t,n,o){let e={...t};for(let[s,r]of n){let c=t[s];if(!c?.length)continue;delete e[s];let a=st(c),i=a.at(-1),d=r.map(h=>Math.max(o(h),0)),l=d.reduce((h,f)=>h+f,0),u=0;r.forEach((h,f)=>{let x=l?d[f]/l*i:i/r.length,y=f===r.length-1?i:u+x;e[h]=Ht(c,a,u,y),u=y})}return e}function Lo(t,n,o){if(t.length===0)return[];let e=st(t),s=e.at(-1);return Ht(t,e,n*s,o*s)}function Wt(t){let n=st(t);return et(t,n,n.at(-1)/2)}function st(t){let n=[0];for(let o=1;o<t.length;o++)n.push(n[o-1]+Math.hypot(t[o].x-t[o-1].x,t[o].y-t[o-1].y));return n}function Rt(t,n){let o=0,e=t.length;for(;o<e;){let s=o+e>>1;t[s]<n?o=s+1:e=s}return o}function et(t,n,o){if(o<=0)return{...t[0]};let e=Rt(n,o);if(e>=n.length)return{...t.at(-1)};let s=n[e]-n[e-1],r=s>0?(o-n[e-1])/s:0,c=t[e-1],a=t[e];return{x:c.x+(a.x-c.x)*r,y:c.y+(a.y-c.y)*r}}function Ht(t,n,o,e){let s=[et(t,n,o)];for(let r=Rt(n,o);r<t.length&&n[r]<e;r++)n[r]>o&&s.push({...t[r]});return s.push(et(t,n,e)),s}function Co(t,n){let o=new Set(t.nodes.filter(i=>N(i)&&J(i,n)).map(i=>i.id)),e=t.paths??[];if(o.size===0||e.length===0)return t;let s=e.map(i=>{let d=-1,l=-1;return i.nodeIds.forEach((u,h)=>{o.has(u)&&(d<0&&(d=h),l=h)}),d<0?void 0:{first:d,last:l}});if(s.every((i,d)=>i?.first===0&&i.last===e[d].nodeIds.length-1))return t;let r=new Set,c=[],a=new Map;return e.forEach((i,d)=>{let l=s[d];if(l){let u=i.nodeIds.slice(l.first,l.last+1);for(let h of u)r.add(h);c.push({...i,nodeIds:u}),a.set(i.name,{first:l.first,nodeIds:u})}}),{...t,nodes:t.nodes.filter(i=>r.has(i.id)),edges:t.edges.filter(i=>r.has(i.from)&&r.has(i.to)),paths:c,pathVisits:t.pathVisits&&bn(t.pathVisits,e,s,new Map(t.nodes.map(i=>[i.id,i.name]))),anchorPaths:mt(t,a)}}function bn(t,n,o,e){let s=t.replay(),r=new pt;return n.forEach((c,a)=>{let i=t.pathIndex(R(c.name).name),d=o[a];c.nodeIds.forEach((l,u)=>{let h=e.get(l)??l,f=s(t.slot(h),i);f>=0&&d&&u>=d.first&&u<=d.last&&r.add(h,t.paths[i],t.samples[i],t.start[f],t.reversed[f]===1)})}),r.build()}function No(t,n,o){let e=t.nodes.map(s=>{if(!N(s))return s;let r=s.stable.start,c=r+s.length,[a,i]=J(s,n)?[Math.max(r,n.start),Math.min(c,n.end)]:c<=n.start?[Math.max(r,c-o),c]:[r,Math.min(c,r+o)];return a===r&&i===c?s:{...s,length:i-a,stable:{...s.stable,start:a},unclipped:{start:r,length:s.length}}});return e.some((s,r)=>s!==t.nodes[r])?{...t,nodes:e}:t}function $t(t){return t.nodes.some(n=>n.unclipped)?{...t,nodes:t.nodes.map(({unclipped:n,...o})=>n&&o.stable?{...o,length:n.length,stable:{...o.stable,start:n.start}}:o)}:t}var gn=1;function vn(t,n){return n.flatMap(o=>t[o]??[])}function Ft(t,n,o,e,s,r){let c=t[n.from],a=t[n.to];if(!(!c?.length||!a?.length))return s?Ct(c,a,s,r?G(n):void 0):tt(c,a,Xt(n,r),o,e?vn(t,e):[])}function wn(t){let n=dt(t.nodes.filter(N),o=>o.stable.refName);for(let o of n.values())o.sort((e,s)=>e.stable.start-s.stable.start);return n}function An(t,n,o){let e=[];if(t)for(let s=xt(t,n);s<t.length;s++){let r=t[s];if(r.stable.start>=o)break;r.stable.start+r.length<=o&&e.push(r.id)}return e}function _n(t,n,o,e){let{fromStrand:s,toStrand:r}=t;if(s===void 0||r===void 0)return!0;let c=s===(n.stable.strand??"+"),a=r===(o.stable.strand??"+");return e?c&&a:!c&&!a}function En(t,n,o,e){let s;for(let r of e(n))for(let c of e(o)){let a=r<=c,i=a?{start:r+n.length,end:c}:{start:c+o.length,end:r};_n(t,n,o,a)&&(!s||Math.abs(i.end-i.start)<Math.abs(s.end-s.start))&&(s=i)}return s}var In=.01;function Ln(t,n){let o=new Map;for(let[e,s]of t){let r=s.flatMap(c=>{let a=n(c);return a.slice(1).map((i,d)=>({at:a[d],copy:i-a[d]}))});r.length&&o.set(e,r.sort((c,a)=>c.at-a.at))}return o}function On(t,n,o){if(!t)return!1;let e=ht(t.length,r=>t[r].at<n),s=[t[e-1],t[e]].filter(r=>r!==void 0).sort((r,c)=>Math.abs(r.at-n)-Math.abs(c.at-n))[0];return s!==void 0&&Math.abs(s.at-n)<=s.copy&&Math.abs(o-s.copy)<=s.copy*In}function Yo(t){let n=$t(t),o=new Map(n.nodes.map(a=>[a.id,a])),e=wn(n),s=Mt(n),r=Ln(e,s),c=[];for(let a=0;a<n.edges.length;a++){let i=n.edges[a],d=o.get(i.from),l=o.get(i.to);if(!i.foldBridge&&d!==void 0&&l!==void 0&&N(d)&&N(l)&&d.stable.refName===l.stable.refName){let u=En(i,d,l,s),h=d.stable.refName,f=u?u.end-u.start:0;if(u&&f>=gn&&!On(r.get(h),u.start,f)){let{start:x,end:y}=u;c.push({edgeIndex:a,from:i.from,to:i.to,...i.fromStrand?{fromStrand:i.fromStrand}:{},...i.toStrand?{toStrand:i.toStrand}:{},refName:h,start:x,end:y,bp:f,bypassed:An(e.get(h),x,y)})}}}return c}function Sn(t,n){let o=new Map,e=c=>{let a=c;for(;o.has(a);)a=o.get(a);return a!==c&&o.set(c,a),a},s=(c,a)=>{let[i,d]=[e(c),e(a)];return i!==d&&o.set(i,d),i!==d},r=new Set(n.map(c=>c.edgeIndex));return t.edges.forEach((c,a)=>{r.has(a)||s(c.from,c.to)}),new Set(n.filter(c=>!s(c.from,c.to)).map(c=>c.edgeIndex))}var Yt=new WeakMap;function Fo(t,n,o=!0){let e=Yt.get(n);e||(e=new Map,Yt.set(n,e));let s=e.get(o);if(!s){let r=o?new Set:Sn(t,n);s={shown:n.filter(c=>!r.has(c.edgeIndex)),bypassed:new Map(n.map(c=>[c.edgeIndex,c.bypassed])),hidden:r},e.set(o,s)}return s}var Pn=26,Xn=4e4,Cn=8,Nn=8,kn=5.7,Bn=6,Tn=13,D=3,q=2;function U(t){return(t.length*kn+Bn+D)/2}var k=(Tn+D)/2,Wn=U("1 bp");function j(t,n,o){return{x0:n-t,x1:n+t,y0:o-k,y1:o+k}}function Uo(t,n){return{x0:6,x1:6+ot(t)+D,y0:n-8-D/2,y1:n+8+D/2}}function z(t,n,o){return o<n?t:Math.min(Math.max(t,n),o)}function Vt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function qt(t){let[n,o]=t>=999500?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${o}`}function Gt(t){return`${qt(t)} del`}function Rn(t,n,o,e){let s=t[0],r=t[t.length-1],c=(n.x-(s.x0+r.x1)/2)*o,a=(n.y-(s.y0+r.y1)/2)*e,i=Math.hypot(c,a);return i===0?{x:0,y:-1}:{x:c/i,y:a/i}}function Hn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function $n(t,n){let o=(t.x1-t.x0)/2,e=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:o/Math.abs(n.x),n.y===0?1/0:e/Math.abs(n.y))}function Yn(t,n){let o=1/0,e=1/0,s=-1/0,r=-1/0;for(let c of t)for(let a of n[c]??[])o=Math.min(o,a.x),s=Math.max(s,a.x),e=Math.min(e,a.y),r=Math.max(r,a.y);return o===1/0?void 0:{minX:o,minY:e,maxX:s,maxY:r}}var Fn=nt();function Gn(t,n){return Fn(t,[n],()=>Object.entries(t).filter(([o,e])=>e.length>0&&n.has(o)).sort(([o],[e])=>n.get(e)-n.get(o)))}var Dn=nt();function Vn(t,n,o,e,s,r){let{scaleX:c,scaleY:a}=o;return Dn(t,[n,s,r,c,a,e],()=>{let i=[];for(let d of[...n].sort((l,u)=>u.bp-l.bp)){let l=Ft(t,d,o,d.bypassed,s?.[d.edgeIndex],r),u=l?Ot(l):void 0;if(l&&u){let{minX:h,minY:f,maxX:x,maxY:y}=St(l);i.push({deletion:d,curves:l,apex:u,extent:Math.max((x-h)*c,(y-f)*a)})}}return i})}function qn({nodePositions:t,nodeLengths:n,deletions:o,deletionRoutes:e,stranded:s=!1,alleleDeletions:r,axis:c,translateX:a,translateY:i,width:d,height:l,version:u=0}){let{scaleX:h,scaleY:f}=c,x=[],y=[];for(let{deletion:m,curves:M,apex:v,extent:g}of Vn(t,o,c,u,e,s))if(g>=Pn){let w=Gt(m.bp),_=U(w),I=j(_,0,0),E=v.x*h+a,A=v.y*f+i;if(E<0||E>d||A<0||A>l)continue;let X=g>=_*2/q,O=Rn(M,v,h,f),L=Hn(I,O)+Nn,S=X?E:z(E+O.x*L,_,d-_),P=X?A:z(A+O.y*L,k,l-k),C=Math.hypot(S-E,P-A),T;if(C>0){let B={x:(S-E)/C,y:(P-A)/C},W=$n(I,B);T={arcX:E,arcY:A,labelX:S-B.x*W,labelY:P-B.y*W}}x.push({label:{key:`del:${m.edgeIndex}`,text:w,x:S,y:P,kind:"deletion",leader:T},box:j(_,S,P)})}let p=new Set,b=[...r??[]].sort((m,M)=>M.bp-m.bp);for(let m of b){let M=Yn(m.nodeIds,t);if(!M)continue;let v=Math.max(M.minX*h+a,0),g=Math.min(M.maxX*h+a,d),w=Math.max(M.minY*f+i,0),_=Math.min(M.maxY*f+i,l);if(g<v||_<w)continue;let I=Math.max(g-v,_-w),E=Gt(m.bp),A=U(E);if(I>=A*2/q){for(let L of m.nodeIds)p.add(L);let X=z((v+g)/2,A,d-A),O=z((w+_)/2,k,l-k);x.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:X,y:O,kind:"deletion"},box:j(A,X,O)})}}for(let[m,M]of Gn(t,n)){if(p.has(m))continue;let{x:v,y:g}=Wt(M),w=g*f+i;if(w+k<=0||w-k>=l)continue;let _=Z(M,h,f);if(_<Wn*2/q)continue;let I=qt(n.get(m)),E=U(I);if(_>=E*2/q){let A=v*h+a;y.push({label:{key:`node:${m}`,text:I,x:A,y:w,kind:"node"},box:j(E,A,w)})}}return{deletions:x,nodes:y}}function jn(t,n){return Math.max(Cn,Math.floor(t*n/Xn))}function Dt(t,n,o=1/0){let e=[];for(let{label:s,box:r}of t){if(e.length>=o)break;n(r)&&e.push(s)}return e}function Jo({reserved:t,take:n,...o}){n??=Bt(o,t);let{deletions:e,nodes:s}=qn(o);return[...Dt(e,n),...Dt(s,n,jn(o.width,o.height))]}function ne(t){let n=0;for(let o=0;o<t.length;o++)n=t.charCodeAt(o)+((n<<5)-n);return Math.abs(n%360)}function zn(t,n){return t*360/n}var Un=.7,Jn=.5,Kn=16;function oe(t){return t>0&&t<=Kn}function Qn(t,n){return`hsl(${zn(t,n)}, ${Un*100}%, ${Jn*100}%)`}function ee(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function Zn(t){let n=R(t).name.split("#"),o=n.join("#");if(n.length>=3&&yt(n[0])){let e=n.slice(2).join("#");return[e,e,o]}return[n[0],n.slice(0,2).join("#"),o]}function to(t,n){let{start:o}=R(t);return n.map(e=>`${e} @${Vt(o)}`)}function se(t,n){let o=new Map;t.forEach((l,u)=>{o.has(l.name)||o.set(l.name,u)});let e=[...o].map(([l,u])=>({name:l,i:u})),s=e.map(l=>Zn(l.name)),r=l=>e.map((u,h)=>s[h][l]),c=l=>e.map((u,h)=>to(u.name,s[h])[l]),a=[r(0),r(1),c(0),r(2),c(1),c(2)],d=a.find(l=>new Set(l).size===e.length)??a.at(-1);return e.map(({name:l,i:u},h)=>({name:l,label:d[h],color:n?.[u]??Qn(u,t.length)}))}function re(t){let n=new Map;return new Map([...t].sort((o,e)=>o.label.localeCompare(e.label)).map(o=>{let e=(n.get(o.label)??0)+1;return n.set(o.label,e),[o.name,e>1?`${o.label} (${e})`:o.label]}))}var ae=[{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:"uniform",label:"Uniform",description:"Every node the same thickness."}],no=.3,jt=3;function oo(t){let n=0,o=0;for(let e of t.nodes)n+=e.depth*e.length,o+=e.length;return o>0?n/o:0}function eo(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(jt,Math.max(no,Math.sqrt(t.depth/n)))}function so(t,n,o,e){return n*(o==="depth"?eo(t,e):1)}function ro(t,n){return t*(n==="depth"?jt:1)}var co=4;function ao(t,n){return Math.max(t/n,co)}function ie(t,n,o,e,s=0){let r=t?oo(t):0,c=a=>s>0?ao(a,s)*s/2:a/2;return{maxHalfWidthPx:c(ro(o,e)),halfWidthPx:a=>{let i=n?.get(a);return c(i?so(i,o,e,r):o)}}}var ue=[{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."}],zt=.5,io=4;function le(t){let n=0;for(let o of t.edges)n=Math.max(n,o.pathIds?.length??0);return n}function de(t,n,o){return o==="uniform"||n===0?1:zt+(io-zt)*Math.sqrt(t/n)}export{bt as a,lo as b,St as c,ho as d,xo as e,yo as f,po as g,F as h,G as i,Pt as j,mo as k,Z as l,nt as m,Nt as n,pn as o,V as p,ot as q,Bt as r,go as s,Eo as t,Io as u,Lo as v,Co as w,No as x,Ft as y,Yo as z,Fo as A,Uo as B,Vt as C,qt as D,Jo as E,ne as F,zn as G,Un as H,Jn as I,Kn as J,oe as K,Qn as L,ee as M,se as N,re as O,ae as P,oo as Q,so as R,ao as S,ie as T,ue as U,le as V,de as W};
|
|
2
|
+
//# sourceMappingURL=chunk-GRLNDNX4.js.map
|