MyNixOS website logo
Description

Task-Oriented Cheminformatics in R Using 'RDKit' via 'Python'.

A task-oriented R interface to the 'RDKit' <https://www.rdkit.org> library through its 'Python' API via 'reticulate'. The package offers high-level cheminformatics functionality, including molecule parsing, descriptor calculation, and fingerprint generation without replicating the native structure of 'RDKit'.

rdkitpyr

The rdkitpyr package provides a high-level interface for cheminformatics tasks in R. It leverages the RDKit library via its Python API, accessed through the reticulate package. Unlike a thin wrapper around RDKit, rdkitpyr offers R-friendly, task-oriented functions without mirroring RDKit's native API. The package motto is "Focus on chemistry tasks in R, without diving into RDKit internals".

The name rdkitpyr (pronounced /ar-dee-kit-peer/) highlights its nested structure (from R to Python to the RDKit C++ library) and its role as an R-side peer to RDKit rather than a direct wrapper.

A key design principle is one Python call per task. Custom Python helper functions implement this approach, reducing overhead and ensuring consistent exception handling.

Installation

# Install 'rdkitpyr' from CRAN:
install.packages("rdkitpyr")
# Install 'rdkitpyr' from GitHub:
library(devtools)
install_github("andreysamokhin/rdkitpyr")

Quick Start

The rdkitpyr package supports both novice and advanced users.

  • Advanced users can manually set up a Python environment (Python>=3.12, `numpy>=2,<3`, and `rdkit>=2025.9.1`) and select it in R using one of the methods recommended by reticulate (e.g., setting the RETICULATE_PYTHON_ENV environment variable or using reticulate::use_*() functions). This gives full control over package versions and the Python environment.
  • Novice users do not need to install or configure Python manually. This is handled automatically by reticulate using a manifest created with reticulate::py_require(). Installation starts only when a function that requires Python is called. It may take a few minutes, and requires about 200 MB of disk space.

Here is a simple example:

library(rdkitpyr)

rdkitpyr::ConvertToInchi(c("CC", "CCC"))
#> "InChI=1S/C2H6/c1-2/h1-2H3"
#> "InChI=1S/C3H8/c1-3-2/h3H2,1-2H3"

rdkitpyr::CalculateExactMass(c("c1ccccc1", "CCCC"))
#> 78.04695 58.07825
Metadata

Version

0.2.1

License

Unknown

Platforms (78)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    uefi
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-uefi
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-linux
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-uefi
  • x86_64-windows