Skip to main content

Chemical grouping package based on structural patterns, functional lists, and nomenclature classification

Project description

FCCgroup

PyPI Python License: CC BY-SA 4.0 Issues

FCCgroup is a Python package for grouping chemicals with three complementary methods:

  • Structural pattern matching with SMARTS fingerprints
  • Functional list matching against packaged reference lists
  • Regex-based grouping from chemical names and formulas

The package is developed under the organization of Food Packaging Forum. Authored by Albert Anguera Sempere and Helene Wiesinger.

Features

  • Structural classification using SMARTS fingerprints
  • Functional list matching from packaged assets
  • Regex-based classification from names and formulas
  • Automatic CompTox enrichment when selected methods require missing fields
  • Flexible method selection through GroupingConfig(methods=...)
  • Optional SMARTS fingerprint subsetting via GroupingConfig(smarts_fingerprints=...)
  • Package data bundled under fccgroup/assets

Installation

Install from PyPI:

pip install fccgroup

Install from source:

git clone https://github.com/Food-Packaging-Forum/fccgroup.git
cd fccgroup
pip install -e .

Install development dependencies:

pip install -e .[dev]

Quick Start

import pandas as pd

from fccgroup import ChemicalGrouper, ColumnMapping, GroupingConfig, GroupingMethod

df = pd.DataFrame(
  {
    "CASRN": ["74-84-0"],
    "Structure": ["CC"],
    "Name": ["ethane"],
    "IUPAC": ["ethane"],
    "Formula": ["C2H6"],
  }
)

config = GroupingConfig(
  methods=[GroupingMethod.SMARTS, GroupingMethod.REGEX],
  column_mapping=ColumnMapping(
    cas="CASRN",
    smiles="Structure",
    name_columns=["Name", "IUPAC"],
    formula="Formula",
  ),
)

grouper = ChemicalGrouper(df=df, grouping_config=config)
results = grouper.group_chemicals(save=False)

# Columns are a MultiIndex: (group_label, column_name)
print(results.columns.tolist())
print(results.head())

Selecting Grouping Methods

FCCgroup does not expose a GroupingMode enum. Method selection is configured with GroupingMethod values:

  • GroupingMethod.SMARTS: structural pattern matching
  • GroupingMethod.LISTS: functional list matching
  • GroupingMethod.REGEX: regex-based grouping from names and formulas

Common configurations:

GroupingConfig(methods=[GroupingMethod.SMARTS], column_mapping=...)
GroupingConfig(methods=[GroupingMethod.SMARTS, GroupingMethod.LISTS], column_mapping=...)
GroupingConfig(
  methods=[GroupingMethod.SMARTS, GroupingMethod.LISTS, GroupingMethod.REGEX],
  column_mapping=...,
)

Filtering SMARTS fingerprints

To apply only a subset of the ~400 bundled SMARTS patterns, pass their names to smarts_fingerprints:

GroupingConfig(
  methods=[GroupingMethod.SMARTS],
  column_mapping=...,
  smarts_fingerprints={"Alkanes", "PAH derivatives hydrocarbon"},
)

When smarts_fingerprints is None (default), all available patterns are applied.

Custom assets path

By default ChemicalGrouper loads assets from the package installation directory. To point it at a different directory:

ChemicalGrouper(df=df, grouping_config=config, assets_path="/path/to/custom/assets")

Input Requirements

  • ChemicalGrouper must be initialized with a non-empty pandas DataFrame.
  • ColumnMapping must provide at least one of cas or smiles (the other may be None).
  • name_columns and formula are optional at configuration time, but REGEX grouping may trigger CompTox enrichment when they are missing.
  • Input column names can be custom; FCCgroup maps them to canonical internal fields.

Assets And External Services

  • Packaged assets live under fccgroup/assets.
  • Mapping.xlsx and the files in fccgroup/assets/lists are required for LISTS workflow.
  • CompTox (EPA) is used only when the selected methods require fields that are not already available in the mapped input columns (e.g. SMILES needed for SMARTS but only CAS provided).
  • CompTox enrichment requires a valid API key set in the COMPTOX_API_KEY environment variable.
  • CompTox usage depends on network availability and the EPA CompTox service.

Output

group_chemicals(save=True) returns a pandas DataFrame with a MultiIndex on columns. The first level groups results by method; the second level is the column name.

Top-level label Contents
Identifier Internal identifier columns (casId, SMILES)
Structural patterns Chemical groups and per-fingerprint columns (SMARTS method)
Lists Per-list membership columns (LISTS method)
Regex Pattern group columns (REGEX method)

Example column access:

# Access the SMILES identifier column
results[("Identifier", "SMILES")]

# Access the Chemical groups column
results[("Structural patterns", "Chemical groups")]

When save=True (default), results are also written to an Excel file in the current working directory.

Runtime Dependencies

FCCgroup currently declares the runtime dependencies described in requirements.txt

Citation

If you use FCCgroup in your research, please cite:

@software{fccgroup,
  title={FCCgroup: Chemical Grouping and Classification Package},
  author={Anguera Sempere, Albert and Wiesinger, Helene},
  organization={Food Packaging Forum},
  year={2026},
}

Contributing

Contributions are welcome through pull requests.

Support

For issues, questions, or suggestions, open an issue at https://github.com/Food-Packaging-Forum/fccgroup/issues.

License

Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). See LICENSE for details.

Disclaimer

This software is provided "as is", without warranties of any kind, express or implied. To the maximum extent permitted by applicable law, Food Packaging Forum and contributors shall not be liable for any direct, indirect, incidental, special, exemplary, or consequential damages arising from the use or misuse of this software.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fccgroup-0.4.1.tar.gz (78.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fccgroup-0.4.1-py3-none-any.whl (78.9 MB view details)

Uploaded Python 3

File details

Details for the file fccgroup-0.4.1.tar.gz.

File metadata

  • Download URL: fccgroup-0.4.1.tar.gz
  • Upload date:
  • Size: 78.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fccgroup-0.4.1.tar.gz
Algorithm Hash digest
SHA256 74654c1cfc166f8034c6b3d1bcb451d3df9640d196ba0867f83a4f8a22920e79
MD5 54ec74783cc054c15b5b46cd53aff12e
BLAKE2b-256 2e971fa85a6b0afbdaa7483c3883991db12b4ef9778ef7ad572589107abb79f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for fccgroup-0.4.1.tar.gz:

Publisher: python-publish.yml on Food-Packaging-Forum/FCCgroup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fccgroup-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: fccgroup-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 78.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fccgroup-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1eb53284672a3d896ac577f5552d73a5e7671990000a8f6559338367db800b8d
MD5 54bacb68323fd305edf79a6793afd8ef
BLAKE2b-256 45597c1156f5d4e16333ac56197a35b6cbbd8936daea8c97cc4577c3af20ca4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fccgroup-0.4.1-py3-none-any.whl:

Publisher: python-publish.yml on Food-Packaging-Forum/FCCgroup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page