Spaces:
Running
Running
| """LangChain ``@tool`` wrappers for cheminformatics functions. | |
| Each tool delegates to the pure-Python implementation in | |
| :mod:`chemgraph.tools.cheminformatics_core`. | |
| """ | |
| from __future__ import annotations | |
| from typing import Literal | |
| from langchain_core.tools import tool | |
| from chemgraph.schemas.atomsdata import AtomsData | |
| from chemgraph.tools.cheminformatics_core import ( | |
| resolve_molecule_identity_core, | |
| smiles_to_atomsdata_core, | |
| smiles_to_coordinate_file_core, | |
| ) | |
| def molecule_name_to_smiles(name: str) -> dict: | |
| """Convert a molecule name to SMILES format. | |
| Parameters | |
| ---------- | |
| name : str | |
| The name of the molecule to convert. | |
| Returns | |
| ------- | |
| dict | |
| A JSON-serializable dict with the resolved SMILES. | |
| """ | |
| identity = resolve_molecule_identity_core(name) | |
| identity["name"] = str(name) | |
| return identity | |
| def smiles_to_atomsdata(smiles: str, randomSeed: int = 2025) -> AtomsData: | |
| """Convert a SMILES string to AtomsData format. | |
| Parameters | |
| ---------- | |
| smiles : str | |
| SMILES string representation of the molecule. | |
| randomSeed : int, optional | |
| Random seed for RDKit 3D structure generation, by default 2025. | |
| Returns | |
| ------- | |
| AtomsData | |
| AtomsData object containing the molecular structure. | |
| """ | |
| return smiles_to_atomsdata_core(smiles, seed=randomSeed) | |
| def smiles_to_coordinate_file( | |
| smiles: str, | |
| output_file: str = "molecule.xyz", | |
| randomSeed: int = 2025, | |
| fmt: Literal["xyz"] = "xyz", | |
| ) -> str: | |
| """Convert a SMILES string to a coordinate file. | |
| Parameters | |
| ---------- | |
| smiles : str | |
| SMILES string representation of the molecule. | |
| output_file : str, optional | |
| Path to save the output coordinate file (currently XYZ only). | |
| randomSeed : int, optional | |
| Random seed for RDKit 3D structure generation, by default 2025. | |
| fmt : {"xyz"}, optional | |
| Output format. Only "xyz" supported for now. | |
| Returns | |
| ------- | |
| str | |
| A single-line JSON string LLMs can parse. | |
| """ | |
| return smiles_to_coordinate_file_core( | |
| smiles, output_file=output_file, seed=randomSeed, fmt=fmt | |
| ) | |