← Back to all sparks
V

volcalc

INFRA · APIS
Velocity0.0

Calculate Volatility of Chemical Compounds

Rebuilt itself around SMILES and .mol input, then made the chemistry configurable

cheminformaticsvolatilitysimpolsmilesapi-redesign
Current state
volcalc estimates the volatility of chemical compounds from their structure, implementing the SIMPOL.1 group-contribution method and the Meredith et al. variant. Version 2.0.0 severed the package from KEGG: calc_vol() takes .mol file paths or SMILES strings directly, is vectorized over multiple compounds, and the group-contribution maths was split into its own simpol1() function. Work since has been chemistry accuracy and configurability — the full set of SIMPOL.1 functional groups, volatility thresholds for clean atmosphere, polluted atmosphere or soil, user-supplied temperature, and a validate option returning NA when structure parsing looks suspect.
Where it's heading
The arc runs from a script tied to one database toward a general structure-to-volatility tool. Dropping KEGG from the core in 2.0.0, then removing KEGGREST as a dependency entirely in 2.2.0, took the package from volatility for KEGG compounds to volatility for any structure a user can supply. The accompanying manuscript published in 2023, and the changelog since has been careful about coefficient double-counting — amines and amides have each been corrected — which suggests the group definitions are the part under active scrutiny.
Prediction
The smarts_simpol1 dataset added in 2.2.0 documents how functional groups are defined, pointing toward further estimation methods alongside SIMPOL.1 and Meredith; splitting simpol1() out in 2.0.0 was stated to be groundwork for exactly that.

Recent moves

  1. 1y ago

    Parsing validation, user-supplied temperature, KEGGREST dropped

    Adds a validate option that returns NA when SMILES or .mol parsing looks wrong, lets users set the temperature at which volatility is estimated, and documents functional group definitions in a new smarts_simpol1 dataset. It also finishes the KEGG separation begun in 2.0.0 by dropping KEGGREST as a dependency, though the validation is unavailable on Windows.

    View source ↗
  2. 2y ago

    Authorship and citation updates

    Adds the originator of the concept as an author along with two contributors, and updates the citation files. Recorded ninety minutes after the substantive 2.1.0 release on the same day, so the two belong together.

    View source ↗
  3. 2y ago

    SMILES input, environment-specific thresholds, missing functional groups

    The chemistry catch-up release: SMILES strings accepted directly, volatility thresholds selectable for clean atmosphere, polluted atmosphere or soil, and roughly a dozen previously missing SIMPOL.1 functional groups added, from hydroperoxides to nitrophenols. It also separates the original SIMPOL.1 method from the Meredith coefficients behind an explicit argument, and removes an amide coefficient that was being double-counted.

    View source ↗
  4. 2y ago

    Rebuilt around .mol and SMILES input; SIMPOL.1 split into simpol1()

    ⚡ SPARK

    The release that set everything after it: KEGG identifiers stop being the way compounds enter the package, calc_vol() becomes vectorized over structure files, and the group-contribution calculation moves into simpol1() so other methods can sit beside it. The chemistry expansion in 2.1.0 and the configurability in 2.2.0 both depend on this shape.

    View source ↗
  5. 3y ago

    Amines group removed to stop double-counting with primary amines

    Removes the amines functional group from calc_vol() because it was double-counting against primary amines. One of a recurring class of corrections in this package, where the risk is not a crash but a quietly wrong volatility estimate.

    View source ↗
  6. 3y ago

    bug fix: standard temperature

    Changes the standard temperature used in calc_vol() from 293K to 233.15K to match the temperature at which the functional group contribution coefficients were derived. A four-line release that shifts every number the package produces.

    View source ↗