jbrowse-plugin-graphgenomeviewer 7.3.1 → 7.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{GbzBaseSyntenyAdapter-NYI2YVNG.js → GbzBaseSyntenyAdapter-3MELVQRM.js} +2 -2
- package/dist/chunks/GbzBaseSyntenyAdapter-3MELVQRM.js.map +7 -0
- package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js → GraphGenomeView-6EDKLBOJ.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js → GraphTrackSettingsDialog-KYEZWI4Z.js} +2 -2
- package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js → HighlightColorDialog-IMLYI64R.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js → LinearGraphDisplay-CRIZLJDE.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js → MinigraphBubbleAdapter-2HPTGZ5N.js} +2 -2
- package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js +2 -0
- package/dist/chunks/RgfaTabixAdapter-GNH3QCPZ.js.map +7 -0
- package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js → WalkTabixSyntenyAdapter-CUPHY36S.js} +2 -2
- package/dist/chunks/{chunk-44CJ2N3N.js → chunk-4EKOQHUX.js} +2 -2
- package/dist/chunks/{chunk-44CJ2N3N.js.map → chunk-4EKOQHUX.js.map} +4 -4
- package/dist/chunks/{chunk-RFDSEB2X.js → chunk-6DRBCLWY.js} +4 -4
- package/dist/chunks/chunk-B5SVBPXN.js +2 -0
- package/dist/chunks/chunk-B5SVBPXN.js.map +7 -0
- package/dist/chunks/chunk-CJMBJJLO.js +3 -0
- package/dist/chunks/chunk-CJMBJJLO.js.map +7 -0
- package/dist/chunks/{chunk-BXRTG7FU.js → chunk-F4T7JI7S.js} +2 -2
- package/dist/chunks/{chunk-BXRTG7FU.js.map → chunk-F4T7JI7S.js.map} +1 -1
- package/dist/chunks/chunk-GN4HSVLB.js +4 -0
- package/dist/chunks/{chunk-VQ77X5QU.js.map → chunk-GN4HSVLB.js.map} +4 -4
- package/dist/chunks/{chunk-WUSKVEA6.js → chunk-HOSCIP4U.js} +2 -2
- package/dist/chunks/{chunk-WUSKVEA6.js.map → chunk-HOSCIP4U.js.map} +2 -2
- package/dist/chunks/chunk-HTSG4T32.js +3 -0
- package/dist/chunks/chunk-HTSG4T32.js.map +7 -0
- package/dist/chunks/{chunk-YXVEGNFQ.js → chunk-IFBKAC2H.js} +2 -2
- package/dist/chunks/{chunk-RW775LQN.js → chunk-MNL7IPTH.js} +2 -2
- package/dist/chunks/{chunk-RW775LQN.js.map → chunk-MNL7IPTH.js.map} +2 -2
- package/dist/chunks/chunk-N5VWQHTK.js +2 -0
- package/dist/chunks/{chunk-QTOA4RB7.js.map → chunk-N5VWQHTK.js.map} +2 -2
- package/dist/chunks/{chunk-DBPEUVUC.js → chunk-NGR473EL.js} +2 -2
- package/dist/chunks/{chunk-DBPEUVUC.js.map → chunk-NGR473EL.js.map} +2 -2
- package/dist/chunks/chunk-ORHUPW3G.js +3 -0
- package/dist/chunks/chunk-ORHUPW3G.js.map +7 -0
- package/dist/chunks/{chunk-DUR437TH.js → chunk-PUFH6DMJ.js} +2 -2
- package/dist/chunks/{chunk-DUR437TH.js.map → chunk-PUFH6DMJ.js.map} +1 -1
- package/dist/chunks/{chunk-FIRQAKMX.js → chunk-Q55PHRHV.js} +1 -1
- package/dist/chunks/{chunk-FIRQAKMX.js.map → chunk-Q55PHRHV.js.map} +1 -1
- package/dist/chunks/chunk-QQCTNB2Z.js +2 -0
- package/dist/chunks/chunk-QQCTNB2Z.js.map +7 -0
- package/dist/chunks/chunk-R25GOTED.js +2 -0
- package/dist/chunks/chunk-R25GOTED.js.map +7 -0
- package/dist/chunks/chunk-TQKSF3NI.js +2 -0
- package/dist/chunks/{chunk-7HWHWPRW.js.map → chunk-TQKSF3NI.js.map} +3 -3
- package/dist/chunks/{chunk-6MUBJVBG.js → chunk-ULLEUORS.js} +2 -2
- package/dist/chunks/{chunk-6MUBJVBG.js.map → chunk-ULLEUORS.js.map} +4 -4
- package/dist/chunks/chunk-VW4PPXH6.js +2 -0
- package/dist/chunks/{renderSvg-WD6YDV2I.js → renderSvg-HEEQJD5B.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
- package/package.json +3 -3
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +3 -1
- package/src/RgfaTabixAdapter/walkReader.ts +5 -1
- 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-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-VQ77X5QU.js +0 -4
- /package/dist/chunks/{GraphGenomeView-WJ3FIDY2.js.map → GraphGenomeView-6EDKLBOJ.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-ZW7ALMDV.js.map → GraphTrackSettingsDialog-KYEZWI4Z.js.map} +0 -0
- /package/dist/chunks/{HighlightColorDialog-VBZRUKD5.js.map → HighlightColorDialog-IMLYI64R.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-SPOPTJEN.js.map → LinearGraphDisplay-CRIZLJDE.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-ABZPIZYV.js.map → MinigraphBubbleAdapter-2HPTGZ5N.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-ZJJ4SQHH.js.map → WalkTabixSyntenyAdapter-CUPHY36S.js.map} +0 -0
- /package/dist/chunks/{chunk-RFDSEB2X.js.map → chunk-6DRBCLWY.js.map} +0 -0
- /package/dist/chunks/{chunk-YXVEGNFQ.js.map → chunk-IFBKAC2H.js.map} +0 -0
- /package/dist/chunks/{chunk-JCAZTNYG.js.map → chunk-VW4PPXH6.js.map} +0 -0
- /package/dist/chunks/{renderSvg-WD6YDV2I.js.map → renderSvg-HEEQJD5B.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{h as B,k as M,n as F}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{h as B,k as M,n as F}from"./chunk-NGR473EL.js";import{b as O,h as _}from"./chunk-4EKOQHUX.js";import{F as b,L as A}from"./chunk-B5SVBPXN.js";import{e as R}from"./chunk-YU7T5WOQ.js";import{D as P,E,H as m,d as v,o as T,q as I,r as L,s as w,t as N,w as x,y as D,z as G}from"./chunk-UGCNPRKC.js";import{b as t,c as i,d as k}from"./chunk-JMBDTNUR.js";var S=[{value:0,label:"Fastest"},{value:1,label:"Fast"},{value:2,label:"Default"},{value:3,label:"Fine"},{value:4,label:"Best"}];function f({label:o,value:n,options:e,testId:s,size:c,sx:d,disabled:a,title:h,shown:g,onChange:Q}){let C=R();return i(w,{size:c,sx:d,disabled:a,title:h,children:[t(x,{id:C,shrink:!0,children:o}),t(P,{labelId:C,value:n,label:o,notched:!0,displayEmpty:!0,"data-testid":s,renderValue:l=>g??e.find(z=>z.value===l)?.label??l,onChange:l=>{Q(l.target.value)},children:e.map(l=>t(G,{value:l.value,disabled:l.disabled,title:l.disabled?void 0:l.description,children:t(D,{primary:l.label,secondary:l.disabled?l.description:void 0})},l.value))})]})}var u=F()({section:{marginBottom:24},group:{marginBottom:16},heading:{marginBottom:8}});function r({warn:o=!1,children:n}){return t(m,{variant:"caption",component:"div",color:o?"warning.main":"text.secondary",children:n})}function y({title:o,children:n}){let{classes:e}=u();return i("section",{className:e.group,children:[t(m,{variant:"subtitle1",className:e.heading,children:o}),n]})}function U({label:o,checked:n,onChange:e,children:s}){let{classes:c}=u();return i("div",{className:c.section,children:[t(N,{control:t(E,{checked:n,onChange:d=>{e(d.target.checked)}}),label:o}),s]})}function p({children:o,...n}){let{classes:e}=u();return i("div",{className:e.section,children:[t(f,{sx:{minWidth:200},...n}),o]})}var Y=[5e3,2e4,5e4,1e5];function H(o){return[...new Set([...Y,o])].sort((n,e)=>n-e).map(n=>({value:String(n),label:n.toLocaleString()}))}function W({label:o,choices:n,stored:e,auto:s,testId:c,onChange:d,children:a}){return n.length>0?t(p,{label:o,value:n.some(h=>h.trackId===e)?e:"",options:[{value:"",label:`Automatic (${s?.name??"none"})`},...n.map(({trackId:h,name:g})=>({value:h,label:g}))],testId:c,onChange:d,children:a}):null}var $=k(function(n){let{model:e,onClose:s,children:c}=n,{classes:d}=u();return i(v,{open:!0,onClose:s,title:"Graph settings",children:[i(L,{children:[i(y,{title:"Subgraph",children:[c,t(p,{label:"Node limit",value:String(e.maxGraphNodes),options:H(e.maxGraphNodes),testId:"graph-node-limit-select",onChange:a=>{e.setMaxGraphNodes(Number(a))},children:t(r,{children:"The most nodes a layout draws; past it the graph is declined. Walk rows take no limit."})})]}),i(y,{title:"Drawing",children:[e.anchorPaths.length>1?t(p,{label:"Reference path",value:e.activeReferencePath??"",options:e.anchorPaths.map(({name:a})=>({value:a,label:a})),testId:"graph-reference-path-select",onChange:a=>{e.setReferencePath(a),e.recomputeLayout()},children:t(r,{children:"The path the anchored layouts place x along"})}):null,t(p,{label:"Node width",value:e.nodeWidth,options:A,testId:"graph-node-width-select",onChange:a=>{e.setNodeWidth(a)},children:t(r,{children:"Depth as width. In a cut with walks, depth is how many haplotypes carry the node."})}),i(U,{label:"Draw paths",checked:e.drawPaths,onChange:a=>{e.setLayer("paths",a)},children:[t(r,{children:"Color each node by the paths through it, one lane per path"}),e.drawPaths&&!e.effectiveDrawPaths?t(r,{warn:!0,children:e.pathCount>b?`Off: ${e.pathCount.toLocaleString()} paths is past the ${b} this can tell apart`:"Off: this graph states no paths"}):null]}),t(W,{label:"Gene track",choices:e.geneTrackChoices,stored:e.geneTrackId,auto:M(e.geneTrackChoices,""),testId:"graph-gene-track-select",onChange:a=>{e.setGeneTrackId(a)},children:t(r,{children:"Where genes on the backbone come from"})}),t(W,{label:"Repeat track",choices:e.repeatTrackChoices,stored:e.repeatTrackId,auto:B(e.repeatTrackChoices,""),testId:"graph-repeat-track-select",onChange:a=>{e.setRepeatTrackId(a)},children:t(r,{children:"The tandem repeat annotation walk rows measure and tile by"})})]}),i(y,{title:"Force-directed layout",children:[e.hasGraph&&!e.usesLayoutEngine?t("div",{className:d.section,children:t(r,{warn:!0,children:"No effect on the current layout until Layout is Force-directed"})}):null,t(p,{label:"Engine",value:e.layoutEngine,options:O,testId:"graph-layout-engine-select",onChange:a=>{e.setLayoutEngine(a)},children:t(r,{children:"Stress keeps the reference straight, so a zoom keeps the picture; FMMM lets the whole graph settle."})}),t(p,{label:"Layout quality",value:String(e.layoutQuality),options:S.map(a=>({value:String(a.value),label:a.label})),testId:"graph-layout-quality-select",onChange:a=>{e.setLayoutQuality(Number(a))},children:t(r,{children:"The engine's iteration budget; higher is slower"})}),t(p,{label:"Bubble spread",value:e.bubbleSpread,options:_,testId:"graph-bubble-spread-select",onChange:a=>{e.setBubbleSpread(a)},children:t(r,{children:"How far the layout opens a bubble"})}),e.layoutEngine==="stress"?null:t(U,{label:"Linear layout",checked:e.linearLayout,onChange:a=>{e.setLinearLayout(a)},children:t(r,{children:"Keeps a chain of nodes on one line where it can"})})]})]}),t(I,{children:t(T,{variant:"contained",color:"primary",onClick:s,children:"Close"})})]})}),he=$;export{f as a,he as b};
|
|
2
|
+
//# sourceMappingURL=chunk-PUFH6DMJ.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.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-K5SIJGAE.js", "../../src/GraphGenomeView/components/LabelledSelect.tsx", "../../src/GraphGenomeView/components/GraphSettingsDialog.tsx"],
|
|
4
4
|
"sourcesContent": ["// src/layoutQualities.ts\nvar LAYOUT_QUALITIES = [\n { value: 0, label: \"Fastest\" },\n { value: 1, label: \"Fast\" },\n { value: 2, label: \"Default\" },\n { value: 3, label: \"Fine\" },\n { value: 4, label: \"Best\" }\n];\n\nexport {\n LAYOUT_QUALITIES\n};\n", "import { useId } from 'react'\n\nimport {\n FormControl,\n InputLabel,\n ListItemText,\n MenuItem,\n Select,\n} from '@mui/material'\n\nimport type { SxProps } from '@mui/material'\n\ninterface SelectOption<T extends string> {\n value: T\n label: string\n // an option's tooltip, and the reason under a disabled one, whose tooltip\n // cannot open\n description?: string\n disabled?: boolean\n}\n\n// One dropdown with its label tied to it, so a screen reader names the combobox\nexport default function LabelledSelect<T extends string>({\n label,\n value,\n options,\n testId,\n size,\n sx,\n disabled,\n title,\n shown,\n onChange,\n}: {\n label: string\n value: T\n options: readonly SelectOption<T>[]\n testId?: string\n size?: 'small' | 'medium'\n sx?: SxProps\n disabled?: boolean\n title?: string\n // what the closed select reads, when not the picked option's label\n shown?: string\n onChange: (value: T) => void\n}) {\n const labelId = useId()\n return (\n <FormControl size={size} sx={sx} disabled={disabled} title={title}>\n <InputLabel id={labelId} shrink>\n {label}\n </InputLabel>\n <Select\n labelId={labelId}\n value={value}\n label={label}\n notched\n displayEmpty\n data-testid={testId}\n renderValue={picked =>\n shown ?? options.find(o => o.value === picked)?.label ?? picked\n }\n onChange={e => {\n onChange(e.target.value as T)\n }}\n >\n {options.map(o => (\n <MenuItem\n key={o.value}\n value={o.value}\n disabled={o.disabled}\n title={o.disabled ? undefined : o.description}\n >\n <ListItemText\n primary={o.label}\n secondary={o.disabled ? o.description : undefined}\n />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )\n}\n", "import type { ReactNode } from 'react'\n\nimport { BUBBLE_SPREADS } from '@jbrowse/bandage-core/bubbleSpreads'\nimport { LAYOUT_ENGINES } from '@jbrowse/bandage-core/layoutEngines'\nimport { LAYOUT_QUALITIES } from '@jbrowse/bandage-core/layoutQualities'\nimport { NODE_WIDTHS } from '@jbrowse/bandage-core/nodeWidths'\nimport { MAX_PATH_COLORS } from '@jbrowse/bandage-core/pathColors'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n Button,\n DialogActions,\n DialogContent,\n FormControlLabel,\n Switch,\n Typography,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\nimport LabelledSelect from './LabelledSelect'\nimport { pickGeneTrack } from '../genes/geneFeatures'\nimport { pickRepeatTrack } from '../repeats/repeatFeatures'\n\nimport type { GraphPaneModel } from '../model'\n\nconst useStyles = makeStyles()({\n section: {\n marginBottom: 24,\n },\n group: {\n marginBottom: 16,\n },\n heading: {\n marginBottom: 8,\n },\n})\n\nfunction Caption({\n warn = false,\n children,\n}: {\n warn?: boolean\n children: ReactNode\n}) {\n return (\n <Typography\n variant=\"caption\"\n component=\"div\"\n color={warn ? 'warning.main' : 'text.secondary'}\n >\n {children}\n </Typography>\n )\n}\n\nfunction Group({ title, children }: { title: string; children: ReactNode }) {\n const { classes } = useStyles()\n return (\n <section className={classes.group}>\n <Typography variant=\"subtitle1\" className={classes.heading}>\n {title}\n </Typography>\n {children}\n </section>\n )\n}\n\nfunction SettingSwitch({\n label,\n checked,\n onChange,\n children,\n}: {\n label: string\n checked: boolean\n onChange: (checked: boolean) => void\n children?: ReactNode\n}) {\n const { classes } = useStyles()\n return (\n <div className={classes.section}>\n <FormControlLabel\n control={\n <Switch\n checked={checked}\n onChange={e => {\n onChange(e.target.checked)\n }}\n />\n }\n label={label}\n />\n {children}\n </div>\n )\n}\n\n// one dropdown setting, at the dialog's width, and its caption\nfunction SettingSelect<T extends string>({\n children,\n ...props\n}: Omit<Parameters<typeof LabelledSelect<T>>[0], 'size' | 'sx'> & {\n children?: ReactNode\n}) {\n const { classes } = useStyles()\n return (\n <div className={classes.section}>\n <LabelledSelect sx={{ minWidth: 200 }} {...props} />\n {children}\n </div>\n )\n}\n\nconst NODE_LIMITS = [5000, 20_000, 50_000, 100_000]\n\n// the presets, with a limit a session states among them\nfunction nodeLimitOptions(current: number) {\n return [...new Set([...NODE_LIMITS, current])]\n .sort((a, b) => a - b)\n .map(limit => ({ value: String(limit), label: limit.toLocaleString() }))\n}\n\ninterface NamedTrack {\n trackId: string\n name: string\n}\n\n// '' leaves the pick to the heuristic, so a session can go back to it\nfunction TrackPickSetting({\n label,\n choices,\n stored,\n auto,\n testId,\n onChange,\n children,\n}: {\n label: string\n choices: NamedTrack[]\n stored: string\n auto: NamedTrack | undefined\n testId: string\n onChange: (trackId: string) => void\n children: ReactNode\n}) {\n return choices.length > 0 ? (\n <SettingSelect\n label={label}\n value={choices.some(t => t.trackId === stored) ? stored : ''}\n options={[\n { value: '', label: `Automatic (${auto?.name ?? 'none'})` },\n ...choices.map(({ trackId, name }) => ({\n value: trackId,\n label: name,\n })),\n ]}\n testId={testId}\n onChange={onChange}\n >\n {children}\n </SettingSelect>\n ) : null\n}\n\n// Toggles the menus already offer (halos, genes, color) stay out of here.\n// `children` is the host's own part of the subgraph group.\nconst GraphSettingsDialog = observer(function GraphSettingsDialog(props: {\n model: GraphPaneModel\n onClose: () => void\n children?: ReactNode\n}) {\n const { model, onClose, children } = props\n const { classes } = useStyles()\n\n return (\n <Dialog open onClose={onClose} title=\"Graph settings\">\n <DialogContent>\n <Group title=\"Subgraph\">\n {children}\n <SettingSelect\n label=\"Node limit\"\n value={String(model.maxGraphNodes)}\n options={nodeLimitOptions(model.maxGraphNodes)}\n testId=\"graph-node-limit-select\"\n onChange={limit => {\n model.setMaxGraphNodes(Number(limit))\n }}\n >\n <Caption>\n The most nodes a layout draws; past it the graph is declined. Walk\n rows take no limit.\n </Caption>\n </SettingSelect>\n </Group>\n\n <Group title=\"Drawing\">\n {model.anchorPaths.length > 1 ? (\n <SettingSelect\n label=\"Reference path\"\n value={model.activeReferencePath ?? ''}\n options={model.anchorPaths.map(({ name }) => ({\n value: name,\n label: name,\n }))}\n testId=\"graph-reference-path-select\"\n onChange={name => {\n model.setReferencePath(name)\n void model.recomputeLayout()\n }}\n >\n <Caption>The path the anchored layouts place x along</Caption>\n </SettingSelect>\n ) : null}\n\n <SettingSelect\n label=\"Node width\"\n value={model.nodeWidth}\n options={NODE_WIDTHS}\n testId=\"graph-node-width-select\"\n onChange={width => {\n model.setNodeWidth(width)\n }}\n >\n <Caption>\n Depth as width. In a cut with walks, depth is how many haplotypes\n carry the node.\n </Caption>\n </SettingSelect>\n\n <SettingSwitch\n label=\"Draw paths\"\n checked={model.drawPaths}\n onChange={draw => {\n model.setLayer('paths', draw)\n }}\n >\n <Caption>\n Color each node by the paths through it, one lane per path\n </Caption>\n {model.drawPaths && !model.effectiveDrawPaths ? (\n <Caption warn>\n {model.pathCount > MAX_PATH_COLORS\n ? `Off: ${model.pathCount.toLocaleString()} paths is past the ${MAX_PATH_COLORS} this can tell apart`\n : 'Off: this graph states no paths'}\n </Caption>\n ) : null}\n </SettingSwitch>\n\n <TrackPickSetting\n label=\"Gene track\"\n choices={model.geneTrackChoices}\n stored={model.geneTrackId}\n auto={pickGeneTrack(model.geneTrackChoices, '')}\n testId=\"graph-gene-track-select\"\n onChange={trackId => {\n model.setGeneTrackId(trackId)\n }}\n >\n <Caption>Where genes on the backbone come from</Caption>\n </TrackPickSetting>\n\n <TrackPickSetting\n label=\"Repeat track\"\n choices={model.repeatTrackChoices}\n stored={model.repeatTrackId}\n auto={pickRepeatTrack(model.repeatTrackChoices, '')}\n testId=\"graph-repeat-track-select\"\n onChange={trackId => {\n model.setRepeatTrackId(trackId)\n }}\n >\n <Caption>\n The tandem repeat annotation walk rows measure and tile by\n </Caption>\n </TrackPickSetting>\n </Group>\n\n <Group title=\"Force-directed layout\">\n {model.hasGraph && !model.usesLayoutEngine ? (\n <div className={classes.section}>\n <Caption warn>\n No effect on the current layout until Layout is Force-directed\n </Caption>\n </div>\n ) : null}\n\n <SettingSelect\n label=\"Engine\"\n value={model.layoutEngine}\n options={LAYOUT_ENGINES}\n testId=\"graph-layout-engine-select\"\n onChange={engine => {\n model.setLayoutEngine(engine)\n }}\n >\n <Caption>\n Stress keeps the reference straight, so a zoom keeps the picture;\n FMMM lets the whole graph settle.\n </Caption>\n </SettingSelect>\n\n <SettingSelect\n label=\"Layout quality\"\n value={String(model.layoutQuality)}\n options={LAYOUT_QUALITIES.map(q => ({\n value: String(q.value),\n label: q.label,\n }))}\n testId=\"graph-layout-quality-select\"\n onChange={quality => {\n model.setLayoutQuality(Number(quality))\n }}\n >\n <Caption>\n The engine's iteration budget; higher is slower\n </Caption>\n </SettingSelect>\n\n <SettingSelect\n label=\"Bubble spread\"\n value={model.bubbleSpread}\n options={BUBBLE_SPREADS}\n testId=\"graph-bubble-spread-select\"\n onChange={spread => {\n model.setBubbleSpread(spread)\n }}\n >\n <Caption>How far the layout opens a bubble</Caption>\n </SettingSelect>\n\n {model.layoutEngine === 'stress' ? null : (\n <SettingSwitch\n label=\"Linear layout\"\n checked={model.linearLayout}\n onChange={linear => {\n model.setLinearLayout(linear)\n }}\n >\n <Caption>Keeps a chain of nodes on one line where it can</Caption>\n </SettingSwitch>\n )}\n </Group>\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"contained\" color=\"primary\" onClick={onClose}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n})\n\nexport default GraphSettingsDialog\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["LAYOUT_QUALITIES", "LabelledSelect", "label", "value", "options", "testId", "size", "sx", "disabled", "title", "shown", "onChange", "labelId", "useId", "jsxs", "FormControl", "jsx", "InputLabel", "Select", "picked", "o", "e", "MenuItem", "ListItemText", "useStyles", "makeStyles", "Caption", "warn", "children", "jsx", "Typography", "Group", "title", "classes", "jsxs", "SettingSwitch", "label", "checked", "onChange", "FormControlLabel", "Switch", "e", "SettingSelect", "props", "LabelledSelect", "NODE_LIMITS", "nodeLimitOptions", "current", "a", "b", "limit", "TrackPickSetting", "choices", "stored", "auto", "testId", "t", "trackId", "name", "GraphSettingsDialog", "observer", "model", "onClose", "Dialog", "DialogContent", "NODE_WIDTHS", "width", "draw", "MAX_PATH_COLORS", "pickGeneTrack", "pickRepeatTrack", "LAYOUT_ENGINES", "engine", "LAYOUT_QUALITIES", "q", "quality", "BUBBLE_SPREADS", "spread", "linear", "DialogActions", "Button", "GraphSettingsDialog_default"]
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
function o(t){return t===void 0||t==="*"?void 0:t}function s(t){let e=t.split(" ");return{refName:e[0],start:+e[1],end:+e[2],segmentCount:+e[3],pathCount:+e[4],inversion:e[5]==="1",shortestAlleleLength:+e[6],longestAlleleLength:+e[7],segments:e[11],shortestAllele:o(e[12]),longestAllele:o(e[13])}}function u(t,e){return t.key!==void 0||e.key!==void 0?t.key===e.key:t.refName===e.refName&&t.start===e.start&&t.end===e.end}function i(t){return t.key??`${t.refName}:${t.start}-${t.end}`}function b(t){let{shortestAlleleLength:e,longestAlleleLength:n}=t;return e===n?`${n.toLocaleString()} bp`:`${e.toLocaleString()}-${n.toLocaleString()} bp`}var r=2147483647;function a(t){let{pathCount:e,segmentCount:n,inversion:l}=t;return[`${n} segments`,e===r?"more paths than gfatools counts":`up to ${e.toLocaleString()} paths`,...l?["inversion"]:[]].join(", ")}export{s as a,u as b,i as c,b as d,r as e,a as f};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-Q55PHRHV.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.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FX4RDMDN.js"],
|
|
4
4
|
"sourcesContent": ["// src/bubbles/bubbleLine.ts\nfunction sequence(field) {\n return field === void 0 || field === \"*\" ? void 0 : field;\n}\nfunction parseBubbleLine(line) {\n const cols = line.split(\"\t\");\n return {\n refName: cols[0],\n start: +cols[1],\n end: +cols[2],\n segmentCount: +cols[3],\n pathCount: +cols[4],\n inversion: cols[5] === \"1\",\n shortestAlleleLength: +cols[6],\n longestAlleleLength: +cols[7],\n segments: cols[11],\n shortestAllele: sequence(cols[12]),\n longestAllele: sequence(cols[13])\n };\n}\nfunction sameBubble(a, b) {\n return a.key !== void 0 || b.key !== void 0 ? a.key === b.key : a.refName === b.refName && a.start === b.start && a.end === b.end;\n}\nfunction bubbleKey(b) {\n return b.key ?? `${b.refName}:${b.start}-${b.end}`;\n}\nfunction bubbleLabel(bubble) {\n const { shortestAlleleLength: min, longestAlleleLength: max } = bubble;\n return min === max ? `${max.toLocaleString()} bp` : `${min.toLocaleString()}-${max.toLocaleString()} bp`;\n}\nvar SATURATED_PATH_COUNT = 2147483647;\nfunction bubbleDescription(bubble) {\n const { pathCount, segmentCount, inversion } = bubble;\n return [\n `${segmentCount} segments`,\n pathCount === SATURATED_PATH_COUNT ? \"more paths than gfatools counts\" : `up to ${pathCount.toLocaleString()} paths`,\n ...inversion ? [\"inversion\"] : []\n ].join(\", \");\n}\n\nexport {\n parseBubbleLine,\n sameBubble,\n bubbleKey,\n bubbleLabel,\n SATURATED_PATH_COUNT,\n bubbleDescription\n};\n"],
|
|
5
5
|
"mappings": "AACA,SAASA,EAASC,EAAO,CACvB,OAAOA,IAAU,QAAUA,IAAU,IAAM,OAASA,CACtD,CACA,SAASC,EAAgBC,EAAM,CAC7B,IAAMC,EAAOD,EAAK,MAAM,GAAG,EAC3B,MAAO,CACL,QAASC,EAAK,CAAC,EACf,MAAO,CAACA,EAAK,CAAC,EACd,IAAK,CAACA,EAAK,CAAC,EACZ,aAAc,CAACA,EAAK,CAAC,EACrB,UAAW,CAACA,EAAK,CAAC,EAClB,UAAWA,EAAK,CAAC,IAAM,IACvB,qBAAsB,CAACA,EAAK,CAAC,EAC7B,oBAAqB,CAACA,EAAK,CAAC,EAC5B,SAAUA,EAAK,EAAE,EACjB,eAAgBJ,EAASI,EAAK,EAAE,CAAC,EACjC,cAAeJ,EAASI,EAAK,EAAE,CAAC,CAClC,CACF,CACA,SAASC,EAAWC,EAAGC,EAAG,CACxB,OAAOD,EAAE,MAAQ,QAAUC,EAAE,MAAQ,OAASD,EAAE,MAAQC,EAAE,IAAMD,EAAE,UAAYC,EAAE,SAAWD,EAAE,QAAUC,EAAE,OAASD,EAAE,MAAQC,EAAE,GAChI,CACA,SAASC,EAAUD,EAAG,CACpB,OAAOA,EAAE,KAAO,GAAGA,EAAE,OAAO,IAAIA,EAAE,KAAK,IAAIA,EAAE,GAAG,EAClD,CACA,SAASE,EAAYC,EAAQ,CAC3B,GAAM,CAAE,qBAAsBC,EAAK,oBAAqBC,CAAI,EAAIF,EAChE,OAAOC,IAAQC,EAAM,GAAGA,EAAI,eAAe,CAAC,MAAQ,GAAGD,EAAI,eAAe,CAAC,IAAIC,EAAI,eAAe,CAAC,KACrG,CACA,IAAIC,EAAuB,WAC3B,SAASC,EAAkBJ,EAAQ,CACjC,GAAM,CAAE,UAAAK,EAAW,aAAAC,EAAc,UAAAC,CAAU,EAAIP,EAC/C,MAAO,CACL,GAAGM,CAAY,YACfD,IAAcF,EAAuB,kCAAoC,SAASE,EAAU,eAAe,CAAC,SAC5G,GAAGE,EAAY,CAAC,WAAW,EAAI,CAAC,CAClC,EAAE,KAAK,IAAI,CACb",
|
|
6
6
|
"names": ["sequence", "field", "parseBubbleLine", "line", "cols", "sameBubble", "a", "b", "bubbleKey", "bubbleLabel", "bubble", "min", "max", "SATURATED_PATH_COUNT", "bubbleDescription", "pathCount", "segmentCount", "inversion"]
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{B as Vt,C as zt,D as Et,E as xt,M as qt,N as lt,O as Mt,d as Bt,e as gt,g as $t,h as Xt,i as Kt,j as Ut,k as Yt,u as jt}from"./chunk-B5SVBPXN.js";import{a as J,g as Q}from"./chunk-ULLEUORS.js";function p(t,n,e,o){return(o<<24|e<<16|n<<8|t)>>>0}function Rt(t){return t&255}function _t(t){return t>>>8&255}function yt(t){return t>>>16&255}function bt(t){return t>>>24&255}function Jt(t){return`rgba(${Rt(t)},${_t(t)},${yt(t)},${bt(t)/255})`}function Ee(t,n){return`rgba(${Math.round(t[0]*255)},${Math.round(t[1]*255)},${Math.round(t[2]*255)},${n})`}function j(t,n){return p(Rt(t),_t(t),yt(t),Math.round(bt(t)*n))}function xe(t,n){let e=Math.max(0,1-1/n),o=r=>Math.round(r+(255-r)*e);return p(o(Rt(t)),o(_t(t)),o(yt(t)),bt(t))}var Qt=300,Z=.7,tt=.5;function bn(t){return`hsl(${t}, ${Z*100}%, ${tt*100}%)`}function nt(t){return Math.max(0,Math.min(1,t))*Qt}function vt(t,n){return nt((t-n.start)/(n.end-n.start))}var vn=30;function Re({start:t,bp:n,reversed:e},o){let r=vt(t,o),s=vt(t+n,o);if(s-r<1)return[(r+s)/2];let a=Math.ceil((s-r)/vn);return Array.from({length:a+1},(i,c)=>vt(t+n*(e?a-c:c)/a,o))}var An=Array.from({length:7},(t,n)=>({offset:n/6,color:bn(n/6*Qt)})),_e=`linear-gradient(to right, ${An.map(t=>`${t.color} ${t.offset*100}%`).join(", ")})`;var Cn=Yt();function Zt(t,n,e,o,r,s,a=!1){return Cn(t,[n,e.scaleX,e.scaleY,o,s,a,r],()=>{let i=new Map;for(let c=0;c<n.edges.length;c++){let l=o?.get(c),d=jt(t,n.edges[c],e,l,l&&s?.[c],a);d&&i.set(c,d)}return i})}var Sn=4;function wn(t){let n=new Map;for(let e of t.edges)J(n,e.from,e.to),J(n,e.to,e.from);return n}function In({nodeId:t,nodeById:n,neighbors:e}){let o=new Set([t]),r=[t],s=1/0,a=-1/0;for(let i=0;i<Sn&&r.length>0;i++){let c=[];for(let l of r){let d=e.get(l);if(d){for(let m of d)if(!o.has(m)){o.add(m);let h=n.get(m);h&&Q(h)?(s=Math.min(s,h.stable.start+h.length),a=Math.max(a,h.stable.start)):c.push(m)}}}r=c}return s===1/0?void 0:{start:Math.min(s,a),end:Math.max(s,a)}}function Tn({nodeId:t,nodeById:n,neighbors:e}){let o=n.get(t);return o===void 0?void 0:Q(o)?{start:o.stable.start,end:o.stable.start+o.length}:In({nodeId:t,nodeById:n,neighbors:e})}function tn(t){let n=new Map(t.nodes.map(r=>[r.id,r])),e=wn(t),o=new Map;for(let r of t.nodes){let s=Tn({nodeId:r.id,nodeById:n,neighbors:e});s&&o.set(r.id,(s.start+s.end)/2)}return o}var Nn=p(119,119,119,217),nn=p(136,136,136,217),Ln=p(24,24,28,240),On=2.2,ln=p(160,160,160,255),et=.18,He=Jt(j(ln,et)),kn=11,Pn=1.2,Dn=1e-6,Fn=7,Hn=3,Gn=3,Wn=1.5,en=3,Bn=.5,$n=.45,At=12,Xn=1e-6,I=new Float64Array(64),D=new Float64Array(64),F=new Float64Array(64);function Kn(t,n,e,o){let r=t.length*At+1;I.length<r&&(I=new Float64Array(r),D=new Float64Array(r),F=new Float64Array(r));let s=t[t.length-1];I[0]=s.x1,D[0]=s.y1,F[0]=0;let a=1,i=0;for(let c=t.length-1;c>=0&&i<o;c--){let l=t[c];for(let d=1;d<=At&&i<o;d++){let m=1-(d/At)**2,h=1-m,R=h*h*h,M=3*h*h*m,T=3*h*m*m,v=m*m*m,N=R*l.x0+M*l.cx0+T*l.cx1+v*l.x1,L=R*l.y0+M*l.cy0+T*l.cy1+v*l.y1;i+=Math.hypot(N-I[a-1],(L-D[a-1])*e)*n,I[a]=N,D[a]=L,F[a]=i,a++}}return a}function on(t,n){let e=1;for(;e<t-1&&F[e]<n;)e++;let o=F[e-1],r=F[e],s=r>o?Math.min(1,Math.max(0,(n-o)/(r-o))):0;return{x:I[e-1]+(I[e]-I[e-1])*s,y:D[e-1]+(D[e]-D[e-1])*s}}function Un({curves:t,edgeHalfWidth:n,nodeHalfWidth:e,scale:o,yToX:r,color:s,fromSegments:a,toSegments:i}){let c=Fn+Hn*n,l=Kn(t,o,r,e+en*c),d=F[l-1],m=d<Xn,h=Math.min(e,d),R=m?Math.min(1,Ut(a,o,o*r)/c):1;if(m?R<Bn:d<en*c)return;let M=on(l,h),T=on(l,h+c*R),v=M.x-T.x,N=(M.y-T.y)*r,L=t[t.length-1];return{x:M.x,y:M.y,angle:Math.hypot(v,N)>0?Math.atan2(N,v):ne(L,r,jn(L,i)),length:c*R,halfWidth:(Gn+Wn*n)*R,color:s}}function Yn(t,n,e,o,r){if(o)return $t(t).from==="start";let s=a=>Math.hypot(a.x-e.x0,(a.y-e.y0)*r);return s(n[0])<s(n.at(-1))}function jn(t,n){if(n.length<2)return;let e=n[0],o=n[n.length-1];return Math.hypot(t.x1-e.x,t.y1-e.y)<=Math.hypot(t.x1-o.x,t.y1-o.y)?{from:e,to:n[1]}:{from:o,to:n[n.length-2]}}function rn(t,n){if(!t||!n)return;let e=n.x-t.x,o=n.y-t.y,r=Math.hypot(e,o);return r>0?{nx:-o/r,ny:e/r}:void 0}function Ct(t,n=1){let e=n===1?t:t.map(o=>({x:o.x,y:o.y*n}));return e.map((o,r)=>{let s=rn(e[r-1],o),a=rn(o,e[r+1]);if(s&&a){let i=(s.nx+a.nx)/2,c=(s.ny+a.ny)/2,l=s.nx*i+s.ny*c;return l>.1?{nx:i/l,ny:c/l}:{nx:i,ny:c}}return s??a??{nx:0,ny:0}})}function sn(t,n,e,o=1){return t.map((r,s)=>({x:r.x+n[s].nx*e,y:r.y+n[s].ny*e/o}))}function wt(t,n,e){let o=(1-Math.abs(2*e-1))*n,r=o*(1-Math.abs(t/60%2-1)),s=e-o/2,a=0,i=0,c=0;return t<60?(a=o,i=r):t<120?(a=r,i=o):t<180?(i=o,c=r):t<240?(i=r,c=o):t<300?(a=r,c=o):(a=o,c=r),[a+s,i+s,c+s]}function ft(t,n,e,o=1){let[r,s,a]=wt(t,n,e);return p(Math.round(r*255),Math.round(s*255),Math.round(a*255),Math.round(o*255))}var Vn=[[68,1,84],[59,82,139],[33,145,140],[94,201,98],[253,231,37]],zn=[[237,137,44],[158,42,122]],qn=[[220,50,50],[50,120,220]];function St(t,n){let e=Math.max(0,Math.min(1,n))*(t.length-1),o=Math.min(t.length-2,Math.floor(e)),r=e-o,s=t[o],a=t[o+1];return p(Math.round(s[0]+(a[0]-s[0])*r),Math.round(s[1]+(a[1]-s[1])*r),Math.round(s[2]+(a[2]-s[2])*r),255)}function Jn(t,n){return ft(Vt(t),Et,xt,n)}var fn=[60,65,72],It=p(...fn,255),Ge=`rgb(${fn.join(", ")})`;function Qn(t,n){let e=n.midpoints.get(t.id);return Q(t)&&e!==void 0?(e-n.start)/n.span:void 0}function We(t,n){let e=tn(t);if(n&&n.end>n.start)return{start:n.start,span:n.end-n.start,midpoints:e};let o=1/0,r=-1/0;for(let s of e.values())o=Math.min(o,s),r=Math.max(r,s);return{start:o===1/0?0:o,span:r>o?r-o:1,midpoints:e}}function Zn(t,n){let e=1/0,o=-1/0,r=1/0,s=-1/0,a=0;for(let i of t.nodes)i.stable!==void 0&&i.stable.rank>a&&(a=i.stable.rank),i.depth<e&&(e=i.depth),i.depth>o&&(o=i.depth),i.length<r&&(r=i.length),i.length>s&&(s=i.length);return{minDepth:e,maxDepth:o,minLength:r,maxLength:s,maxRank:a,nodeCount:t.nodes.length,referenceRamp:n}}function te(t,n,e,o){switch(e){case"random":return Jn(t.id,1);case"depth":return St(Vn,o.maxDepth>o.minDepth?(t.depth-o.minDepth)/(o.maxDepth-o.minDepth):.5);case"node-length":return St(qn,o.maxLength>o.minLength?(t.length-o.minLength)/(o.maxLength-o.minLength):.5);case"stable-rank":return t.stable===void 0?p(160,160,160,255):t.stable.rank===0?p(52,152,219,255):St(zn,o.maxRank>1?(t.stable.rank-1)/(o.maxRank-1):0);case"reference-position":{let r=o.referenceRamp;if(r===void 0)return p(160,160,160,255);let s=Qn(t,r);return s===void 0?It:ft(nt(s),Z,tt)}case"grey":return p(160,160,160,255);case"rainbow":{let r=o.nodeCount>1?n/o.nodeCount*360:0;return ft(r,.75,.5)}default:return p(52,152,219,255)}}function ne(t,n=1,e){let o=[[t.cx1,t.cy1],[t.cx0,t.cy0],[t.x0,t.y0]];for(let[r,s]of o){let a=t.x1-r,i=(t.y1-s)*n;if(Math.hypot(a,i)>0)return Math.atan2(i,a)}return e?Math.atan2((e.to.y-e.from.y)*n,e.to.x-e.from.x):0}function ee(t,n){let e=!1;for(let o=0;o<t.length-1&&!e;o++){let r=t[o],s=t[o+1];e=Math.max(r.x,s.x)>=n.minX&&Math.min(r.x,s.x)<=n.maxX&&Math.max(r.y,s.y)>=n.minY&&Math.min(r.y,s.y)<=n.maxY}return e}function oe(t,n){for(let e of t){let o=Math.min(e.x0,e.cx0,e.cx1,e.x1),r=Math.max(e.x0,e.cx0,e.cx1,e.x1),s=Math.min(e.y0,e.cy0,e.cy1,e.y1),a=Math.max(e.y0,e.cy0,e.cy1,e.y1);if(r>=n.minX&&o<=n.maxX&&a>=n.minY&&s<=n.maxY)return!0}return!1}var an=new WeakMap;function re(t){let n=an.get(t);if(!n){let e=[],o=new Map,r=t.paths??[];for(let s=0;s<r.length;s++)e.push(ft(zt(s,r.length),Et,xt,.85)),o.has(r[s].name)||o.set(r[s].name,s);n={pathColorByIndex:e,pathIndexByName:o},an.set(t,n)}return n}var cn=new WeakMap,se=new Map;function ae(t){let n=cn.get(t);if(!n){n=new Map;for(let[e,o]of(t.paths??[]).entries())for(let r of new Set(o.nodeIds))J(n,r,e);cn.set(t,n)}return n}function Be(t){let{nodePositions:n,graph:e,nodeById:o,colorScheme:r,contigThickness:s,connectorThickness:a,drawPaths:i,nodeWidth:c="uniform",highlight:l,axis:d,linearLayout:m,viewportBounds:h,referenceRamp:R,deletions:M,deletionRoutes:T,stranded:v,hiddenEdges:N,version:L=0}=t,ut=c==="depth"?qt(e):0,ot=d.scaleX,dt=1/Math.max(ot,Dn),_=Xt(d),gn=Zt(n,e,d,M,L,T,v),H=[],Ot=new Map,rt=[],kt=new Map,G=[],Pt=new Map,En=Zn(e,R),Dt=new Map;if(r==="rainbow")for(let f=0;f<e.nodes.length;f++)Dt.set(e.nodes[f].id,f);let mt=e.paths?.length??0,{pathColorByIndex:Ft,pathIndexByName:xn}=re(e),Mn=f=>Ft[xn.get(f)??-1]??nn,Rn=i&&mt>1?ae(e):se,_n=ot>(m?1:$n);for(let f=0;f<e.edges.length;f++){let u=e.edges[f],y=n[u.from],A=n[u.to],g=gn.get(f);if(!y?.length||!A?.length||!g||N?.has(f))continue;let W=u.pathIds?.length??0,V=M?.get(f)!==void 0,B=l?.edgeIndexes.has(f)??!1,$=a/2*(V?On:1),X=i&&W>0,O=V?Ln:Nn,C=!l||B?O:j(O,et),z=o.get(u.to),K=(z?lt(z,s,c,ut):s)/2,S=x=>!h||oe(x,h),k=(x,b,E)=>{if(V)for(let P of Bt(x,kn/ot,_,h))G.push({curves:P,thickness:b,color:E});else G.push({curves:x,thickness:b,color:E})},w=x=>{let b=_n?Un({curves:x,edgeHalfWidth:a/2,nodeHalfWidth:K,scale:ot,yToX:_,color:C,fromSegments:y,toSegments:A}):void 0;b&&rt.push(b)},U=G.length,at=rt.length,it=l?.walks.length&&B&&!X?l.walks:void 0;if(it){let x=o.get(u.from),b=x?lt(x,s,c,ut):s,E=Mt(b,it.length),P=Ct(y,_),{nx:ct,ny:q}=(Yn(u,y,g[0],v,_)?P[0]:P.at(-1))??{nx:0,ny:0};it.forEach((Y,yn)=>{if(!Y.edgeIndexes.has(f))return;let pt=(yn-(it.length-1)/2)*E*dt,Wt=pt===0?g:gt(g,ct*pt,q*pt/_);S(Wt)&&k(Wt,E/2,Y.colors.get(u.from)??Y.colors.get(u.to)??O)}),G.length>U&&w(g)}else if(!X)S(g)&&(k(g,$,C),w(g));else{let x=Kt(y,A,W,d),b=Math.floor((W-1)/2);for(let E=0;E<W;E++){let{x:P,y:ct}=x[E],q=P===0&&ct===0?g:gt(g,P,ct);if(!S(q))continue;let Y=Mn(u.pathIds[E]);k(q,$,l&&(l.walks.length?!l.names.has(u.pathIds[E]):!B)?j(Y,et):Y),E===b&&w(q)}}let Ht=G.length-U;Ht>0&&Pt.set(f,{start:U,count:Ht});let Gt=rt.length-at;Gt>0&&kt.set(f,{start:at,count:Gt})}for(let[f,u]of Object.entries(n)){let y=o.get(f);if(!y||h&&!ee(u,h))continue;let A=l!==void 0&&!l.nodeIds.has(f),g=A?ln:te(y,Dt.get(f)??0,r,En),W=A?j(g,et):g,st=lt(y,s,c,ut),V=st/2,B=H.length,$=Rn.get(f),X=st/mt,O=u.length>=2,C=l?.walks.length&&!A&&!$?.length?l.walks:void 0;if(O&&C){let K=Mt(st,C.length),S=Ct(u,_);C.forEach((k,w)=>{let U=k.colors.get(f);if(U===void 0)return;let at=(w-(C.length-1)/2)*K*dt;H.push({points:C.length===1?u:sn(u,S,at,_),thickness:K/2,color:U})})}else if(O&&$?.length&&X>=Pn){let K=Ct(u,_);for(let S of $){let k=(S-(mt-1)/2)*X*dt,w=Ft[S]??nn;H.push({points:sn(u,K,k,_),thickness:X/2,color:A?j(w,et):w})}}else O&&H.push({points:u,thickness:V,color:W});let z=H.length-B;z>0&&Ot.set(f,{start:B,count:z})}return{nodeStrokes:H,nodeStrokeRuns:Ot,arrows:rt,arrowRuns:kt,edgeCurves:G,edgeCurveRuns:Pt}}var un=[{value:"progress",label:"Progress along the walk"},{value:"walk",label:"One colour for the walk"},{value:"reference",label:"Reference position"}],Nt=[{value:"grey",label:"Grey to black",ends:["#a3a3a3","#151515"]},{value:"blue",label:"Cyan to navy",ends:["#6ee0f0","#0b2c7a"]},{value:"red",label:"Yellow to red",ends:["#ffd24a","#b3121b"]},{value:"purple",label:"Pink to plum",ends:["#f5a3d8","#5e1a6e"]},{value:"green",label:"Lime to forest",ends:["#b6e36c","#0b5d3b"]},{value:"rainbow",label:"Rainbow"}],hn=["blue","red","purple","green"],ie=t=>un.some(n=>n.value===t),ce=t=>Nt.some(n=>n.value===t);function le(t,n,e,o=!0){let{field:r,scheme:s}=t.color??{},a=ie(r)?r:o?"progress":"walk",i=n?"grey":hn[e%hn.length],c=ce(s)?s==="rainbow"&&a!=="reference"?i:s:i;return{field:a,scheme:c}}var dn=.5,fe=t=>t<=.04045?t/12.92:((t+.055)/1.055)**2.4,he=t=>t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055;function ue(t){let[n,e,o]=[1,3,5].map(i=>fe(Number.parseInt(t.slice(i,i+2),16)/255)),r=Math.cbrt(.4122214708*n+.5363325363*e+.0514459929*o),s=Math.cbrt(.2119034982*n+.6806995451*e+.1073969566*o),a=Math.cbrt(.0883024619*n+.2817188376*e+.6299787005*o);return[.2104542553*r+.793617785*s-.0040720468*a,1.9779984951*r-2.428592205*s+.4505937099*a,.0259040371*r+.7827717662*s-.808675766*a]}function de([t,n,e]){let o=(t+.3963377774*n+.2158037573*e)**3,r=(t-.1055613458*n-.0638541728*e)**3,s=(t-.0894841775*n-1.291485548*e)**3;return[4.0767416621*o-3.3077115913*r+.2309699292*s,-1.2684380046*o+2.6097574011*r-.3413193965*s,-.0041960863*o-.7034186147*r+1.707614701*s].map(a=>he(Math.max(0,Math.min(1,a)))*255)}var Tt=new Map;function me(t){if(!Tt.has(t)){let n=Nt.find(e=>e.value===t);Tt.set(t,n&&"ends"in n?n.ends.map(ue):void 0)}return Tt.get(t)}function Lt(t,n){let e=Math.max(0,Math.min(1,n)),o=me(t);if(!o)return wt(nt(e),Z,tt).map(a=>a*255);let[r,s]=o;return de(r.map((a,i)=>a+(s[i]-a)*e))}function mn(t,n){let[e,o,r]=Lt(t,n).map(Math.round);return`rgb(${e}, ${o}, ${r})`}function ht(t,n){let[e,o,r]=Lt(t,n).map(Math.round);return p(e,o,r,255)}function pe({field:t,scheme:n},e){return t==="walk"?ht(n,dn):e===void 0?pn:ht(n,e)}var pn=It;function ge({field:t,scheme:n}){let e=(o,r)=>({offset:o,color:mn(n,r),abgr:ht(n,r)});return t==="walk"?[e(0,dn)]:Array.from({length:7},(o,r)=>e(r/6,r/6))}export{wn as a,Tn as b,p as c,Jt as d,Ee as e,j as f,xe as g,bn as h,Re as i,An as j,_e as k,Zt as l,He as m,wt as n,Ge as o,Qn as p,We as q,Zn as r,te as s,Be as t,un as u,Nt as v,le as w,pe as x,pn as y,ge as z};
|
|
2
|
+
//# sourceMappingURL=chunk-QQCTNB2Z.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-G2FD7S3C.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-GQZVR5DW.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-OYCQVJYY.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VX656OAZ.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-JGHZ3N34.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-2XEAITWM.js"],
|
|
4
|
+
"sourcesContent": ["// src/renderer/colorBits.ts\nfunction packAbgr(r, g, b, a) {\n return (a << 24 | b << 16 | g << 8 | r) >>> 0;\n}\nfunction abgrRed(c) {\n return c & 255;\n}\nfunction abgrGreen(c) {\n return c >>> 8 & 255;\n}\nfunction abgrBlue(c) {\n return c >>> 16 & 255;\n}\nfunction abgrAlpha(c) {\n return c >>> 24 & 255;\n}\nfunction abgrToCssRgba(c) {\n return `rgba(${abgrRed(c)},${abgrGreen(c)},${abgrBlue(c)},${abgrAlpha(c) / 255})`;\n}\nfunction normalizedRgbToCssRgba(c, alpha) {\n return `rgba(${Math.round(c[0] * 255)},${Math.round(c[1] * 255)},${Math.round(c[2] * 255)},${alpha})`;\n}\nfunction fadeAbgr(c, alpha) {\n return packAbgr(\n abgrRed(c),\n abgrGreen(c),\n abgrBlue(c),\n Math.round(abgrAlpha(c) * alpha)\n );\n}\nfunction brightenAbgr(c, factor) {\n const t = Math.max(0, 1 - 1 / factor);\n const lift = (v) => Math.round(v + (255 - v) * t);\n return packAbgr(\n lift(abgrRed(c)),\n lift(abgrGreen(c)),\n lift(abgrBlue(c)),\n abgrAlpha(c)\n );\n}\n\nexport {\n packAbgr,\n abgrRed,\n abgrGreen,\n abgrBlue,\n abgrAlpha,\n abgrToCssRgba,\n normalizedRgbToCssRgba,\n fadeAbgr,\n brightenAbgr\n};\n", "// src/referenceRampCss.ts\nvar REFERENCE_RAMP_MAX_HUE = 300;\nvar REFERENCE_RAMP_SATURATION = 0.7;\nvar REFERENCE_RAMP_LIGHTNESS = 0.5;\nfunction rampHueCss(hue) {\n return `hsl(${hue}, ${REFERENCE_RAMP_SATURATION * 100}%, ${REFERENCE_RAMP_LIGHTNESS * 100}%)`;\n}\nfunction rampHueAt(frac) {\n return Math.max(0, Math.min(1, frac)) * REFERENCE_RAMP_MAX_HUE;\n}\nfunction rampHue(bp, domain) {\n return rampHueAt((bp - domain.start) / (domain.end - domain.start));\n}\nvar HUE_STOP_DEG = 30;\nfunction rampStops({ start, bp, reversed }, domain) {\n const low = rampHue(start, domain);\n const high = rampHue(start + bp, domain);\n if (high - low < 1) {\n return [(low + high) / 2];\n }\n const n = Math.ceil((high - low) / HUE_STOP_DEG);\n return Array.from(\n { length: n + 1 },\n (_, i) => rampHue(start + bp * (reversed ? n - i : i) / n, domain)\n );\n}\nvar RAMP_GRADIENT_STOPS = Array.from({ length: 7 }, (_, i) => ({\n offset: i / 6,\n color: rampHueCss(i / 6 * REFERENCE_RAMP_MAX_HUE)\n}));\nvar RAMP_GRADIENT_CSS = `linear-gradient(to right, ${RAMP_GRADIENT_STOPS.map(\n (s) => `${s.color} ${s.offset * 100}%`\n).join(\", \")})`;\n\nexport {\n REFERENCE_RAMP_MAX_HUE,\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS,\n rampHueCss,\n rampHueAt,\n rampHue,\n rampStops,\n RAMP_GRADIENT_STOPS,\n RAMP_GRADIENT_CSS\n};\n", "import {\n weakMemo\n} from \"./chunk-HMXCN6PG.js\";\nimport {\n edgeCurvesOf\n} from \"./chunk-DV5B5UU7.js\";\n\n// src/util/edgeCurves.ts\nvar cache = weakMemo();\nfunction baseEdgeCurves(nodePositions, graph, axis, deletions, version, routes, stranded = false) {\n return cache(\n nodePositions,\n [graph, axis.scaleX, axis.scaleY, deletions, routes, stranded, version],\n () => {\n const curves = /* @__PURE__ */ new Map();\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const bypassed = deletions?.get(ei);\n const edgeCurves = edgeCurvesOf(\n nodePositions,\n graph.edges[ei],\n axis,\n bypassed,\n bypassed && routes?.[ei],\n stranded\n );\n if (edgeCurves) {\n curves.set(ei, edgeCurves);\n }\n }\n return curves;\n }\n );\n}\n\nexport {\n baseEdgeCurves\n};\n", "import {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/referenceSpan.ts\nvar MAX_BACKBONE_HOPS = 4;\nfunction buildNeighbors(graph) {\n const neighbors = /* @__PURE__ */ new Map();\n for (const edge of graph.edges) {\n pushTo(neighbors, edge.from, edge.to);\n pushTo(neighbors, edge.to, edge.from);\n }\n return neighbors;\n}\nfunction flankingSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const seen = /* @__PURE__ */ new Set([nodeId]);\n let frontier = [nodeId];\n let minEnd = Infinity;\n let maxStart = -Infinity;\n for (let hop = 0; hop < MAX_BACKBONE_HOPS && frontier.length > 0; hop++) {\n const next = [];\n for (const id of frontier) {\n const adjacent = neighbors.get(id);\n if (adjacent) {\n for (const neighborId of adjacent) {\n if (!seen.has(neighborId)) {\n seen.add(neighborId);\n const neighbor = nodeById.get(neighborId);\n if (neighbor && isBackbone(neighbor)) {\n minEnd = Math.min(minEnd, neighbor.stable.start + neighbor.length);\n maxStart = Math.max(maxStart, neighbor.stable.start);\n } else {\n next.push(neighborId);\n }\n }\n }\n }\n }\n frontier = next;\n }\n return minEnd === Infinity ? void 0 : {\n start: Math.min(minEnd, maxStart),\n end: Math.max(minEnd, maxStart)\n };\n}\nfunction nodeReferenceSpan({\n nodeId,\n nodeById,\n neighbors\n}) {\n const node = nodeById.get(nodeId);\n return node === void 0 ? void 0 : isBackbone(node) ? { start: node.stable.start, end: node.stable.start + node.length } : flankingSpan({ nodeId, nodeById, neighbors });\n}\nfunction referenceMidpoints(graph) {\n const nodeById = new Map(graph.nodes.map((node) => [node.id, node]));\n const neighbors = buildNeighbors(graph);\n const midpoints = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n const span = nodeReferenceSpan({ nodeId: node.id, nodeById, neighbors });\n if (span) {\n midpoints.set(node.id, (span.start + span.end) / 2);\n }\n }\n return midpoints;\n}\n\nexport {\n buildNeighbors,\n nodeReferenceSpan,\n referenceMidpoints\n};\n", "import {\n abgrToCssRgba,\n fadeAbgr,\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\nimport {\n baseEdgeCurves\n} from \"./chunk-OYCQVJYY.js\";\nimport {\n PATH_LIGHTNESS,\n PATH_SATURATION,\n nameHue,\n pathHueAt\n} from \"./chunk-BW2NMXRV.js\";\nimport {\n meanDepth,\n nodeWidthPx,\n walkLaneWidthPx\n} from \"./chunk-ZANALBSX.js\";\nimport {\n referenceMidpoints\n} from \"./chunk-VX656OAZ.js\";\nimport {\n dashCurves,\n pathRibbonOffsets,\n polylinePx,\n strandSides,\n translateCurves,\n yToXOf\n} from \"./chunk-VACK24HF.js\";\nimport {\n pushTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\n\n// src/renderer/GeometryBuilder.ts\nvar EDGE_DEFAULT_COLOR = packAbgr(119, 119, 119, 217);\nvar EDGE_PATH_FALLBACK_COLOR = packAbgr(136, 136, 136, 217);\nvar EDGE_DELETION_COLOR = packAbgr(24, 24, 28, 240);\nvar DELETION_THICKNESS_FACTOR = 2.2;\nvar LIFT_BACKDROP_COLOR = packAbgr(160, 160, 160, 255);\nvar FADED_ALPHA = 0.18;\nvar LIFT_BACKDROP_CSS = abgrToCssRgba(\n fadeAbgr(LIFT_BACKDROP_COLOR, FADED_ALPHA)\n);\nvar DELETION_DASH_PX = 11;\nvar MIN_PATH_STRIPE_PX = 1.2;\nvar MIN_SCALE_FOR_OFFSET = 1e-6;\nvar ARROW_LENGTH_BASE_PX = 7;\nvar ARROW_LENGTH_PER_EDGE_PX = 3;\nvar ARROW_HALF_WIDTH_BASE_PX = 3;\nvar ARROW_HALF_WIDTH_PER_EDGE_PX = 1.5;\nvar MIN_LINK_HEADS = 3;\nvar MIN_ARROW_FIT = 0.5;\nvar MIN_ARROW_SCALE = 0.45;\nvar ARROW_CURVE_STEPS = 12;\nvar ABUTTING_PX = 1e-6;\nvar walkX = new Float64Array(64);\nvar walkY = new Float64Array(64);\nvar walkPx = new Float64Array(64);\nfunction backFromEnd(curves, scale, yToX, untilPx) {\n const most = curves.length * ARROW_CURVE_STEPS + 1;\n if (walkX.length < most) {\n walkX = new Float64Array(most);\n walkY = new Float64Array(most);\n walkPx = new Float64Array(most);\n }\n const last = curves[curves.length - 1];\n walkX[0] = last.x1;\n walkY[0] = last.y1;\n walkPx[0] = 0;\n let n = 1;\n let px = 0;\n for (let ci = curves.length - 1; ci >= 0 && px < untilPx; ci--) {\n const c = curves[ci];\n for (let k = 1; k <= ARROW_CURVE_STEPS && px < untilPx; k++) {\n const t = 1 - (k / ARROW_CURVE_STEPS) ** 2;\n const u = 1 - t;\n const a = u * u * u;\n const b = 3 * u * u * t;\n const d = 3 * u * t * t;\n const e = t * t * t;\n const x = a * c.x0 + b * c.cx0 + d * c.cx1 + e * c.x1;\n const y = a * c.y0 + b * c.cy0 + d * c.cy1 + e * c.y1;\n px += Math.hypot(x - walkX[n - 1], (y - walkY[n - 1]) * yToX) * scale;\n walkX[n] = x;\n walkY[n] = y;\n walkPx[n] = px;\n n++;\n }\n }\n return n;\n}\nfunction walkPointAt(n, px) {\n let i = 1;\n while (i < n - 1 && walkPx[i] < px) {\n i++;\n }\n const from = walkPx[i - 1];\n const to = walkPx[i];\n const f = to > from ? Math.min(1, Math.max(0, (px - from) / (to - from))) : 0;\n return {\n x: walkX[i - 1] + (walkX[i] - walkX[i - 1]) * f,\n y: walkY[i - 1] + (walkY[i] - walkY[i - 1]) * f\n };\n}\nfunction arrowheadFor({\n curves,\n edgeHalfWidth,\n nodeHalfWidth,\n scale,\n yToX,\n color,\n fromSegments,\n toSegments\n}) {\n const length = ARROW_LENGTH_BASE_PX + ARROW_LENGTH_PER_EDGE_PX * edgeHalfWidth;\n const n = backFromEnd(\n curves,\n scale,\n yToX,\n nodeHalfWidth + MIN_LINK_HEADS * length\n );\n const lengthPx = walkPx[n - 1];\n const abutting = lengthPx < ABUTTING_PX;\n const inset = Math.min(nodeHalfWidth, lengthPx);\n const fit = abutting ? Math.min(1, polylinePx(fromSegments, scale, scale * yToX) / length) : 1;\n if (abutting ? fit < MIN_ARROW_FIT : lengthPx < MIN_LINK_HEADS * length) {\n return void 0;\n }\n const tip = walkPointAt(n, inset);\n const base = walkPointAt(n, inset + length * fit);\n const dx = tip.x - base.x;\n const dy = (tip.y - base.y) * yToX;\n const last = curves[curves.length - 1];\n return {\n x: tip.x,\n y: tip.y,\n angle: Math.hypot(dx, dy) > 0 ? Math.atan2(dy, dx) : endTangent(last, yToX, intoDirection(last, toSegments)),\n length: length * fit,\n halfWidth: (ARROW_HALF_WIDTH_BASE_PX + ARROW_HALF_WIDTH_PER_EDGE_PX * edgeHalfWidth) * fit,\n color\n };\n}\nfunction leavesStart(edge, segments, first, stranded, yToX) {\n if (stranded) {\n return strandSides(edge).from === \"start\";\n }\n const gap = (p) => Math.hypot(p.x - first.x0, (p.y - first.y0) * yToX);\n return gap(segments[0]) < gap(segments.at(-1));\n}\nfunction intoDirection(last, toSegments) {\n if (toSegments.length < 2) {\n return void 0;\n }\n const first = toSegments[0];\n const final = toSegments[toSegments.length - 1];\n const atStart = Math.hypot(last.x1 - first.x, last.y1 - first.y) <= Math.hypot(last.x1 - final.x, last.y1 - final.y);\n return atStart ? { from: first, to: toSegments[1] } : { from: final, to: toSegments[toSegments.length - 2] };\n}\nfunction normal(a, b) {\n if (!a || !b) {\n return void 0;\n }\n const dx = b.x - a.x;\n const dy = b.y - a.y;\n const len = Math.hypot(dx, dy);\n return len > 0 ? { nx: -dy / len, ny: dx / len } : void 0;\n}\nfunction pointNormalsOf(rawPoints, yToX = 1) {\n const points = yToX === 1 ? rawPoints : rawPoints.map((p) => ({ x: p.x, y: p.y * yToX }));\n return points.map((p, i) => {\n const before = normal(points[i - 1], p);\n const after = normal(p, points[i + 1]);\n if (before && after) {\n const nx = (before.nx + after.nx) / 2;\n const ny = (before.ny + after.ny) / 2;\n const dot = before.nx * nx + before.ny * ny;\n return dot > 0.1 ? { nx: nx / dot, ny: ny / dot } : { nx, ny };\n }\n return before ?? after ?? { nx: 0, ny: 0 };\n });\n}\nfunction offsetPolyline(points, normals, distance, yToX = 1) {\n return points.map((p, i) => ({\n x: p.x + normals[i].nx * distance,\n y: p.y + normals[i].ny * distance / yToX\n }));\n}\nfunction hslToRgb(h, s, l) {\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(h / 60 % 2 - 1));\n const m = l - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n return [r + m, g + m, b + m];\n}\nfunction packHsl(h, s, l, a = 1) {\n const [r, g, b] = hslToRgb(h, s, l);\n return packAbgr(\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n Math.round(a * 255)\n );\n}\nvar DEPTH_GRADIENT = [\n [68, 1, 84],\n [59, 82, 139],\n [33, 145, 140],\n [94, 201, 98],\n [253, 231, 37]\n];\nvar STABLE_RANK_GRADIENT = [\n [237, 137, 44],\n [158, 42, 122]\n];\nvar NODE_LENGTH_GRADIENT = [\n [220, 50, 50],\n [50, 120, 220]\n];\nfunction sampleGradient(stops, t) {\n const pos = Math.max(0, Math.min(1, t)) * (stops.length - 1);\n const i = Math.min(stops.length - 2, Math.floor(pos));\n const f = pos - i;\n const a = stops[i];\n const b = stops[i + 1];\n return packAbgr(\n Math.round(a[0] + (b[0] - a[0]) * f),\n Math.round(a[1] + (b[1] - a[1]) * f),\n Math.round(a[2] + (b[2] - a[2]) * f),\n 255\n );\n}\nfunction hashColor(str, alpha) {\n return packHsl(nameHue(str), PATH_SATURATION, PATH_LIGHTNESS, alpha);\n}\nvar REFERENCE_RAMP_ALT_RGB = [60, 65, 72];\nvar REFERENCE_RAMP_ALT_COLOR = packAbgr(...REFERENCE_RAMP_ALT_RGB, 255);\nvar REFERENCE_RAMP_ALT_CSS = `rgb(${REFERENCE_RAMP_ALT_RGB.join(\", \")})`;\nfunction rampFraction(node, ramp) {\n const mid = ramp.midpoints.get(node.id);\n return isBackbone(node) && mid !== void 0 ? (mid - ramp.start) / ramp.span : void 0;\n}\nfunction computeReferenceRamp(graph, domain) {\n const midpoints = referenceMidpoints(graph);\n if (domain && domain.end > domain.start) {\n return {\n start: domain.start,\n span: domain.end - domain.start,\n midpoints\n };\n }\n let min = Infinity;\n let max = -Infinity;\n for (const mid of midpoints.values()) {\n min = Math.min(min, mid);\n max = Math.max(max, mid);\n }\n return {\n start: min === Infinity ? 0 : min,\n span: max > min ? max - min : 1,\n midpoints\n };\n}\nfunction computeColorSchemeRange(graph, referenceRamp) {\n let minDepth = Infinity;\n let maxDepth = -Infinity;\n let minLength = Infinity;\n let maxLength = -Infinity;\n let maxRank = 0;\n for (const n of graph.nodes) {\n if (n.stable !== void 0 && n.stable.rank > maxRank) {\n maxRank = n.stable.rank;\n }\n if (n.depth < minDepth) {\n minDepth = n.depth;\n }\n if (n.depth > maxDepth) {\n maxDepth = n.depth;\n }\n if (n.length < minLength) {\n minLength = n.length;\n }\n if (n.length > maxLength) {\n maxLength = n.length;\n }\n }\n return {\n minDepth,\n maxDepth,\n minLength,\n maxLength,\n maxRank,\n nodeCount: graph.nodes.length,\n referenceRamp\n };\n}\nfunction getNodeColor(node, nodeIndex, colorScheme, range) {\n switch (colorScheme) {\n case \"random\":\n return hashColor(node.id, 1);\n case \"depth\":\n return sampleGradient(\n DEPTH_GRADIENT,\n range.maxDepth > range.minDepth ? (node.depth - range.minDepth) / (range.maxDepth - range.minDepth) : 0.5\n );\n case \"node-length\":\n return sampleGradient(\n NODE_LENGTH_GRADIENT,\n range.maxLength > range.minLength ? (node.length - range.minLength) / (range.maxLength - range.minLength) : 0.5\n );\n // rGFA states the backbone rather than leaving it to be inferred: rank 0 is\n // the reference, higher ranks are the sequence that diverges from it. A\n // graph with no SR tags draws every node as unranked.\n case \"stable-rank\":\n return node.stable === void 0 ? packAbgr(160, 160, 160, 255) : node.stable.rank === 0 ? packAbgr(52, 152, 219, 255) : sampleGradient(\n STABLE_RANK_GRADIENT,\n range.maxRank > 1 ? (node.stable.rank - 1) / (range.maxRank - 1) : 0\n );\n // Position on the reference, the one quantity both panels of a\n // graph-over-linear figure can state, so only the backbone takes a hue\n case \"reference-position\": {\n const ramp = range.referenceRamp;\n if (ramp === void 0) {\n return packAbgr(160, 160, 160, 255);\n }\n const t = rampFraction(node, ramp);\n return t === void 0 ? REFERENCE_RAMP_ALT_COLOR : packHsl(\n rampHueAt(t),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n );\n }\n case \"grey\":\n return packAbgr(160, 160, 160, 255);\n case \"rainbow\": {\n const hue = range.nodeCount > 1 ? nodeIndex / range.nodeCount * 360 : 0;\n return packHsl(hue, 0.75, 0.5);\n }\n default:\n return packAbgr(52, 152, 219, 255);\n }\n}\nfunction endTangent(c, yToX = 1, into) {\n const candidates = [\n [c.cx1, c.cy1],\n [c.cx0, c.cy0],\n [c.x0, c.y0]\n ];\n for (const [x, y] of candidates) {\n const dx = c.x1 - x;\n const dy = (c.y1 - y) * yToX;\n if (Math.hypot(dx, dy) > 0) {\n return Math.atan2(dy, dx);\n }\n }\n return into ? Math.atan2((into.to.y - into.from.y) * yToX, into.to.x - into.from.x) : 0;\n}\nfunction isPolylineInBounds(segments, bounds) {\n let hit = false;\n for (let i = 0; i < segments.length - 1 && !hit; i++) {\n const a = segments[i];\n const b = segments[i + 1];\n hit = Math.max(a.x, b.x) >= bounds.minX && Math.min(a.x, b.x) <= bounds.maxX && Math.max(a.y, b.y) >= bounds.minY && Math.min(a.y, b.y) <= bounds.maxY;\n }\n return hit;\n}\nfunction isBezierInBounds(curves, bounds) {\n for (const c of curves) {\n const cMinX = Math.min(c.x0, c.cx0, c.cx1, c.x1);\n const cMaxX = Math.max(c.x0, c.cx0, c.cx1, c.x1);\n const cMinY = Math.min(c.y0, c.cy0, c.cy1, c.y1);\n const cMaxY = Math.max(c.y0, c.cy0, c.cy1, c.y1);\n if (cMaxX >= bounds.minX && cMinX <= bounds.maxX && cMaxY >= bounds.minY && cMinY <= bounds.maxY) {\n return true;\n }\n }\n return false;\n}\nvar paletteCache = /* @__PURE__ */ new WeakMap();\nfunction pathPaletteOf(graph) {\n let palette = paletteCache.get(graph);\n if (!palette) {\n const pathColorByIndex = [];\n const pathIndexByName = /* @__PURE__ */ new Map();\n const paths = graph.paths ?? [];\n for (let i = 0; i < paths.length; i++) {\n pathColorByIndex.push(\n packHsl(\n pathHueAt(i, paths.length),\n PATH_SATURATION,\n PATH_LIGHTNESS,\n 0.85\n )\n );\n if (!pathIndexByName.has(paths[i].name)) {\n pathIndexByName.set(paths[i].name, i);\n }\n }\n palette = { pathColorByIndex, pathIndexByName };\n paletteCache.set(graph, palette);\n }\n return palette;\n}\nvar slotsCache = /* @__PURE__ */ new WeakMap();\nvar NO_SLOTS = /* @__PURE__ */ new Map();\nfunction pathSlotsOf(graph) {\n let slots = slotsCache.get(graph);\n if (!slots) {\n slots = /* @__PURE__ */ new Map();\n for (const [pathIdx, path] of (graph.paths ?? []).entries()) {\n for (const nodeId of new Set(path.nodeIds)) {\n pushTo(slots, nodeId, pathIdx);\n }\n }\n slotsCache.set(graph, slots);\n }\n return slots;\n}\nfunction buildGeometry(options) {\n const {\n nodePositions,\n graph,\n nodeById,\n colorScheme,\n contigThickness,\n connectorThickness,\n drawPaths,\n nodeWidth = \"uniform\",\n highlight,\n axis,\n linearLayout,\n viewportBounds,\n referenceRamp,\n deletions,\n deletionRoutes,\n stranded,\n hiddenEdges,\n version = 0\n } = options;\n const depthNorm = nodeWidth === \"depth\" ? meanDepth(graph) : 0;\n const scale = axis.scaleX;\n const worldPerScreenPx = 1 / Math.max(scale, MIN_SCALE_FOR_OFFSET);\n const yToX = yToXOf(axis);\n const sharedCurves = baseEdgeCurves(\n nodePositions,\n graph,\n axis,\n deletions,\n version,\n deletionRoutes,\n stranded\n );\n const nodeStrokes = [];\n const nodeStrokeRuns = /* @__PURE__ */ new Map();\n const arrows = [];\n const arrowRuns = /* @__PURE__ */ new Map();\n const edgeCurves = [];\n const edgeCurveRuns = /* @__PURE__ */ new Map();\n const colorRange = computeColorSchemeRange(graph, referenceRamp);\n const nodeIndexMap = /* @__PURE__ */ new Map();\n if (colorScheme === \"rainbow\") {\n for (let i = 0; i < graph.nodes.length; i++) {\n nodeIndexMap.set(graph.nodes[i].id, i);\n }\n }\n const pathCount = graph.paths?.length ?? 0;\n const { pathColorByIndex, pathIndexByName } = pathPaletteOf(graph);\n const pathColorByName = (name) => pathColorByIndex[pathIndexByName.get(name) ?? -1] ?? EDGE_PATH_FALLBACK_COLOR;\n const nodePathSlots = drawPaths && pathCount > 1 ? pathSlotsOf(graph) : NO_SLOTS;\n const showArrows = scale > (linearLayout ? 1 : MIN_ARROW_SCALE);\n for (let ei = 0; ei < graph.edges.length; ei++) {\n const edge = graph.edges[ei];\n const fromSegments = nodePositions[edge.from];\n const toSegments = nodePositions[edge.to];\n const baseCurves = sharedCurves.get(ei);\n if (!fromSegments?.length || !toSegments?.length || !baseCurves || hiddenEdges?.has(ei)) {\n continue;\n }\n const numPaths = edge.pathIds?.length ?? 0;\n const bypassed = deletions?.get(ei);\n const isDeletion = bypassed !== void 0;\n const onWalk = highlight?.edgeIndexes.has(ei) ?? false;\n const edgeThickness = connectorThickness / 2 * (isDeletion ? DELETION_THICKNESS_FACTOR : 1);\n const ribbons = drawPaths && numPaths > 0;\n const plainEdgeColor = isDeletion ? EDGE_DELETION_COLOR : EDGE_DEFAULT_COLOR;\n const edgeColor = !highlight || onWalk ? plainEdgeColor : fadeAbgr(plainEdgeColor, FADED_ALPHA);\n const toNode = nodeById.get(edge.to);\n const intoHalfWidth = (toNode ? nodeWidthPx(toNode, contigThickness, nodeWidth, depthNorm) : contigThickness) / 2;\n const inView = (curves) => !viewportBounds || isBezierInBounds(curves, viewportBounds);\n const stroke = (curves, thickness, color) => {\n if (isDeletion) {\n for (const dash of dashCurves(\n curves,\n DELETION_DASH_PX / scale,\n yToX,\n viewportBounds\n )) {\n edgeCurves.push({ curves: dash, thickness, color });\n }\n } else {\n edgeCurves.push({ curves, thickness, color });\n }\n };\n const arrowOn = (curves) => {\n const head = showArrows ? arrowheadFor({\n curves,\n edgeHalfWidth: connectorThickness / 2,\n nodeHalfWidth: intoHalfWidth,\n scale,\n yToX,\n color: edgeColor,\n fromSegments,\n toSegments\n }) : void 0;\n if (head) {\n arrows.push(head);\n }\n };\n const edgeCurveStart = edgeCurves.length;\n const arrowStart = arrows.length;\n const laneWalks = highlight?.walks.length && onWalk && !ribbons ? highlight.walks : void 0;\n if (laneWalks) {\n const fromNode = nodeById.get(edge.from);\n const width = fromNode ? nodeWidthPx(fromNode, contigThickness, nodeWidth, depthNorm) : contigThickness;\n const laneWidth = walkLaneWidthPx(width, laneWalks.length);\n const normals = pointNormalsOf(fromSegments, yToX);\n const { nx, ny } = (leavesStart(\n edge,\n fromSegments,\n baseCurves[0],\n stranded,\n yToX\n ) ? normals[0] : normals.at(-1)) ?? {\n nx: 0,\n ny: 0\n };\n laneWalks.forEach((walk, lane) => {\n if (!walk.edgeIndexes.has(ei)) {\n return;\n }\n const offset = (lane - (laneWalks.length - 1) / 2) * laneWidth * worldPerScreenPx;\n const curves = offset === 0 ? baseCurves : translateCurves(baseCurves, nx * offset, ny * offset / yToX);\n if (inView(curves)) {\n stroke(\n curves,\n laneWidth / 2,\n walk.colors.get(edge.from) ?? walk.colors.get(edge.to) ?? plainEdgeColor\n );\n }\n });\n if (edgeCurves.length > edgeCurveStart) {\n arrowOn(baseCurves);\n }\n } else if (!ribbons) {\n if (inView(baseCurves)) {\n stroke(baseCurves, edgeThickness, edgeColor);\n arrowOn(baseCurves);\n }\n } else {\n const offsets = pathRibbonOffsets(\n fromSegments,\n toSegments,\n numPaths,\n axis\n );\n const arrowRibbon = Math.floor((numPaths - 1) / 2);\n for (let pathIdx = 0; pathIdx < numPaths; pathIdx++) {\n const { x, y } = offsets[pathIdx];\n const curves = x === 0 && y === 0 ? baseCurves : translateCurves(baseCurves, x, y);\n if (!inView(curves)) {\n continue;\n }\n const ribbonColor = pathColorByName(edge.pathIds[pathIdx]);\n stroke(\n curves,\n edgeThickness,\n highlight && (highlight.walks.length ? !highlight.names.has(edge.pathIds[pathIdx]) : !onWalk) ? fadeAbgr(ribbonColor, FADED_ALPHA) : ribbonColor\n );\n if (pathIdx === arrowRibbon) {\n arrowOn(curves);\n }\n }\n }\n const edgeCurveCount = edgeCurves.length - edgeCurveStart;\n if (edgeCurveCount > 0) {\n edgeCurveRuns.set(ei, { start: edgeCurveStart, count: edgeCurveCount });\n }\n const arrowCount = arrows.length - arrowStart;\n if (arrowCount > 0) {\n arrowRuns.set(ei, { start: arrowStart, count: arrowCount });\n }\n }\n for (const [nodeId, segments] of Object.entries(nodePositions)) {\n const node = nodeById.get(nodeId);\n if (!node) {\n continue;\n }\n if (viewportBounds && !isPolylineInBounds(segments, viewportBounds)) {\n continue;\n }\n const faded = highlight !== void 0 && !highlight.nodeIds.has(nodeId);\n const own = faded ? LIFT_BACKDROP_COLOR : getNodeColor(\n node,\n nodeIndexMap.get(nodeId) ?? 0,\n colorScheme,\n colorRange\n );\n const color = faded ? fadeAbgr(own, FADED_ALPHA) : own;\n const width = nodeWidthPx(node, contigThickness, nodeWidth, depthNorm);\n const nodeThickness = width / 2;\n const start = nodeStrokes.length;\n const slots = nodePathSlots.get(nodeId);\n const slotWidth = width / pathCount;\n const drawable = segments.length >= 2;\n const lanes = highlight?.walks.length && !faded && !slots?.length ? highlight.walks : void 0;\n if (drawable && lanes) {\n const laneWidth = walkLaneWidthPx(width, lanes.length);\n const normals = pointNormalsOf(segments, yToX);\n lanes.forEach((walk, lane) => {\n const laneColor = walk.colors.get(nodeId);\n if (laneColor === void 0) {\n return;\n }\n const offset = (lane - (lanes.length - 1) / 2) * laneWidth * worldPerScreenPx;\n nodeStrokes.push({\n points: lanes.length === 1 ? segments : offsetPolyline(segments, normals, offset, yToX),\n thickness: laneWidth / 2,\n color: laneColor\n });\n });\n } else if (drawable && slots?.length && slotWidth >= MIN_PATH_STRIPE_PX) {\n const normals = pointNormalsOf(segments, yToX);\n for (const slot of slots) {\n const offset = (slot - (pathCount - 1) / 2) * slotWidth * worldPerScreenPx;\n const stripe = pathColorByIndex[slot] ?? EDGE_PATH_FALLBACK_COLOR;\n nodeStrokes.push({\n points: offsetPolyline(segments, normals, offset, yToX),\n thickness: slotWidth / 2,\n // a node off the lifted walk fades whichever way it is painted\n color: faded ? fadeAbgr(stripe, FADED_ALPHA) : stripe\n });\n }\n } else if (drawable) {\n nodeStrokes.push({ points: segments, thickness: nodeThickness, color });\n }\n const count = nodeStrokes.length - start;\n if (count > 0) {\n nodeStrokeRuns.set(nodeId, { start, count });\n }\n }\n return {\n nodeStrokes,\n nodeStrokeRuns,\n arrows,\n arrowRuns,\n edgeCurves,\n edgeCurveRuns\n };\n}\n\nexport {\n LIFT_BACKDROP_COLOR,\n FADED_ALPHA,\n LIFT_BACKDROP_CSS,\n hslToRgb,\n REFERENCE_RAMP_ALT_COLOR,\n REFERENCE_RAMP_ALT_CSS,\n rampFraction,\n computeReferenceRamp,\n computeColorSchemeRange,\n getNodeColor,\n endTangent,\n buildGeometry\n};\n", "import {\n REFERENCE_RAMP_ALT_COLOR,\n hslToRgb\n} from \"./chunk-JGHZ3N34.js\";\nimport {\n packAbgr\n} from \"./chunk-G2FD7S3C.js\";\nimport {\n REFERENCE_RAMP_LIGHTNESS,\n REFERENCE_RAMP_SATURATION,\n rampHueAt\n} from \"./chunk-GQZVR5DW.js\";\n\n// src/walkEncoding.ts\nvar WALK_FIELDS = [\n { value: \"progress\", label: \"Progress along the walk\" },\n { value: \"walk\", label: \"One colour for the walk\" },\n { value: \"reference\", label: \"Reference position\" }\n];\nvar WALK_SCHEMES = [\n { value: \"grey\", label: \"Grey to black\", ends: [\"#a3a3a3\", \"#151515\"] },\n { value: \"blue\", label: \"Cyan to navy\", ends: [\"#6ee0f0\", \"#0b2c7a\"] },\n { value: \"red\", label: \"Yellow to red\", ends: [\"#ffd24a\", \"#b3121b\"] },\n { value: \"purple\", label: \"Pink to plum\", ends: [\"#f5a3d8\", \"#5e1a6e\"] },\n { value: \"green\", label: \"Lime to forest\", ends: [\"#b6e36c\", \"#0b5d3b\"] },\n { value: \"rainbow\", label: \"Rainbow\" }\n];\nvar FAMILIES = [\"blue\", \"red\", \"purple\", \"green\"];\nvar isField = (v) => WALK_FIELDS.some((f) => f.value === v);\nvar isScheme = (v) => WALK_SCHEMES.some((s) => s.value === v);\nfunction resolveEncoding(layer, reference, picked, alone = true) {\n const { field: askedField, scheme: askedScheme } = layer.color ?? {};\n const field = isField(askedField) ? askedField : alone ? \"progress\" : \"walk\";\n const family = reference ? \"grey\" : FAMILIES[picked % FAMILIES.length];\n const scheme = isScheme(askedScheme) ? askedScheme === \"rainbow\" && field !== \"reference\" ? family : askedScheme : family;\n return { field, scheme };\n}\nvar BASE_T = 0.5;\nvar toLinear = (c) => c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\nvar toGamma = (c) => c <= 31308e-7 ? c * 12.92 : 1.055 * c ** (1 / 2.4) - 0.055;\nfunction oklab(hex) {\n const [r, g, b] = [1, 3, 5].map(\n (i) => toLinear(Number.parseInt(hex.slice(i, i + 2), 16) / 255)\n );\n const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);\n const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);\n const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s\n ];\n}\nfunction oklabToRgb([L, a, b]) {\n const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;\n return [\n 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s\n ].map((c) => toGamma(Math.max(0, Math.min(1, c))) * 255);\n}\nvar endsCache = /* @__PURE__ */ new Map();\nfunction oklabEnds(scheme) {\n if (!endsCache.has(scheme)) {\n const family = WALK_SCHEMES.find((s) => s.value === scheme);\n endsCache.set(\n scheme,\n family && \"ends\" in family ? family.ends.map(oklab) : void 0\n );\n }\n return endsCache.get(scheme);\n}\nfunction schemeRgb(scheme, t) {\n const x = Math.max(0, Math.min(1, t));\n const ends = oklabEnds(scheme);\n if (!ends) {\n return hslToRgb(\n rampHueAt(x),\n REFERENCE_RAMP_SATURATION,\n REFERENCE_RAMP_LIGHTNESS\n ).map((c) => c * 255);\n }\n const [from, to] = ends;\n return oklabToRgb(from.map((v, i) => v + (to[i] - v) * x));\n}\nfunction schemeCss(scheme, t) {\n const [r, g, b] = schemeRgb(scheme, t).map(Math.round);\n return `rgb(${r}, ${g}, ${b})`;\n}\nfunction schemeColor(scheme, t) {\n const [r, g, b] = schemeRgb(scheme, t).map(Math.round);\n return packAbgr(r, g, b, 255);\n}\nfunction encodedColor({ field, scheme }, t) {\n return field === \"walk\" ? schemeColor(scheme, BASE_T) : t === void 0 ? NO_VALUE_COLOR : schemeColor(scheme, t);\n}\nvar NO_VALUE_COLOR = REFERENCE_RAMP_ALT_COLOR;\nfunction encodingStops({ field, scheme }) {\n const stop = (offset, t) => ({\n offset,\n color: schemeCss(scheme, t),\n abgr: schemeColor(scheme, t)\n });\n return field === \"walk\" ? [stop(0, BASE_T)] : Array.from({ length: 7 }, (_, i) => stop(i / 6, i / 6));\n}\nfunction encodingSwatchCss(encoding) {\n const stops = encodingStops(encoding);\n return stops.length === 1 ? stops[0].color : `linear-gradient(to right, ${stops.map((s) => `${s.color} ${s.offset * 100}%`).join(\", \")})`;\n}\n\nexport {\n WALK_FIELDS,\n WALK_SCHEMES,\n resolveEncoding,\n schemeRgb,\n schemeCss,\n schemeColor,\n encodedColor,\n NO_VALUE_COLOR,\n encodingStops,\n encodingSwatchCss\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["packAbgr", "r", "g", "b", "a", "abgrRed", "c", "abgrGreen", "abgrBlue", "abgrAlpha", "abgrToCssRgba", "normalizedRgbToCssRgba", "alpha", "fadeAbgr", "brightenAbgr", "factor", "t", "lift", "v", "REFERENCE_RAMP_MAX_HUE", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "rampHueCss", "hue", "rampHueAt", "frac", "rampHue", "bp", "domain", "HUE_STOP_DEG", "rampStops", "start", "reversed", "low", "high", "n", "_", "i", "RAMP_GRADIENT_STOPS", "RAMP_GRADIENT_CSS", "s", "cache", "weakMemo", "baseEdgeCurves", "nodePositions", "graph", "axis", "deletions", "version", "routes", "stranded", "curves", "ei", "bypassed", "edgeCurves", "edgeCurvesOf", "MAX_BACKBONE_HOPS", "buildNeighbors", "graph", "neighbors", "edge", "pushTo", "flankingSpan", "nodeId", "nodeById", "seen", "frontier", "minEnd", "maxStart", "hop", "next", "id", "adjacent", "neighborId", "neighbor", "isBackbone", "nodeReferenceSpan", "node", "referenceMidpoints", "midpoints", "span", "EDGE_DEFAULT_COLOR", "packAbgr", "EDGE_PATH_FALLBACK_COLOR", "EDGE_DELETION_COLOR", "DELETION_THICKNESS_FACTOR", "LIFT_BACKDROP_COLOR", "FADED_ALPHA", "LIFT_BACKDROP_CSS", "abgrToCssRgba", "fadeAbgr", "DELETION_DASH_PX", "MIN_PATH_STRIPE_PX", "MIN_SCALE_FOR_OFFSET", "ARROW_LENGTH_BASE_PX", "ARROW_LENGTH_PER_EDGE_PX", "ARROW_HALF_WIDTH_BASE_PX", "ARROW_HALF_WIDTH_PER_EDGE_PX", "MIN_LINK_HEADS", "MIN_ARROW_FIT", "MIN_ARROW_SCALE", "ARROW_CURVE_STEPS", "ABUTTING_PX", "walkX", "walkY", "walkPx", "backFromEnd", "curves", "scale", "yToX", "untilPx", "most", "last", "n", "px", "ci", "c", "k", "t", "u", "a", "b", "d", "e", "x", "y", "walkPointAt", "i", "from", "to", "f", "arrowheadFor", "edgeHalfWidth", "nodeHalfWidth", "color", "fromSegments", "toSegments", "length", "lengthPx", "abutting", "inset", "fit", "polylinePx", "tip", "base", "dx", "dy", "endTangent", "intoDirection", "leavesStart", "edge", "segments", "first", "stranded", "strandSides", "gap", "p", "final", "normal", "len", "pointNormalsOf", "rawPoints", "points", "before", "after", "nx", "ny", "dot", "offsetPolyline", "normals", "distance", "hslToRgb", "h", "s", "l", "m", "r", "g", "packHsl", "DEPTH_GRADIENT", "STABLE_RANK_GRADIENT", "NODE_LENGTH_GRADIENT", "sampleGradient", "stops", "pos", "hashColor", "str", "alpha", "nameHue", "PATH_SATURATION", "PATH_LIGHTNESS", "REFERENCE_RAMP_ALT_RGB", "REFERENCE_RAMP_ALT_COLOR", "REFERENCE_RAMP_ALT_CSS", "rampFraction", "node", "ramp", "mid", "isBackbone", "computeReferenceRamp", "graph", "domain", "midpoints", "referenceMidpoints", "min", "max", "computeColorSchemeRange", "referenceRamp", "minDepth", "maxDepth", "minLength", "maxLength", "maxRank", "getNodeColor", "nodeIndex", "colorScheme", "range", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "hue", "into", "candidates", "isPolylineInBounds", "bounds", "hit", "isBezierInBounds", "cMinX", "cMaxX", "cMinY", "cMaxY", "paletteCache", "pathPaletteOf", "palette", "pathColorByIndex", "pathIndexByName", "paths", "pathHueAt", "slotsCache", "NO_SLOTS", "pathSlotsOf", "slots", "pathIdx", "path", "nodeId", "pushTo", "buildGeometry", "options", "nodePositions", "nodeById", "contigThickness", "connectorThickness", "drawPaths", "nodeWidth", "highlight", "axis", "linearLayout", "viewportBounds", "deletions", "deletionRoutes", "hiddenEdges", "version", "depthNorm", "meanDepth", "worldPerScreenPx", "yToXOf", "sharedCurves", "baseEdgeCurves", "nodeStrokes", "nodeStrokeRuns", "arrows", "arrowRuns", "edgeCurves", "edgeCurveRuns", "colorRange", "nodeIndexMap", "pathCount", "pathColorByName", "name", "nodePathSlots", "showArrows", "ei", "baseCurves", "numPaths", "isDeletion", "onWalk", "edgeThickness", "ribbons", "plainEdgeColor", "edgeColor", "toNode", "intoHalfWidth", "nodeWidthPx", "inView", "stroke", "thickness", "dash", "dashCurves", "arrowOn", "head", "edgeCurveStart", "arrowStart", "laneWalks", "fromNode", "width", "laneWidth", "walkLaneWidthPx", "walk", "lane", "offset", "translateCurves", "offsets", "pathRibbonOffsets", "arrowRibbon", "ribbonColor", "edgeCurveCount", "arrowCount", "faded", "own", "nodeThickness", "start", "slotWidth", "drawable", "lanes", "laneColor", "slot", "stripe", "count", "WALK_FIELDS", "WALK_SCHEMES", "FAMILIES", "isField", "v", "f", "isScheme", "s", "resolveEncoding", "layer", "reference", "picked", "alone", "askedField", "askedScheme", "field", "family", "scheme", "BASE_T", "toLinear", "c", "toGamma", "oklab", "hex", "r", "g", "b", "l", "m", "oklabToRgb", "L", "a", "endsCache", "oklabEnds", "schemeRgb", "t", "x", "ends", "hslToRgb", "rampHueAt", "REFERENCE_RAMP_SATURATION", "REFERENCE_RAMP_LIGHTNESS", "from", "to", "schemeCss", "schemeColor", "packAbgr", "encodedColor", "NO_VALUE_COLOR", "REFERENCE_RAMP_ALT_COLOR", "encodingStops", "stop", "offset", "_", "i"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{c as Lt,o as Dt,r as pt}from"./chunk-ULLEUORS.js";import{a as wt,d as Ct,e as Wt}from"./chunk-TQKSF3NI.js";var oe="ws",ae="we",Vt=["elsewhere","break","end"],Ne={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown"},ve="outside the extracted subgraph";function Ht(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(b=>b?.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(b=>b.bp>0)}function Et(t,e){let s=t.bp[e],n=t.chunkRefs[e];return Xt(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 Xt(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 Xt(e,n,r,i)}function xt(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function be(t){let e=t[oe],s=t[ae];return xt(typeof e=="string"?Zt(e):void 0,typeof s=="string"?Zt(s):void 0)}var ke=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(Vt.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:[...Vt],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function ie(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Ft(t,e){let s=t.names[e],n=Wt(s),r=t.starts[e];return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...xt(t.before&&Et(t.before,e),t.after&&Et(t.after,e))}:{name:ie(s,r,t.ends[e]),start:r}}function fe(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 b=[];for(let I=r[p];I<r[p+1];I++){let U=h[I];c[U]!==p&&(c[U]=p,b.push(n[U]))}return b})}function Mt({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 $e({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=Mt({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 b=[],I=new Array(r),U=(a,v)=>{let u=I[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=I[a];w?w.push(v,u):I[a]=[v,u]},ot=[],z=0;for(let a=0;a<e.from.length;a++){let v=e.from[a],u=e.to[a];b.push({from:o[v],to:o[u],fromStrand:e.strands[a]&1?"-":"+",toStrand:e.strands[a]&2?"-":"+"});let w=U(v,u);w===void 0&&(w=z++,W(v,u,w),W(u,v,w)),ot.push(w)}let F=new Int32Array(r+1);for(let a=0;a<r;a++)F[a+1]=F[a]+(I[a]?.length??0)/2;let at=new Int32Array(F[r]),it=new Int32Array(F[r]);I.forEach((a,v)=>{for(let u=0;u<a.length;u+=2)at[F[v]+u/2]=a[u],it[F[v]+u/2]=a[u+1]});let It=(a,v)=>{for(let u=F[a];u<F[a+1];u++)if(at[u]===v)return it[u];return-1},R=new Map,j=[],V=new Int32Array(s.offsets[s.names.length]??0),ft=new Int32Array(V.length),J=0,O=new Int32Array(z).fill(-1),gt=[],T=[],Z=s.offsets[s.names.length]??0,ct=new Int32Array(Z),Nt=new Float64Array(Z),H=new Uint8Array(Z),S=new Int32Array(r).fill(-1),M=[],B=[0],lt=[],Q=new Map,Y=[];for(let a of h){let v=Ft(s,a),{start:u,name:w}=v,X=v.sample===void 0?s.names[a]:w,f=R.get(X);f===void 0&&(f=j.length,R.set(X,f),j.push(X),lt.push(wt(X)));let m=Q.get(w);m===void 0&&(m=Y.length,Q.set(w,m),Y.push(w));let E=lt[f],P=s.offsets[a],k=new Array(s.offsets[a+1]-P),_=u,$=-1;for(let G=P;G<s.offsets[a+1];G++){let x=s.steps[G];k[G-P]=o[x],S[x]===-1&&(S[x]=B.at(-1),B.push(S[x]+c[x]),M.push(x));let tt=S[x]++;if(ct[tt]=f,Nt[tt]=_,H[tt]=s.reversed[G],_+=x<i?t.lengths[x]:0,$>=0){let D=It($,x);D>=0&&O[D]!==a&&(O[D]=a,V[J]=D,ft[J++]=m)}$=x}gt.push({...v,nodeIds:k}),T.push({name:X,sample:E,start:u,length:_-u})}let Rt=fe(V.subarray(0,J),ft,z,Y);b.forEach((a,v)=>{let u=Rt[ot[v]];u.length>0&&(a.pathIds=u)});let ht=h.length>0;return{name:n,nodes:p,edges:b,paths:ht?gt:void 0,anchorPaths:ht?T:void 0,pathVisits:ht?new Dt({segments:M.map(a=>t.names[a]),offsets:Int32Array.from(B),path:ct.subarray(0,B.at(-1)),start:Nt.subarray(0,B.at(-1)),reversed:H.subarray(0,B.at(-1)),paths:j,samples:lt}):void 0,anchoredBy:p.some(a=>a.stable)?"tags":void 0}}var Tt=1,qt=2,St=4,zt=[void 0,"missing","elsewhere","unknown"],Jt=3,ce=t=>zt.indexOf(t)<<Jt;function Qt(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function le(t){return Qt((t.paths??[]).map(e=>pt(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}function he(t){let e=new Map,s=[],n=[],r=p=>{let b=e.get(p);return b===void 0&&(b=s.length,e.set(p,b),s.push(p),n.push(0)),b};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,b)=>{h[b]=o.length;for(let I of p.nodeIds)o.push(r(I));c[b]=o.length}),{heads:i,from:h,to:c,steps:Int32Array.from(o),lengths:Int32Array.from(n),names:s,reference:le(t)}}function ue(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=>Ft(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?Mt(t):n.names,reference:Qt(h.map(o=>pt(o.name).name),e,c)}}function Yt(t){return t.sample??wt(t.name)}function me(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:Yt(t)}var Kt=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 b=this.offsets[p];b<this.offsets[p+1];b++)c[o++]=h[b];return c});return{offsets:s,columns:n}}},dt=t=>new Float64Array(t);function Pe(t,e,s={}){let{heads:n,from:r,to:i,steps:h,lengths:c,names:o,reference:p}="walks"in t?ue(t,s.referencePath,s.visits):he(t),b=c.length,I=f=>f<b?c[f]:0,U=f=>pt(n[f].name).name,W=f=>n[f].start,ot=(f,m)=>(W(f)??0)-(W(m)??0),z=n.map((f,m)=>m),F=z.filter(f=>U(f)===p).sort(ot),at=F[0],it=z.filter(f=>U(f)!==p);if(at===void 0||it.length===0)return;let It=Lt(it,U),R=new Float64Array(o.length).fill(Number.NaN),j=new Float64Array(o.length),V=new Map,ft=!1,J=!1,O=e&&e.end>e.start?e:void 0;for(let f of F){let m=W(f)??0;for(let E=r[f],P=i[f];E<P;E++){let k=h[E],_=I(k);if(Number.isNaN(R[k]))R[k]=m,j[k]=m+_,O&&(ft||=m+_<=O.start,J||=m>=O.end);else{let $=V.get(k);$?$.push(m):V.set(k,[R[k],m])}m+=_}}let gt=O===void 0||ft&&J,T=new Kt(5),Z=[],ct=new Map,Nt=f=>{if(!f)return-1;let m=`${f.refName}:${f.start}`,E=ct.get(m);return E===void 0&&(E=Z.length,ct.set(m,E),Z.push(f)),E},H=s.visits?new Kt(4):void 0,S=new Int32Array(0),M=new Float64Array(0),B=f=>{let m=n[f[0]],E=[...f].sort(ot),P=E.length-1;for(let l of E)P+=i[l]-r[l];P>S.length&&(S=new Int32Array(P*2),M=new Float64Array(P*2));let k=0,_=!1,$,G,x=new Map;for(let l of E){let d=W(l);(d===void 0||$!==void 0&&d<$)&&(_=!0),$!==void 0&&d!==void 0&&d>$&&(x.set(k,Ht(d-$,G===void 0?void 0:n[G].after,n[l].before)),S[k]=-(d-$),M[k++]=$);let y=d??0;for(let A=r[l],N=i[l];A<N;A++){let g=h[A];S[k]=g,M[k++]=y,y+=I(g)}$=d===void 0?void 0:y,G=l}let tt=l=>l>=0&&l<k&&S[l]>=0&&!Number.isNaN(R[S[l]]),D=l=>{let d=S[l];return M[l]+(d<0?-d:I(d))},te=(l,d)=>{let y=l>=0?l:d,A=-1;for(let q=1;A<0&&q<k;q++)A=[y-q,y+q].find(tt)??-1;if(A<0)return;let N=A>y==R[S[A]]>R[S[y]],g=N===(y===l),C=g?k-1:0,rt=tt(C);return{stop:{contigEnds:rt,shortBp:rt?Math.max(0,O.start-j[S[C]],R[S[C]]-O.end):0},lo:g?y+1:0,hi:g?k:y,backward:!N,axisStart:N?g?D(y):M[0]:g?D(k-1):M[y]}},vt=0,bt=k,ut=!1,Pt=!0,mt=-1,_t=-1,$t,Ut;if(O&>){let l=-1,d=-1,y=-1/0,A=1/0;for(let N=0;N<k;N++){let g=S[N];g>=0&&!Number.isNaN(R[g])&&(j[g]<=O.start&&j[g]>y&&(y=j[g],l=N),R[g]>=O.end&&R[g]<A&&(A=R[g],d=N))}if(l<0||d<0){Pt=!1;let N=l>=0||d>=0?te(l,d):void 0;N&&({lo:vt,hi:bt,backward:ut,axisStart:$t,stop:Ut}=N)}else vt=Math.min(l,d)+1,bt=Math.max(l,d),ut=l>d,mt=l,_t=d}let kt=m.contig??Ct(pt(m.name).name),ee=_||k===0?void 0:$t!==void 0?{contig:kt,start:$t,reversed:ut}:mt<0?{contig:kt,start:M[0],reversed:!1}:mt<_t?{contig:kt,start:D(mt),reversed:!1}:{contig:kt,start:M[mt],reversed:!0},et=0,jt=0,Bt=0,st=0,L=-1,nt=0,K=Number.NaN,yt=Number.NaN,se=l=>{let d=V.get(l);if(!d||Number.isNaN(yt))return R[l];let y=I(l),A=d[0],N=1/0;for(let g of d){let C=Math.min(Math.abs(g-yt),Math.abs(g+y-yt));C<N&&(A=g,N=C)}return A},[,Ot,ne,re]=T.values;for(let l=vt;l<bt;l++){let d=ut?bt-1-(l-vt):l,y=S[d];if(y<0){let q=x.get(d);for(let At of ut?[...q].reverse():q)T.push(et,At.bp,Number.NaN,St|ce(At.cause),Nt(At.chunk)),et+=At.bp;L=T.length-1,nt=St,K=Number.NaN,Bt+=-y,st=0;continue}let A=I(y),N=se(y),g=!Number.isNaN(N);H?.push(y,et,A,g?1:0);let C=L>=0&&!Number.isNaN(K),rt=g&&C&&st>=0&&K+(Ot[L]??0)===N,Gt=g&&C&&st<=0&&N+A===K;!g&&L>=0&&!(nt&(Tt|St))?Ot[L]+=A:rt||Gt?(Ot[L]+=A,rt||(K=N,ne[L]=N,nt|=qt,re[L]=nt),st=rt?1:-1):(nt=g?Tt:0,K=g?N:Number.NaN,T.push(et,A,K,nt,-1),L=T.length-1,st=0),et+=A,g?yt=st<0?N:N+A:jt+=A}return T.endRow(),H?.endRow(),{name:m.name,label:me(m),sample:Yt(m),haplotype:m.haplotype,bp:et,offReferenceBp:jt,gapBp:Bt,complete:Pt,stop:Ut,axis:ee}},lt=B(F),Q=[...It.values()].map((f,m)=>({meta:B(f),row:m+1}));Q.sort((f,m)=>Number(m.meta.complete)-Number(f.meta.complete)||m.meta.bp-f.meta.bp||f.meta.label.localeCompare(m.meta.label));let Y=[0,...Q.map(f=>f.row)],{offsets:Rt,columns:ht}=T.reorder(Y,[dt,dt,dt,f=>new Uint8Array(f),f=>new Int32Array(f)]),[a,v,u,w,X]=ht;return{origin:O?O.start:W(at)??0,rows:[lt,...Q.map(f=>f.meta)],offsets:Rt,start:a,bp:v,referenceStart:u,flags:w,chunk:X,chunks:Z,visits:H&&pe(H,Y,o)}}function pe(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[p=>new Int32Array(p),dt,dt,p=>new Uint8Array(p)]),[i,h,c,o]=r;return{offsets:n,node:i,start:h,bp:c,onReference:o,names:s}}function de(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Tt)!==0};if(s&St){n.gap=!0;let r=zt[s>>Jt&3];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 ge(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 _e(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(de(t,h));return{...n,runs:i,visits:t.visits&&ge(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{oe as a,ae as b,Ne as c,ve as d,Ht as e,Zt as f,be as g,ke as h,Ft as i,$e as j,le as k,Pe as l,_e as m};
|
|
2
|
+
//# sourceMappingURL=chunk-R25GOTED.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-EIY2SKD3.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-W2YAW36J.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-D3E7AXBB.js"],
|
|
4
|
+
"sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\"\n};\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-EIY2SKD3.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 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 } : { 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-W2YAW36J.js\";\nimport {\n gapParts\n} from \"./chunk-EIY2SKD3.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\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 = [void 0, \"missing\", \"elsewhere\", \"unknown\"];\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 for (const piece of ordered) {\n count += to[piece] - from[piece];\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 for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\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 };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\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 & 3];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "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", "k", "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", "length", "unplaced", "end", "previous", "partsAt", "start2", "gapParts", "stop2", "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", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "r", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit", "meta"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e="#";function l(t){return t.split(e)[0]}var r=new Set(["_gbwt_ref"]);function p(t){return r.has(t)}function c(t){let n=t.split(e);return n.length>=3?`${n[0]}${e}${n[1]}`:void 0}function u(t){let n=t.split(e);return n.length>=3?n.slice(2).join(e):n.length===2?n[1]:t}function N(t){let[n="",o="",...s]=t.split(e);return s.length>0?{sample:n,haplotype:+o,contig:s.join(e)}:void 0}function S(t){let n=t.split(e),o=n.length>=2&&n[1]!==""?Number(n[1]):Number.NaN;return{sample:n[0],haplotype:Number.isFinite(o)?o:void 0}}function f(t,n){return n!==void 0&&(t===n||t.startsWith(n+e))}function a(t){return t.getConf("assemblyNameToPanSN")??{}}function h(t,n){return n===void 0?void 0:a(t)[n]??n}var i=new WeakMap;function m(t){let n=i.get(t);if(n===void 0){let o=a(t);n={};for(let s of new Set([...Object.keys(o),...t.getConf("assemblyNames")]))n[o[s]??s]=s;i.set(t,n)}return n}export{l as a,p as b,c,u as d,N as e,S as f,f as g,h,m as i};
|
|
2
|
+
//# sourceMappingURL=chunk-TQKSF3NI.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.
|
|
4
|
-
"sourcesContent": ["// src/pansn.ts\nvar SEP = \"#\";\nfunction panSNSample(refName) {\n return refName.split(SEP)[0];\n}\nvar GENERIC_SAMPLES = /* @__PURE__ */ new Set([\"_gbwt_ref\"]);\nfunction isGenericSample(sample) {\n return GENERIC_SAMPLES.has(sample);\n}\nfunction panSNHaplotype(refName) {\n const parts = refName.split(SEP);\n return parts.length >= 3 ? `${parts[0]}${SEP}${parts[1]}` : void 0;\n}\nfunction panSNContig(refName) {\n const parts = refName.split(SEP);\n return parts.length >= 3 ? parts.slice(2).join(SEP) : parts.length === 2 ? parts[1] : refName;\n}\nfunction panSNFields(name) {\n const [sample = \"\", haplotype = \"\", ...contig] = name.split(SEP);\n return contig.length > 0 ? { sample, haplotype: +haplotype, contig: contig.join(SEP) } : void 0;\n}\nfunction parsePanSN(refName) {\n const parts = refName.split(SEP);\n const haplotype = parts.length >= 2 ? Number(parts[1]) : Number.NaN;\n return {\n sample: parts[0],\n haplotype: Number.isFinite(haplotype) ? haplotype : void 0\n };\n}\nfunction panSNMatchesPrefix(refName, prefix) {\n return prefix !== void 0 && (refName === prefix || refName.startsWith(prefix + SEP));\n}\nfunction assemblyNameToPanSN(adapter) {\n return adapter.getConf(\"assemblyNameToPanSN\") ?? {};\n}\nfunction resolvePanSNPrefix(adapter, name) {\n return name === void 0 ? void 0 : assemblyNameToPanSN(adapter)[name] ?? name;\n}\nvar asmByPrefixCache = /* @__PURE__ */ new WeakMap();\nfunction assemblyByPanSNPrefix(adapter) {\n let out = asmByPrefixCache.get(adapter);\n if (out === void 0) {\n const map = assemblyNameToPanSN(adapter);\n out = {};\n for (const asm of /* @__PURE__ */ new Set([\n ...Object.keys(map),\n ...adapter.getConf(\"assemblyNames\")\n ])) {\n out[map[asm] ?? asm] = asm;\n }\n asmByPrefixCache.set(adapter, out);\n }\n return out;\n}\n\nexport {\n panSNSample,\n isGenericSample,\n panSNHaplotype,\n panSNContig,\n panSNFields,\n parsePanSN,\n panSNMatchesPrefix,\n resolvePanSNPrefix,\n assemblyByPanSNPrefix\n};\n"],
|
|
5
|
-
"mappings": "AACA,IAAIA,EAAM,IACV,SAASC,EAAYC,EAAS,CAC5B,OAAOA,EAAQ,MAAMF,CAAG,EAAE,CAAC,CAC7B,CACA,IAAIG,EAAkC,IAAI,IAAI,CAAC,WAAW,CAAC,EAC3D,SAASC,EAAgBC,EAAQ,CAC/B,OAAOF,EAAgB,IAAIE,CAAM,CACnC,CACA,SAASC,EAAeJ,EAAS,CAC/B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EAC/B,OAAOO,EAAM,QAAU,EAAI,GAAGA,EAAM,CAAC,CAAC,GAAGP,CAAG,GAAGO,EAAM,CAAC,CAAC,GAAK,MAC9D,CACA,SAASC,EAAYN,EAAS,CAC5B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EAC/B,OAAOO,EAAM,QAAU,EAAIA,EAAM,MAAM,CAAC,EAAE,KAAKP,CAAG,EAAIO,EAAM,SAAW,EAAIA,EAAM,CAAC,EAAIL,CACxF,CACA,SAASO,EAAYC,EAAM,CACzB,GAAM,CAACL,EAAS,GAAIM,EAAY,GAAI,GAAGC,CAAM,EAAIF,EAAK,MAAMV,CAAG,EAC/D,OAAOY,EAAO,OAAS,EAAI,CAAE,OAAAP,EAAQ,UAAW,CAACM,EAAW,OAAQC,EAAO,KAAKZ,CAAG,CAAE,EAAI,MAC3F,CACA,SAASa,EAAWX,EAAS,CAC3B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EACzBW,EAAYJ,EAAM,QAAU,
|
|
3
|
+
"sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.6.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-2JL2JVZ2.js"],
|
|
4
|
+
"sourcesContent": ["// src/pansn.ts\nvar SEP = \"#\";\nfunction panSNSample(refName) {\n return refName.split(SEP)[0];\n}\nvar GENERIC_SAMPLES = /* @__PURE__ */ new Set([\"_gbwt_ref\"]);\nfunction isGenericSample(sample) {\n return GENERIC_SAMPLES.has(sample);\n}\nfunction panSNHaplotype(refName) {\n const parts = refName.split(SEP);\n return parts.length >= 3 ? `${parts[0]}${SEP}${parts[1]}` : void 0;\n}\nfunction panSNContig(refName) {\n const parts = refName.split(SEP);\n return parts.length >= 3 ? parts.slice(2).join(SEP) : parts.length === 2 ? parts[1] : refName;\n}\nfunction panSNFields(name) {\n const [sample = \"\", haplotype = \"\", ...contig] = name.split(SEP);\n return contig.length > 0 ? { sample, haplotype: +haplotype, contig: contig.join(SEP) } : void 0;\n}\nfunction parsePanSN(refName) {\n const parts = refName.split(SEP);\n const haplotype = parts.length >= 2 && parts[1] !== \"\" ? Number(parts[1]) : Number.NaN;\n return {\n sample: parts[0],\n haplotype: Number.isFinite(haplotype) ? haplotype : void 0\n };\n}\nfunction panSNMatchesPrefix(refName, prefix) {\n return prefix !== void 0 && (refName === prefix || refName.startsWith(prefix + SEP));\n}\nfunction assemblyNameToPanSN(adapter) {\n return adapter.getConf(\"assemblyNameToPanSN\") ?? {};\n}\nfunction resolvePanSNPrefix(adapter, name) {\n return name === void 0 ? void 0 : assemblyNameToPanSN(adapter)[name] ?? name;\n}\nvar asmByPrefixCache = /* @__PURE__ */ new WeakMap();\nfunction assemblyByPanSNPrefix(adapter) {\n let out = asmByPrefixCache.get(adapter);\n if (out === void 0) {\n const map = assemblyNameToPanSN(adapter);\n out = {};\n for (const asm of /* @__PURE__ */ new Set([\n ...Object.keys(map),\n ...adapter.getConf(\"assemblyNames\")\n ])) {\n out[map[asm] ?? asm] = asm;\n }\n asmByPrefixCache.set(adapter, out);\n }\n return out;\n}\n\nexport {\n panSNSample,\n isGenericSample,\n panSNHaplotype,\n panSNContig,\n panSNFields,\n parsePanSN,\n panSNMatchesPrefix,\n resolvePanSNPrefix,\n assemblyByPanSNPrefix\n};\n"],
|
|
5
|
+
"mappings": "AACA,IAAIA,EAAM,IACV,SAASC,EAAYC,EAAS,CAC5B,OAAOA,EAAQ,MAAMF,CAAG,EAAE,CAAC,CAC7B,CACA,IAAIG,EAAkC,IAAI,IAAI,CAAC,WAAW,CAAC,EAC3D,SAASC,EAAgBC,EAAQ,CAC/B,OAAOF,EAAgB,IAAIE,CAAM,CACnC,CACA,SAASC,EAAeJ,EAAS,CAC/B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EAC/B,OAAOO,EAAM,QAAU,EAAI,GAAGA,EAAM,CAAC,CAAC,GAAGP,CAAG,GAAGO,EAAM,CAAC,CAAC,GAAK,MAC9D,CACA,SAASC,EAAYN,EAAS,CAC5B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EAC/B,OAAOO,EAAM,QAAU,EAAIA,EAAM,MAAM,CAAC,EAAE,KAAKP,CAAG,EAAIO,EAAM,SAAW,EAAIA,EAAM,CAAC,EAAIL,CACxF,CACA,SAASO,EAAYC,EAAM,CACzB,GAAM,CAACL,EAAS,GAAIM,EAAY,GAAI,GAAGC,CAAM,EAAIF,EAAK,MAAMV,CAAG,EAC/D,OAAOY,EAAO,OAAS,EAAI,CAAE,OAAAP,EAAQ,UAAW,CAACM,EAAW,OAAQC,EAAO,KAAKZ,CAAG,CAAE,EAAI,MAC3F,CACA,SAASa,EAAWX,EAAS,CAC3B,IAAMK,EAAQL,EAAQ,MAAMF,CAAG,EACzBW,EAAYJ,EAAM,QAAU,GAAKA,EAAM,CAAC,IAAM,GAAK,OAAOA,EAAM,CAAC,CAAC,EAAI,OAAO,IACnF,MAAO,CACL,OAAQA,EAAM,CAAC,EACf,UAAW,OAAO,SAASI,CAAS,EAAIA,EAAY,MACtD,CACF,CACA,SAASG,EAAmBZ,EAASa,EAAQ,CAC3C,OAAOA,IAAW,SAAWb,IAAYa,GAAUb,EAAQ,WAAWa,EAASf,CAAG,EACpF,CACA,SAASgB,EAAoBC,EAAS,CACpC,OAAOA,EAAQ,QAAQ,qBAAqB,GAAK,CAAC,CACpD,CACA,SAASC,EAAmBD,EAASP,EAAM,CACzC,OAAOA,IAAS,OAAS,OAASM,EAAoBC,CAAO,EAAEP,CAAI,GAAKA,CAC1E,CACA,IAAIS,EAAmC,IAAI,QAC3C,SAASC,EAAsBH,EAAS,CACtC,IAAII,EAAMF,EAAiB,IAAIF,CAAO,EACtC,GAAII,IAAQ,OAAQ,CAClB,IAAMC,EAAMN,EAAoBC,CAAO,EACvCI,EAAM,CAAC,EACP,QAAWE,KAAuB,IAAI,IAAI,CACxC,GAAG,OAAO,KAAKD,CAAG,EAClB,GAAGL,EAAQ,QAAQ,eAAe,CACpC,CAAC,EACCI,EAAIC,EAAIC,CAAG,GAAKA,CAAG,EAAIA,EAEzBJ,EAAiB,IAAIF,EAASI,CAAG,CACnC,CACA,OAAOA,CACT",
|
|
6
6
|
"names": ["SEP", "panSNSample", "refName", "GENERIC_SAMPLES", "isGenericSample", "sample", "panSNHaplotype", "parts", "panSNContig", "panSNFields", "name", "haplotype", "contig", "parsePanSN", "panSNMatchesPrefix", "prefix", "assemblyNameToPanSN", "adapter", "resolvePanSNPrefix", "asmByPrefixCache", "assemblyByPanSNPrefix", "out", "map", "asm"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as p}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as p}from"./chunk-TQKSF3NI.js";function b(t,s,e){let n=t.get(s);n?n.push(e):t.set(s,[e])}function F(t,s,e){let n=t.get(s);n?n.add(e):t.set(s,new Set([e]))}function m(t,s){let e=new Map;for(let n of t)b(e,s(n),n);return e}function g(t,s){let e=0,n=t;for(;e<n;){let r=e+n>>1;s(r)?e=r+1:n=r}return e}var l=0;function _(t){return t.stable!==void 0}function w(t){return t.stable?.rank===l}function G(t){return t.stable!==void 0&&t.stable.rank>l}function U(t){return t.nodes.filter(w)}function C(t,s){return t.stable.start<s.end&&t.stable.start+t.length>s.start}function K(t){let s={};for(let e of t)s[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return s}function T(t,s){return g(t.length,e=>t[e].stable.start<s)}function y(t){let s=1/0,e=-1/0;for(let n of t)s=Math.min(s,n.stable.start),e=Math.max(e,n.stable.start+n.length);return e-s}function $(t,s){return s&&s.end>s.start?s.end-s.start:y(t)}var A=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((s,e)=>[s,e]))}static from(t){let s=new u;for(let[e,n]of t){s.declare(e);for(let r of n)s.add(e,r.path,r.sample,r.start,r.strand==="-")}return s.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,s){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===s)return e;return-1}replay(){let t=new Map;return(s,e)=>{if(s<0||e<0)return-1;let n=s*this.paths.length+e,r=this.offsets[s+1],a=t.get(n)??this.offsets[s];for(;a<r&&this.path[a]!==e;)a++;return t.set(n,a+1),a<r?a:-1}}filter(t,s=()=>!0){let e=this.paths.map(t),n=new u;return this.segments.forEach((r,a)=>{if(!s(r))return;let h=n.declare(r);for(let o=this.offsets[a];o<this.offsets[a+1];o++){let i=this.path[o];e[i]&&n.addAt(h,n.pathOf(this.paths[i],this.samples[i]),this.start[o],this.reversed[o]===1)}}),n.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let s=this.path[t];return{path:this.paths[s],sample:this.samples[s],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let s=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)s.push(this.visit(e));return s}get(t){let s=this.slot(t);return s<0?void 0:this.visitsAt(s)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},d=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let s=new this.data.constructor(this.data.length*2);s.set(this.data),this.data=s}this.data[this.length++]=t}},u=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new d(new Int32Array(1024)),this.path=new d(new Int32Array(1024)),this.start=new d(new Float64Array(1024)),this.reversed=new d(new Uint8Array(1024))}declare(t){let s=this.slots.get(t);return s===void 0&&(s=this.segments.length,this.slots.set(t,s),this.segments.push(t)),s}pathOf(t,s){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(s)),e}add(t,s,e,n,r){this.addAt(this.declare(t),this.pathOf(s,e),n,r)}addAt(t,s,e,n){this.slot.push(t),this.path.push(s),this.start.push(e),this.reversed.push(n?1:0)}build(){let t=this.slot.length,s=this.segments.length,e=new Int32Array(s+1),n=this.slot.data;for(let i=0;i<t;i++)e[n[i]+1]++;for(let i=0;i<s;i++)e[i+1]+=e[i];let r=e.slice(0,s),a=new Int32Array(t),h=new Float64Array(t),o=new Uint8Array(t);for(let i=0;i<t;i++){let f=r[n[i]]++;a[f]=this.path.data[i],h[f]=this.start.data[i],o[f]=this.reversed.data[i]}return new A({segments:this.segments,offsets:e,path:a,start:h,reversed:o,paths:this.paths,samples:this.samples})}};var v=/:(\d+)-\d+$/,x=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,I=/\[(\d+)-\d+\]$/;function E(t){let s=x.exec(t);if(s)return{name:s[1],start:+s[2]+ +(s[3]??0)};let e=v.exec(t)??I.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function Q(t,s){let e=[],n=new u;for(let r of t){let a=p(r.name),h=n.pathOf(r.name,a),o=r.start;for(let i of r.steps)n.addAt(n.declare(i.id),h,o,i.strand==="-"),o+=s(i.id);e.push({name:r.name,sample:a,start:r.start,length:o-r.start})}return{anchorPaths:e,pathVisits:n.build()}}function P(t,s){return t.find(n=>n.sample===s||n.name===s)??t[0]}var R=1;function N(t,s,e,n){let r=s.slot(t.name);if(r<0||s.offsets[r]===s.offsets[r+1])return t;let a=s.firstBy(r,e),h=a>=0?a:s.offsets[r];return{...t,stable:{refName:s.paths[s.path[h]],start:s.start[h],rank:a>=0?l:R,strand:s.strand(h)},samples:n(r)}}function O(t){let s=[...new Set(t.samples)].sort(),e=new Map(s.map((h,o)=>[h,o])),n=Int32Array.from(t.samples,h=>e.get(h)),r=new Uint8Array(s.length),a=new Int32Array(s.length);return h=>{let o=0;for(let f=t.offsets[h];f<t.offsets[h+1];f++){let c=n[t.path[f]];r[c]===0&&(r[c]=1,a[o++]=c)}let i;if(o===s.length)i=s,r.fill(0);else if(o*8<s.length){let f=a.subarray(0,o);f.forEach(c=>r[c]=0),i=Array.from(f.sort(),c=>s[c])}else{i=[];for(let f=0;f<s.length;f++)r[f]===1&&(r[f]=0,i.push(s[f]))}return i}}function k(t,s){let{anchorPaths:e,pathVisits:n}=t,r=e&&n?P(e,s):void 0;if(!r||!e||!n)return t;let a=O(n),h=n.pathIndex(r.name);return{...t,nodes:t.nodes.map(o=>N(o,n,h,a)),anchoredBy:"paths",referencePath:r.name}}function Y(t,s){if(t.anchoredBy!=="tags")return k(t,s);let e=S(t);return e?{...t,referencePath:e}:t}function S(t){let s=t.nodes.find(e=>e.stable?.rank===0)?.stable?.refName;return s!==void 0&&t.anchorPaths?.some(e=>e.name===s)?s:void 0}function Z(t,s){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(a=>[a.id,a.length])),n=(a,h=a.length)=>{let o=0;for(let i=0;i<h;i++)o+=e.get(a[i])??0;return o},r=m(t.paths??[],a=>E(a.name).name);return t.anchorPaths.map(a=>{let h=r.get(a.name),o=h?.length===1?h[0]:void 0,i=o&&s.get(o.name);return o&&i?{...a,start:a.start+n(o.nodeIds,i.first),length:n(i.nodeIds)}:a})}function tt(t){let{pathVisits:s}=t,e=new Map;return n=>{let r=e.get(n.id);if(!r){r=[];let a=s?s.slot(n.name):-1,h=a>=0?s.pathIndex(n.stable.refName):-1;if(h>=0)for(let o=s.offsets[a];o<s.offsets[a+1];o++)s.path[o]===h&&r.push(s.start[o]);r.length<2&&(r=[n.stable.start]),e.set(n.id,r)}return r}}export{b as a,F as b,m as c,g as d,l as e,_ as f,w as g,G as h,U as i,C as j,K as k,T as l,y as m,$ as n,A as o,d as p,u as q,E as r,Q as s,P as t,k as u,Y as v,Z as w,tt as x};
|
|
2
|
+
//# sourceMappingURL=chunk-ULLEUORS.js.map
|