https://github.com/iktos/rdkit-provider
instantiate an RDKit web worker in a React context
https://github.com/iktos/rdkit-provider
cheminformatics rdkit rdkit-chem react typescript webworker webworkers
Last synced: 5 months ago
JSON representation
instantiate an RDKit web worker in a React context
- Host: GitHub
- URL: https://github.com/iktos/rdkit-provider
- Owner: iktos
- License: mit
- Created: 2023-01-25T23:37:51.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2025-03-20T09:43:40.000Z (over 1 year ago)
- Last Synced: 2025-06-01T16:22:24.785Z (about 1 year ago)
- Topics: cheminformatics, rdkit, rdkit-chem, react, typescript, webworker, webworkers
- Language: TypeScript
- Homepage:
- Size: 920 KB
- Stars: 6
- Watchers: 5
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# rdkit-provider
Initialises a web worker with `RDKitModule` instance from [@rdkit/rdkit](https://github.com/rdkit/rdkit-js) and exposes it via a react context
## Setup
#### Assets
The project using this package needs to provide it with [RDKit package assets](https://github.com/rdkit/rdkit/tree/master/Code/MinimalLib#using-the-rdkit-package-assets)
After installing [@rdkit/rdkit](https://github.com/rdkit/rdkit-js) copy to your public folder
`node_modules/@iktos-oss/rdkit-provider/lib/rdkit-worker*.js`
`node_modules/@rdkit/rdkit/dist/RDKit_minimal.js`
`node_modules/@rdkit/rdkit/dist/RDKit_minimal.wasm`
## Usage
Wrap your components/App with `RDKitProvider`
```html
import { RDKitProvider } from '@iktos/rdkit-provider';
```
you can also enable caching for molecule, which would enhance performance
```html
import { RDKitProvider } from '@iktos/rdkit-provider';
```
Options that can be passed to `RDKitProvider `:
| prop | type | functionality | required/optional |
| ----------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------- |
| `cache` | `RDKitProviderCacheOptions = { enableJsMolCaching?: boolean; maxJsMolsCached?: number; }` | enables `JSMol` caching for better performance | optional |
| `preferCoordgen` | `boolean` | will be passed to [@rdkit/rdkitjs prefer_coordgen](https://docs.rdkitjs.com/interfaces/RDKitModule.html#prefer_coordgen.prefer_coordgen-1) to use Schrodinger’s open-source Coordgen library to generate 2D coordinates of molecules | optional |
| `removeHs` | `boolean` | toggles removing hydrogens molecules. Defaults to true | optional |
| `initialWorkerInstance` | `Worker` instance of `rdkit-worker.js` | pass an rdkit worker instance, if not passed rdkit-provider creates one for you | optional |
| `rdkitPath` | `string` default to `/RDKit_minimal.js` in `initRDKit.ts` | pass a custom path to rdkit module | optional |
| `rdkitWorkerPublicFolder` | `string`, default is '', meaning the file is at the root level of the public folder | path to the folder containing the rdkit-worker-[version].js relative to the public folder | optional |
You can make use of a set of helper functions exposed by the package
```js
import { useRDKitUtils, useRDKit } from '@iktos/rdkit-provider';
const Component = () => {
const { worker } = useRDKit();
const { isValidSmiles } = useRDKitUtils();
const submit = useCallback(
async (smiles) => {
const { isValid } = await isValidSmiles({ smiles });
if (!isValid) return;
// ...
},
[isValidSmiles],
);
if (!worker) return 'loading ...';
return <>...>;
//...
};
```
Example of usage can be found in [github.com/iktos/molecule-representation](https://github.com/iktos/molecule-representation)