Skip to main content

MolDAIS: Molecular Descriptors with Actively Identified Subsets

MolDAIS is a powerful tool for efficient molecular property optimization through adaptive learning of sparse subspaces.

PyPI version License: MIT

Overview

MolDAIS provides a framework for accelerating black-box molecular property optimization by intelligently identifying relevant molecular subspaces. This approach significantly reduces the computational cost of exploring chemical space while maintaining optimization effectiveness.

Installation

pip install MolDAIS

Quick Start Example

More examples are presented in the jupyter notebook

import torch
from MolDAIS.moldais import MolDAIS

# Step 1: Define your molecular search space
smiles_list = [
    "CCO", "CCC", "CCN", "CCCl", "CCCC", "CCCO", "CCCN", "ClCCCl",
    "CCOCC", "CCON", "CCCNCl", "CCCCCl", "CCCCN", "CCCCCO", "CCNCl",
    "CCNO", "ClCCl", "CCOO", "CCNN", "COCO"
]

# Step 2: Define target property values (e.g., logP)
logP_values = torch.tensor([0.5, 1.2, 0.8, 2.1, 3.0, 1.5, 2.3, 2.8, 0.9, 1.4,
                            2.5, 1.9, 1.1, 2.7, 2.6, 1.6, 1.8, 2.2, 1.3, 1.7], 
                            dtype=torch.float32)

# Step 3: Define the optimization problem
problem = MolDAIS.Problem(smiles_search_space=smiles_list,
                          targets=logP_values.unsqueeze(1),
                          experiment_name="LogP_Optimization_Test")
problem.compute_descriptors()

# Step 4: Configure optimizer parameters
optimizer_parameters = MolDAIS.OptimizerParameters(
    sparsity_method='MI',           # Feature selection method (Mutual Information)
    acq_fun='EI',                   # Acquisition function (Expected Improvement)
    num_sparsity_feats=10,          # Number of features to select
    multi_objective=False,          # Single-objective optimization
    constrained=False,              # No constraints
    total_sample_budget=7,          # Total evaluation budget
    initialization_budget=2,        # Initial points for model building
    seed=123                        # Random seed for reproducibility
)

# Step 5: Create and run the optimization
mol_dais = MolDAIS(problem=problem, optimizer_parameters=optimizer_parameters)
mol_dais.configuration.optimize()

# Step 6: Get results
print("Best molecules found:")
print(mol_dais.results.best_molecules)
print("Best property values:")
print(mol_dais.results.best_values)

# Step 7: Visualize optimization progress
mol_dais.configuration.plot_convergence()

Features

  • Adaptive Feature Selection: Intelligently identifies relevant molecular descriptors
  • Flexible Acquisition Functions: Multiple strategies for exploring chemical space
  • Support for Constraints: Handle constrained optimization problems
  • Multi-objective Optimization: Optimize multiple molecular properties simultaneously

Planned Features

  • Custom Callable Functions: Upcoming support for custom python wrapped functions
  • Human-in-the-loop: Upcoming support for interactive optimization

Usage Options

With a SMILES List and Callable Function

# Coming soon - Human-in-the-loop optimization capabilities

Citation

Submitted to RSC Digital Discovery. Formal citation coming soon...

Based on previous work:

@misc{sorourifar2024accelerating,
      title={Accelerating Black-Box Molecular Property Optimization by Adaptively Learning Sparse Subspaces}, 
      author={Farshud Sorourifar and Thomas Banker and Joel A. Paulson},
      year={2024},
      eprint={2401.01398},
      archivePrefix={arXiv},
      primaryClass={q-bio.BM}
}

Contact

For questions, support, or collaboration opportunities:
Farshud Sorourifar - sorourifar.1@osu.edu

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for moldais 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for moldais 1.0.0
File Size Uploaded
moldais-1.0.0.tar.gz 11.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for moldais 1.0.0
File Interpreter ABI Platform
moldais-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.8 kB

Release files / moldais-1.0.0.tar.gz

Download URL moldais-1.0.0.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
961ca1998b35df1af12fd7b06352477d0715550b7ec6cf1c6354423457c241b5
BLAKE2b-256 checksum
How to use checksums
aefe65a2bdc4e05f09bda202b0bc63ddc2f2f231c1b5f3cb9835c8b7758ea926
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Release files / moldais-1.0.0-py3-none-any.whl

Download URL moldais-1.0.0-py3-none-any.whl
Size 9.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d7ec3156ad75444c20bec5fc88e1dd9c92648eb83cb7bab5c13dbbcda2975815
BLAKE2b-256 checksum
How to use checksums
60d58e5c981bf7392de84e4dbcd0ac176ca396bee9e329a6993fbe6cc075bfc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.21

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.8

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page