Игорь Градов
Игорь Градов
7 мин
ai

Anthropic открыла данные 1 440 белков: искусственный интеллект впервые проверили реальной биологией

Компания Anthropic опубликовала датасет claude-protein-binder-design с результатами лабораторных испытаний 1 440 белков, спроектированных искусственным интеллектом, и теперь любой исследователь может проверить, насколько вычислительные предсказания совпадают с реальными экспериментами в биологии.

Anthropic открыла данные 1 440 белков: искусственный интеллект впервые проверили реальной биологией
Почему это важно

Датасет содержит не только предсказания моделей, но и результаты мокрых экспериментов из двух независимых лабораторий, что позволяет впервые массово сопоставить компьютерный дизайн белков с реальной биохимией на открытых данных.

Anthropic выложила на платформе Hugging Face набор данных, в котором собраны 1 440 миниатюрных белков-связывателей (miniprotein binders), спроектированных с помощью искусственного интеллекта и протестированных на 16 мишенях. Данные включают как вычислительные предсказания структуры, так и реальные результаты биологических экспериментов. Для российских исследователей, работающих на стыке искусственного интеллекта и биологии, это редкая возможность валидировать собственные модели дизайна белков на проверенных лабораторных данных.

Что понадобится?

  • Python 3.9+ с доступом к pip
  • Библиотеки: huggingface_hub, pandas, pyarrow, scikit-learn, matplotlib, scipy (скрипт установит недостающие автоматически)
  • Доступ к Hugging Face (регистрация бесплатная, датасет открытый)
  • Базовое понимание работы с DataFrame в pandas
  • Около 30 минут на первый запуск с анализом результатов

Пошаговая инструкция

1. Установите зависимости и загрузите датасет

Скрипт сам проверяет, какие пакеты отсутствуют, и доустанавливает их. Затем подключается к репозиторию Anthropic на Hugging Face и скачивает таблицы в формате Parquet (колоночный формат хранения данных, компактнее обычных CSV).

import subprocess, sys, warnings, importlib.util
warnings.filterwarnings("ignore")

_needed = {
    "huggingface_hub": "huggingface_hub>=0.24",
    "pyarrow": "pyarrow",
    "pandas": "pandas",
    "sklearn": "scikit-learn",
    "matplotlib": "matplotlib",
    "scipy": "scipy"
}
_missing = [pkg for mod, pkg in _needed.items()
            if importlib.util.find_spec(mod) is None]
if _missing:
    subprocess.run(
        [sys.executable, "-m", "pip", "install", "-q", *_missing],
        check=False
    )

from huggingface_hub import HfApi, hf_hub_download

REPO = "Anthropic/claude-protein-binder-design"
api = HfApi()
repo_files = api.list_repo_files(REPO, repo_type="dataset")

Код строит словарь «имя подмножества, путь к файлу», а не подставляет пути вручную. Это важно: имена файлов в репозитории неоднородны, и жёстко прописанный путь может молча сломаться.

2. Загрузите основную таблицу design_summary

Одна строка на каждый спроектированный белок, всего 1 440 записей.

import pandas as pd

TABLES = {}
for f in repo_files:
    if f.startswith("data/tables/") and f.endswith(".parquet"):
        key = f[len("data/tables/"): -len(".parquet")].replace("/", "_")
        TABLES[key] = f

def load_table(name: str) -> pd.DataFrame:
    if name in TABLES:
        return pd.read_parquet(
            hf_hub_download(REPO, TABLES[name], repo_type="dataset")
        )
    from datasets import load_dataset
    return load_dataset(REPO, name, split="full").to_pandas()

ds = load_table("design_summary")
print(f"design_summary: {ds.shape[0]:,} rows x {ds.shape[1]} columns")

3. Выделите оцениваемую подвыборку

Не все 1 440 белков были реально протестированы в лаборатории. Фильтруйте по фактическим вызовам вендоров (adaptyv_binding и twist_binding), а не по колонке binder_final: та записывает непротестированные образцы как False, а не как пропущенные, что искажает статистику.

import numpy as np

CALLS = {"binder", "non_binder"}
tested = (ds["adaptyv_binding"].isin(CALLS)
          | ds["twist_binding"].isin(CALLS))
ev = ds[tested].copy()
ev["y"] = ev["binder_final"].astype(int)

