oncoprintjs 5.0.3 → 6.0.1

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 (100) hide show
  1. package/README.md +34 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.es.js +14746 -0
  4. package/dist/index.es.js.map +1 -0
  5. package/dist/index.js +14760 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/js/CachedProperty.d.ts +10 -10
  8. package/dist/js/binarysearch.d.ts +1 -1
  9. package/dist/js/bucketsort.d.ts +16 -16
  10. package/dist/js/clustering.d.ts +14 -14
  11. package/dist/js/extractrgba.d.ts +4 -4
  12. package/dist/js/haselementsininterval.d.ts +1 -1
  13. package/dist/js/heatmapcolors.d.ts +5 -4
  14. package/dist/js/makesvgelement.d.ts +1 -1
  15. package/dist/js/modelutils.d.ts +7 -7
  16. package/dist/js/oncoprint.d.ts +168 -170
  17. package/dist/js/oncoprintheaderview.d.ts +23 -22
  18. package/dist/js/oncoprintlabelview.d.ts +79 -78
  19. package/dist/js/oncoprintlegendrenderer.d.ts +32 -31
  20. package/dist/js/oncoprintminimapview.d.ts +69 -68
  21. package/dist/js/oncoprintmodel.d.ts +403 -398
  22. package/dist/js/oncoprintruleset.d.ts +176 -177
  23. package/dist/js/oncoprintshape.d.ts +67 -67
  24. package/dist/js/oncoprintshapetosvg.d.ts +2 -2
  25. package/dist/js/oncoprintshapetovertexes.d.ts +5 -5
  26. package/dist/js/oncoprinttooltip.d.ts +23 -22
  27. package/dist/js/oncoprinttrackinfoview.d.ts +40 -39
  28. package/dist/js/oncoprinttrackoptionsview.d.ts +58 -57
  29. package/dist/js/oncoprintwebglcellview.d.ts +168 -167
  30. package/dist/js/oncoprintzoomslider.d.ts +28 -27
  31. package/dist/js/polyfill.d.ts +4 -4
  32. package/dist/js/precomputedcomparator.d.ts +13 -13
  33. package/dist/js/shaders.d.ts +2 -2
  34. package/dist/js/svgfactory.d.ts +24 -23
  35. package/dist/js/utils.d.ts +16 -16
  36. package/dist/js/workers/clustering-worker.d.ts +19 -20
  37. package/dist/test/gradientCategoricalRuleset.spec.d.ts +1 -1
  38. package/dist/test/monolith.spec.d.ts +1 -1
  39. package/jest.config.ts +2 -0
  40. package/package.json +20 -26
  41. package/rollup.config.ts +14 -0
  42. package/rules/geneticrules.ts +344 -305
  43. package/server.js +11 -0
  44. package/src/img/menudots.svg +9 -9
  45. package/src/img/zoomtofit.svg +12 -12
  46. package/src/index.tsx +13 -0
  47. package/src/js/CachedProperty.ts +6 -7
  48. package/src/js/binarysearch.ts +8 -3
  49. package/src/js/bucketsort.ts +89 -47
  50. package/src/js/clustering.ts +22 -10
  51. package/src/js/extractrgba.ts +16 -12
  52. package/src/js/haselementsininterval.ts +8 -4
  53. package/src/js/heatmapcolors.ts +515 -515
  54. package/src/js/main.js +1 -1
  55. package/src/js/makesvgelement.ts +2 -2
  56. package/src/js/modelutils.ts +11 -8
  57. package/src/js/oncoprint.ts +706 -385
  58. package/src/js/oncoprintheaderview.ts +165 -125
  59. package/src/js/oncoprintlabelview.ts +388 -170
  60. package/src/js/oncoprintlegendrenderer.ts +203 -72
  61. package/src/js/oncoprintminimapview.ts +965 -423
  62. package/src/js/oncoprintmodel.ts +905 -532
  63. package/src/js/oncoprintruleset.ts +694 -379
  64. package/src/js/oncoprintshape.ts +240 -97
  65. package/src/js/oncoprintshapetosvg.ts +77 -26
  66. package/src/js/oncoprintshapetovertexes.ts +153 -48
  67. package/src/js/oncoprinttooltip.ts +58 -27
  68. package/src/js/oncoprinttrackinfoview.ts +115 -59
  69. package/src/js/oncoprinttrackoptionsview.ts +354 -187
  70. package/src/js/oncoprintwebglcellview.ts +951 -415
  71. package/src/js/oncoprintzoomslider.ts +172 -107
  72. package/src/js/polyfill.ts +7 -3
  73. package/src/js/precomputedcomparator.ts +133 -50
  74. package/src/js/shaders.ts +2 -4
  75. package/src/js/svgfactory.ts +128 -73
  76. package/src/js/utils.ts +51 -31
  77. package/src/js/workers/clustering-worker.ts +50 -42
  78. package/src/test/gradientCategoricalRuleset.spec.ts +55 -38
  79. package/src/test/monolith.spec.ts +718 -285
  80. package/test/generate_data.py +108 -0
  81. package/test/glyphmap-data.js +1041 -0
  82. package/test/heatmap-data.js +1027 -0
  83. package/test/index.html +21 -0
  84. package/test/oncoprint-glyphmap.js +79 -0
  85. package/test/oncoprint-heatmap.js +123 -0
  86. package/tsconfig.json +4 -10
  87. package/tsconfig.test.json +11 -0
  88. package/.idea/misc.xml +0 -6
  89. package/.idea/modules.xml +0 -8
  90. package/.idea/oncoprintjs.iml +0 -12
  91. package/.idea/vcs.xml +0 -6
  92. package/.idea/workspace.xml +0 -105
  93. package/dist/.gitkeep +0 -0
  94. package/dist/js/minimaputils.d.ts +0 -0
  95. package/dist/oncoprint.bundle.js +0 -44313
  96. package/jest.config.js +0 -12
  97. package/src/js/minimaputils.ts +0 -0
  98. package/typings/custom.d.ts +0 -7
  99. package/typings/missing.d.ts +0 -7
  100. package/webpack.config.js +0 -43
