PU

pubchem-database

Provides programmatic access to PubChem chemical data and bioinformatics properties.

Install

mkdir -p .claude/skills/pubchem-database && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3694" && unzip -o skill.zip -d .claude/skills/pubchem-database && rm skill.zip

Installs to .claude/skills/pubchem-database

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Query PubChem via PUG-REST API/PubChemPy (110M+ compounds). Search by name/CID/SMILES, retrieve properties, similarity/substructure searches, bioactivity, for cheminformatics.
175 charsno explicit “when” trigger
Advanced

Key capabilities

  • Search chemical compounds by name, CID, SMILES, or formula
  • Retrieve molecular properties like weight, LogP, and TPSA
  • Perform similarity and substructure searches
  • Access bioactivity data and compound annotations
  • Convert between chemical identifier formats

How it works

It interfaces with the PubChem PUG-REST API and PubChemPy library to query the database and retrieve chemical information or perform computational searches.

Inputs & outputs

You give it
Chemical identifier or structural query
You get back
Compound data, molecular properties, or search results

When to use pubchem-database

  • Find molecular weight from a SMILES string
  • Perform similarity search for chemical compounds
  • Retrieve bioactivity data for a molecule

About this skill

PubChem Database

Overview

PubChem is the world's largest freely available chemical database with 110M+ compounds and 270M+ bioactivities. Query chemical structures by name, CID, or SMILES, retrieve molecular properties, perform similarity and substructure searches, access bioactivity data using PUG-REST API and PubChemPy.

When to Use This Skill

This skill should be used when:

  • Searching for chemical compounds by name, structure (SMILES/InChI), or molecular formula
  • Retrieving molecular properties (MW, LogP, TPSA, hydrogen bonding descriptors)
  • Performing similarity searches to find structurally related compounds
  • Conducting substructure searches for specific chemical motifs
  • Accessing bioactivity data from screening assays
  • Converting between chemical identifier formats (CID, SMILES, InChI)
  • Batch processing multiple compounds for drug-likeness screening or property analysis

Core Capabilities

1. Chemical Structure Search

Search for compounds using multiple identifier types:

By Chemical Name:

import pubchempy as pcp
compounds = pcp.get_compounds('aspirin', 'name')
compound = compounds[0]

By CID (Compound ID):

compound = pcp.Compound.from_cid(2244)  # Aspirin

By SMILES:

compound = pcp.get_compounds('CC(=O)OC1=CC=CC=C1C(=O)O', 'smiles')[0]

By InChI:

compound = pcp.get_compounds('InChI=1S/C9H8O4/...', 'inchi')[0]

By Molecular Formula:

compounds = pcp.get_compounds('C9H8O4', 'formula')
# Returns all compounds matching this formula

2. Property Retrieval

Retrieve molecular properties for compounds using either high-level or low-level approaches:

Using PubChemPy (Recommended):

import pubchempy as pcp

# Get compound object with all properties
compound = pcp.get_compounds('caffeine', 'name')[0]

# Access individual properties
molecular_formula = compound.molecular_formula
molecular_weight = compound.molecular_weight
iupac_name = compound.iupac_name
smiles = compound.canonical_smiles
inchi = compound.inchi
xlogp = compound.xlogp  # Partition coefficient
tpsa = compound.tpsa    # Topological polar surface area

Get Specific Properties:

# Request only specific properties
properties = pcp.get_properties(
    ['MolecularFormula', 'MolecularWeight', 'CanonicalSMILES', 'XLogP'],
    'aspirin',
    'name'
)
# Returns list of dictionaries

Batch Property Retrieval:

import pandas as pd

compound_names = ['aspirin', 'ibuprofen', 'paracetamol']
all_properties = []

for name in compound_names:
    props = pcp.get_properties(
        ['MolecularFormula', 'MolecularWeight', 'XLogP'],
        name,
        'name'
    )
    all_properties.extend(props)

df = pd.DataFrame(all_properties)

Available Properties: MolecularFormula, MolecularWeight, CanonicalSMILES, IsomericSMILES, InChI, InChIKey, IUPACName, XLogP, TPSA, HBondDonorCount, HBondAcceptorCount, RotatableBondCount, Complexity, Charge, and many more (see references/api_reference.md for complete list).

3. Similarity Search

Find structurally similar compounds using Tanimoto similarity:

import pubchempy as pcp