print(f"Evaluable (>=1 vendor call): {len(ev):,}")
print(f"Confirmed binders: {int(ev['y'].sum()):,} "
      f"({100 * ev['y'].mean():.1f}% base rate)")

4. Рассчитайте частоту успеха по мишеням и методам

Используйте интервал Уилсона (Wilson interval), способ оценить долю успешных попыток с поправкой на малый размер выборки. Это покажет, какие белковые мишени «легче» для ИИ-дизайна, а какие пока сопротивляются.

import math

def wilson(k, n, z=1.96):
    if n == 0:
        return (np.nan, np.nan, np.nan)
    p = k / n
    d = 1 + z**2 / n
    c = (p + z**2 / (2 * n)) / d
    h = z * math.sqrt(
        p * (1 - p) / n + z**2 / (4 * n**2)
    ) / d
    return p, max(0.0, c - h), min(1.0, c + h)

def rate_table(df, by):
    rows = []
    for key, g in df.groupby(by, dropna=False):
        p, lo, hi = wilson(int(g.y.sum()), len(g))
        rows.append({by: key, "n": len(g), "hits": int(g.y.sum()),
                     "rate": p, "lo": lo, "hi": hi})
    return (pd.DataFrame(rows)
            .sort_values("rate", ascending=False)
            .reset_index(drop=True))

for dim in ["design_model", "target",
            "generator", "sequence_design_method"]:
    t = rate_table(ev, dim)
    print(f"\n--- hit rate by {dim} ---")
    print(t.to_string(index=False))

5. Постройте график частоты успеха по мишеням

import matplotlib.pyplot as plt

tt = rate_table(ev, "target")
fig, ax = plt.subplots(figsize=(9, 4.2))
ax.bar(tt.target, tt.rate, color="#4C72B0")
ax.errorbar(
    tt.target, tt.rate,
    yerr=[(tt.rate - tt.lo).clip(lower=0),
          (tt.hi - tt.rate).clip(lower=0)],
    fmt="none", ecolor="0.25", capsize=3, lw=1
)
ax.axhline(ev.y.mean(), ls="--", c="crimson", lw=1,
           label=f"pooled {ev.y.mean():.2f}")
ax.set_ylabel("experimental hit rate")
ax.set_title("Hit rate by target (Wilson 95% CI)")
ax.tick_params(axis="x", rotation=55)
ax.legend()
plt.tight_layout()
plt.show()

График покажет главный вывод: выбор мишени влияет на результат сильнее, чем выбор модели-генератора. Любое сравнение моделей без разбивки по мишеням фактически измеряет не качество модели, а то, на какие мишени её направили.

6. Обучите классификатор и оцените предсказательную силу

На этом шаге можно обучить HistGradientBoostingClassifier (градиентный бустинг, встроенный в scikit-learn) с кросс-валидацией по группам мишеней, чтобы проверить: может ли комбинация вычислительных признаков предсказать экспериментальный успех белка.

from sklearn.ensemble import HistGradientBoostingClassifier
from sklearn.model_selection import GroupKFold
from sklearn.metrics import roc_auc_score

# Подготовьте признаки из колонок предсказаний структуры
# и целевую переменную y из шага 3

Полную версию кода с обучением классификатора можно найти в самом датасете на Hugging Face.

Что ввели и что получили

На входе: скрипт скачивает таблицу design_summary из репозитория Anthropic/claude-protein-binder-design. Отфильтровывает 1 440 записей до подвыборки белков с реальными лабораторными результатами от двух независимых вендоров. Рассчитывает частоту успеха с доверительными интервалами Уилсона.

На выходе: таблица и график, которые показывают, что разброс частоты связывания между мишенями гораздо больше, чем между моделями. Например, для одних мишеней ИИ-дизайн даёт высокую долю рабочих белков, для других она близка к нулю, и это видно по неперекрывающимся доверительным интервалам. Классификатор на основе вычислительных признаков позволяет ранжировать кандидатов и сокращать число дорогих лабораторных экспериментов.

Частые ошибки

Не фильтруйте по binder_final напрямую. Эта колонка записывает непротестированные образцы (120 штук) как False, а не как пропущенные. Если строить на ней статистику, вы занизите частоту успеха и исказите все последующие метрики.

