Giter Club home page Giter Club logo

rdkit-js's Introduction

RDKit

Azure build Status Documentation Status DOI

RDKit is a collection of cheminformatics and machine-learning software written in C++ and Python.

  • BSD license - a business friendly license for open source
  • Core data structures and algorithms in C++
  • Python 3.x wrapper generated using Boost.Python
  • Java and C# wrappers generated with SWIG
  • 2D and 3D molecular operations
  • Descriptor and Fingerprint generation for machine learning
  • Molecular database cartridge for PostgreSQL supporting substructure and similarity searches as well as many descriptor calculators
  • Cheminformatics nodes for KNIME
  • Contrib folder with useful community-contributed software harnessing the power of the RDKit

Community

Code

Web presence

Materials from user group meetings

Documentation

Available on the RDKit page and in the Docs folder on GitHub

Installation

Installation instructions are available in Docs/Book/Install.md.

Binary distributions, anaconda, homebrew

  • binaries for conda python or, if you are using the conda-forge stack, the RDKit is also available from conda-forge.
  • RPMs for RedHat Enterprise Linux, Centos, and Fedora. Contributed by Gianluca Sforna.
  • debs for Ubuntu and other Debian-derived Linux distros. Contributed by the Debichem team.
  • homebrew formula for building on the Mac. Contributed by Eddie Cao.
  • recipes for building using the excellent conda package manager. Contributed by Riccardo Vianello.
  • APKs for Alpine Linux. Contributed by da Verona
  • Wheels at PyPi for all major platforms and python versions. Contributed by Christopher Kuenneth

Projects using RDKit

  • ROBERT - Automated Machine Learning Protocols
  • AQME - Automated Quantum Mechanical Environment
  • chemprop - message passing neural networks for molecular property prediction
  • RMG - Reaction Mechanism Generator
  • RDMC - Reaction Data and Molecular Conformers - package for dealing with reactions, molecules, conformers, mainly in 3D
  • pychemprojections - python library for visualizing various 2D projections of molecules.
  • pychemovality - python library for estimating the ovality of molecules.
  • ChEMBL Structure Pipeline - ChEMBL protocols used to standardise and salt strip molecules.
  • FPSim2 - Simple package for fast molecular similarity searches.
  • Datamol (docs, repo) - A Python library to intuitively manipulate molecules.
  • Scopy (docs, paper) - an integrated negative design Python library for desirable HTS/VS database design
  • stk (docs, paper) - a Python library for building, manipulating, analyzing and automatic design of molecules.
  • gpusimilarity - A Cuda/Thrust implementation of fingerprint similarity searching
  • Samson Connect - Software for adaptive modeling and simulation of nanosystems
  • mol_frame - Chemical Structure Handling for Dask and Pandas DataFrames
  • RDKit.js - The official JavaScript release of RDKit
  • DeepChem - python library for deep learning for chemistry
  • mmpdb - Matched molecular pair database generation and analysis
  • CheTo (paper)- Chemical topic modeling
  • OCEAN (paper)- Optimized cross reactivity estimation
  • ChEMBL Beaker - standalone web server wrapper for RDKit and OSRA
  • ZINC - Free database of commercially-available compounds for virtual screening
  • sdf_viewer.py - an interactive SDF viewer
  • sdf2ppt - Reads an SDFile and displays molecules as image grid in powerpoint/openoffice presentation.
  • MolGears - A cheminformatics tool for bioactive molecules
  • PYPL - Simple cartridge that lets you call Python scripts from Oracle PL/SQL.
  • shape-it-rdkit - Gaussian molecular overlap code shape-it (from silicos it) ported to RDKit backend
  • WONKA - Tool for analysis and interrogation of protein-ligand crystal structures
  • OOMMPPAA - Tool for directed synthesis and data analysis based on protein-ligand crystal structures
  • OCEAN - web-tool for target-prediction of chemical structures which uses ChEMBL as datasource
  • chemfp - very fast fingerprint searching
  • rdkit_ipynb_tools - RDKit Tools for the IPython Notebook
  • Vernalis KNIME nodes
  • Erlwood KNIME nodes
  • AZOrange

