loom-browser 0.0.1 → 0.0.3

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.
Files changed (192) hide show
  1. package/dist/loom.esm.js +27 -21
  2. package/dist/loom.esm.min.js +1 -1
  3. package/dist/loom.esm.min.js.map +1 -1
  4. package/dist/loom.js +27 -21
  5. package/dist/loom.min.js +1 -1
  6. package/dist/loom.min.js.map +1 -1
  7. package/dist/types/commandDispatcher.d.ts +22 -1
  8. package/dist/types/gtx/zstdWasm.d.ts +4 -1
  9. package/dist/types/gtx/zstdWasmInlined.d.ts +6 -0
  10. package/dist/types/index.d.ts +1 -1
  11. package/dist/types/remoteProtocol.d.ts +2 -0
  12. package/package.json +8 -2
  13. package/dist/igv.d.ts +0 -667
  14. package/dist/igv.esm.js +0 -76708
  15. package/dist/igv.esm.min.js +0 -26
  16. package/dist/igv.esm.min.js.map +0 -1
  17. package/dist/igv.js +0 -76716
  18. package/dist/igv.min.js +0 -26
  19. package/dist/igv.min.js.map +0 -1
  20. package/dist/loom.d.ts +0 -667
  21. package/dist/types/agent/index.d.ts +0 -4
  22. package/dist/types/agent/stateProjection.d.ts +0 -115
  23. package/dist/types/agent/trackSelector.d.ts +0 -31
  24. package/dist/types/baseTrackCanvas.d.ts +0 -62
  25. package/dist/types/bigwig/binaryParser.d.ts +0 -25
  26. package/dist/types/bigwig/bpTree.d.ts +0 -40
  27. package/dist/types/bigwig/bwReader.d.ts +0 -69
  28. package/dist/types/bigwig/chromTree.d.ts +0 -28
  29. package/dist/types/bigwig/inflate.d.ts +0 -9
  30. package/dist/types/bigwig/rangeReader.d.ts +0 -48
  31. package/dist/types/bigwig/rpTree.d.ts +0 -27
  32. package/dist/types/dataSources/dynseqDataSource.d.ts +0 -20
  33. package/dist/types/dynseqRenderer.d.ts +0 -37
  34. package/dist/types/geneRenderer.d.ts +0 -17
  35. package/dist/types/geneThemes.d.ts +0 -11
  36. package/dist/types/geneTrackCanvas.d.ts +0 -46
  37. package/dist/types/renderTheme.d.ts +0 -72
  38. package/dist/types/renderThemePresets.d.ts +0 -16
  39. package/dist/types/rulerRenderer.d.ts +0 -14
  40. package/dist/types/rulerTrackCanvas.d.ts +0 -32
  41. package/dist/types/src/bigwig/index.d.ts +0 -66
  42. package/dist/types/src/canvasProvider.d.ts +0 -36
  43. package/dist/types/src/commandDispatcher.d.ts +0 -220
  44. package/dist/types/src/contextMenu.d.ts +0 -64
  45. package/dist/types/src/contextMenuProvider.d.ts +0 -25
  46. package/dist/types/src/data/cachedSequence.d.ts +0 -19
  47. package/dist/types/src/data/ucscApi.d.ts +0 -21
  48. package/dist/types/src/data/ucscSequence.d.ts +0 -19
  49. package/dist/types/src/dataLifecycle.d.ts +0 -16
  50. package/dist/types/src/dataSources/bigWigDataSource.d.ts +0 -24
  51. package/dist/types/src/dataSources/dataSourceCacheKey.d.ts +0 -9
  52. package/dist/types/src/dataSources/featureSourceFactory.d.ts +0 -46
  53. package/dist/types/src/dataSources/geneDataSource.d.ts +0 -16
  54. package/dist/types/src/dataSources/gtxDataSource.d.ts +0 -42
  55. package/dist/types/src/dataSources/sequenceDataSource.d.ts +0 -15
  56. package/dist/types/src/dataSources/textFeatureSource.d.ts +0 -63
  57. package/dist/types/src/decode/bed.d.ts +0 -64
  58. package/dist/types/src/decode/bedpe.d.ts +0 -36
  59. package/dist/types/src/decode/exonUtils.d.ts +0 -29
  60. package/dist/types/src/decode/gff.d.ts +0 -58
  61. package/dist/types/src/decode/interact.d.ts +0 -19
  62. package/dist/types/src/decode/ucsc.d.ts +0 -56
  63. package/dist/types/src/events.d.ts +0 -23
  64. package/dist/types/src/export/canvas2svg.d.ts +0 -166
  65. package/dist/types/src/export/index.d.ts +0 -2
  66. package/dist/types/src/featureCache.d.ts +0 -69
  67. package/dist/types/src/formats/featureParser.d.ts +0 -72
  68. package/dist/types/src/formats/formatDetection.d.ts +0 -46
  69. package/dist/types/src/genome/chromAlias.d.ts +0 -46
  70. package/dist/types/src/genome/chromSizes.d.ts +0 -53
  71. package/dist/types/src/genome/genome.d.ts +0 -51
  72. package/dist/types/src/genomeBrowser.d.ts +0 -189
  73. package/dist/types/src/gtx/fetchCoordinator.d.ts +0 -34
  74. package/dist/types/src/gtx/gtxReader.d.ts +0 -144
  75. package/dist/types/src/gtx/index.d.ts +0 -40
  76. package/dist/types/src/gtx/zstdWasm.d.ts +0 -22
  77. package/dist/types/src/headlessGenomeBrowser.d.ts +0 -450
  78. package/dist/types/src/index.d.ts +0 -123
  79. package/dist/types/src/intervalTree.d.ts +0 -56
  80. package/dist/types/src/io/binaryParser.d.ts +0 -25
  81. package/dist/types/src/io/index.d.ts +0 -7
  82. package/dist/types/src/io/rangeReader.d.ts +0 -48
  83. package/dist/types/src/locusUtils.d.ts +0 -37
  84. package/dist/types/src/pack.d.ts +0 -41
  85. package/dist/types/src/popupProvider.d.ts +0 -22
  86. package/dist/types/src/remoteProtocol.d.ts +0 -81
  87. package/dist/types/src/roi/index.d.ts +0 -3
  88. package/dist/types/src/roi/roiRenderer.d.ts +0 -24
  89. package/dist/types/src/roi/roiSet.d.ts +0 -41
  90. package/dist/types/src/sequence/sequenceUtils.d.ts +0 -44
  91. package/dist/types/src/session.d.ts +0 -55
  92. package/dist/types/src/stateProjection.d.ts +0 -115
  93. package/dist/types/src/tabix/index.d.ts +0 -48
  94. package/dist/types/src/themes/index.d.ts +0 -3
  95. package/dist/types/src/themes/renderTheme.d.ts +0 -86
  96. package/dist/types/src/themes/renderThemePresets.d.ts +0 -16
  97. package/dist/types/src/trackRegistry.d.ts +0 -81
  98. package/dist/types/src/trackSelector.d.ts +0 -31
  99. package/dist/types/src/tracks/annotation/annotationRenderer.d.ts +0 -17
  100. package/dist/types/src/tracks/annotation/annotationThemes.d.ts +0 -11
  101. package/dist/types/src/tracks/annotation/annotationTrackCanvas.d.ts +0 -58
  102. package/dist/types/src/tracks/annotation/index.d.ts +0 -4
  103. package/dist/types/src/tracks/axis/axisRenderer.d.ts +0 -19
  104. package/dist/types/src/tracks/axis/index.d.ts +0 -1
  105. package/dist/types/src/tracks/baseTrackCanvas.d.ts +0 -113
  106. package/dist/types/src/tracks/dynseq/dynseqRenderer.d.ts +0 -38
  107. package/dist/types/src/tracks/dynseq/index.d.ts +0 -1
  108. package/dist/types/src/tracks/index.d.ts +0 -7
  109. package/dist/types/src/tracks/interaction/index.d.ts +0 -4
  110. package/dist/types/src/tracks/interaction/interactionRenderer.d.ts +0 -52
  111. package/dist/types/src/tracks/interaction/interactionTrackCanvas.d.ts +0 -54
  112. package/dist/types/src/tracks/ruler/index.d.ts +0 -3
  113. package/dist/types/src/tracks/ruler/rulerRenderer.d.ts +0 -25
  114. package/dist/types/src/tracks/ruler/rulerTrackCanvas.d.ts +0 -43
  115. package/dist/types/src/tracks/sequence/index.d.ts +0 -5
  116. package/dist/types/src/tracks/sequence/sequenceRenderer.d.ts +0 -34
  117. package/dist/types/src/tracks/sequence/sequenceThemes.d.ts +0 -11
  118. package/dist/types/src/tracks/sequence/sequenceTrackCanvas.d.ts +0 -67
  119. package/dist/types/src/tracks/wig/index.d.ts +0 -5
  120. package/dist/types/src/tracks/wig/wigRenderer.d.ts +0 -15
  121. package/dist/types/src/tracks/wig/wigSummary.d.ts +0 -31
  122. package/dist/types/src/tracks/wig/wigThemes.d.ts +0 -15
  123. package/dist/types/src/tracks/wig/wigTrackCanvas.d.ts +0 -82
  124. package/dist/types/src/types.d.ts +0 -885
  125. package/dist/types/src/ui/components/LoomBrowserShell.d.ts +0 -52
  126. package/dist/types/src/ui/components/LoomChromosomeSelect.d.ts +0 -18
  127. package/dist/types/src/ui/components/LoomContextMenu.d.ts +0 -39
  128. package/dist/types/src/ui/components/LoomExportControls.d.ts +0 -13
  129. package/dist/types/src/ui/components/LoomInputDialog.d.ts +0 -27
  130. package/dist/types/src/ui/components/LoomLocusInput.d.ts +0 -18
  131. package/dist/types/src/ui/components/LoomNavbar.d.ts +0 -15
  132. package/dist/types/src/ui/components/LoomPopup.d.ts +0 -32
  133. package/dist/types/src/ui/components/LoomWindowSize.d.ts +0 -14
  134. package/dist/types/src/ui/components/LoomZoomControls.d.ts +0 -10
  135. package/dist/types/src/ui/index.d.ts +0 -21
  136. package/dist/types/src/ui/themes.d.ts +0 -14
  137. package/dist/types/src/worker/nodeWorkerProvider.d.ts +0 -28
  138. package/dist/types/src/worker/taskHandler.d.ts +0 -15
  139. package/dist/types/src/worker/webWorkerProvider.d.ts +0 -51
  140. package/dist/types/src/worker/workerScript.d.ts +0 -11
  141. package/dist/types/src/workerProvider.d.ts +0 -76
  142. package/dist/types/tabix/bgzBlockLoader.d.ts +0 -60
  143. package/dist/types/tabix/bgzf.d.ts +0 -43
  144. package/dist/types/tabix/tabixIndex.d.ts +0 -85
  145. package/dist/types/tabix/tabixReader.d.ts +0 -60
  146. package/dist/types/tabix/virtualOffset.d.ts +0 -41
  147. package/dist/types/test/src/mockCanvasProvider.d.ts +0 -67
  148. package/dist/types/test/src/testBedDecode.d.ts +0 -1
  149. package/dist/types/test/src/testCanvas2SVG.d.ts +0 -7
  150. package/dist/types/test/src/testChromAlias.d.ts +0 -1
  151. package/dist/types/test/src/testCommandDispatcher.d.ts +0 -1
  152. package/dist/types/test/src/testData.d.ts +0 -7
  153. package/dist/types/test/src/testDataLifecycle.d.ts +0 -1
  154. package/dist/types/test/src/testDataSourceCacheKey.d.ts +0 -1
  155. package/dist/types/test/src/testDataSources.d.ts +0 -5
  156. package/dist/types/test/src/testDecodeUcsc.d.ts +0 -1
  157. package/dist/types/test/src/testEvents.d.ts +0 -1
  158. package/dist/types/test/src/testFeatureCache.d.ts +0 -1
  159. package/dist/types/test/src/testFeatureParser.d.ts +0 -1
  160. package/dist/types/test/src/testFormatDetection.d.ts +0 -1
  161. package/dist/types/test/src/testGffDecode.d.ts +0 -1
  162. package/dist/types/test/src/testHeadlessBrowser.d.ts +0 -1
  163. package/dist/types/test/src/testInteractionDecoder.d.ts +0 -1
  164. package/dist/types/test/src/testIntervalTree.d.ts +0 -1
  165. package/dist/types/test/src/testLocusUtils.d.ts +0 -1
  166. package/dist/types/test/src/testPack.d.ts +0 -1
  167. package/dist/types/test/src/testROI.d.ts +0 -1
  168. package/dist/types/test/src/testRemoteProtocol.d.ts +0 -1
  169. package/dist/types/test/src/testRenderTheme.d.ts +0 -1
  170. package/dist/types/test/src/testSVGExport.d.ts +0 -5
  171. package/dist/types/test/src/testSequence.d.ts +0 -1
  172. package/dist/types/test/src/testSession.d.ts +0 -1
  173. package/dist/types/test/src/testTrackSelector.d.ts +0 -1
  174. package/dist/types/test/src/testTrackSerialize.d.ts +0 -1
  175. package/dist/types/test/src/testWigSummary.d.ts +0 -1
  176. package/dist/types/test/src/testWorkerDispatch.d.ts +0 -9
  177. package/dist/types/tracks/gene/geneRenderer.d.ts +0 -17
  178. package/dist/types/tracks/gene/geneThemes.d.ts +0 -11
  179. package/dist/types/tracks/gene/geneTrackCanvas.d.ts +0 -58
  180. package/dist/types/tracks/gene/index.d.ts +0 -4
  181. package/dist/types/ui/components/IgvBrowserShell.d.ts +0 -52
  182. package/dist/types/ui/components/IgvChromosomeSelect.d.ts +0 -18
  183. package/dist/types/ui/components/IgvExportControls.d.ts +0 -13
  184. package/dist/types/ui/components/IgvLocusInput.d.ts +0 -18
  185. package/dist/types/ui/components/IgvNavbar.d.ts +0 -15
  186. package/dist/types/ui/components/IgvWindowSize.d.ts +0 -14
  187. package/dist/types/ui/components/IgvZoomControls.d.ts +0 -10
  188. package/dist/types/wigRenderer.d.ts +0 -15
  189. package/dist/types/wigSummary.d.ts +0 -31
  190. package/dist/types/wigThemes.d.ts +0 -15
  191. package/dist/types/wigTrackCanvas.d.ts +0 -46
  192. package/dist/types/worker/decodeWig.d.ts +0 -20