@@ -1,398 +1,403 @@
1
- /// <reference types="jquery" />
2
- import { RuleSet, RuleSetParams, RuleWithId } from "./oncoprintruleset";
3
- import { InitParams } from "./oncoprint";
4
- import { ComputedShapeParams } from "./oncoprintshape";
5
- export declare type ColumnId = string;
6
- export declare type ColumnIndex = number;
7
- export declare type TrackId = number;
8
- export declare type Datum = any;
9
- export declare type RuleSetId = number;
10
- export declare type TrackGroupHeader = {
11
- label: {
12
- text: string;
13
- };
14
- options: CustomTrackGroupOption[];
15
- };
16
- export declare type TrackGroup = {
17
- header?: TrackGroupHeader;
18
- tracks: TrackId[];
19
- };
20
- export declare type TrackGroupIndex = number;
21
- export declare type TrackSortDirection = 0 | 1 | -1;
22
- export declare type TrackSortComparator<D> = (d1: D, d2: D) => number;
23
- export declare type TrackSortVector<D> = (d: D) => (number | string)[];
24
- export declare type TrackTooltipFn<D> = (cell_data: D[]) => HTMLElement | string | any;
25
- export declare type TrackSortSpecificationComparators<D> = {
26
- mandatory: TrackSortComparator<D>;
27
- preferred: TrackSortComparator<D>;
28
- isVector?: false;
29
- };
30
- export declare type TrackSortSpecificationVectors<D> = {
31
- mandatory: TrackSortVector<D>;
32
- preferred: TrackSortVector<D>;
33
- isVector: true;
34
- compareEquals?: TrackSortComparator<D>;
35
- };
36
- export declare type TrackSortSpecification<D> = TrackSortSpecificationComparators<D> | TrackSortSpecificationVectors<D>;
37
- export declare type ActiveRules = {
38
- [ruleId: number]: boolean;
39
- };
40
- export declare type ActiveRulesCount = {
41
- [ruleId: number]: number;
42
- };
43
- export declare type TrackSortDirectionChangeCallback = (track_id: TrackId, dir: number) => void;
44
- export declare type CustomTrackOption = {
45
- label?: string;
46
- separator?: boolean;
47
- onClick?: (id: TrackId) => void;
48
- weight?: string;
49
- disabled?: boolean;
50
- };
51
- export declare type CustomTrackGroupOption = {
52
- label?: string;
53
- separator?: boolean;
54
- onClick?: (id: TrackGroupIndex) => void;
55
- weight?: () => string;
56
- disabled?: () => boolean;
57
- };
58
- export declare type UserTrackSpec<D> = {
59
- target_group?: TrackGroupIndex;
60
- cell_height?: number;
61
- track_padding?: number;
62
- has_column_spacing?: boolean;
63
- data_id_key?: string & keyof D;
64
- tooltipFn?: TrackTooltipFn<D>;
65
- movable?: boolean;
66
- removable?: boolean;
67
- removeCallback?: (track_id: TrackId) => void;
68
- onClickRemoveInTrackMenu?: (track_id: TrackId) => void;
69
- label?: string;
70
- sublabel?: string;
71
- html_label?: string;
72
- track_label_color?: string;
73
- track_label_circle_color?: string;
74
- track_label_font_weight?: string;
75
- track_label_left_padding?: number;
76
- link_url?: string;
77
- description?: string;
78
- track_info?: string;
79
- sortCmpFn: TrackSortSpecification<D>;
80
- sort_direction_changeable?: boolean;
81
- onSortDirectionChange?: TrackSortDirectionChangeCallback;
82
- init_sort_direction?: TrackSortDirection;
83
- data?: D[];
84
- rule_set_params?: RuleSetParams;
85
- expansion_of?: TrackId;
86
- expandCallback?: (id: TrackId) => void;
87
- expandButtonTextGetter?: (is_expanded: boolean) => string;
88
- important_ids?: string[];
89
- custom_track_options?: CustomTrackOption[];
90
- $track_info_tooltip_elt?: JQuery;
91
- track_can_show_gaps?: boolean;
92
- };
93
- export declare type LibraryTrackSpec<D> = UserTrackSpec<D> & {
94
- rule_set: RuleSet;
95
- track_id: TrackId;
96
- };
97
- export declare type TrackOverlappingCells = {
98
- ids: ColumnId[];
99
- track: TrackId;
100
- top: number;
101
- left: number;
102
- };
103
- export declare type SortConfig = {
104
- type: "alphabetical";
105
- } | {
106
- type: "order";
107
- order: string[];
108
- } | {
109
- type: "cluster";
110
- track_group_index: number;
111
- clusterValueFn: (datum: any) => number;
112
- } | {
113
- type?: "";
114
- };
115
- export declare type IdentifiedShapeList = {
116
- id: ColumnId;
117
- shape_list: ComputedShapeParams[];
118
- };
119
- export declare type ClusterSortResult = {
120
- track_group_index: TrackGroupIndex;
121
- track_id_order: TrackId[];
122
- };
123
- export declare type ColumnLabel = {
124
- left_padding_percent?: number;
125
- text_color?: string;
126
- circle_color?: string;
127
- angle_in_degrees?: number;
128
- text: string;
129
- };
130
- export declare type TrackProp<T> = {
131
- [trackId: number]: T;
132
- };
133
- export declare type TrackGroupProp<T> = {
134
- [trackGroupIndex: number]: T;
135
- };
136
- export declare type ColumnProp<T> = {
137
- [columnId: string]: T;
138
- };
139
- export declare type ColumnIdSet = {
140
- [columnId: string]: any;
141
- };
142
- export default class OncoprintModel {
143
- private sort_config;
144
- rendering_suppressed_depth: number;
145
- keep_sorted: boolean;
146
- readonly max_height: number;
147
- private cell_width;
148
- private horz_zoom;
149
- private vert_zoom;
150
- private horz_scroll;
151
- private vert_scroll;
152
- private bottom_padding;
153
- private track_group_padding;
154
- private cell_padding;
155
- private cell_padding_on;
156
- private cell_padding_off_cell_width_threshold;
157
- private cell_padding_off_because_of_zoom;
158
- private id_order;
159
- private hidden_ids;
160
- private highlighted_ids;
161
- private highlighted_tracks;
162
- private track_group_legend_order;
163
- private show_track_sublabels;
164
- private show_track_labels;
165
- private column_labels;
166
- private track_important_ids;
167
- private track_label;
168
- private track_label_color;
169
- private track_label_circle_color;
170
- private track_label_font_weight;
171
- private track_label_left_padding;
172
- private track_sublabel;
173
- private track_html_label;
174
- private track_link_url;
175
- private track_description;
176
- private cell_height;
177
- private track_padding;
178
- private track_data_id_key;
179
- private track_tooltip_fn;
180
- private track_movable;
181
- private track_removable;
182
- private track_remove_callback;
183
- private track_remove_option_callback;
184
- private track_sort_cmp_fn;
185
- private track_sort_direction_changeable;
186
- private track_sort_direction;
187
- private track_sort_direction_change_callback;
188
- private track_data;
189
- private track_rule_set_id;
190
- private track_active_rules;
191
- private track_info;
192
- private $track_info_tooltip_elt;
193
- private track_has_column_spacing;
194
- private track_expansion_enabled;
195
- private track_expand_callback;
196
- private track_expand_button_getter;
197
- track_expansion_tracks: TrackProp<TrackId[]>;
198
- private track_expansion_parent;
199
- private track_custom_options;
200
- private track_can_show_gaps;
201
- private track_show_gaps;
202
- private rule_sets;
203
- private rule_set_active_rules;
204
- private visible_id_order;
205
- private track_id_to_datum;
206
- private track_present_ids;
207
- private present_ids;
208
- private id_to_index;
209
- private visible_id_to_index;
210
- private track_tops;
211
- private cell_tops;
212
- private label_tops;
213
- private track_tops_zoomed;
214
- private header_tops_zoomed;
215
- private cell_tops_zoomed;
216
- private label_tops_zoomed;
217
- private column_left;
218
- private column_left_always_with_padding;
219
- private zoomed_column_left;
220
- private column_left_no_padding;
221
- private precomputed_comparator;
222
- private ids_after_a_gap;
223
- private column_indexes_after_a_gap;
224
- private track_groups;
225
- private unclustered_track_group_order?;
226
- private track_group_sort_priority;
227
- constructor(params: InitParams);
228
- setTrackShowGaps(trackId: TrackId, show: boolean): void;
229
- getTrackShowGaps(trackId: TrackId): boolean;
230
- getTrackCanShowGaps(trackId: TrackId): boolean;
231
- getColumnIndexesAfterAGap(): number[];
232
- setTrackGroupHeader(index: TrackGroupIndex, header?: TrackGroupHeader): void;
233
- getTrackGroupHeaderHeight(trackGroup: TrackGroup): 0 | 32;
234
- toggleCellPadding(): boolean;
235
- getCellPadding(base?: boolean, dont_consider_zoom?: boolean): number;
236
- getHorzZoom(): number;
237
- getIdsInZoomedLeftInterval(left: number, right: number): string[];
238
- getHorzZoomToFitCols(width: number, left_col_incl: ColumnIndex, right_col_excl: ColumnIndex): number;
239
- getHorzZoomToFit(width: number, ids: ColumnId[]): number;
240
- getMinHorzZoom(): number;
241
- getMinVertZoom(): number;
242
- setHorzScroll(s: number): number;
243
- setVertScroll(s: number): number;
244
- setScroll(h: number, v: number): void;
245
- getHorzScroll(): number;
246
- getVertScroll(): number;
247
- setZoom(zoom_x: number, zoom_y: number): void;
248
- private setCellPaddingOffBecauseOfZoom;
249
- setHorzZoom(z: number): number;
250
- getVertZoom(): number;
251
- setVertZoom(z: number): number;
252
- setShowTrackLabels(s: boolean): void;
253
- getShowTrackLabels(): boolean;
254
- hideTrackLegends(track_ids: TrackId[]): void;
255
- showTrackLegends(track_ids: TrackId[]): void;
256
- private clearTrackActiveRules;
257
- private setTrackActiveRules;
258
- getTrackUniversalShapes(track_id: TrackId, use_base_size: boolean): ComputedShapeParams[];
259
- getSpecificShapesForData(track_id: TrackId, use_base_size: boolean): IdentifiedShapeList[];
260
- getActiveRules(rule_set_id: RuleSetId): RuleWithId[];
261
- setTrackImportantIds(track_id: TrackId, ids?: ColumnId[]): void;
262
- getTrackImportantIds(track_id: TrackId): ColumnProp<boolean>;
263
- getRuleSets(): RuleSet[];
264
- getTrackHasColumnSpacing(track_id: TrackId): boolean;
265
- getGapSize(): number;
266
- getCellWidth(base?: boolean): number;
267
- getCellHeight(track_id: TrackId, base?: boolean): number;
268
- getTrackInfo(track_id: TrackId): string;
269
- setTrackInfo(track_id: TrackId, msg: string): void;
270
- getTrackHeight(track_id: TrackId, base?: boolean): number;
271
- getTrackPadding(track_id: TrackId, base?: boolean): number;
272
- getBottomPadding(): number;
273
- getTrackSortDirection(track_id: TrackId): TrackSortDirection;
274
- setTrackSortDirection(track_id: TrackId, dir: TrackSortDirection, no_callback?: boolean): void;
275
- resetSortableTracksSortDirection(no_callback?: boolean): void;
276
- setCellPaddingOn(cell_padding_on: boolean): void;
277
- getIdOrder(all?: boolean): string[];
278
- getClosestColumnIndexToLeft(left: number, zoomed?: boolean, roundUp?: boolean): number;
279
- getIdToIndexMap(): ColumnProp<number>;
280
- getVisibleIdToIndexMap(): ColumnProp<number>;
281
- getHiddenIds(): string[];
282
- isSortAffected(modified_ids: TrackId | TrackId[], group_or_track: "track" | "group"): boolean;
283
- setIdOrder(ids: ColumnId[]): void;
284
- hideIds(to_hide: ColumnId[], show_others?: boolean): void;
285
- setHighlightedTracks(track_ids: TrackId[]): void;
286
- getHighlightedTracks(): number[];
287
- setHighlightedIds(ids: ColumnId[]): void;
288
- getVisibleHighlightedIds(): string[];
289
- restoreClusteredTrackGroupOrder(): void;
290
- setTrackGroupOrder(index: TrackGroupIndex, track_order: TrackId[]): void;
291
- moveTrackGroup(from_index: TrackGroupIndex, to_index: TrackGroupIndex): TrackGroup[];
292
- addTracks(params_list: LibraryTrackSpec<Datum>[]): Promise<void>;
293
- private addTrack;
294
- getAllIds(): string[];
295
- releaseRendering(): Promise<void>;
296
- private ensureTrackGroupExists;
297
- private _getMajorTrackGroup;
298
- private _getEffectiveTrackGroupTracks;
299
- private isRuleSetUsed;
300
- private removeRuleSet;
301
- removeTrack(track_id: TrackId): void;
302
- getOverlappingCells(x: number, y: number): TrackOverlappingCells | null;
303
- getTrackDatum(track_id: TrackId, id: ColumnId): any;
304
- getTrackTops(): TrackProp<number>;
305
- getTrackTops(desired_track_id: TrackId): number;
306
- getZoomedTrackTops(): TrackProp<number>;
307
- getZoomedTrackTops(desired_track_id: TrackId): number;
308
- getZoomedHeaderTops(): TrackGroupProp<number>;
309
- getZoomedHeaderTops(track_group_index: TrackGroupIndex): number;
310
- getCellTops(desired_track_id?: undefined, base?: boolean): TrackProp<number>;
311
- getCellTops(desired_track_id: TrackId, base?: boolean): number;
312
- getLabelTops(): TrackProp<number>;
313
- getLabelTops(desired_track_id: TrackId): number;
314
- getContainingTrackGroup(track_id: TrackId): number[];
315
- getContainingTrackGroupIndex(track_id: TrackId): number;
316
- getTrackGroups(): TrackGroup[];
317
- getTracks(): number[];
318
- getColumnLeft(): ColumnProp<number>;
319
- getColumnLeft(id: ColumnId): number;
320
- getColumnLeftNoPadding(): ColumnProp<number>;
321
- getColumnLeftNoPadding(id: ColumnId): number;
322
- getZoomedColumnLeft(): ColumnProp<number>;
323
- getZoomedColumnLeft(id: ColumnId): number;
324
- getOncoprintHeight(base?: boolean): number;
325
- getOncoprintWidth(base?: boolean): number;
326
- getOncoprintWidthNoColumnPaddingNoGaps(): number;
327
- getColumnLabels(): ColumnProp<ColumnLabel>;
328
- setColumnLabels(labels: ColumnProp<ColumnLabel>): void;
329
- moveTrack(track_id: TrackId, new_previous_track: TrackId): void;
330
- getTrackLabel(track_id: TrackId): string;
331
- getTrackSublabel(track_id: TrackId): string;
332
- getShowTrackSublabels(): boolean;
333
- setShowTrackSublabels(show: boolean): boolean;
334
- getTrackLabelColor(track_id: TrackId): string;
335
- getTrackLabelCircleColor(track_id: TrackId): string;
336
- getTrackLabelFontWeight(track_id: TrackId): string;
337
- getTrackLabelLeftPadding(track_id: TrackId): number;
338
- getOptionalHtmlTrackLabel(track_id: TrackId): string;
339
- getTrackLinkUrl(track_id: TrackId): string;
340
- getTrackDescription(track_id: TrackId): string;
341
- getTrackTooltipFn(track_id: TrackId): TrackTooltipFn<any>;
342
- setTrackTooltipFn(track_id: TrackId, tooltipFn: TrackTooltipFn<Datum>): void;
343
- getTrackDataIdKey(track_id: TrackId): string;
344
- getTrackGroupPadding(base?: boolean): number;
345
- isTrackRemovable(track_id: TrackId): boolean;
346
- getTrackRemoveOptionCallback(track_id: TrackId): (track_id: number) => void;
347
- isTrackSortDirectionChangeable(track_id: TrackId): boolean;
348
- isTrackExpandable(track_id: TrackId): boolean;
349
- expandTrack(track_id: TrackId): void;
350
- disableTrackExpansion(track_id: TrackId): void;
351
- enableTrackExpansion(track_id: TrackId): void;
352
- isTrackExpanded(track_id: TrackId): boolean;
353
- getExpandButtonText(track_id: TrackId): string;
354
- /**
355
- * Checks if one track is the expansion of another
356
- *
357
- * @param {number} expansion_track_id - the ID of the track to check
358
- * @param {number} set_track_id - the ID of the track it may be an expansion of
359
- */
360
- isExpansionOf(expansion_track_id: TrackId, set_track_id: TrackId): boolean;
361
- /**
362
- * Finds the bottom-most track in a track's expansion group
363
- *
364
- * @param track_id - the ID of the track to start from
365
- * @returns the ID of its last expansion, or the unchanged param if none
366
- */
367
- getLastExpansion(track_id: TrackId): number;
368
- getTrackCustomOptions(track_id: TrackId): CustomTrackOption[];
369
- setTrackCustomOptions(track_id: TrackId, options: CustomTrackOption[] | undefined): void;
370
- setTrackInfoTooltip(track_id: TrackId, $tooltip_elt: JQuery | undefined): void;
371
- $getTrackInfoTooltip(track_id: TrackId): JQuery<HTMLElement>;
372
- getRuleSet(track_id: TrackId): RuleSet;
373
- shareRuleSet(source_track_id: TrackId, target_track_id: TrackId): void;
374
- setRuleSet(track_id: TrackId, rule_set: RuleSet): void;
375
- getTrackSortComparator(track_id: TrackId): TrackSortSpecification<any>;
376
- setTrackSortComparator(track_id: TrackId, sortCmpFn: TrackSortSpecification<Datum>): void;
377
- getTrackData(track_id: TrackId): any[];
378
- clusterTrackGroup(track_group_index: TrackGroupIndex, clusterValueFn: (d: Datum) => number): Promise<void | ClusterSortResult>;
379
- /**
380
- * Sets the data for an Oncoprint track.
381
- *
382
- * @param track_id - the ID that identifies the track
383
- * @param {Object[]} data - the list of data for the cells
384
- * @param {string} data_id_key - name of the property of the
385
- * data objects to use as the (column) key
386
- */
387
- setTrackData(track_id: TrackId, data: Datum[], data_id_key: string & keyof Datum): void;
388
- setTrackGroupLegendOrder(group_order: TrackGroupIndex[]): void;
389
- getTrackGroupLegendOrder(): number[];
390
- setTrackGroupSortPriority(priority: TrackGroupIndex[]): void;
391
- private sortAlphabetical;
392
- private sortByTracks;
393
- sort(): Promise<void | ClusterSortResult>;
394
- setSortConfig(params: SortConfig): void;
395
- getTrackMovable(track_id: TrackId): boolean;
396
- setTrackMovable(track_id: TrackId, movable: boolean): void;
397
- isTrackInClusteredGroup(track_id: TrackId): boolean;
398
- }
1
+ /// <reference types="jquery" />
2
+ /// <reference types="jstree" />
3
+ import { RuleSet, RuleSetParams, RuleWithId } from './oncoprintruleset';
4
+ import { InitParams } from './oncoprint';
5
+ import { ComputedShapeParams } from './oncoprintshape';
6
+ export declare type ColumnId = string;
7
+ export declare type ColumnIndex = number;
8
+ export declare type TrackId = number;
9
+ export declare type Datum = any;
10
+ export declare type RuleSetId = number;
11
+ export declare type TrackGroupHeader = {
12
+ label: {
13
+ text: string;
14
+ };
15
+ options: CustomTrackGroupOption[];
16
+ };
17
+ export declare type TrackGroup = {
18
+ header?: TrackGroupHeader;
19
+ tracks: TrackId[];
20
+ };
21
+ export declare type TrackGroupIndex = number;
22
+ export declare type TrackSortDirection = 0 | 1 | -1;
23
+ export declare type TrackSortComparator<D> = (d1: D, d2: D) => number;
24
+ export declare type TrackSortVector<D> = (d: D) => (number | string)[];
25
+ export declare type TrackTooltipFn<D> = (cell_data: D[]) => HTMLElement | string | any;
26
+ export declare type TrackSortSpecificationComparators<D> = {
27
+ mandatory: TrackSortComparator<D>;
28
+ preferred: TrackSortComparator<D>;
29
+ isVector?: false;
30
+ };
31
+ export declare type TrackSortSpecificationVectors<D> = {
32
+ mandatory: TrackSortVector<D>;
33
+ preferred: TrackSortVector<D>;
34
+ isVector: true;
35
+ compareEquals?: TrackSortComparator<D>;
36
+ };
37
+ export declare type TrackSortSpecification<D> = TrackSortSpecificationComparators<D> | TrackSortSpecificationVectors<D>;
38
+ export declare type ActiveRules = {
39
+ [ruleId: number]: boolean;
40
+ };
41
+ export declare type ActiveRulesCount = {
42
+ [ruleId: number]: number;
43
+ };
44
+ export declare type TrackSortDirectionChangeCallback = (track_id: TrackId, dir: number) => void;
45
+ export declare type TrackGapChangeCallBack = (track_id: TrackId, on: boolean) => void;
46
+ export declare type CustomTrackOption = {
47
+ label?: string;
48
+ separator?: boolean;
49
+ onClick?: (id: TrackId) => void;
50
+ weight?: string;
51
+ disabled?: boolean;
52
+ };
53
+ export declare type CustomTrackGroupOption = {
54
+ label?: string;
55
+ separator?: boolean;
56
+ onClick?: (id: TrackGroupIndex) => void;
57
+ weight?: () => string;
58
+ disabled?: () => boolean;
59
+ };
60
+ export declare type UserTrackSpec<D> = {
61
+ target_group?: TrackGroupIndex;
62
+ cell_height?: number;
63
+ track_padding?: number;
64
+ has_column_spacing?: boolean;
65
+ data_id_key?: string & keyof D;
66
+ tooltipFn?: TrackTooltipFn<D>;
67
+ movable?: boolean;
68
+ removable?: boolean;
69
+ removeCallback?: (track_id: TrackId) => void;
70
+ onClickRemoveInTrackMenu?: (track_id: TrackId) => void;
71
+ label?: string;
72
+ sublabel?: string;
73
+ html_label?: string;
74
+ track_label_color?: string;
75
+ track_label_circle_color?: string;
76
+ track_label_font_weight?: string;
77
+ track_label_left_padding?: number;
78
+ link_url?: string;
79
+ description?: string;
80
+ track_info?: string;
81
+ sortCmpFn: TrackSortSpecification<D>;
82
+ sort_direction_changeable?: boolean;
83
+ onSortDirectionChange?: TrackSortDirectionChangeCallback;
84
+ onGapChange?: TrackGapChangeCallBack;
85
+ init_sort_direction?: TrackSortDirection;
86
+ data?: D[];
87
+ rule_set_params?: RuleSetParams;
88
+ expansion_of?: TrackId;
89
+ expandCallback?: (id: TrackId) => void;
90
+ expandButtonTextGetter?: (is_expanded: boolean) => string;
91
+ important_ids?: string[];
92
+ custom_track_options?: CustomTrackOption[];
93
+ $track_info_tooltip_elt?: JQuery;
94
+ track_can_show_gaps?: boolean;
95
+ show_gaps_on_init?: boolean;
96
+ };
97
+ export declare type LibraryTrackSpec<D> = UserTrackSpec<D> & {
98
+ rule_set: RuleSet;
99
+ track_id: TrackId;
100
+ };
101
+ export declare type TrackOverlappingCells = {
102
+ ids: ColumnId[];
103
+ track: TrackId;
104
+ top: number;
105
+ left: number;
106
+ };
107
+ export declare type SortConfig = {
108
+ type: 'alphabetical';
109
+ } | {
110
+ type: 'order';
111
+ order: string[];
112
+ } | {
113
+ type: 'cluster';
114
+ track_group_index: number;
115
+ clusterValueFn: (datum: any) => number;
116
+ } | {
117
+ type?: '';
118
+ };
119
+ export declare type IdentifiedShapeList = {
120
+ id: ColumnId;
121
+ shape_list: ComputedShapeParams[];
122
+ };
123
+ export declare type ClusterSortResult = {
124
+ track_group_index: TrackGroupIndex;
125
+ track_id_order: TrackId[];
126
+ };
127
+ export declare type ColumnLabel = {
128
+ left_padding_percent?: number;
129
+ text_color?: string;
130
+ circle_color?: string;
131
+ angle_in_degrees?: number;
132
+ text: string;
133
+ };
134
+ export declare type TrackProp<T> = {
135
+ [trackId: number]: T;
136
+ };
137
+ export declare type TrackGroupProp<T> = {
138
+ [trackGroupIndex: number]: T;
139
+ };
140
+ export declare type ColumnProp<T> = {
141
+ [columnId: string]: T;
142
+ };
143
+ export declare type ColumnIdSet = {
144
+ [columnId: string]: any;
145
+ };
146
+ export default class OncoprintModel {
147
+ private sort_config;
148
+ rendering_suppressed_depth: number;
149
+ keep_sorted: boolean;
150
+ readonly max_height: number;
151
+ private cell_width;
152
+ private horz_zoom;
153
+ private vert_zoom;
154
+ private horz_scroll;
155
+ private vert_scroll;
156
+ private bottom_padding;
157
+ private track_group_padding;
158
+ private cell_padding;
159
+ private cell_padding_on;
160
+ private cell_padding_off_cell_width_threshold;
161
+ private cell_padding_off_because_of_zoom;
162
+ private id_order;
163
+ private hidden_ids;
164
+ private highlighted_ids;
165
+ private highlighted_tracks;
166
+ private track_group_legend_order;
167
+ private show_track_sublabels;
168
+ private show_track_labels;
169
+ private column_labels;
170
+ private track_important_ids;
171
+ private track_label;
172
+ private track_label_color;
173
+ private track_label_circle_color;
174
+ private track_label_font_weight;
175
+ private track_label_left_padding;
176
+ private track_sublabel;
177
+ private track_html_label;
178
+ private track_link_url;
179
+ private track_description;
180
+ private cell_height;
181
+ private track_padding;
182
+ private track_data_id_key;
183
+ private track_tooltip_fn;
184
+ private track_movable;
185
+ private track_removable;
186
+ private track_remove_callback;
187
+ private track_remove_option_callback;
188
+ private track_sort_cmp_fn;
189
+ private track_sort_direction_changeable;
190
+ private track_sort_direction;
191
+ private track_sort_direction_change_callback;
192
+ private track_gap_change_callback;
193
+ private track_data;
194
+ private track_rule_set_id;
195
+ private track_active_rules;
196
+ private track_info;
197
+ private $track_info_tooltip_elt;
198
+ private track_has_column_spacing;
199
+ private track_expansion_enabled;
200
+ private track_expand_callback;
201
+ private track_expand_button_getter;
202
+ track_expansion_tracks: TrackProp<TrackId[]>;
203
+ private track_expansion_parent;
204
+ private track_custom_options;
205
+ private track_can_show_gaps;
206
+ private track_show_gaps;
207
+ private rule_sets;
208
+ private rule_set_active_rules;
209
+ private visible_id_order;
210
+ private track_id_to_datum;
211
+ private track_present_ids;
212
+ private present_ids;
213
+ private id_to_index;
214
+ private visible_id_to_index;
215
+ private track_tops;
216
+ private cell_tops;
217
+ private label_tops;
218
+ private track_tops_zoomed;
219
+ private header_tops_zoomed;
220
+ private cell_tops_zoomed;
221
+ private label_tops_zoomed;
222
+ private column_left;
223
+ private column_left_always_with_padding;
224
+ private zoomed_column_left;
225
+ private column_left_no_padding;
226
+ private precomputed_comparator;
227
+ private ids_after_a_gap;
228
+ private column_indexes_after_a_gap;
229
+ private track_groups;
230
+ private unclustered_track_group_order?;
231
+ private track_group_sort_priority;
232
+ constructor(params: InitParams);
233
+ setTrackShowGaps(trackId: TrackId, show: boolean): void;
234
+ getTrackShowGaps(trackId: TrackId): boolean;
235
+ getTrackCanShowGaps(trackId: TrackId): boolean;
236
+ getColumnIndexesAfterAGap(): number[];
237
+ setTrackGroupHeader(index: TrackGroupIndex, header?: TrackGroupHeader): void;
238
+ getTrackGroupHeaderHeight(trackGroup: TrackGroup): 0 | 32;
239
+ toggleCellPadding(): boolean;
240
+ getCellPadding(base?: boolean, dont_consider_zoom?: boolean): number;
241
+ getHorzZoom(): number;
242
+ getIdsInZoomedLeftInterval(left: number, right: number): string[];
243
+ getHorzZoomToFitCols(width: number, left_col_incl: ColumnIndex, right_col_excl: ColumnIndex): number;
244
+ getHorzZoomToFit(width: number, ids: ColumnId[]): number;
245
+ getMinHorzZoom(): number;
246
+ getMinVertZoom(): number;
247
+ setHorzScroll(s: number): number;
248
+ setVertScroll(s: number): number;
249
+ setScroll(h: number, v: number): void;
250
+ getHorzScroll(): number;
251
+ getVertScroll(): number;
252
+ setZoom(zoom_x: number, zoom_y: number): void;
253
+ private setCellPaddingOffBecauseOfZoom;
254
+ setHorzZoom(z: number): number;
255
+ getVertZoom(): number;
256
+ setVertZoom(z: number): number;
257
+ setShowTrackLabels(s: boolean): void;
258
+ getShowTrackLabels(): boolean;
259
+ hideTrackLegends(track_ids: TrackId[]): void;
260
+ showTrackLegends(track_ids: TrackId[]): void;
261
+ private clearTrackActiveRules;
262
+ private setTrackActiveRules;
263
+ getTrackUniversalShapes(track_id: TrackId, use_base_size: boolean): ComputedShapeParams[];
264
+ getSpecificShapesForData(track_id: TrackId, use_base_size: boolean): IdentifiedShapeList[];
265
+ getActiveRules(rule_set_id: RuleSetId): RuleWithId[];
266
+ setTrackImportantIds(track_id: TrackId, ids?: ColumnId[]): void;
267
+ getTrackImportantIds(track_id: TrackId): ColumnProp<boolean>;
268
+ getRuleSets(): RuleSet[];
269
+ getTrackHasColumnSpacing(track_id: TrackId): boolean;
270
+ getGapSize(): number;
271
+ getCellWidth(base?: boolean): number;
272
+ getCellHeight(track_id: TrackId, base?: boolean): number;
273
+ getTrackInfo(track_id: TrackId): string;
274
+ setTrackInfo(track_id: TrackId, msg: string): void;
275
+ getTrackHeight(track_id: TrackId, base?: boolean): number;
276
+ getTrackPadding(track_id: TrackId, base?: boolean): number;
277
+ getBottomPadding(): number;
278
+ getTrackSortDirection(track_id: TrackId): TrackSortDirection;
279
+ setTrackSortDirection(track_id: TrackId, dir: TrackSortDirection, no_callback?: boolean): void;
280
+ resetSortableTracksSortDirection(no_callback?: boolean): void;
281
+ setCellPaddingOn(cell_padding_on: boolean): void;
282
+ getIdOrder(all?: boolean): string[];
283
+ getClosestColumnIndexToLeft(left: number, zoomed?: boolean, roundUp?: boolean): number;
284
+ getIdToIndexMap(): ColumnProp<number>;
285
+ getVisibleIdToIndexMap(): ColumnProp<number>;
286
+ getHiddenIds(): string[];
287
+ isSortAffected(modified_ids: TrackId | TrackId[], group_or_track: 'track' | 'group'): boolean;
288
+ setIdOrder(ids: ColumnId[]): void;
289
+ hideIds(to_hide: ColumnId[], show_others?: boolean): void;
290
+ setHighlightedTracks(track_ids: TrackId[]): void;
291
+ getHighlightedTracks(): number[];
292
+ setHighlightedIds(ids: ColumnId[]): void;
293
+ getVisibleHighlightedIds(): string[];
294
+ restoreClusteredTrackGroupOrder(): void;
295
+ setTrackGroupOrder(index: TrackGroupIndex, track_order: TrackId[]): void;
296
+ moveTrackGroup(from_index: TrackGroupIndex, to_index: TrackGroupIndex): TrackGroup[];
297
+ addTracks(params_list: LibraryTrackSpec<Datum>[]): Promise<void>;
298
+ private addTrack;
299
+ getAllIds(): string[];
300
+ releaseRendering(): Promise<void>;
301
+ private ensureTrackGroupExists;
302
+ private _getMajorTrackGroup;
303
+ private _getEffectiveTrackGroupTracks;
304
+ private isRuleSetUsed;
305
+ private removeRuleSet;
306
+ removeTrack(track_id: TrackId): void;
307
+ getOverlappingCells(x: number, y: number): TrackOverlappingCells | null;
308
+ getTrackDatum(track_id: TrackId, id: ColumnId): any;
309
+ getTrackTops(): TrackProp<number>;
310
+ getTrackTops(desired_track_id: TrackId): number;
311
+ getZoomedTrackTops(): TrackProp<number>;
312
+ getZoomedTrackTops(desired_track_id: TrackId): number;
313
+ getZoomedHeaderTops(): TrackGroupProp<number>;
314
+ getZoomedHeaderTops(track_group_index: TrackGroupIndex): number;
315
+ getCellTops(desired_track_id?: undefined, base?: boolean): TrackProp<number>;
316
+ getCellTops(desired_track_id: TrackId, base?: boolean): number;
317
+ getLabelTops(): TrackProp<number>;
318
+ getLabelTops(desired_track_id: TrackId): number;
319
+ getContainingTrackGroup(track_id: TrackId): number[];
320
+ getContainingTrackGroupIndex(track_id: TrackId): number;
321
+ getTrackGroups(): TrackGroup[];
322
+ getTracks(): number[];
323
+ getColumnLeft(): ColumnProp<number>;
324
+ getColumnLeft(id: ColumnId): number;
325
+ getColumnLeftNoPadding(): ColumnProp<number>;
326
+ getColumnLeftNoPadding(id: ColumnId): number;
327
+ getZoomedColumnLeft(): ColumnProp<number>;
328
+ getZoomedColumnLeft(id: ColumnId): number;
329
+ getOncoprintHeight(base?: boolean): number;
330
+ getOncoprintWidth(base?: boolean): number;
331
+ getOncoprintWidthNoColumnPaddingNoGaps(): number;
332
+ getColumnLabels(): ColumnProp<ColumnLabel>;
333
+ setColumnLabels(labels: ColumnProp<ColumnLabel>): void;
334
+ moveTrack(track_id: TrackId, new_previous_track: TrackId): void;
335
+ getTrackLabel(track_id: TrackId): string;
336
+ getTrackSublabel(track_id: TrackId): string;
337
+ getShowTrackSublabels(): boolean;
338
+ setShowTrackSublabels(show: boolean): boolean;
339
+ getTrackLabelColor(track_id: TrackId): string;
340
+ getTrackLabelCircleColor(track_id: TrackId): string;
341
+ getTrackLabelFontWeight(track_id: TrackId): string;
342
+ getTrackLabelLeftPadding(track_id: TrackId): number;
343
+ getOptionalHtmlTrackLabel(track_id: TrackId): string;
344
+ getTrackLinkUrl(track_id: TrackId): string;
345
+ getTrackDescription(track_id: TrackId): string;
346
+ getTrackTooltipFn(track_id: TrackId): TrackTooltipFn<any>;
347
+ setTrackTooltipFn(track_id: TrackId, tooltipFn: TrackTooltipFn<Datum>): void;
348
+ getTrackDataIdKey(track_id: TrackId): string;
349
+ getTrackGroupPadding(base?: boolean): number;
350
+ isTrackRemovable(track_id: TrackId): boolean;
351
+ getTrackRemoveOptionCallback(track_id: TrackId): (track_id: number) => void;
352
+ isTrackSortDirectionChangeable(track_id: TrackId): boolean;
353
+ isTrackExpandable(track_id: TrackId): boolean;
354
+ expandTrack(track_id: TrackId): void;
355
+ disableTrackExpansion(track_id: TrackId): void;
356
+ enableTrackExpansion(track_id: TrackId): void;
357
+ isTrackExpanded(track_id: TrackId): boolean;
358
+ getExpandButtonText(track_id: TrackId): string;
359
+ /**
360
+ * Checks if one track is the expansion of another
361
+ *
362
+ * @param {number} expansion_track_id - the ID of the track to check
363
+ * @param {number} set_track_id - the ID of the track it may be an expansion of
364
+ */
365
+ isExpansionOf(expansion_track_id: TrackId, set_track_id: TrackId): boolean;
366
+ /**
367
+ * Finds the bottom-most track in a track's expansion group
368
+ *
369
+ * @param track_id - the ID of the track to start from
370
+ * @returns the ID of its last expansion, or the unchanged param if none
371
+ */
372
+ getLastExpansion(track_id: TrackId): number;
373
+ getTrackCustomOptions(track_id: TrackId): CustomTrackOption[];
374
+ setTrackCustomOptions(track_id: TrackId, options: CustomTrackOption[] | undefined): void;
375
+ setTrackInfoTooltip(track_id: TrackId, $tooltip_elt: JQuery | undefined): void;
376
+ $getTrackInfoTooltip(track_id: TrackId): JQuery<HTMLElement>;
377
+ getRuleSet(track_id: TrackId): RuleSet;
378
+ shareRuleSet(source_track_id: TrackId, target_track_id: TrackId): void;
379
+ setRuleSet(track_id: TrackId, rule_set: RuleSet): void;
380
+ getTrackSortComparator(track_id: TrackId): TrackSortSpecification<any>;
381
+ setTrackSortComparator(track_id: TrackId, sortCmpFn: TrackSortSpecification<Datum>): void;
382
+ getTrackData(track_id: TrackId): any[];
383
+ clusterTrackGroup(track_group_index: TrackGroupIndex, clusterValueFn: (d: Datum) => number): Promise<void | ClusterSortResult>;
384
+ /**
385
+ * Sets the data for an Oncoprint track.
386
+ *
387
+ * @param track_id - the ID that identifies the track
388
+ * @param {Object[]} data - the list of data for the cells
389
+ * @param {string} data_id_key - name of the property of the
390
+ * data objects to use as the (column) key
391
+ */
392
+ setTrackData(track_id: TrackId, data: Datum[], data_id_key: string & keyof Datum): void;
393
+ setTrackGroupLegendOrder(group_order: TrackGroupIndex[]): void;
394
+ getTrackGroupLegendOrder(): number[];
395
+ setTrackGroupSortPriority(priority: TrackGroupIndex[]): void;
396
+ private sortAlphabetical;
397
+ private sortByTracks;
398
+ sort(): Promise<void | ClusterSortResult>;
399
+ setSortConfig(params: SortConfig): void;
400
+ getTrackMovable(track_id: TrackId): boolean;
401
+ setTrackMovable(track_id: TrackId, movable: boolean): void;
402
+ isTrackInClusteredGroup(track_id: TrackId): boolean;
403
+ }