# Start with a query compound
query_compound = pcp.get_compounds('gefitinib', 'name')[0]
query_smiles = query_compound.canonical_smiles

# Perform similarity search
similar_compounds = pcp.get_compounds(
    query_smiles,
    'smiles',
    searchtype='similarity',
    Threshold=85,  # Similarity threshold (0-100)
    MaxRecords=50
)

# Process results
for compound in similar_compounds[:10]:
    print(f"CID {compound.cid}: {compound.iupac_name}")
    print(f"  MW: {compound.molecular_weight}")

Note: Similarity searches are asynchronous for large queries and may take 15-30 seconds to complete. PubChemPy handles the asynchronous pattern automatically.

4. Substructure Search

Find compounds containing a specific structural motif:

import pubchempy as pcp

# Search for compounds containing pyridine ring
pyridine_smiles = 'c1ccncc1'

matches = pcp.get_compounds(
    pyridine_smiles,
    'smiles',
    searchtype='substructure',
    MaxRecords=100
)

print(f"Found {len(matches)} compounds containing pyridine")

Common Substructures:

  • Benzene ring: c1ccccc1
  • Pyridine: c1ccncc1
  • Phenol: c1ccc(O)cc1
  • Carboxylic acid: C(=O)O

5. Format Conversion

Convert between different chemical structure formats:

import pubchempy as pcp

compound = pcp.get_compounds('aspirin', 'name')[0]

# Convert to different formats
smiles = compound.canonical_smiles
inchi = compound.inchi
inchikey = compound.inchikey
cid = compound.cid

# Download structure files
pcp.download('SDF', 'aspirin', 'name', 'aspirin.sdf', overwrite=True)
pcp.download('JSON', '2244', 'cid', 'aspirin.json', overwrite=True)

6. Structure Visualization

Generate 2D structure images:

import pubchempy as pcp

# Download compound structure as PNG
pcp.download('PNG', 'caffeine', 'name', 'caffeine.png', overwrite=True)

# Using direct URL (via requests)
import requests

cid = 2244  # Aspirin
url = f"https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/{cid}/PNG?image_size=large"
response = requests.get(url)

with open('structure.png', 'wb') as f:
    f.write(response.content)

7. Synonym Retrieval

Get all known names and synonyms for a compound:

import pubchempy as pcp

synonyms_data = pcp.get_synonyms('aspirin', 'name')

if synonyms_data:
    cid = synonyms_data[0]['CID']
    synonyms = synonyms_data[0]['Synonym']

    print(f"CID {cid} has {len(synonyms)} synonyms:")
    for syn in synonyms[:10]:  # First 10
        print(f"  - {syn}")

8. Bioactivity Data Access

Retrieve biological activity data from assays:

import requests
import json

# Get bioassay summary for a compound
cid = 2244  # Aspirin
url = f"https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/{cid}/assaysummary/JSON"

response = requests.get(url)
if response.status_code == 200:
    data = response.json()
    # Process bioassay information
    table = data.get('Table', {})
    rows = table.get('Row', [])
    print(f"Found {len(rows)} bioassay records")

For more complex bioactivity queries, use the scripts/bioactivity_query.py helper script which provides:

  • Bioassay summaries with activity outcome filtering
  • Assay target identification
  • Search for compounds by biological target
  • Active compound lists for specific assays

9. Comprehensive Compound Annotations

Access detailed compound information through PUG-View:

import requests

cid = 2244
url = f"https://pubchem.ncbi.nlm.nih.gov/rest/pug_view/data/compound/{cid}/JSON"

response = requests.get(url)
if response.status_code == 200:
    annotations = response.json()
    # Contains extensive data including:
    # - Chemical and Physical Properties
    # - Drug and Medication Information
    # - Pharmacology and Biochemistry
    # - Safety and Hazards
    # - Toxicity
    # - Literature references
    # - Patents

Get Specific Section:

# Get only drug information
url = f"https://pubchem.ncbi.nlm.nih.gov/rest/pug_view/data/compound/{cid}/JSON?heading=Drug and Medication Information"

Installation Requirements

Install PubChemPy for Python-based access:

uv pip install pubchempy

For direct API access and bioactivity queries:

uv pip install requests

Optional for data analysis:

uv pip install pandas

Helper Scripts

This skill includes Python scripts for common PubChem tasks:

scripts/compound_search.py