@@ -1,42 +0,0 @@
1
- /**
2
- * GTX data source — DataSource<WigFeature> backed by a GTX file.
3
- *
4
- * A single GTX file contains multiple experiments. Each GtxDataSource
5
- * instance reads one experiment (by ID), but shares the underlying
6
- * GtxReader (and its cached header, dictionary, indexes) with other
7
- * GtxDataSource instances pointing to the same URL.
8
- *
9
- * Request coalescing: when multiple GtxDataSource instances for the
10
- * same URL call fetch() in the same tick (e.g., loadAllTracksIfNeeded),
11
- * the GtxFetchCoordinator batches them into a single readFeatures()
12
- * call with merged byte ranges — the core GTX performance advantage.
13
- *
14
- * Drop-in replacement for BigWigDataSource when the data is in GTX format.
15
- *
16
- * Layer 1 (Data + Layout): no DOM, no canvas.
17
- */
18
- import type { DataSource, Locus, WigFeature, WindowFunction } from '../types';
19
- import type { WorkerProvider } from '../workerProvider';
20
- import type { CumulativeOffsets } from '../genome/chromSizes';
21
- export declare class GtxDataSource implements DataSource<WigFeature> {
22
- private url;
23
- private experimentId;
24
- private _windowFunction;
25
- private workerProvider?;
26
- private _cumulativeOffsets?;
27
- private _resolveChromName?;
28
- private reader;
29
- constructor(url: string, experimentId: string, windowFunction?: WindowFunction, workerProvider?: WorkerProvider);
30
- get windowFunction(): WindowFunction;
31
- /** Update the window function for future fetches. */
32
- setWindowFunction(wf: WindowFunction): void;
33
- /** Set cumulative offsets for whole genome view coordinate transformation. */
34
- setCumulativeOffsets(offsets: CumulativeOffsets): void;
35
- /** Set a chromosome name resolver for alias resolution (e.g., "1" → "chr1"). */
36
- setChromNameResolver(resolver: (chr: string) => string): void;
37
- fetch(locus: Locus, bpPerPixel: number, signal: AbortSignal): Promise<WigFeature[]>;
38
- /**
39
- * Fetch all chromosomes for whole genome view and transform to genome-wide coordinates.
40
- */
41
- private fetchWG;
42
- }
@@ -1,15 +0,0 @@
1
- import type { DataSource, Locus, SequenceProvider } from '../types';
2
- import type { SequenceFeature } from '../tracks/sequence/sequenceRenderer';
3
- /**
4
- * DataSource for sequence tracks — wraps a SequenceProvider to conform
5
- * to the standard DataSource<SequenceFeature> interface.
6
- *
7
- * This mirrors igv.js SequenceTrack.getFeatures() which calls
8
- * browser.genome.getSequence() and returns {bpStart, sequence}.
9
- * Returns a single-element array when zoomed in, empty array when zoomed out.
10
- */
11
- export declare class SequenceDataSource implements DataSource<SequenceFeature> {
12
- private sequenceProvider;
13
- constructor(sequenceProvider: SequenceProvider);
14
- fetch(locus: Locus, bpPerPixel: number, signal: AbortSignal): Promise<SequenceFeature[]>;
15
- }
@@ -1,63 +0,0 @@
1
- /**
2
- * DataSource for text-based genomic feature files (BED, GFF, peaks, etc.).
3
- *
4
- * Supports:
5
- * - Indexed files (via TabixReader) — query by region, on-demand parsing
6
- * - Non-indexed files — fetch all, cache in FeatureCache, query locally
7
- * - Automatic format detection from URL
8
- * - Chromosome alias resolution
9
- *
10
- * Port of js/feature/textFeatureSource.ts and js/feature/featureFileReader.ts.
11
- * Layer 1 (Data + Layout): no DOM.
12
- */
13
- import type { DataSource, Locus, TextFileFormat } from '../types';
14
- import type { CacheableFeature } from '../featureCache';
15
- import type { CumulativeOffsets } from '../genome/chromSizes';
16
- import type { WorkerProvider } from '../workerProvider';
17
- export interface TextFeatureSourceConfig {
18
- /** URL to the data file. */
19
- url: string;
20
- /** Explicit format override. When absent, inferred from URL. */
21
- format?: TextFileFormat;
22
- /** Index URL override. Defaults to url + '.tbi'. */
23
- indexURL?: string;
24
- /** Whether the file is indexed (tabix). Auto-detected if absent. */
25
- indexed?: boolean;
26
- /** For GFF: whether to assemble transcript models. Default: true. */
27
- assembleGFF?: boolean;
28
- /** Worker provider for offloading CPU-intensive tasks. */
29
- workerProvider?: WorkerProvider;
30
- }
31
- /**
32
- * DataSource for text-based genomic feature files.
33
- *
34
- * For indexed files: uses TabixReader to query by region, parses lines on each fetch.
35
- * For non-indexed files: loads entire file on first fetch, caches in FeatureCache.
36
- */
37
- export declare class TextFeatureSource<F extends CacheableFeature = CacheableFeature> implements DataSource<F> {
38
- private readonly url;
39
- private readonly format;
40
- private readonly assembleGFF;
41
- private readonly _indexed;
42
- private readonly workerProvider?;
43
- private _resolveChromName?;
44
- private _cumulativeOffsets?;
45
- private tabixReader?;
46
- private featureCache?;
47
- private allFeaturesLoaded;
48
- private header?;
49
- constructor(config: TextFeatureSourceConfig);
50
- /** Whether this source is indexed (queryable by region). */
51
- get indexed(): boolean;
52
- /** Set a chromosome name resolver for alias resolution. */
53
- setChromNameResolver(resolver: (chr: string) => string): void;
54
- /** Set cumulative offsets for whole genome view coordinate transformation. */
55
- setCumulativeOffsets(offsets: CumulativeOffsets): void;
56
- /** Get sequence names from the file/index (for chromosome alias setup). */
57
- getSequenceNames(signal?: AbortSignal): Promise<string[]>;
58
- fetch(locus: Locus, bpPerPixel: number, signal: AbortSignal): Promise<F[]>;
59
- private fetchIndexed;
60
- private fetchNonIndexed;
61
- private loadAllFeatures;
62
- private fetchWG;
63
- }
@@ -1,64 +0,0 @@
1
- /**
2
- * BED format decoders — BED (3-12 columns), narrowPeak, broadPeak, bedGraph, gappedPeak.
3
- *
4
- * Port of js/feature/decode/ucsc.ts (decodeBed, decodePeak, decodeNarrowPeak,
5
- * decodeBedGraph, decodeGappedPeak).
6
- *
7
- * Layer 1 (Data + Layout): pure functions, no I/O, no DOM.
8
- */
9
- import type { BedFeature, PeakFeature, BedGraphFeature } from '../types';
10
- /** Header metadata extracted from track lines and column directives. */
11
- export interface BedHeader {
12
- nameField?: string;
13
- /** When true, column 4 may contain GFF-style key=value attributes. */
14
- gffTags?: boolean;
15
- /** Column index for color (from #columns directive). */
16
- colorColumn?: number;
17
- /** Column index for thickness (from #columns directive). */
18
- thicknessColumn?: number;
19
- }
20
- /**
21
- * Decode a BED format line (3-12 columns) into a BedFeature.
22
- *
23
- * Port of js/feature/decode/ucsc.ts::decodeBed().
24
- * Preserves igv.js patterns:
25
- * - Column count gating with maxColumnCount
26
- * - GFF-style attribute parsing in col4 when contains `=` and `;`
27
- * - Exon block validation (count < 1000, sizes.length === starts.length === count)
28
- * - Early return on parse errors (partial feature returned, not rejected)
29
- * - Color parsing for col8 (skip "." and "0")
30
- */
31
- export declare function decodeBed(tokens: string[], header?: BedHeader, maxColumnCount?: number): BedFeature | undefined;
32
- /**
33
- * Decode a broadPeak/regionPeak format line (BED6+3: signal, pValue, qValue).
34
- *
35
- * Port of js/feature/decode/ucsc.ts::decodePeak().
36
- */
37
- export declare function decodeBroadPeak(tokens: string[], header?: BedHeader): PeakFeature | undefined;
38
- /**
39
- * Decode a narrowPeak format line (BED6+4: signal, pValue, qValue, peak).
40
- *
41
- * Port of js/feature/decode/ucsc.ts::decodeNarrowPeak().
42
- */
43
- export declare function decodeNarrowPeak(tokens: string[], header?: BedHeader): PeakFeature | undefined;
44
- /**
45
- * Decode a gappedPeak format line (BED12+3: signal, pValue, qValue).
46
- *
47
- * Port of js/feature/decode/ucsc.ts::decodeGappedPeak().
48
- */
49
- export declare function decodeGappedPeak(tokens: string[], header?: BedHeader): PeakFeature | undefined;
50
- /**
51
- * Decode a BedGraph line (chr, start, end, value).
52
- *
53
- * Port of js/feature/decode/ucsc.ts::decodeBedGraph().
54
- */
55
- export declare function decodeBedGraph(tokens: string[]): BedGraphFeature | undefined;
56
- /**
57
- * Decode a refFlat format line.
58
- *
59
- * Format: geneName, name, chrom, strand, txStart, txEnd, cdsStart, cdsEnd,
60
- * exonCount, exonStarts, exonEnds
61
- *
62
- * Port of js/feature/decode/ucsc.ts::decodeReflat().
63
- */
64
- export declare function decodeRefflat(tokens: string[]): BedFeature | undefined;
@@ -1,36 +0,0 @@
1
- /**
2
- * BEDPE format decoder — pairwise genomic interactions (Hi-C, ChIA-PET, SVs).
3
- *
4
- * Standard BEDPE: 10+ columns (chr1/start1/end1/chr2/start2/end2/name/score/strand1/strand2).
5
- * Variants: 7-column (score in name column), hiccups (6 standard + extra columns).
6
- *
7
- * Port of js/feature/decode/bedpe.ts.
8
- * Layer 1 (Data + Layout): pure functions, no I/O, no DOM.
9
- */
10
- import type { InteractionFeature } from '../types';
11
- /** Header metadata for BEDPE files. */
12
- export interface BedpeHeader {
13
- /** Whether this is a hiccups-format file (auto-detected on first feature). */
14
- hiccups?: boolean;
15
- /** Column names from header line. */
16
- columnNames?: string[];
17
- /** Column index for per-feature color. */
18
- colorColumn?: number;
19
- /** Column index for per-feature line thickness. */
20
- thicknessColumn?: number;
21
- }
22
- /**
23
- * Decode a single BEDPE line into an InteractionFeature.
24
- *
25
- * Handles standard 10-column BEDPE and hiccups variants.
26
- * Returns undefined for unparseable lines.
27
- */
28
- export declare function decodeBedpe(tokens: string[], header?: BedpeHeader): InteractionFeature | undefined;
29
- /**
30
- * Post-process BEDPE features:
31
- * 1. Auto-detect score in name column (non-standard 7-col variant).
32
- * 2. Duplicate inter-chromosome features so each chromosome has a copy.
33
- */
34
- export declare function fixBedPE(features: InteractionFeature[]): void;
35
- /** Detect hiccups format from column headers. */
36
- export declare function isHiccups(columns: string[]): boolean;
@@ -1,29 +0,0 @@
1
- /**
2
- * Shared exon and feature utilities used by multiple decoders (BED, genePred, GFF).
3
- *
4
- * Layer 1 (Data + Layout): pure functions, no I/O, no DOM.
5
- */
6
- import type { Exon } from '../types';
7
- /**
8
- * Mark UTR exons and partial UTR boundaries.
9
- *
10
- * For non-coding transcripts (cdStart === cdEnd), all exons are marked as UTR.
11
- * For coding transcripts, exons entirely outside the CDS are marked as UTR,
12
- * and exons overlapping CDS boundaries get cdStart/cdEnd set.
13
- *
14
- * Port of js/feature/decode/ucsc.ts::findUTRs.
15
- */
16
- export declare function findUTRs(exons: Exon[], cdStart: number, cdEnd: number): void;
17
- /**
18
- * Parse a color value from a BED column (comma-separated RGB or hex) into a CSS color string.
19
- *
20
- * Accepts:
21
- * - "r,g,b" (e.g. "255,0,0" → "rgb(255,0,0)")
22
- * - "#RRGGBB" or "#RGB" (returned as-is)
23
- * - "." or "0" → returns undefined (no color)
24
- *
25
- * Port of igv.js IGVColor.createColorString() for the subset used by BED format.
26
- */
27
- export declare function parseColorString(value: string): string | undefined;
28
- /** Parse a strand character to a typed strand value. */
29
- export declare function parseStrand(s: string): '+' | '-' | undefined;
@@ -1,58 +0,0 @@
1
- /**
2
- * GFF3/GTF format decoders and transcript assembly.
3
- *
4
- * Ports:
5
- * - js/feature/gff/gff.ts (decodeGFF3, decodeGTF)
6
- * - js/feature/gff/parseAttributeString.ts (parseAttributeString, decodeGFFAttribute)
7
- * - js/feature/gff/gffHelper.ts (combineFeatures — transcript assembly)
8
- * - js/feature/gff/so.ts (sequence ontology type checks)
9
- *
10
- * Layer 1 (Data + Layout): pure functions, no I/O, no DOM.
11
- */
12
- import type { GFFRecord, GFFFeature } from '../types';
13
- export declare function isTranscript(type: string): boolean;
14
- export declare function isTranscriptPart(type: string): boolean;
15
- export declare function isExon(type: string): boolean;
16
- export declare function isIntron(type: string): boolean;
17
- export declare function isCoding(type: string): boolean;
18
- export declare function isUTR(type: string): boolean;
19
- /** Decode GFF3 percent-encoded characters. */
20
- export declare function decodeGFFAttribute(str: string): string;
21
- /**
22
- * Parse GFF/GTF attribute string (column 9) into key-value pairs.
23
- *
24
- * Returns an array (not a map) because attribute keys are not required to be unique.
25
- * GFF3 uses `=` as key-value delimiter, GTF uses space.
26
- *
27
- * Port of js/feature/gff/parseAttributeString.ts::parseAttributeString().
28
- */
29
- export declare function parseGFFAttributes(attributeString: string, keyValueDelim?: string): Array<[string, string]>;
30
- /**
31
- * Decode a single GFF3 record line.
32
- *
33
- * Parses column 9 attributes with `=` delimiter, extracts ID, Parent, color.
34
- */
35
- export declare function decodeGFF3(tokens: string[]): GFFRecord | undefined;
36
- /**
37
- * Decode a single GTF record line.
38
- *
39
- * Parses column 9 attributes with space delimiter, infers ID/Parent from
40
- * feature type (gene→gene_id, transcript→transcript_id, exon→transcript_id parent).
41
- */
42
- export declare function decodeGTF(tokens: string[]): GFFRecord | undefined;
43
- interface AssemblyOptions {
44
- /** Custom name field to use for feature names. */
45
- nameField?: string;
46
- /** Feature types to filter out (default: ['chromosome']). */
47
- filterTypes?: string[];
48
- }
49
- /**
50
- * Assemble flat GFFRecords into hierarchical GFFFeatures (transcripts with exon structure).
51
- *
52
- * Combines gene→transcript→exon/CDS records by parent/ID relationships.
53
- * Handles both GFF3 (explicit ID/Parent) and GTF (inferred from feature type).
54
- *
55
- * Port of js/feature/gff/gffHelper.ts::combineFeatures().
56
- */
57
- export declare function assembleGFFTranscripts(records: GFFRecord[], format: 'gff3' | 'gtf' | 'gff', options?: AssemblyOptions): GFFFeature[];
58
- export {};
@@ -1,19 +0,0 @@
1
- /**
2
- * UCSC interact format decoder — 18-column pairwise genomic interactions.
3
- *
4
- * See https://genome.ucsc.edu/goldenpath/help/interact.html
5
- *
6
- * Columns: chrom, chromStart, chromEnd, name, score, value, exp, color,
7
- * sourceChrom, sourceStart, sourceEnd, sourceName, sourceStrand,
8
- * targetChrom, targetStart, targetEnd, targetName, targetStrand
9
- *
10
- * Port of js/feature/decode/interact.ts.
11
- * Layer 1 (Data + Layout): pure functions, no I/O, no DOM.
12
- */
13
- import type { InteractionFeature } from '../types';
14
- /**
15
- * Decode a single UCSC interact format line into an InteractionFeature.
16
- *
17
- * Returns undefined for lines with fewer than 6 columns.
18
- */
19
- export declare function decodeInteract(tokens: string[]): InteractionFeature | undefined;
@@ -1,56 +0,0 @@
1
- /**
2
- * UCSC gene prediction format decoders.
3
- *
4
- * Ported from js/feature/decode/ucsc.ts — handles genePred, genePredExt,
5
- * and refGene formats. These are the formats used by UCSC genome browser
6
- * for gene annotations (ncbiRefSeq, knownGene, etc.).
7
- */
8
- import type { AnnotationFeature } from '../types';
9
- /**
10
- * Decode a UCSC "genePred" record (basic gene prediction format).
11
- *
12
- * Column layout (no bin): name, chrom, strand, txStart, txEnd, cdsStart, cdsEnd,
13
- * exonCount, exonStarts, exonEnds
14
- * Column layout (with bin): bin, name, chrom, strand, txStart, txEnd, cdsStart, cdsEnd,
15
- * exonCount, exonStarts, exonEnds, score, name2
16
- *
17
- * @param tokens - Tab-split fields from a single line
18
- * @param shift - 1 if the record has a leading `bin` column (refGene), 0 otherwise
19
- */
20
- export declare function decodeGenePred(tokens: string[], shift?: 0 | 1): AnnotationFeature | undefined;
21
- /**
22
- * Decode a UCSC "genePredExt" record. refGene files are in this format.
23
- *
24
- * Same as genePred but with additional columns:
25
- * ..., score, name2, cdsStartStat, cdsEndStat, exonFrames
26
- *
27
- * @param tokens - Tab-split fields from a single line
28
- * @param shift - 1 if the record has a leading `bin` column (refGene), 0 otherwise
29
- */
30
- export declare function decodeGenePredExt(tokens: string[], shift?: 0 | 1): AnnotationFeature | undefined;
31
- /**
32
- * Decode a UCSC REST API JSON record into a AnnotationFeature.
33
- *
34
- * The UCSC API returns JSON objects with the same fields as the text format
35
- * but as named properties instead of positional columns.
36
- */
37
- export declare function decodeRefGeneJson(rec: RefGeneRecord): AnnotationFeature;
38
- /** Shape of a record returned by the UCSC REST API for ncbiRefSeq/refGene tracks. */
39
- export interface RefGeneRecord {
40
- bin?: number;
41
- name: string;
42
- name2: string;
43
- chrom: string;
44
- strand: string;
45
- txStart: number;
46
- txEnd: number;
47
- cdsStart: number;
48
- cdsEnd: number;
49
- exonCount: number;
50
- exonStarts: string;
51
- exonEnds: string;
52
- score?: number;
53
- cdsStartStat?: string;
54
- cdsEndStat?: string;
55
- exonFrames?: string;
56
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Lightweight typed event emitter.
3
- *
4
- * Usage:
5
- * type Events = { locuschange: { locus: Locus }; zoom: { factor: number } }
6
- * const emitter = new EventEmitter<Events>()
7
- * const unsub = emitter.on('locuschange', data => console.log(data.locus))
8
- * emitter.emit('locuschange', { locus: { chr: 'chr1', start: 0, end: 1000 } })
9
- * unsub()
10
- */
11
- type Handler<T> = (data: T) => void;
12
- export declare class EventEmitter<EventMap extends object> {
13
- private listeners;
14
- /** Subscribe to an event. Returns an unsubscribe function. */
15
- on<K extends keyof EventMap>(event: K, handler: Handler<EventMap[K]>): () => void;
16
- /** Unsubscribe a specific handler, or all handlers for an event. */
17
- off<K extends keyof EventMap>(event: K, handler?: Handler<EventMap[K]>): void;
18
- /** Emit an event to all subscribers. */
19
- emit<K extends keyof EventMap>(event: K, data: EventMap[K]): void;
20
- /** Remove all listeners for all events. */
21
- removeAllListeners(): void;
22
- }
23
- export {};
@@ -1,166 +0,0 @@
1
- /**
2
- * Canvas2SVG — A Canvas-to-SVG rendering context.
3
- *
4
- * Implements the CanvasRenderingContext2D interface but builds an SVG document
5
- * instead of rasterizing to pixels. Drop-in replacement for Canvas2D context
6
- * in our stateless renderers.
7
- *
8
- * Port of Canvas 2 SVG v1.0.19 (MIT license, Kerry Liu / Gliffy Inc. 2014)
9
- * from js/canvas2svg.ts with full TypeScript typing.
10
- *
11
- * Layer 1 utility — no DOM attachment, no track logic.
12
- */
13
- /** Configuration for creating a Canvas2SVG context. */
14
- export interface C2SConfig {
15
- width?: number;
16
- height?: number;
17
- enableMirroring?: boolean;
18
- ctx?: CanvasRenderingContext2D;
19
- viewbox?: ViewBox;
20
- backdropColor?: string;
21
- }
22
- interface ViewBox {
23
- x: number;
24
- y: number;
25
- width: number;
26
- height: number;
27
- }
28
- /** Extra methods provided by Canvas2SVG beyond the standard CanvasRenderingContext2D API. */
29
- export interface C2SVGExtensions {
30
- /** Flag indicating this is an SVG rendering context. */
31
- isSVG: boolean;
32
- /** Create a clipped, translated group (used for per-track viewport rendering). */
33
- saveWithTranslationAndClipRect(id: string, tx: number, ty: number, width: number, height: number, clipYOffset: number): void;
34
- /** Update the SVG document height and viewBox. */
35
- setHeight(height: number): void;
36
- /** Serialize the SVG DOM tree to an XML string. */
37
- getSerializedSvg(fixNamedEntities: boolean): string;
38
- /** Stroke an ellipse element (SVG native, not path-based). */
39
- strokeEllipse(cx: number, cy: number, rx: number, ry: number, rotation: number, startAngle: number, endAngle: number, isCCW?: boolean): void;
40
- /** Fill an ellipse element (SVG native, not path-based). */
41
- fillEllipse(cx: number, cy: number, rx: number, ry: number, rotation: number, startAngle: number, endAngle: number, isCCW?: boolean): void;
42
- }
43
- /** A Canvas2SVG context: implements CanvasRenderingContext2D plus SVG-specific extensions. */
44
- export type C2SContext = CanvasRenderingContext2D & C2SVGExtensions;
45
- declare class SVGCanvasGradient {
46
- __root: SVGElement;
47
- __ctx: C2S;
48
- constructor(gradientNode: SVGElement, ctx: C2S);
49
- addColorStop(offset: number, color: string): void;
50
- }
51
- declare class SVGCanvasPattern {
52
- __root: SVGElement;
53
- __ctx: C2S;
54
- constructor(pattern: SVGElement, ctx: C2S);
55
- }
56
- /**
57
- * Canvas2SVG rendering context.
58
- *
59
- * Implements the subset of CanvasRenderingContext2D that our renderers use,
60
- * plus SVG-specific extensions (saveWithTranslationAndClipRect, setHeight,
61
- * getSerializedSvg, stroke/fillEllipse).
62
- *
63
- * Usage:
64
- * const ctx = new C2S({ width: 800, height: 600 })
65
- * // ... draw using standard Canvas2D API ...
66
- * const svgString = ctx.getSerializedSvg(true)
67
- */
68
- export declare class C2S {
69
- readonly isSVG = true;
70
- width: number;
71
- height: number;
72
- canvas: C2S;
73
- private config;
74
- private enableMirroring;
75
- private viewbox;
76
- private __canvas;
77
- private __ctx;
78
- private __document;
79
- __root: SVGElement;
80
- private __defs;
81
- private __rootGroup;
82
- private __currentElement;
83
- private __currentElementsToStyle;
84
- private __ids;
85
- private __stack;
86
- private __groupStack;
87
- private __currentDefaultPath;
88
- private __currentPosition;
89
- strokeStyle: string | CanvasGradient | CanvasPattern;
90
- fillStyle: string | CanvasGradient | CanvasPattern;
91
- lineCap: CanvasLineCap;
92
- lineJoin: CanvasLineJoin;
93
- miterLimit: number;
94
- lineWidth: number;
95
- globalAlpha: number;
96
- font: string;
97
- shadowColor: string;
98
- shadowOffsetX: number;
99
- shadowOffsetY: number;
100
- shadowBlur: number;
101
- textAlign: CanvasTextAlign;
102
- textBaseline: CanvasTextBaseline;
103
- lineDash: string | null;
104
- private __fontUnderline;
105
- private __fontHref;
106
- constructor(config?: C2SConfig);
107
- setWidth(width: number): void;
108
- setHeight(height: number): void;
109
- __createElement(elementName: string, properties?: Record<string, string | number>, resetFill?: boolean): SVGElement;
110
- private __setDefaultStyles;
111
- private __applyStyleState;
112
- private __getStyleState;
113
- private __applyStyleToCurrentElement;
114
- private __closestGroupOrSvg;
115
- getSerializedSvg(fixNamedEntities: boolean): string;
116
- getSvg(): SVGElement;
117
- saveWithTranslationAndClipRect(id: string, tx: number, ty: number, width: number, height: number, clipYOffset: number): void;
118
- save(): void;
119
- restore(): void;
120
- private __addTransform;
121
- scale(x: number, y?: number): void;
122
- rotate(angle: number): void;
123
- translate(x: number, y: number): void;
124
- transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
125
- beginPath(): void;
126
- private __applyCurrentDefaultPath;
127
- private __addPathCommand;
128
- moveTo(x: number, y: number): void;
129
- closePath(): void;
130
- lineTo(x: number, y: number): void;
131
- bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
132
- quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
133
- roundRect(x: number, y: number, w: number, h: number, radii?: number | number[]): void;
134
- arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
135
- stroke(): void;
136
- fill(): void;
137
- rect(x: number, y: number, width: number, height: number): void;
138
- fillRect(x: number, y: number, width: number, height: number): void;
139
- strokeRect(x: number, y: number, width: number, height: number): void;
140
- strokeEllipse(cx: number, cy: number, rx: number, ry: number, _rotation: number, _startAngle: number, _endAngle: number, _isCCW?: boolean): void;
141
- fillEllipse(cx: number, cy: number, rx: number, ry: number, _rotation: number, _startAngle: number, _endAngle: number, _isCCW?: boolean): void;
142
- private __ellipse;
143
- private __clearCanvas;
144
- clearRect(x: number, y: number, width: number, height: number): void;
145
- createLinearGradient(x1: number, y1: number, x2: number, y2: number): SVGCanvasGradient;
146
- createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): SVGCanvasGradient;
147
- private __parseFont;
148
- private __wrapTextLink;
149
- private __applyText;
150
- fillText(text: string, x: number, y: number): void;
151
- strokeText(text: string, x: number, y: number): void;
152
- measureText(text: string): TextMetrics;
153
- arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterClockwise?: boolean): void;
154
- clip(): void;
155
- drawImage(image: CanvasImageSource | C2S, ...args: number[]): void;
156
- createPattern(image: HTMLCanvasElement | HTMLImageElement | C2S, _repetition: string | null): SVGCanvasPattern;
157
- setLineDash(dashArray: number[]): void;
158
- getLineDash(): number[];
159
- drawFocusIfNeeded(): void;
160
- createImageData(): ImageData;
161
- getImageData(): ImageData;
162
- putImageData(): void;
163
- setTransform(): void;
164
- globalCompositeOperation: GlobalCompositeOperation;
165
- }
166
- export {};
@@ -1,2 +0,0 @@
1
- export { C2S } from './canvas2svg';
2
- export type { C2SConfig, C2SContext, C2SVGExtensions } from './canvas2svg';
@@ -1,69 +0,0 @@
1
- /**
2
- * Feature cache with interval-tree-backed spatial queries.
3
- *
4
- * Port of igv.js `js/feature/featureCache.ts`. Features are grouped by
5
- * chromosome, sorted, chunked, and indexed via IntervalTree for O(log n + k)
6
- * range queries.
7
- *
8
- * Layer 1 (Data + Layout) — pure data structure, no DOM, no canvas.
9
- */
10
- import { IntervalTree } from './intervalTree';
11
- /** Minimal interface for features stored in the cache. */
12
- export interface CacheableFeature {
13
- chr: string;
14
- start: number;
15
- end: number;
16
- }
17
- /**
18
- * Range metadata describing what genomic region is fully cached.
19
- * When present, `containsRange()` delegates to this; when absent,
20
- * the cache is assumed to contain all features (e.g., whole-file load).
21
- */
22
- export interface CacheRange {
23
- contains(chr: string, start: number, end: number): boolean;
24
- }
25
- /** Index range pointing into the sorted allFeatures[chr] array. */
26
- interface IndexRange {
27
- start: number;
28
- end: number;
29
- }
30
- /**
31
- * Spatial feature cache backed by per-chromosome interval trees.
32
- *
33
- * Features are chunked (max(10, len/10) per chunk) to reduce tree size
34
- * while maintaining fast overlap queries. Matches igv.js FeatureCache.
35
- *
36
- * @typeParam F - Feature type, must have chr/start/end at minimum.
37
- */
38
- export declare class FeatureCache<F extends CacheableFeature> {
39
- /** Per-chromosome interval trees indexing feature chunks. */
40
- readonly treeMap: Record<string, IntervalTree<IndexRange>>;
41
- /** Optional range metadata for partial-cache validation. */
42
- readonly range: CacheRange | undefined;
43
- /** Total number of cached features across all chromosomes. */
44
- readonly count: number;
45
- /** All features grouped by chromosome, sorted by start. */
46
- readonly allFeatures: Record<string, F[]>;
47
- constructor(featureList?: F[], range?: CacheRange);
48
- /**
49
- * Check if the cache covers a genomic range.
50
- * Returns true when no range metadata is set (cache assumed complete)
51
- * or when the range metadata confirms coverage.
52
- */
53
- containsRange(chr: string, start: number, end: number): boolean;
54
- /**
55
- * Query features overlapping [start, end] on the given chromosome.
56
- * Returns features sorted by start position. O(log n + k) via interval tree.
57
- */
58
- queryFeatures(chr: string, start: number, end: number): F[];
59
- /**
60
- * Search all cached features matching a predicate.
61
- * Scans every feature across all chromosomes — O(n).
62
- */
63
- findFeatures(fn: (f: F) => boolean): F[];
64
- /**
65
- * Returns all features grouped by chromosome.
66
- */
67
- getAllFeatures(): Record<string, F[]>;
68
- }
69
- export {};