loom-browser 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/loom.esm.min.js.map +1 -1
  2. package/dist/types/commandDispatcher.d.ts +22 -1
  3. package/dist/types/index.d.ts +1 -1
  4. package/dist/types/remoteProtocol.d.ts +2 -0
  5. package/package.json +8 -2
  6. package/dist/igv.d.ts +0 -667
  7. package/dist/igv.esm.js +0 -76708
  8. package/dist/igv.esm.min.js +0 -26
  9. package/dist/igv.esm.min.js.map +0 -1
  10. package/dist/igv.js +0 -76716
  11. package/dist/igv.min.js +0 -26
  12. package/dist/igv.min.js.map +0 -1
  13. package/dist/loom.d.ts +0 -667
  14. package/dist/types/agent/index.d.ts +0 -4
  15. package/dist/types/agent/stateProjection.d.ts +0 -115
  16. package/dist/types/agent/trackSelector.d.ts +0 -31
  17. package/dist/types/baseTrackCanvas.d.ts +0 -62
  18. package/dist/types/bigwig/binaryParser.d.ts +0 -25
  19. package/dist/types/bigwig/bpTree.d.ts +0 -40
  20. package/dist/types/bigwig/bwReader.d.ts +0 -69
  21. package/dist/types/bigwig/chromTree.d.ts +0 -28
  22. package/dist/types/bigwig/inflate.d.ts +0 -9
  23. package/dist/types/bigwig/rangeReader.d.ts +0 -48
  24. package/dist/types/bigwig/rpTree.d.ts +0 -27
  25. package/dist/types/dataSources/dynseqDataSource.d.ts +0 -20
  26. package/dist/types/dynseqRenderer.d.ts +0 -37
  27. package/dist/types/geneRenderer.d.ts +0 -17
  28. package/dist/types/geneThemes.d.ts +0 -11
  29. package/dist/types/geneTrackCanvas.d.ts +0 -46
  30. package/dist/types/renderTheme.d.ts +0 -72
  31. package/dist/types/renderThemePresets.d.ts +0 -16
  32. package/dist/types/rulerRenderer.d.ts +0 -14
  33. package/dist/types/rulerTrackCanvas.d.ts +0 -32
  34. package/dist/types/src/bigwig/index.d.ts +0 -66
  35. package/dist/types/src/canvasProvider.d.ts +0 -36
  36. package/dist/types/src/commandDispatcher.d.ts +0 -220
  37. package/dist/types/src/contextMenu.d.ts +0 -64
  38. package/dist/types/src/contextMenuProvider.d.ts +0 -25
  39. package/dist/types/src/data/cachedSequence.d.ts +0 -19
  40. package/dist/types/src/data/ucscApi.d.ts +0 -21
  41. package/dist/types/src/data/ucscSequence.d.ts +0 -19
  42. package/dist/types/src/dataLifecycle.d.ts +0 -16
  43. package/dist/types/src/dataSources/bigWigDataSource.d.ts +0 -24
  44. package/dist/types/src/dataSources/dataSourceCacheKey.d.ts +0 -9
  45. package/dist/types/src/dataSources/featureSourceFactory.d.ts +0 -46
  46. package/dist/types/src/dataSources/geneDataSource.d.ts +0 -16
  47. package/dist/types/src/dataSources/gtxDataSource.d.ts +0 -42
  48. package/dist/types/src/dataSources/sequenceDataSource.d.ts +0 -15
  49. package/dist/types/src/dataSources/textFeatureSource.d.ts +0 -63
  50. package/dist/types/src/decode/bed.d.ts +0 -64
  51. package/dist/types/src/decode/bedpe.d.ts +0 -36
  52. package/dist/types/src/decode/exonUtils.d.ts +0 -29
  53. package/dist/types/src/decode/gff.d.ts +0 -58
  54. package/dist/types/src/decode/interact.d.ts +0 -19
  55. package/dist/types/src/decode/ucsc.d.ts +0 -56
  56. package/dist/types/src/events.d.ts +0 -23
  57. package/dist/types/src/export/canvas2svg.d.ts +0 -166
  58. package/dist/types/src/export/index.d.ts +0 -2
  59. package/dist/types/src/featureCache.d.ts +0 -69
  60. package/dist/types/src/formats/featureParser.d.ts +0 -72
  61. package/dist/types/src/formats/formatDetection.d.ts +0 -46
  62. package/dist/types/src/genome/chromAlias.d.ts +0 -46
  63. package/dist/types/src/genome/chromSizes.d.ts +0 -53
  64. package/dist/types/src/genome/genome.d.ts +0 -51
  65. package/dist/types/src/genomeBrowser.d.ts +0 -189
  66. package/dist/types/src/gtx/fetchCoordinator.d.ts +0 -34
  67. package/dist/types/src/gtx/gtxReader.d.ts +0 -144
  68. package/dist/types/src/gtx/index.d.ts +0 -40
  69. package/dist/types/src/gtx/zstdWasm.d.ts +0 -22
  70. package/dist/types/src/headlessGenomeBrowser.d.ts +0 -450
  71. package/dist/types/src/index.d.ts +0 -123
  72. package/dist/types/src/intervalTree.d.ts +0 -56
  73. package/dist/types/src/io/binaryParser.d.ts +0 -25
  74. package/dist/types/src/io/index.d.ts +0 -7
  75. package/dist/types/src/io/rangeReader.d.ts +0 -48
  76. package/dist/types/src/locusUtils.d.ts +0 -37
  77. package/dist/types/src/pack.d.ts +0 -41
  78. package/dist/types/src/popupProvider.d.ts +0 -22
  79. package/dist/types/src/remoteProtocol.d.ts +0 -81
  80. package/dist/types/src/roi/index.d.ts +0 -3
  81. package/dist/types/src/roi/roiRenderer.d.ts +0 -24
  82. package/dist/types/src/roi/roiSet.d.ts +0 -41
  83. package/dist/types/src/sequence/sequenceUtils.d.ts +0 -44
  84. package/dist/types/src/session.d.ts +0 -55
  85. package/dist/types/src/stateProjection.d.ts +0 -115
  86. package/dist/types/src/tabix/index.d.ts +0 -48
  87. package/dist/types/src/themes/index.d.ts +0 -3
  88. package/dist/types/src/themes/renderTheme.d.ts +0 -86
  89. package/dist/types/src/themes/renderThemePresets.d.ts +0 -16
  90. package/dist/types/src/trackRegistry.d.ts +0 -81
  91. package/dist/types/src/trackSelector.d.ts +0 -31
  92. package/dist/types/src/tracks/annotation/annotationRenderer.d.ts +0 -17
  93. package/dist/types/src/tracks/annotation/annotationThemes.d.ts +0 -11
  94. package/dist/types/src/tracks/annotation/annotationTrackCanvas.d.ts +0 -58
  95. package/dist/types/src/tracks/annotation/index.d.ts +0 -4
  96. package/dist/types/src/tracks/axis/axisRenderer.d.ts +0 -19
  97. package/dist/types/src/tracks/axis/index.d.ts +0 -1
  98. package/dist/types/src/tracks/baseTrackCanvas.d.ts +0 -113
  99. package/dist/types/src/tracks/dynseq/dynseqRenderer.d.ts +0 -38
  100. package/dist/types/src/tracks/dynseq/index.d.ts +0 -1
  101. package/dist/types/src/tracks/index.d.ts +0 -7
  102. package/dist/types/src/tracks/interaction/index.d.ts +0 -4
  103. package/dist/types/src/tracks/interaction/interactionRenderer.d.ts +0 -52
  104. package/dist/types/src/tracks/interaction/interactionTrackCanvas.d.ts +0 -54
  105. package/dist/types/src/tracks/ruler/index.d.ts +0 -3
  106. package/dist/types/src/tracks/ruler/rulerRenderer.d.ts +0 -25
  107. package/dist/types/src/tracks/ruler/rulerTrackCanvas.d.ts +0 -43
  108. package/dist/types/src/tracks/sequence/index.d.ts +0 -5
  109. package/dist/types/src/tracks/sequence/sequenceRenderer.d.ts +0 -34
  110. package/dist/types/src/tracks/sequence/sequenceThemes.d.ts +0 -11
  111. package/dist/types/src/tracks/sequence/sequenceTrackCanvas.d.ts +0 -67
  112. package/dist/types/src/tracks/wig/index.d.ts +0 -5
  113. package/dist/types/src/tracks/wig/wigRenderer.d.ts +0 -15
  114. package/dist/types/src/tracks/wig/wigSummary.d.ts +0 -31
  115. package/dist/types/src/tracks/wig/wigThemes.d.ts +0 -15
  116. package/dist/types/src/tracks/wig/wigTrackCanvas.d.ts +0 -82
  117. package/dist/types/src/types.d.ts +0 -885
  118. package/dist/types/src/ui/components/LoomBrowserShell.d.ts +0 -52
  119. package/dist/types/src/ui/components/LoomChromosomeSelect.d.ts +0 -18
  120. package/dist/types/src/ui/components/LoomContextMenu.d.ts +0 -39
  121. package/dist/types/src/ui/components/LoomExportControls.d.ts +0 -13
  122. package/dist/types/src/ui/components/LoomInputDialog.d.ts +0 -27
  123. package/dist/types/src/ui/components/LoomLocusInput.d.ts +0 -18
  124. package/dist/types/src/ui/components/LoomNavbar.d.ts +0 -15
  125. package/dist/types/src/ui/components/LoomPopup.d.ts +0 -32
  126. package/dist/types/src/ui/components/LoomWindowSize.d.ts +0 -14
  127. package/dist/types/src/ui/components/LoomZoomControls.d.ts +0 -10
  128. package/dist/types/src/ui/index.d.ts +0 -21
  129. package/dist/types/src/ui/themes.d.ts +0 -14
  130. package/dist/types/src/worker/nodeWorkerProvider.d.ts +0 -28
  131. package/dist/types/src/worker/taskHandler.d.ts +0 -15
  132. package/dist/types/src/worker/webWorkerProvider.d.ts +0 -51
  133. package/dist/types/src/worker/workerScript.d.ts +0 -11
  134. package/dist/types/src/workerProvider.d.ts +0 -76
  135. package/dist/types/tabix/bgzBlockLoader.d.ts +0 -60
  136. package/dist/types/tabix/bgzf.d.ts +0 -43
  137. package/dist/types/tabix/tabixIndex.d.ts +0 -85
  138. package/dist/types/tabix/tabixReader.d.ts +0 -60
  139. package/dist/types/tabix/virtualOffset.d.ts +0 -41
  140. package/dist/types/test/src/mockCanvasProvider.d.ts +0 -67
  141. package/dist/types/test/src/testBedDecode.d.ts +0 -1
  142. package/dist/types/test/src/testCanvas2SVG.d.ts +0 -7
  143. package/dist/types/test/src/testChromAlias.d.ts +0 -1
  144. package/dist/types/test/src/testCommandDispatcher.d.ts +0 -1
  145. package/dist/types/test/src/testData.d.ts +0 -7
  146. package/dist/types/test/src/testDataLifecycle.d.ts +0 -1
  147. package/dist/types/test/src/testDataSourceCacheKey.d.ts +0 -1
  148. package/dist/types/test/src/testDataSources.d.ts +0 -5
  149. package/dist/types/test/src/testDecodeUcsc.d.ts +0 -1
  150. package/dist/types/test/src/testEvents.d.ts +0 -1
  151. package/dist/types/test/src/testFeatureCache.d.ts +0 -1
  152. package/dist/types/test/src/testFeatureParser.d.ts +0 -1
  153. package/dist/types/test/src/testFormatDetection.d.ts +0 -1
  154. package/dist/types/test/src/testGffDecode.d.ts +0 -1
  155. package/dist/types/test/src/testHeadlessBrowser.d.ts +0 -1
  156. package/dist/types/test/src/testInteractionDecoder.d.ts +0 -1
  157. package/dist/types/test/src/testIntervalTree.d.ts +0 -1
  158. package/dist/types/test/src/testLocusUtils.d.ts +0 -1
  159. package/dist/types/test/src/testPack.d.ts +0 -1
  160. package/dist/types/test/src/testROI.d.ts +0 -1
  161. package/dist/types/test/src/testRemoteProtocol.d.ts +0 -1
  162. package/dist/types/test/src/testRenderTheme.d.ts +0 -1
  163. package/dist/types/test/src/testSVGExport.d.ts +0 -5
  164. package/dist/types/test/src/testSequence.d.ts +0 -1
  165. package/dist/types/test/src/testSession.d.ts +0 -1
  166. package/dist/types/test/src/testTrackSelector.d.ts +0 -1
  167. package/dist/types/test/src/testTrackSerialize.d.ts +0 -1
  168. package/dist/types/test/src/testWigSummary.d.ts +0 -1
  169. package/dist/types/test/src/testWorkerDispatch.d.ts +0 -9
  170. package/dist/types/tracks/gene/geneRenderer.d.ts +0 -17
  171. package/dist/types/tracks/gene/geneThemes.d.ts +0 -11
  172. package/dist/types/tracks/gene/geneTrackCanvas.d.ts +0 -58
  173. package/dist/types/tracks/gene/index.d.ts +0 -4
  174. package/dist/types/ui/components/IgvBrowserShell.d.ts +0 -52
  175. package/dist/types/ui/components/IgvChromosomeSelect.d.ts +0 -18
  176. package/dist/types/ui/components/IgvExportControls.d.ts +0 -13
  177. package/dist/types/ui/components/IgvLocusInput.d.ts +0 -18
  178. package/dist/types/ui/components/IgvNavbar.d.ts +0 -15
  179. package/dist/types/ui/components/IgvWindowSize.d.ts +0 -14
  180. package/dist/types/ui/components/IgvZoomControls.d.ts +0 -10
  181. package/dist/types/wigRenderer.d.ts +0 -15
  182. package/dist/types/wigSummary.d.ts +0 -31
  183. package/dist/types/wigThemes.d.ts +0 -15
  184. package/dist/types/wigTrackCanvas.d.ts +0 -46
  185. package/dist/types/worker/decodeWig.d.ts +0 -20
