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---6
7# Molecular Descriptors Calculation
8
9## Usage
10
11### 1. MCP Server Definition
12
13Use the same `ChemicalToolsClient` class as defined in the molecular-properties-calculation skill.
14
15### 2. Molecular Descriptors Calculation Workflow
16
17This workflow calculates advanced molecular descriptors used in QSAR modeling, drug discovery, and computational chemistry.
18
19**Workflow Steps:**
20
211. **Calculate Kappa Shape Indices** - Molecular shape descriptors
222. **Calculate Connectivity Indices** - Topological descriptors
233. **Calculate Structural Features** - Rings, bonds, and functional groups
24
25**Implementation:**
26
27```python
28## Initialize client
29HEADERS = {"SCP-HUB-API-KEY": "<your-api-key>"}
30
31client = ChemicalToolsClient(
32 "https://scp.intern-ai.org.cn/api/v1/mcp/31/SciToolAgent-Chem",
33 HEADERS
34)
35
36if not await client.connect():
37 print("connection failed")
38 exit()
39
40## Input: SMILES string to analyze
41smiles = "CCO" # Ethanol
42print(f"=== Molecular Descriptors for {smiles} ===\n")
43
44## Step 1: Calculate Kappa shape indices
45print("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()
54
55## Step 2: Calculate Chi connectivity indices
56print("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()
65
66## Step 3: Calculate structural features
67print("Step 3: Structural Features")
68
69# Rotatable bonds
70result = await client.client.call_tool(
71 "GetRotatableBondsNum",
72 arguments={"smiles": smiles}
73)
74print(f"Rotatable bonds: {client.parse_result(result)}")
75
76# Hydrogen bond donors and acceptors
77result = await client.client.call_tool(
78 "GetHBDNum",
79 arguments={"smiles": smiles}
80)
81print(f"H-bond donors: {client.parse_result(result)}")
82
83result = await client.client.call_tool(
84 "GetHBANum",
85 arguments={"smiles": smiles}
86)
87print(f"H-bond acceptors: {client.parse_result(result)}")
88
89# Ring counts
90result = await client.client.call_tool(
91 "GetRingsNum",
92 arguments={"smiles": smiles}
93)
94print(f"Number of rings: {client.parse_result(result)}")
95
96result = await client.client.call_tool(
97 "GetAromaticRingsNum",
98 arguments={"smiles": smiles}
99)
100print(f"Aromatic rings: {client.parse_result(result)}")
101print()
102
103## Step 4: Calculate physicochemical descriptors
104print("Step 4: Physicochemical Descriptors")
105
106# 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)}")
112
113# Topological polar surface area
114result = await client.client.call_tool(
115 "CalculateTPSA",
116 arguments={"smiles": smiles}
117)
118print(f"TPSA: {client.parse_result(result)}")
119
120# Fraction of sp3 carbons
121result = await client.client.call_tool(
122 "GetFractionCSP3",
123 arguments={"smiles": smiles}
124)
125print(f"Fraction sp3 carbons: {client.parse_result(result)}")
126print()
127
128await client.disconnect()
129```
130
131### Tool Descriptions
132
133**SciToolAgent-Chem Server:**
134
135**Shape Descriptors:**
136- `GetKappa1`, `GetKappa2`, `GetKappa3`: Kappa shape indices (molecular shape)
137
138**Connectivity Indices:**
139- `GetChi0n`, `GetChi0v`: Zero-order chi indices
140- `GetChi1n`, `GetChi1v`: First-order chi indices
141- `GetChi2n`, `GetChi2v`: Second-order chi indices
142- `GetChi3n`, `GetChi3v`, `GetChi4n`, `GetChi4v`: Higher-order chi indices
143
144**Structural Features:**
145- `GetRotatableBondsNum`: Count rotatable bonds (flexibility)
146- `GetHBDNum`/`GetHBANum`: Hydrogen bond donors/acceptors
147- `GetRingsNum`: Total ring count
148- `GetAromaticRingsNum`: Aromatic ring count
149- `GetAliphaticRingsNum`: Aliphatic ring count
150
151**Physicochemical Descriptors:**
152- `GetCrippenDescriptors`: LogP (lipophilicity) and molar refractivity
153- `CalculateTPSA`: Topological polar surface area
154- `GetFractionCSP3`: Fraction of sp³ hybridized carbons
155- `GetLabuteASA`: Labute accessible surface area
156
157### Input/Output
158
159**Input:**
160- `smiles`: Molecule in SMILES format
161
162**Output:**
163- **Kappa Indices**: Molecular shape descriptors (1, 2, 3)
164- **Chi Indices**: Topological connectivity indices
165- **Structural Counts**: Rings, bonds, functional groups
166- **LogP**: Lipophilicity (partition coefficient)
167- **TPSA**: Topological polar surface area (Ų)
168- **Fraction sp³**: Proportion of sp³ carbons (0-1)
169
170### Descriptor Applications
171
172**Kappa Shape Indices**
173- κ₁, κ₂, κ₃: Describe molecular shape from linear to spherical
174- Used in: QSAR models, molecular shape comparison
175
176**Chi Connectivity Indices**
177- Encode information about branching and cyclicity
178- Used in: Property prediction, similarity searching
179
180**Structural Features**
181- **Rotatable bonds**: Molecular flexibility, bioavailability
182- **H-bond donors/acceptors**: Solubility, permeability
183- **Rings**: Rigidity, drug-likeness
184
185**Physicochemical Descriptors**
186- **LogP**: Lipophilicity, membrane permeability
187- **TPSA**: Oral bioavailability, BBB penetration
188- **Fraction sp³**: Molecular complexity, drug-likeness
189
190### Drug-Likeness Rules
191
192**Lipinski's Rule of Five:**
193- MW ≤ 500 Da
194- LogP ≤ 5
195- HBD ≤ 5
196- HBA ≤ 10
197
198**Veber's Rules (Oral Bioavailability):**
199- Rotatable bonds ≤ 10
200- TPSA ≤ 140 Ų
201
202**CNS Drug-Likeness:**
203- TPSA < 90 Ų (for blood-brain barrier penetration)
204
205### Use Cases
206
207- QSAR model development
208- Virtual screening and compound prioritization
209- Drug-likeness assessment
210- Molecular similarity calculations
211- Pharmacokinetic property prediction
212- Lead optimization
213- Chemical space exploration
214
215### Additional Descriptor Tools
216
217The SciToolAgent-Chem server provides 160+ tools including:
218- `GetBCUT`: BCUT descriptors
219- `GetAutocorrelation2D`/`GetAutocorrelation3D`: Autocorrelation descriptors
220- `GetWHIM`: WHIM descriptors
221- `GetGETAWAY`: GETAWAY descriptors
222- `GetMORSE`: MORSE descriptors
223- `GetRDF`: Radial distribution function
224- `GetUSR`/`GetUSRCAT`: Ultrafast shape recognition descriptors
225
226### Performance Notes
227
228- Most descriptor calculations are very fast (<1 second)
229- Can batch process multiple molecules
230- Descriptors are deterministic (same molecule → same descriptors)