UNPKG

xsmiles

Version:

XSMILES is a JavaScript tool to visualize atom and non-atom attributions and SMILES strings through interactive coordinated visualizations.

123 lines (76 loc) 4.64 kB
# Molecular structures and SMILES visualization XSMILES is a JavaScript tool to visualize atom and non-atom attributions and SMILES strings through interactive coordinated visualizations. It is also distributed as a plugin to be used within Jupyter Lab notebooks, as a website where users can input molecules using a JSON format, and as a KNIME plugin. XSMILES uses the [RDKit MinimalLib](https://github.com/rdkit/rdkit) to draw the molecule structures. To create the JSON file that can be used with the `demonstration website`, please check the "Jupyter Lab" and "Use Cases" related notebooks cited in section `Availability and examples` of this repository. ## Please Cite If you use XSMILES, the use cases, its code, or the generated explanations, please cite our article: **Article in preparation**, a preprint should appear mid September! ``` Heberle, H., Zhao, L., Schmidt, S., Wolf, T., & Heinrich, J. (2022). XSMILES: interactive visualization for molecules, SMILES and XAI scores. Article in preparation. ``` ```BibTeX @article{Heberle2022XSMILES, author = {Heberle, Henry and Zhao, Linlin and Schmidt, Sebastian and Wolf, Thomas and Heinrich, Julian}, doi = {}, journal = {Article in preparation}, month = {}, number = {}, pages = {}, title = {{XSMILES: interactive visualization for molecules, SMILES and XAI scores}}, volume = {}, year = {2022} } ``` ## Availability and examples - [TBD Demo website](https://) - [HOW TO use XSMILES (JupyterLab notebook)](https://github.com/Bayer-Group/xsmiles-jupyterlab/examples) - [TBD: HOW TO use XSMILES (Notebook in PDF)](http://) - [More examples with Jupyter Lab Notebooks](https://github.com/Bayer-Group/xsmiles-use-cases) - [Jupyter Lab plugin](https://github.com/Bayer-Group/xsmiles-jupyterlab/) - [TBD: PiPY repository](http://) - [TBD: KNIME component](http://) ![XSMILES](img/vis-example.png?raw=true) ![XSMILES](img/interactivity.png?raw=true) ## Distributions formats XSMILES is distributed in 3 main formats and they are available in the `dist` folder. Please go to the Readme from that folder for Details. ## Using XSMILES as npm package **Requirement**: RDKit MinimalLib needs to be loaded as in `window.RDKit = RDKit;` before any XSMILES functionality is used. For the Demo Website of this project, you can see how we loaded it on files `src/index.tsx` and `public/index.html`. Depending on the project, you may need to load it in different ways. Another example is shown in `dist/knime/GenericJavascriptView.js`, where we load RDKit directly from an URL. Please refer to https://github.com/rdkit/rdkit-js to learn how to load RDKit. *In future versions we want to include the dependency in the npm package, so you won't need to worry about it.* Run `npm install xsmiles` to install the module package and use XSMILES in another web-based system. If `xsmiles` is not in the `npm repository`, please download the one of the released versions from this repository and run the code below, changing the version accordingly: `npm install xsmiles-0.5.7.tgz` ## Using XSMILES as Plain javascript **Required**: RDKit MinimalLib, as explained in the section above. You can use XSMILES from our `index.js` available at `dist/plain`. Once your webpage loads it, it will be available through the `window` global variable: ```javascript window.xsmiles.appendSingleView(col, setup); ``` Please check `dist/knime` for an example of how it can be used within a Javascript code. In that example, we have XSMILES working in a KNIME's Javascript View. The `xsmiles.js` is injected in the View through a "table" that is converted to a "variable". For more details, please refer to the KNIME example referred at the top of this page. ## Running the Demonstration website locally ```bash npm install npm start ``` ## Development It builds a module that export functions (defined in `src/modules`) and a web-system (defined in `src/webpage`) that provides a GUI to input a .json file and display smiles strings - their XAI scores in the form of coordinated bar charts and molecular structure. The **module functions** are exported into `dist/modules` and the **website** to be served is exported into `dist/web`. Components were created to be exported and used in the [ xsmiles-jupyterlab](https://github.com/Bayer-Group/xsmiles-jupyterlab) project, so that it can be used in Jupyter Lab notebooks. Run `npm install` to install all dependencies. ### Starting the website in development mode `npm start` ### Building modules (npm, plain javascript) and website `npm run build` ### Packing the XSMILES to use with `npm install` `npm run build` `npm pack`