Token导航 LogoToken导航

Agent Skill · 研究检索

chemical-structure-converter(化学结构转换器)

chemical-structure-converter 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

chemical-structure-converter 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为需要联网;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,674 个 Skill 里排第 18,722。

总安装 5,949周安装 243GitHub Stars 公开资料未说明下载 1,925核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
0.1.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:chemical-structure-converter(化学结构转换器)
来源仓库:https://github.com/aipoch-ai/chemical-structure-converter
安装命令:
openclaw skills install chemical-structure-converter
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install chemical-structure-converter

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

在 IUPAC 名称、SMILES 和分子式之间转换化学结构。适合化学信息学分析和结构验证的场景。通过 clawhub 安装并使用,需确认权限和网络访问范围。安装命令:openclaw skills install chemical-structure-converter。

建议核对来源仓库和 README 以了解具体用法与限制。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install chemical-structure-converter;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

chemical-structure-converter 怎么安装?

在终端执行 openclaw skills install chemical-structure-converter。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

chemical-structure-converter 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

chemical-structure-converter 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

chemical-structure-converter 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

chemical-structure-converter 用的人多吗?

公开数据是累计安装 5,949 次,近一周安装 243 次,下载 1,925 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

chemical-structure-converter 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
chemical-structure-converter

化学结构转换器 · 本页

5,949—需要联网MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
chemical-structure-converter
description
Convert between IUPAC names, SMILES strings, and molecular formulas for chemical compounds. Supports structure validation, identifier interconversion, and cheminformatics data preparation for drug discovery and chemical research workflows.
allowed-tools
[Read, Write, Bash, Edit]
license
MIT
metadata
skill-author
AIPOCH

Chemical Structure Converter

Interconvert between different chemical structure representations including IUPAC names, SMILES strings, molecular formulas, and common names. Essential for cheminformatics workflows, database standardization, and compound registration in drug discovery and chemical research.

Key Capabilities:

  • Multi-Format Conversion: Convert between IUPAC names, SMILES, InChI, and molecular formulas
  • SMILES Validation: Validate SMILES syntax for structural correctness
  • Batch Processing: Process multiple compounds for database standardization
  • Identifier Lookup: Retrieve all available identifiers for known compounds
  • Structure Standardization: Normalize chemical representations for consistency

When to Use

✅ Use this skill when:

  • Standardizing chemical databases with mixed naming conventions
  • Preparing compound libraries for virtual screening or cheminformatics analysis
  • Converting structures from publications (IUPAC names) to machine-readable formats (SMILES)
  • Validating SMILES strings before using in computational chemistry tools
  • Registering new compounds in chemical inventory systems
  • Matching compounds across different databases with different identifier types
  • Creating structure-activity relationship (SAR) tables with consistent formatting

❌ Do NOT use when:

  • Needing 3D structure generation or conformer search → Use molecular modeling software (RDKit, OpenBabel)
  • Performing quantum chemistry calculations → Use Gaussian, ORCA, or similar packages
  • Working with reaction schemes or multi-step synthesis → Use reaction planning tools
  • Requiring patent structure searching → Use specialized patent databases (SciFinder, STN)
  • Converting biological sequences (DNA, protein) → Use bioinformatics tools
  • Needing spectral data prediction (NMR, MS) → Use specialized prediction software

Related Skills:

  • 上游 (Upstream): chemical-storage-sorter, adme-property-predictor
  • 下游 (Downstream): molecular-docking-predictor, bio-ontology-mapper

Integration with Other Skills

Upstream Skills:

  • chemical-storage-sorter: Classify chemicals by hazard group before storage registration
  • adme-property-predictor: Convert structures to standardized formats before ADME prediction
  • safety-data-sheet-reader: Extract chemical names from SDS for structure lookup

Downstream Skills:

  • molecular-docking-predictor: Convert compound libraries to 3D structures for docking
  • bio-ontology-mapper: Map chemical structures to standardized ontologies (ChEBI, PubChem)
  • lab-inventory-tracker: Register standardized chemical identifiers in inventory

