oncoprintjs
Version:
A data visualization for cancer genomic data.
185 lines (184 loc) • 7.48 kB
TypeScript
/// <reference types="jquery" />
/// <reference types="jstree" />
import OncoprintModel, { ColumnId, TrackId, TrackProp } from './oncoprintmodel';
import OncoprintToolTip from './oncoprinttooltip';
import { CellClickCallback, CellMouseOverCallback } from './oncoprint';
declare type ColorBank = number[];
declare type OncoprintGap = {
origin_x: number;
origin_y: number;
data: OncoprintGapConfig;
};
export declare type OncoprintGapConfig = {
labelFormatter: () => string;
tooltipFormatter: () => string;
};
export declare type OncoprintWebGLContext = WebGLRenderingContext & {
viewportWidth: number;
viewportHeight: number;
};
export declare type OncoprintShaderProgram = WebGLProgram & {
vertexPositionAttribute: any;
vertexColorAttribute: any;
vertexOncoprintColumnAttribute: any;
gapSizeUniform: WebGLUniformLocation;
columnsRightAfterGapsUniform: WebGLUniformLocation;
samplerUniform: WebGLUniformLocation;
pMatrixUniform: WebGLUniformLocation;
mvMatrixUniform: WebGLUniformLocation;
columnWidthUniform: WebGLUniformLocation;
scrollXUniform: WebGLUniformLocation;
scrollYUniform: WebGLUniformLocation;
zoomXUniform: WebGLUniformLocation;
zoomYUniform: WebGLUniformLocation;
offsetYUniform: WebGLUniformLocation;
supersamplingRatioUniform: WebGLUniformLocation;
positionBitPackBaseUniform: WebGLUniformLocation;
texSizeUniform: WebGLUniformLocation;
};
export declare type OncoprintTrackBuffer = WebGLBuffer & {
itemSize: number;
numItems: number;
};
export declare type OncoprintVertexTrackBuffer = OncoprintTrackBuffer & {
specificShapesNumItems: number;
universalShapesNumItems: number;
};
export default class OncoprintWebGLCellView {
private $container;
private $canvas;
private $overlay_canvas;
private $gap_canvas;
private $column_label_canvas;
private $dummy_scroll_div_contents;
private tooltip;
private highlight_area_callback;
readonly position_bit_pack_base = 128;
private readonly supersampling_ratio;
private readonly antialias_on_cell_width_thresh;
private antialias;
private dummy_scroll_div_client_size;
visible_area_width: number;
private mouseMoveHandler;
private ctx;
private gap_ctx;
private ext;
private overlay_ctx;
private column_label_ctx;
private mvMatrix;
private pMatrix;
private shader_program;
private scroll_x;
private scroll_y;
private maximum_column_label_width;
private maximum_column_label_height;
private rendering_suppressed;
private specific_shapes;
private universal_shapes;
vertex_data: TrackProp<{
pos_array: Float32Array;
col_array: Float32Array;
col_bank: ColorBank;
universal_shapes_start_index: number;
}>;
vertex_column_array: TrackProp<Float32Array>;
private vertex_position_buffer;
private vertex_color_buffer;
private vertex_column_buffer;
private simple_count_buffer;
private is_buffer_empty;
private color_texture;
private id_to_first_vertex_index;
constructor($container: JQuery, $canvas: JQuery<HTMLCanvasElement>, $overlay_canvas: JQuery<HTMLCanvasElement>, $gap_canvas: JQuery<HTMLCanvasElement>, $column_label_canvas: JQuery<HTMLCanvasElement>, $dummy_scroll_div_contents: JQuery, model: OncoprintModel, tooltip: OncoprintToolTip, highlight_area_callback: undefined | ((left: number, right: number) => void), cell_over_callback: CellMouseOverCallback, cell_click_callback: CellClickCallback);
private drawGapLabel;
private getNewCanvas;
private getGapContext;
private getWebGLCanvasContext;
private createShaderProgram;
private createShader;
private overlayStrokeRect;
private overlayFillRect;
clearOverlay(): void;
private getOverlayContextAndClear;
private getColumnLabelsContext;
private getColumnLabelY;
private overlayColumnLabelHighlight;
private getWebGLContextAndSetUpMatrices;
private getColumnIndexesAfterAGap;
private setUpShaders;
private resizeAndClear;
gapTooltipTargets: OncoprintGap[];
hoveredGap: OncoprintGap;
private renderAllTracks;
private static getColumnLabelsFontSize;
private prepareContextForColumnLabelText;
private renderColumnLabels;
private getColumnLabelAngleRadians;
private getColumnLabelCircleSpec;
private ensureSimpleCountBuffer;
private clearTrackPositionAndColorBuffers;
private clearTrackColumnBuffers;
private deleteBuffers;
private deleteSimpleCountBuffer;
private getTrackBuffers;
private computeVertexColumns;
private computeVertexPositionsAndVertexColors;
private getShapes;
private refreshCanvas;
private highlightCell;
private highlightTrack;
private highlightColumn;
getViewportOncoprintSpace(model: OncoprintModel): {
top: number;
bottom: number;
left: number;
right: number;
center_col_index: number;
};
isUsable(): boolean;
removeTrack(model: OncoprintModel, track_id: TrackId): void;
moveTrack(model: OncoprintModel): void;
setTrackGroupOrder(model: OncoprintModel): void;
setTrackShowGaps(model: OncoprintModel): void;
setColumnLabels(model: OncoprintModel): void;
addTracks(model: OncoprintModel, track_ids: TrackId[]): void;
setIdOrder(model: OncoprintModel, ids: ColumnId[]): void;
setTrackGroupSortPriority(model: OncoprintModel): void;
sort(model: OncoprintModel): void;
suppressRendering(): void;
releaseRendering(model: OncoprintModel): void;
hideIds(model: OncoprintModel): void;
setTrackImportantIds(model: OncoprintModel, track_id: TrackId): void;
setTrackData(model: OncoprintModel, track_id: TrackId): void;
setRuleSet(model: OncoprintModel, target_track_id: TrackId): void;
shareRuleSet(model: OncoprintModel, target_track_id: TrackId): void;
setSortConfig(model: OncoprintModel): void;
setHorzScroll(model: OncoprintModel): void;
setVertScroll(model: OncoprintModel): void;
setScroll(model: OncoprintModel): void;
private updateAntialiasSetting;
setZoom(model: OncoprintModel): void;
setHorzZoom(model: OncoprintModel): void;
setVertZoom(model: OncoprintModel): void;
setTrackGroupHeader(model: OncoprintModel): void;
setViewport(model: OncoprintModel): void;
getTotalWidth(model: OncoprintModel, base?: boolean): number;
getVisibleAreaWidth(): number;
setWidth(w: number, model: OncoprintModel): void;
private getColumnLabelsHeight;
getTotalHeight(model: OncoprintModel): number;
getVisibleAreaHeight(model: OncoprintModel): number;
setCellPaddingOn(model: OncoprintModel): void;
setHighlightedIds(model: OncoprintModel): void;
setHighlightedTracks(model: OncoprintModel): void;
highlightHighlightedIds(model: OncoprintModel, opt_exclude_ids?: ColumnId[]): void;
highlightHighlightedTracks(model: OncoprintModel): void;
getDummyScrollDivClientSize(): {
width: number;
height: number;
};
getGaps(model: OncoprintModel, track_id: number): OncoprintGapConfig[];
toSVGGroup(model: OncoprintModel, offset_x: number, offset_y: number): SVGGElement;
destroy(): void;
}
export {};