jbrowse-plugin-graphgenomeviewer 7.3.1 → 7.4.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-NYI2YVNG.js → GbzBaseSyntenyAdapter-FZWSXPAE.js} +2 -2
- package/dist/chunks/GbzBaseSyntenyAdapter-FZWSXPAE.js.map +7 -0
- package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js → GraphGenomeView-52OPGZER.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js → GraphTrackSettingsDialog-JHIP2F5N.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js → HighlightColorDialog-S2WPOSDF.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js → LinearGraphDisplay-EF2GE7X7.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js → MinigraphBubbleAdapter-XC75BCG3.js} +2 -2
- package/dist/chunks/RgfaTabixAdapter-56X2U424.js +2 -0
- package/dist/chunks/RgfaTabixAdapter-56X2U424.js.map +7 -0
- package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js → WalkTabixSyntenyAdapter-2SCAD6IN.js} +2 -2
- package/dist/chunks/chunk-2BTNRN57.js +2 -0
- package/dist/chunks/chunk-2BTNRN57.js.map +7 -0
- package/dist/chunks/{chunk-RW775LQN.js → chunk-2Q4D5RHL.js} +2 -2
- package/dist/chunks/{chunk-RW775LQN.js.map → chunk-2Q4D5RHL.js.map} +2 -2
- package/dist/chunks/{chunk-6MUBJVBG.js → chunk-4AAW5P6N.js} +2 -2
- package/dist/chunks/{chunk-6MUBJVBG.js.map → chunk-4AAW5P6N.js.map} +4 -4
- package/dist/chunks/{chunk-DBPEUVUC.js → chunk-4XM5OBD5.js} +2 -2
- package/dist/chunks/{chunk-DBPEUVUC.js.map → chunk-4XM5OBD5.js.map} +2 -2
- package/dist/chunks/chunk-ADZBAET3.js +3 -0
- package/dist/chunks/chunk-ADZBAET3.js.map +7 -0
- package/dist/chunks/chunk-D5PRXUSS.js +2 -0
- package/dist/chunks/chunk-D5PRXUSS.js.map +7 -0
- package/dist/chunks/{chunk-DUR437TH.js → chunk-JXOLZ5IZ.js} +2 -2
- package/dist/chunks/{chunk-DUR437TH.js.map → chunk-JXOLZ5IZ.js.map} +1 -1
- package/dist/chunks/chunk-KPP5H27W.js +2 -0
- package/dist/chunks/chunk-KPP5H27W.js.map +7 -0
- package/dist/chunks/{chunk-FIRQAKMX.js → chunk-LTN6XZR5.js} +1 -1
- package/dist/chunks/{chunk-FIRQAKMX.js.map → chunk-LTN6XZR5.js.map} +1 -1
- package/dist/chunks/chunk-MLVBPMBU.js +2 -0
- package/dist/chunks/chunk-MLVBPMBU.js.map +7 -0
- package/dist/chunks/chunk-OUHKJSKZ.js +3 -0
- package/dist/chunks/chunk-OUHKJSKZ.js.map +7 -0
- package/dist/chunks/{chunk-WUSKVEA6.js → chunk-PLTIGGGS.js} +2 -2
- package/dist/chunks/{chunk-WUSKVEA6.js.map → chunk-PLTIGGGS.js.map} +2 -2
- package/dist/chunks/chunk-QASFRHPG.js +2 -0
- package/dist/chunks/chunk-SI64QXFH.js +4 -0
- package/dist/chunks/{chunk-VQ77X5QU.js.map → chunk-SI64QXFH.js.map} +4 -4
- package/dist/chunks/{chunk-44CJ2N3N.js → chunk-UW7INEQF.js} +2 -2
- package/dist/chunks/{chunk-44CJ2N3N.js.map → chunk-UW7INEQF.js.map} +4 -4
- package/dist/chunks/chunk-VIVPTP5Z.js +2 -0
- package/dist/chunks/{chunk-7HWHWPRW.js.map → chunk-VIVPTP5Z.js.map} +3 -3
- package/dist/chunks/{chunk-RFDSEB2X.js → chunk-XLSVRKFJ.js} +4 -4
- package/dist/chunks/chunk-XLSVRKFJ.js.map +7 -0
- package/dist/chunks/chunk-XT4U7I3D.js +3 -0
- package/dist/chunks/chunk-XT4U7I3D.js.map +7 -0
- package/dist/chunks/chunk-YBZA7LPQ.js +2 -0
- package/dist/chunks/chunk-YBZA7LPQ.js.map +7 -0
- package/dist/chunks/{chunk-YXVEGNFQ.js → chunk-Z4YNEFPC.js} +2 -2
- package/dist/chunks/renderSvg-IXWB7R54.js +2 -0
- package/dist/chunks/renderSvg-IXWB7R54.js.map +7 -0
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -4
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
- package/package.json +3 -3
- package/src/GbzBaseSyntenyAdapter/GbzBaseSyntenyAdapter.test.ts +10 -4
- package/src/GbzBaseSyntenyAdapter/companion.test.ts +4 -2
- package/src/GetSubgraph.ts +2 -0
- package/src/GraphGenomeView/components/ElTree.tsx +1 -1
- package/src/GraphGenomeView/components/FacetPanels.tsx +4 -1
- package/src/GraphGenomeView/components/PaneContextMenu.tsx +14 -0
- package/src/GraphGenomeView/components/PaneSvg.tsx +2 -1
- package/src/GraphGenomeView/legendSections.ts +3 -3
- package/src/GraphGenomeView/model.test.ts +19 -21
- package/src/GraphGenomeView/model.ts +3 -0
- package/src/GraphGenomeView/pane/fitViews.ts +2 -2
- package/src/GraphGenomeView/pane/paneBase.ts +2 -0
- package/src/GraphGenomeView/pane/renderingActions.ts +9 -0
- package/src/GraphGenomeView/repeats/walkCalls.test.ts +2 -2
- package/src/GraphGenomeView/subgraphLoad.test.ts +18 -2
- package/src/GraphGenomeView/tubeMapPanels.test.ts +4 -2
- package/src/GraphGenomeView/tubeMapPanels.ts +2 -2
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +3 -1
- package/src/RgfaTabixAdapter/configSchema.ts +1 -1
- package/src/RgfaTabixAdapter/test_data/walks4_follow.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_header.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_inversion.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_lanepairs.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_maxnode.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_rejoin.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/walks4_twopart.GRCh38.walks.bed.gz +0 -0
- package/src/RgfaTabixAdapter/walkFiles.test.ts +15 -3
- package/src/RgfaTabixAdapter/walkReader.ts +9 -2
- package/src/WalkTabixSyntenyAdapter/configSchema.ts +1 -1
- package/src/WalkTabixSyntenyAdapter/gbzParity.test.ts +2 -3
- package/src/panSNTabix.ts +3 -3
- package/src/version.ts +1 -1
- package/dist/chunks/GbzBaseSyntenyAdapter-NYI2YVNG.js.map +0 -7
- package/dist/chunks/RgfaTabixAdapter-3NQC5QPT.js +0 -2
- package/dist/chunks/RgfaTabixAdapter-3NQC5QPT.js.map +0 -7
- package/dist/chunks/chunk-2M4XYSLG.js +0 -2
- package/dist/chunks/chunk-2M4XYSLG.js.map +0 -7
- package/dist/chunks/chunk-6KUHGRHU.js +0 -2
- package/dist/chunks/chunk-6KUHGRHU.js.map +0 -7
- package/dist/chunks/chunk-7HWHWPRW.js +0 -2
- package/dist/chunks/chunk-BKBH3WGW.js +0 -3
- package/dist/chunks/chunk-BKBH3WGW.js.map +0 -7
- package/dist/chunks/chunk-BXRTG7FU.js +0 -2
- package/dist/chunks/chunk-BXRTG7FU.js.map +0 -7
- package/dist/chunks/chunk-JCAZTNYG.js +0 -2
- package/dist/chunks/chunk-N74HGPAW.js +0 -3
- package/dist/chunks/chunk-N74HGPAW.js.map +0 -7
- package/dist/chunks/chunk-PEDWEPNK.js +0 -2
- package/dist/chunks/chunk-PEDWEPNK.js.map +0 -7
- package/dist/chunks/chunk-PYQG3JHP.js +0 -3
- package/dist/chunks/chunk-PYQG3JHP.js.map +0 -7
- package/dist/chunks/chunk-QTOA4RB7.js +0 -2
- package/dist/chunks/chunk-QTOA4RB7.js.map +0 -7
- package/dist/chunks/chunk-RFDSEB2X.js.map +0 -7
- package/dist/chunks/chunk-VQ77X5QU.js +0 -4
- package/dist/chunks/renderSvg-WD6YDV2I.js +0 -2
- package/dist/chunks/renderSvg-WD6YDV2I.js.map +0 -7
- /package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js.map → GraphGenomeView-52OPGZER.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js.map → GraphTrackSettingsDialog-JHIP2F5N.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js.map → HighlightColorDialog-S2WPOSDF.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js.map → LinearGraphDisplay-EF2GE7X7.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js.map → MinigraphBubbleAdapter-XC75BCG3.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js.map → WalkTabixSyntenyAdapter-2SCAD6IN.js.map} +0 -0
- /package/dist/chunks/{chunk-JCAZTNYG.js.map → chunk-QASFRHPG.js.map} +0 -0
- /package/dist/chunks/{chunk-YXVEGNFQ.js.map → chunk-Z4YNEFPC.js.map} +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as I,b as L,f as S,h as w}from"./chunk-YBZA7LPQ.js";import{p as T}from"./chunk-4AAW5P6N.js";var O=62,Z=60,G=9,k=48,z=57,_=/^(?:LN:i|SN:Z|SO:i|SR:i):/,q=/^[PEOUFG]\t/,C=e=>e.endsWith("\r")?e.slice(0,-1):e;function P(){return{nodes:new T(new Int32Array(65536)),reversed:new T(new Uint8Array(65536))}}var R=class{constructor(){this.names=[],this.byName=new Map,this.byNumber=new Map}has(e){return this.byName.has(e)}add(e){let s=this.names.length;this.byName.set(e,s),this.names.push(e);let t=+e;return Number.isSafeInteger(t)&&String(t)===e&&this.byNumber.set(t,s),s}of(e){return this.byName.get(e)??this.add(e)}ofNumber(e){return this.byNumber.get(e)}};function U(e){let[,s,t="*",...r]=e.split(" ");if(!s||/^\d+$/.test(t))return;let i=t==="*"?0:t.length,n,f,o;for(let c of r){if(!_.test(c))return;let a=c.slice(5),p=c.slice(0,2);p==="LN"?i=+a:p==="SN"?n=a:p==="SO"?f=+a:o=+a}return{name:s,length:i,stable:n!==void 0&&f!==void 0&&o!==void 0?{refName:n,start:f,rank:o}:void 0}}function $(e,s,t,r){let i=0,n=-1,f=0,o=!0,d=a=>{if(n>=0&&a>n){let p=o&&a-n<16&&(a-n===1||e.charCodeAt(n)!==k)?t.ofNumber(f):void 0;r.nodes.push(p??t.of(e.slice(n,a))),r.reversed.push(i)}},c=s;for(;c<e.length;c++){let a=e.charCodeAt(c);if(a===O||a===Z)d(c),i=a===Z?1:0,n=c+1,f=0,o=!0;else{if(a===G)break;o&&a>=k&&a<=z?f=f*10+a-k:o=!1}}return d(c),c}function x(e){let s=[],t=0;for(;s.length<6;){let d=e.indexOf(" ",t);if(d===-1)return;s.push(e.slice(t,d)),t=d+1}let[,r,i,n,f,o]=s;return r&&i&&n&&f&&o&&t<e.length?{sample:r,haplotype:i,contig:n,start:f,end:o,body:t}:void 0}function K(e){let s=e.split(`
|
|
2
|
+
`),t=new R,r=[],i=[],n=[],f=[],o=[],d=new Map;for(let u of s){if(q.test(u))return;if(u.startsWith("S ")){let l=U(C(u));if(!l||t.has(l.name))return;t.add(l.name),r.push(l.length);let h=-1;l.stable&&(h=d.get(l.stable.refName)??o.length,h===o.length&&(o.push(l.stable.refName),d.set(l.stable.refName,h))),i.push(h),n.push(l.stable?.start??0),f.push(l.stable?.rank??0)}}let c=[],a=[],p=[],v=[],E=[],W=[],y=[0],g=P(),A=new w,N=new w;for(let u of s)if(u.startsWith("L ")){let[,l,h,b,m]=C(u).split(" ");l&&b&&m&&(c.push(t.of(l)),a.push(t.of(b)),p.push((h==="-"?1:0)|(m==="-"?2:0)))}else if(u.startsWith("W ")){let l=C(u),h=x(l);if(h){v.push(`${h.sample}#${h.haplotype}#${h.contig}`),E.push(h.start==="*"?0:+h.start),W.push(h.end==="*"?-1:+h.end);let b=$(l,h.body,t,g),m=F(l,b);if(m===void 0||(m.before&&A.push(m.before),m.after&&N.push(m.after),g.nodes.length===y.at(-1)))return;y.push(g.nodes.length)}}if(![A.kinds.length,N.kinds.length].some(u=>u>0&&u<v.length))return{nodes:{names:t.names,lengths:Int32Array.from(r),refs:Int32Array.from(i),starts:Float64Array.from(n),ranks:Int32Array.from(f),refNames:o},links:{from:Int32Array.from(c),to:Int32Array.from(a),strands:Uint8Array.from(p)},walks:{names:v,starts:Float64Array.from(E),ends:Float64Array.from(W),offsets:Int32Array.from(y),steps:g.nodes.data.slice(0,g.nodes.length),reversed:g.reversed.data.slice(0,g.reversed.length),...B(v.length,A,N)}}}function F(e,s){let t={};for(let r of s<e.length?e.slice(s+1).split(" "):[]){let i=r.slice(5);if(r.startsWith(`${I}:Z:`)){if(t.before=S(i),!t.before)return}else if(r.startsWith(`${L}:Z:`)&&(t.after=S(i),!t.after))return}return t}function B(e,s,t){return{...s.kinds.length===e&&e>0?{before:s.table()}:{},...t.kinds.length===e&&e>0?{after:t.table()}:{}}}var D=/([><])([^><]+)/g;function M(e){if(!e.startsWith(">")&&!e.startsWith("<"))return;let s=[];for(let[,t,r]of e.matchAll(D))s.push({name:r,strand:t===">"?"+":"-"});return s}function Q(e){let s=e.trimEnd(),t=s.split(" ");if(t.length<12||s.startsWith("#"))return;let r=M(t[5]);if(!r)return;let i,n=!1;for(let f=12;f<t.length;f++){let o=t[f];o.startsWith("cs:Z:")?i=o.slice(5):o==="tp:A:S"&&(n=!0)}return{name:t[0],queryLength:+t[1],queryStart:+t[2],queryEnd:+t[3],strand:t[4]==="-"?"-":"+",path:r,pathLength:+t[6],pathStart:+t[7],pathEnd:+t[8],matches:+t[9],blockLength:+t[10],mappingQuality:+t[11],secondary:n,...i===void 0?{}:{cs:i}}}function Y(e){let s=[];for(let t of e.split(`
|
|
3
|
+
`)){let r=Q(t);r&&s.push(r)}return s}var j=/:(\d+)|=([A-Za-z]+)|\*[a-zA-Z]([a-zA-Z])|\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\d+)[a-z]{2}/g;function tt(e){let s=[];for(let t of e.matchAll(j))t[1]!==void 0?s.push({op:"match",length:+t[1]}):t[2]!==void 0?s.push({op:"match",length:t[2].length}):t[3]!==void 0?s.push({op:"substitution",seq:t[3].toUpperCase()}):t[4]!==void 0?s.push({op:"insertion",seq:t[4].toUpperCase()}):t[5]!==void 0?s.push({op:"deletion",length:t[5].length}):t[6]!==void 0&&s.push({op:"match",length:+t[6]});return s}export{K as a,Q as b,Y as c,tt as d};
|
|
4
|
+
//# sourceMappingURL=chunk-SI64QXFH.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.
|
|
4
|
-
"sourcesContent": ["import {\n END_STOP_TAG,\n START_STOP_TAG,\n StopColumns,\n parseStopTag\n} from \"./chunk-
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["GT", "LT", "TAB", "ZERO", "NINE", "TABLE_TAG", "UNTABLED_RECORD", "trimCR", "line", "stepColumns", "Column", "SegmentIndex", "name", "i", "n", "readSegment", "sequence", "tags", "length", "refName", "start", "rank", "tag", "value", "key", "readWalkBody", "from", "segments", "steps", "reversed", "decimal", "finish", "end", "node", "ch", "walkFields", "fields", "at", "tab", "sample", "haplotype", "contig", "gfaTables", "text", "lines", "lengths", "refs", "starts", "ranks", "refNames", "refIndex", "raw", "s", "ref", "to", "strands", "names", "walkStarts", "walkEnds", "offsets", "before", "StopColumns", "after", "source", "strand1", "target", "strand2", "w", "walkTags", "stopColumns", "out", "START_STOP_TAG", "parseStopTag", "END_STOP_TAG", "walks", "STEP", "parseGafPath", "column", "steps", "arrow", "name", "parseGafLine", "line", "columns", "path", "cs", "secondary", "i", "tag", "parseGaf", "
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VSSIYQYF.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.7.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5OJZV6YT.js"],
|
|
4
|
+
"sourcesContent": ["import {\n END_STOP_TAG,\n START_STOP_TAG,\n StopColumns,\n parseStopTag\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n Column\n} from \"./chunk-ZPZ7GNBT.js\";\n\n// src/gfa/gfaTables.ts\nvar GT = 62;\nvar LT = 60;\nvar TAB = 9;\nvar ZERO = 48;\nvar NINE = 57;\nvar TABLE_TAG = /^(?:LN:i|SN:Z|SO:i|SR:i):/;\nvar UNTABLED_RECORD = /^[PEOUFG]\\t/;\nvar trimCR = (line) => line.endsWith(\"\\r\") ? line.slice(0, -1) : line;\nfunction stepColumns() {\n return {\n nodes: new Column(new Int32Array(1 << 16)),\n reversed: new Column(new Uint8Array(1 << 16))\n };\n}\nvar SegmentIndex = class {\n constructor() {\n this.names = [];\n this.byName = /* @__PURE__ */ new Map();\n // ids that are plain decimal, so a walk step finds its segment without\n // slicing a string out of the body\n this.byNumber = /* @__PURE__ */ new Map();\n }\n has(name) {\n return this.byName.has(name);\n }\n add(name) {\n const i = this.names.length;\n this.byName.set(name, i);\n this.names.push(name);\n const n = +name;\n if (Number.isSafeInteger(n) && String(n) === name) {\n this.byNumber.set(n, i);\n }\n return i;\n }\n of(name) {\n return this.byName.get(name) ?? this.add(name);\n }\n ofNumber(n) {\n return this.byNumber.get(n);\n }\n};\nfunction readSegment(line) {\n const [, name, sequence = \"*\", ...tags] = line.split(\"\t\");\n if (!name || /^\\d+$/.test(sequence)) {\n return void 0;\n }\n let length = sequence === \"*\" ? 0 : sequence.length;\n let refName;\n let start;\n let rank;\n for (const tag of tags) {\n if (!TABLE_TAG.test(tag)) {\n return void 0;\n }\n const value = tag.slice(5);\n const key = tag.slice(0, 2);\n if (key === \"LN\") {\n length = +value;\n } else if (key === \"SN\") {\n refName = value;\n } else if (key === \"SO\") {\n start = +value;\n } else {\n rank = +value;\n }\n }\n const stable = refName !== void 0 && start !== void 0 && rank !== void 0 ? { refName, start, rank } : void 0;\n return { name, length, stable };\n}\nfunction readWalkBody(line, from, segments, steps) {\n let reversed = 0;\n let start = -1;\n let value = 0;\n let decimal = true;\n const finish = (end) => {\n if (start >= 0 && end > start) {\n const node = decimal && end - start < 16 && (end - start === 1 || line.charCodeAt(start) !== ZERO) ? segments.ofNumber(value) : void 0;\n steps.nodes.push(node ?? segments.of(line.slice(start, end)));\n steps.reversed.push(reversed);\n }\n };\n let i = from;\n for (; i < line.length; i++) {\n const ch = line.charCodeAt(i);\n if (ch === GT || ch === LT) {\n finish(i);\n reversed = ch === LT ? 1 : 0;\n start = i + 1;\n value = 0;\n decimal = true;\n } else if (ch === TAB) {\n break;\n } else if (decimal && ch >= ZERO && ch <= NINE) {\n value = value * 10 + ch - ZERO;\n } else {\n decimal = false;\n }\n }\n finish(i);\n return i;\n}\nfunction walkFields(line) {\n const fields = [];\n let at = 0;\n while (fields.length < 6) {\n const tab = line.indexOf(\"\t\", at);\n if (tab === -1) {\n return void 0;\n }\n fields.push(line.slice(at, tab));\n at = tab + 1;\n }\n const [, sample, haplotype, contig, start, end] = fields;\n return sample && haplotype && contig && start && end && at < line.length ? { sample, haplotype, contig, start, end, body: at } : void 0;\n}\nfunction gfaTables(text) {\n const lines = text.split(\"\\n\");\n const segments = new SegmentIndex();\n const lengths = [];\n const refs = [];\n const starts = [];\n const ranks = [];\n const refNames = [];\n const refIndex = /* @__PURE__ */ new Map();\n for (const raw of lines) {\n if (UNTABLED_RECORD.test(raw)) {\n return void 0;\n }\n if (raw.startsWith(\"S\t\")) {\n const s = readSegment(trimCR(raw));\n if (!s || segments.has(s.name)) {\n return void 0;\n }\n segments.add(s.name);\n lengths.push(s.length);\n let ref = -1;\n if (s.stable) {\n ref = refIndex.get(s.stable.refName) ?? refNames.length;\n if (ref === refNames.length) {\n refNames.push(s.stable.refName);\n refIndex.set(s.stable.refName, ref);\n }\n }\n refs.push(ref);\n starts.push(s.stable?.start ?? 0);\n ranks.push(s.stable?.rank ?? 0);\n }\n }\n const from = [];\n const to = [];\n const strands = [];\n const names = [];\n const walkStarts = [];\n const walkEnds = [];\n const offsets = [0];\n const steps = stepColumns();\n const before = new StopColumns();\n const after = new StopColumns();\n for (const raw of lines) {\n if (raw.startsWith(\"L\t\")) {\n const [, source, strand1, target, strand2] = trimCR(raw).split(\"\t\");\n if (source && target && strand2) {\n from.push(segments.of(source));\n to.push(segments.of(target));\n strands.push((strand1 === \"-\" ? 1 : 0) | (strand2 === \"-\" ? 2 : 0));\n }\n } else if (raw.startsWith(\"W\t\")) {\n const line = trimCR(raw);\n const w = walkFields(line);\n if (w) {\n names.push(`${w.sample}#${w.haplotype}#${w.contig}`);\n walkStarts.push(w.start === \"*\" ? 0 : +w.start);\n walkEnds.push(w.end === \"*\" ? -1 : +w.end);\n const end = readWalkBody(line, w.body, segments, steps);\n const tags = walkTags(line, end);\n if (tags === void 0) {\n return void 0;\n }\n if (tags.before) {\n before.push(tags.before);\n }\n if (tags.after) {\n after.push(tags.after);\n }\n if (steps.nodes.length === offsets.at(-1)) {\n return void 0;\n }\n offsets.push(steps.nodes.length);\n }\n }\n }\n if ([before.kinds.length, after.kinds.length].some(\n (n) => n > 0 && n < names.length\n )) {\n return void 0;\n }\n return {\n nodes: {\n names: segments.names,\n lengths: Int32Array.from(lengths),\n refs: Int32Array.from(refs),\n starts: Float64Array.from(starts),\n ranks: Int32Array.from(ranks),\n refNames\n },\n links: {\n from: Int32Array.from(from),\n to: Int32Array.from(to),\n strands: Uint8Array.from(strands)\n },\n walks: {\n names,\n starts: Float64Array.from(walkStarts),\n ends: Float64Array.from(walkEnds),\n offsets: Int32Array.from(offsets),\n steps: steps.nodes.data.slice(0, steps.nodes.length),\n reversed: steps.reversed.data.slice(0, steps.reversed.length),\n ...stopColumns(names.length, before, after)\n }\n };\n}\nfunction walkTags(line, from) {\n const out = {};\n for (const tag of from < line.length ? line.slice(from + 1).split(\"\t\") : []) {\n const value = tag.slice(5);\n if (tag.startsWith(`${START_STOP_TAG}:Z:`)) {\n out.before = parseStopTag(value);\n if (!out.before) {\n return void 0;\n }\n } else if (tag.startsWith(`${END_STOP_TAG}:Z:`)) {\n out.after = parseStopTag(value);\n if (!out.after) {\n return void 0;\n }\n }\n }\n return out;\n}\nfunction stopColumns(walks, before, after) {\n return {\n ...before.kinds.length === walks && walks > 0 ? { before: before.table() } : {},\n ...after.kinds.length === walks && walks > 0 ? { after: after.table() } : {}\n };\n}\n\nexport {\n gfaTables\n};\n", "// src/gaf/parseGaf.ts\nvar STEP = /([><])([^><]+)/g;\nfunction parseGafPath(column) {\n if (!column.startsWith(\">\") && !column.startsWith(\"<\")) {\n return void 0;\n }\n const steps = [];\n for (const [, arrow, name] of column.matchAll(STEP)) {\n steps.push({ name, strand: arrow === \">\" ? \"+\" : \"-\" });\n }\n return steps;\n}\nfunction parseGafLine(text) {\n const line = text.trimEnd();\n const columns = line.split(\"\t\");\n if (columns.length < 12 || line.startsWith(\"#\")) {\n return void 0;\n }\n const path = parseGafPath(columns[5]);\n if (!path) {\n return void 0;\n }\n let cs;\n let secondary = false;\n for (let i = 12; i < columns.length; i++) {\n const tag = columns[i];\n if (tag.startsWith(\"cs:Z:\")) {\n cs = tag.slice(5);\n } else if (tag === \"tp:A:S\") {\n secondary = true;\n }\n }\n return {\n name: columns[0],\n queryLength: +columns[1],\n queryStart: +columns[2],\n queryEnd: +columns[3],\n strand: columns[4] === \"-\" ? \"-\" : \"+\",\n path,\n pathLength: +columns[6],\n pathStart: +columns[7],\n pathEnd: +columns[8],\n matches: +columns[9],\n blockLength: +columns[10],\n mappingQuality: +columns[11],\n secondary,\n ...cs === void 0 ? {} : { cs }\n };\n}\nfunction parseGaf(text) {\n const records = [];\n for (const line of text.split(\"\\n\")) {\n const record = parseGafLine(line);\n if (record) {\n records.push(record);\n }\n }\n return records;\n}\nvar CS_OP = /:(\\d+)|=([A-Za-z]+)|\\*[a-zA-Z]([a-zA-Z])|\\+([A-Za-z]+)|-([A-Za-z]+)|~[a-z]{2}(\\d+)[a-z]{2}/g;\nfunction parseCs(cs) {\n const ops = [];\n for (const m of cs.matchAll(CS_OP)) {\n if (m[1] !== void 0) {\n ops.push({ op: \"match\", length: +m[1] });\n } else if (m[2] !== void 0) {\n ops.push({ op: \"match\", length: m[2].length });\n } else if (m[3] !== void 0) {\n ops.push({ op: \"substitution\", seq: m[3].toUpperCase() });\n } else if (m[4] !== void 0) {\n ops.push({ op: \"insertion\", seq: m[4].toUpperCase() });\n } else if (m[5] !== void 0) {\n ops.push({ op: \"deletion\", length: m[5].length });\n } else if (m[6] !== void 0) {\n ops.push({ op: \"match\", length: +m[6] });\n }\n }\n return ops;\n}\n\nexport {\n parseGafPath,\n parseGafLine,\n parseGaf,\n parseCs\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["GT", "LT", "TAB", "ZERO", "NINE", "TABLE_TAG", "UNTABLED_RECORD", "trimCR", "line", "stepColumns", "Column", "SegmentIndex", "name", "i", "n", "readSegment", "sequence", "tags", "length", "refName", "start", "rank", "tag", "value", "key", "readWalkBody", "from", "segments", "steps", "reversed", "decimal", "finish", "end", "node", "ch", "walkFields", "fields", "at", "tab", "sample", "haplotype", "contig", "gfaTables", "text", "lines", "lengths", "refs", "starts", "ranks", "refNames", "refIndex", "raw", "s", "ref", "to", "strands", "names", "walkStarts", "walkEnds", "offsets", "before", "StopColumns", "after", "source", "strand1", "target", "strand2", "w", "walkTags", "stopColumns", "out", "START_STOP_TAG", "parseStopTag", "END_STOP_TAG", "walks", "STEP", "parseGafPath", "column", "steps", "arrow", "name", "parseGafLine", "text", "line", "columns", "path", "cs", "secondary", "i", "tag", "parseGaf", "records", "record", "CS_OP", "parseCs", "ops", "m"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var tt;function ut(){return tt??(tt=import("./bandage-layout-UZEOCKMS.js").then(o=>o.default()).catch(o=>{throw tt=void 0,o})),tt}async function dt(o){return(await ut()).computeLayout(o.graph,o.options)}var Bt="\0deletion:";var kt=25*Math.PI/180,Pt=.25,St=150,nn=[0,-.35,.35,-.7,.7,-1.05,1.05,-1.4,1.4],pt=[0,1];function _t(o){return o?0:1}function lt(o,t){let n=t.x-o.x,e=t.y-o.y,s=Math.hypot(n,e)||1;return{x:n/s,y:e/s}}function gt(o,t,n){return{x:o.x+(t.x-o.x)*n,y:o.y+(t.y-o.y)*n}}function Ut(o){let t=0,n=0;for(let e of o)t+=e.x,n+=e.y;return{x:t/o.length,y:n/o.length}}function Gt(o){let t=new Float64Array(o.length);for(let n=1;n<o.length;n++)t[n]=t[n-1]+Math.hypot(o[n].x-o[n-1].x,o[n].y-o[n-1].y);return t}function Dt(o){var t;return(t=Gt(o)[o.length-1])!==null&&t!==void 0?t:0}var ct=new Map;function en(o){let t=ct.get(o);if(t!==void 0)return t;let n=on(o);return ct.size>1e4&&ct.clear(),ct.set(o,n),n}function on(o){let t=1e-6,n=2*Math.PI-1e-6;for(let e=0;e<60;e++){let s=(t+n)/2;s/(2*Math.sin(s/2))<o?t=s:n=s}return(t+n)/2}function sn(o,t){if(o<1e-9)return Math.PI*t;let n=(o*o/4+t*t)/(2*t),e=2*Math.asin(Math.min(1,o/(2*n)));return n*(t>n?2*Math.PI-e:e)}function mt(o,t,n,e){let s=t-2*n,i=o<1e-9?2*Math.PI:en(s/o),r=s/i,l=Math.cos(i/2),d=o/2,a=e+n-r*l;return{at:c=>{if(c<=n)return{u:0,v:e+c};if(c>=t-n)return{u:o,v:e+t-c};let f=(c-n)/r-i/2;return{u:d+r*Math.sin(f),v:a+r*Math.cos(f)}},apex:e+n+r*(1-l),length:t}}function It(o,t,n){if(!n)return o;let e=Math.cos(n),s=Math.sin(n);return{...o,at:i=>{let{u:r,v:l}=o.at(i),d=r-t/2;return{u:t/2+d*e-l*s,v:d*s+l*e}}}}function rn(o){for(let t=0;t<=32;t++)if(o.at(o.length*t/32).v<-1e-6)return!0;return!1}function Ot(o,t,n,e,s){return{at:i=>({u:o+n*i,v:t+e*i}),apex:t+Math.max(0,e)*s,length:s}}var ot=class{constructor(t,n,e=!1){var s;this.pts=t,this.normals=n,this.straight=e,this.arc=Gt(t),this.total=(s=this.arc[t.length-1])!==null&&s!==void 0?s:0}segment(t){let{arc:n}=this,e=1,s=n.length-1;for(;e<s;){let i=e+s>>1;n[i]<t?e=i+1:s=i}return e}fraction(t,n){let e=this.arc[t]-this.arc[t-1];return e>0?(n-this.arc[t-1])/e:0}pointAt(t){let{pts:n}=this,e=n.length-1;if(e===0)return{...n[0]};if(t<=0){let i=lt(n[0],n[1]);return{x:n[0].x+i.x*t,y:n[0].y+i.y*t}}if(t>=this.total){let i=lt(n[e-1],n[e]),r=t-this.total;return{x:n[e].x+i.x*r,y:n[e].y+i.y*r}}let s=this.segment(t);return gt(n[s-1],n[s],this.fraction(s,t))}normalAt(t){let{normals:n}=this;if(n.length===1||t<=0)return n[0];if(t>=this.total)return n[n.length-1];let e=this.segment(t),{x:s,y:i}=gt(n[e-1],n[e],this.fraction(e,t)),r=Math.hypot(s,i)||1;return{x:s/r,y:i/r}}};function cn(o,t){let n=Ut(o);return o.map((e,s)=>{let i=lt(o[Math.max(0,s-1)],o[Math.min(o.length-1,s+1)]),r={x:-i.y,y:i.x},l=e.x-n.x,d=e.y-n.y,a=Math.hypot(l,d),c=r.x*l+r.y*d,f=t[s],h=a>1e-9&&Math.abs(c)>.3*a?Math.sign(c):Math.sign(r.x*f.x+r.y*f.y)||1;return{x:r.x*h,y:r.y*h}})}function xt(o,t,n,e,s){let i=Math.min(s,Math.max(e.length/24,.5)),r=[],l=[];for(let d=0;d<=e.length+1e-9;d+=i){let{u:a,v:c}=e.at(Math.min(d,e.length)),f=o.pointAt(t+a),h=o.normalAt(t+a),u=h.x*n,g=h.y*n;r.push({x:f.x+u*c,y:f.y+g*c}),l.push({x:u,y:g})}return{pts:r,refs:l}}var Tt=5,an=10.5/2;function yt(o,t,n,e,s,i){let r=s,l=xt(o,t,n,e(r),i);if(o.straight)return l;for(let d=0;d<6;d++){let a=Dt(l.pts);if(!(a>0)||Math.abs(a/s-1)<.001)break;r*=s/a,l=xt(o,t,n,e(r),i)}return l}function at(o,t){return Array.from({length:t},(n,e)=>o+e*15/2)}function Ft(o){if(o.length===0)return 1/0;let t=1/0,n=-1/0;for(let e of o)t=Math.min(t,e.point.x),n=Math.max(n,e.point.x);return n-t}function Rt(o,t){return o*73856093^t*19349663}var ft=class{constructor(t){this.c=t,this.grid=new Map;let{ids:n,first:e,count:s,per:i,seedX:r,seedY:l,backbone:d}=t,a=n.length;this.points=Array.from({length:a},()=>{}),this.params=Array.from({length:a},()=>{}),this.curves=Array.from({length:a},()=>{}),this.links=t.links.map((h,u)=>h.map(g=>g.filter(([M])=>M!==u))),this.route=n.map(h=>h.startsWith(Bt));let c=1/0,f=-1/0;for(let h=0;h<a;h++){let u=e[h];!d[u]||Number.isNaN(r[u])||(c=Math.min(c,r[u]),f=Math.max(f,r[u]+i[h]*(s[h]-1)))}this.backbone=new ot([{x:c,y:0},{x:f,y:0}],[{x:0,y:1},{x:0,y:1}],!0),this.backboneCentroid={x:(c+f)/2,y:0};for(let h=0;h<a;h++){let u=e[h];if(!d[u]||Number.isNaN(r[u]))continue;let g=[],M=[];for(let b=0;b<s[h];b++){let D=r[u]+b*i[h];g.push({x:D,y:l[u]}),M.push(D-c)}this.points[h]=g,this.params[h]=M,this.curves[h]=this.backbone,this.occupy(g,this.backbone)}}static hasBackbone(t){for(let n=0;n<t.ids.length;n++){let e=t.first[n];if(t.backbone[e]&&!Number.isNaN(t.seedX[e]))return!0}return!1}run(){let t=[];for(let e=0;e<this.points.length;e++)this.points[e]||t.push(e);let n=this.componentsOf(t).map(e=>({members:e,anchors:this.anchorsOf(e)})).filter(e=>e.anchors.length).map(e=>({members:e.members,span:Ft(e.anchors),drawn:e.members.reduce((s,i)=>s+this.drawn(i),0),feet:e.anchors.map(s=>`${s.point.x},${s.point.y}`).sort().join(" ")})).sort((e,s)=>e.span-s.span||(e.feet===s.feet?s.drawn-e.drawn:e.drawn-s.drawn));for(let e of n)this.placePiece(e.members,this.backboneCentroid)}write(t,n){let{first:e}=this.c;this.points.forEach((s,i)=>{s?.forEach((r,l)=>{t[e[i]+l]=r.x,n[e[i]+l]=r.y})})}drawn(t){return this.c.per[t]*(this.c.count[t]-1)}endIndex(t,n){return n?this.c.count[t]-1:0}occupy(t,n){for(let e of t){let s=Rt(Math.floor(e.x/10.5),Math.floor(e.y/10.5)),i=this.grid.get(s),r={x:e.x,y:e.y,curve:n};i?i.push(r):this.grid.set(s,[r])}}violations(t,n,e,s){var i;let r=0;for(let l of t){if(e.some(c=>Math.hypot(l.x-c.x,l.y-c.y)<15))continue;let d=Math.floor(l.x/10.5),a=Math.floor(l.y/10.5);for(let c=d-1;c<=d+1;c++)for(let f=a-1;f<=a+1;f++)for(let h of(i=this.grid.get(Rt(c,f)))!==null&&i!==void 0?i:[])if(h.curve!==n&&Math.hypot(l.x-h.x,l.y-h.y)<10.5&&(r++,r>=s))return r}return r}choose(t,n,e){let s,i=1/0;for(let r of t){let l=this.violations(r(an).pts,n,e,i);if(l===0)return r(Tt);l<i&&(i=l,s=r)}return s(Tt)}anchorsOf(t){let n=new Set(t),e=[];for(let s of t)for(let i of pt)for(let[r,l]of this.links[s][i]){let d=this.points[r];if(n.has(r)||!d)continue;let a=this.endIndex(r,l);e.push({u:s,uSide:i,v:r,vSide:l,point:d[a],curve:this.curves[r],t:this.params[r][a]})}return e}componentsOf(t){let n=new Set(t),e=new Set,s=[];for(let i of t){if(e.has(i))continue;let r=[i];e.add(i);for(let l of r)for(let d of pt)for(let[a]of this.links[l][d])n.has(a)&&!e.has(a)&&(e.add(a),r.push(a));s.push(r)}return s}spinePath(t,n,e,s,i){let r=new Set(t),l=(u,g)=>u*2+g,d=(u,g)=>u===s&&_t(g)===i,a=new Map([[l(n,e),-1]]),c=[[n,e]],f=[n,e];for(let[u,g]of c){if(f=[u,g],s!==void 0&&d(u,g))break;for(let[M,b]of this.links[u][_t(g)])!r.has(M)||a.has(l(M,b))||(a.set(l(M,b),l(u,g)),c.push([M,b]))}if(s!==void 0&&!d(f[0],f[1]))return;let h=[];for(let u=l(f[0],f[1]);u!==-1;u=a.get(u))h.push({k:u>>1,enter:u&1});return h.reverse()}loosePath(t,n,e){let s=new Set(t),i=new Map([[n,-1]]),r=new Map([[n,0]]),l=[n];for(let a of l){if(a===e)break;for(let c of pt)for(let[f,h]of this.links[a][c])!s.has(f)||i.has(f)||(i.set(f,a),r.set(f,h),l.push(f))}let d=[];for(let a=e;a!==-1;a=i.get(a))d.push({k:a,enter:r.get(a)});return d.reverse()}spineLength(t){let{link:n}=this.c;return t.reduce((e,{k:s})=>e+this.drawn(s)+n,n)}layAlong(t,n,e,s){let{count:i,per:r,link:l}=this.c,d=e,a=[];for(let{k:c,enter:f}of t){let h=s??r[c],u=[],g=[];for(let M=0;M<i[c];M++)u.push(n.pointAt(d+M*h)),g.push(d+M*h);f===1&&(u.reverse(),g.reverse()),this.points[c]=u,this.params[c]=g,this.curves[c]=n,a.push(...u),d+=h*(i[c]-1)+l}return a}arcCandidates(t,n,e,s,i){let r=(i-s)/2-1e-6,l=i>2*s?nn:[0],d=[];for(let a of at(0,8))for(let c of l)for(let f=0;f<=16;f++){let h=r*f/16,u=It(mt(s,i,h,a),s,c);f<16&&u.apex<12||rn(u)||d.push(g=>yt(t,n,e,M=>It(mt(s,M,Math.min(h,(M-s)/2-1e-6),a),s,c),i,g))}return d}placePiece(t,n){var e;let{count:s,link:i}=this.c,r=this.anchorsOf(t);if(r.length===0)return;let l=t.every(x=>this.route[x]),d=r.every(x=>x.curve===r[0].curve)?r[0].curve:void 0,a,c,f,h;if(d)r.sort((x,F)=>x.t-F.t),a=d,c=r[0].t,f=r[r.length-1].t,h=a===this.backbone&&l?-1:1;else{r.sort((W,Q)=>W.point.x-Q.point.x||W.point.y-Q.point.y);let x=r[0].point,F=r[r.length-1].point,V=Math.hypot(F.x-x.x,F.y-x.y),B=V>1e-9?lt(x,F):{x:1,y:0},U={x:-B.y,y:B.x},C=gt(x,F,.5);h=r.some(W=>W.curve===this.backbone)?(l?-1:1)*(Math.sign(U.y)||1):(C.x-n.x)*U.x+(C.y-n.y)*U.y>=0?1:-1,a=new ot([x,F],[U,U],!0),c=0,f=V}let u=r[0],g=r[r.length-1],M=f-c,b=r.length===1||u.u===g.u&&u.uSide===g.uSide&&M<1e-9,D=[u.point,g.point],v=x=>this.choose(x,d,D),A,y,L=i,w;if(b){A=this.spinePath(t,u.u,u.uSide);let x=this.spineLength(A),F=u.vSide?Math.max(0,s[u.v]-2):Math.min(1,s[u.v]-1),B=(u.t>=this.params[u.v][F]?1:-1)*Math.cos(kt),U=Math.sin(kt);y=v(at(0,12).map(C=>W=>yt(a,c,h,Q=>Ot(0,C,B,U,Q),x,W)))}else{A=(e=this.spinePath(t,u.u,u.uSide,g.u,g.uSide))!==null&&e!==void 0?e:this.loosePath(t,u.u,g.u);let x=this.spineLength(A);if(l){let F=Math.max(12,Math.min(Pt*M,St));y=v(at(F,12).map(B=>U=>xt(a,c,h,mt(M,sn(M,B),0,0),U)));let V=Dt(y.pts);w=Math.max(.001,(V-2*i)/(s[A[0].k]-1))}else if(x>M+1e-6)y=v(this.arcCandidates(a,c,h,M,x));else{let F=x-2*i,V=Math.max(12,Math.min(Pt*(M-F),St));y=v(at(V,12).map(B=>U=>yt(a,c,h,C=>Ot(M/2-C/2,B,1,0,C),F,U))),L=0}}let E=new ot(y.pts,cn(y.pts,y.refs)),O=this.layAlong(A,E,L,w);this.occupy(O,E);let _=Ut(O),R=t.filter(x=>!this.points[x]),T=this.componentsOf(R).map(x=>({members:x,span:Ft(this.anchorsOf(x))})).sort((x,F)=>x.span-F.span);for(let x of T)this.placePiece(x.members,_)}};function Mt(o){let t=new Float64Array(o.n).fill(NaN),n=new Float64Array(o.n).fill(NaN);if(ft.hasBackbone(o)){let e=new ft(o);e.run(),e.write(t,n)}return{X:t,Y:n}}var ln=[{walks:2,iterations:15},{walks:4,iterations:30},{walks:8,iterations:60},{walks:12,iterations:90},{walks:16,iterations:120}],fn=20,hn=3,wt=.3,un=2,dn=200,pn=.1,mn=.5,yn=o=>{var t;return((t=o.stable)===null||t===void 0?void 0:t.rank)===0};function Ct(o,t){let n=t.at(-1);return(o==="+"||o==="-")&&(n==="+"||n==="-")&&o!==n}function gn(o){let t=Math.imul(o,2654435761)>>>0||1;return()=>(t^=t<<13,t>>>=0,t^=t>>>17,t^=t<<5,t>>>=0,t/4294967296)}function z(o,t){return typeof o=="number"&&Number.isFinite(o)?o:t}function At(o,t){return Math.max(z(o.nodeLengthPerMegabase,1e3)*t/1e6,z(o.minimumNodeLength,1))}function Ht(o){let{nodes:t,edges:n}=o.graph,e=o.options,s=z(e.nodeSegmentLength,1),i=z(e.edgeLength,1),r=t.map(w=>w.id),l=new Int32Array(t.length),d=new Int32Array(t.length),a=new Float64Array(t.length),c=0;t.forEach((w,E)=>{let O=At(e,w.length),_=Math.max(1,Math.ceil(O/s));l[E]=c,d[E]=_+1,a[E]=O/_,c+=_+1});let f=new Int32Array(c),h=new Int32Array(c),u=new Float64Array(c).fill(NaN),g=new Float64Array(c).fill(NaN),M=new Uint8Array(c),b=Array.from({length:c},()=>[]);t.forEach((w,E)=>{let O=typeof w.x=="number"&&typeof w.y=="number",_=yn(w)?1:0;for(let R=0;R<d[E];R++){let T=l[E]+R;f[T]=E,h[T]=R,M[T]=_,O&&(u[T]=w.x+R*a[E],g[T]=w.y),R>0&&(b[T-1].push([T,a[E]]),b[T].push([T-1,a[E]]))}});let D=new Map(r.map((w,E)=>[w,E])),v=t.map(()=>[[],[]]);for(let w of n){let E=D.get(w.from),O=D.get(w.to);if(E===void 0||O===void 0||E===O&&d[E]<=2)continue;let _=Ct(w.fromStrand,w.from)?0:1,R=Ct(w.toStrand,w.to)?1:0,T=l[E]+(_?d[E]-1:0),x=l[O]+(R?d[O]-1:0);b[T].push([x,i]),b[x].push([T,i]),v[E][_].push([O,R]),v[O][R].push([E,_])}let A=new Int32Array(c+1);for(let w=0;w<c;w++)A[w+1]=A[w]+b[w].length;let y=new Int32Array(A[c]),L=new Float64Array(A[c]);for(let w=0;w<c;w++)b[w].forEach(([E,O],_)=>{y[A[w]+_]=E,L[A[w]+_]=O});return{ids:r,first:l,count:d,per:a,links:v,chainOf:f,indexOf:h,seedX:u,seedY:g,backbone:M,off:A,nb:y,wt:L,n:c,link:i}}function xn(o){let{n:t,off:n,nb:e}=o,s=new Int32Array(t).fill(-1),i=[];for(let r=0;r<t;r++){if(s[r]>=0)continue;let l=[r];s[r]=i.length;for(let d of l)for(let a=n[d];a<n[d+1];a++){let c=e[a];s[c]<0&&(s[c]=i.length,l.push(c))}i.push(l)}return{comp:s,members:i}}function Nt(o,t={}){var n,e,s;let i=Ht(o),{n:r,off:l,nb:d,wt:a,seedX:c,seedY:f,first:h,count:u,per:g,link:M}=i,b=o.options,D=ln[Math.max(0,Math.min(4,z((n=t.quality)!==null&&n!==void 0?n:b.quality,2)))],v=z((e=t.componentSeparation)!==null&&e!==void 0?e:b.componentSeparation,15),A=gn(z((s=t.seed)!==null&&s!==void 0?s:b.seed,1)),y=new Float64Array(r),L=new Float64Array(r),w={};if(r===0)return{nodePositions:w};let{comp:E,members:O}=xn(i),_=1/0,R=0;for(let p=0;p<d.length;p++)_=Math.min(_,a[p]),R+=a[p];R/=2;let T=!1;for(let p=0;p<r;p++)if(!Number.isNaN(c[p])){T=!0;break}let x=T?Mt(i):void 0,F=Math.sqrt(r)*20;for(let p=0;p<r;p++)x&&!Number.isNaN(x.X[p])?(y[p]=x.X[p],L[p]=x.Y[p]):T&&!Number.isNaN(c[p])?(y[p]=c[p]+A()-.5,L[p]=f[p]+A()-.5):(y[p]=A()*F,L[p]=A()*F);let V=O.map(p=>x!==void 0&&p.every(N=>!Number.isNaN(x.X[N]))),B=[],U=!0;for(let p=0;p<r;p++)V[E[p]]||(B.push(p),U&&(U=!Number.isNaN(c[p])));let C=Math.max(R/4,_*10),W=C*C,Q=pn*_*_,{walks:Jt,iterations:rt}=D,Qt=Math.log(W/Q)/Math.max(1,rt-1),bt=Math.log(_),Zt=Math.log(C),Lt=(p,N,m,k)=>{let S=k/(m*m);S>1&&(S=1);let P=y[p]-y[N],I=L[p]-L[N],q=Math.sqrt(P*P+I*I)||1e-9,G=S*(q-m)/(2*q),j=G*P,H=G*I;y[p]=y[p]-j,L[p]=L[p]-H,y[N]=y[N]+j,L[N]=L[N]+H},et=0,Yt=(p,N)=>{let m=i.chainOf[p],k=i.indexOf[p],S=A()<.5?-1:1,P=N;for(let I=0;I<dn;I++){let q=u[m],G=g[m],j=(S>0?q-1-k:k)*G;if(P<=j){let J=Math.round(P/G);return et=N-P+J*G,h[m]+k+S*J}P-=j;let H=i.links[m][S>0?1:0];if(H.length===0)return et=N-P,h[m]+(S>0?q-1:0);let[Y,$]=H[Math.floor(A()*H.length)];if(P-=M,m=Y,S=$===0?1:-1,k=$===0?0:u[Y]-1,P<=0)return et=N-P,h[m]+k}return-1},Et=(p,N)=>{for(let m=l[p];m<l[p+1];m++){let k=d[m];k>p&&Lt(p,k,a[m],N)}},Z=Int32Array.from(B),Xt=U?Math.floor(mn*rt):0;for(let p=B.length?Xt:rt;p<rt;p++){let N=W*Math.exp(-Qt*p);for(let m=Z.length-1;m>0;m--){let k=Math.floor(A()*(m+1)),S=Z[m];Z[m]=Z[k],Z[k]=S}for(let m of Z){Et(m,N);for(let k=0;k<Jt;k++){let S=Math.exp(bt+A()*(Zt-bt)),P=Yt(m,S);P>=0&&P!==m&&et>0&&Lt(m,P,et,N)}}}let K=hn*M,tn=(p,N)=>Math.floor(p/K)*73856093^Math.floor(N/K)*19349663;for(let p=0;p<(B.length?fn:0);p++){let N=new Map;for(let m of B){let k=tn(y[m],L[m]),S=N.get(k);S?S.push(m):N.set(k,[m])}for(let m of B){let k=Math.floor(y[m]/K),S=Math.floor(L[m]/K);for(let P=k-1;P<=k+1;P++)for(let I=S-1;I<=S+1;I++){let q=N.get(P*73856093^I*19349663);if(q)for(let G of q){if(G<=m)continue;let j=!1;for(let X=l[m];X<l[m+1];X++)if(d[X]===G){j=!0;break}if(j)continue;let H=y[m]-y[G],Y=L[m]-L[G],$=Math.sqrt(H*H+Y*Y);if($>=K)continue;let J,it;if($>1e-6){let X=wt*(K-$)/(2*$);J=X*H,it=X*Y}else J=wt*K*(A()-.5),it=wt*K*(A()-.5);y[m]=y[m]+J,L[m]=L[m]+it,y[G]=y[G]-J,L[G]=L[G]-it}}}for(let m of B)Et(m,1/0)}for(let p=0;p<u.length;p++){let N=h[p],m=u[p];if(!(m<3)){for(let k=0;k<un;k++){let S=y.slice(N,N+m),P=L.slice(N,N+m);for(let I=1;I+1<m;I++)y[N+I]=.5*S[I]+.25*(S[I-1]+S[I+1]),L[N+I]=.5*P[I]+.25*(P[I-1]+P[I+1])}Mn(y,L,N,m,g[p])}}An(E,O,y,L,T,v);for(let p=0;p<i.ids.length;p++){let N=[];for(let m=0;m<u[p];m++)N.push({x:y[h[p]+m],y:L[h[p]+m]});w[i.ids[p]]=N}return{nodePositions:w}}function Mn(o,t,n,e,s){wn(o,t,n,e,s*(e-1));let i=new Float64Array(e);for(let c=1;c<e;c++)i[c]=i[c-1]+Math.hypot(o[n+c]-o[n+c-1],t[n+c]-t[n+c-1]);if(!i[e-1])return;let r=i[e-1],l=o.slice(n,n+e),d=t.slice(n,n+e),a=1;for(let c=1;c+1<e;c++){let f=r*c/(e-1);for(;a<e-1&&i[a]<f;)a++;let h=i[a]-i[a-1],u=h>0?(f-i[a-1])/h:0;o[n+c]=l[a-1]+(l[a]-l[a-1])*u,t[n+c]=d[a-1]+(d[a]-d[a-1])*u}}function wn(o,t,n,e,s){let i=n+e-1,r=o[n],l=t[n],d=Math.hypot(o[i]-r,t[i]-l),a=d>1e-9?(o[i]-r)/d:1,c=d>1e-9?(t[i]-l)/d:0,f=new Float64Array(e),h=new Float64Array(e),u=!0;for(let v=0;v<e;v++){let A=o[n+v]-r,y=t[n+v]-l;f[v]=A*a+y*c,h[v]=y*a-A*c,u&&(u=Math.abs(h[v])<1e-6)}let g=v=>{let A=0;for(let y=1;y<e;y++)A+=Math.hypot(f[y]-f[y-1],v*(h[y]-h[y-1]));return A};if(u||g(1)>=s)return;let M=1,b=2;for(;g(b)<s&&b<1e6;)M=b,b*=2;for(let v=0;v<40;v++){let A=(M+b)/2;g(A)<s?M=A:b=A}let D=(M+b)/2;for(let v=1;v+1<e;v++)o[n+v]=r+f[v]*a-D*h[v]*c,t[n+v]=l+f[v]*c+D*h[v]*a}function An(o,t,n,e,s,i){if(!s)for(let f of t)Nn(n,e,f);if(t.length<2)return;let r=new Float64Array(t.length).fill(1/0),l=new Float64Array(t.length).fill(1/0),d=new Float64Array(t.length).fill(-1/0);for(let f=0;f<n.length;f++){let h=o[f];r[h]=Math.min(r[h],n[f]),l[h]=Math.min(l[h],e[f]),d[h]=Math.max(d[h],e[f])}let a=new Float64Array(t.length),c=0;for(let f=0;f<t.length;f++)a[f]=c-l[f],c+=d[f]-l[f]+i;for(let f=0;f<n.length;f++){let h=o[f];n[f]=n[f]-r[h],e[f]=e[f]+a[h]}}function Nn(o,t,n){if(n.length<3)return;let e=0,s=0;for(let f of n)e+=o[f],s+=t[f];e/=n.length,s/=n.length;let i=0,r=0,l=0;for(let f of n){let h=o[f]-e,u=t[f]-s;i+=h*h,r+=u*u,l+=h*u}let d=-.5*Math.atan2(2*l,i-r),a=Math.cos(d),c=Math.sin(d);for(let f of n){let h=o[f]-e,u=t[f]-s;o[f]=e+a*h-c*u,t[f]=s+c*h+a*u}}var Vt=[{value:"fmmm",label:"Bandage (FMMM)",description:"Bandage's force-directed layout: OGDF's fast multipole multilevel method, compiled to wasm."},{value:"stress",label:"Stress",description:"Plain JS: the reference drawn straight and each variant placed against it, an allele as a lens, a repeat loop as a ring, a deletion as an arch; stress by stochastic gradient descent for components with no reference."}],vn=Vt.map(o=>o.value);var bn=async o=>{if(o.options.engine==="stress"){let e=performance.now();return{result:Nt(o),duration:performance.now()-e}}let t=performance.now();return{result:await dt(o),duration:performance.now()-t}};var st=40,Kt=500,ht=5;function Ln(o,t){return Math.max(o.nodeLengthPerMegabase*t/1e6,o.minimumNodeLength)}function qt(o,t=ht){let e=o.nodes.reduce((i,r)=>i+r.length,0)/1e6,s=Math.max(o.nodes.length*st,Kt);return{nodeLengthPerMegabase:e>0?s/e:1e4,minimumNodeLength:Math.max(ht,t),edgeLength:5,nodeSegmentLength:20}}var nt={power:1,effect:1};function jt(o){return o.power===1&&o.effect===1}function zt(o,t){let n=o.nodes.length,e=o.nodes.reduce((r,l)=>r+l.length,0),s=n>0?e/n:0,i=n>0?Math.max(n*st,Kt)/n:st;return r=>{if(s<=0)return i;let l=(r/s)**t.power;return Math.max(i*((l-1)*t.effect+1),ht)}}var Wt=1e3,$t={law:nt,minNodeLength:0};function Qn(o,t=$t){let{law:n,minNodeLength:e}=t,s=qt(o,e);if(jt(n))return{nodes:o.nodes,opts:s};let i=zt(o,n);return{nodes:o.nodes.map(r=>({...r,length:Math.round(i(r.length)*Wt)})),opts:{...s,nodeLengthPerMegabase:1e6/Wt,minimumNodeLength:ht}}}function Zn(o,t=$t){if(jt(t.law)){let n=qt(o,t.minNodeLength);return e=>Ln(n,e)}return zt(o,t.law)}var vt=[{value:"auto",label:"Proportional",description:"Bandage's own scale: a node draws proportional to its length, so a 1 bp allele is a speck.",law:nt,minNodeFactor:0},{value:"open",label:"Open bubbles",description:"Give every allele a drawn length, so a bubble reads as two arms rather than a knot.",law:nt,minNodeFactor:2.5},{value:"wide",label:"Wide bubbles",description:"As open, spread further. Best on a window of a dozen bubbles.",law:nt,minNodeFactor:10},{value:"compress",label:"Compress lengths",description:"Pull the longest and shortest nodes towards the graph\u2019s mean, so a cut spanning kb and bp fits one pane.",law:{power:.5,effect:.5},minNodeFactor:0}],En=vt.map(o=>o.value);function kn(o){let t=vt.find(n=>n.value===o);return{law:t?.law??nt,minNodeLength:(t?.minNodeFactor??0)*st}}export{Bt as a,Vt as b,vn as c,bn as d,Ln as e,Qn as f,Zn as g,vt as h,En as i,kn as j};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
var tt;function ut(){return tt??(tt=import("./bandage-layout-UZEOCKMS.js").then(o=>o.default()).catch(o=>{throw tt=void 0,o})),tt}async function dt(o){return(await ut()).computeLayout(o.graph,o.options)}var Bt="\0deletion:";var kt=25*Math.PI/180,Pt=.25,St=150,nn=[0,-.35,.35,-.7,.7,-1.05,1.05,-1.4,1.4],pt=[0,1];function _t(o){return o?0:1}function lt(o,t){let n=t.x-o.x,e=t.y-o.y,s=Math.hypot(n,e)||1;return{x:n/s,y:e/s}}function gt(o,t,n){return{x:o.x+(t.x-o.x)*n,y:o.y+(t.y-o.y)*n}}function Ut(o){let t=0,n=0;for(let e of o)t+=e.x,n+=e.y;return{x:t/o.length,y:n/o.length}}function Gt(o){let t=new Float64Array(o.length);for(let n=1;n<o.length;n++)t[n]=t[n-1]+Math.hypot(o[n].x-o[n-1].x,o[n].y-o[n-1].y);return t}function Dt(o){var t;return(t=Gt(o)[o.length-1])!==null&&t!==void 0?t:0}var ct=new Map;function en(o){let t=ct.get(o);if(t!==void 0)return t;let n=on(o);return ct.size>1e4&&ct.clear(),ct.set(o,n),n}function on(o){let t=1e-6,n=2*Math.PI-1e-6;for(let e=0;e<60;e++){let s=(t+n)/2;s/(2*Math.sin(s/2))<o?t=s:n=s}return(t+n)/2}function sn(o,t){if(o<1e-9)return Math.PI*t;let n=(o*o/4+t*t)/(2*t),e=2*Math.asin(Math.min(1,o/(2*n)));return n*(t>n?2*Math.PI-e:e)}function mt(o,t,n,e){let s=t-2*n,i=o<1e-9?2*Math.PI:en(s/o),r=s/i,l=Math.cos(i/2),d=o/2,a=e+n-r*l;return{at:c=>{if(c<=n)return{u:0,v:e+c};if(c>=t-n)return{u:o,v:e+t-c};let h=(c-n)/r-i/2;return{u:d+r*Math.sin(h),v:a+r*Math.cos(h)}},apex:e+n+r*(1-l),length:t}}function It(o,t,n){if(!n)return o;let e=Math.cos(n),s=Math.sin(n);return{...o,at:i=>{let{u:r,v:l}=o.at(i),d=r-t/2;return{u:t/2+d*e-l*s,v:d*s+l*e}}}}function rn(o){for(let t=0;t<=32;t++)if(o.at(o.length*t/32).v<-1e-6)return!0;return!1}function Ot(o,t,n,e,s){return{at:i=>({u:o+n*i,v:t+e*i}),apex:t+Math.max(0,e)*s,length:s}}var ot=class{constructor(t,n,e=!1){var s;this.pts=t,this.normals=n,this.straight=e,this.arc=Gt(t),this.total=(s=this.arc[t.length-1])!==null&&s!==void 0?s:0}segment(t){let{arc:n}=this,e=1,s=n.length-1;for(;e<s;){let i=e+s>>1;n[i]<t?e=i+1:s=i}return e}fraction(t,n){let e=this.arc[t]-this.arc[t-1];return e>0?(n-this.arc[t-1])/e:0}pointAt(t){let{pts:n}=this,e=n.length-1;if(e===0)return{...n[0]};if(t<=0){let i=lt(n[0],n[1]);return{x:n[0].x+i.x*t,y:n[0].y+i.y*t}}if(t>=this.total){let i=lt(n[e-1],n[e]),r=t-this.total;return{x:n[e].x+i.x*r,y:n[e].y+i.y*r}}let s=this.segment(t);return gt(n[s-1],n[s],this.fraction(s,t))}normalAt(t){let{normals:n}=this;if(n.length===1||t<=0)return n[0];if(t>=this.total)return n[n.length-1];let e=this.segment(t),{x:s,y:i}=gt(n[e-1],n[e],this.fraction(e,t)),r=Math.hypot(s,i)||1;return{x:s/r,y:i/r}}};function cn(o,t){let n=Ut(o);return o.map((e,s)=>{let i=lt(o[Math.max(0,s-1)],o[Math.min(o.length-1,s+1)]),r={x:-i.y,y:i.x},l=e.x-n.x,d=e.y-n.y,a=Math.hypot(l,d),c=r.x*l+r.y*d,h=t[s],f=a>1e-9&&Math.abs(c)>.3*a?Math.sign(c):Math.sign(r.x*h.x+r.y*h.y)||1;return{x:r.x*f,y:r.y*f}})}function xt(o,t,n,e,s){let i=Math.min(s,Math.max(e.length/24,.5)),r=[],l=[];for(let d=0;d<=e.length+1e-9;d+=i){let{u:a,v:c}=e.at(Math.min(d,e.length)),h=o.pointAt(t+a),f=o.normalAt(t+a),u=f.x*n,g=f.y*n;r.push({x:h.x+u*c,y:h.y+g*c}),l.push({x:u,y:g})}return{pts:r,refs:l}}var Tt=5,an=10.5/2;function yt(o,t,n,e,s,i){let r=s,l=xt(o,t,n,e(r),i);if(o.straight)return l;for(let d=0;d<6;d++){let a=Dt(l.pts);if(!(a>0)||Math.abs(a/s-1)<.001)break;r*=s/a,l=xt(o,t,n,e(r),i)}return l}function at(o,t){return Array.from({length:t},(n,e)=>o+e*15/2)}function Ft(o){if(o.length===0)return 1/0;let t=1/0,n=-1/0;for(let e of o)t=Math.min(t,e.point.x),n=Math.max(n,e.point.x);return n-t}function Rt(o,t){return o*73856093^t*19349663}var ht=class{constructor(t){this.c=t,this.grid=new Map;let{ids:n,first:e,count:s,per:i,seedX:r,seedY:l,backbone:d}=t,a=n.length;this.points=Array.from({length:a},()=>{}),this.params=Array.from({length:a},()=>{}),this.curves=Array.from({length:a},()=>{}),this.links=t.links.map((f,u)=>f.map(g=>g.filter(([M])=>M!==u))),this.route=n.map(f=>f.startsWith(Bt));let c=1/0,h=-1/0;for(let f=0;f<a;f++){let u=e[f];!d[u]||Number.isNaN(r[u])||(c=Math.min(c,r[u]),h=Math.max(h,r[u]+i[f]*(s[f]-1)))}this.backbone=new ot([{x:c,y:0},{x:h,y:0}],[{x:0,y:1},{x:0,y:1}],!0),this.backboneCentroid={x:(c+h)/2,y:0};for(let f=0;f<a;f++){let u=e[f];if(!d[u]||Number.isNaN(r[u]))continue;let g=[],M=[];for(let b=0;b<s[f];b++){let D=r[u]+b*i[f];g.push({x:D,y:l[u]}),M.push(D-c)}this.points[f]=g,this.params[f]=M,this.curves[f]=this.backbone,this.occupy(g,this.backbone)}}static hasBackbone(t){for(let n=0;n<t.ids.length;n++){let e=t.first[n];if(t.backbone[e]&&!Number.isNaN(t.seedX[e]))return!0}return!1}run(){let t=[];for(let e=0;e<this.points.length;e++)this.points[e]||t.push(e);let n=this.componentsOf(t).map(e=>({members:e,anchors:this.anchorsOf(e)})).filter(e=>e.anchors.length).map(e=>({members:e.members,span:Ft(e.anchors),drawn:e.members.reduce((s,i)=>s+this.drawn(i),0),feet:e.anchors.map(s=>`${s.point.x},${s.point.y}`).sort().join(" ")})).sort((e,s)=>e.span-s.span||(e.feet===s.feet?s.drawn-e.drawn:e.drawn-s.drawn));for(let e of n)this.placePiece(e.members,this.backboneCentroid)}write(t,n){let{first:e}=this.c;this.points.forEach((s,i)=>{s?.forEach((r,l)=>{t[e[i]+l]=r.x,n[e[i]+l]=r.y})})}drawn(t){return this.c.per[t]*(this.c.count[t]-1)}endIndex(t,n){return n?this.c.count[t]-1:0}occupy(t,n){for(let e of t){let s=Rt(Math.floor(e.x/10.5),Math.floor(e.y/10.5)),i=this.grid.get(s),r={x:e.x,y:e.y,curve:n};i?i.push(r):this.grid.set(s,[r])}}violations(t,n,e,s){var i;let r=0;for(let l of t){if(e.some(c=>Math.hypot(l.x-c.x,l.y-c.y)<15))continue;let d=Math.floor(l.x/10.5),a=Math.floor(l.y/10.5);for(let c=d-1;c<=d+1;c++)for(let h=a-1;h<=a+1;h++)for(let f of(i=this.grid.get(Rt(c,h)))!==null&&i!==void 0?i:[])if(f.curve!==n&&Math.hypot(l.x-f.x,l.y-f.y)<10.5&&(r++,r>=s))return r}return r}choose(t,n,e){let s,i=1/0;for(let r of t){let l=this.violations(r(an).pts,n,e,i);if(l===0)return r(Tt);l<i&&(i=l,s=r)}return s(Tt)}anchorsOf(t){let n=new Set(t),e=[];for(let s of t)for(let i of pt)for(let[r,l]of this.links[s][i]){let d=this.points[r];if(n.has(r)||!d)continue;let a=this.endIndex(r,l);e.push({u:s,uSide:i,v:r,vSide:l,point:d[a],curve:this.curves[r],t:this.params[r][a]})}return e}componentsOf(t){let n=new Set(t),e=new Set,s=[];for(let i of t){if(e.has(i))continue;let r=[i];e.add(i);for(let l of r)for(let d of pt)for(let[a]of this.links[l][d])n.has(a)&&!e.has(a)&&(e.add(a),r.push(a));s.push(r)}return s}spinePath(t,n,e,s,i){let r=new Set(t),l=(u,g)=>u*2+g,d=(u,g)=>u===s&&_t(g)===i,a=new Map([[l(n,e),-1]]),c=[[n,e]],h=[n,e];for(let[u,g]of c){if(h=[u,g],s!==void 0&&d(u,g))break;for(let[M,b]of this.links[u][_t(g)])!r.has(M)||a.has(l(M,b))||(a.set(l(M,b),l(u,g)),c.push([M,b]))}if(s!==void 0&&!d(h[0],h[1]))return;let f=[];for(let u=l(h[0],h[1]);u!==-1;u=a.get(u))f.push({k:u>>1,enter:u&1});return f.reverse()}loosePath(t,n,e){let s=new Set(t),i=new Map([[n,-1]]),r=new Map([[n,0]]),l=[n];for(let a of l){if(a===e)break;for(let c of pt)for(let[h,f]of this.links[a][c])!s.has(h)||i.has(h)||(i.set(h,a),r.set(h,f),l.push(h))}let d=[];for(let a=e;a!==-1;a=i.get(a))d.push({k:a,enter:r.get(a)});return d.reverse()}spineLength(t){let{link:n}=this.c;return t.reduce((e,{k:s})=>e+this.drawn(s)+n,n)}layAlong(t,n,e,s){let{count:i,per:r,link:l}=this.c,d=e,a=[];for(let{k:c,enter:h}of t){let f=s??r[c],u=[],g=[];for(let M=0;M<i[c];M++)u.push(n.pointAt(d+M*f)),g.push(d+M*f);h===1&&(u.reverse(),g.reverse()),this.points[c]=u,this.params[c]=g,this.curves[c]=n,a.push(...u),d+=f*(i[c]-1)+l}return a}arcCandidates(t,n,e,s,i){let r=(i-s)/2-1e-6,l=i>2*s?nn:[0],d=[];for(let a of at(0,8))for(let c of l)for(let h=0;h<=16;h++){let f=r*h/16,u=It(mt(s,i,f,a),s,c);h<16&&u.apex<12||rn(u)||d.push(g=>yt(t,n,e,M=>It(mt(s,M,Math.min(f,(M-s)/2-1e-6),a),s,c),i,g))}return d}placePiece(t,n){var e;let{count:s,link:i}=this.c,r=this.anchorsOf(t);if(r.length===0)return;let l=t.every(x=>this.route[x]),d=r.every(x=>x.curve===r[0].curve)?r[0].curve:void 0,a,c,h,f;if(d)r.sort((x,F)=>x.t-F.t),a=d,c=r[0].t,h=r[r.length-1].t,f=a===this.backbone&&l?-1:1;else{r.sort((W,Q)=>W.point.x-Q.point.x||W.point.y-Q.point.y);let x=r[0].point,F=r[r.length-1].point,V=Math.hypot(F.x-x.x,F.y-x.y),B=V>1e-9?lt(x,F):{x:1,y:0},U={x:-B.y,y:B.x},C=gt(x,F,.5);f=r.some(W=>W.curve===this.backbone)?(l?-1:1)*(Math.sign(U.y)||1):(C.x-n.x)*U.x+(C.y-n.y)*U.y>=0?1:-1,a=new ot([x,F],[U,U],!0),c=0,h=V}let u=r[0],g=r[r.length-1],M=h-c,b=r.length===1||u.u===g.u&&u.uSide===g.uSide&&M<1e-9,D=[u.point,g.point],v=x=>this.choose(x,d,D),A,y,L=i,w;if(b){A=this.spinePath(t,u.u,u.uSide);let x=this.spineLength(A),F=u.vSide?Math.max(0,s[u.v]-2):Math.min(1,s[u.v]-1),B=(u.t>=this.params[u.v][F]?1:-1)*Math.cos(kt),U=Math.sin(kt);y=v(at(0,12).map(C=>W=>yt(a,c,f,Q=>Ot(0,C,B,U,Q),x,W)))}else{A=(e=this.spinePath(t,u.u,u.uSide,g.u,g.uSide))!==null&&e!==void 0?e:this.loosePath(t,u.u,g.u);let x=this.spineLength(A);if(l){let F=Math.max(12,Math.min(Pt*M,St));y=v(at(F,12).map(B=>U=>xt(a,c,f,mt(M,sn(M,B),0,0),U)));let V=Dt(y.pts);w=Math.max(.001,(V-2*i)/(s[A[0].k]-1))}else if(x>M+1e-6)y=v(this.arcCandidates(a,c,f,M,x));else{let F=x-2*i,V=Math.max(12,Math.min(Pt*(M-F),St));y=v(at(V,12).map(B=>U=>yt(a,c,f,C=>Ot(M/2-C/2,B,1,0,C),F,U))),L=0}}let E=new ot(y.pts,cn(y.pts,y.refs)),O=this.layAlong(A,E,L,w);this.occupy(O,E);let _=Ut(O),R=t.filter(x=>!this.points[x]),T=this.componentsOf(R).map(x=>({members:x,span:Ft(this.anchorsOf(x))})).sort((x,F)=>x.span-F.span);for(let x of T)this.placePiece(x.members,_)}};function Mt(o){let t=new Float64Array(o.n).fill(NaN),n=new Float64Array(o.n).fill(NaN);if(ht.hasBackbone(o)){let e=new ht(o);e.run(),e.write(t,n)}return{X:t,Y:n}}var ln=[{walks:2,iterations:15},{walks:4,iterations:30},{walks:8,iterations:60},{walks:12,iterations:90},{walks:16,iterations:120}],hn=20,fn=3,wt=.3,un=2,dn=200,pn=.1,mn=.5,yn=o=>{var t;return((t=o.stable)===null||t===void 0?void 0:t.rank)===0};function Ct(o,t){let n=t.at(-1);return(o==="+"||o==="-")&&(n==="+"||n==="-")&&o!==n}function gn(o){let t=Math.imul(o,2654435761)>>>0||1;return()=>(t^=t<<13,t>>>=0,t^=t>>>17,t^=t<<5,t>>>=0,t/4294967296)}function z(o,t){return typeof o=="number"&&Number.isFinite(o)?o:t}function At(o,t){return Math.max(z(o.nodeLengthPerMegabase,1e3)*t/1e6,z(o.minimumNodeLength,1))}function Ht(o){let{nodes:t,edges:n}=o.graph,e=o.options,s=z(e.nodeSegmentLength,1),i=z(e.edgeLength,1),r=t.map(w=>w.id),l=new Int32Array(t.length),d=new Int32Array(t.length),a=new Float64Array(t.length),c=0;t.forEach((w,E)=>{let O=At(e,w.length),_=Math.max(1,Math.ceil(O/s));l[E]=c,d[E]=_+1,a[E]=O/_,c+=_+1});let h=new Int32Array(c),f=new Int32Array(c),u=new Float64Array(c).fill(NaN),g=new Float64Array(c).fill(NaN),M=new Uint8Array(c),b=Array.from({length:c},()=>[]);t.forEach((w,E)=>{let O=typeof w.x=="number"&&typeof w.y=="number",_=yn(w)?1:0;for(let R=0;R<d[E];R++){let T=l[E]+R;h[T]=E,f[T]=R,M[T]=_,O&&(u[T]=w.x+R*a[E],g[T]=w.y),R>0&&(b[T-1].push([T,a[E]]),b[T].push([T-1,a[E]]))}});let D=new Map(r.map((w,E)=>[w,E])),v=t.map(()=>[[],[]]);for(let w of n){let E=D.get(w.from),O=D.get(w.to);if(E===void 0||O===void 0||E===O&&d[E]<=2)continue;let _=Ct(w.fromStrand,w.from)?0:1,R=Ct(w.toStrand,w.to)?1:0,T=l[E]+(_?d[E]-1:0),x=l[O]+(R?d[O]-1:0);b[T].push([x,i]),b[x].push([T,i]),v[E][_].push([O,R]),v[O][R].push([E,_])}let A=new Int32Array(c+1);for(let w=0;w<c;w++)A[w+1]=A[w]+b[w].length;let y=new Int32Array(A[c]),L=new Float64Array(A[c]);for(let w=0;w<c;w++)b[w].forEach(([E,O],_)=>{y[A[w]+_]=E,L[A[w]+_]=O});return{ids:r,first:l,count:d,per:a,links:v,chainOf:h,indexOf:f,seedX:u,seedY:g,backbone:M,off:A,nb:y,wt:L,n:c,link:i}}function xn(o){let{n:t,off:n,nb:e}=o,s=new Int32Array(t).fill(-1),i=[];for(let r=0;r<t;r++){if(s[r]>=0)continue;let l=[r];s[r]=i.length;for(let d of l)for(let a=n[d];a<n[d+1];a++){let c=e[a];s[c]<0&&(s[c]=i.length,l.push(c))}i.push(l)}return{comp:s,members:i}}function Nt(o,t={}){var n,e,s;let i=Ht(o),{n:r,off:l,nb:d,wt:a,seedX:c,seedY:h,first:f,count:u,per:g,link:M}=i,b=o.options,D=ln[Math.max(0,Math.min(4,z((n=t.quality)!==null&&n!==void 0?n:b.quality,2)))],v=z((e=t.componentSeparation)!==null&&e!==void 0?e:b.componentSeparation,15),A=gn(z((s=t.seed)!==null&&s!==void 0?s:b.seed,1)),y=new Float64Array(r),L=new Float64Array(r),w={};if(r===0)return{nodePositions:w};let{comp:E,members:O}=xn(i),_=1/0,R=0;for(let p=0;p<d.length;p++)_=Math.min(_,a[p]),R+=a[p];R/=2;let T=!1;for(let p=0;p<r;p++)if(!Number.isNaN(c[p])){T=!0;break}let x=T?Mt(i):void 0,F=Math.sqrt(r)*20;for(let p=0;p<r;p++)x&&!Number.isNaN(x.X[p])?(y[p]=x.X[p],L[p]=x.Y[p]):T&&!Number.isNaN(c[p])?(y[p]=c[p]+A()-.5,L[p]=h[p]+A()-.5):(y[p]=A()*F,L[p]=A()*F);let V=O.map(p=>x!==void 0&&p.every(N=>!Number.isNaN(x.X[N]))),B=[],U=!0;for(let p=0;p<r;p++)V[E[p]]||(B.push(p),U&&(U=!Number.isNaN(c[p])));let C=Math.max(R/4,_*10),W=C*C,Q=pn*_*_,{walks:Jt,iterations:rt}=D,Qt=Math.log(W/Q)/Math.max(1,rt-1),bt=Math.log(_),Zt=Math.log(C),Lt=(p,N,m,k)=>{let S=k/(m*m);S>1&&(S=1);let P=y[p]-y[N],I=L[p]-L[N],q=Math.sqrt(P*P+I*I)||1e-9,G=S*(q-m)/(2*q),j=G*P,H=G*I;y[p]=y[p]-j,L[p]=L[p]-H,y[N]=y[N]+j,L[N]=L[N]+H},et=0,Yt=(p,N)=>{let m=i.chainOf[p],k=i.indexOf[p],S=A()<.5?-1:1,P=N;for(let I=0;I<dn;I++){let q=u[m],G=g[m],j=(S>0?q-1-k:k)*G;if(P<=j){let J=Math.round(P/G);return et=N-P+J*G,f[m]+k+S*J}P-=j;let H=i.links[m][S>0?1:0];if(H.length===0)return et=N-P,f[m]+(S>0?q-1:0);let[Y,$]=H[Math.floor(A()*H.length)];if(P-=M,m=Y,S=$===0?1:-1,k=$===0?0:u[Y]-1,P<=0)return et=N-P,f[m]+k}return-1},Et=(p,N)=>{for(let m=l[p];m<l[p+1];m++){let k=d[m];k>p&&Lt(p,k,a[m],N)}},Z=Int32Array.from(B),Xt=U?Math.floor(mn*rt):0;for(let p=B.length?Xt:rt;p<rt;p++){let N=W*Math.exp(-Qt*p);for(let m=Z.length-1;m>0;m--){let k=Math.floor(A()*(m+1)),S=Z[m];Z[m]=Z[k],Z[k]=S}for(let m of Z){Et(m,N);for(let k=0;k<Jt;k++){let S=Math.exp(bt+A()*(Zt-bt)),P=Yt(m,S);P>=0&&P!==m&&et>0&&Lt(m,P,et,N)}}}let K=fn*M,tn=(p,N)=>Math.floor(p/K)*73856093^Math.floor(N/K)*19349663;for(let p=0;p<(B.length?hn:0);p++){let N=new Map;for(let m of B){let k=tn(y[m],L[m]),S=N.get(k);S?S.push(m):N.set(k,[m])}for(let m of B){let k=Math.floor(y[m]/K),S=Math.floor(L[m]/K);for(let P=k-1;P<=k+1;P++)for(let I=S-1;I<=S+1;I++){let q=N.get(P*73856093^I*19349663);if(q)for(let G of q){if(G<=m)continue;let j=!1;for(let X=l[m];X<l[m+1];X++)if(d[X]===G){j=!0;break}if(j)continue;let H=y[m]-y[G],Y=L[m]-L[G],$=Math.sqrt(H*H+Y*Y);if($>=K)continue;let J,it;if($>1e-6){let X=wt*(K-$)/(2*$);J=X*H,it=X*Y}else J=wt*K*(A()-.5),it=wt*K*(A()-.5);y[m]=y[m]+J,L[m]=L[m]+it,y[G]=y[G]-J,L[G]=L[G]-it}}}for(let m of B)Et(m,1/0)}for(let p=0;p<u.length;p++){let N=f[p],m=u[p];if(!(m<3)){for(let k=0;k<un;k++){let S=y.slice(N,N+m),P=L.slice(N,N+m);for(let I=1;I+1<m;I++)y[N+I]=.5*S[I]+.25*(S[I-1]+S[I+1]),L[N+I]=.5*P[I]+.25*(P[I-1]+P[I+1])}Mn(y,L,N,m,g[p])}}An(E,O,y,L,T,v);for(let p=0;p<i.ids.length;p++){let N=[];for(let m=0;m<u[p];m++)N.push({x:y[f[p]+m],y:L[f[p]+m]});w[i.ids[p]]=N}return{nodePositions:w}}function Mn(o,t,n,e,s){wn(o,t,n,e,s*(e-1));let i=new Float64Array(e);for(let c=1;c<e;c++)i[c]=i[c-1]+Math.hypot(o[n+c]-o[n+c-1],t[n+c]-t[n+c-1]);if(!i[e-1])return;let r=i[e-1],l=o.slice(n,n+e),d=t.slice(n,n+e),a=1;for(let c=1;c+1<e;c++){let h=r*c/(e-1);for(;a<e-1&&i[a]<h;)a++;let f=i[a]-i[a-1],u=f>0?(h-i[a-1])/f:0;o[n+c]=l[a-1]+(l[a]-l[a-1])*u,t[n+c]=d[a-1]+(d[a]-d[a-1])*u}}function wn(o,t,n,e,s){let i=n+e-1,r=o[n],l=t[n],d=Math.hypot(o[i]-r,t[i]-l),a=d>1e-9?(o[i]-r)/d:1,c=d>1e-9?(t[i]-l)/d:0,h=new Float64Array(e),f=new Float64Array(e),u=!0;for(let v=0;v<e;v++){let A=o[n+v]-r,y=t[n+v]-l;h[v]=A*a+y*c,f[v]=y*a-A*c,u&&(u=Math.abs(f[v])<1e-6)}let g=v=>{let A=0;for(let y=1;y<e;y++)A+=Math.hypot(h[y]-h[y-1],v*(f[y]-f[y-1]));return A};if(u||g(1)>=s)return;let M=1,b=2;for(;g(b)<s&&b<1e6;)M=b,b*=2;for(let v=0;v<40;v++){let A=(M+b)/2;g(A)<s?M=A:b=A}let D=(M+b)/2;for(let v=1;v+1<e;v++)o[n+v]=r+h[v]*a-D*f[v]*c,t[n+v]=l+h[v]*c+D*f[v]*a}function An(o,t,n,e,s,i){if(!s)for(let h of t)Nn(n,e,h);if(t.length<2)return;let r=new Float64Array(t.length).fill(1/0),l=new Float64Array(t.length).fill(1/0),d=new Float64Array(t.length).fill(-1/0);for(let h=0;h<n.length;h++){let f=o[h];r[f]=Math.min(r[f],n[h]),l[f]=Math.min(l[f],e[h]),d[f]=Math.max(d[f],e[h])}let a=new Float64Array(t.length),c=0;for(let h=0;h<t.length;h++)a[h]=c-l[h],c+=d[h]-l[h]+i;for(let h=0;h<n.length;h++){let f=o[h];n[h]=n[h]-r[f],e[h]=e[h]+a[f]}}function Nn(o,t,n){if(n.length<3)return;let e=0,s=0;for(let h of n)e+=o[h],s+=t[h];e/=n.length,s/=n.length;let i=0,r=0,l=0;for(let h of n){let f=o[h]-e,u=t[h]-s;i+=f*f,r+=u*u,l+=f*u}let d=-.5*Math.atan2(2*l,i-r),a=Math.cos(d),c=Math.sin(d);for(let h of n){let f=o[h]-e,u=t[h]-s;o[h]=e+a*f-c*u,t[h]=s+c*f+a*u}}var Vt=[{value:"fmmm",label:"Bandage (FMMM)",description:"Bandage's force-directed layout: OGDF's fast multipole multilevel method, compiled to wasm."},{value:"stress",label:"Stress",description:"Plain JS: the reference drawn straight and each variant placed against it, an allele as a lens, a repeat loop as a ring, a deletion as an arch; stress by stochastic gradient descent for components with no reference."}],vn=Vt.map(o=>o.value);var bn=async o=>{let t=performance.now();return{result:o.options.engine==="stress"?Nt(o):await dt(o),duration:performance.now()-t}};var st=40,Kt=500,ft=5;function Ln(o,t){return Math.max(o.nodeLengthPerMegabase*t/1e6,o.minimumNodeLength)}function qt(o,t=ft){let e=o.nodes.reduce((i,r)=>i+r.length,0)/1e6,s=Math.max(o.nodes.length*st,Kt);return{nodeLengthPerMegabase:e>0?s/e:1e4,minimumNodeLength:Math.max(ft,t),edgeLength:5,nodeSegmentLength:20}}var nt={power:1,effect:1};function jt(o){return o.power===1&&o.effect===1}function zt(o,t){let n=o.nodes.length,e=o.nodes.reduce((r,l)=>r+l.length,0),s=n>0?e/n:0,i=n>0?Math.max(n*st,Kt)/n:st;return r=>{if(s<=0)return i;let l=(r/s)**t.power;return Math.max(i*((l-1)*t.effect+1),ft)}}var Wt=1e3,$t={law:nt,minNodeLength:0};function Qn(o,t=$t){let{law:n,minNodeLength:e}=t,s=qt(o,e);if(jt(n))return{nodes:o.nodes,opts:s};let i=zt(o,n);return{nodes:o.nodes.map(r=>({...r,length:Math.round(i(r.length)*Wt)})),opts:{...s,nodeLengthPerMegabase:1e6/Wt,minimumNodeLength:ft}}}function Zn(o,t=$t){if(jt(t.law)){let n=qt(o,t.minNodeLength);return e=>Ln(n,e)}return zt(o,t.law)}var vt=[{value:"auto",label:"Proportional",description:"Bandage's own scale: a node draws proportional to its length, so a 1 bp allele is a speck.",law:nt,minNodeFactor:0},{value:"open",label:"Open bubbles",description:"Give every allele a drawn length, so a bubble reads as two arms rather than a knot.",law:nt,minNodeFactor:2.5},{value:"wide",label:"Wide bubbles",description:"As open, spread further. Best on a window of a dozen bubbles.",law:nt,minNodeFactor:10},{value:"compress",label:"Compress lengths",description:"Pull the longest and shortest nodes towards the graph\u2019s mean, so a cut spanning kb and bp fits one pane.",law:{power:.5,effect:.5},minNodeFactor:0}],En=vt.map(o=>o.value);function kn(o){let t=vt.find(n=>n.value===o);return{law:t?.law??nt,minNodeLength:(t?.minNodeFactor??0)*st}}export{Bt as a,Vt as b,vn as c,bn as d,Ln as e,Qn as f,Zn as g,vt as h,En as i,kn as j};
|
|
2
|
+
//# sourceMappingURL=chunk-UW7INEQF.js.map
|