Incremental Smiles Parsing + Sanitization improvements

Open
#9,475 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Refactor
Clarity
Needs clarification
Activity status
Active
Tech stack
cpp
Domain
performance

Research direction

Start with the benchmark code on the smiles-pipeline-benchmark branch and the supplied benchmark_cxsmiles.zip; the issue names no source files or tests. Compare the benchmark results with the rdkit-opt-everything branch and define one independently measurable hotspot improvement before contributing.

Written by the indexing model from the issue text.

Description

Smiles Parsing + Sanitization doesn't have a single giant bottleneck, but has lots of individually contributing functions. Below is a flame graph of the non-legacy workflow measured on >100k Enamine REAL molecules.

Image

Based on the flame graph hotspots, I had models look at anything that had > 1% total runtime for optimization opportunities and had them do a build/test/measure cycle. Got quite solid results, 13 valid changes (I've personally checked most of them) leading to a cumulative speedup of almost 20% e2e.

Image

This is a tracking bug for a bunch of small PRs I plan to put up to make small improvements to the pipeline performance.

Reproducing Benchmarks:

Sampling of molecules used in the benchmark:
benchmark_cxsmiles.zip

Branches with just the benchmark code, and with all of the commits stacked

Dominant language
HTML
Stars
3.6k
Forks
1.1k
Avg merge
2d 9h
Merged PRs (30d)
42

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from rdkit/rdkit

All issues in rdkit/rdkit

Similar issues

More Performance issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.