drclaw/agent_hub/templates/biochemistry/skills/molecular-descriptors-calculation/SKILL.md
Calculate advanced molecular descriptors including shape indices, connectivity indices, and structural features for QSAR and drug discovery.
npx skillsauth add qzzqzzb/drclaw molecular-descriptors-calculationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use the same ChemicalToolsClient class as defined in the molecular-properties-calculation skill.
This workflow calculates advanced molecular descriptors used in QSAR modeling, drug discovery, and computational chemistry.
Workflow Steps:
Implementation:
## Initialize client
HEADERS = {"SCP-HUB-API-KEY": "<your-api-key>"}
client = ChemicalToolsClient(
"https://scp.intern-ai.org.cn/api/v1/mcp/31/SciToolAgent-Chem",
HEADERS
)
if not await client.connect():
print("connection failed")
exit()
## Input: SMILES string to analyze
smiles = "CCO" # Ethanol
print(f"=== Molecular Descriptors for {smiles} ===\n")
## Step 1: Calculate Kappa shape indices
print("Step 1: Kappa Shape Indices")
for tool in ["GetKappa1", "GetKappa2", "GetKappa3"]:
result = await client.client.call_tool(
tool,
arguments={"smiles": smiles}
)
result_data = client.parse_result(result)
print(f"{tool}: {result_data}")
print()
## Step 2: Calculate Chi connectivity indices
print("Step 2: Chi Connectivity Indices")
for tool in ["GetChi0n", "GetChi0v", "GetChi1n", "GetChi1v"]:
result = await client.client.call_tool(
tool,
arguments={"smiles": smiles}
)
result_data = client.parse_result(result)
print(f"{tool}: {result_data}")
print()
## Step 3: Calculate structural features
print("Step 3: Structural Features")
# Rotatable bonds
result = await client.client.call_tool(
"GetRotatableBondsNum",
arguments={"smiles": smiles}
)
print(f"Rotatable bonds: {client.parse_result(result)}")
# Hydrogen bond donors and acceptors
result = await client.client.call_tool(
"GetHBDNum",
arguments={"smiles": smiles}
)
print(f"H-bond donors: {client.parse_result(result)}")
result = await client.client.call_tool(
"GetHBANum",
arguments={"smiles": smiles}
)
print(f"H-bond acceptors: {client.parse_result(result)}")
# Ring counts
result = await client.client.call_tool(
"GetRingsNum",
arguments={"smiles": smiles}
)
print(f"Number of rings: {client.parse_result(result)}")
result = await client.client.call_tool(
"GetAromaticRingsNum",
arguments={"smiles": smiles}
)
print(f"Aromatic rings: {client.parse_result(result)}")
print()
## Step 4: Calculate physicochemical descriptors
print("Step 4: Physicochemical Descriptors")
# LogP and molar refractivity (Crippen descriptors)
result = await client.client.call_tool(
"GetCrippenDescriptors",
arguments={"smiles": smiles}
)
print(f"Crippen descriptors (LogP, MR): {client.parse_result(result)}")
# Topological polar surface area
result = await client.client.call_tool(
"CalculateTPSA",
arguments={"smiles": smiles}
)
print(f"TPSA: {client.parse_result(result)}")
# Fraction of sp3 carbons
result = await client.client.call_tool(
"GetFractionCSP3",
arguments={"smiles": smiles}
)
print(f"Fraction sp3 carbons: {client.parse_result(result)}")
print()
await client.disconnect()
SciToolAgent-Chem Server:
Shape Descriptors:
GetKappa1, GetKappa2, GetKappa3: Kappa shape indices (molecular shape)Connectivity Indices:
GetChi0n, GetChi0v: Zero-order chi indicesGetChi1n, GetChi1v: First-order chi indicesGetChi2n, GetChi2v: Second-order chi indicesGetChi3n, GetChi3v, GetChi4n, GetChi4v: Higher-order chi indicesStructural Features:
GetRotatableBondsNum: Count rotatable bonds (flexibility)GetHBDNum/GetHBANum: Hydrogen bond donors/acceptorsGetRingsNum: Total ring countGetAromaticRingsNum: Aromatic ring countGetAliphaticRingsNum: Aliphatic ring countPhysicochemical Descriptors:
GetCrippenDescriptors: LogP (lipophilicity) and molar refractivityCalculateTPSA: Topological polar surface areaGetFractionCSP3: Fraction of sp³ hybridized carbonsGetLabuteASA: Labute accessible surface areaInput:
smiles: Molecule in SMILES formatOutput:
Kappa Shape Indices
Chi Connectivity Indices
Structural Features
Physicochemical Descriptors
Lipinski's Rule of Five:
Veber's Rules (Oral Bioavailability):
CNS Drug-Likeness:
The SciToolAgent-Chem server provides 160+ tools including:
GetBCUT: BCUT descriptorsGetAutocorrelation2D/GetAutocorrelation3D: Autocorrelation descriptorsGetWHIM: WHIM descriptorsGetGETAWAY: GETAWAY descriptorsGetMORSE: MORSE descriptorsGetRDF: Radial distribution functionGetUSR/GetUSRCAT: Ultrafast shape recognition descriptorscontent-media
当用户明确要求“写/生成 NSFC 预算说明书”“写预算说明”“生成 budget.tex / budget.pdf”“写国自然预算 justification”时使用。基于用户标书正文或补充材料,输出一份可提交的预算说明书 LaTeX 项目并渲染 `budget.pdf`。若用户未指定工作目录,必须暂停并先要求其指定。⚠️ 不适用:用户只是想了解预算原则;用户仅要预算表数字而不写说明书;或用户是 2026 青年 A/B/C 默认包干制且无需预算说明书的场景。
tools
当用户明确要求"写/润色 NSFC 标书摘要""生成中文摘要和英文摘要""把中文摘要翻译成英文摘要"时使用。输出中文、英文两个版本(英文必须是中文的忠实翻译版),同时输出标题建议(1个推荐标题+5个候选标题及理由)。中文摘要默认≤400字符,英文摘要默认≤4000字符。输出方式:将结果写入工作目录下的 `NSFC-ABSTRACTS.md`。⚠️ 不适用:用户只想翻译一段与标书无关的通用文本(应直接翻译);用户只想写立项依据/研究内容/研究基础正文(应使用对应 nsfc 系列 skill)。
documentation
当用户明确要求"更新项目指南""同步指南""沉淀洞见到指南"时使用。将对话中新产生的可复用写作洞见实时沉淀到项目指南文件,保持术语口径一致、结构稳定、可检验与可复现。调用时必须指定指南文件路径。
content-media
当用户明确要求"从文件/图片/网页/描述中提取综述主题"或"生成主题+关键词+核心问题结构化输出"时使用。支持文件(PDF/Word/Markdown/Tex)、文件夹、图片、自然语言描述、网页 URL 等多种输入源,自动识别输入类型并提取内容,生成可直接用于 systematic-literature-review 及其他文献综述技能的结构化输出。