/** * Copyright (c) 2018-2024 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Adam Midlik * @author Aliaksei Chareshneu */ import { BehaviorSubject } from 'rxjs'; import { PluginStateObject } from 'molstar/lib/mol-plugin-state/objects'; import { PluginBehavior } from 'molstar/lib/mol-plugin/behavior'; import { PluginContext } from 'molstar/lib/mol-plugin/context'; import { StateObjectCell, StateSelection, StateTransform } from 'molstar/lib/mol-state'; import { ParamDefinition } from 'molstar/lib/mol-util/param-definition'; import { VolsegMeshSegmentation } from '../meshes/mesh-extension'; import { VolumeApiV2 } from './volseg-api/api'; import { DescriptionData, SegmentAnnotationData, ShapePrimitiveData } from './volseg-api/data'; import { MetadataWrapper } from './volseg-api/utils'; import { VolsegMeshSegmentationData } from './entry-meshes'; import { VolsegLatticeSegmentationData } from './entry-segmentation'; import { VolsegStateData } from './entry-state'; import { VolsegVolumeData, SimpleVolumeParamValues } from './entry-volume'; import { StateTransforms } from 'molstar/lib/mol-plugin-state/transforms'; import { PluginComponent } from 'molstar/lib/mol-plugin-state/component'; import { VolsegGeometricSegmentationData } from './entry-geometric-segmentation'; import { VolsegGeometricSegmentation } from './shape_primitives'; import { RuntimeContext } from 'molstar/lib//mol-task'; import { CVSXFilesData } from '../cvsx-extension/data'; import { Source } from '../../common'; export declare const GEOMETRIC_SEGMENTATION_NODE_TAG = "geometric-segmentation-node"; export declare const MESH_SEGMENTATION_NODE_TAG = "mesh-segmentation-node"; export declare const MAX_VOXELS: number; export declare const BOX: [[number, number, number], [number, number, number]] | null; export declare const VOLUME_NODE_TAG = "volume-node-tag"; export declare const LATTICE_SEGMENTATION_NODE_TAG = "segmenation-node-tag"; export declare function createLoadVolsegParams(plugin?: PluginContext, entrylists?: { [source: string]: string[]; }): { serverUrl: ParamDefinition.Text; source: ParamDefinition.Mapped>; }; export type LoadVolsegParamValues = ParamDefinition.Values>; type RawDataKind = 'volume' | 'segmentation' | 'mesh' | 'primitive'; export declare function createVolsegEntryParams(plugin?: PluginContext): { serverUrl: ParamDefinition.Text; source: ParamDefinition.Select<"custom" | "emdb" | "pdbe" | "empiar" | "idr">; entryId: ParamDefinition.Text; }; type VolsegEntryParamValues = ParamDefinition.Values>; export declare namespace VolsegEntryParamValues { function fromLoadVolsegParamValues(params: LoadVolsegParamValues): VolsegEntryParamValues; } declare const VolsegEntry_base: { new (data: VolsegEntryData, props?: { label: string; description?: string | undefined; } | undefined): { id: import("molstar/lib/mol-util").UUID; type: PluginStateObject.TypeInfo; label: string; description?: string | undefined; data: VolsegEntryData; }; type: PluginStateObject.TypeInfo; is(obj?: import("molstar/lib/mol-state").StateObject> | undefined): obj is import("molstar/lib/mol-state").StateObject; }; export declare class VolsegEntry extends VolsegEntry_base { } export type VolRepr3DT = typeof StateTransforms.Representation.VolumeRepresentation3D; export declare class RawMeshSegmentData { segmentId: number; data: Uint8Array | string; constructor(segmentId: number, data: Uint8Array | string); } declare class RawChannelData extends PluginComponent { timeframeIndex: number; channelId: string; data: Uint8Array | string | RawMeshSegmentData[]; constructor(timeframeIndex: number, channelId: string, data: Uint8Array | string | RawMeshSegmentData[]); } declare class RawSegmentationData extends PluginComponent { timeframeIndex: number; segmentationId: string; data: Uint8Array | string | RawMeshSegmentData[] | ShapePrimitiveData; constructor(timeframeIndex: number, segmentationId: string, data: Uint8Array | string | RawMeshSegmentData[] | ShapePrimitiveData); } export interface StateHierarchyMirror { volumes: StateObjectCell[]; segmentations: StateObjectCell[]; geometricSegmentations: StateObjectCell[]; meshSegmentations: StateObjectCell[]; } declare class RawTimeframesDataCache { entryData: VolsegEntryData; kind: RawDataKind; private cache; private maxEntries; private totalSizeLimitInBytes; constructor(entryData: VolsegEntryData, kind: RawDataKind); private setCacheSizeInItems; private _createKey; private _getEntrySize; private _setCacheSizeInItems; add(data: RawChannelData | RawSegmentationData): null | undefined; get(timeframeIndex: number, channelIdOrSegmentationId: string, kind: RawDataKind): Promise; } export declare class VolsegEntryData extends PluginBehavior.WithSubscribers { plugin: PluginContext; ref: string; api: VolumeApiV2; source: Source; /** Number part of entry ID; e.g. '1832' */ entryNumber: string; /** Full entry ID; e.g. 'emd-1832' */ entryId: string; pdbs: string[]; kind: 'api' | 'file'; filesData: CVSXFilesData | undefined; metadata: BehaviorSubject; cachedVolumeTimeframesData: RawTimeframesDataCache; cachedSegmentationTimeframesData: RawTimeframesDataCache; cachedMeshesTimeframesData: RawTimeframesDataCache; cachedShapePrimitiveData: RawTimeframesDataCache; state: { hierarchy: BehaviorSubject; }; readonly volumeData: VolsegVolumeData; readonly geometricSegmentationData: VolsegGeometricSegmentationData; readonly latticeSegmentationData: VolsegLatticeSegmentationData; readonly meshSegmentationData: VolsegMeshSegmentationData; private readonly modelData; private highlightRequest; private getStateNode; currentState: BehaviorSubject; visibleSegments: ParamDefinition.ObjectList>; visibleModels: ParamDefinition.ObjectList>; channelsData: ParamDefinition.ObjectList>; }>>; currentVolume: BehaviorSubject; colorTheme: ParamDefinition.NamedParams; sizeTheme: ParamDefinition.NamedParams; }>>>[]>; currentTimeframe: BehaviorSubject; private constructor(); private initialize; private initializeFromFile; static create(plugin: PluginContext, params: VolsegEntryParamValues): Promise; private static getRawLatticeSegmentationsFromCSVX; private static getRawGeometricSegmentationsFromCVSX; private static getRawMeshSegmentationsFromCSVX; static createFromFile(plugin: PluginContext, file: Uint8Array, runtimeCtx: RuntimeContext): Promise; getData(timeframeIndex: number, channelIdOrSegmentationId: string, kind: RawDataKind): Promise; sync(): void; private init; private initFromFile; updateMetadata(): Promise; register(ref: string): Promise; unregister(): Promise; removeSegmentAnnotation(segmentId: number, segmentationId: string, kind: 'lattice' | 'mesh' | 'primitive'): Promise; removeDescription(descriptionId: string): Promise; editDescriptions(descriptionData: DescriptionData[]): Promise; editSegmentAnnotations(segmentAnnotationData: SegmentAnnotationData[]): Promise; private _resolveBinaryUrl; _resolveStringUrl(urlString: string): Promise; _loadRawMeshSegmentationData(timeframe: number, segmentationId: string): Promise; _loadGeometricSegmentationData(timeframe: number, segmentationId: string): Promise; _loadRawChannelData(timeframe: number, channelId: string): Promise; _loadRawLatticeSegmentationData(timeframe: number, segmentationId: string): Promise; private loadRawChannelsData; private loadRawLatticeSegmentationData; private loadRawMeshSegmentationData; private loadRawShapePrimitiveData; preloadVolumeTimeframesData(): Promise; preloadSegmentationTimeframesDataFromFile(): void; preloadShapePrimitivesTimeframesDataFromFile(): void; preloadMeshTimeframesDataFromFile(): void; preloadVolumeTimeframesDataFromFile(): void; preloadSegmentationTimeframesData(): Promise; preloadMeshesTimeframesData(): Promise; preloadShapePrimitivesTimeframesData(): Promise; updateProjectData(timeframeIndex: number): Promise; changeCurrentTimeframe(index: number): void; addCurrentVolume(t: StateTransform): void; removeCurrentVolume(ref: string): void; actionHighlightSegment(segmentKey?: string): void; actionSetOpacity(opacity: number, segmentationId: string, kind: 'lattice' | 'mesh' | 'primitive'): Promise; actionShowFittedModel(pdbIds: string[]): Promise; actionSetVolumeVisual(type: 'isosurface' | 'direct-volume' | 'off', channelId: string, transform: StateTransform): Promise; actionUpdateVolumeVisual(params: SimpleVolumeParamValues, channelId: string, transform: StateTransform): Promise; private highlightSegment; private selectSegment; updateStateNode(params: Partial): Promise; findNodesByRef(ref: string): StateObjectCell>, StateTransform>, import("molstar/lib/mol-state").StateObject>, any>>>; /** Find the nodes under this entry root which have all of the given tags. */ findNodesByTags(...tags: string[]): StateSelection.CellSeq>, StateTransform>, import("molstar/lib/mol-state").StateObject>, any>>>>; newUpdate(): import("molstar/lib/mol-state").StateBuilder.To>, import("molstar/lib/mol-state").StateTransformer>, import("molstar/lib/mol-state").StateObject>, any>>; private readonly labelProvider; private getSegmentationIdFromLoci; private getSegmentationKindFromLoci; private getSegmentIdFromLoci; setTryUseGpu(tryUseGpu: boolean): Promise; setSelectionMode(selectSegments: boolean): Promise; } export {};