CoderCastrov logo
CoderCastrov
API

Как программно получить химические данные из PubChem

Как программно получить химические данные из PubChem
просмотров
4 мин чтение
#API

PUG-REST против PUG-VIEW: Введение

Вы когда-нибудь задумывались о том, как ученые общались, когда интернет еще не существовал? Я тоже об этом не задумывался, пока не услышал эту историю от профессора, с которым работал во время учебы. Оказывается, органические химики раньше создавали новые молекулы и не очень старались сообщать об этом кому-либо. В то время ученые были гораздо менее междисциплинарными, чем сейчас. Поэтому случайно произошло то, что он встретил биохимика, который искал определенную молекулу. И также случайно оказалось, что этот профессор создал такой тип молекулы.

Теперь фармацевтические компании намеренно тратят миллиарды долларов [1] на создание и тестирование химических веществ в поисках новых лекарств. Естественно, машинное обучение используется на каждом этапе процесса [2]. И, конечно, методы машинного обучения бесполезны без большого количества хороших данных. Вот где на помощь приходит PubChem, самая большая коллекция бесплатных химических данных. В этом руководстве я хочу рассмотреть способы программного получения данных из PubChem, если вам интересно попробовать.


Есть два способа получения данных из PubChem программно: PUG-REST [3] и PUG-View [4]. Какой из них выбрать зависит от типа данных, которые вы хотите получить. Ниже приведено краткое введение в использование этих двух сервисов. Пожалуйста, обратитесь к источникам внизу для более полного списка возможностей этих сервисов.

Оглавление:


PUG-REST

PUG-REST предоставляет вам способ доступа к данным через URL, который выглядит примерно так (<prolog> - это "https://pubchem.ncbi.nlm.nih.gov/rest/pug"):

<prolog>/<input >/<operation>/<output>

Вы используете <input>, чтобы сообщить сервису, какие соединения или вещества нужно искать. Например, если я хочу найти информацию об аспирине, я могу сконструировать <prolog>/<input spec> таким образом:

<prolog>/compound/name/aspirin

Здесь <input> разбивается на 3 части. Сначала я сообщаю сервису тип записи, который является "compound". Затем я хочу искать по "name". И это имя - "aspirin". Эта ссылка дает мне XML-файл, который содержит всю информацию, которую PUG-REST имеет об аспирине. Предположим, я хочу только молекулярную массу аспирина. Я могу сделать это:

<prolog>/compound/name/aspirin/property/MolecularWeight

где <operation> - это просмотр "property" аспирина и извлечение "molecular weight". Затем, предположим, мне не нравится XML, и я хочу его вместо этого в формате JSON:

<prolog>/compound/name/aspirin/property/MolecularWeight/json


PUG-VIEW

Как данные извлекаются через PUG-View очень похоже на PUG-REST. В этом случае прологом является "https://pubchem.ncbi.nlm.nih.gov/rest/pug_view". Предположим, я хочу узнать, что есть в PUG-View о лекарстве аспирин:

<prolog>/data/compound/2244

Здесь 2244 - это CID аспирина, что означает идентификатор соединения. Эта ссылка дает мне всю информацию, которая есть в PUG-View о аспирине. Чтобы сузить это, я делаю следующее:

<prolog>/data/compound/2244?heading=Melting-Point

чтобы узнать точку плавления аспирина. Если вы посмотрите на эту ссылку, вы увидите, что это не просто одно число, а несколько чисел вместе с аннотациями. Это приводит меня к следующему пункту.


В чем разница?

Во-первых, PUG-REST извлекает информацию, вычисленную PubChem, в то время как PUG-View предоставляет вам информацию, собранную из других источников вместе с аннотациями. Это означает, что если вам нужны экспериментальные данные, вам следует сначала посмотреть в PUG-View. Для списка разрешенных заголовков см. [5]. Если вы нажмете на "Химические и физические свойства", а затем на "Экспериментальные свойства", вы увидите "Температура плавления". Таким образом, используя указанный выше шаблон, вы можете получить другие типы информации из этого списка о аспирине (и других соединениях), такие как температура кипения или плотность.

Во-вторых, я не использовал название "аспирин" для поиска его информации в PUG-View. Это потому, что, в отличие от PUG-REST, PUG-View принимает только CID в качестве входных данных. Для полного списка идентификаторов, которые можно использовать с PUG-REST, см. [3].

В-третьих, используя PUG-REST, вы можете получить информацию о нескольких идентификаторах. Например, я могу получить информацию о соединениях с CID 1 и 2 следующим образом

https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/1,2

С другой стороны, PUG-View позволяет использовать только один идентификатор за раз.

Политика использования

Ни PUG-REST, ни PUG-View не предназначены для обработки больших объемов (миллионов) запросов. PubChem имеет следующие ограничения:

  • Не более 5 запросов в секунду.
  • Не более 400 запросов в минуту.
  • Не более 300 секунд времени выполнения в минуту.

Если ваши требования превышают эти ограничения, вы можете связаться с ними, чтобы решить эту проблему.


Запросы и Beautiful Soup

Вот блокнот Google Colab о том, как взаимодействовать с PubChem. Я не могу гарантировать, что это будет работать для всех химических соединений. Я пробовал только на аспирине. Надеюсь, это поможет!


Другие статьи от меня

Что нового в области машинного обучения в здравоохранении?

Общий взгляд на проделанную работу

towardsdatascience.com

Чеклист основной статистики

Статистический вывод, экспериментальное проектирование, проверка значимости, регрессия.

towardsdatascience.com

6 общих метрик для вашего следующего проекта по регрессии

Преимущества, недостатки и основные проблемы

towardsdatascience.com


Источники

[1] https://www.biopharmadive.com/news/new-drug-cost-research-development-market-jama-study/573381/

[2] https://www.nature.com/articles/s41573-019-0024-5

[3] https://pubchemdocs.ncbi.nlm.nih.gov/pug-rest

[4] https://pubchemdocs.ncbi.nlm.nih.gov/pug-view

[5] https://pubchem.ncbi.nlm.nih.gov/classification/#hid=72