@@ -1,885 +0,0 @@
1
- import type { ChromSizes, CumulativeOffsets } from './genome/chromSizes';
2
- /** Genomic locus — a chromosome region. */
3
- export interface Locus {
4
- chr: string;
5
- start: number;
6
- end: number;
7
- }
8
- /** Axis information for the left-hand axis column in GenomeBrowser. */
9
- export interface AxisInfo {
10
- /** Track label (e.g., track name). */
11
- label?: string;
12
- /** Data range for quantitative tracks (min at bottom, max at top). */
13
- dataRange?: {
14
- min: number;
15
- max: number;
16
- };
17
- /** Color for the axis color strip indicator. */
18
- color?: string;
19
- /** If true, swap min/max label positions (used by GWAS/QTL tracks). */
20
- flipAxis?: boolean;
21
- /** If true, use logarithmic scale for tick placement and labels. */
22
- logScale?: boolean;
23
- /** Background color for the axis cell. Defaults to 'white'. */
24
- backgroundColor?: string;
25
- /** Foreground color for labels, ticks, and axis lines. Defaults to 'black'. */
26
- labelColor?: string;
27
- }
28
- /**
29
- * State + callbacks for a numeric (quantitative) track.
30
- *
31
- * Returned by `Track.getNumericState()` so the browser can build shared
32
- * menu items (set data range, log scale, autoscale) via `numericDataMenuItems()`.
33
- * Mirrors igv.js `TrackBase.numericDataMenuItems()` (js/trackBase.ts).
34
- */
35
- export interface NumericState {
36
- /** Whether autoscale is currently enabled. */
37
- autoscale: boolean;
38
- /** Whether log scale is currently enabled. Undefined = not supported. */
39
- logScale?: boolean;
40
- /** Current data range (min/max). */
41
- dataRange: {
42
- min: number;
43
- max: number;
44
- };
45
- /** Toggle autoscale on/off. */
46
- setAutoscale(enabled: boolean): void;
47
- /** Toggle log scale on/off. Only present if log scale is supported. */
48
- setLogScale?(enabled: boolean): void;
49
- /** Set the data range (min/max). */
50
- setDataRange(min: number, max: number): void;
51
- }
52
- /**
53
- * Generic track interface for canvas-based genomic tracks.
54
- * Each track manages its own canvas and knows how to render given a locus.
55
- */
56
- export interface Track {
57
- /** Track type identifier (e.g. 'gene', 'ruler'). */
58
- readonly type: string;
59
- /** The canvas element managed by this track. */
60
- readonly canvas: HTMLCanvasElement;
61
- /** Current locus. */
62
- readonly locus: Locus;
63
- /** Track height in CSS pixels (after last render). */
64
- readonly height: number;
65
- /** Update the locus and re-render. */
66
- setLocus(locus: Locus): void;
67
- /** Render the track at its current state. */
68
- render(): void;
69
- /** Suspend rendering — calls to render() will be deferred until resumeRendering(). */
70
- suspendRendering(): void;
71
- /** Resume rendering and flush any deferred render. */
72
- resumeRendering(): void;
73
- /** Attach to a container (appends canvas, sets up ResizeObserver). */
74
- attachTo(container: HTMLElement): void;
75
- /** Detach from container, clean up. */
76
- detach(): void;
77
- /** Set an error state to render on the track canvas. Pass null to clear. */
78
- setError(error: Error | null): void;
79
- /**
80
- * Hit-test at canvas-relative pixel coordinates.
81
- * Returns features at that point with pre-formatted popup data.
82
- * Default implementation returns [] (no interactive features).
83
- */
84
- hitTest(x: number, y: number): HitTestResult[];
85
- /**
86
- * Serialize this track's config for session save/restore.
87
- * Returns the serializable subset of config, diffed against theme defaults.
88
- * Each track type implements this with its own typed return value.
89
- */
90
- serializeConfig(theme: import('./themes/renderTheme').RenderTheme): TrackSessionConfig;
91
- /**
92
- * Return axis information for the left-hand label column.
93
- * Optional — tracks that return undefined get an empty axis cell.
94
- */
95
- getAxisInfo?(): AxisInfo | undefined;
96
- /**
97
- * Return context menu items for a right-click at canvas-relative coordinates.
98
- * Optional — tracks that return undefined get only common items (set height, remove).
99
- */
100
- getContextMenuItems?(x: number, y: number): ContextMenuItem[] | undefined;
101
- /**
102
- * Return current numeric/quantitative state and callbacks for shared menu items.
103
- *
104
- * When defined, the browser adds shared numeric menu items (set data range,
105
- * log scale, autoscale) via `numericDataMenuItems()`. Mirrors igv.js
106
- * `TrackBase.numericDataMenuItems()` (js/trackBase.ts lines 510-552)
107
- * which is shared by WigTrack, BAMTrack, QTLTrack, GCNVTrack, etc.
108
- *
109
- * Undefined = track is not numeric (no items added).
110
- */
111
- getNumericState?(): NumericState | undefined;
112
- /**
113
- * Visibility window in base pairs. When the viewport spans more than this
114
- * many bp, data fetching is skipped and "Zoom in to see features" is shown.
115
- * Mirrors igv.js TrackBase.visibilityWindow (js/trackViewport.ts checkZoomIn).
116
- *
117
- * - undefined or 0: no limit (always fetch)
118
- * - > 0: skip fetch when bpPerPixel * viewportWidth > visibilityWindow
119
- */
120
- /**
121
- * Render this track onto an arbitrary context (e.g. SVG export).
122
- * Unlike render(), this skips DPR scaling and canvas-element lifecycle —
123
- * it draws directly onto the provided context at the given dimensions.
124
- */
125
- renderToContext?(ctx: CanvasRenderingContext2D, width: number, height: number): void;
126
- visibilityWindow?: number;
127
- }
128
- /** A single exon within a gene feature. */
129
- export interface Exon {
130
- start: number;
131
- end: number;
132
- /** True if entire exon is untranslated region. */
133
- utr?: boolean;
134
- /** CDS start within this exon (when exon is partially UTR at the start). */
135
- cdStart?: number;
136
- /** CDS end within this exon (when exon is partially UTR at the end). */
137
- cdEnd?: number;
138
- /** Codon reading frame offset (0, 1, or 2). Undefined for non-coding exons. */
139
- readingFrame?: number;
140
- /** Exon number (1-based). Assigned by GFF assembly based on strand direction. */
141
- number?: number;
142
- }
143
- /** An annotation feature with optional exon structure and row assignment from packing. */
144
- export interface AnnotationFeature {
145
- start: number;
146
- end: number;
147
- strand?: '+' | '-';
148
- /** Gene name (e.g., "TP53"). */
149
- name?: string;
150
- /** Transcript ID (e.g., "NM_000546.6"). */
151
- id?: string;
152
- /** Chromosome (e.g., "chr17"). */
153
- chr?: string;
154
- /** CDS start position. Equal to cdsEnd for non-coding transcripts. */
155
- cdStart?: number;
156
- /** CDS end position. Equal to cdStart for non-coding transcripts. */
157
- cdEnd?: number;
158
- exons?: Exon[];
159
- /** Per-feature color (e.g., from BED itemRgb column 8). */
160
- color?: string;
161
- /** Score from source annotation. */
162
- score?: number;
163
- /** CDS start completeness: "cmpl", "incmpl", or "unk". */
164
- cdsStartStat?: string;
165
- /** CDS end completeness: "cmpl", "incmpl", or "unk". */
166
- cdsEndStat?: string;
167
- /** Assigned by pack() — the row this feature is placed in. */
168
- row?: number;
169
- }
170
- /** Display mode for gene features. */
171
- export type DisplayMode = 'COLLAPSED' | 'SQUISHED' | 'EXPANDED';
172
- /** Configuration controlling how annotation features (gene, BED, GFF, peaks) are rendered. */
173
- export interface AnnotationRenderConfig {
174
- displayMode: DisplayMode;
175
- featureHeight: number;
176
- margin: number;
177
- /** Row height in EXPANDED mode (featureHeight + label space + padding). */
178
- expandedRowHeight: number;
179
- /** Row height in SQUISHED mode. */
180
- squishedRowHeight: number;
181
- /** Pixel spacing between strand-direction arrows. */
182
- arrowSpacing: number;
183
- /** Default fill color for CDS exons. */
184
- color: string;
185
- /** Color for features on the opposite strand (if desired). */
186
- altColor?: string;
187
- /** Which feature property to use as the label. */
188
- labelField: string;
189
- /** CSS font string for labels, e.g. "10px sans-serif". */
190
- font: string;
191
- /** Whether to draw labels. */
192
- drawLabels: boolean;
193
- /** Label display mode — "SLANT" rotates labels 45°. */
194
- labelDisplayMode?: 'SLANT';
195
- /** UTR fill color. Defaults to main color. */
196
- utrColor?: string;
197
- /** Alt UTR color (for - strand when altColor is set). */
198
- altUtrColor?: string;
199
- /** Exon stroke outline color. No outline when undefined. */
200
- borderColor?: string;
201
- /** Exon outline width. Default: 0 (no outline). */
202
- borderWidth?: number;
203
- /** Rounded corner radius for exon rects. Default: 0 (square). */
204
- borderRadius?: number;
205
- /** Intron line color. Defaults to main color. */
206
- intronColor?: string;
207
- /** Intron line width. Default: 1. */
208
- intronLineWidth?: number;
209
- /** Dash pattern for intron lines, e.g. [3, 3]. Default: [] (solid). */
210
- intronDash?: number[];
211
- /** Strand arrow color on intron lines. Defaults to current stroke color. */
212
- arrowColor?: string;
213
- /** Strand arrow color inside exons. Default: 'white'. */
214
- arrowInExonColor?: string;
215
- /** Label text color. Defaults to feature color. */
216
- labelColor?: string;
217
- /** Background color behind labels. When set, fills behind labels instead of clearing to transparent. */
218
- labelBackground?: string;
219
- /** Separate CSS font string for labels. Defaults to `font`. */
220
- labelFont?: string;
221
- }
222
- /** Rendering context — describes the viewport being drawn into. */
223
- export interface RenderContext {
224
- /** Total pixel width of the canvas. */
225
- pixelWidth: number;
226
- /** Genomic coordinate of the left edge. */
227
- bpStart: number;
228
- /** Scale: base pairs per pixel. */
229
- bpPerPixel: number;
230
- /** Visible viewport width (may be less than pixelWidth for overscanning). */
231
- viewportWidth: number;
232
- }
233
- /** Returns sensible defaults for annotation feature rendering. */
234
- export declare function defaultAnnotationRenderConfig(): AnnotationRenderConfig;
235
- /** Configuration for ruler track rendering. */
236
- export interface RulerRenderConfig {
237
- /** Total height in CSS pixels. Default: 40. */
238
- height: number;
239
- /** Font for tick labels. Default: 'bold 10px sans-serif'. */
240
- font: string;
241
- /** Tick line color. Default: 'rgb(150, 150, 150)'. */
242
- tickColor: string;
243
- /** Label text color. Default: 'rgb(0, 0, 0)'. */
244
- labelColor: string;
245
- /** Baseline (bottom rule) color. Default: 'rgb(150, 150, 150)'. */
246
- baselineColor: string;
247
- /** Background color. Default: 'white'. */
248
- background: string;
249
- }
250
- /** A single wig data point: a chromosome region with a numeric value. */
251
- export interface WigFeature {
252
- chr: string;
253
- start: number;
254
- end: number;
255
- value: number;
256
- /** Human-readable summary description (e.g. "mean of 12 values"). */
257
- description?: string;
258
- /** DNA sequence for this region (populated for dynseq rendering). */
259
- sequence?: string;
260
- }
261
- /** Graph type for wig track rendering. */
262
- export type WigGraphType = 'bar' | 'line' | 'points' | 'dynseq';
263
- /** A function that fetches DNA sequence for a genomic region. */
264
- export type SequenceProvider = (locus: Locus, signal?: AbortSignal) => Promise<string>;
265
- /**
266
- * Chromosome metadata.
267
- * Mirrors igv.js Chromosome (js/genome/chromosome.ts).
268
- */
269
- export interface Chromosome {
270
- /** Canonical chromosome name (e.g., "chr1"). */
271
- name: string;
272
- /** Length in base pairs. */
273
- bpLength: number;
274
- /** Sort order (chr1=0, chr2=1, ..., chrX=22, chrY=23, chrM=24). */
275
- order: number;
276
- }
277
- /**
278
- * Genome assembly providing chromosome metadata and optional sequence access.
279
- *
280
- * Mirrors igv.js Genome (js/genome/genome.ts) — the central object that
281
- * provides chromosome sizes, coordinate conversion, and sequence retrieval.
282
- * In our architecture this is a Layer 1 (Data + Layout) interface: pure data,
283
- * no DOM, no canvas.
284
- */
285
- export interface Genome {
286
- /** Genome identifier (e.g., "hg38", "mm10"). */
287
- readonly id: string;
288
- /** Human-readable name (e.g., "Human (GRCh38/hg38)"). */
289
- readonly name?: string;
290
- /** Ordered main chromosome names (chr1-22, X, Y, M). */
291
- readonly chromosomeNames: string[];
292
- /** Full chromosome sizes record (chr → bp length). */
293
- readonly chromSizes: ChromSizes;
294
- /** Precomputed cumulative offsets for whole genome view. */
295
- readonly cumulativeOffsets: CumulativeOffsets;
296
- /** Get chromosome metadata by name. Returns undefined if not found. */
297
- getChromosome(name: string): Chromosome | undefined;
298
- /** Get chromosome length by name. Returns undefined if not found. */
299
- getChromosomeLength(name: string): number | undefined;
300
- /** Optional sequence provider. Undefined when genome has no sequence source. */
301
- readonly sequence?: SequenceProvider;
302
- /** Resolve a chromosome alias to the canonical name. Returns the input unchanged if no alias found. */
303
- getChromosomeName(alias: string): string;
304
- /** Get the full alias record for a chromosome. Returns undefined if not found. */
305
- getAliasRecord(chr: string): ChromAliasRecord | undefined;
306
- }
307
- /**
308
- * Chromosome alias record mapping naming conventions to chromosome names.
309
- * `.chr` is always the canonical name in the genome's own namespace.
310
- *
311
- * Mirrors igv.js alias records (js/genome/chromAliasDefaults.ts) which use
312
- * `Record<string, string>` with named keys like "ncbi", "ucsc", "_chrprefix_".
313
- */
314
- export interface ChromAliasRecord {
315
- /** Canonical chromosome name in this genome. Always present. */
316
- chr: string;
317
- /** Additional naming convention mappings (e.g., ncbi, ucsc, assembly, _chrprefix_). */
318
- [nameSet: string]: string;
319
- }
320
- /**
321
- * Configuration for creating a Genome.
322
- *
323
- * Mirrors a subset of igv.js GenomeConfig (js/types/genome.ts).
324
- * Supports: built-in IDs, inline chromSizes, URL-based chromSizes,
325
- * and optional sequence providers.
326
- */
327
- export interface GenomeConfig {
328
- /** Genome ID. Required for built-in genomes (e.g., "hg38"). */
329
- id?: string;
330
- /** Human-readable name. */
331
- name?: string;
332
- /** Inline chromosome sizes. Mutually exclusive with chromSizesURL. */
333
- chromSizes?: ChromSizes;
334
- /** URL to a chrom.sizes file (tab-separated: name\tlength). */
335
- chromSizesURL?: string;
336
- /** Sequence provider function. When set, genome.sequence is available. */
337
- sequenceProvider?: SequenceProvider;
338
- /**
339
- * UCSC genome name for automatic sequence API access (e.g., "hg38").
340
- * Defaults to `id` when not set. When a built-in genome is used,
341
- * a CachedSequence wrapping the UCSC API is created automatically.
342
- */
343
- ucscGenome?: string;
344
- /** URL to a chromosome alias file (tab-delimited). For future file-based alias loading. */
345
- chromAliasURL?: string;
346
- }
347
- /** Aggregation function for resolution-aware data summarization. */
348
- export type WindowFunction = 'mean' | 'min' | 'max' | 'none';
349
- /** A horizontal guide line drawn at a specific data value. */
350
- export interface WigGuideLine {
351
- /** The data value at which to draw the line. */
352
- y: number;
353
- /** Line color. */
354
- color: string;
355
- /** Whether to draw a dashed line. */
356
- dotted: boolean;
357
- }
358
- /** Color value for wig features: a static CSS color string or a function mapping value → color. */
359
- export type WigColorValue = string | ((value: number) => string);
360
- /** Configuration controlling how wig features are rendered. */
361
- export interface WigRenderConfig {
362
- /** Track height in CSS pixels. Default: 50. */
363
- height: number;
364
- /** Graph rendering style. Default: 'bar'. */
365
- graphType: WigGraphType;
366
- /** Data aggregation when zoomed out. Default: 'mean'. */
367
- windowFunction: WindowFunction;
368
- /** Y-axis data range. Features are scaled to this range. */
369
- dataRange: {
370
- min: number;
371
- max: number;
372
- };
373
- /** Whether to auto-compute dataRange from features. Default: true. */
374
- autoscale: boolean;
375
- /** Fill/stroke color for positive values. String or (value) => color function. Default: 'rgb(150, 150, 150)'. */
376
- color: WigColorValue;
377
- /** Fill/stroke color for negative values. String or (value) => color function. Uses `color` when undefined. */
378
- altColor?: WigColorValue;
379
- /** Alpha transparency for feature colors (0–1). Applied on top of resolved color. Default: undefined (fully opaque). */
380
- alpha?: number;
381
- /** Flip the y-axis (values grow downward). Default: false. */
382
- flipAxis: boolean;
383
- /** Use logarithmic scale for the y-axis. Default: false. */
384
- logScale: boolean;
385
- /** Color for the zero-line baseline. Default: 'lightGray'. */
386
- baselineColor: string;
387
- /** Color for out-of-range value indicators. Default: 'rgb(255, 32, 255)'. */
388
- overflowColor: string;
389
- /** Point diameter in pixels (for 'points' graphType). Default: 3. */
390
- pointSize: number;
391
- /** Background color. Default: '#ffffff'. */
392
- background: string;
393
- /** Optional horizontal guide lines. */
394
- guideLines?: WigGuideLine[];
395
- /** Nucleotide colors for dynseq rendering. Keys: A, C, G, T, N. */
396
- nucleotideColors?: Record<string, string>;
397
- /** Multiply all feature values by this factor before rendering. Default: undefined (no scaling). */
398
- scaleFactor?: number;
399
- /**
400
- * Normalization factor applied to all feature values (e.g. reads-per-million from TDF).
401
- * When set, all values are multiplied by this factor before scaleFactor is applied.
402
- * Typically provided by the data source rather than set manually.
403
- */
404
- normalizationFactor?: number;
405
- /** Whether to draw min/max data range labels on the track. Default: true. */
406
- showDataRange: boolean;
407
- /** Color for data range label text. Default: palette.foreground. */
408
- labelColor: string;
409
- /** Font for data range labels. Default: 'bold 9px sans-serif'. */
410
- labelFont: string;
411
- /** Track name to display as an overlay label (igv.js style, top-left). */
412
- trackName?: string;
413
- }
414
- /** Sequence type for the sequence track. */
415
- export type SequenceType = 'dna' | 'rna' | 'prot';
416
- /** Configuration controlling how sequence features are rendered. */
417
- export interface SequenceRenderConfig {
418
- /** Sequence type (affects coloring). Default: 'dna'. */
419
- sequenceType: SequenceType;
420
- /** Show reverse complement. Default: false. */
421
- reversed: boolean;
422
- /** Show three-frame amino acid translation. Default: false. */
423
- frameTranslate: boolean;
424
- /** Override color for all bases. When set, ignores nucleotide color map. */
425
- color?: string;
426
- /** Background color. Default: '#ffffff'. */
427
- background: string;
428
- /** Nucleotide color mapping (A, C, G, T, N). Used when sequenceType is 'dna'. */
429
- nucleotideColors: Record<string, string>;
430
- /** Default color for RNA/protein bases. Default: 'rgb(0, 0, 150)'. */
431
- nonDnaColor: string;
432
- /** Track height without translation frames. Default: 25. */
433
- defaultHeight: number;
434
- /** Track height with translation frames. Default: 115. */
435
- translatedHeight: number;
436
- /** Height of the sequence row. Default: 15. */
437
- sequenceHeight: number;
438
- /** Height of each translation frame row. Default: 25. */
439
- frameHeight: number;
440
- /** Border/padding between elements. Default: 5. */
441
- frameBorder: number;
442
- /** Alternating background color 1 for translation frames. Default: 'rgb(160,160,160)'. */
443
- frameColor1: string;
444
- /** Alternating background color 2 for translation frames. Default: 'rgb(224,224,224)'. */
445
- frameColor2: string;
446
- /** Stop codon highlight color. Default: 'rgb(255, 0, 0)'. */
447
- stopCodonColor: string;
448
- /** Start codon (M) highlight color. Default: 'rgb(0, 153, 0)'. */
449
- startCodonColor: string;
450
- /** Use fillText instead of strokeText for base and amino acid labels. Default: false (strokeText, matching igv.js). */
451
- useFillText: boolean;
452
- /** Color for amino acid labels in translation frames. Default: '#000000'. */
453
- frameLabelColor: string;
454
- /** Color for amino acid labels on start/stop codon backgrounds. Default: same as frameLabelColor. */
455
- codonLabelColor?: string;
456
- /** Font for amino acid labels in translation frames. Default: 'bold 10px sans-serif'. */
457
- frameFont: string;
458
- /** Border radius for start/stop codon highlights (roundRect). 0 = sharp rectangles. Default: 0. */
459
- codonBorderRadius: number;
460
- }
461
- /** Returns sensible defaults for sequence rendering. */
462
- export declare function defaultSequenceRenderConfig(): SequenceRenderConfig;
463
- /** Returns sensible defaults for wig rendering. */
464
- export declare function defaultWigRenderConfig(): WigRenderConfig;
465
- /** An interaction feature representing a pairwise genomic contact (Hi-C, ChIA-PET, etc.). */
466
- export interface InteractionFeature {
467
- /** Bounding chromosome (same as chr1 for intra-chr; set per-copy for inter-chr). */
468
- chr: string;
469
- /** Bounding start (min of start1, start2 for intra-chr). */
470
- start: number;
471
- /** Bounding end (max of end1, end2 for intra-chr). */
472
- end: number;
473
- /** First region chromosome. */
474
- chr1: string;
475
- /** First region start. */
476
- start1: number;
477
- /** First region end. */
478
- end1: number;
479
- /** Second region chromosome. */
480
- chr2: string;
481
- /** Second region start. */
482
- start2: number;
483
- /** Second region end. */
484
- end2: number;
485
- name?: string;
486
- score?: number;
487
- value?: number;
488
- color?: string;
489
- strand1?: string;
490
- strand2?: string;
491
- type?: string;
492
- thickness?: number;
493
- extras?: string[];
494
- /** True if this is a duplicated copy of an inter-chr feature (for the other chromosome). */
495
- dup?: boolean;
496
- }
497
- /** Arc orientation: arcs open upward or downward. */
498
- export type ArcOrientation = 'UP' | 'DOWN';
499
- /** Display mode for interaction arcs. */
500
- export type ArcDisplayMode = 'nested' | 'proportional';
501
- /** Configuration controlling how interaction features are rendered as arcs. */
502
- export interface InteractionRenderConfig {
503
- /** Track height in CSS pixels. Default: 250. */
504
- height: number;
505
- /** Arc direction. Default: 'UP'. */
506
- arcOrientation: ArcOrientation;
507
- /** Display mode. Default: 'nested'. */
508
- displayMode: ArcDisplayMode;
509
- /** Show small rectangles at feature endpoints. Default: true. */
510
- showBlocks: boolean;
511
- /** Height of endpoint rectangles in pixels. Default: 3. */
512
- blockHeight: number;
513
- /** Arc stroke width in pixels. Default: 1. */
514
- thickness: number;
515
- /** Default arc color. Default: 'rgb(180,25,137)'. */
516
- color: string;
517
- /** Fill alpha for arcs. Default: 0.02. */
518
- alpha: number;
519
- /** Use log scale for proportional arc heights. Default: true. */
520
- logScale: boolean;
521
- /** Background color. Default: '#ffffff'. */
522
- background: string;
523
- /** Font for inter-chromosome labels. Default: '8px sans-serif'. */
524
- font: string;
525
- /** Whether to use score-based shading. Default: false. */
526
- useScore: boolean;
527
- }
528
- /** Returns sensible defaults for interaction rendering. */
529
- export declare function defaultInteractionRenderConfig(): InteractionRenderConfig;
530
- /** A single item in a feature popup (key-value pair). */
531
- export interface PopupDataItem {
532
- name: string;
533
- value: string | number;
534
- /** Draw a border above this item (visual section separator). */
535
- borderTop?: boolean;
536
- }
537
- /** Result of a hit test at a pixel coordinate within a track canvas. */
538
- export interface HitTestResult<F = unknown> {
539
- feature: F;
540
- popupData: PopupDataItem[];
541
- }
542
- /** Payload for trackclick / trackhover browser events. */
543
- export interface TrackInteractionEvent {
544
- track: Track;
545
- /** Genomic position at the interaction point. */
546
- genomicLocation: number;
547
- /** Features found at the interaction point. */
548
- features: unknown[];
549
- /** Pre-formatted popup data items from all hit features. */
550
- popupData: PopupDataItem[];
551
- /** Canvas-relative X in CSS pixels. */
552
- x: number;
553
- /** Canvas-relative Y in CSS pixels. */
554
- y: number;
555
- }
556
- /** A single Region of Interest — a highlighted genomic region spanning all tracks. */
557
- export interface ROI {
558
- /** Unique identifier. */
559
- id: string;
560
- /** Chromosome name. */
561
- chr: string;
562
- /** Start position (0-based). */
563
- start: number;
564
- /** End position. */
565
- end: number;
566
- /** Display name. */
567
- name?: string;
568
- /** Description text. */
569
- description?: string;
570
- /** Fill color (CSS color with alpha). */
571
- color?: string;
572
- }
573
- /** Serializable config for an ROI set — used in SessionConfig. */
574
- export interface ROISetConfig {
575
- /** Set display name. */
576
- name: string;
577
- /** Default color for ROIs in this set. */
578
- color?: string;
579
- /** Whether this set was created by the user (vs loaded from config). */
580
- isUserDefined?: boolean;
581
- /** The ROI features in this set. */
582
- features: ROI[];
583
- }
584
- /** Payload for ROI interaction events (click, hover). */
585
- export interface ROIInteractionEvent {
586
- /** The ROI that was interacted with. */
587
- roi: ROI;
588
- /** Genomic position at the interaction point. */
589
- genomicLocation: number;
590
- /** Container-relative X in CSS pixels. */
591
- x: number;
592
- /** Container-relative Y in CSS pixels. */
593
- y: number;
594
- }
595
- /** A single item in a track context menu. */
596
- export interface ContextMenuItem {
597
- /** Display label text. */
598
- label: string;
599
- /** Action to execute when clicked. */
600
- action?: () => void;
601
- /** Item type. Default: 'action'. */
602
- type?: 'action' | 'checkbox' | 'separator';
603
- /** For checkbox items: whether currently checked. */
604
- checked?: boolean;
605
- /** Submenu items (one level of nesting). */
606
- children?: ContextMenuItem[];
607
- /** If true, item is grayed out and not clickable. */
608
- disabled?: boolean;
609
- }
610
- /** Payload for the trackcontextmenu browser event. */
611
- export interface TrackContextMenuEvent {
612
- track: Track;
613
- /** Genomic position at the right-click point. */
614
- genomicLocation: number;
615
- /** Features found at the right-click point. */
616
- features: unknown[];
617
- /** Menu items contributed by the track. */
618
- trackItems: ContextMenuItem[];
619
- /** Common menu items (set height, remove, etc). */
620
- commonItems: ContextMenuItem[];
621
- /** Canvas-relative X in CSS pixels. */
622
- x: number;
623
- /** Canvas-relative Y in CSS pixels. */
624
- y: number;
625
- }
626
- /** Generic async data fetcher for a track. */
627
- export interface DataSource<F = unknown> {
628
- /**
629
- * Fetch features for a genomic region at a given resolution.
630
- * @param locus - The buffered region to fetch (already padded by the browser)
631
- * @param bpPerPixel - Current resolution for zoom-level selection
632
- * @param signal - AbortSignal for cancellation of stale requests
633
- */
634
- fetch(locus: Locus, bpPerPixel: number, signal: AbortSignal): Promise<F[]>;
635
- }
636
- /** Cached features for a track, stored and managed by GenomeBrowser. */
637
- export interface FeatureCacheEntry<F = unknown> {
638
- locus: Locus;
639
- bpPerPixel: number;
640
- features: F[];
641
- }
642
- /** A track that can receive features from a DataSource. */
643
- export interface DataDrivenTrack<F = unknown> extends Track {
644
- setFeatures(features: F[]): void;
645
- }
646
- /** Returns sensible defaults for ruler rendering. */
647
- export declare function defaultRulerRenderConfig(): RulerRenderConfig;
648
- /** Base for all track feature summaries. */
649
- interface FeatureSummaryBase {
650
- /** Number of features in the current view. */
651
- featureCount: number;
652
- }
653
- /** Summary for quantitative signal tracks (BigWig, GTX). */
654
- export interface WigFeatureSummary extends FeatureSummaryBase {
655
- /** Signal range in the current view. */
656
- signalRange: {
657
- min: number;
658
- max: number;
659
- };
660
- }
661
- /** Summary for annotation/gene/BED tracks. */
662
- export interface AnnotationFeatureSummary extends FeatureSummaryBase {
663
- /** Unique names of visible features (genes, peaks, etc.), up to a limit. */
664
- featureNames: string[];
665
- /** Number of display rows (packing density indicator). */
666
- packingDepth: number;
667
- }
668
- /** Summary for interaction (arc/BEDPE) tracks. */
669
- export interface InteractionFeatureSummary extends FeatureSummaryBase {
670
- /** Value range of visible interactions. */
671
- valueRange: {
672
- min: number;
673
- max: number;
674
- };
675
- }
676
- /** Union of all track feature summaries. */
677
- export type TrackFeatureSummary = WigFeatureSummary | AnnotationFeatureSummary | InteractionFeatureSummary;
678
- /** First-party session config — fully typed, JSON-serializable browser state. */
679
- export interface SessionConfig {
680
- version: string;
681
- locus: Locus;
682
- viewportWidth?: number;
683
- theme?: Partial<import('./themes/renderTheme').RenderTheme>;
684
- /** Genome config for restoring the assembly. */
685
- genome?: GenomeConfig;
686
- tracks: TrackSessionConfig[];
687
- /** ROI sets for region highlighting. */
688
- rois?: ROISetConfig[];
689
- }
690
- /** Discriminated union — each track type has its own typed config shape. */
691
- export type TrackSessionConfig = WigTrackSessionConfig | AnnotationTrackSessionConfig | RulerTrackSessionConfig | SequenceTrackSessionConfig | InteractionTrackSessionConfig;
692
- interface TrackSessionBase {
693
- /** Stable string identifier for the track. Auto-generated if not provided. */
694
- id?: string;
695
- name?: string;
696
- order?: number;
697
- /** Arbitrary key-value metadata (e.g., assay, biosample, tissue). */
698
- metadata?: Record<string, string>;
699
- }
700
- export interface WigTrackSessionConfig extends TrackSessionBase {
701
- type: 'wig';
702
- dataSource?: DataSourceConfig;
703
- config?: WigSessionOverrides;
704
- }
705
- export interface AnnotationTrackSessionConfig extends TrackSessionBase {
706
- type: 'annotation';
707
- dataSource?: DataSourceConfig;
708
- config?: AnnotationSessionOverrides;
709
- }
710
- export interface RulerTrackSessionConfig extends TrackSessionBase {
711
- type: 'ruler';
712
- config?: RulerSessionOverrides;
713
- }
714
- export interface SequenceTrackSessionConfig extends TrackSessionBase {
715
- type: 'sequence';
716
- config?: SequenceSessionOverrides;
717
- }
718
- export interface InteractionTrackSessionConfig extends TrackSessionBase {
719
- type: 'interact';
720
- dataSource?: DataSourceConfig;
721
- config?: InteractionSessionOverrides;
722
- }
723
- /** Serializable subset of WigRenderConfig — functions replaced with strings. */
724
- export type WigSessionOverrides = Omit<Partial<WigRenderConfig>, 'color' | 'altColor'> & {
725
- color?: string;
726
- altColor?: string;
727
- };
728
- /** Serializable subset of AnnotationRenderConfig (all fields are already serializable). */
729
- export type AnnotationSessionOverrides = Partial<AnnotationRenderConfig>;
730
- /** Serializable subset of RulerRenderConfig (all fields are already serializable). */
731
- export type RulerSessionOverrides = Partial<RulerRenderConfig>;
732
- /** Serializable subset of SequenceRenderConfig (all fields are already serializable). */
733
- export type SequenceSessionOverrides = Partial<SequenceRenderConfig>;
734
- /** Serializable subset of InteractionRenderConfig (all fields are already serializable). */
735
- export type InteractionSessionOverrides = Partial<InteractionRenderConfig>;
736
- /** Discriminated union for data source reconstruction. */
737
- export type DataSourceConfig = BigWigDataSourceConfig | GtxDataSourceConfig | UCSCDataSourceConfig | TextDataSourceConfig;
738
- export interface BigWigDataSourceConfig {
739
- type: 'bigwig';
740
- url: string;
741
- windowFunction?: WindowFunction;
742
- }
743
- export interface GtxDataSourceConfig {
744
- type: 'gtx';
745
- url: string;
746
- experimentId: string;
747
- windowFunction?: WindowFunction;
748
- }
749
- export interface UCSCDataSourceConfig {
750
- type: 'ucsc';
751
- genome?: string;
752
- track?: string;
753
- }
754
- export interface TextDataSourceConfig {
755
- type: 'text';
756
- url: string;
757
- /** Explicit format override. When absent, inferred from URL. */
758
- format?: TextFileFormat;
759
- /** Index URL override. Defaults to url + '.tbi'. */
760
- indexURL?: string;
761
- /** Whether the file is indexed (tabix). When absent, auto-detected from indexURL presence. */
762
- indexed?: boolean;
763
- }
764
- /** Strand value for genomic features. */
765
- export type Strand = '+' | '-' | '.';
766
- /** Known text genomic file formats supported by the format detection system. */
767
- export type TextFileFormat = 'bed' | 'narrowpeak' | 'broadpeak' | 'peaks' | 'gappedpeak' | 'bedgraph' | 'wig' | 'gff3' | 'gff' | 'gtf' | 'genepred' | 'genepredext' | 'refgene' | 'refflat' | 'ensgene' | 'vcf' | 'bedpe' | 'interact' | 'longrange' | 'seg' | 'mut' | 'maf' | 'gwas' | 'snp' | 'rmsk';
768
- /**
769
- * Feature decoded from BED format (3-12 columns).
770
- *
771
- * Structurally compatible with GeneFeature for rendering on the gene track
772
- * (shares chr, start, end, strand, name, exons, cdStart, cdEnd).
773
- */
774
- export interface BedFeature {
775
- chr: string;
776
- start: number;
777
- end: number;
778
- name?: string;
779
- score?: number;
780
- strand?: Strand;
781
- cdStart?: number;
782
- cdEnd?: number;
783
- color?: string;
784
- exons?: Exon[];
785
- /** Row assigned by feature packing. */
786
- row?: number;
787
- /** Extra attributes from GFF-style column 4 (when gffTags is true). */
788
- attributes?: Record<string, string>;
789
- /** Line thickness (from #columns directive). */
790
- thickness?: number;
791
- }
792
- /** Peak feature from narrowPeak or broadPeak ENCODE formats. */
793
- export interface PeakFeature extends BedFeature {
794
- signal?: number;
795
- pValue?: number;
796
- qValue?: number;
797
- /** Peak point-source position (narrowPeak only, column 10). */
798
- peak?: number;
799
- }
800
- /** BedGraph feature — a BED3+value for quantitative data. */
801
- export interface BedGraphFeature {
802
- chr: string;
803
- start: number;
804
- end: number;
805
- value: number;
806
- }
807
- /** A single GFF/GTF record before transcript assembly. */
808
- export interface GFFRecord {
809
- chr: string;
810
- start: number;
811
- end: number;
812
- source: string;
813
- type: string;
814
- score?: number;
815
- strand?: Strand;
816
- phase?: number;
817
- /** Raw attribute string from column 9. */
818
- attributeString: string;
819
- /** Parsed attribute key-value pairs (lazily populated). */
820
- attributes: Record<string, string>;
821
- /** ID extracted from attributes. */
822
- id?: string;
823
- /** Parent ID extracted from attributes. */
824
- parent?: string;
825
- color?: string;
826
- }
827
- /**
828
- * Assembled GFF transcript — a gene/transcript with exon structure.
829
- * Built by combining GFFRecords sharing parent/ID relationships.
830
- *
831
- * Structurally compatible with GeneFeature for rendering on the gene track
832
- * (shares chr, start, end, strand, name, exons, cdStart, cdEnd).
833
- */
834
- export interface GFFFeature {
835
- chr: string;
836
- start: number;
837
- end: number;
838
- name?: string;
839
- id?: string;
840
- strand?: '+' | '-';
841
- type: string;
842
- source: string;
843
- score?: number;
844
- cdStart?: number;
845
- cdEnd?: number;
846
- exons?: Exon[];
847
- /** Row assigned by feature packing. */
848
- row?: number;
849
- /** All attributes from the top-level record. */
850
- attributes?: Record<string, string>;
851
- color?: string;
852
- }
853
- /** Union of all feature types produced by text format decoders. */
854
- export type TextFeature = BedFeature | PeakFeature | BedGraphFeature | GFFFeature;
855
- /** Minimal igv.js session shape — just enough to parse/produce sessions. */
856
- export interface IgvSessionObject {
857
- version?: string;
858
- reference?: IgvReferenceConfig;
859
- genome?: string;
860
- locus?: string | string[];
861
- tracks?: IgvTrackConfig[];
862
- }
863
- export interface IgvReferenceConfig {
864
- id?: string;
865
- fastaURL?: string;
866
- indexURL?: string;
867
- }
868
- export interface IgvTrackConfig {
869
- type?: string;
870
- format?: string;
871
- url?: string;
872
- indexURL?: string;
873
- name?: string;
874
- color?: string;
875
- altColor?: string;
876
- height?: number;
877
- min?: number;
878
- max?: number;
879
- autoscale?: boolean;
880
- displayMode?: string;
881
- order?: number;
882
- visibilityWindow?: number;
883
- windowFunction?: string;
884
- }
885
- export {};