UNPKG

@iktos-oss/rdkit-provider

Version:

exports an initialized RDKit instance, with helper functions

71 lines (53 loc) 4.78 kB
# 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'; <RDKitProvider> <Component /> </RDKitProvider> ``` you can also enable caching for molecule, which would enhance performance ```html import { RDKitProvider } from '@iktos/rdkit-provider'; <RDKitProvider cache={{ enableJsMolCaching: true, maxJsMolsCached: 50 }}> <Component /> </RDKitProvider> ``` 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)