Provides utility functions for searching and retrieving compound information:

Key Functions:

  • search_by_name(name, max_results=10): Search compounds by name
  • search_by_smiles(smiles): Search by SMILES string
  • get_compound_by_cid(cid): Retrieve compound by CID
  • get_compound_properties(identifier, namespace, properties): Get specific properties
  • similarity_search(smiles, threshold, max_records): Perform similarity search
  • substructure_search(smiles, max_records): Perform substructure search
  • get_synonyms(identifier, namespace): Get all synonyms
  • batch_search(identifiers, namespace, properties): Batch search multiple compounds
  • download_structure(identifier, namespace, format, filename): Download structures
  • print_compound_info(compound): Print formatted compound information

Usage:

from scripts.compound_search import search_by_name, get_compound_properties

# Search for a compound
compounds = search_by_name('ibuprofen')

# Get specific properties
props = get_compound_properties('aspirin', 'name', ['MolecularWeight', 'XLogP'])

scripts/bioactivity_query.py

Provides functions for retrieving biological activity data:

Key Functions:

  • get_bioassay_summary(cid): Get bioassay summary for compound
  • get_compound_bioactivities(cid, activity_outcome): Get filtered bioactivities
  • get_assay_description(aid): Get detailed assay information
  • get_assay_targets(aid): Get biological targets for assay
  • search_assays_by_target(target_name, max_results): Find assays by target
  • get_active_compounds_in_assay(aid, max_results): Get active compounds
  • get_compound_annotations(cid, section): Get PUG-View annotations
  • summarize_bioactivities(cid): Generate bioactivity summary statistics
  • find_compounds_by_bioactivity(target, threshold, max_compounds): Find compounds by target

Usage:

from scripts.bioactivity_query import get_bioassay_summary, summarize_bioactivities

# Get bioactivity summary
summary = summarize_bioactivities(2244)  # Aspirin
print(f"Total assays: {summary['total_assays']}")
print(f"Active: {summary['active']}, Inactive: {summary['inactive']}")

API Rate Limits and Best Practices

Rate Limits:

  • Maximum 5 requests per second
  • Maximum 400 requests per minute
  • Maximum 300 seconds running time per minute

**Best Pr


Content truncated.

When not to use it

  • Performing complex, multi-step research workflows without using K-Dense Web

Prerequisites

pubchempyrequestspandas (optional)

Limitations

  • Similarity and substructure searches are asynchronous and may take up to 30 seconds
  • Not all properties are available for every compound

How it compares

It provides a programmatic interface for chemical data retrieval and analysis, replacing manual database lookups.

Compared to similar skills

pubchem-database side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
pubchem-database (this skill)12moReviewAdvanced
literature-review5592moReviewAdvanced
openalex-database487moReviewIntermediate
scientific-critical-thinking187moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

literature-review

K-Dense-AI

Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.). This skill should be used when conducting systematic literature reviews, meta-analyses, research synthesis, or comprehensive literature searches across biomedical, scientific, and technical domains. Creates professionally formatted markdown documents and PDFs with verified citations in multiple citation styles (APA, Nature, Vancouver, etc.).

5591,298

openalex-database

davila7

Query and analyze scholarly literature using the OpenAlex database. This skill should be used when searching for academic papers, analyzing research trends, finding works by authors or institutions, tracking citations, discovering open access publications, or conducting bibliometric analysis across 240M+ scholarly works. Use for literature searches, research output analysis, citation analysis, and academic database queries.

48202

scientific-critical-thinking

davila7

Evaluate research rigor. Assess methodology, experimental design, statistical validity, biases, confounding, evidence quality (GRADE, Cochrane ROB), for critical analysis of scientific claims.

1888

biorxiv-database

lifangda

Efficient database search tool for bioRxiv preprint server. Use this skill when searching for life sciences preprints by keywords, authors, date ranges, or categories, retrieving paper metadata, downloading PDFs, or conducting literature reviews.

780

physics-validator

omriwen

Validate optical physics parameters including Fresnel numbers, diffraction regimes, and resolution limits. This skill should be used when configuring Telescope, Microscope, or Camera instruments to ensure physically realistic parameters.

664

fda-database

davila7

Query openFDA API for drugs, devices, adverse events, recalls, regulatory submissions (510k, PMA), substance identification (UNII), for FDA regulatory data analysis and safety research.

539

Search skills

Search the agent skills registry