Complete Workflow:

Literature/Patent → chemical-structure-converter → adme-property-predictor → molecular-docking-predictor → Hit Selection

Core Capabilities

1. Multi-Format Chemical Identifier Conversion

Convert chemical structures between different representation formats for database interoperability.

from scripts.main import ChemicalStructureConverter

converter = ChemicalStructureConverter()

# Convert compound name to all available identifiers
chemical_name = "aspirin"
data = converter.name_to_identifiers(chemical_name)

if data:
    print(f"Compound: {chemical_name}")
    print(f"IUPAC Name: {data['iupac']}")
    print(f"SMILES: {data['smiles']}")
    print(f"Formula: {data['formula']}")
    print(f"Molecular Weight: {data['mw']} g/mol")

# Output:
# Compound: aspirin
# IUPAC Name: 2-acetoxybenzoic acid
# SMILES: CC(=O)Oc1ccccc1C(=O)O
# Formula: C9H8O4
# Molecular Weight: 180.16 g/mol

Supported Conversions:

From → ToMethodUse Case
Name → SMILESDatabase lookupLiterature to database
SMILES → IUPACStructure recognitionMachine to human readable
IUPAC → SMILESName parsingChemical registration
SMILES → FormulaAtom countingQuick MW calculation

Best Practices:

  • ✅ Use canonical SMILES for database storage (ensures uniqueness)
  • ✅ Validate conversions with known reference compounds
  • ✅ Preserve stereochemistry during conversions (use @/@@ in SMILES)
  • ✅ Check tautomeric forms - different representations may exist

Common Issues and Solutions:

Issue: Compound not in local database

  • Symptom: Returns "Unknown structure" for valid compounds
  • Solution: Use external databases (PubChem, ChemSpider APIs) for lookup; add common compounds to local database

Issue: Multiple valid SMILES for same compound

  • Symptom: Different SMILES strings represent same molecule
  • Solution: Use canonical SMILES generation (requires RDKit or similar)

2. SMILES String Validation

Validate SMILES syntax to ensure structural integrity before computational processing.

from scripts.main import ChemicalStructureConverter

converter = ChemicalStructureConverter()

# Validate SMILES strings
smiles_examples = [
    "CC(=O)Oc1ccccc1C(=O)O",  # Aspirin - valid
    "CCO",                     # Ethanol - valid
    "C(=O",                    # Invalid - unclosed parenthesis
    "C1CCCCC",                 # Invalid - unclosed ring
]

for smiles in smiles_examples:
    is_valid, message = converter.validate_smiles(smiles)
    status = "✅ Valid" if is_valid else "❌ Invalid"
    print(f"{smiles:<30} {status}: {message}")

# Output:
# CC(=O)Oc1ccccc1C(=O)O        ✅ Valid: Valid SMILES syntax
# CCO                          ✅ Valid: Valid SMILES syntax
# C(=O                         ❌ Invalid: Mismatched parentheses
# C1CCCCC                      ❌ Invalid: Ring closure error

Validation Checks:

