SMSD Pro™ — Small Molecule Subgraph Detector
Copyright (c) 2018-2026 BioInception PVT LTD
Algorithm Copyright (c) 2009-2026 Syed Asad Rahman

This product includes software developed by Syed Asad Rahman
at BioInception PVT LTD (https://github.com/asad/SMSD).

LICENSING AND COMMERCIAL USE
============================
SMSD Pro is released under the Apache License, Version 2.0.
You are free to use, modify, and distribute this software for any
purpose, including commercial use, subject to the licence terms.

  PERMITTED (no fee, no registration, no approval needed):
    * Use SMSD Pro in commercial products and services
    * Use SMSD Pro in proprietary / closed-source software
    * Bundle SMSD Pro in SaaS platforms and cloud services
    * Modify the source code for your own needs
    * Redistribute SMSD Pro (modified or unmodified)
    * Use in pharmaceutical, biotech, agrochemical pipelines
    * Use in academic research and teaching
    * Use in internal corporate tools and workflows

  REQUIRED (Apache 2.0 Section 4):
    * Include a copy of the LICENSE file in your distribution
    * Include a copy of this NOTICE file in your distribution
    * Retain all copyright and attribution notices
    * State any changes you made to the source files

  NOT PERMITTED:
    * Use the names "SMSD", "SMSD Pro", or BioInception
      trademarks to endorse your product (see TRADEMARK NOTICE)
    * Claim you wrote the original software
    * Hold contributors liable for damages

  NO WARRANTY:
    SMSD Pro is provided "AS IS", without warranty of any kind.
    See the LICENSE file for the full disclaimer.

ACADEMIC CITATION
=================
If you use SMSD Pro in academic research, please cite both papers:

  Rahman SA.
  SMSD Pro: Coverage-Driven, Tautomer-Aware Maximum Common
  Substructure Search.
  ChemRxiv, 2026.
  DOI: 10.26434/chemrxiv.15001534/v1

  Rahman SA, Bashton M, Holliday GL, Schrader R, Thornton JM.
  Small Molecule Subgraph Detector (SMSD) toolkit.
  Journal of Cheminformatics, 1:12, 2009.
  DOI: 10.1186/1758-2946-1-12

A machine-readable citation file (CITATION.cff) is included in
the repository for automated citation tools.

COMMERCIAL ATTRIBUTION
======================
If you redistribute SMSD Pro or include it in a commercial product,
the Apache License 2.0 (Section 4d) requires you to:

  1. Include a copy of this NOTICE file in your distribution
  2. Retain all copyright and attribution notices

We also request (but do not require) the following attribution
in your product documentation, About screen, or website:

  "Powered by SMSD Pro — https://github.com/asad/SMSD
   Copyright (c) BioInception PVT LTD"

TRADEMARK NOTICE
================
"SMSD"(TM), "SMSD Pro"(TM), and the BioInception molecular graph
logo(TM) are unregistered trademarks of Syed Asad Rahman /
BioInception PVT LTD. You may not use these marks to endorse or
promote products derived from this software without prior written
permission from the copyright holder.

ORIGINAL CONTRIBUTIONS
======================
The methods below were developed by Syed Asad Rahman for SMSD Pro.
Where they build on published work, that work is cited and the original
contribution is the extension described.

  1. Tautomer-aware fingerprints: ECFP-style circular atom invariants
     (Rogers and Hahn, 2010) extended with the tautomer class of each
     atom, and path fingerprints in which tautomeric atoms share a label.
  2. pH-dependent weighting of tautomer relevance: each tautomer class
     is weighted by the neutral fraction, given by the
     Henderson-Hasselbalch relation, of the ionisable sites assigned to
     its motifs, with motifs chosen by a fixed priority.
  3. Solvent-dependent corrections of the same tautomer weights. These
     weights and the pH weighting feed the tautomer confidence of a
     mapping; they do not change search results.
  4. Substructure search over precomputed candidate domains that extends
     the mapping from already mapped neighbours first, as in VF2++
     (Jüttner and Madarasi, 2018), combined with pruning of
     interchangeable atoms related to the equivalent-vertex pruning of
     Han et al. (2013) and Ren and Wang (2015), and with element and
     degree count screening of each pair before the search.
  5. A branch-and-bound common-bond (MCES) search whose upper bounds come
     from classes of compatible atoms and bonds, in the manner of the
     label-class bounds of McSplit (McCreesh et al., 2017) and the label
     and degree bounds of RASCAL (Raymond et al., 2002), extended with a
     maximum b-matching where compatibility is not an equivalence
     relation.
  6. A multi-stage two-dimensional layout pipeline with template
     placement, force-directed refinement and annealed crossing
     reduction.
  7. An SVG depiction engine following the ACS 1996 drawing conventions,
     with conventional element colouring, asymmetric double bonds, wedge
     and hash stereo marks and bond-to-label clipping.
  8. A digraph-based implementation of the CIP sequence rules following
     the IUPAC 2013 Recommendations, including Rule 3 (Z before E) and,
     for R/S descriptors, Rules 4 and 5 with the auxiliary descriptors of
     Hanson et al. (2018).

THIRD-PARTY NOTICES
===================
The Java library uses the Chemistry Development Kit (CDK) 2.13, licensed
under the GNU Lesser General Public License, version 2.1 or later. CDK
is Copyright (c) The CDK Project; see https://cdk.github.io/. The Java
CLI JAR with dependencies, the CLI installers and CPU Docker image built
from it, and the portable CLI archive bundle CDK unmodified. The Java
library uses CDK for its molecule model, SMARTS input and matching,
aromaticity, atom typing and hydrogen handling, and the CLI uses it for
SMILES and file input; the MCS, MCES and molecule-query substructure
searches are SMSD Pro's own code. The licence text is provided in
licenses/cdk/LICENSE, and licenses/cdk/README.md states where the CDK
source is published and how the bundled copy can be replaced.

The same CLI artefacts also bundle, unmodified, Beam 1.3.10, licensed
under the BSD 2-Clause License, and vecmath 1.5.2, licensed under the
GNU General Public License, version 2, with the Classpath exception.
Their licence texts are provided in licenses/beam/LICENSE and
licenses/vecmath/LICENSE, and licenses/vecmath/README.md states where
the vecmath source is published. They also bundle picocli and Jackson,
licensed under the Apache License, Version 2.0; the notices for Jackson
and the code it incorporates under the MIT, BSD 2-Clause and Boost
Software licences are kept in the META-INF directory of the CLI JAR.

The GPU Docker image includes separately licensed NVIDIA CUDA runtime
components and retains their licence notices. It does not bundle the Java CLI.

Python wheels built with OpenMP may bundle the LLVM OpenMP runtime,
licensed under Apache License 2.0 with LLVM Exceptions. Its licence
is provided in licenses/libomp/LICENSE.TXT and in wheel licence metadata.

Linux wheels built with GCC may bundle the GNU OpenMP runtime (libgomp),
licensed under GPL-3.0 with the GCC Runtime Library Exception; see
licenses/libgomp/. Windows wheels may bundle Microsoft Visual C++ runtime
components under Microsoft's redistribution terms; see licenses/msvc/.

AVAILABLE PLATFORMS
===================
  Java:   com.bioinceptionlabs:smsd on Maven Central
          com.bioinceptionlabs:smsd-cli on Maven Central (command line)
  Python: pip install smsd (PyPI)
  C++:    Header-only library (cpp/include/smsd/)

Supported release platforms and runtime requirements are listed in
docs/HOWTO-INSTALL.md. The optional smsd-cuda package is distributed separately
under the Apache License, Version 2.0, and bundles no NVIDIA runtime library.
