jbrowse-plugin-graphgenomeviewer 8.1.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js → AddTrackWorkflow-JAIB6H2T.js} +2 -2
- package/dist/chunks/{GbzBaseSyntenyAdapter-OHJ4QDMX.js → GbzBaseSyntenyAdapter-EJIR3HZM.js} +2 -2
- package/dist/chunks/{GraphGenomeView-RWQUR473.js → GraphGenomeView-2AKRM74B.js} +2 -2
- package/dist/chunks/{GraphTrackSettingsDialog-IQZGEFCA.js → GraphTrackSettingsDialog-7XRZQW6T.js} +2 -2
- package/dist/chunks/{LinearGraphDisplay-YDUG4J53.js → LinearGraphDisplay-WWQ73BO5.js} +2 -2
- package/dist/chunks/{MinigraphBubbleAdapter-EVYS6XUZ.js → MinigraphBubbleAdapter-4OOBJ44C.js} +2 -2
- package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js +2 -0
- package/dist/chunks/RgfaTabixAdapter-CEGFN2QY.js.map +7 -0
- package/dist/chunks/{WalkFormsAdapter-SG4LLHHS.js → WalkFormsAdapter-LTAKACZD.js} +2 -2
- package/dist/chunks/{WalkTabixSyntenyAdapter-NEZMRCRO.js → WalkTabixSyntenyAdapter-B6V3YNW7.js} +2 -2
- package/dist/chunks/chunk-6VNDP3UB.js +2 -0
- package/dist/chunks/chunk-6VNDP3UB.js.map +7 -0
- package/dist/chunks/chunk-CZXJXNZN.js +3 -0
- package/dist/chunks/chunk-CZXJXNZN.js.map +7 -0
- package/dist/chunks/{chunk-5EWKB2JM.js → chunk-MCBYBZZJ.js} +2 -2
- package/dist/chunks/{chunk-IL5HOUFN.js → chunk-NOXHIOIM.js} +2 -2
- package/dist/chunks/{chunk-OG7MODXE.js → chunk-OLZZDBQJ.js} +2 -2
- package/dist/chunks/{chunk-PKMASUMB.js → chunk-PTOKTIQG.js} +2 -2
- package/dist/chunks/{chunk-B7MGDESF.js → chunk-QWG7NASD.js} +2 -2
- package/dist/chunks/chunk-SL4JJJQJ.js +3 -0
- package/dist/chunks/chunk-SL4JJJQJ.js.map +7 -0
- package/dist/chunks/{chunk-6ZZJCKX5.js → chunk-UECOGSWM.js} +2 -2
- package/dist/chunks/{chunk-MK3U4D2U.js → chunk-UHV6XIDG.js} +2 -2
- package/dist/chunks/{chunk-PDLKFVVK.js → chunk-WUOXZAGN.js} +2 -2
- package/dist/chunks/chunk-ZEE3HTOT.js +2 -0
- package/dist/chunks/chunk-ZEE3HTOT.js.map +7 -0
- package/dist/chunks/{renderSvg-APVNMW6O.js → renderSvg-E5Q7MLCH.js} +2 -2
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +5 -5
- package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +3 -3
- package/package.json +2 -2
- package/src/GraphAddTrackWorkflow/buildTrackConfig.test.ts +18 -0
- package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +22 -2
- package/src/GraphAddTrackWorkflow/graphManifest.test.ts +12 -0
- package/src/GraphAddTrackWorkflow/graphManifest.ts +26 -11
- package/src/GraphGenomeView/pane/paneBase.ts +14 -9
- package/src/RgfaTabixAdapter/RgfaTabixAdapter.ts +94 -41
- package/src/RgfaTabixAdapter/configSchema.ts +35 -4
- package/src/RgfaTabixAdapter/format2.test.ts +128 -0
- package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.links.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f1.segs.bed.gz.tbi +0 -0
- package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz +0 -0
- package/src/RgfaTabixAdapter/test_data/pggb_ecoli_f2.graph.bed.gz.tbi +0 -0
- package/src/graphTrackDefaults/index.ts +2 -2
- package/src/locationName.ts +2 -0
- package/src/version.ts +1 -1
- package/dist/chunks/RgfaTabixAdapter-QD2AJSBK.js +0 -2
- package/dist/chunks/RgfaTabixAdapter-QD2AJSBK.js.map +0 -7
- package/dist/chunks/chunk-AH5UWTAV.js +0 -2
- package/dist/chunks/chunk-AH5UWTAV.js.map +0 -7
- package/dist/chunks/chunk-IKJZPPOA.js +0 -2
- package/dist/chunks/chunk-IKJZPPOA.js.map +0 -7
- package/dist/chunks/chunk-MJS65EKE.js +0 -3
- package/dist/chunks/chunk-MJS65EKE.js.map +0 -7
- package/dist/chunks/chunk-TBNAAP6E.js +0 -3
- package/dist/chunks/chunk-TBNAAP6E.js.map +0 -7
- /package/dist/chunks/{AddTrackWorkflow-RJSOQZYQ.js.map → AddTrackWorkflow-JAIB6H2T.js.map} +0 -0
- /package/dist/chunks/{GbzBaseSyntenyAdapter-OHJ4QDMX.js.map → GbzBaseSyntenyAdapter-EJIR3HZM.js.map} +0 -0
- /package/dist/chunks/{GraphGenomeView-RWQUR473.js.map → GraphGenomeView-2AKRM74B.js.map} +0 -0
- /package/dist/chunks/{GraphTrackSettingsDialog-IQZGEFCA.js.map → GraphTrackSettingsDialog-7XRZQW6T.js.map} +0 -0
- /package/dist/chunks/{LinearGraphDisplay-YDUG4J53.js.map → LinearGraphDisplay-WWQ73BO5.js.map} +0 -0
- /package/dist/chunks/{MinigraphBubbleAdapter-EVYS6XUZ.js.map → MinigraphBubbleAdapter-4OOBJ44C.js.map} +0 -0
- /package/dist/chunks/{WalkFormsAdapter-SG4LLHHS.js.map → WalkFormsAdapter-LTAKACZD.js.map} +0 -0
- /package/dist/chunks/{WalkTabixSyntenyAdapter-NEZMRCRO.js.map → WalkTabixSyntenyAdapter-B6V3YNW7.js.map} +0 -0
- /package/dist/chunks/{chunk-5EWKB2JM.js.map → chunk-MCBYBZZJ.js.map} +0 -0
- /package/dist/chunks/{chunk-IL5HOUFN.js.map → chunk-NOXHIOIM.js.map} +0 -0
- /package/dist/chunks/{chunk-OG7MODXE.js.map → chunk-OLZZDBQJ.js.map} +0 -0
- /package/dist/chunks/{chunk-PKMASUMB.js.map → chunk-PTOKTIQG.js.map} +0 -0
- /package/dist/chunks/{chunk-B7MGDESF.js.map → chunk-QWG7NASD.js.map} +0 -0
- /package/dist/chunks/{chunk-6ZZJCKX5.js.map → chunk-UECOGSWM.js.map} +0 -0
- /package/dist/chunks/{chunk-MK3U4D2U.js.map → chunk-UHV6XIDG.js.map} +0 -0
- /package/dist/chunks/{chunk-PDLKFVVK.js.map → chunk-WUOXZAGN.js.map} +0 -0
- /package/dist/chunks/{renderSvg-APVNMW6O.js.map → renderSvg-E5Q7MLCH.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as J,c as D,d as V,e as X,f as q,h as K}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=AddTrackWorkflow-
|
|
1
|
+
import{b as J,c as D,d as V,e as X,f as q,h as K}from"./chunk-ZEE3HTOT.js";import"./chunk-3VGXCEMQ.js";import"./chunk-6VNDP3UB.js";import"./chunk-OGQ6OQDN.js";import{d as M,e as P}from"./chunk-3WG3GF2A.js";import{b as w,h as v,j as A,m as x}from"./chunk-J5RMHLFJ.js";import{i as o}from"./chunk-NIEZKWQV.js";import{A as O,B as j,C as z,F as h,a as H,f as E,g as c,o as B,s as N,t as W,u as _}from"./chunk-5Z4VIKXZ.js";import{b as a,c as f,d as I}from"./chunk-JMBDTNUR.js";var n=JBrowseExports["@jbrowse/core/util/tss-react"],oe=s=>n!=null&&s in Object(n)?n[s]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+s+"' from '@jbrowse/core/util/tss-react' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:s});var Q=oe("makeStyles"),ie=n&&n.__esModule?n.default:n;var se=Q()(s=>({paper:{margin:s.spacing(),padding:s.spacing()},field:{marginTop:s.spacing(2)},submit:{marginTop:25,marginBottom:100,display:"block"}})),re=["RgfaTabixAdapter","RgfaTabixWalks","GbzBaseSyntenyAdapter","MinigraphBubbleAdapter"],ne=I(function({model:t}){let{classes:i}=se(),y=A(t),d=M(t),[r,U]=o("RgfaTabixAdapter"),[l,Y]=o(),[k,G]=o(),[T,Z]=o(),m=r==="GbzBaseSyntenyAdapter",u=r==="RgfaTabixWalks",[C,$]=o(""),[R,ee]=o(""),[b,ae]=o("Pangenome graph"),[S,g]=o(),[F,L]=o(!1);async function te(){if(!l||!t.assembly)return;g(void 0),L(!0);let e=r==="RgfaTabixAdapter"?await J(l,v(t).pluginManager):void 0;if(L(!1),!(!P(t)||!t.assembly))try{let p=b.trim();w({model:t,session:y,conf:K({choice:r,loc:l,indexLoc:k,readsLoc:m?T:void 0,manifest:e,assembly:t.assembly,sample:C,haplotypes:u?q(R):void 0,trackId:x({name:p}),name:p})})}catch(p){g(p)}}return f(O,{className:i.paper,children:[S?a(E,{error:S}):null,f(N,{children:[a(_,{children:"File type"}),a(z,{value:r,onChange:e=>{U(e.target.value),G(void 0),g(void 0)},children:re.map(e=>a(W,{value:e,control:a(j,{}),label:D[e]},e))})]}),a(c,{location:l,name:V[r],rootModel:d,setLocation:Y}),a(c,{location:k,name:X[r],rootModel:d,setLocation:G}),m?a(c,{location:T,name:"Path to reads aligned to the graph as GAF (optional; a .gz is read by the .tbi beside it)",rootModel:d,setLocation:Z}):null,a(h,{className:i.field,value:C,onChange:e=>{$(e.target.value)},label:"Sample name in the graph",slotProps:{htmlInput:{"data-testid":"graph-sample-input"}},helperText:m?"Optional. The graph's sample for this assembly, e.g. GRCh38 where the assembly is hg38; leave blank when they share a name or the graph has one reference sample":u?"Optional. The PanSN sample this assembly is in the graph; blank takes it from the file name, GRCh38 in chr22.GRCh38.walks.bed.gz":"Optional. The PanSN prefix the graph gives this assembly, e.g. GRCh38 for HPRC's GRCh38#0#chr1; leave blank when the graph's stable names are bare",placeholder:"GRCh38",fullWidth:!0}),u?a(h,{className:i.field,value:R,onChange:e=>{ee(e.target.value)},label:"Haplotypes",slotProps:{htmlInput:{"data-testid":"graph-haplotypes-input"}},helperText:"Optional. The haplotypes the track cuts for until you pick others in its menu, as PanSN names separated by commas (HG002#1, or HG002 for both); blank is every haplotype in the file",placeholder:"HG002, HG00733",fullWidth:!0}):null,a(h,{className:i.field,value:b,label:"Track name",slotProps:{htmlInput:{"data-testid":"graph-track-name-input"}},onChange:e=>{ae(e.target.value)}}),a(H,{session:y,helperText:"Select assembly to add track to",selected:t.assembly,onChange:e=>{t.setAssembly(e)},fullWidth:!0}),a(B,{variant:"contained",className:i.submit,disabled:!l||!b.trim()||!t.assembly||F,onClick:()=>{te()},children:F?"Reading graph.json\u2026":"Submit"})]})}),ye=ne;export{ye as default};
|
|
2
|
+
//# sourceMappingURL=AddTrackWorkflow-JAIB6H2T.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as NA,b as yA,c as _A,d as FA,e as dA,f as v,g as kA,h as fA}from"./chunk-B7MGDESF.js";import{a as hA}from"./chunk-HAAABGE7.js";import{a as DA}from"./chunk-KOB7YIMR.js";import{a as EA,b as eA,c as iA,d as D,e as j,f as W,g as tA,h as z,i as oA,k as aA}from"./chunk-CNCYMJ5E.js";import"./chunk-M2D7NUOY.js";import{h as P,i as T}from"./chunk-OGXVDZPS.js";import"./chunk-YBLNN5FU.js";import"./chunk-CZI7IP5S.js";import"./chunk-IK3MQ4ZJ.js";import{C as wA,a as cA,c as S}from"./chunk-TBNAAP6E.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import{g as U,h as p,i as _}from"./chunk-VKZALU57.js";import"./chunk-OTBDKJEA.js";import"./chunk-3VGXCEMQ.js";import{d as Y,g as nA,h as sA,i as rA}from"./chunk-IKJZPPOA.js";import{a as J}from"./chunk-OGQ6OQDN.js";import"./chunk-3WG3GF2A.js";import{e as BA,o as Z}from"./chunk-J5RMHLFJ.js";function L(A){let g=/\.gbz\.db$/i;return g.test(A)?A.replace(g,".haplotype-index.db"):void 0}function jA(A){return sA(A)&&L(nA(A))?rA(A,g=>L(g)):void 0}function WA(A){return A instanceof Error&&(/\bHTTP 40[34]\b/.test(A.message)||A.code==="ENOENT")}async function lA(A,g){let Q=jA(A);if(!Q)return{};try{return await J(Q,g).stat(),{location:Q}}catch(I){return WA(I)?{}:{unreadable:String(I)}}}var F={};F.d=(A,g)=>{if(Array.isArray(g))for(var Q=0;Q<g.length;){var I=g[Q++],C=g[Q++];F.o(A,I)?C===0&&Q++:C===0?Object.defineProperty(A,I,{enumerable:!0,value:g[Q++]}):Object.defineProperty(A,I,{enumerable:!0,get:C})}else for(var I in g)F.o(g,I)&&!F.o(A,I)&&Object.defineProperty(A,I,{enumerable:!0,get:g[I]})};F.o=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);F.r=A=>{Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var O={};F.r(O);F.d(O,{ChunkSliceResult:()=>R,__wbg_Error_92b29b0548f8b746:()=>TA,__wbg___wbindgen_throw_344f42d3211c4765:()=>vA,__wbg_set_wasm:()=>bA,decompress_all:()=>GA,decompress_chunk_slice:()=>PA});var zA="data:application/wasm;base64,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AyABNgIEIAMgADYCACADQRmtQiCGIAOthDcDCEGWgcAAIANBCGogAhAwAAs8AAJAIAAoAgBBf0YNACABIAAoAgQgACgCCBBLDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAwLNgACQCACQX9GDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzIAAkACQCABaUEBRw0AIABBgICAgHggAWtLDQAgAEUNARBpIAAgARBXIgENAQsACyABCzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFELCysBAX8jAEEQayIBJAAgAUEYrUIghiABQQ9qrYQ3AwBBloHAACABIAAQMAALKgEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADQQRqEGMACy0BAX8jAEEQayIBJAAgASAAKQIANwIIIAFBCGpBwJPAACAAKAIIQQFBABAVAAssAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahBlAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBkAAslAQF/AkBBvIjAABAsIgBFDQAgAA8LQfCHwABBOkGsiMAAEDcACyAAAkAgASgCAEUNACAAQYiWwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQSw8LAAsbAQF/EGkgAEEEakEEEFciASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFELCx4AIAAoAgAgACgCBEEAKAKgnUAiAEEEIAAbEQQAAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFELCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUQsUAAJAIABFDQAgACABEF4ACxBUAAsRACAAIAFBAXRBAXIgAhAwAAsSAAJAIAFFDQAgACABIAIQUQsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAsSUQDcCCCAAQQApAryUQDcCAAsaACAAQQApArSUQDcCCCAAQQApAqyUQDcCAAsW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AA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAA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",R=class A{static __wrap(g){let Q=Object.create(A.prototype);return Q.__wbg_ptr=g,pA.register(Q,Q.__wbg_ptr,Q),Q}__destroy_into_raw(){let g=this.__wbg_ptr;return this.__wbg_ptr=0,pA.unregister(this),g}free(){let g=this.__destroy_into_raw();t.__wbg_chunksliceresult_free(g,0)}take_buffer(){try{let C=t.__wbindgen_add_to_stack_pointer(-16);t.chunksliceresult_take_buffer(C,this.__wbg_ptr);var g=s().getInt32(C+0,!0),Q=s().getInt32(C+4,!0),I=mA(g,Q).slice();return t.__wbindgen_export(g,Q*1,1),I}finally{t.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let C=t.__wbindgen_add_to_stack_pointer(-16);t.chunksliceresult_take_cpositions(C,this.__wbg_ptr);var g=s().getInt32(C+0,!0),Q=s().getInt32(C+4,!0),I=JA(g,Q).slice();return t.__wbindgen_export(g,Q*8,8),I}finally{t.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let C=t.__wbindgen_add_to_stack_pointer(-16);t.chunksliceresult_take_dpositions(C,this.__wbg_ptr);var g=s().getInt32(C+0,!0),Q=s().getInt32(C+4,!0),I=JA(g,Q).slice();return t.__wbindgen_export(g,Q*8,8),I}finally{t.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(R.prototype[Symbol.dispose]=R.prototype.free);function GA(A){try{let E=t.__wbindgen_add_to_stack_pointer(-16),i=SA(A,t.__wbindgen_export2),e=AA;t.decompress_all(E,i,e);var g=s().getInt32(E+0,!0),Q=s().getInt32(E+4,!0),I=s().getInt32(E+8,!0),C=s().getInt32(E+12,!0);if(C)throw uA(I);var B=mA(g,Q).slice();return t.__wbindgen_export(g,Q*1,1),B}finally{t.__wbindgen_add_to_stack_pointer(16)}}function PA(A,g,Q,I,C){try{let e=t.__wbindgen_add_to_stack_pointer(-16),o=SA(A,t.__wbindgen_export2),a=AA;t.decompress_chunk_slice(e,o,a,g,Q,I,C);var B=s().getInt32(e+0,!0),E=s().getInt32(e+4,!0),i=s().getInt32(e+8,!0);if(i)throw uA(E);return R.__wrap(B)}finally{t.__wbindgen_add_to_stack_pointer(16)}}function TA(A,g){let Q=Error(RA(A,g));return VA(Q)}function vA(A,g){throw new Error(RA(A,g))}var pA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(A=>t.__wbg_chunksliceresult_free(A,1));function VA(A){u===N.length&&N.push(N.length+1);let g=u;return u=N[g],N[g]=A,g}function OA(A){A<1028||(N[A]=u,u=A)}function JA(A,g){return A=A>>>0,$A().subarray(A/8,A/8+g)}function mA(A,g){return A=A>>>0,$().subarray(A/1,A/1+g)}var G=null;function s(){return(G===null||G.buffer.detached===!0||G.buffer.detached===void 0&&G.buffer!==t.memory.buffer)&&(G=new DataView(t.memory.buffer)),G}var M=null;function $A(){return(M===null||M.byteLength===0)&&(M=new Float64Array(t.memory.buffer)),M}function RA(A,g){return gQ(A>>>0,g)}var H=null;function $(){return(H===null||H.byteLength===0)&&(H=new Uint8Array(t.memory.buffer)),H}function AQ(A){return N[A]}var N=new Array(1024).fill(void 0);N.push(void 0,null,!0,!1);var u=N.length;function SA(A,g){let Q=g(A.length*1,1)>>>0;return $().set(A,Q/1),AA=A.length,Q}function uA(A){let g=AQ(A);return OA(A),g}var K=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});K.decode();var QQ=2146435072,V=0;function gQ(A,g){return V+=g,V>=QQ&&(K=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),K.decode(),V=g),K.decode($().subarray(A,A+g).slice())}var AA=0,t;function bA(A){t=A}var m=null,x=null;async function IQ(){return m||(x||(x=(async()=>{let g=await(await fetch(zA)).arrayBuffer(),{instance:Q}=await WebAssembly.instantiate(g,{"./bgzf_wasm_bg.js":O});return m=Q.exports,bA(m),m})().catch(A=>{throw x=null,A})),x)}async function UA(A){return m||await IQ(),GA(A)}var CQ=26;function LA(A){return A[0]===31&&A[1]===139}function BQ(A){return A.length>=CQ&&LA(A)&&A[2]===8&&A[3]===4&&A[10]===6&&A[12]===66&&A[13]===67}function MA(A){return A instanceof Error?A.message:`${A}`}async function YA(A){if(typeof DecompressionStream<"u"){let g=new Blob([A]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(g).arrayBuffer())}else return cA(A,void 0)}function EQ(A){return MA(A).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:A}):A}async function QA(A){if(A.length===0)return new Uint8Array(0);if(!BQ(A)){if(LA(A))return YA(A);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await UA(A)}catch(g){if(MA(g).includes("invalid bgzf header"))return YA(A);throw EQ(g)}}var eQ=5e3,iQ=50*2**20,gA=class extends Error{constructor(Q){super(`this GAF is ${(Q/2**20).toFixed(0)} MB without an index; bgzip it and index it with tabix -p gaf`);this.name="UnindexedGafTooLargeError"}};function tQ(A,g){if(A.length<=g)return A;let Q=A.length/g;return Array.from({length:g},(I,C)=>A[Math.floor(C*Q)])}var HA=(A,g)=>A.path.some(Q=>g.has(Q.name)),q=class{constructor(g,Q){this.file=g;this.tabix=Q;this.whole=S({setup:async({signal:g})=>{let{size:Q}=await this.file.stat();if(Q>iQ)throw new gA(Q);let I=await this.file.readFile({signal:g}),C=new TextDecoder().decode(I[0]===31&&I[1]===139?await QA(I):I);return T(C)}})}async readIndexed(g,Q,I){let C=1/0,B=-1/0;for(let i of Q){let e=Number(i);Number.isInteger(e)&&(C=Math.min(C,e),B=Math.max(B,e))}let E=[];return C<=B&&await g.getLines("{node}",C,B+1,{signal:I,lineCallback:i=>{let e=P(i);e&&HA(e,Q)&&E.push(e)}}),E}async readsOver(g,{signal:Q}={}){let I=this.tabix?await this.readIndexed(this.tabix,g,Q):(await this.whole({signal:Q})).filter(C=>HA(C,g));return{records:tQ(I,eQ),total:I.length}}};var X=class extends Error{constructor(Q){super(Q===void 0?"no haplotype index is set, so the walks cannot be named; build one with gbz-haplotype-index (cargo install gbz-haplotype-index) and set it as haplotypeIndexLocation":`the haplotype index beside the graph database could not be checked (${Q}), so the walks cannot be named; if it is there, reload to try again, or set haplotypeIndexLocation`);this.name="NoHaplotypeIndexError"}},IA=class extends Error{constructor(Q,I){super(`the graph is cut on its reference, ${I}; a window on ${Q} has no reference coordinates to cut at. Open the graph from a ${I} view, and find this haplotype's lane there`);this.name="HaplotypeWindowError"}};function oQ(A,g){return`${D(A)}#${A.contig}@${g.start.node}.${g.start.offset}`}function aQ({alignment:A,assemblyName:g,refName:Q,lane:I}){let{refStart:C,refEnd:B,strand:E,cigar:i}=A;if(!(B<=C)){let{name:e,hapStart:o,hapEnd:a}=A,r=oQ(e,A),h={uniqueId:r,assemblyName:g,refName:Q,start:C,end:B,type:"match",strand:E==="-"?-1:1,CIGAR:i,syntenyId:r,mate:{refName:e.contig,start:o,end:a,assemblyName:I}};return new NA(h)}}function nQ({pair:A,lane:g,mateLane:Q}){return fA({target:{name:`${D(A.target)}#${A.target.contig}`,assemblyName:g,refName:A.target.contig,start:A.targetStart,end:A.targetEnd},query:{name:`${D(A.query)}#${A.query.contig}`,assemblyName:Q,refName:A.query.contig,start:A.queryStart,end:A.queryEnd},strand:A.strand,cigar:A.cigar,matches:A.matches,columns:A.columns})}var sQ=12e4;function rQ(A,g){let Q=new Map;for(let C of A)for(let{name:B,start:E,end:i}of C.walkSpans()){let e=D(B);if(g.has(e)){let o=`${e}#${B.contig}`,a=Q.get(o);a?a.push([E,i]):Q.set(o,[[E,i]])}}let I=0;for(let C of Q.values()){C.sort((B,E)=>B[0]-E[0]);for(let B=1;B<C.length;B++){let E=C[B][0]-C[B-1][1];E>0&&E<=sQ&&(I=Math.max(I,E))}}return I}function qA(A,g){return A instanceof iA&&(A.message=`Zoom in to about ${BA(A.fitsBp)} to see ${g}`),A}var xA=(A,g,Q)=>kA(qA(oA(A,g,Q)??A,"lanes"),Q),KA=A=>({...A,start:Math.floor(A.start),end:Math.ceil(A.end)}),CA=class extends yA{constructor(){super(...arguments);this.graph=S({label:"Opening pangenome database",setup:async()=>{let Q=this.getConf("gbzDbLocation"),I=this.getConf("haplotypeIndexLocation"),C=Y(I)?{location:I}:await lA(Q,this.pluginManager),B=C.location,E=await eA.open({source:J(Q,this.pluginManager),haplotypeIndex:B?J(B,this.pluginManager):void 0}),i=this.getConf("assemblyNames")[0];if(i===void 0)throw new Error("GbzBaseSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");let e=await W(E),o=tA({configured:this.getConf("referenceSample"),anchorPrefix:p(this,i),referenceSamples:e});return{db:E,anchor:i,referenceSample:o,referenceSamples:e,unreadableIndex:C.unreadable}}});this.gaf=S({label:"Opening reads",setup:async()=>{let Q=this.getConf("readsLocation"),I=this.getConf(["readsIndex","location"]);return Y(Q)?new q(J(Q,this.pluginManager),Y(I)?wA(this,["readsLocation"],["readsIndex"]):void 0):void 0}})}async referenceQuery(Q,I){let{db:C,referenceSample:B}=await this.graph(I);return z(C,B,Q)}async getHaplotypes(Q={}){let{db:I,referenceSamples:C}=await this.graph(Q),B=new Map;for(let E of await I.paths()){let i=D(E.name),e=B.get(i);e?e.contigs.includes(E.name.contig)||e.contigs.push(E.name.contig):B.set(i,{prefix:i,sample:E.name.sample,haplotype:E.name.haplotype,contigs:[E.name.contig],isReference:C.includes(E.name.sample)})}return[...B.values()]}async getHeader(Q={}){let{anchor:I,referenceSample:C}=await this.graph(Q),B=_(this),E=[];for(let i of await this.getHaplotypes(Q))i.sample!==C&&E.push({name:v(B,i.prefix),label:i.prefix,group:i.sample});return{hasCoarseTier:!1,anchorAssemblyName:I,lanes:E}}async getRefNames(Q={}){let{db:I,anchor:C,referenceSample:B}=await this.graph(Q),{assemblyName:E}=Q,i=E===C?void 0:p(this,E),e=(await I.paths()).filter(o=>E===C?o.isIndexed&&o.name.sample===B:U(D(o.name),i)).map(o=>o.name.contig);return[...new Set(e)]}keepPredicate(Q,I){let C=Q===void 0||Q.length===0?void 0:Q.map(B=>p(this,B));return C===void 0&&I===void 0?void 0:B=>j(B,C)&&(I===void 0||U(D(B),I))}async getSubgraph(Q,I={}){let{signal:C}=I,{db:B,anchor:E,referenceSample:i,unreadableIndex:e}=await this.graph({signal:C}),{assemblyName:o,refName:a,start:r,end:h}=KA(Q);if(o!==E)throw new IA(o,E);let y=await this.referenceQuery(a,{signal:C});if(!y)throw new Error(`${i} has no indexed path ${a} in this graph`);let d=this.keepPredicate(I.haplotypes);if(d!==void 0&&!B.hasHaplotypeIndex)throw new X(e);let c=await aA(B,y,r,h,{context:this.getConf("context"),snarls:I.snarls??this.getConf("subgraphSnarls"),limit:this.getConf("nodeLimit"),signal:I.signal,keep:d}).catch(k=>{throw qA(k,"the graph")});return typeof c=="string"?c:hA(c,{start:r,end:h},I.walkRows)}async getReads(Q,I={}){let C=await this.gaf(I);return C?C.readsOver(new Set(Q),I):{records:[],total:0}}async laneHaplotypes(Q,I){let C=p(this,Q);return(await this.getHaplotypes(I)).filter(B=>U(B.prefix,C))}async anchorFeatures(Q,I){let{db:C}=await this.graph(I),{assemblyName:B,refName:E,start:i,end:e}=Q,o=p(this,I.targetAssemblyName),a=_(this),r=this.keepPredicate(I.haplotypes,o),h=await this.referenceQuery(E,I),y=this.getConf("nodeLimit");return(h?await Z(`Reading graph ${E}:${i.toLocaleString()}-${e.toLocaleString()}`,I.statusCallback,()=>C.getAlignments({path:h,start:i,end:e,context:this.getConf("context"),haplotypes:"all",limit:y,signal:I.signal,keep:r}).catch(c=>{throw xA(c,y,e-i)})):[]).flatMap(c=>{let k=c.resolved?aQ({alignment:c,assemblyName:B,refName:E,lane:v(a,D(c.name))}):void 0;return k===void 0?[]:[k]})}async pairFeatures(Q,I,C){let{db:B}=await this.graph(C),{refName:E,start:i,end:e}=Q,a=(await Promise.all(I.map(async n=>({pair:n,featureSide:await this.laneHaplotypes(n.queryAssemblyName,C),mateSide:await this.laneHaplotypes(n.targetAssemblyName,C)})))).filter(({featureSide:n,mateSide:w})=>n.length>0&&w.length>0),r=new Set(a.flatMap(({featureSide:n,mateSide:w})=>[...n,...w].map(D))),h=await this.referenceQuery(E,C),y=this.getConf("nodeLimit"),d=this.getConf("context"),c=(n,w)=>B.getSubgraphs({path:n,start:i,end:e,context:w,snarls:this.getConf("subgraphSnarls"),haplotypes:"all",limit:y,signal:C.signal,keep:f=>r.has(D(f))}),k=async n=>{let w=await c(n,d).catch(l=>{throw xA(l,y,e-i)}),f=rQ(w,r),b=Math.ceil(f/2)+2e3;return f>0&&b>d?c(n,b).catch(l=>{if(l instanceof EA)return w;throw l}):w};return(h&&a.length>0?await Z(dA(I),C.statusCallback,()=>k(h)):[]).flatMap(n=>a.flatMap(({pair:w,featureSide:f,mateSide:b})=>f.flatMap(l=>b.flatMap(XA=>n.pairAlignments({target:l,query:XA,bases:!1}).map(ZA=>nQ({pair:ZA,lane:w.queryAssemblyName,mateLane:w.targetAssemblyName}))))))}getFeatures(Q,I={}){let C=KA(Q);return DA(async B=>{let{db:E,anchor:i,unreadableIndex:e}=await this.graph(I);if(!E.hasHaplotypeIndex)throw new X(e);if(C.assemblyName===i){let o=FA(I),a=o.length>0?await this.pairFeatures(C,o,I):await this.anchorFeatures(C,I);for(let r of a)B.next(r)}B.complete()},I.signal)}};export{X as NoHaplotypeIndexError,_A as PairTargetError,CA as default,rQ as widestWalkGap};
|
|
2
|
-
//# sourceMappingURL=GbzBaseSyntenyAdapter-
|
|
1
|
+
import{a as NA,b as yA,c as _A,d as FA,e as dA,f as v,g as kA,h as fA}from"./chunk-QWG7NASD.js";import{a as hA}from"./chunk-HAAABGE7.js";import{a as DA}from"./chunk-KOB7YIMR.js";import{a as EA,b as eA,c as iA,d as D,e as j,f as W,g as tA,h as z,i as oA,k as aA}from"./chunk-CNCYMJ5E.js";import"./chunk-M2D7NUOY.js";import{h as P,i as T}from"./chunk-OGXVDZPS.js";import"./chunk-YBLNN5FU.js";import"./chunk-CZI7IP5S.js";import"./chunk-IK3MQ4ZJ.js";import{E as wA,a as cA,c as S}from"./chunk-CZXJXNZN.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import{g as U,h as p,i as _}from"./chunk-VKZALU57.js";import"./chunk-OTBDKJEA.js";import"./chunk-3VGXCEMQ.js";import{e as Y,h as nA,i as sA,j as rA}from"./chunk-6VNDP3UB.js";import{a as J}from"./chunk-OGQ6OQDN.js";import"./chunk-3WG3GF2A.js";import{e as BA,o as Z}from"./chunk-J5RMHLFJ.js";function L(A){let g=/\.gbz\.db$/i;return g.test(A)?A.replace(g,".haplotype-index.db"):void 0}function jA(A){return sA(A)&&L(nA(A))?rA(A,g=>L(g)):void 0}function WA(A){return A instanceof Error&&(/\bHTTP 40[34]\b/.test(A.message)||A.code==="ENOENT")}async function lA(A,g){let Q=jA(A);if(!Q)return{};try{return await J(Q,g).stat(),{location:Q}}catch(I){return WA(I)?{}:{unreadable:String(I)}}}var F={};F.d=(A,g)=>{if(Array.isArray(g))for(var Q=0;Q<g.length;){var I=g[Q++],C=g[Q++];F.o(A,I)?C===0&&Q++:C===0?Object.defineProperty(A,I,{enumerable:!0,value:g[Q++]}):Object.defineProperty(A,I,{enumerable:!0,get:C})}else for(var I in g)F.o(g,I)&&!F.o(A,I)&&Object.defineProperty(A,I,{enumerable:!0,get:g[I]})};F.o=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);F.r=A=>{Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var O={};F.r(O);F.d(O,{ChunkSliceResult:()=>R,__wbg_Error_92b29b0548f8b746:()=>TA,__wbg___wbindgen_throw_344f42d3211c4765:()=>vA,__wbg_set_wasm:()=>bA,decompress_all:()=>GA,decompress_chunk_slice:()=>PA});var zA="data:application/wasm;base64,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AyABNgIEIAMgADYCACADQRmtQiCGIAOthDcDCEGWgcAAIANBCGogAhAwAAs8AAJAIAAoAgBBf0YNACABIAAoAgQgACgCCBBLDwsgASgCACABKAIEIAAoAgwoAgAiACgCACAAKAIEEAwLNgACQCACQX9GDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzIAAkACQCABaUEBRw0AIABBgICAgHggAWtLDQAgAEUNARBpIAAgARBXIgENAQsACyABCzUBAX8CQCAARQ0AAkAgASgCACICRQ0AIAAgAhECAAsgASgCBCICRQ0AIAAgAiABKAIIEFELCysBAX8jAEEQayIBJAAgAUEYrUIghiABQQ9qrYQ3AwBBloHAACABIAAQMAALKgEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIAMgADYCBCADQQRqEGMACy0BAX8jAEEQayIBJAAgASAAKQIANwIIIAFBCGpBwJPAACAAKAIIQQFBABAVAAssAgF/AX4jAEEQayIBJAAgACkCACECIAEgADYCDCABIAI3AgQgAUEEahBlAAsjAQF/IwBBEGsiAiQAIAIgATYCDCACIAA2AgggAkEIahBkAAslAQF/AkBBvIjAABAsIgBFDQAgAA8LQfCHwABBOkGsiMAAEDcACyAAAkAgASgCAEUNACAAQYiWwAA2AgQgACABNgIADwsACx4BAX8CQCAAKAIAIgJFDQAgASACIAAoAgQQSw8LAAsbAQF/EGkgAEEEakEEEFciASAANgIAIAFBBGoLHgEBfwJAIAAoAgAiAUEBSA0AIAAoAgQgAUEBEFELCx4AIAAoAgAgACgCBEEAKAKgnUAiAEEEIAAbEQQAAAscAQF/AkAgACgCACIBRQ0AIAAoAgQgAUEBEFELCxcAAkAgAUEJSQ0AIAEgABAODwsgABACCxUAIABBfGoiACAAKAIAQQRqQQQQUQsUAAJAIABFDQAgACABEF4ACxBUAAsRACAAIAFBAXRBAXIgAhAwAAsSAAJAIAFFDQAgACABIAIQUQsLEgAgACABIAIgAyAEQQAgBRADCxUAAkAgAEUNACAAIAAoAqhaEQIACwsaACAAQQApAsSUQDcCCCAAQQApAryUQDcCAAsaACAAQQApArSUQDcCCCAAQQApAqyUQDcCAAsW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AA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAA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",R=class A{static __wrap(g){let Q=Object.create(A.prototype);return Q.__wbg_ptr=g,pA.register(Q,Q.__wbg_ptr,Q),Q}__destroy_into_raw(){let g=this.__wbg_ptr;return this.__wbg_ptr=0,pA.unregister(this),g}free(){let g=this.__destroy_into_raw();t.__wbg_chunksliceresult_free(g,0)}take_buffer(){try{let C=t.__wbindgen_add_to_stack_pointer(-16);t.chunksliceresult_take_buffer(C,this.__wbg_ptr);var g=s().getInt32(C+0,!0),Q=s().getInt32(C+4,!0),I=mA(g,Q).slice();return t.__wbindgen_export(g,Q*1,1),I}finally{t.__wbindgen_add_to_stack_pointer(16)}}take_cpositions(){try{let C=t.__wbindgen_add_to_stack_pointer(-16);t.chunksliceresult_take_cpositions(C,this.__wbg_ptr);var g=s().getInt32(C+0,!0),Q=s().getInt32(C+4,!0),I=JA(g,Q).slice();return t.__wbindgen_export(g,Q*8,8),I}finally{t.__wbindgen_add_to_stack_pointer(16)}}take_dpositions(){try{let C=t.__wbindgen_add_to_stack_pointer(-16);t.chunksliceresult_take_dpositions(C,this.__wbg_ptr);var g=s().getInt32(C+0,!0),Q=s().getInt32(C+4,!0),I=JA(g,Q).slice();return t.__wbindgen_export(g,Q*8,8),I}finally{t.__wbindgen_add_to_stack_pointer(16)}}};Symbol.dispose&&(R.prototype[Symbol.dispose]=R.prototype.free);function GA(A){try{let E=t.__wbindgen_add_to_stack_pointer(-16),i=SA(A,t.__wbindgen_export2),e=AA;t.decompress_all(E,i,e);var g=s().getInt32(E+0,!0),Q=s().getInt32(E+4,!0),I=s().getInt32(E+8,!0),C=s().getInt32(E+12,!0);if(C)throw uA(I);var B=mA(g,Q).slice();return t.__wbindgen_export(g,Q*1,1),B}finally{t.__wbindgen_add_to_stack_pointer(16)}}function PA(A,g,Q,I,C){try{let e=t.__wbindgen_add_to_stack_pointer(-16),o=SA(A,t.__wbindgen_export2),a=AA;t.decompress_chunk_slice(e,o,a,g,Q,I,C);var B=s().getInt32(e+0,!0),E=s().getInt32(e+4,!0),i=s().getInt32(e+8,!0);if(i)throw uA(E);return R.__wrap(B)}finally{t.__wbindgen_add_to_stack_pointer(16)}}function TA(A,g){let Q=Error(RA(A,g));return VA(Q)}function vA(A,g){throw new Error(RA(A,g))}var pA=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(A=>t.__wbg_chunksliceresult_free(A,1));function VA(A){u===N.length&&N.push(N.length+1);let g=u;return u=N[g],N[g]=A,g}function OA(A){A<1028||(N[A]=u,u=A)}function JA(A,g){return A=A>>>0,$A().subarray(A/8,A/8+g)}function mA(A,g){return A=A>>>0,$().subarray(A/1,A/1+g)}var G=null;function s(){return(G===null||G.buffer.detached===!0||G.buffer.detached===void 0&&G.buffer!==t.memory.buffer)&&(G=new DataView(t.memory.buffer)),G}var M=null;function $A(){return(M===null||M.byteLength===0)&&(M=new Float64Array(t.memory.buffer)),M}function RA(A,g){return gQ(A>>>0,g)}var H=null;function $(){return(H===null||H.byteLength===0)&&(H=new Uint8Array(t.memory.buffer)),H}function AQ(A){return N[A]}var N=new Array(1024).fill(void 0);N.push(void 0,null,!0,!1);var u=N.length;function SA(A,g){let Q=g(A.length*1,1)>>>0;return $().set(A,Q/1),AA=A.length,Q}function uA(A){let g=AQ(A);return OA(A),g}var K=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});K.decode();var QQ=2146435072,V=0;function gQ(A,g){return V+=g,V>=QQ&&(K=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),K.decode(),V=g),K.decode($().subarray(A,A+g).slice())}var AA=0,t;function bA(A){t=A}var m=null,x=null;async function IQ(){return m||(x||(x=(async()=>{let g=await(await fetch(zA)).arrayBuffer(),{instance:Q}=await WebAssembly.instantiate(g,{"./bgzf_wasm_bg.js":O});return m=Q.exports,bA(m),m})().catch(A=>{throw x=null,A})),x)}async function UA(A){return m||await IQ(),GA(A)}var CQ=26;function LA(A){return A[0]===31&&A[1]===139}function BQ(A){return A.length>=CQ&&LA(A)&&A[2]===8&&A[3]===4&&A[10]===6&&A[12]===66&&A[13]===67}function MA(A){return A instanceof Error?A.message:`${A}`}async function YA(A){if(typeof DecompressionStream<"u"){let g=new Blob([A]).stream().pipeThrough(new DecompressionStream("gzip"));return new Uint8Array(await new Response(g).arrayBuffer())}else return cA(A,void 0)}function EQ(A){return MA(A).includes("invalid gzip header")?new Error("problem decompressing block: incorrect gzip header check",{cause:A}):A}async function QA(A){if(A.length===0)return new Uint8Array(0);if(!BQ(A)){if(LA(A))return YA(A);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}try{return await UA(A)}catch(g){if(MA(g).includes("invalid bgzf header"))return YA(A);throw EQ(g)}}var eQ=5e3,iQ=50*2**20,gA=class extends Error{constructor(Q){super(`this GAF is ${(Q/2**20).toFixed(0)} MB without an index; bgzip it and index it with tabix -p gaf`);this.name="UnindexedGafTooLargeError"}};function tQ(A,g){if(A.length<=g)return A;let Q=A.length/g;return Array.from({length:g},(I,C)=>A[Math.floor(C*Q)])}var HA=(A,g)=>A.path.some(Q=>g.has(Q.name)),q=class{constructor(g,Q){this.file=g;this.tabix=Q;this.whole=S({setup:async({signal:g})=>{let{size:Q}=await this.file.stat();if(Q>iQ)throw new gA(Q);let I=await this.file.readFile({signal:g}),C=new TextDecoder().decode(I[0]===31&&I[1]===139?await QA(I):I);return T(C)}})}async readIndexed(g,Q,I){let C=1/0,B=-1/0;for(let i of Q){let e=Number(i);Number.isInteger(e)&&(C=Math.min(C,e),B=Math.max(B,e))}let E=[];return C<=B&&await g.getLines("{node}",C,B+1,{signal:I,lineCallback:i=>{let e=P(i);e&&HA(e,Q)&&E.push(e)}}),E}async readsOver(g,{signal:Q}={}){let I=this.tabix?await this.readIndexed(this.tabix,g,Q):(await this.whole({signal:Q})).filter(C=>HA(C,g));return{records:tQ(I,eQ),total:I.length}}};var X=class extends Error{constructor(Q){super(Q===void 0?"no haplotype index is set, so the walks cannot be named; build one with gbz-haplotype-index (cargo install gbz-haplotype-index) and set it as haplotypeIndexLocation":`the haplotype index beside the graph database could not be checked (${Q}), so the walks cannot be named; if it is there, reload to try again, or set haplotypeIndexLocation`);this.name="NoHaplotypeIndexError"}},IA=class extends Error{constructor(Q,I){super(`the graph is cut on its reference, ${I}; a window on ${Q} has no reference coordinates to cut at. Open the graph from a ${I} view, and find this haplotype's lane there`);this.name="HaplotypeWindowError"}};function oQ(A,g){return`${D(A)}#${A.contig}@${g.start.node}.${g.start.offset}`}function aQ({alignment:A,assemblyName:g,refName:Q,lane:I}){let{refStart:C,refEnd:B,strand:E,cigar:i}=A;if(!(B<=C)){let{name:e,hapStart:o,hapEnd:a}=A,r=oQ(e,A),h={uniqueId:r,assemblyName:g,refName:Q,start:C,end:B,type:"match",strand:E==="-"?-1:1,CIGAR:i,syntenyId:r,mate:{refName:e.contig,start:o,end:a,assemblyName:I}};return new NA(h)}}function nQ({pair:A,lane:g,mateLane:Q}){return fA({target:{name:`${D(A.target)}#${A.target.contig}`,assemblyName:g,refName:A.target.contig,start:A.targetStart,end:A.targetEnd},query:{name:`${D(A.query)}#${A.query.contig}`,assemblyName:Q,refName:A.query.contig,start:A.queryStart,end:A.queryEnd},strand:A.strand,cigar:A.cigar,matches:A.matches,columns:A.columns})}var sQ=12e4;function rQ(A,g){let Q=new Map;for(let C of A)for(let{name:B,start:E,end:i}of C.walkSpans()){let e=D(B);if(g.has(e)){let o=`${e}#${B.contig}`,a=Q.get(o);a?a.push([E,i]):Q.set(o,[[E,i]])}}let I=0;for(let C of Q.values()){C.sort((B,E)=>B[0]-E[0]);for(let B=1;B<C.length;B++){let E=C[B][0]-C[B-1][1];E>0&&E<=sQ&&(I=Math.max(I,E))}}return I}function qA(A,g){return A instanceof iA&&(A.message=`Zoom in to about ${BA(A.fitsBp)} to see ${g}`),A}var xA=(A,g,Q)=>kA(qA(oA(A,g,Q)??A,"lanes"),Q),KA=A=>({...A,start:Math.floor(A.start),end:Math.ceil(A.end)}),CA=class extends yA{constructor(){super(...arguments);this.graph=S({label:"Opening pangenome database",setup:async()=>{let Q=this.getConf("gbzDbLocation"),I=this.getConf("haplotypeIndexLocation"),C=Y(I)?{location:I}:await lA(Q,this.pluginManager),B=C.location,E=await eA.open({source:J(Q,this.pluginManager),haplotypeIndex:B?J(B,this.pluginManager):void 0}),i=this.getConf("assemblyNames")[0];if(i===void 0)throw new Error("GbzBaseSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");let e=await W(E),o=tA({configured:this.getConf("referenceSample"),anchorPrefix:p(this,i),referenceSamples:e});return{db:E,anchor:i,referenceSample:o,referenceSamples:e,unreadableIndex:C.unreadable}}});this.gaf=S({label:"Opening reads",setup:async()=>{let Q=this.getConf("readsLocation"),I=this.getConf(["readsIndex","location"]);return Y(Q)?new q(J(Q,this.pluginManager),Y(I)?wA(this,["readsLocation"],["readsIndex"]):void 0):void 0}})}async referenceQuery(Q,I){let{db:C,referenceSample:B}=await this.graph(I);return z(C,B,Q)}async getHaplotypes(Q={}){let{db:I,referenceSamples:C}=await this.graph(Q),B=new Map;for(let E of await I.paths()){let i=D(E.name),e=B.get(i);e?e.contigs.includes(E.name.contig)||e.contigs.push(E.name.contig):B.set(i,{prefix:i,sample:E.name.sample,haplotype:E.name.haplotype,contigs:[E.name.contig],isReference:C.includes(E.name.sample)})}return[...B.values()]}async getHeader(Q={}){let{anchor:I,referenceSample:C}=await this.graph(Q),B=_(this),E=[];for(let i of await this.getHaplotypes(Q))i.sample!==C&&E.push({name:v(B,i.prefix),label:i.prefix,group:i.sample});return{hasCoarseTier:!1,anchorAssemblyName:I,lanes:E}}async getRefNames(Q={}){let{db:I,anchor:C,referenceSample:B}=await this.graph(Q),{assemblyName:E}=Q,i=E===C?void 0:p(this,E),e=(await I.paths()).filter(o=>E===C?o.isIndexed&&o.name.sample===B:U(D(o.name),i)).map(o=>o.name.contig);return[...new Set(e)]}keepPredicate(Q,I){let C=Q===void 0||Q.length===0?void 0:Q.map(B=>p(this,B));return C===void 0&&I===void 0?void 0:B=>j(B,C)&&(I===void 0||U(D(B),I))}async getSubgraph(Q,I={}){let{signal:C}=I,{db:B,anchor:E,referenceSample:i,unreadableIndex:e}=await this.graph({signal:C}),{assemblyName:o,refName:a,start:r,end:h}=KA(Q);if(o!==E)throw new IA(o,E);let y=await this.referenceQuery(a,{signal:C});if(!y)throw new Error(`${i} has no indexed path ${a} in this graph`);let d=this.keepPredicate(I.haplotypes);if(d!==void 0&&!B.hasHaplotypeIndex)throw new X(e);let c=await aA(B,y,r,h,{context:this.getConf("context"),snarls:I.snarls??this.getConf("subgraphSnarls"),limit:this.getConf("nodeLimit"),signal:I.signal,keep:d}).catch(k=>{throw qA(k,"the graph")});return typeof c=="string"?c:hA(c,{start:r,end:h},I.walkRows)}async getReads(Q,I={}){let C=await this.gaf(I);return C?C.readsOver(new Set(Q),I):{records:[],total:0}}async laneHaplotypes(Q,I){let C=p(this,Q);return(await this.getHaplotypes(I)).filter(B=>U(B.prefix,C))}async anchorFeatures(Q,I){let{db:C}=await this.graph(I),{assemblyName:B,refName:E,start:i,end:e}=Q,o=p(this,I.targetAssemblyName),a=_(this),r=this.keepPredicate(I.haplotypes,o),h=await this.referenceQuery(E,I),y=this.getConf("nodeLimit");return(h?await Z(`Reading graph ${E}:${i.toLocaleString()}-${e.toLocaleString()}`,I.statusCallback,()=>C.getAlignments({path:h,start:i,end:e,context:this.getConf("context"),haplotypes:"all",limit:y,signal:I.signal,keep:r}).catch(c=>{throw xA(c,y,e-i)})):[]).flatMap(c=>{let k=c.resolved?aQ({alignment:c,assemblyName:B,refName:E,lane:v(a,D(c.name))}):void 0;return k===void 0?[]:[k]})}async pairFeatures(Q,I,C){let{db:B}=await this.graph(C),{refName:E,start:i,end:e}=Q,a=(await Promise.all(I.map(async n=>({pair:n,featureSide:await this.laneHaplotypes(n.queryAssemblyName,C),mateSide:await this.laneHaplotypes(n.targetAssemblyName,C)})))).filter(({featureSide:n,mateSide:w})=>n.length>0&&w.length>0),r=new Set(a.flatMap(({featureSide:n,mateSide:w})=>[...n,...w].map(D))),h=await this.referenceQuery(E,C),y=this.getConf("nodeLimit"),d=this.getConf("context"),c=(n,w)=>B.getSubgraphs({path:n,start:i,end:e,context:w,snarls:this.getConf("subgraphSnarls"),haplotypes:"all",limit:y,signal:C.signal,keep:f=>r.has(D(f))}),k=async n=>{let w=await c(n,d).catch(l=>{throw xA(l,y,e-i)}),f=rQ(w,r),b=Math.ceil(f/2)+2e3;return f>0&&b>d?c(n,b).catch(l=>{if(l instanceof EA)return w;throw l}):w};return(h&&a.length>0?await Z(dA(I),C.statusCallback,()=>k(h)):[]).flatMap(n=>a.flatMap(({pair:w,featureSide:f,mateSide:b})=>f.flatMap(l=>b.flatMap(XA=>n.pairAlignments({target:l,query:XA,bases:!1}).map(ZA=>nQ({pair:ZA,lane:w.queryAssemblyName,mateLane:w.targetAssemblyName}))))))}getFeatures(Q,I={}){let C=KA(Q);return DA(async B=>{let{db:E,anchor:i,unreadableIndex:e}=await this.graph(I);if(!E.hasHaplotypeIndex)throw new X(e);if(C.assemblyName===i){let o=FA(I),a=o.length>0?await this.pairFeatures(C,o,I):await this.anchorFeatures(C,I);for(let r of a)B.next(r)}B.complete()},I.signal)}};export{X as NoHaplotypeIndexError,_A as PairTargetError,CA as default,rQ as widestWalkGap};
|
|
2
|
+
//# sourceMappingURL=GbzBaseSyntenyAdapter-EJIR3HZM.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as C}from"./chunk-
|
|
1
|
+
import{b as C}from"./chunk-UHV6XIDG.js";import"./chunk-UECOGSWM.js";import"./chunk-MCBYBZZJ.js";import"./chunk-OLZZDBQJ.js";import{p as d}from"./chunk-WUOXZAGN.js";import"./chunk-SL4JJJQJ.js";import"./chunk-W7IHIVSE.js";import"./chunk-T2VC3EEL.js";import"./chunk-CVHKXFVS.js";import"./chunk-BJHWGRMP.js";import"./chunk-OGXVDZPS.js";import"./chunk-YBLNN5FU.js";import"./chunk-CZI7IP5S.js";import"./chunk-IK3MQ4ZJ.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import"./chunk-VKZALU57.js";import"./chunk-3VGXCEMQ.js";import"./chunk-6VNDP3UB.js";import"./chunk-3WG3GF2A.js";import"./chunk-J5RMHLFJ.js";import{i as L}from"./chunk-NIEZKWQV.js";import{A as l,F as G,H as p,e as s,j as v,o as n,x as y}from"./chunk-5Z4VIKXZ.js";import{a as h,b as e,c as r,d as i}from"./chunk-JMBDTNUR.js";var N=d()({paper:{padding:16,margin:8,maxWidth:560,marginInline:"auto",display:"flex",flexDirection:"column",gap:12},row:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8}}),S=i(function({model:a}){let{classes:t}=N();return!a.error&&!a.loadCanceled?r(l,{className:t.paper,"data-testid":"graph-genome-loading",children:[r("div",{className:t.row,children:[e(v,{variant:"h6",message:a.statusMessage||void 0}),a.canCancelLoad?e(n,{size:"small","data-testid":"graph-genome-cancel",onClick:()=>{a.cancelLoad()},children:"Cancel"}):null]}),e(y,{variant:"indeterminate"})]}):a.error?e(l,{className:t.paper,children:e(s,{error:a.error,onReset:()=>{a.retryLoad()}})}):e(l,{className:t.paper,"data-testid":"graph-genome-load-canceled",children:r("div",{className:t.row,children:[e(p,{variant:"h6",children:"Loading canceled"}),e(n,{variant:"contained",size:"small","data-testid":"graph-genome-retry",onClick:()=>{a.retryLoad()},children:"Retry"})]})})}),f=S;var T=`H VN:Z:1.0
|
|
2
2
|
S 1 ACGT
|
|
3
3
|
S 2 GGCC
|
|
4
4
|
S 3 TTAA
|
|
@@ -7,4 +7,4 @@ L 1 + 2 + 0M
|
|
|
7
7
|
L 1 + 3 + 0M
|
|
8
8
|
L 2 + 4 + 0M
|
|
9
9
|
L 3 + 4 + 0M`,E=d()({column:{display:"flex",flexDirection:"column",gap:8},rowEnd:{display:"flex",gap:8,alignItems:"flex-end"},rowCenter:{display:"flex",gap:8,alignItems:"center"},flex1:{flex:1},paper:{padding:16,margin:8,maxWidth:560,marginInline:"auto"},header:{marginBottom:12},footer:{marginTop:12,display:"flex",justifyContent:"flex-end"}}),F=i(function({model:a}){let{classes:t}=E(),[m,w]=L("");function u(){let o=m.trim();o&&a.openGfaLocation({uri:o,locationType:"UriLocation"})}function M(o){let c=o.target.files?.[0];o.target.value="",c&&a.loadGFAFile(c,c.name)}return r(l,{className:t.paper,children:[e("div",{className:t.header,children:e(p,{variant:"h6",children:"Load a GFA graph"})}),r("div",{className:t.column,children:[r("div",{className:t.rowCenter,children:[r(n,{variant:"outlined",component:"label",size:"small",children:["Choose file",e("input",{type:"file",accept:".gfa,.gfa1,.gfa2,.gz",hidden:!0,onChange:o=>{M(o)}})]}),e(p,{variant:"caption",color:"text.secondary",children:"Whole-file GFA; best for small/medium graphs."})]}),r("div",{className:t.rowEnd,children:[e(G,{size:"small",label:"URL",placeholder:"https://example.com/graph.gfa",value:m,onChange:o=>{w(o.target.value)},onKeyDown:o=>{o.key==="Enter"&&u()},className:t.flex1}),e(n,{variant:"contained",onClick:()=>{u()},disabled:!m.trim(),children:"Open"})]})]}),e("div",{className:t.footer,children:e(n,{size:"small",onClick:()=>{a.loadGFA(T,"Example graph")},children:"Load 4-node example"})}),a.error?e(s,{error:a.error}):null]})}),x=F;var B=i(function({model:a}){return a.hasGraph?e(C,{model:a}):a.canRetryLoad?e(f,{model:a}):r(h,{children:[a.isLoading?e(f,{model:a}):null,e("div",{hidden:a.isLoading,children:e(x,{model:a})})]})}),q=B;export{q as default};
|
|
10
|
-
//# sourceMappingURL=GraphGenomeView-
|
|
10
|
+
//# sourceMappingURL=GraphGenomeView-2AKRM74B.js.map
|
package/dist/chunks/{GraphTrackSettingsDialog-IQZGEFCA.js → GraphTrackSettingsDialog-7XRZQW6T.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as G,b as L}from"./chunk-
|
|
1
|
+
import{a as G,b as L}from"./chunk-UECOGSWM.js";import{b as v,c as x,p as f}from"./chunk-WUOXZAGN.js";import"./chunk-T2VC3EEL.js";import"./chunk-CVHKXFVS.js";import"./chunk-IK3MQ4ZJ.js";import"./chunk-ROZPEXN4.js";import"./chunk-VKZALU57.js";import"./chunk-3VGXCEMQ.js";import"./chunk-6VNDP3UB.js";import{h as g,i as d}from"./chunk-NIEZKWQV.js";import{F as m,H as h,n as H}from"./chunk-5Z4VIKXZ.js";import{b as p,c as l,d as u}from"./chunk-JMBDTNUR.js";var k=f()({section:{marginBottom:24}}),w=[{value:"0",label:"None"},{value:"1",label:"1 hop"},{value:"2",label:"2 hops"}],F=u(function({model:t}){let{classes:n}=k(),e=t.sourceAdapter;return e?.type==="RgfaTabixAdapter"&&!v(e)?l("div",{className:n.section,children:[p(G,{label:"Graph context",sx:{minWidth:200},value:String(t.subgraphContext),options:w,testId:"graph-context-select",onChange:a=>{t.setSubgraphContext(Number(a)),t.recut()}}),p(h,{variant:"caption",component:"div",color:"text.secondary",children:"How far the cut follows links out of the region. At none, a detour that leaves the window draws as two stubs. No effect on gfa-to-tabix's default anchored index."})]}):null}),M=F;var I=f()({section:{marginBottom:24}});function A(o){return o.split(/[\s,]+/).filter(t=>t!=="")}var N=(o,t)=>o.join(`
|
|
2
2
|
`)===t.join(`
|
|
3
3
|
`);function P(o,t){let n=o.cutHaplotypes??[],[e,a]=d(n);return N(n,e)||(a(n),t()),r=>{N(r,n)||(a(r),o.setSubgraphHaplotypes(r),o.recut())}}var D=u(function({model:t}){let[n,e]=d(t.cutHaplotypes?.join(", ")??""),a=P(t,()=>{e(t.cutHaplotypes?.join(", ")??"")}),r=()=>{a(A(n))};return p(m,{fullWidth:!0,label:"Haplotypes",placeholder:"every haplotype",value:n,slotProps:{htmlInput:{"data-testid":"graph-haplotypes-field"}},onChange:i=>{e(i.target.value)},onBlur:()=>{r()},onKeyDown:i=>{i.key==="Enter"&&r()}})}),B=u(function({model:t,names:n}){let[e,a]=d(t.cutHaplotypes??[]),r=g(e),i=g(""),[S,b]=d(!1),C=P(t,()=>{r.current=t.cutHaplotypes??[],a(r.current)});return p(H,{multiple:!0,freeSolo:!0,disableCloseOnSelect:!0,options:n,value:e,open:S,onOpen:()=>{b(!0)},onInputChange:(c,s)=>{i.current=s},onClose:(c,s)=>{b(!1);let y=i.current.trim();s==="blur"&&y&&!r.current.includes(y)&&(r.current=[...r.current,y],a(r.current)),C(r.current)},onChange:(c,s)=>{r.current=s,a(s),S||C(s)},renderInput:c=>p(m,{...c,label:"Haplotypes",placeholder:e.length===0?"every haplotype":void 0,slotProps:{...c.slotProps,htmlInput:{...c.slotProps.htmlInput,"data-testid":"graph-haplotypes-field"}}})})}),O=u(function({model:t}){let{classes:n}=I(),e=t.haplotypeNames,a=t.sourceAdapter;return a&&x(a)?l("div",{className:n.section,children:[e?p(B,{model:t,names:e}):p(D,{model:t}),l(h,{variant:"caption",component:"div",color:"text.secondary",children:[e?`Which of the graph's ${e.length.toLocaleString()} haplotypes to cut, or a PanSN prefix (HG002 for both).`:"Which haplotypes to cut, as lane assembly names or PanSN prefixes (HG002#1, or HG002 for both) separated by commas."," ","Empty is every haplotype."]})]}):null}),T=O;function R({model:o,onClose:t}){return l(L,{model:o,onClose:t,children:[p(M,{model:o}),p(T,{model:o})]})}export{R as default};
|
|
4
|
-
//# sourceMappingURL=GraphTrackSettingsDialog-
|
|
4
|
+
//# sourceMappingURL=GraphTrackSettingsDialog-7XRZQW6T.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a,b as i}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=LinearGraphDisplay-
|
|
1
|
+
import{a,b as i}from"./chunk-UHV6XIDG.js";import"./chunk-UECOGSWM.js";import"./chunk-MCBYBZZJ.js";import"./chunk-OLZZDBQJ.js";import"./chunk-WUOXZAGN.js";import"./chunk-SL4JJJQJ.js";import"./chunk-W7IHIVSE.js";import"./chunk-T2VC3EEL.js";import"./chunk-CVHKXFVS.js";import"./chunk-BJHWGRMP.js";import"./chunk-OGXVDZPS.js";import"./chunk-YBLNN5FU.js";import"./chunk-CZI7IP5S.js";import"./chunk-IK3MQ4ZJ.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import"./chunk-VKZALU57.js";import"./chunk-3VGXCEMQ.js";import"./chunk-6VNDP3UB.js";import"./chunk-3WG3GF2A.js";import"./chunk-J5RMHLFJ.js";import"./chunk-NIEZKWQV.js";import"./chunk-5Z4VIKXZ.js";import{b as o,d as t}from"./chunk-JMBDTNUR.js";var e=JBrowseExports["@jbrowse/display-kit/DisplayChrome"];var s=e&&e.__esModule?e.default:e;var p=t(function({model:r}){return o(s,{model:r,factory:a,testid:"linear-graph-display","data-layout":r.chosenLayoutMode,"data-cut-tier":r.cutTier,"data-recuts":r.recuts,"data-node-count":r.hasGraph?r.nodeCount:void 0,"data-loading":r.isLoading?"":void 0,style:{width:r.paneWidth,height:r.height,overflow:"hidden"},children:n=>o(i,{model:r,handle:n})})}),c=p;export{c as default};
|
|
2
|
+
//# sourceMappingURL=LinearGraphDisplay-WWQ73BO5.js.map
|
package/dist/chunks/{MinigraphBubbleAdapter-EVYS6XUZ.js → MinigraphBubbleAdapter-4OOBJ44C.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as f,d as c,f as d}from"./chunk-BJHWGRMP.js";import{a as g}from"./chunk-KOB7YIMR.js";import{
|
|
2
|
-
//# sourceMappingURL=MinigraphBubbleAdapter-
|
|
1
|
+
import{a as f,d as c,f as d}from"./chunk-BJHWGRMP.js";import{a as g}from"./chunk-KOB7YIMR.js";import{E as p,F as u,b,z as m}from"./chunk-CZXJXNZN.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import"./chunk-VKZALU57.js";import"./chunk-OGQ6OQDN.js";import"./chunk-3WG3GF2A.js";import{a as i,o as l}from"./chunk-J5RMHLFJ.js";var a=class extends b{constructor(){super(...arguments);this.bubbles=p(this,["bubblesLocation"],["index"]);this.refNames=new u(this.bubbles,this)}static{this.capabilities=["getFeatures","getRefNames"]}async getRefNames(t={}){return this.refNames.assemblyRefNames(t)}async getRegionByteSize(t,s={}){return this.refNames.regionBytes(t,s)}async hasDataForRefName(){return!0}getFeatures(t,s={}){let{signal:n,statusCallback:h}=s;return g(async r=>{let o=await this.refNames.resolveMapped(t,s);o!==void 0&&await l("Downloading bubbles",h,()=>m(this.bubbles,o,t.start,t.end,{signal:n,lineCallback:(N,y)=>{let e=f(N);r.next(new i({uniqueId:`bubble-${y}`,refName:t.refName,start:e.start,end:e.end,name:c(e),description:d(e),type:"bubble",score:e.segmentCount,segmentCount:e.segmentCount,pathCount:e.pathCount,inversion:e.inversion,shortestAlleleLength:e.shortestAlleleLength,longestAlleleLength:e.longestAlleleLength,segments:e.segments,shortestAllele:e.shortestAllele,longestAllele:e.longestAllele}))}})),r.complete()},n)}};export{a as default};
|
|
2
|
+
//# sourceMappingURL=MinigraphBubbleAdapter-4OOBJ44C.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as F}from"./chunk-NOXHIOIM.js";import"./chunk-HAAABGE7.js";import{a as N}from"./chunk-KOB7YIMR.js";import"./chunk-YBLNN5FU.js";import"./chunk-CZI7IP5S.js";import"./chunk-IK3MQ4ZJ.js";import{E as p,F as d,b as h,u,v as w,w as k,x,y as b,z as g}from"./chunk-CZXJXNZN.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import"./chunk-VKZALU57.js";import{e as f}from"./chunk-6VNDP3UB.js";import"./chunk-OGQ6OQDN.js";import"./chunk-3WG3GF2A.js";import{a as l,o as m}from"./chunk-J5RMHLFJ.js";var c=class extends h{constructor(){super(...arguments);this.fine=this.openIndex([])}static{this.capabilities=["getFeatures","getRefNames"]}openIndex(e){let t=this.getConf("walksLocation"),n=e.length===0&&f(t)?new F(p(this,["walksLocation"],["walksIndex"]),this):void 0,r=e.length===0?this.getConf("graphLocation"):this.getConf(["coarse","graphLocation"]);if(f(r)){let s=p(this,[...e,"graphLocation"],[...e,"graphIndex"]);return{graph:s,walks:n,refNames:new d(n?.file??s,this)}}let a=p(this,[...e,"segmentsLocation"],[...e,"segmentsIndex"]),i=p(this,[...e,"linksLocation"],[...e,"linksIndex"]);return{segments:a,links:i,walks:n,refNames:new d(n?.file??a,this)}}async getHaplotypeNames(e={}){return this.fine.walks?.haplotypeNames(e)}index(e="fine"){return e==="fine"?this.fine:(this.coarse??=this.openIndex(["coarse"]),this.coarse)}async getRefNames(e={}){return this.fine.refNames.assemblyRefNames(e)}async getRegionByteSize(e,t={}){let{walks:n,refNames:r}=this.fine;return r.regionBytes(e,t,n&&((a,{start:i,end:s})=>n.reader.queryStart(i,{...t,refName:a,end:s})))}async hasDataForRefName(){return!0}getFeatures(e,t={}){return N(async n=>{let r=await this.fine.refNames.resolveMapped(e,t);if(r!==void 0){let{walks:a}=this.fine,i=s=>{n.next(s)};await(a?this.walkFeatures(a,r,e,t,i):this.segmentFeatures(r,e,t,i))}n.complete()},t.signal)}async walkFeatures(e,t,n,r,a){let i=await m("Downloading walks",r.statusCallback,()=>e.referenceNodes(t,n,r));for(let s of i){let o=String(s.id);a(new l({uniqueId:o,refName:n.refName,start:s.start,end:s.end,name:o,type:"segment",rank:0,stableName:s.refName}))}}async segmentRows(e,t,n,r){let a=this.fine;if("graph"in a){let i=k(await a.graph.getHeaderLines({signal:n.signal}));return g(a.graph,e,t.start,t.end,{signal:n.signal,lineCallback:s=>{let o=x(s,i);o?.kind==="N"&&r(o.segment,i.anchored)}})}return g(a.segments,e,t.start,t.end,{signal:n.signal,lineCallback:i=>{let{segment:s,anchored:o}=u(i);r(s,o)}})}async segmentFeatures(e,t,n,r){await m("Downloading segments",n.statusCallback,()=>this.segmentRows(e,t,n,(a,i)=>{if(i&&a.refName!==e)return;let s=w(a);r(new l({uniqueId:a.id,refName:t.refName,start:a.start,end:a.end,name:a.id,type:"segment",rank:a.rank,stableName:a.refName,...s&&{samples:s,sampleCount:s.length}}))}))}async getSubgraph(e,t={}){let{hops:n,signal:r,tier:a}=t,i=this.index(a),s=await i.refNames.resolveForCut(e,{signal:r});return i.walks?i.walks.subgraph(s,e,t):b(i,{refName:s,start:e.start,end:e.end},{hops:n,signal:r})}};export{c as default};
|
|
2
|
+
//# sourceMappingURL=RgfaTabixAdapter-CEGFN2QY.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/RgfaTabixAdapter/RgfaTabixAdapter.ts"],
|
|
4
|
+
"sourcesContent": ["import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport { SimpleFeature, updateStatus } from '@jbrowse/core/util'\nimport { ObservableCreate } from '@jbrowse/core/util/rxjs'\nimport {\n parseGraphHeader,\n parseGraphRow,\n parseSegmentRow,\n rgfaCut,\n segmentSamples,\n} from '@jbrowse/graph-walks'\n\nimport { locationIsSet } from '../locationName.ts'\nimport { PanSNRefNames, openTabixSlot } from '../panSNTabix.ts'\nimport { getLines } from '../tabixRange.ts'\nimport { WalkIndex } from './walkReader.ts'\n\nimport type { RgfaTabixAdapterConfig } from './configSchema.ts'\nimport type { SubgraphAdapterOptions, SubgraphTier } from '../GetSubgraph.ts'\nimport type { WalkCut } from './walkCut.ts'\nimport type { TabixIndexedFile } from '@gmod/tabix'\nimport type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter'\nimport type { Feature } from '@jbrowse/core/util'\nimport type { FileLocation, Region } from '@jbrowse/core/util/types'\nimport type { RgfaSegment } from '@jbrowse/graph-walks'\n\n// gfa-to-tabix's format 1 pair, or format 2's one file\ntype GraphIndex = (\n | { segments: TabixIndexedFile; links: TabixIndexedFile }\n | { graph: TabixIndexedFile }\n) & {\n walks?: WalkIndex\n refNames: PanSNRefNames\n}\n\nexport default class RgfaTabixAdapter extends BaseFeatureDataAdapter<RgfaTabixAdapterConfig> {\n public static capabilities = ['getFeatures', 'getRefNames']\n\n private readonly fine = this.openIndex([])\n private coarse: GraphIndex | undefined\n\n // refNames off the SEGMENT index: it is the one that names every stable\n // sequence the graph is anchored to, where the link index only names those a\n // link touches. Format 2's one file names them all. A walk-indexed graph's\n // walk file names the same sequences, and it has no segment file.\n private openIndex(under: string[]): GraphIndex {\n const walksLocation: FileLocation = this.getConf('walksLocation')\n const walks =\n under.length === 0 && locationIsSet(walksLocation)\n ? new WalkIndex(\n openTabixSlot(this, ['walksLocation'], ['walksIndex']),\n this,\n )\n : undefined\n const graphLocation: FileLocation =\n under.length === 0\n ? this.getConf('graphLocation')\n : this.getConf(['coarse', 'graphLocation'])\n if (locationIsSet(graphLocation)) {\n const graph = openTabixSlot(\n this,\n [...under, 'graphLocation'],\n [...under, 'graphIndex'],\n )\n return {\n graph,\n walks,\n refNames: new PanSNRefNames(walks?.file ?? graph, this),\n }\n }\n const segments = openTabixSlot(\n this,\n [...under, 'segmentsLocation'],\n [...under, 'segmentsIndex'],\n )\n const links = openTabixSlot(\n this,\n [...under, 'linksLocation'],\n [...under, 'linksIndex'],\n )\n return {\n segments,\n links,\n walks,\n refNames: new PanSNRefNames(walks?.file ?? segments, this),\n }\n }\n\n /**\n * The haplotypes a walk-indexed graph's header names, `sample#haplotype`\n * in byte order, or undefined when it names none\n */\n async getHaplotypeNames(opts: BaseOptions = {}) {\n return this.fine.walks?.haplotypeNames(opts)\n }\n\n private index(tier: SubgraphTier = 'fine') {\n if (tier === 'fine') {\n return this.fine\n }\n this.coarse ??= this.openIndex(['coarse'])\n return this.coarse\n }\n\n async getRefNames(opts: BaseOptions = {}) {\n return this.fine.refNames.assemblyRefNames(opts)\n }\n\n // getFeatures reads a walk file from the chunk before the window\n async getRegionByteSize(regions: Region[], opts: BaseOptions = {}) {\n const { walks, refNames } = this.fine\n return refNames.regionBytes(\n regions,\n opts,\n walks &&\n ((refName, { start, end }) =>\n walks.reader.queryStart(start, { ...opts, refName, end })),\n )\n }\n\n public async hasDataForRefName() {\n return true\n }\n\n getFeatures(query: Region, opts: BaseOptions = {}) {\n return ObservableCreate<Feature>(async observer => {\n const tabixRefName = await this.fine.refNames.resolveMapped(query, opts)\n if (tabixRefName !== undefined) {\n const { walks } = this.fine\n const emit = (feature: Feature) => {\n observer.next(feature)\n }\n await (walks\n ? this.walkFeatures(walks, tabixRefName, query, opts, emit)\n : this.segmentFeatures(tabixRefName, query, opts, emit))\n }\n observer.complete()\n }, opts.signal)\n }\n\n // A walk-indexed graph's reference nodes are its ref rows' steps\n private async walkFeatures(\n walks: WalkIndex,\n tabixRefName: string,\n query: Region,\n opts: BaseOptions,\n emit: (feature: Feature) => void,\n ) {\n const nodes = await updateStatus(\n 'Downloading walks',\n opts.statusCallback,\n () => walks.referenceNodes(tabixRefName, query, opts),\n )\n for (const node of nodes) {\n const id = String(node.id)\n emit(\n new SimpleFeature({\n uniqueId: id,\n refName: query.refName,\n start: node.start,\n end: node.end,\n name: id,\n type: 'segment',\n rank: 0,\n stableName: node.refName,\n }),\n )\n }\n }\n\n // Each segment row under the window, from the segment file or from format\n // 2's node rows, with whether the index is anchored\n private async segmentRows(\n tabixRefName: string,\n query: Region,\n opts: BaseOptions,\n each: (segment: RgfaSegment, anchored: boolean) => void,\n ) {\n const index = this.fine\n if ('graph' in index) {\n const header = parseGraphHeader(\n await index.graph.getHeaderLines({ signal: opts.signal }),\n )\n return getLines(index.graph, tabixRefName, query.start, query.end, {\n signal: opts.signal,\n lineCallback: line => {\n const row = parseGraphRow(line, header)\n if (row?.kind === 'N') {\n each(row.segment, header.anchored)\n }\n },\n })\n }\n return getLines(index.segments, tabixRefName, query.start, query.end, {\n signal: opts.signal,\n lineCallback: line => {\n const { segment, anchored } = parseSegmentRow(line)\n each(segment, anchored)\n },\n })\n }\n\n private async segmentFeatures(\n tabixRefName: string,\n query: Region,\n opts: BaseOptions,\n emit: (feature: Feature) => void,\n ) {\n await updateStatus('Downloading segments', opts.statusCallback, () =>\n this.segmentRows(tabixRefName, query, opts, (segment, anchored) => {\n // An anchored index also returns the alleles under the region,\n // which lie on other stable sequences and have no place on this one\n if (anchored && segment.refName !== tabixRefName) {\n return\n }\n // `samples` lists the haplotypes whose paths visit the segment and\n // `sampleCount` counts them. A lane's color reads the count, and\n // a count in jexl would otherwise rely on `.length` resolving\n // through a member access on an array.\n const samples = segmentSamples(segment)\n emit(\n new SimpleFeature({\n uniqueId: segment.id,\n refName: query.refName,\n start: segment.start,\n end: segment.end,\n name: segment.id,\n type: 'segment',\n rank: segment.rank,\n stableName: segment.refName,\n ...(samples && { samples, sampleCount: samples.length }),\n }),\n )\n }),\n )\n }\n\n // The graph around a region for GraphGenomeView: GFA text (rgfaCut), or a\n // walk-indexed graph's tables (WalkIndex.subgraph). `tier: 'coarse'` reads\n // the `coarse` pair instead, the same way.\n async getSubgraph(\n region: Region,\n opts: SubgraphAdapterOptions = {},\n ): Promise<string | WalkCut> {\n const { hops, signal, tier } = opts\n const index = this.index(tier)\n const tabixRefName = await index.refNames.resolveForCut(region, { signal })\n if (index.walks) {\n return index.walks.subgraph(tabixRefName, region, opts)\n }\n return rgfaCut(\n index,\n { refName: tabixRefName, start: region.start, end: region.end },\n { hops, signal },\n )\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["RgfaTabixAdapter", "BaseFeatureDataAdapter", "under", "walksLocation", "walks", "locationIsSet", "WalkIndex", "openTabixSlot", "graphLocation", "graph", "PanSNRefNames", "segments", "links", "opts", "tier", "regions", "refNames", "refName", "start", "end", "query", "ObservableCreate", "observer", "tabixRefName", "emit", "feature", "nodes", "updateStatus", "node", "id", "SimpleFeature", "each", "index", "header", "parseGraphHeader", "getLines", "line", "row", "parseGraphRow", "segment", "anchored", "parseSegmentRow", "samples", "segmentSamples", "region", "hops", "signal", "rgfaCut"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as x,b,c as N,d as R,f as c,g as C,h as P,i as T}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=WalkFormsAdapter-
|
|
1
|
+
import{a as x,b,c as N,d as R,f as c,g as C,h as P,i as T}from"./chunk-PTOKTIQG.js";import{a as k}from"./chunk-KOB7YIMR.js";import{E as $,b as l,d as g,e as w,f as h,g as p,k as y,o as B,s as F,t as S}from"./chunk-CZXJXNZN.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import"./chunk-VKZALU57.js";import"./chunk-OGQ6OQDN.js";import"./chunk-3WG3GF2A.js";import{a as m,o as u}from"./chunk-J5RMHLFJ.js";var v=r=>`${(r/1e6).toFixed(1)} MB`,O=r=>`${(r/1e6).toFixed(1)} M`;function E(r,f){if(!(r instanceof g))return r;let t=N(f);if(r instanceof F)return new Error(`The pinned window ${t} is too large to read every walk in full for structural forms: its walks take ${O(r.steps)} steps, over the ${O(r.limit)} step budget, and about ${p(r.fitsBp)} of it fits. Pin a narrower window`);let e=`walkByteBudget, ${v(r.limit)}`;return new Error(`The pinned window ${t} is too large to cut for structural forms: ${r.zoomHelps?`about ${p(r.fitsBp)} of it fits in ${e}. Pin a narrower window or raise walkByteBudget`:`its cut fetches ${v(r.bytes??0)}, over ${e}. Raise walkByteBudget`}`)}var L=8,i=new Map;function A(r,f){let t=i.get(r),e=t??f();if(i.delete(r),i.set(r,e),!t){e.catch(()=>{i.get(r)===e&&i.delete(r)});for(let s of i.keys()){if(i.size<=L)break;i.delete(s)}}return e}var d=class extends l{constructor(){super(...arguments);this.reader=new y($(this,["walksLocation"],["walksIndex"]))}static{this.capabilities=["getFeatures","getRefNames"]}async referenceSample(t){let{references:e}=await this.reader.header(t);return e[0]??""}async getRefNames(t={}){let e=await this.reader.referenceSequences(t),s=await this.referenceSample(t),a=e.filter(o=>h(o,s)).map(o=>w(o));return a.length>0?[...new Set(a)]:e}pinned(){let t=x(this.getConf("pinned"));if(!t)throw new Error("WalkFormsAdapter needs `pinned`, the window its forms come from: { refName, start, end }");return t}forms(t){if(!this.formsRead){let e=this.pinned(),s=`${JSON.stringify(this.getConf("walksLocation"))} ${e.refName}:${e.start}-${e.end}`,a=this.getConf("walkByteBudget"),o=A(`${s} ${a}`,()=>u("Cutting walks",t.statusCallback,()=>S(this.reader,e,{byteBudget:a,partial:!1}).catch(n=>{throw E(n,e)}))).then(n=>B(n,{window:e,floorBp:b(this.getConf("floorBp")),exclude:this.getConf("exclude")}));o.catch(()=>{this.formsRead===o&&(this.formsRead=void 0)}),this.formsRead=o}return this.formsRead}maxForms(){return this.getConf("maxForms")}async getSourcesAndWarnings(t={}){let e=await this.forms(t),s=R(this.pinned());return{sources:c(e,this.maxForms()),warnings:C(e,this.maxForms()).map(a=>s+a)}}async getSources(t,e={}){return c(await this.forms(e),this.maxForms())}async onPinnedSequence(t,e){let s=await this.referenceSample(e),[a,o]=await Promise.all([this.reader.sequenceFor(s,t,e),this.reader.sequenceFor(s,this.pinned().refName,e)]);return a!==void 0&&a===o}getFeatures(t,e={}){return k(async s=>{let a=await this.forms(e),o=await this.onPinnedSequence(t.refName,e)?T(a,this.maxForms()).filter(n=>n.start<t.end&&n.end>t.start):[];for(let n of o)s.next(new m({uniqueId:`forms-${a.floorBp}-${n.id}`,refName:t.refName,start:n.start,end:n.end,name:n.name,description:n.description,type:n.type,svType:n.svType,consequence:n.consequence,REF:"N",ALT:[n.alt],INFO:{SVTYPE:[n.svType],SVLEN:[n.mark.delta]},mark:n.mark,genotypes:n.genotypes}));if(o.length===0){let n=Math.floor(t.start);s.next(new m({uniqueId:`forms-reference-${t.refName}-${n}`,refName:t.refName,start:n,end:n+1,REF:"N",ALT:["."],genotypes:P(a,this.maxForms())}))}s.complete()},e.signal)}};export{d as default};
|
|
2
|
+
//# sourceMappingURL=WalkFormsAdapter-LTAKACZD.js.map
|
package/dist/chunks/{WalkTabixSyntenyAdapter-NEZMRCRO.js → WalkTabixSyntenyAdapter-B6V3YNW7.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as K}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=WalkTabixSyntenyAdapter-
|
|
1
|
+
import{a as K}from"./chunk-NOXHIOIM.js";import{b as $,d as U,e as X,f as O,g as z,h as G}from"./chunk-QWG7NASD.js";import"./chunk-HAAABGE7.js";import{a as q}from"./chunk-KOB7YIMR.js";import{p as M,q as _,r as T}from"./chunk-M2D7NUOY.js";import"./chunk-YBLNN5FU.js";import"./chunk-CZI7IP5S.js";import"./chunk-IK3MQ4ZJ.js";import{E as D,F as H,i as j}from"./chunk-CZXJXNZN.js";import"./chunk-YBLNN5FU.js";import"./chunk-ROZPEXN4.js";import{a as S,c as I,d as W,g as F,h as w,i as x}from"./chunk-VKZALU57.js";import"./chunk-OTBDKJEA.js";import"./chunk-3VGXCEMQ.js";import"./chunk-OGQ6OQDN.js";import"./chunk-3WG3GF2A.js";import{o as R}from"./chunk-J5RMHLFJ.js";var se=50;function re(r){let i=[];for(let e=0;e<r.length;e++){let[t,a]=r[e],[s,n]=r[e+1]??[];a===n&&a<=se&&(t==="I"&&s==="D"||t==="D"&&s==="I")?(i.push(["X",a]),e++):i.push([t,a])}return i}function E(r){return Array.from(r.ids,(i,e)=>2*i+r.rev[e])}function A(r,i){let e=r.get(i);return e===void 0?0:e.end-e.start}function V(r){let i=new Map,e=s=>{let n=A(r,s),o=i.get(n);return o===void 0&&(o="N".repeat(n),i.set(n,o)),o},t=new Map,a=s=>{let n=t.get(s);return n===void 0&&(n=E(s),t.set(s,n)),n};return(s,n)=>_({query:a(s),target:a(n),sequenceOf:e,bases:!1})}var B=100;function v(r,i,e){let t=r.at(-1);e>0&&(t?.[0]===i?t[1]+=e:r.push([i,e]))}function Z(r){let i=t=>A(r,t>>1),e=t=>{let a=new Float64Array(t.length+1);return t.forEach((s,n)=>{a[n+1]=a[n]+i(s)}),a};return(t,a)=>{let s=E(a),n=E(t),[o,l]=M(n,s,i),[u,f]=M(n.map(g=>g^1).reverse(),s,i),c=f>l,p=c?u:o,N=Math.max(l,f);if(N<B)return[];let h=e(s),d=e(n),y=g=>c?n.length-1-p[g][0]:p[g][0],m=[];p.forEach(([,g],k)=>{if(k>0){let[ee,te]=[y(k-1),y(k)].sort((ae,ne)=>ae-ne);v(m,"I",d[te]-d[ee+1]),v(m,"D",h[g]-h[p[k-1][1]+1])}v(m,"=",i(s[g]))});let[b,P]=[y(0),y(p.length-1)].sort((g,k)=>g-k);return[{queryStart:d[b],queryEnd:d[P+1],targetStart:h[p[0][1]],targetEnd:h[p.at(-1)[1]+1],strand:c?"-":"+",edits:m,sharedBases:N}]}}function oe(r){let i=new Map,e=new Set;r.ids.forEach((t,a)=>{i.has(t)?e.add(t):i.set(t,r.rev[a])});for(let t of e)i.delete(t);return i}function J(r){let i=new Map,e=t=>{let a=i.get(t);return a===void 0&&(a=oe(t),i.set(t,a)),a};return(t,a)=>{let s=e(a),n=0,o=0;for(let[l,u]of e(t)){let f=s.get(l);f===u?n+=A(r,l):f!==void 0&&(o+=A(r,l))}return{same:n,opposite:o}}}function Q(r){let i=Z(r),e=V(r),t=J(r);return(a,s)=>{let{same:n,opposite:o}=t(a,s);return n>=B&&o>=B?e(a,s):i(a,s)}}var ie=1e4;function Y(r){let i=Z(r),e=V(r),t=J(r);return(a,s)=>{let n=i(a,s),o=n[0]?.strand,{same:l,opposite:u}=t(a,s);return o===void 0||Math.min(l,u)<ie?n:[...n,...e(a,s).filter(f=>f.strand!==o)]}}function C({chain:r,target:i,query:e,assemblyName:t,refName:a,mateAssemblyName:s}){let n=re(r.edits);return G({target:{name:i.name,assemblyName:t,refName:a,start:i.hapStart+r.targetStart,end:i.hapStart+r.targetEnd},query:{name:e.name,assemblyName:s,refName:W(e.name),start:e.hapStart+r.queryStart,end:e.hapStart+r.queryEnd},strand:r.strand,cigar:T(n),matches:n.reduce((o,[l,u])=>o+(l==="="?u:0),0),columns:n.reduce((o,[,l])=>o+l,0)})}var me=r=>I(r.name)??r.name,L=class extends ${constructor(){super(...arguments);this.walks=new K(D(this,["walksLocation"],["walksIndex"]),this);this.refNames=new H(this.walks.file,this)}get anchor(){let e=this.getConf("assemblyNames")[0];if(e===void 0)throw new Error("WalkTabixSyntenyAdapter needs assemblyNames: its first entry is the assembly the reference sample is loaded as");return e}async getHaplotypeNames(e={}){return this.walks.haplotypeNames(e)}async getHeader(e={}){let{haplotypes:t}=await this.walks.reader.header(e),{anchor:a}=this,s=w(this,a),n=x(this);return{hasCoarseTier:!1,anchorAssemblyName:a,lanes:t.filter(o=>o!==s&&S(o)!==s).map(o=>({name:O(n,o),label:o,group:S(o)}))}}async getRefNames(e={}){let{assemblyName:t}=e;return t===void 0||t===this.anchor?this.refNames.assemblyRefNames({...e,assemblyName:this.anchor}):[]}async getSubgraph(e,t={}){let a=await this.refNames.resolveForCut(e,{signal:t.signal});return this.walks.subgraph(a,e,t)}async laneWalks(e,t,a,s,n){let o=j(a,e);return R(n,s.statusCallback,()=>this.walks.reader.cut(e,t,{...this.walks.budgets(),signal:s.signal,keep:o,expand:o,links:!1}).catch(l=>{throw z(l,t.end-t.start)}))}async anchorFeatures(e,t,a){let s=a.haplotypes?.length?a.haplotypes.map(m=>w(this,m)):void 0,n=w(this,a.targetAssemblyName),o=n===void 0?s:s===void 0||s.some(m=>F(n,m)||F(m,n))?[n]:[];if(o?.length===0)return[];let{start:l,end:u}=t,{graph:f,fragments:c}=await this.laneWalks(e,t,o,a,`Reading walks ${t.refName}:${l.toLocaleString()}-${u.toLocaleString()}`),p=Y(f.nodes),N=x(this),h=c.filter(m=>m.name===e),d=m=>o===void 0?0:o.findIndex(b=>F(m.name,b));return c.filter(m=>m.name!==e&&d(m)>=0).sort((m,b)=>d(m)-d(b)).flatMap(m=>h.flatMap(b=>p(m,b).map(P=>C({chain:P,target:b,query:m,assemblyName:t.assemblyName,refName:t.refName,mateAssemblyName:O(N,me(m))}))))}async pairFeatures(e,t,a,s){let n=a.map(c=>({pair:c,featurePrefix:w(this,c.queryAssemblyName),matePrefix:w(this,c.targetAssemblyName)})),{graph:o,fragments:l}=await this.laneWalks(e,t,n.flatMap(c=>[c.featurePrefix,c.matePrefix]),s,X(a)),u=Q(o.nodes),f=c=>l.filter(p=>F(p.name,c));return n.flatMap(({pair:c,featurePrefix:p,matePrefix:N})=>f(p).flatMap(h=>f(N).flatMap(d=>u(d,h).map(y=>C({chain:y,target:h,query:d,assemblyName:c.queryAssemblyName,refName:W(h.name),mateAssemblyName:c.targetAssemblyName})))))}getFeatures(e,t={}){return q(async a=>{let s=e.assemblyName===this.anchor?await this.refNames.resolve(e,t):void 0;if(s!==void 0){let n=U(t),o=n.length>0?await this.pairFeatures(s,e,n,t):await this.anchorFeatures(s,e,t);for(let l of o)a.next(l)}a.complete()},t.signal)}};export{L as default};
|
|
2
|
+
//# sourceMappingURL=WalkTabixSyntenyAdapter-B6V3YNW7.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var s=".segs.bed.gz",u=".graph.bed.gz",r=".walks.bed.gz";function l(e){let n=a(e).replace(/^.*[/\\]/,"");if(!n.endsWith(r))return;let t=n.slice(0,-r.length),i=t.lastIndexOf(".");return i===-1?void 0:t.slice(i+1)||void 0}function c(e){return!("uri"in e)||e.uri!==""}function p(e){return typeof e=="object"&&e!==null&&Object.entries(e).some(([n,t])=>["uri","localPath","blobId"].includes(n)&&typeof t=="string"&&t!=="")}function o(e){let n=e.search(/[?#]/);return n===-1?{name:e,query:""}:{name:e.slice(0,n),query:e.slice(n)}}function a(e){return"uri"in e?o(e.uri).name:"localPath"in e?e.localPath:e.name}function d(e){return"uri"in e||"localPath"in e}function f(e,n){if("uri"in e){let{name:t,query:i}=o(e.uri);return{...e,uri:n(t)+i}}else{if("localPath"in e)return{...e,localPath:n(e.localPath)};throw new Error(`${e.name} was picked in the browser, which reads no file beside it; open it by URL`)}}export{s as a,u as b,r as c,l as d,c as e,p as f,o as g,a as h,d as i,f as j};
|
|
2
|
+
//# sourceMappingURL=chunk-6VNDP3UB.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/locationName.ts"],
|
|
4
|
+
"sourcesContent": ["import type { FileLocation } from '@jbrowse/core/util'\n\nexport const SEGMENTS_SUFFIX = '.segs.bed.gz'\n// gfa-to-tabix's format 2: segments and links in one file\nexport const GRAPH_SUFFIX = '.graph.bed.gz'\nexport const WALKS_SUFFIX = '.walks.bed.gz'\n\n// The reference sample `gfa-to-tabix --walks` names a walk file after:\n// GRCh38 in `chr22.GRCh38.walks.bed.gz`\nexport function walkFileSample(loc: FileLocation) {\n const name = locationName(loc).replace(/^.*[/\\\\]/, '')\n if (!name.endsWith(WALKS_SUFFIX)) {\n return undefined\n }\n const prefix = name.slice(0, -WALKS_SUFFIX.length)\n const dot = prefix.lastIndexOf('.')\n return dot === -1 ? undefined : prefix.slice(dot + 1) || undefined\n}\n\n// A schema's unset file slot defaults to an empty uri\nexport function locationIsSet(loc: FileLocation) {\n return !('uri' in loc) || loc.uri !== ''\n}\n\n// Whether a location as a config snapshot writes it names a file\nexport function snapshotNamesFile(location: unknown) {\n return (\n typeof location === 'object' &&\n location !== null &&\n Object.entries(location).some(\n ([key, value]) =>\n ['uri', 'localPath', 'blobId'].includes(key) &&\n typeof value === 'string' &&\n value !== '',\n )\n )\n}\n\n// A url's query string (a presigned signature, a token) follows the file name\nexport function splitUri(uri: string) {\n const end = uri.search(/[?#]/)\n return end === -1\n ? { name: uri, query: '' }\n : { name: uri.slice(0, end), query: uri.slice(end) }\n}\n\nexport function locationName(loc: FileLocation) {\n return 'uri' in loc\n ? splitUri(loc.uri).name\n : 'localPath' in loc\n ? loc.localPath\n : loc.name\n}\n\n// A file picked in the browser comes without the directory it sat in\nexport function readsSiblings(loc: FileLocation) {\n return 'uri' in loc || 'localPath' in loc\n}\n\nexport function renamed(loc: FileLocation, rename: (name: string) => string) {\n if ('uri' in loc) {\n const { name, query } = splitUri(loc.uri)\n return { ...loc, uri: rename(name) + query }\n } else if ('localPath' in loc) {\n return { ...loc, localPath: rename(loc.localPath) }\n } else {\n throw new Error(\n `${loc.name} was picked in the browser, which reads no file beside it; open it by URL`,\n )\n }\n}\n"],
|
|
5
|
+
"mappings": "AAEO,IAAMA,EAAkB,eAElBC,EAAe,gBACfC,EAAe,gBAIrB,SAASC,EAAeC,EAAmB,CAChD,IAAMC,EAAOC,EAAaF,CAAG,EAAE,QAAQ,WAAY,EAAE,EACrD,GAAI,CAACC,EAAK,SAASH,CAAY,EAC7B,OAEF,IAAMK,EAASF,EAAK,MAAM,EAAG,CAACH,EAAa,MAAM,EAC3CM,EAAMD,EAAO,YAAY,GAAG,EAClC,OAAOC,IAAQ,GAAK,OAAYD,EAAO,MAAMC,EAAM,CAAC,GAAK,MAC3D,CAGO,SAASC,EAAcL,EAAmB,CAC/C,MAAO,EAAE,QAASA,IAAQA,EAAI,MAAQ,EACxC,CAGO,SAASM,EAAkBC,EAAmB,CACnD,OACE,OAAOA,GAAa,UACpBA,IAAa,MACb,OAAO,QAAQA,CAAQ,EAAE,KACvB,CAAC,CAACC,EAAKC,CAAK,IACV,CAAC,MAAO,YAAa,QAAQ,EAAE,SAASD,CAAG,GAC3C,OAAOC,GAAU,UACjBA,IAAU,EACd,CAEJ,CAGO,SAASC,EAASC,EAAa,CACpC,IAAMC,EAAMD,EAAI,OAAO,MAAM,EAC7B,OAAOC,IAAQ,GACX,CAAE,KAAMD,EAAK,MAAO,EAAG,EACvB,CAAE,KAAMA,EAAI,MAAM,EAAGC,CAAG,EAAG,MAAOD,EAAI,MAAMC,CAAG,CAAE,CACvD,CAEO,SAASV,EAAaF,EAAmB,CAC9C,MAAO,QAASA,EACZU,EAASV,EAAI,GAAG,EAAE,KAClB,cAAeA,EACbA,EAAI,UACJA,EAAI,IACZ,CAGO,SAASa,EAAcb,EAAmB,CAC/C,MAAO,QAASA,GAAO,cAAeA,CACxC,CAEO,SAASc,EAAQd,EAAmBe,EAAkC,CAC3E,GAAI,QAASf,EAAK,CAChB,GAAM,CAAE,KAAAC,EAAM,MAAAe,CAAM,EAAIN,EAASV,EAAI,GAAG,EACxC,MAAO,CAAE,GAAGA,EAAK,IAAKe,EAAOd,CAAI,EAAIe,CAAM,CAC7C,KAAO,IAAI,cAAehB,EACxB,MAAO,CAAE,GAAGA,EAAK,UAAWe,EAAOf,EAAI,SAAS,CAAE,EAElD,MAAM,IAAI,MACR,GAAGA,EAAI,IAAI,2EACb,EAEJ",
|
|
6
|
+
"names": ["SEGMENTS_SUFFIX", "GRAPH_SUFFIX", "WALKS_SUFFIX", "walkFileSample", "loc", "name", "locationName", "prefix", "dot", "locationIsSet", "snapshotNamesFile", "location", "key", "value", "splitUri", "uri", "end", "readsSiblings", "renamed", "rename", "query"]
|
|
7
|
+
}
|