CheckDescriptionExample Error
ParenthesesMatching ( and )C(=O - missing closing
BracketsMatching [ and ][Na+ - missing closing
Ring closuresMatching digitsC1CC - ring not closed
Atom validityRecognized elements@ - invalid character
ValenceChemical validityC(C)(C)(C)(C)C - 5 bonds to C

Best Practices:

  • ✅ Always validate SMILES before using in downstream tools
  • ✅ Check for aromaticity (lowercase c,n,o in SMILES)
  • ✅ Verify stereochemistry (@ symbols for chirality)
  • ✅ Use explicit hydrogens when ambiguity exists

Common Issues and Solutions:

Issue: Valid syntax but chemically impossible

  • Symptom: SMILES passes validation but structure is unrealistic
  • Solution: Use chemical validation tools (RDKit SanitizeMol) for deeper checks

Issue: Tautomeric ambiguity

  • Symptom: Keto/enol forms represented differently
  • Solution: Use tautomer canonicalization if consistency required

3. Batch Structure Processing

Process multiple chemical structures simultaneously for database standardization.

from scripts.main import ChemicalStructureConverter

converter = ChemicalStructureConverter()

# Batch process compound list
compound_list = [
    "aspirin",
    "caffeine", 
    "glucose",
    "ethanol",
    "unknown_compound"
]

results = []
for compound in compound_list:
    data = converter.name_to_identifiers(compound)
    if data:
        results.append({
            'name': compound,
            'iupac': data['iupac'],
            'smiles': data['smiles'],
            'formula': data['formula'],
            'mw': data['mw']
        })
    else:
        print(f"⚠️  Warning: '{compound}' not found in database")

# Display results table
print("\
" + "="*80)
print(f"{'Name':<20} {'Formula':<15} {'MW':<10} {'SMILES'}")
print("="*80)
for r in results:
    print(f"{r['name']:<20} {r['formula']:<15} {r['mw']:<10.2f} {r['smiles'][:40]}")

Best Practices:

  • ✅ Process in batches of 100-1000 for large databases
  • ✅ Log missing compounds for manual review
  • ✅ Export to CSV for Excel/chemoinformatics tools
  • ✅ Include CAS numbers when available for verification

Common Issues and Solutions:

Issue: Synonym confusion

  • Symptom: Same compound listed multiple times with different names
  • Solution: Use SMILES as unique key; deduplicate by structure

Issue: Mixture or salt forms

  • Symptom: Structures with counterions or multiple components
  • Solution: Process main component; flag mixtures for special handling

4. Molecular Formula and Properties

Extract molecular formulas and calculate basic properties from SMILES or names.

from scripts.main import ChemicalStructureConverter

converter = ChemicalStructureConverter()

# Analyze compound properties
compounds = ["aspirin", "caffeine", "glucose"]

print("Molecular Properties:")
print("-" * 70)
print(f"{'Compound':<15} {'Formula':<12} {'MW (g/mol)':<12} {'Heavy Atoms'}")
print("-" * 70)

for name in compounds:
    data = converter.name_to_identifiers(name)
    if data:
        # Count heavy atoms (non-hydrogen) from formula
        formula = data['formula']
        heavy_atoms = sum(int(c) for c in formula if c.isdigit())
        if heavy_atoms == 0:  # Single atoms like C, O
            heavy_atoms = len([c for c in formula if c.isupper()])
        
        print(f"{name:<15} {data['formula']:<12} {data['mw']:<12.2f} {heavy_atoms}")

Calculated Properties:

PropertyCalculationUse Case
Molecular WeightSum of atomic weightsDosing, filtering
Heavy AtomsNon-hydrogen atomsSize estimation
FormulaAtom count from structureDatabase indexing
Rotatable BondsCount rotatable bondsFlexibility index

Best Practices:

  • ✅ Include salt forms in MW calculation if relevant
  • ✅ Check isotopic labeling for specialized applications
  • ✅ Calculate elemental composition for combustion analysis
  • ✅ Use exact mass for mass spectrometry applications

Common Issues and Solutions:

Issue: Hydrates and solvates

  • Symptom: Different MW for hydrate vs anhydrous forms
  • Solution: Always specify form (e.g., "caffeine anhydrous")

5. Structure Standardization

Standardize chemical representations for database consistency.

from scripts.main import ChemicalStructureConverter

def standardize_compound_entry(name: str, converter) -> dict:
    """
    Standardize compound entry with all identifiers.
    
    Returns standardized entry or None if not found.
    """
    data = converter.name_to_identifiers(name)
    
    if not data:
        return None
    
    # Create standardized entry
    standardized = {
        'common_name': name.lower(),
        'iupac_name': data['iupac'],
        'smiles': data['smiles'],
        'inchi': f"InChI=1S/{data['formula']}",  # Placeholder
        'molecular_formula': data['formula'],
        'molecular_weight': data['mw'],
        'standardized_date': '2026-02-09',
        'source': 'local_database'
    }
    
    return standardized

# Example usage
converter = ChemicalStructureConverter()
entry = standardize_compound_entry("aspirin", converter)

if entry:
    print("Standardized Entry:")
    for key, value in entry.items():
        print(f"  {key}: {value}")

Standardization Rules:

RuleStandard FormExample
Common namesLowercase"aspirin" not "Aspirin"
IUPACFull systematic name"2-acetoxybenzoic acid"
SMILESCanonicalNo stereochemistry if unspecified
FormulaHill systemC, H, then alphabetical

Best Practices:

  • ✅ Use consistent naming across entire database
  • ✅ Include CAS numbers when available
  • ✅ Track version history of structure assignments
  • ✅ Validate against PubChem for known compounds

Common Issues and Solutions:

Issue: Multiple valid representations

  • Symptom: Same compound has different standard forms
  • Solution: Define canonicalization rules; use chemical validation

6. Chemical Database Integration

Prepare chemical data for import into cheminformatics databases.

import json
from scripts.main import ChemicalStructureConverter

def prepare_database_import(compound_names: list, converter) -> list:
    """
    Prepare compound list for database import.
    
    Returns list of standardized database records.
    """
    records = []
    
    for name in compound_names:
        data = converter.name_to_identifiers(name)
        
        if data:
            record = {
                'compound_id': f"CMPD_{len(records)+1:04d}",
                'common_name': name,
                'iupac_name': data['iupac'],
                'smiles': data['smiles'],
                'molecular_formula': data['formula'],
                'molecular_weight': data['mw'],
                'status': 'active'
            }
            records.append(record)
        else:
            print(f"⚠️  Skipped: {name} (not in database)")
    
    return records

# Generate database import file
converter = ChemicalStructureConverter()
compounds = ["aspirin", "caffeine", "glucose", "ethanol"]

db_records = prepare_database_import(compounds, converter)

# Export to JSON for database import
with open('chemical_database_import.json', 'w') as f:
    json.dump(db_records, f, indent=2)

print(f"\
Exported {len(db_records)} compounds to database import file")

Database Schema Example:

CREATE TABLE compounds (
    compound_id VARCHAR(20) PRIMARY KEY,
    common_name VARCHAR(255),
    iupac_name VARCHAR(500),
    smiles VARCHAR(1000),
    molecular_formula VARCHAR(50),
    molecular_weight DECIMAL(10,4),
    created_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Best Practices:

  • ✅ Use unique compound IDs for internal tracking
  • ✅ Index SMILES column for substructure searching
  • ✅ Include source information for data provenance
  • ✅ Validate before import to prevent duplicates

Common Issues and Solutions:

Issue: Character encoding problems

  • Symptom: Special characters in IUPAC names corrupted
  • Solution: Use UTF-8 encoding; escape special characters

Complete Workflow Example

From compound names to standardized database:

# Step 1: Convert single compound
python scripts/main.py --name aspirin

# Step 2: Validate SMILES
python scripts/main.py --smiles "CC(=O)Oc1ccccc1C(=O)O" --validate

# Step 3: Convert IUPAC to SMILES
python scripts/main.py --iupac "ethanol"

# Step 4: List available compounds
python scripts/main.py --list

Python API Usage:

from scripts.main import ChemicalStructureConverter
import pandas as pd

def process_compound_library(
    compound_list: list,
    output_file: str = "compound_library.csv"
) -> pd.DataFrame:
    """
    Process compound library for cheminformatics analysis.
    
    Args:
        compound_list: List of compound names
        output_file: Output CSV filename
        
    Returns:
        DataFrame with standardized compound data
    """
    converter = ChemicalStructureConverter()
    
    records = []
    not_found = []
    
    print("Processing compound library...")
    print("="*60)
    
    for compound in compound_list:
        data = converter.name_to_identifiers(compound)
        
        if data:
            records.append({
                'name': compound,
                'iupac': data['iupac'],
                'smiles': data['smiles'],
                'formula': data['formula'],
                'mw': data['mw']
            })
            print(f"✅ {compound}")
        else:
            not_found.append(compound)
            print(f"❌ {compound} - not found")
    
    print("="*60)
    
    # Create DataFrame
    df = pd.DataFrame(records)
    
    # Export to CSV
    df.to_csv(output_file, index=False)
    print(f"\
Exported {len(df)} compounds to {output_file}")
    
    if not_found:
        print(f"\
⚠️  {len(not_found)} compounds not found:")
        for comp in not_found:
            print(f"  - {comp}")
    
    return df

# Process library
library = ["aspirin", "caffeine", "glucose", "ethanol", "unknown_drug"]
df = process_compound_library(library, "my_library.csv")

print("\
Library Summary:")
print(f"Total compounds: {len(df)}")
print(f"Average MW: {df['mw'].mean():.2f} g/mol")
print(f"MW range: {df['mw'].min():.2f} - {df['mw'].max():.2f} g/mol")

Expected Output Files:

chemical_data/
├── compound_library.csv       # Standardized compound data
├── missing_compounds.txt      # List of compounds not found
├── database_import.json       # JSON format for database import
└── validation_report.txt      # SMILES validation results

Common Patterns

Pattern 1: Literature to Database Conversion

Scenario: Converting compound names from publications to SMILES for database entry.

{
  "task": "literature_to_database",
  "source": "Journal article compound list",
  "input_format": "Common names and IUPAC",
  "output_format": "SMILES for database",
  "volume": "50 compounds",
  "quality_check": "Validate all SMILES"
}

Workflow:

  1. Extract compound names from publication
  2. Look up each compound in converter
  3. Validate generated SMILES
  4. Check for missing compounds
  5. Manual lookup for missing entries
  6. Export to database import format
  7. Review and correct any errors

Output Example:

Literature Conversion Results:
  Total compounds: 50
  Successfully converted: 47 (94%)
  Manual review needed: 3
    - Compound_23: ambiguous name
    - Compound_31: salt form unclear
    - Compound_45: stereochemistry unspecified
  
Database ready: 47 compounds exported

Pattern 2: Cheminformatics Pipeline Preparation

Scenario: Preparing compound library for virtual screening pipeline.

{
  "task": "virtual_screening_prep",
  "library_size": "10,000 compounds",
  "source_formats": ["SDF", "SMILES", "MOL"],
  "target_format": "Canonical SMILES",
  "requirements": [
    "Validate all structures",
    "Remove duplicates",
    "Calculate properties",
    "Flag reactive groups"
  ]
}

Workflow:

  1. Load compound library from various sources
  2. Convert all to SMILES format
  3. Validate SMILES syntax
  4. Remove duplicates by canonical SMILES
  5. Calculate molecular properties (MW, formula)
  6. Filter by drug-like properties if needed
  7. Export standardized library

Output Example:

Virtual Screening Library Preparation:
  Input: 10,000 compounds
  After validation: 9,847 (153 invalid SMILES removed)
  After deduplication: 9,520 (327 duplicates removed)
  
Property Distribution:
  MW range: 150-650 Da
  Average MW: 387.5 Da
  MW < 500: 8,234 compounds (86%)
  
Ready for docking: 9,520 compounds

Pattern 3: Patent Compound Extraction

Scenario: Extracting and standardizing compounds from patent text.

{
  "task": "patent_extraction",
  "source": "US Patent with IUPAC names",
  "compounds": "25 specific compounds",
  "challenge": "Complex IUPAC names",
  "output": "SMILES for SAR analysis"
}

Workflow:

  1. Extract IUPAC names from patent text
  2. Parse names using converter
  3. Generate SMILES for each
  4. Validate structures
  5. Create SAR table with consistent formatting
  6. Compare with known compounds
  7. Flag novel structures

Output Example:

Patent Compound Extraction:
  Patent: US10,XXX,XXX
  Compounds extracted: 25
  Successfully converted: 22 (88%)
  
Novel compounds identified: 3
  - Compound A: New scaffold
  - Compound B: Known scaffold, new substitution
  - Compound C: Prodrug of known compound
  
SAR Table Generated: 22 compounds × 5 properties

Pattern 4: Inventory Database Cleanup

Scenario: Standardizing existing chemical inventory with mixed naming.

{
  "task": "inventory_cleanup",
  "current_state": "Mixed naming conventions",
  "compounds": "500 chemicals",
  "issues": [
    "Inconsistent naming",
    "Missing SMILES",
    "Duplicate entries"
  ]
}

Workflow:

  1. Export current inventory to CSV
  2. Parse compound names
  3. Convert all to standard format
  4. Identify duplicates by SMILES
  5. Merge duplicate records
  6. Add missing SMILES
  7. Import cleaned data back

Output Example:

Inventory Cleanup Results:
  Original entries: 500
  Unique compounds: 487 (13 duplicates removed)
  
Standardization:
  - Common names standardized: 487
  - SMILES added: 423
  - IUPAC names added: 487
  - MW calculated: 487
  
Data Quality Improvement:
  Completeness: 65% → 100%
  Consistency: 40% → 98%

Quality Checklist

Pre-Conversion:

  • [ ] Verify compound names are spelled correctly
  • [ ] Check for stereochemical information (R/S, E/Z)
  • [ ] Note salt forms and hydrates
  • [ ] Identify any ambiguous or generic names
  • [ ] Prepare list of expected compounds for validation

During Conversion:

  • [ ] Validate all generated SMILES
  • [ ] Check stereochemistry preservation
  • [ ] Verify molecular formulas match expected
  • [ ] Confirm molecular weights reasonable
  • [ ] Flag any compounds not found in database

Post-Conversion:

  • [ ] Review all conversions for accuracy
  • [ ] Manually verify random sample (5-10%)
  • [ ] Check for duplicate structures
  • [ ] Validate unique compound IDs
  • [ ] Export in required format

Database Import:

  • [ ] Test import with small subset first
  • [ ] Verify foreign key constraints
  • [ ] Check character encoding (UTF-8)
  • [ ] Validate required fields populated
  • [ ] Create backup before bulk import

Common Pitfalls

Input Data Issues:

  • ❌ Ambiguous names → Multiple compounds match name

- ✅ Use CAS numbers or specific synonyms

  • ❌ Mixtures and salts → Complex structures unclear

- ✅ Specify components or use main active compound

  • ❌ Stereochemistry omitted → Racemic vs pure unclear

- ✅ Specify stereochemistry explicitly

  • ❌ Hydrates vs anhydrous → Different molecular weights

- ✅ Always specify form in compound name

Conversion Errors:

  • ❌ Invalid SMILES → Unbalanced parentheses or brackets

- ✅ Always validate SMILES after generation

  • ❌ Loss of stereochemistry → Chiral centers become racemic

- ✅ Check @ symbols preserved in SMILES

  • ❌ Tautomeric ambiguity → Keto/enol forms differ

- ✅ Use canonical tautomers for consistency

  • ❌ Aromaticity errors → Kekulé vs aromatic forms

- ✅ Use consistent aromatic representation

Database Issues:

  • ❌ Duplicate entries → Same compound multiple times

- ✅ Deduplicate by canonical SMILES

  • ❌ Character encoding → Special characters corrupted

- ✅ Use UTF-8 encoding throughout

  • ❌ Missing fields → Required data not populated

- ✅ Validate all required fields present

  • ❌ Inconsistent formatting → Mixed naming conventions

- ✅ Apply standardization rules uniformly


Troubleshooting

Problem: Compound not found in database

  • Symptoms: Returns None for valid compound name
  • Causes:

- Database limited to common compounds - Name variation not recognized - Very new or obscure compound

  • Solutions:

- Try alternative names or synonyms - Use external database (PubChem API) - Manually create entry for novel compounds

Problem: SMILES validation fails

  • Symptoms: Valid-looking SMILES rejected
  • Causes:

- Unbalanced brackets/parentheses - Invalid atom symbols - Ring closure errors

  • Solutions:

- Check for typos in SMILES - Use SMILES visualization tool to debug - Generate SMILES from structure drawing

Problem: Stereochemistry lost in conversion

  • Symptoms: Chiral compound becomes achiral
  • Causes:

- Stereochemistry not specified in input - Conversion tool ignores stereochemistry - Wrong SMILES format used

  • Solutions:

- Use isomeric SMILES with @ symbols - Check input has stereochemical info - Use tools that preserve stereochemistry

Problem: Multiple SMILES for same compound

  • Symptoms: Same compound has different SMILES strings
  • Causes:

- Different tautomeric forms - Different aromatic representations - Different starting atoms

  • Solutions:

- Use canonical SMILES generation - Normalize tautomers - Use InChI for unique identification

Problem: Molecular weight mismatch

  • Symptoms: Calculated MW differs from expected
  • Causes:

- Salt form included/excluded - Isotopic composition different - Hydrate form

  • Solutions:

- Specify exact compound form - Check formula calculation - Use exact mass for precision work


References

Available in references/ directory:

  • (No reference files currently available for this skill)

External Resources:

  • PubChem: https://pubchem.ncbi.nlm.nih.gov
  • ChemSpider: http://www.chemspider.com
  • SMILES Specification: http://opensmiles.org
  • InChI Standard: https://www.inchi-trust.org
  • RDKit Documentation: https://www.rdkit.org/docs/

Scripts

Located in scripts/ directory:

  • main.py - Chemical structure conversion and validation engine

Chemical Identifier Quick Reference

SMILES Notation:

  • C = aliphatic carbon
  • c = aromatic carbon
  • = = double bond
  • # = triple bond
  • () = branching
  • [] = explicit valence/charge
  • @ = anticlockwise (S)
  • @@ = clockwise (R)

IUPAC Naming:

  • Use systematic nomenclature
  • Specify stereochemistry (R/S, E/Z)
  • Include salt forms when relevant
  • Indicate hydration state

Molecular Formula (Hill System):

  • C first, then H, then alphabetical
  • Example: C6H12O6 (glucose)

Parameters

ParameterTypeDefaultRequiredDescription
--name, -nstring-NoCompound name
--smiles, -sstring-NoSMILES string
--iupac, -istring-NoIUPAC name
--validateflag-NoValidate SMILES syntax
--list, -lflag-NoList available compounds

Usage

Basic Usage

# Convert by compound name
python scripts/main.py --name aspirin

# Convert SMILES to IUPAC
python scripts/main.py --smiles "CC(=O)Oc1ccccc1C(=O)O"

# Validate SMILES
python scripts/main.py --smiles "CCO" --validate

# List all compounds
python scripts/main.py --list

Risk Assessment

Risk IndicatorAssessmentLevel
Code ExecutionPython script executed locallyLow
Network AccessNo external API callsLow
File System AccessNo file accessLow
Data ExposureNo sensitive dataLow

Security Checklist

  • [x] No hardcoded credentials or API keys
  • [x] No file system access
  • [x] Input validation for chemical identifiers
  • [x] Output does not expose sensitive information
  • [x] Error messages sanitized
  • [x] Script execution in sandboxed environment

Prerequisites

# Python 3.7+
# No additional packages required (uses standard library)

Evaluation Criteria

Success Metrics

  • [x] Successfully converts between chemical formats
  • [x] Validates SMILES syntax
  • [x] Retrieves compound information by name
  • [x] Lists available compounds

Test Cases

  1. Name Lookup: Aspirin → Returns SMILES, IUPAC, formula
  2. SMILES Conversion: Valid SMILES → IUPAC name
  3. Validation: Invalid SMILES → Error message

Lifecycle Status

  • Current Stage: Active
  • Next Review Date: 2026-03-09
  • Known Issues: Limited compound database (mock data)
  • Planned Improvements:

- Integrate with PubChem API - Add 2D/3D structure generation - Expand compound database


Last Updated: 2026-02-09 Skill ID: 185 Version: 2.0 (K-Dense Standard)

平台分布

OpenClaw

89.57%
按下载量换算1,724

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills