chemx-client — это Python-библиотека для доступа к научной платформе ChemX.
ChemX — это экосистема для работы с научными данными о наноматериалах. Наша цель — предоставить исследователям и аналитикам готовые инструменты для доступа и анализа данных. Платформа состоит из трёх ключевых компонентов:
- ChemX-DBT: ELT-пайплайн, который очищает, стандартизирует и готовит витрины данных.
- ChemX-Backend: API-сервер на FastAPI, который предоставляет доступ к этим данным через REST API.
- ChemX-Client-Python (эта библиотека): Удобный инструмент для получения данных с нашего API напрямую в Python.
Эта библиотека избавляет вас от необходимости делать прямые HTTP-запросы и возвращает данные в удобном формате pandas.DataFrame, готовом для анализа и использования в Jupyter Notebooks, ML-моделях и других скриптах.
Вы можете установить последнюю версию библиотеки напрямую с GitHub:
!pip install --upgrade git+https://github.com/ai-chem/chemx-client-pythonВот как просто начать работу. Всего три шага, чтобы получить нужные вам данные:
from chemx_client.client import ChemXClient, ChemXAPIError
# Шаг 1: Инициализируйте клиент
client = ChemXClient()
# Шаг 2: Посмотрите, какие наборы данных вообще доступны
try:
schema = client.get_schema()
print("Доступные домены:", schema['available_domains'])
print("Доступные типы данных:", schema['available_data_types'])
except ChemXAPIError as e:
print(f"Ошибка: {e}")
# Шаг 3: Загрузите нужный вам датасет
try:
# Например, получим ML-версию данных для домена 'cytotox'
df = client.get_dataset(domain='cytotox', data_type='ml_data')
print("\nУспешно загружены данные по цитотоксичности:")
print(df.head())
except ChemXAPIError as e:
print(f"Ошибка: {e}")Для подробного пошагового руководства с практическими примерами анализа и визуализации, пожалуйста, откройте наш Jupyter ноутбук:
Библиотека предоставляет два способа получения данных: универсальный (рекомендуемый) и специфичный.
Это самый гибкий способ получить любые данные.
| Метод | Описание | Возвращает |
|---|---|---|
get_schema() |
Получает словарь со списками всех доступных доменов и типов данных. | dict |
get_dataset(domain, data_type, ...) |
Загружает указанный датасет по его домену и типу. | pandas.DataFrame |
Для удобства и обратной совместимости сохранены методы для прямого доступа к каждому датасету. Они являются просто "короткими командами" для get_dataset().
Пример:
client.get_cytotox_ml_data() — это то же самое, что и client.get_dataset(domain='cytotox', data_type='ml_data').
Список методов:
- Данные о цитотоксичности:
get_cytotox_data(),get_cytotox_ml_data(),get_cytotox_column_stats(), и т.д. - Данные о наномагнетизме:
get_nanomag_data(),get_nanomag_ml_data(),get_nanomag_column_stats(), и т.д. - (и так далее для остальных доменов...)
Все методы могут выбросить исключение ChemXAPIError в случае проблем с сетью или сервером. Рекомендуется оборачивать вызовы в блок try...except.
try:
df = client.get_dataset(domain='non_existent_domain', data_type='all_data')
except ChemXAPIError as e:
print(f"Произошла ошибка при запросе к API: {e}")This repository is the central hub for the ChemX project. The full ecosystem consists of several repositories designed to work together:
- ChemX: Contains 10 datasets, documentation, and code for running baseline and agentic experiments for information extraction.
- ChemX-dbt: Contains database models (dbt) to use ChemX datasets and build ETL pipelines.
- ChemX-backend: Contains backend code to serve ChemX datasets via API.
- ChemX-RAG: Contains code to build Retrieval-Augmented Generation (RAG) applications using ChemX datasets.
- ChemX-client-python: Contains a Python client for accessing ChemX datasets via the API.