License

Code released under the BSD license.

rdkit-js's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

rdkit-js's Issues

More drawing options in interactive example

Is your feature request related to a problem? Please describe.
Not all drawing options are exposed in the additional options example.

Describe the solution you'd like
More can be exposed.

Describe alternatives you've considered
None

Additional context
N/A

Need Tanimoto Similarity Search in the rdkit/rdkit-js like RDKIT

Is your feature request related to a problem? Please describe.
No.

Describe the solution you'd like
Right now, it looks like rdkit-js only have the ability to do the Substructure Search.

However, we need to have Tanimoto Similarity search. For example:
You send a smiles string/or rdkit.get_mol(smiles string) + the similarity level (like 80% or any similarity level you want), then the code will search through an array of smiles just like what Substructure Search did. Then the function will tell if it can reach the similarity level of not.

Describe alternatives you've considered
I reviewed the source code of RDKIT. It looks the function is already there: DataStructs.TanimotoSimilarity.
Will you be able to migrate the function and put it in the rdkit-js?

Additional context
None.

Attach click event handler to hidden carbones

Is your feature request related to a problem? Please describe.

Hello, I want select atoms by clicking on them. I listen to the click events on atoms. With the css class, I could identify atom but hidden carbones aren't displayed. So I can't attach a click event handler.

Capture d’écran 2022-11-24 à 13 33 04

Describe the solution you'd like

You could display hidden carbones with a transparent . In this case, I could attach a click event handler and create interactivity.

if atom-0 is a hidden carbon I expected a svg like this:

<ellipse class="atom-0 hidden" />
<path class="bond-0 atom-0 atom-1" />
<ellipse class="atom-1" />

instead of:

<path class="bond-0 atom-0 atom-1" />
<ellipse class="atom-1" />

Describe alternatives you've considered
I need to attach the click event to the bond (svg and analyse if the user is close to the hidden carbon to trigger an event like clicking on the ellipsis would.

Thanks

Expose highlightAtomColors and highlightBondColors as in the python package

In the python package, I can generate an image with different colors for the highlighted atoms, but I can't via RDKit.js.

Example in python DrawMolecule api:

drawer.DrawMolecule(
        mol,
        highlightAtoms=[0,1],
        highlightBonds=[1,2],
        highlightAtomColors=[rgb1, rgb2],
        highlightBondColors=[rgb3, rgb4],
)

With RDKit.js I have only the highlightColour option.
RDKit.js options

 mol = this.get_molecule(smiles);
const svg = mol.get_svg_with_highlights(JSON.stringify({
        atoms: [0, 1],
        bonds: [1,2]
        highlightColour: [rgb]
}));

It would be great if I could have the same interface as python :

const svg = mol.get_svg_with_highlights(JSON.stringify({
        atoms: [0, 1],
        bonds: [1,2],
        highlightAtomColors=[rgb1, rgb2],
        highlightBondColors=[rgb3, rgb4],
}));

Unable to highlight dummy atom

Describe the bug:
Unable to highlight dummy atom
I try make Smiles formula contain dummy atoms(represent by *), which should to be highlighted when displayed in 2D.
According to my code, it always highlights the atom with index 0, which shouldn't be highlighted.
To Reproduce
Steps to reproduce the behavior:
I embed rdkit.js in a vue code. Just focus on two input variables smiles and qsmiles . it's easy to reproduce:

const molData=reactive({
  data:{
    smiles: "C(*)1=C(*)C=C(C2=CC=CC=C2)C(*)=N1",   //RDKitModule.get_mol(smiles)
    qsmiles: "*",                                  //RDKitModule.get_qmol(qsmiles)
    addAtomIndices:true,
    ...
})
  1. after js render, it return a figure like this:

error

Expected behavior
expect

Desktop (please complete the following information):

  • OS: [win10]
  • Browser [chrome]
  • Version [99.0.4844.74]

Additional context
-RDKit: Release_2022.03.1pre

Finalize main README and sub-readmes

Main readme:

  • - Intro
  • - Quickstart
  • - Examples/Documentation
  • - How to contribute w/ link to sub-repo readme
  • - Deploying
  • - Contributors
  • - Maintainers

Plain JavaScript demo:

  • - Intro
  • - How to contribute

React demo:

  • - Intro
  • - How to contribute

Getting to first release

Remaining tasks before closing this:

  • Bring the idea of another name because of history to Greg and others (rdkit-mini? rdkit-wasm?)
  • Explain state of repository to Greg and others
  • License review and suggest Valence Discovery in license
  • Ask how should this be merge/transfer
  • Bring discussion for rdkit-structure-renderer of ptosco being developed and published in context of this project
  • Things to do post-transfer
    • Renaming github repo path reference from MichelML/rdkit-js to rdkit/rdkit-js
    • Adjust azure pipeline and related scripts
  • #127 (and fix broken parts)
  • #129
  • #130
  • #128

Add importable MoleculeStructure React component to npm package

Is your feature request related to a problem? Please describe.
Useful for quick development in React.js

Describe the solution you'd like
Title is self explanatory.

Describe alternatives you've considered
Not having a component or implementing it home made.

Additional context
None

Add attribution information (from atom or bond index) for the items highlighted in the svg

Add attribution information (from atom or bond index) for the elements highlighted in the svg, this will be helpful for further coding

I super like the encoding and display format of svg, and I want to add some web interaction (click, doubleclick) to the 2D molecular graph generated by rdkit.js.
eg: Click on an atom or chemical bond to highlight it, means it is selected. Then return the index of the selected atom or chemical bond to the backend, and do further computationally intensive tasks in the backend.

I simply implemented the above idea through a series of svg native methods.
2022-04-06 110634
Put the highlight on top and add transparency. Click to change color, and return to index. But the current rdkitjs natively highlighted information does not have its index. This is the problem I meet.

###suggestion

My solution is map coordinates of the highlight and atom and bond,to find the smallest distance difference and get the solid item's index. BUT Map operation consumes performance

I think the ideal way is that When rdkit returns the svg, providing the index as the solid item, for each highlighted item.
(like: index information contained in the class as shown in the figure below)
2022-04-06 113306

TypeError when used the 'MoleculeStructure.vue' in VUE

Describe the bug

<template>
  <div class="home">
    <img alt="Vue logo" src="../assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js + TypeScript App" />
    <MoleculeStructure id="draw1" structure="NC(=O)CCC(N)C(=O)O" :width="350" :height="300"></MoleculeStructure>
  </div>
</template>

<script lang="ts">
  import { Options, Vue } from 'vue-class-component';
  import HelloWorld from '@/components/HelloWorld.vue'; // @ is an alias to /src
  import MoleculeStructure from '@/components/rdkit-js/examples/vue/src/components/MoleculeStructure.vue';

  @Options({
    components: {
      HelloWorld,
      MoleculeStructure,
    },
  })
  export default class Home extends Vue { }
</script>

bug goes below

MoleculeStructure.vue?0783:190 
    TypeError: window.initRDKitModule is not a function
    at eval (initRDKit.ts?c60a:16:1)
    at new Promise (<anonymous>)
    at eval (initRDKit.ts?c60a:15:1)
    at eval (MoleculeStructure.vue?0783:180:1)
    at callWithErrorHandling (runtime-core.esm-bundler.js?5c40:155:1)
    at callWithAsyncErrorHandling (runtime-core.esm-bundler.js?5c40:164:1)
    at hook.__weh.hook.__weh (runtime-core.esm-bundler.js?5c40:2682:1)
    at flushPostFlushCbs (runtime-core.esm-bundler.js?5c40:339:1)
    at flushJobs (runtime-core.esm-bundler.js?5c40:393:1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.