An open API service indexing awesome lists of open source software.

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

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)