SDK для Python
Типизированные синхронный и асинхронный клиенты для химии и источников.
Установите проверенную сборку, задайте CYBERRXN_API_KEY и используйте Client или AsyncClient. Требуется Python 3.10+. Ответы — модели Pydantic; поля сохраняют API-имена в snake_case.
Поиск и исходный текст
from cyberrxn import Client
with Client() as client:
page = client.molecule_reactions(
"CCN1CCN(CO)C(=O)C1=O", role="product", limit=3
)
if page.items:
observation = client.get_observation(page.items[0].observation_id)
print(observation.paragraph_text)
print(observation.conditions.pressure.status)Берите ID наблюдения из ответа. Перед интерпретацией условий прочитайте paragraph_text и correction_provenance, если оно присутствует.
Валидация и балансировка
from cyberrxn import Client
with Client() as client:
checked = client.validate_reaction("CCO>>CC=O")
print(checked.valid, checked.atom_balance.hydrogen_balanced)
balanced = client.balance_reaction("[H][H].O=O>>O")
if balanced.solved and balanced.balanced_reaction_smiles:
formula = client.convert_smiles(balanced.balanced_reaction_smiles)
print(formula.unicode)method="coefficients" меняет только коэффициенты переданных веществ. Явный method="synrbl" запрашивает модель для восстановления недостающих компонентов; проверяйте imputed_species и limitations.
Асинхронный клиент
import asyncio
from cyberrxn import AsyncClient
async def main():
async with AsyncClient() as client:
result = await client.validate_reaction("CCO>>CC=O")
print(result.atom_balance.delta)
asyncio.run(main())Основные методы
| Задача | Метод |
|---|---|
| Корпус и расход | stats(), usage() |
| Поиск источников | search_reactions(...), lookup_reaction(...), molecule_reactions(...) |
| Полное наблюдение и связи | get_observation(...), graph(...) |
| Структурные аналоги | similar_products(...) |
| Химические проверки | validate_reaction(...), balance_reaction(...) |
| Представления молекул | convert_smiles(...), convert_representation(...) |
| Актуальная инструкция | get_reaction_skill() |
| Репорты | report_observation_issue(...), get_report(...), reports(...) |
| Добавление реакций | submit_reaction_contribution(...), get_contribution(...), contributions(...) |
iter_search_reactions, iter_lookup_reaction и iter_molecule_reactions лениво загружают следующие страницы. Каждая загруженная страница химии или поиска — отдельный тарифицируемый вызов. Начинайте с небольшого лимита и останавливайтесь, когда доказательств достаточно.
Ошибки и повторы
Перехватывайте APIError и смотрите status_code, code, retryable, request_id. Среди исключений есть AuthenticationError, PaymentRequiredError, RateLimitError, ValidationError. Химический ответ valid=False — обычный результат, а не HTTP-исключение ValidationError.
Для репорта или реакции используйте стабильный idempotency_key, одинаковый для одной заявки и её повторов. Не отправляйте личную переписку и закрытые лабораторные данные. Ошибки · Добавление реакций.