UNPKG

oncoprintjs

Version:

A data visualization for cancer genomic data.

420 lines (419 loc) 17.5 kB
/// <reference types="jquery" /> /// <reference types="jstree" /> import CachedProperty from './CachedProperty'; import { RuleSet, RuleSetParams, RuleWithId } from './oncoprintruleset'; import { InitParams } from './oncoprint'; import { ComputedShapeParams } from './oncoprintshape'; import { OncoprintGapConfig } from './oncoprintwebglcellview'; export declare enum GAP_MODE_ENUM { SHOW_GAPS = "SHOW_GAPS", SHOW_GAPS_PERCENT = "SHOW_GAPS_PERCENT", HIDE_GAPS = "HIDE_GAPS" } export declare type ColumnId = string; export declare type ColumnIndex = number; export declare type TrackId = number; export declare type Datum = any; export declare type RuleSetId = number; export declare type TrackGroupHeader = { label: { text: string; }; options: CustomTrackGroupOption[]; }; export declare type TrackGroup = { header?: TrackGroupHeader; tracks: TrackId[]; }; export declare type TrackGroupIndex = number; export declare type TrackSortDirection = 0 | 1 | -1; export declare type TrackSortComparator<D> = (d1: D, d2: D) => number; export declare type TrackSortVector<D> = (d: D) => (number | string)[]; export declare type TrackTooltipFn<D> = (cell_data: D[]) => HTMLElement | string | any; export declare type TrackSortSpecificationComparators<D> = { mandatory: TrackSortComparator<D>; preferred: TrackSortComparator<D>; isVector?: false; }; export declare type TrackSortSpecificationVectors<D> = { mandatory: TrackSortVector<D>; preferred: TrackSortVector<D>; isVector: true; compareEquals?: TrackSortComparator<D>; }; export declare type TrackSortSpecification<D> = TrackSortSpecificationComparators<D> | TrackSortSpecificationVectors<D>; export declare type ActiveRules = { [ruleId: number]: boolean; }; export declare type ActiveRulesCount = { [ruleId: number]: number; }; export declare type TrackSortDirectionChangeCallback = (track_id: TrackId, dir: number) => void; export declare type TrackGapChangeCallBack = (track_id: TrackId, mode: GAP_MODE_ENUM) => void; export declare type CustomTrackOption = { label?: string; separator?: boolean; onClick?: (id: TrackId) => void; weight?: string; disabled?: boolean; gapLabelsFn?: (model: OncoprintModel) => OncoprintGapConfig[]; }; export declare type CustomTrackGroupOption = { label?: string; separator?: boolean; onClick?: (id: TrackGroupIndex) => void; weight?: () => string; disabled?: () => boolean; }; export declare type UserTrackSpec<D> = { target_group?: TrackGroupIndex; cell_height?: number; track_padding?: number; has_column_spacing?: boolean; data_id_key?: string & keyof D; tooltipFn?: TrackTooltipFn<D>; movable?: boolean; removable?: boolean; removeCallback?: (track_id: TrackId) => void; onClickRemoveInTrackMenu?: (track_id: TrackId) => void; label?: string; sublabel?: string; gapLabelFn?: (model: OncoprintModel) => string[]; html_label?: string; track_label_color?: string; track_label_circle_color?: string; track_label_font_weight?: string; track_label_left_padding?: number; link_url?: string; description?: string; track_info?: string; sortCmpFn: TrackSortSpecification<D>; sort_direction_changeable?: boolean; onSortDirectionChange?: TrackSortDirectionChangeCallback; onGapChange?: TrackGapChangeCallBack; init_sort_direction?: TrackSortDirection; data?: D[]; rule_set_params?: RuleSetParams; expansion_of?: TrackId; expandCallback?: (id: TrackId) => void; expandButtonTextGetter?: (is_expanded: boolean) => string; important_ids?: string[]; custom_track_options?: CustomTrackOption[]; $track_info_tooltip_elt?: JQuery; track_can_show_gaps?: boolean; show_gaps_on_init?: boolean; }; export declare type LibraryTrackSpec<D> = UserTrackSpec<D> & { rule_set: RuleSet; track_id: TrackId; }; export declare type TrackOverlappingCells = { ids: ColumnId[]; track: TrackId; top: number; left: number; }; export declare type SortConfig = { type: 'alphabetical'; } | { type: 'order'; order: string[]; } | { type: 'cluster'; track_group_index: number; clusterValueFn: (datum: any) => number; } | { type?: ''; }; export declare type IdentifiedShapeList = { id: ColumnId; shape_list: ComputedShapeParams[]; }; export declare type ClusterSortResult = { track_group_index: TrackGroupIndex; track_id_order: TrackId[]; }; export declare type ColumnLabel = { left_padding_percent?: number; text_color?: string; circle_color?: string; angle_in_degrees?: number; text: string; }; export declare type TrackProp<T> = { [trackId: number]: T; }; export declare type TrackGroupProp<T> = { [trackGroupIndex: number]: T; }; export declare type ColumnProp<T> = { [columnId: string]: T; }; export declare type ColumnIdSet = { [columnId: string]: any; }; export declare type OncoprintDataGroupsByTrackId<T> = Record<string, OncoprintDataGroups<T>[]>; export declare type OncoprintDataGroups<T> = OncoprintDataGroup<T>[]; export declare type OncoprintDataGroup<T> = T[]; export default class OncoprintModel { private sort_config; rendering_suppressed_depth: number; keep_sorted: boolean; readonly max_height: number; private cell_width; private horz_zoom; private vert_zoom; private horz_scroll; private vert_scroll; private bottom_padding; private track_group_padding; private cell_padding; private cell_padding_on; private cell_padding_off_cell_width_threshold; private cell_padding_off_because_of_zoom; private id_order; private hidden_ids; private highlighted_ids; private highlighted_tracks; private track_group_legend_order; private show_track_sublabels; private show_track_labels; private column_labels; private track_important_ids; private track_label; private track_label_color; private track_label_circle_color; private track_label_font_weight; private track_label_left_padding; private track_sublabel; private track_html_label; private track_link_url; private track_description; private cell_height; private track_padding; private track_data_id_key; private track_tooltip_fn; private track_movable; private track_removable; private track_remove_callback; private track_remove_option_callback; private track_sort_cmp_fn; private track_sort_direction_changeable; private track_sort_direction; private track_sort_direction_change_callback; private track_gap_change_callback; private track_data; private track_rule_set_id; private track_active_rules; private track_info; private $track_info_tooltip_elt; private track_has_column_spacing; private track_expansion_enabled; private track_expand_callback; private track_expand_button_getter; track_expansion_tracks: TrackProp<TrackId[]>; private track_expansion_parent; private track_custom_options; private track_can_show_gaps; private track_show_gaps; private rule_sets; private rule_set_active_rules; private visible_id_order; private track_id_to_datum; private track_present_ids; private present_ids; private id_to_index; private visible_id_to_index; private track_tops; private cell_tops; private label_tops; private track_tops_zoomed; private header_tops_zoomed; private cell_tops_zoomed; private label_tops_zoomed; private column_left; private column_left_always_with_padding; private zoomed_column_left; private column_left_no_padding; private precomputed_comparator; ids_after_a_gap: CachedProperty<ColumnIdSet>; data_groups: CachedProperty<OncoprintDataGroupsByTrackId<TrackProp<ColumnProp<Datum>>>>; private column_indexes_after_a_gap; private track_groups; private unclustered_track_group_order?; private track_group_sort_priority; constructor(params: InitParams); setTrackShowGaps(trackId: TrackId, show: GAP_MODE_ENUM): void; getTrackShowGaps(trackId: TrackId): GAP_MODE_ENUM; getTrackCanShowGaps(trackId: TrackId): boolean; getColumnIndexesAfterAGap(): number[]; setTrackGroupHeader(index: TrackGroupIndex, header?: TrackGroupHeader): void; getTrackGroupHeaderHeight(trackGroup: TrackGroup): 0 | 32; toggleCellPadding(): boolean; getCellPadding(base?: boolean, dont_consider_zoom?: boolean): number; getHorzZoom(): number; getIdsInZoomedLeftInterval(left: number, right: number): string[]; getHorzZoomToFitCols(width: number, left_col_incl: ColumnIndex, right_col_excl: ColumnIndex): number; getHorzZoomToFit(width: number, ids: ColumnId[]): number; getMinHorzZoom(): number; getMinVertZoom(): number; setHorzScroll(s: number): number; setVertScroll(s: number): number; setScroll(h: number, v: number): void; getHorzScroll(): number; getVertScroll(): number; setZoom(zoom_x: number, zoom_y: number): void; private setCellPaddingOffBecauseOfZoom; setHorzZoom(z: number): number; getVertZoom(): number; setVertZoom(z: number): number; setShowTrackLabels(s: boolean): void; getShowTrackLabels(): boolean; hideTrackLegends(track_ids: TrackId[]): void; showTrackLegends(track_ids: TrackId[]): void; private clearTrackActiveRules; private setTrackActiveRules; getTrackUniversalShapes(track_id: TrackId, use_base_size: boolean): ComputedShapeParams[]; getSpecificShapesForData(track_id: TrackId, use_base_size: boolean): IdentifiedShapeList[]; getActiveRules(rule_set_id: RuleSetId): RuleWithId[]; setTrackImportantIds(track_id: TrackId, ids?: ColumnId[]): void; getTrackImportantIds(track_id: TrackId): ColumnProp<boolean>; getRuleSets(): RuleSet[]; getTrackHasColumnSpacing(track_id: TrackId): boolean; getGapSize(): number; getCellWidth(base?: boolean): number; getCellHeight(track_id: TrackId, base?: boolean): number; getTrackInfo(track_id: TrackId): string; setTrackInfo(track_id: TrackId, msg: string): void; getTrackHeight(track_id: TrackId, base?: boolean): number; getTrackPadding(track_id: TrackId, base?: boolean): number; getBottomPadding(): number; getTrackSortDirection(track_id: TrackId): TrackSortDirection; setTrackSortDirection(track_id: TrackId, dir: TrackSortDirection, no_callback?: boolean): void; resetSortableTracksSortDirection(no_callback?: boolean): void; setCellPaddingOn(cell_padding_on: boolean): void; getIdOrder(all?: boolean): string[]; getClosestColumnIndexToLeft(left: number, zoomed?: boolean, roundUp?: boolean): number; getIdToIndexMap(): ColumnProp<number>; getVisibleIdToIndexMap(): ColumnProp<number>; getHiddenIds(): string[]; isSortAffected(modified_ids: TrackId | TrackId[], group_or_track: 'track' | 'group'): boolean; setIdOrder(ids: ColumnId[]): void; hideIds(to_hide: ColumnId[], show_others?: boolean): void; setHighlightedTracks(track_ids: TrackId[]): void; getHighlightedTracks(): number[]; setHighlightedIds(ids: ColumnId[]): void; getVisibleHighlightedIds(): string[]; restoreClusteredTrackGroupOrder(): void; setTrackGroupOrder(index: TrackGroupIndex, track_order: TrackId[]): void; moveTrackGroup(from_index: TrackGroupIndex, to_index: TrackGroupIndex): TrackGroup[]; addTracks(params_list: LibraryTrackSpec<Datum>[]): Promise<void>; private addTrack; getAllIds(): string[]; releaseRendering(): Promise<void>; private ensureTrackGroupExists; private _getMajorTrackGroup; private _getEffectiveTrackGroupTracks; private isRuleSetUsed; private removeRuleSet; removeTrack(track_id: TrackId): void; getOverlappingCells(x: number, y: number): TrackOverlappingCells | null; getTrackDatum(track_id: TrackId, id: ColumnId): any; getTrackTops(): TrackProp<number>; getTrackTops(desired_track_id: TrackId): number; getZoomedTrackTops(): TrackProp<number>; getZoomedTrackTops(desired_track_id: TrackId): number; getZoomedHeaderTops(): TrackGroupProp<number>; getZoomedHeaderTops(track_group_index: TrackGroupIndex): number; getCellTops(desired_track_id?: undefined, base?: boolean): TrackProp<number>; getCellTops(desired_track_id: TrackId, base?: boolean): number; getLabelTops(): TrackProp<number>; getLabelTops(desired_track_id: TrackId): number; getContainingTrackGroup(track_id: TrackId): number[]; getContainingTrackGroupIndex(track_id: TrackId): number; getTrackGroups(): TrackGroup[]; getTracks(): number[]; getColumnLeft(): ColumnProp<number>; getColumnLeft(id: ColumnId): number; getColumnLeftNoPadding(): ColumnProp<number>; getColumnLeftNoPadding(id: ColumnId): number; getZoomedColumnLeft(): ColumnProp<number>; getZoomedColumnLeft(id: ColumnId): number; getOncoprintHeight(base?: boolean): number; getOncoprintWidth(base?: boolean): number; showGaps(): boolean; gapMode(): GAP_MODE_ENUM | GAP_MODE_ENUM.HIDE_GAPS; getOncoprintWidthNoColumnPaddingNoGaps(): number; getColumnLabels(): ColumnProp<ColumnLabel>; setColumnLabels(labels: ColumnProp<ColumnLabel>): void; moveTrack(track_id: TrackId, new_previous_track: TrackId): void; getTrackLabel(track_id: TrackId): string; getTrackSublabel(track_id: TrackId): string; getShowTrackSublabels(): boolean; setShowTrackSublabels(show: boolean): boolean; getTrackLabelColor(track_id: TrackId): string; getTrackLabelCircleColor(track_id: TrackId): string; getTrackLabelFontWeight(track_id: TrackId): string; getTrackLabelLeftPadding(track_id: TrackId): number; getOptionalHtmlTrackLabel(track_id: TrackId): string; getTrackLinkUrl(track_id: TrackId): string; getTrackDescription(track_id: TrackId): string; getTrackTooltipFn(track_id: TrackId): TrackTooltipFn<any>; setTrackTooltipFn(track_id: TrackId, tooltipFn: TrackTooltipFn<Datum>): void; getTrackDataIdKey(track_id: TrackId): string; getTrackGroupPadding(base?: boolean): number; isTrackRemovable(track_id: TrackId): boolean; getTrackRemoveOptionCallback(track_id: TrackId): (track_id: number) => void; isTrackSortDirectionChangeable(track_id: TrackId): boolean; isTrackExpandable(track_id: TrackId): boolean; expandTrack(track_id: TrackId): void; disableTrackExpansion(track_id: TrackId): void; enableTrackExpansion(track_id: TrackId): void; isTrackExpanded(track_id: TrackId): boolean; getExpandButtonText(track_id: TrackId): string; /** * Checks if one track is the expansion of another * * @param {number} expansion_track_id - the ID of the track to check * @param {number} set_track_id - the ID of the track it may be an expansion of */ isExpansionOf(expansion_track_id: TrackId, set_track_id: TrackId): boolean; /** * Finds the bottom-most track in a track's expansion group * * @param track_id - the ID of the track to start from * @returns the ID of its last expansion, or the unchanged param if none */ getLastExpansion(track_id: TrackId): number; getTrackCustomOptions(track_id: TrackId): CustomTrackOption[]; setTrackCustomOptions(track_id: TrackId, options: CustomTrackOption[] | undefined): void; getGapOffsets(): any; setTrackInfoTooltip(track_id: TrackId, $tooltip_elt: JQuery | undefined): void; $getTrackInfoTooltip(track_id: TrackId): JQuery<HTMLElement>; getRuleSet(track_id: TrackId): RuleSet; shareRuleSet(source_track_id: TrackId, target_track_id: TrackId): void; setRuleSet(track_id: TrackId, rule_set: RuleSet): void; getTrackSortComparator(track_id: TrackId): TrackSortSpecification<any>; setTrackSortComparator(track_id: TrackId, sortCmpFn: TrackSortSpecification<Datum>): void; getTrackData(track_id: TrackId): any[]; clusterTrackGroup(track_group_index: TrackGroupIndex, clusterValueFn: (d: Datum) => number): Promise<void | ClusterSortResult>; /** * Sets the data for an Oncoprint track. * * @param track_id - the ID that identifies the track * @param {Object[]} data - the list of data for the cells * @param {string} data_id_key - name of the property of the * data objects to use as the (column) key */ setTrackData(track_id: TrackId, data: Datum[], data_id_key: string & keyof Datum): void; setTrackGroupLegendOrder(group_order: TrackGroupIndex[]): void; getTrackGroupLegendOrder(): number[]; setTrackGroupSortPriority(priority: TrackGroupIndex[]): void; private sortAlphabetical; private sortByTracks; sort(): Promise<void | ClusterSortResult>; setSortConfig(params: SortConfig): void; getTrackMovable(track_id: TrackId): boolean; setTrackMovable(track_id: TrackId, movable: boolean): void; isTrackInClusteredGroup(track_id: TrackId): boolean; }