Ketcher is an open-source web-based chemical structure editor incorporating high performance, good portability, light weight, and ability to easily integrate into a custom web-application. Ketcher is designed for chemists, laboratory scientists and technicians who draw structures and reactions.
- ⚡️ Fast 2D structure representation that satisfies common chemical drawing standards
- 💠 3D structure visualization
- 📝 Template library (including custom and user's templates)
- 🔩 Add atom and bond basic properties and query features, add aliases and Generic groups
- 🌀 Stereochemistry support during editing, loading, and saving chemical structures
- ➿ Storing history of actions, with the ability to rollback to previous state
- 💾 Ability to load and save structures and reactions in MDL Molfile or RXN file format, InChI String, ChemAxon Extended SMILES, ChemAxon Extended CML file formats
- 🔬 Zoom in/out, hotkeys, cut/copy/paste
- 🔮 OCR - ability to recognize structures at pictures (image files) and reproduce them
- 📋 Copy and paste between different chemical editors
- 🛠️ Settings support (Rendering, Displaying, Debugging)
- 📷 Use of SVG to achieve best quality in-browser chemical structure rendering
- Atom Tool, Bond Tool, and Template Tool to draw and edit structures
- Aromatize/De-aromatize Tool
- Calculate CIP Descriptors Tool
- Structure Check Tool
- MW and Structure Parameters Calculate Tool
- Select, modify, and erase connected and unconnected atoms and bonds using Selection Tool, or using Shift key
- Advanced Structure Clean up Tool (+ stereochemistry checking and structure layout)
- Simple Structure Clean up Tool (checks bonds length, angles and spatial arrangement of atoms)
- Easy to use R-Group and S-Group tools (Generic, Multiple group, SRU polymer, peratom, Data S-Group)
- Reaction Tool (reaction generating, manual and automatic atom-to-atom mapping)
- Flip/Rotate Tool
At this moment Ketcher can be embedded into your application in two ways:
- as a react component library
- as ready-to-run application (to find desired version please look at Assets block of releases). The application can be injected as IFrame or a separate page.
Look at the following link for details.
You can find the instruction for service installation here.
Project | Status | Description |
---|---|---|
ketcher-core | Core functionality: domain, shared services, functions and interface declarations | |
ketcher-standalone | Contains only the functionality necessary to start Ketcher in standalone mode | |
ketcher-react | Package contains only the functionality necessary to define components. |
Ketcher uses Miew-React for viewing and editing data in 3D.
You can find the latest version of Miew-React here. The last checked version - 1.0.0.
Ketcher can return drawn structures using the following methods:
getSmiles(isExtended = false): Promise<string>
– returns string
representation of drawn structure in SMILES format.
Parameters: isExtended: boolean
. By default, false
. Indicates, whether extended SMILES format needs to be used.
getMolfile(molfileFormat): Promise<string>
– returns string
representation of drawn structure in MOL-format.
Parameters: molfileFormat: 'v2000' | 'v3000'
. Optional, by default, 'auto'. Indicates, in which format result will be returned. If no desired format is provided, then it is chosen automatically, depending on drawn structure.
getRxn(molfileFormat): Promise<string>
– returns string
representation of drawn structure in RXN-format.
Parameters: molfileFormat: 'v2000' | 'v3000'
. Optional, by default, 'v2000'. Indicates, in which format result will be returned.
getKet(): Promise<string>
– returns string
representation of drawn structure in internal Ket-format.
getSmarts(): Promise<string>
– returns string
representation of drawn structure in Smarts-format.
getCml(): Promise<string>
– returns string
representation of drawn structure in Cml-format.
getSdf(molfileFormat): Promise<string>
– returns string
representation of drawn structure in Sdf-format.
Parameters: molfileFormat: 'v2000' | 'v3000'
. Optional, by default, 'v2000'. Indicates, in which format result will be returned.
getCDXml(): Promise<string>
– returns string
representation of drawn structure in CDXml-format.
getCDX(): Promise<string>
– returns string
representation of drawn structure in CDX-format.
getInchi(withAuxInfo = false): Promise<string>
– returns string
representation of drawn structure in Inchi-format.
Parameters: withAuxInfo: boolean
. Optional, by default, false
.
getInchiKey(): Promise<string>
– returns string
representation of drawn structure in InChiKey-format.
containsReaction(): boolean
– returns true
, in case drawn structure contains reaction; false
otherwise.
isQueryStructureSelected(): boolean
– returns true
, in case selected structure has query.
setMolecule(structure: string): Promise<void>
– draws passed structure on the canvas. Before drawing passed structure, current structure is removed.
Parameters: structure: string
. Structure is a string in any supported format.
addFragment(structure: string): Promise<void>
– adds passed structure on the canvas. Current structure is not changed.
Parameters: structure: string
. Structure is a string in any supported format.
layout(): Promise<void>
– performs layout algorithm for drawn structure.
recognize(image: Blob, version?: string): Promise<Struct>
– recognizes a structure from image.
Parameters: image: Blob
– image to recognize. Returns Struct
– object, which represents recognized structure.
generateImage(data: string, options: {
outputFormat: 'png' | 'svg';
backgroundColor: string;
bondThickness: number;
}): Promise<Blob>
Generates image from passed structure.
Parameters:
data
– string
representation of structure in any supported format.
options
– object with the following properties:
* outputFormat
– can be 'png' or 'svg'
* backgroundColor
– image background color
* bondThickness
– thickness of bonds in output structure
You can add extra configuration in editor.setSetting
Allowed parameters:
- disableQueryElements: Disable the elements from the Extended Table
ketcher.setSettings({ "disableQueryElements": ["Pol", "CYH", "CXH"] })
- general.dearomatize-on-load: Dearomatize the molecule when ketcher application starts
ketcher.setSettings({ "general.dearomatize-on-load": true })
- ignoreChiralFlag: Ignore the chiral flag from .mol files
ketcher.setSettings({ "ignoreChiralFlag": true })
See Contributing Guide.
Please read LICENSE and NOTICE for details.
Copyright (c) 2021 EPAM Systems, Inc.