Molecular Descriptors Calculation
Usage
1. MCP Server Definition
Use the same ChemicalToolsClient class as defined in the molecular-properties-calculation skill.
2. Molecular Descriptors Calculation Workflow
This workflow calculates advanced molecular descriptors used in QSAR modeling, drug discovery, and computational chemistry.
Workflow Steps:
- Calculate Kappa Shape Indices - Molecular shape descriptors
- Calculate Connectivity Indices - Topological descriptors
- Calculate Structural Features - Rings, bonds, and functional groups
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()
Tool Descriptions
SciToolAgent-Chem Server:
Shape Descriptors:
GetKappa1, GetKappa2, GetKappa3: Kappa shape indices (molecular shape)
Connectivity Indices:
GetChi0n, GetChi0v: Zero-order chi indices
GetChi1n, GetChi1v: First-order chi indices
GetChi2n, GetChi2v: Second-order chi indices
GetChi3n, GetChi3v, GetChi4n, GetChi4v: Higher-order chi indices
Structural Features:
GetRotatableBondsNum: Count rotatable bonds (flexibility)
GetHBDNum/GetHBANum: Hydrogen bond donors/acceptors
GetRingsNum: Total ring count
GetAromaticRingsNum: Aromatic ring count
GetAliphaticRingsNum: Aliphatic ring count
Physicochemical Descriptors:
GetCrippenDescriptors: LogP (lipophilicity) and molar refractivity
CalculateTPSA: Topological polar surface area
GetFractionCSP3: Fraction of sp³ hybridized carbons
GetLabuteASA: Labute accessible surface area
Input/Output
Input:
smiles: Molecule in SMILES format
Output:
- Kappa Indices: Molecular shape descriptors (1, 2, 3)
- Chi Indices: Topological connectivity indices
- Structural Counts: Rings, bonds, functional groups
- LogP: Lipophilicity (partition coefficient)
- TPSA: Topological polar surface area (Ų)
- Fraction sp³: Proportion of sp³ carbons (0-1)
Descriptor Applications
Kappa Shape Indices
- κ₁, κ₂, κ₃: Describe molecular shape from linear to spherical
- Used in: QSAR models, molecular shape comparison
Chi Connectivity Indices
- Encode information about branching and cyclicity
- Used in: Property prediction, similarity searching
Structural Features
- Rotatable bonds: Molecular flexibility, bioavailability
- H-bond donors/acceptors: Solubility, permeability
- Rings: Rigidity, drug-likeness
Physicochemical Descriptors
- LogP: Lipophilicity, membrane permeability
- TPSA: Oral bioavailability, BBB penetration
- Fraction sp³: Molecular complexity, drug-likeness
Drug-Likeness Rules
Lipinski's Rule of Five:
- MW ≤ 500 Da
- LogP ≤ 5
- HBD ≤ 5
- HBA ≤ 10
Veber's Rules (Oral Bioavailability):
- Rotatable bonds ≤ 10
- TPSA ≤ 140 Ų
CNS Drug-Likeness:
- TPSA < 90 Ų (for blood-brain barrier penetration)
Use Cases
- QSAR model development
- Virtual screening and compound prioritization
- Drug-likeness assessment
- Molecular similarity calculations
- Pharmacokinetic property prediction
- Lead optimization
- Chemical space exploration
Additional Descriptor Tools
The SciToolAgent-Chem server provides 160+ tools including:
GetBCUT: BCUT descriptors
GetAutocorrelation2D/GetAutocorrelation3D: Autocorrelation descriptors
GetWHIM: WHIM descriptors
GetGETAWAY: GETAWAY descriptors
GetMORSE: MORSE descriptors
GetRDF: Radial distribution function
GetUSR/GetUSRCAT: Ultrafast shape recognition descriptors
Performance Notes
- Most descriptor calculations are very fast (<1 second)
- Can batch process multiple molecules
- Descriptors are deterministic (same molecule → same descriptors)
1---2name: molecular-descriptors-calculation3description: Calculate advanced molecular descriptors including shape indices, connectivity indices, and structural features for QSAR and drug discovery.4license: MIT license5---67# Molecular Descriptors Calculation89## Usage1011### 1. MCP Server Definition1213Use the same `ChemicalToolsClient` class as defined in the molecular-properties-calculation skill.1415### 2. Molecular Descriptors Calculation Workflow1617This workflow calculates advanced molecular descriptors used in QSAR modeling, drug discovery, and computational chemistry.1819**Workflow Steps:**20211. **Calculate Kappa Shape Indices** - Molecular shape descriptors222. **Calculate Connectivity Indices** - Topological descriptors233. **Calculate Structural Features** - Rings, bonds, and functional groups2425**Implementation:**2627```python28## Initialize client29HEADERS = {"SCP-HUB-API-KEY": "<your-api-key>"}3031client = ChemicalToolsClient(32 "https://scp.intern-ai.org.cn/api/v1/mcp/31/SciToolAgent-Chem",33 HEADERS34)3536if not await client.connect():37 print("connection failed")38 exit()3940## Input: SMILES string to analyze41smiles = "CCO" # Ethanol42print(f"=== Molecular Descriptors for {smiles} ===\n")4344## Step 1: Calculate Kappa shape indices45print("Step 1: Kappa Shape Indices")46for tool in ["GetKappa1", "GetKappa2", "GetKappa3"]:47 result = await client.client.call_tool(48 tool,49 arguments={"smiles": smiles}50 )51 result_data = client.parse_result(result)52 print(f"{tool}: {result_data}")53print()5455## Step 2: Calculate Chi connectivity indices56print("Step 2: Chi Connectivity Indices")57for tool in ["GetChi0n", "GetChi0v", "GetChi1n", "GetChi1v"]:58 result = await client.client.call_tool(59 tool,60 arguments={"smiles": smiles}61 )62 result_data = client.parse_result(result)63 print(f"{tool}: {result_data}")64print()6566## Step 3: Calculate structural features67print("Step 3: Structural Features")6869# Rotatable bonds70result = await client.client.call_tool(71 "GetRotatableBondsNum",72 arguments={"smiles": smiles}73)74print(f"Rotatable bonds: {client.parse_result(result)}")7576# Hydrogen bond donors and acceptors77result = await client.client.call_tool(78 "GetHBDNum",79 arguments={"smiles": smiles}80)81print(f"H-bond donors: {client.parse_result(result)}")8283result = await client.client.call_tool(84 "GetHBANum",85 arguments={"smiles": smiles}86)87print(f"H-bond acceptors: {client.parse_result(result)}")8889# Ring counts90result = await client.client.call_tool(91 "GetRingsNum",92 arguments={"smiles": smiles}93)94print(f"Number of rings: {client.parse_result(result)}")9596result = await client.client.call_tool(97 "GetAromaticRingsNum",98 arguments={"smiles": smiles}99)100print(f"Aromatic rings: {client.parse_result(result)}")101print()102103## Step 4: Calculate physicochemical descriptors104print("Step 4: Physicochemical Descriptors")105106# LogP and molar refractivity (Crippen descriptors)107result = await client.client.call_tool(108 "GetCrippenDescriptors",109 arguments={"smiles": smiles}110)111print(f"Crippen descriptors (LogP, MR): {client.parse_result(result)}")112113# Topological polar surface area114result = await client.client.call_tool(115 "CalculateTPSA",116 arguments={"smiles": smiles}117)118print(f"TPSA: {client.parse_result(result)}")119120# Fraction of sp3 carbons121result = await client.client.call_tool(122 "GetFractionCSP3",123 arguments={"smiles": smiles}124)125print(f"Fraction sp3 carbons: {client.parse_result(result)}")126print()127128await client.disconnect()129```130131### Tool Descriptions132133**SciToolAgent-Chem Server:**134135**Shape Descriptors:**136- `GetKappa1`, `GetKappa2`, `GetKappa3`: Kappa shape indices (molecular shape)137138**Connectivity Indices:**139- `GetChi0n`, `GetChi0v`: Zero-order chi indices140- `GetChi1n`, `GetChi1v`: First-order chi indices141- `GetChi2n`, `GetChi2v`: Second-order chi indices142- `GetChi3n`, `GetChi3v`, `GetChi4n`, `GetChi4v`: Higher-order chi indices143144**Structural Features:**145- `GetRotatableBondsNum`: Count rotatable bonds (flexibility)146- `GetHBDNum`/`GetHBANum`: Hydrogen bond donors/acceptors147- `GetRingsNum`: Total ring count148- `GetAromaticRingsNum`: Aromatic ring count149- `GetAliphaticRingsNum`: Aliphatic ring count150151**Physicochemical Descriptors:**152- `GetCrippenDescriptors`: LogP (lipophilicity) and molar refractivity153- `CalculateTPSA`: Topological polar surface area154- `GetFractionCSP3`: Fraction of sp³ hybridized carbons155- `GetLabuteASA`: Labute accessible surface area156157### Input/Output158159**Input:**160- `smiles`: Molecule in SMILES format161162**Output:**163- **Kappa Indices**: Molecular shape descriptors (1, 2, 3)164- **Chi Indices**: Topological connectivity indices165- **Structural Counts**: Rings, bonds, functional groups166- **LogP**: Lipophilicity (partition coefficient)167- **TPSA**: Topological polar surface area (Ų)168- **Fraction sp³**: Proportion of sp³ carbons (0-1)169170### Descriptor Applications171172**Kappa Shape Indices**173- κ₁, κ₂, κ₃: Describe molecular shape from linear to spherical174- Used in: QSAR models, molecular shape comparison175176**Chi Connectivity Indices**177- Encode information about branching and cyclicity178- Used in: Property prediction, similarity searching179180**Structural Features**181- **Rotatable bonds**: Molecular flexibility, bioavailability182- **H-bond donors/acceptors**: Solubility, permeability183- **Rings**: Rigidity, drug-likeness184185**Physicochemical Descriptors**186- **LogP**: Lipophilicity, membrane permeability187- **TPSA**: Oral bioavailability, BBB penetration188- **Fraction sp³**: Molecular complexity, drug-likeness189190### Drug-Likeness Rules191192**Lipinski's Rule of Five:**193- MW ≤ 500 Da194- LogP ≤ 5195- HBD ≤ 5196- HBA ≤ 10197198**Veber's Rules (Oral Bioavailability):**199- Rotatable bonds ≤ 10200- TPSA ≤ 140 Ų201202**CNS Drug-Likeness:**203- TPSA < 90 Ų (for blood-brain barrier penetration)204205### Use Cases206207- QSAR model development208- Virtual screening and compound prioritization209- Drug-likeness assessment210- Molecular similarity calculations211- Pharmacokinetic property prediction212- Lead optimization213- Chemical space exploration214215### Additional Descriptor Tools216217The SciToolAgent-Chem server provides 160+ tools including:218- `GetBCUT`: BCUT descriptors219- `GetAutocorrelation2D`/`GetAutocorrelation3D`: Autocorrelation descriptors220- `GetWHIM`: WHIM descriptors221- `GetGETAWAY`: GETAWAY descriptors222- `GetMORSE`: MORSE descriptors223- `GetRDF`: Radial distribution function224- `GetUSR`/`GetUSRCAT`: Ultrafast shape recognition descriptors225226### Performance Notes227228- Most descriptor calculations are very fast (<1 second)229- Can batch process multiple molecules230- Descriptors are deterministic (same molecule → same descriptors)