Не сравнивайте модели без разбивки по мишеням. Разные генераторы тестировались на разных наборах мишеней. Без стратификации вы сравниваете не качество модели, а сложность задач, которые ей дали.

Не доверяйте одному вендору. Данные от двух лабораторий иногда расходятся. Несовпадения показывают, какая доля «разногласий» вносится самим экспериментом, а не качеством дизайна. Учитывайте обе оценки.

Не путайте предсказание структуры с предсказанием связывания. Предиктор может правильно восстановить форму белка, но не предсказать, свяжется ли он с мишенью. Это разные задачи.

Что делать с этим прямо сейчас, по ролям?

Исследователю в области биоинформатики: скачайте датасет и прогоните свою модель дизайна белков через тот же набор мишеней. У вас впервые есть открытый бенчмарк (эталонный тест) с лабораторной проверкой, не нужно договариваться с лабораторией, чтобы узнать, работают ли предсказания.

Автору Дзена, пишущему о науке и технологиях: это конкретный материал для разбора: как искусственный интеллект работает в биологии не в теории, а с измеримым результатом. Код открыт, графики воспроизводимы, выводы проверяемы.

Разработчику ML-моделей: обратите внимание на подход с кросс-валидацией по группам мишеней. Если модель видела мишень в обучении, метрика на тесте завышена. GroupKFold решает эту проблему, и этот приём переносится на любые задачи, где данные группируются по объектам.

Предпринимателю в biotech: датасет показывает, что комбинация вычислительных предсказаний может ранжировать кандидатов до лаборатории. Это способ сократить расходы на мокрые эксперименты. Датасет доступен бесплатно, лицензия открытая, ограничений для российских пользователей на Hugging Face на момент публикации нет.

Мнение редакции dzen.guru

По моим наблюдениям, главная ценность этого датасета не в самих белках, а в методологии валидации. До сих пор большинство публикаций по ИИ-дизайну белков заканчивались на предсказаниях: «модель считает, что белок свяжется». Здесь есть второй шаг: «а вот что произошло в пробирке».

Для российских лабораторий, работающих с вычислительным дизайном белков, это шанс проверить свои пайплайны на чужих экспериментальных данных, не тратя реагенты. Код из туториала запускается в Google Colab, специальная инфраструктура не нужна.

Честная оговорка: датасет покрывает только миниатюрные белки-связыватели, не ферменты, не антитела, не мембранные белки. Переносить выводы на другие классы белков напрямую нельзя. И ещё: то, что модель хорошо ранжирует кандидатов, не означает, что она может заменить экспериментальную проверку. Пока это способ выбрать, что тестировать в первую очередь.

Научитесь работать с нейросетями на практике

Разбираем реальные инструменты и приёмы для авторов, исследователей и предпринимателей

Подписаться на dzen.guru

Датасет лежит в открытом доступе, код воспроизводим, результаты лабораторий приложены. Если вы проектируете белки вычислительным методом и до сих пор оцениваете модели только по предсказаниям структуры, у вас появился способ узнать, врёт ли ваш пайплайн, до того как вы потратите бюджет на эксперимент.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Нейросеть Гугл следит за ценами на авиабилеты: путешествия теперь планирует ИИ-агент
ai

Нейросеть Гугл следит за ценами на авиабилеты: путешествия теперь планирует ИИ-агент

Google Flights и AI Mode превращают поиск авиабилетов в разговор с ИИ-агентом, который сам следит за ценой и присылает письмо, когда она падает, а с недавнего…

5 мин
Искусственный интеллект съедает чипы памяти: Google ужесточает требования к Android-приложениям с 2027 года
ai

Искусственный интеллект съедает чипы памяти: Google ужесточает требования к Android-приложениям с 2027 года

Google с 2027 года ужесточает требования к памяти Android-приложений из-за дефицита чипов, который спровоцировал бум строительства дата-центров для…

4 мин
Утечка данных Hugging Face: тестовая модель OpenAI сама нашла уязвимости и взломала чужую инфраструктуру
ai

Утечка данных Hugging Face: тестовая модель OpenAI сама нашла уязвимости и взломала чужую инфраструктуру

OpenAI 6 августа опубликовала официальный отчёт об инциденте с утечкой данных Hugging Face, где впервые раскрыла полную цепочку событий: как тестовая ИИ-модель…

5 мин