Convert between molecular formats including SMILES, InChI, InChIKey, and SELFIES for cheminformatics applications.
Use the same ChemicalToolsClient class as defined in the molecular-properties-calculation skill.
This workflow converts molecules between different chemical formats (SMILES, InChI, SELFIES) for database searching, machine learning, and cheminformatics applications.
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()
print("=== Molecular Format Conversion ===\n")
## Test molecules
smiles = "CCO" # Ethanol
inchi = "InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3"
## Step 1: SMILES to InChI
print("Step 1: SMILES to InChI")
result = await client.client.call_tool(
"SMILESToInChI",
arguments={"smiles": smiles}
)
result_data = client.parse_result(result)
print(f"SMILES: {smiles}")
print(f"{result_data}\n")
## Step 2: InChI to SMILES
print("Step 2: InChI to SMILES")
result = await client.client.call_tool(
"InChIToSMILES",
arguments={"inchi": inchi}
)
result_data = client.parse_result(result)
print(f"InChI: {inchi}")
print(f"{result_data}\n")
## Step 3: SMILES to SELFIES
print("Step 3: SMILES to SELFIES")
result = await client.client.call_tool(
"SMILEStoSELFIES",
arguments={"smiles": smiles}
)
result_data = client.parse_result(result)
print(f"SMILES: {smiles}")
print(f"{result_data}\n")
## Step 4: SELFIES to SMILES
print("Step 4: SELFIES to SMILES")
selfies = "[C][C][O]"
result = await client.client.call_tool(
"SELFIEStoSMILES",
arguments={"selfies": selfies}
)
result_data = client.parse_result(result)
print(f"SELFIES: {selfies}")
print(f"{result_data}\n")
await client.disconnect()
SciToolAgent-Chem Server:
SMILESToInChI: Convert SMILES to InChI
smiles (str)InChIToSMILES: Convert InChI to SMILES
inchi (str)SMILEStoSELFIES: Convert SMILES to SELFIES
smiles (str)SELFIEStoSMILES: Convert SELFIES to SMILES
selfies (str)InChIToInChIKey: Convert InChI to InChIKey
inchi (str)InChIKeyToInChI: Convert InChIKey to InChI
inchikey (str)Input:
Output:
| Format | Canonical | Human-Readable | Database-Friendly | ML-Friendly |
|---|---|---|---|---|
| SMILES | Partial | High | Medium | Medium |
| InChI | Yes | Low | High | Low |
| InChIKey | Yes | No | Very High | No |
| SELFIES | Yes | Low | Low | Very High |
SMILES (Simplified Molecular Input Line Entry System)
InChI (International Chemical Identifier)
InChIKey
SELFIES (Self-Referencing Embedded Strings)
ConvertSmilesToInchi: Alternative SMILES to InChI converterGenerateMolKeyFromSmiles: Generate molecular keyInChIKeyToMOL: Convert InChIKey to MOL fileIsValidInChIKey: Validate InChIKey formatSome conversions may fail for:
Always check for errors in the returned data.