Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
beita6969 avatar

Chemistry Tools

  • 20 installs
  • 869 repo stars
  • Updated June 8, 2026
  • beita6969/scienceclaw

chemistry-tools is a skill for computational chemistry and cheminformatics covering molecular properties, reaction balancing, thermodynamics, spectroscopy, and chemical-database lookups.

About

Chemistry-tools is a skill for computational chemistry and cheminformatics. A developer uses it to calculate molecular weight from a formula, balance chemical equations with linear algebra, run thermodynamic calculations, and query PubChem or ChEBI for compound data. It also provides spectroscopy reference tables. It runs Python (sympy, numpy) in a local venv and falls back to manual calculations when RDKit is absent.

  • Computes molecular weight, balances equations, and solves thermodynamics with Python
  • Queries PubChem and ChEBI chemical databases via curl
  • Includes a spectroscopy reference table (IR, NMR, UV-Vis, Mass Spec)

Chemistry Tools by the numbers

  • 20 all-time installs (skills.sh)
  • Ranked #1,266 of 2,065 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 2, 2026 (Skillselion catalog sync)
At a glance

chemistry-tools capabilities & compatibility

Capabilities
chembl database · chembl drug · molecular properties
Use cases
research · data analysis
Platforms
macOS
Pricing
Free
From the docs

What chemistry-tools says it does

Computational chemistry and cheminformatics.
SKILL.md
Balance using linear algebra (null space method).
SKILL.md
npx skills add https://github.com/beita6969/scienceclaw --skill chemistry-tools

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs20
repo stars869
Last updatedJune 8, 2026
Repositorybeita6969/scienceclaw

What it does

Run computational chemistry calculations and query PubChem/ChEBI for chemical data.

Who is it for?

Chemical-formula, molecular-weight, reaction-balancing, and thermodynamics calculations

Skip if: Heavy computational chemistry like DFT or MD, which the docs defer to Gaussian, ORCA, or GROMACS

When should I use this skill?

A user works with chemical formulas, molecular structures, reaction balancing, thermodynamic calculations, or chemical databases

By the numbers

  • Atomic-weight table covers ~27 elements
  • 5 spectroscopy techniques referenced (IR, 1H NMR, 13C NMR, UV-Vis, Mass Spec)

Files

SKILL.mdMarkdownGitHub ↗

Chemistry Tools

Computational chemistry and cheminformatics. Venv: source /Users/zhangmingda/clawd/.venv/bin/activate

Molecular Properties

# Using RDKit if available, otherwise manual calculations
from sympy import symbols, Eq, solve

# Molecular weight calculation (manual)
ATOMIC_WEIGHTS = {
    'H': 1.008, 'He': 4.003, 'Li': 6.941, 'Be': 9.012, 'B': 10.81,
    'C': 12.011, 'N': 14.007, 'O': 15.999, 'F': 18.998, 'Ne': 20.180,
    'Na': 22.990, 'Mg': 24.305, 'Al': 26.982, 'Si': 28.086, 'P': 30.974,
    'S': 32.065, 'Cl': 35.453, 'Ar': 39.948, 'K': 39.098, 'Ca': 40.078,
    'Fe': 55.845, 'Cu': 63.546, 'Zn': 65.38, 'Br': 79.904, 'Ag': 107.868,
    'I': 126.904, 'Au': 196.967,
}

import re
def molecular_weight(formula):
    """Calculate MW from chemical formula like 'C6H12O6'"""
    elements = re.findall(r'([A-Z][a-z]?)(\d*)', formula)
    mw = sum(ATOMIC_WEIGHTS.get(el, 0) * (int(n) if n else 1) for el, n in elements)
    return mw

# Example
print(f"Glucose (C6H12O6): {molecular_weight('C6H12O6'):.3f} g/mol")

Chemical Equation Balancing

from sympy import Matrix, lcm

def balance_equation(reactants_elements, products_elements):
    """
    Balance using linear algebra (null space method).
    Each compound is a dict of {element: count}.
    """
    all_elements = set()
    for compound in reactants_elements + products_elements:
        all_elements.update(compound.keys())
    all_elements = sorted(all_elements)
    
    n_compounds = len(reactants_elements) + len(products_elements)
    matrix = []
    for el in all_elements:
        row = []
        for comp in reactants_elements:
            row.append(comp.get(el, 0))
        for comp in products_elements:
            row.append(-comp.get(el, 0))
        matrix.append(row)
    
    M = Matrix(matrix)
    null = M.nullspace()
    if null:
        coeffs = null[0]
        # Make integer coefficients
        denom = lcm(*[c.q for c in coeffs if hasattr(c, 'q')] or [1])
        coeffs = [int(c * denom) for c in coeffs]
        return coeffs
    return None

Thermodynamics

import numpy as np

# Ideal gas law: PV = nRT
R = 8.314  # J/(mol·K)

def ideal_gas(P=None, V=None, n=None, T=None):
    """Solve for the missing variable. Units: Pa, m³, mol, K"""
    if P is None: return n * R * T / V
    if V is None: return n * R * T / P
    if n is None: return P * V / (R * T)
    if T is None: return P * V / (n * R)

# Gibbs free energy
def gibbs(dH, T, dS):
    """ΔG = ΔH - TΔS (kJ/mol, K, kJ/(mol·K))"""
    return dH - T * dS

# Nernst equation
def nernst(E0, n_electrons, Q, T=298.15):
    """E = E° - (RT/nF)ln(Q)"""
    F = 96485  # C/mol
    return E0 - (R * T / (n_electrons * F)) * np.log(Q)

# Arrhenius equation
def arrhenius(A, Ea, T):
    """k = A * exp(-Ea/RT), Ea in J/mol"""
    return A * np.exp(-Ea / (R * T))

Chemical Databases

PubChem

# Search by name
curl -s "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/aspirin/JSON" | python3 -m json.tool

# Search by SMILES
curl -s "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/smiles/CC(=O)OC1=CC=CC=C1C(=O)O/JSON"

# Get properties
curl -s "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/caffeine/property/MolecularFormula,MolecularWeight,IUPACName/JSON"

ChEBI (Chemical Entities of Biological Interest)

curl -s "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:15377" # water

Spectroscopy Reference

TechniqueWhat it measuresKey info
IRBond vibrationsFunctional groups (cm⁻¹)
NMR (¹H)H environmentsChemical shift (δ ppm), splitting
NMR (¹³C)C environmentsChemical shift (δ ppm)
UV-VisElectronic transitionsλmax, absorbance
Mass Specm/z ratioMolecular weight, fragmentation

Common IR Absorptions

  • O-H stretch: 3200-3600 cm⁻¹ (broad)
  • N-H stretch: 3300-3500 cm⁻¹
  • C-H stretch: 2850-3000 cm⁻¹
  • C=O stretch: 1650-1750 cm⁻¹
  • C=C stretch: 1600-1680 cm⁻¹
  • C-O stretch: 1000-1300 cm⁻¹

Tips

  • Always check units (SI vs CGS vs practical)
  • Use IUPAC nomenclature
  • For complex reactions, break into elementary steps
  • Verify thermodynamic data against NIST WebBook
  • For computational chemistry (DFT, MD), recommend specialized software (Gaussian, ORCA, GROMACS)

Related skills

FAQ

What can chemistry-tools calculate?

Molecular weight, balanced equations, ideal gas, Gibbs free energy, Nernst, and Arrhenius values.

Which chemical databases does chemistry-tools query?

PubChem and ChEBI, both via curl.

Data Science & MLanalyticsdatabases

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.