ketcher-core
Version:
Web-based molecule sketcher
159 lines (158 loc) • 7.19 kB
TypeScript
/****************************************************************************
* Copyright 2021 EPAM Systems
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
***************************************************************************/
import { Atom } from './atom';
import { EditorSelection } from "../../application/editor";
import { Bond } from './bond';
import { Fragment } from './fragment';
import { FunctionalGroup } from './functionalGroup';
import { HalfBond } from './halfBond';
import { Loop } from './loop';
import { Pile } from './pile';
import { Pool } from './pool';
import { RGroup } from './rgroup';
import { RxnArrow } from './rxnArrow';
import { RxnPlus } from './rxnPlus';
import { SGroup } from './sgroup';
import { SGroupForest } from './sgroupForest';
import { SimpleObject } from './simpleObject';
import { Text } from './text';
import { Vec2 } from './vec2';
import { Highlight } from './highlight';
import { RGroupAttachmentPoint } from './rgroupAttachmentPoint';
import { Image } from './image';
import { MultitailArrow } from './multitailArrow';
export declare type Neighbor = {
aid: number;
bid: number;
};
export declare type StructProperty = {
key: string;
value: string;
};
export declare class Struct {
atoms: Pool<Atom>;
bonds: Pool<Bond>;
sgroups: Pool<SGroup>;
halfBonds: Pool<HalfBond>;
loops: Pool<Loop>;
isReaction: boolean;
rxnArrows: Pool<RxnArrow>;
rxnPluses: Pool<RxnPlus>;
frags: Pool<Fragment | null>;
rgroups: Pool<RGroup>;
rgroupAttachmentPoints: Pool<RGroupAttachmentPoint>;
name: string;
abbreviation?: string;
sGroupForest: SGroupForest;
simpleObjects: Pool<SimpleObject>;
texts: Pool<Text>;
functionalGroups: Pool<FunctionalGroup>;
highlights: Pool<Highlight>;
images: Pool<Image>;
multitailArrows: Pool<MultitailArrow>;
constructor();
hasRxnProps(): boolean;
hasRxnArrow(): boolean;
hasMultitailArrow(): boolean;
hasRxnPluses(): boolean;
isRxn(): boolean;
isBlank(): boolean;
isSingleGroup(): boolean;
clone(atomSet?: Pile<number> | null, bondSet?: Pile<number> | null, dropRxnSymbols?: boolean, aidMap?: Map<number, number> | null, simpleObjectsSet?: Pile<number> | null, textsSet?: Pile<number> | null, rgroupAttachmentPointSet?: Pile<number> | null, imagesSet?: Pile<number> | null, multitailArrowsSet?: Pile<number> | null, bidMap?: Map<number, number> | null): Struct;
getScaffold(): Struct;
getFragmentIds(_fid: number | number[]): Pile<number>;
getFragment(fid: number | number[], copyNonFragmentObjects?: boolean, aidMap?: Map<number, number>): Struct;
mergeInto(cp: Struct, atomSet?: Pile<number> | null, bondSet?: Pile<number> | null, dropRxnSymbols?: boolean, keepAllRGroups?: boolean, aidMap?: Map<number, number> | null, simpleObjectsSet?: Pile<number> | null, textsSet?: Pile<number> | null, rgroupAttachmentPointSet?: Pile<number> | null, imagesSet?: Pile<number> | null, multitailArrowsSet?: Pile<number> | null, bidMapEntity?: Map<number, number> | null): Struct;
prepareLoopStructure(): void;
atomAddToSGroup(sgid: any, aid: any): void;
calcConn(atom: any): any[];
findBondId(begin: any, end: any): number | null;
initNeighbors(): void;
bondInitHalfBonds(bid: any, bond?: Bond): void;
halfBondUpdate(halfBondId: number): void;
initHalfBonds(): void;
setHbNext(hbid: any, next: any): void;
halfBondSetAngle(hbid: any, left: any): void;
atomAddNeighbor(hbid: any): void;
atomSortNeighbors(aid: any): void;
sortNeighbors(list: any): void;
atomUpdateHalfBonds(atomId: number): void;
updateHalfBonds(list: any): void;
sGroupsRecalcCrossBonds(): void;
sGroupDelete(sgid: number): void;
atomSetPos(id: number, pp: Vec2): void;
rxnPlusSetPos(id: number, pp: Vec2): void;
rxnArrowSetPos(id: number, pos: Array<Vec2>): void;
simpleObjectSetPos(id: number, pos: Array<Vec2>): void;
textSetPosition(id: number, position: Vec2): void;
getCoordBoundingBox(atomSet?: Pile<number>): any;
getCoordBoundingBoxObj(): any;
getBondLengthData(): {
cnt: number;
totalLength: number;
};
getAvgBondLength(): number;
getAvgClosestAtomDistance(): number;
checkBondExists(begin: number, end: number): boolean;
findConnectedComponent(firstaid: number): Pile<number>;
findConnectedComponents(discardExistingFragments?: boolean): any[];
markFragment(idSet: Pile<number>, properties: [StructProperty]): void;
markFragments(properties?: any): void;
scale(scale: number): void;
rescale(): void;
loopHasSelfIntersections(hbs: Array<number>): boolean;
partitionLoop(loop: any): any[];
halfBondAngle(hbid1: number, hbid2: number): number;
loopIsConvex(loop: Array<any>): boolean;
loopIsInner(loop: Array<any>): boolean;
findLoops(): {
newLoops: any[];
bondsToMark: number[];
};
calcImplicitHydrogen(aid: number): void;
setImplicitHydrogen(list?: Array<number>): void;
setStereoLabelsToAtoms(): void;
atomGetNeighbors(aid: number): Array<Neighbor> | undefined;
getComponents(): {
reactants: any[];
products: any[];
};
defineRxnFragmentTypeForAtomset(atomset: Pile<number>, arrowpos: number): 1 | 2;
getBondFragment(bid: number): number | undefined;
bindSGroupsToFunctionalGroups(): void;
getGroupIdFromAtomId(atomId: number): number | null;
getGroupFromAtomId(atomId: number | undefined): SGroup | undefined;
getGroupIdFromBondId(bondId: number): number | null;
getGroupFromBondId(atomId: number): SGroup | undefined;
getGroupsIdsFromBondId(bondId: number): number[];
getBondIdByHalfBond(halfBondId: number): number | undefined;
/**
* @returns visibleAtoms = selected atoms
* - atoms in contracted functional groups
* + functional groups's attachment atoms
*/
getSelectedVisibleAtoms(selection: EditorSelection | null): number[];
getRGroupAttachmentPointsByAtomId(atomId: number): number[];
isAtomFromMacromolecule(atomId: number): boolean;
isBondFromMacromolecule(bondOrBondId: Bond | number): boolean;
isFunctionalGroupFromMacromolecule(functionalGroupId: number): boolean;
isTargetFromMacromolecule(target?: {
id: number;
map: string;
} | null): boolean | null | undefined;
disableInitiallySelected(): void;
enableInitiallySelected(): void;
}