https://github.com/umbrellaleaf5/drugdesign_data_analysis
Module of the DrugDesign project responsible for loading and pre-processing data from ChEMBL and PubChem, necessary for further modeling and analysis in drug development
https://github.com/umbrellaleaf5/drugdesign_data_analysis
chembl chemistry dafe data-analysis doxygen-documentation mipt pubchem python requests
Last synced: about 2 months ago
JSON representation
Module of the DrugDesign project responsible for loading and pre-processing data from ChEMBL and PubChem, necessary for further modeling and analysis in drug development
- Host: GitHub
- URL: https://github.com/umbrellaleaf5/drugdesign_data_analysis
- Owner: UmbrellaLeaf5
- License: unlicense
- Created: 2024-12-14T17:51:04.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-06-21T22:53:16.000Z (4 months ago)
- Last Synced: 2025-06-21T23:27:35.792Z (4 months ago)
- Topics: chembl, chemistry, dafe, data-analysis, doxygen-documentation, mipt, pubchem, python, requests
- Language: Python
- Homepage: https://umbrellaleaf5.github.io/DrugDesign_data_analysis/
- Size: 590 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# DrugDesign Data Analysis
[](http://unlicense.org/)
[](./CONTRIBUTING.md)templated: generated from [UmbrellaLeaf5/template_python_usual](https://github.com/UmbrellaLeaf5/template_python_usual)
___
## Contents
* [Description](#description)
* [Documentation](#documentation)
* [Installation](#installation)
* [Configurations](#configurations)
* [Sources](#sources)## Description
Этот модуль отвечает за загрузку и предварительную обработку данных из [ChEMBL](#sources) и [PubChem](#sources), необходимых для дальнейшего моделирования и анализа при разработке лекарств.
Цель модуля:
* Автоматическое скачивание данных о соединениях, активностях и мишенях
из базы данных ChEMBL, а также данных о токсичности соединений из PubChem ChemIDplus.
* Преобразование данных в формат, пригодный для обучения моделей машинного
обучения.
* Фильтрация и очистка данных для повышения качества моделей.## Documentation
[Документация](https://umbrellaleaf5.github.io/DrugDesign_data_analysis), созданная с помощью [Doxygen](https://www.doxygen.nl).
## Installation
0. **Клонирование репозитория:**
Перед тем как начать, вам необходимо клонировать репозиторий с исходным кодом проекта.
```bash
git clone https://gitlab.com/UmbrellaLeaf5/drugdesign_parsing.git
```Перейдите в директорию, куда был клонирован репозиторий:
```bash
cd DrugDesign_data_analysis
```1. **Создание виртуального окружения:**
Откройте терминал или командную строку в корневой директории вашего проекта (там, где находится файл `requirements.txt`) и выполните следующую команду для создания виртуального окружения с именем `.venv`:
```bash
python3 -m venv .venv
```или
```bash
python -m venv .venv
```* Если у вас установлена только версия `Python 3`, можете использовать `python` вместо `python3`.
* Если виртуальное окружение уже существует (вы его создавали ранее), пропустите этот шаг.2. **Активация виртуального окружения:**
Активируйте виртуальное окружение, чтобы `Python` использовал библиотеки, установленные внутри него:
* **Linux/macOS:**
```bash
source .venv/bin/activate
```* **Windows (Command Prompt):**
```cmd
.venv\Scripts\activate
```* **Windows (PowerShell):**
```powershell
.venv\Scripts\Activate.ps1
```После активации вы увидите `(.venv)` в начале строки терминала, указывающее на то, что виртуальное окружение активно.
3. **Установка зависимостей из `requirements.txt`:**
Установите все библиотеки, перечисленные в файле `requirements.txt`, выполнив следующую команду:
```bash
./.venv/Scripts/pip install -r requirements.txt
```или просто:
```bash
pip install -r requirements.txt
```
**Или просто используйте [`uv`](https://github.com/astral-sh/uv):**```bash
uv venv .venv
```* **Linux/macOS:**
```bash
source .venv/bin/activate
```* **Windows (Git Bash):**
```bash
source .venv/Scripts/activate
```* **Windows (Command Prompt):**
```cmd
.venv\Scripts\activate
```* **Windows (PowerShell):**
```powershell
.venv\Scripts\Activate.ps1
``````bash
uv pip install -r requirements.txt
```P.S. одной строкой:
```bash
uv venv .venv && source .venv/Scripts/activate && uv pip install -r requirements.txt
```## Configurations
Файл [`config.json`](./Configurations/config.json) содержит параметры конфигурации для загрузки и обработки данных, в основном сфокусированного на базах данных `ChEMBL` и `PubChem`. Он определяет настройки для загрузки соединений, активностей, клеточных линий и информации о мишенях из `ChEMBL`, а также данных о токсичности из `PubChem`.
### Общие настройки
* `testing_flag`: *boolean* - логический флаг, который, когда установлен в `true`, включает режим тестирования (ограничивает количество загружаемых данных для ускорения тестирования). При рабочей эксплуатации должен быть установлен в `false`.
* `skip_downloaded`: *boolean* - логический флаг, указывающий, следует ли пропускать загрузку, если файлы уже существуют (полезно для повторного запуска скрипта без перезагрузки данных).
* `csv_separator`: *string* - строка, определяющая разделитель полей в CSV-файлах (например, "," или ";").
* `keyboard_end_message`: *string* - сообщение, которое выводится при завершении загрузки по нажатию клавиш (`Ctrl+C`/`Ctrl+Z`).### ChEMBL
#### ChEMBL_download_activities
Подзадача загрузки активностей с ChEMBL для различных мишеней и клеточных линий, которая выполняется при включении определенных флагов в других задачах.
* `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей (для идентификации в логах).
* `logger_color`: *string* - цветовой код для вывода журнала.
* `results_folder_name`: *string* - имя папки для хранения загруженных данных об активности.
* `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли догружать соединения в формате SDF.
* `filtering`: *dictionary* - словарь, содержащий параметры фильтрации данных об активностях.
* `targets`: *dictionary* - фильтрация для активностей мишеней.
* `standard_relation`: *list[string]* - список соотношений (например, `=`).
* `standard_units`: *list[string]* - список единиц измерения.
* `target_organism`: *list[string]* - список типов организмов.
* `standard_type`: *list[string]* - список типов измерений.
* `assay_type`: *list[string]* - список типов биологических тестов.
* `cell_lines`: *dictionary* - фильтрация для активностей клеточных линий.
* `standard_relation`: *list[string]* - список соотношений (например, `=`).
* `standard_units`: *list[string]* - список единиц измерения.
* `assay_organism`: *list[string]* - список типов организмов.
* `standard_type`: *list[string]* - список типов измерений.
* `assay_type`: *list[string]* - список типов биологических тестов.#### ChEMBL_download_cell_lines
Задача по загрузке клеточных линий с ChEMBL.
* `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.
* `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.
* `logger_color`: *string* - цветовой код для вывода журнала.
* `results_folder_name`: *string* - имя папки для хранения загруженных данных о клеточных линиях.
* `results_file_name`: *string* - имя файла для сохранения данных о клеточных линиях.
* `download_activities`: *boolean* - логический флаг, указывающий, следует ли загружать данные об активности для клеточных линий.
* `raw_csv_folder_name`: *string* - имя папки для хранения необработанных данных в формате .csv.
* `raw_csv_g_drive_id`: *string* - идентификатор Google.Drive архива, в котором лежат неочищенные файлы с необходимыми активностями (необходим, так как активности к клеточным линиям через интерфейс `chembl_webresource_client` или API ChEMBL - не вышло).
* `download_all`: *boolean* - логический флаг, указывающий, следует ли загружать данные для всех клеточных линий или только для клеточных линий, указанных в `id_list`.
* `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли загружать соединения в формате .sdf.
* `id_list`: *list[string]* - список ChEMBL_ID для конкретных клеточных линий, для которых необходимо загрузить данные.#### ChEMBL_download_compounds
Задача по загрузке соединений с ChEMBL.
* `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.
* `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.
* `logger_color`: *string* - цветовой код для вывода журнала.
* `results_folder_name`: *string* - имя папки для хранения загруженных данных о соединениях.
* `molfiles_folder_name`: *string* - имя папки для хранения mol- и sdf-файлов соединений.
* `combined_file_name`: *string* - имя файла для сохранения объединенных данных о соединениях.
* `need_combining`: *boolean* - логический флаг, указывающий, нужно ли объединять соединения в один файл.
* `delete_after_combining`: *boolean* - логический флаг, указывающий, следует ли удалять оставшиеся данные после объединения.
* `mw_ranges`: *list[lists[float]]* - список диапазонов молекулярной массы, используемых для фильтрации загрузки соединений.#### ChEMBL_download_targets
Задача по загрузке мишеней с ChEMBL.
* `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.
* `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.
* `logger_color`: *string* - цветовой код для вывода журнала.
* `results_folder_name`: *string* - имя папки для хранения загруженных данных о мишенях.
* `results_file_name`: *string* - имя файла для сохранения данных о мишенях.
* `download_activities`: *boolean* - логический флаг, указывающий, следует ли загружать данные об активностях для мишеней.
* `download_all`: *boolean* - логический флаг, указывающий, следует ли загружать данные для всех мишеней или только для мишеней, указанных в `id_list`.
* `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли загружать соединения в формате SDF.
* `id_list`: *list[string]* - список ChEMBL_ID для конкретных мишеней, для которых необходимо загрузить данные.### PubChem
#### PubChem_download_toxicity
Задача по загрузке токсичности соединений линий с PubChem (ChemIDPlus).
* `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.
* `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.
* `logger_color`: *string* - цветовой код для вывода журнала.
* `results_folder_name`: *string* - имя папки для хранения загруженных данных о токсичности.
* `molfiles_folder_name`: *string* - имя папки для хранения mol- и sdf-файлов соединений.
* `results_file_name`: *string* - имя файла для сохранения данных о токсичности.
* `combined_file_name`: *string* - имя файла для сохранения объединенных данных о токсичности.
* `need_combining`: *boolean* - логический флаг, указывающий, нужно ли объединять данные.
* `delete_after_combining`: *boolean* - логический флаг, указывающий, следует ли удалять оставшиеся данные после объединения.
* `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли загружать соединения в формате SDF.
* `filtering`: *dictionary* - словарь, содержащий параметры фильтрации данных о токсичности.
* `kg`: *dictionary* - фильтрация для дозы, указанной в `mg/kg`.
* `organism`: *list[string]* - список организмов для фильтрации.
* `route`: *list[string]* - список способов введения для фильтрации.
* `testtype`: *list[string]* - список типов тестирования для фильтрации.
* `m3`: *dictionary* - фильтрация для дозы, указанной в `mg/m3`.
* `organism`: *list[string]* - список организмов для фильтрации.
* `route`: *list[string]* - список способов введения для фильтрации.
* `testtype`: *list[string]* - список типов тестирования для фильтрации.
* `need_filtering_by_characteristics`: *boolean* - логический флаг, указывающий, следует сохранять отфильтрованные по количеству вхождений характеристик выборки токсичности.
* `occurrence_characteristics_number`: *integer* - минимальное количество вхождений характеристик в соотв. выборки.
* `characteristics_subfolder_name`: *string* - имя подпапки для хранения отфильтрованных по количеству вхождений характеристик выборок токсичности.
* `sleep_time`: *float* - число с плавающей точкой, представляющее время ожидания между запросами (в секундах, для предотвращения блокировки со стороны PubChem).
* `start_page`: *integer* - число, представляющее начальную страницу данных о токсичности.
* `end_page`: *integer* - число, представляющее последнюю страницу данных о токсичности.
* `limit`: *integer* - число, представляющее лимит для кол-ва данных за 1 запрос.### Utils
#### CombineCSVInFolder
* `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.
* `logger_color`: *string* - цветовой код для вывода журнала.#### VerboseLogger
* `verbose_print`: *boolean* - логический флаг, указывающий, включен ли подробный вывод в консоль.
* `message_ljust`: *integer* - ширина левого выравнивания для сообщений лога.
* `exceptions_file`: *string* - имя файла для записи исключений.
* `output_to_exceptions_file`: *boolean* - логический флаг, указывающий, следует ли выводить весь вывод только в файл для записи исключений.#### ReTry
* `attempts_amount`: *integer* - количество попыток по умолчанию.
* `sleep_time`: *float* - время ожидания между попытками (в секундах) по умолчанию.## Sources
### Official Python libraries documentation:
* PubChemPy documentation. — Текст : электронный // Read the Docs : [сайт](https://pubchempy.readthedocs.io/en/latest)
* Requests: HTTP for Humans™. — Текст : электронный // Read the Docs : [сайт](https://requests.readthedocs.io/en/latest)
* Loguru. Python loggig made (stupidly) simple. — Текст : электронный // Read the Docs : [сайт](https://loguru.readthedocs.io/en/stable)
### ChEMBL sources:
* A python client for accessing ChEMBL web services / Michal. — Текст : электронный // The ChEMBL-og : [сайт](https://chembl.blogspot.com/2014/05/a-python-client-for-accessing-chembl.html)
* Explore Chemistry. Quickly find chemical information from authoritative sources. — Текст : электронный // PubChem: An official website of the United States government : [сайт](https://pubchem.ncbi.nlm.nih.gov)
* ChEMBL is a manually curated database of bioactive molecules with drug-like properties. It brings together chemical, bioactivity and genomic data to aid the translation of genomic information into effective new drugs. — Текст : электронный // ChEMBL : [сайт](https://www.ebi.ac.uk/chembl)
### PubChem sources:
* Welcome to the IUPAC FAIR Chemistry Cookbook / International Union of Pure and Applied Chemistry. — Текст : электронный // GitHub Pages : [сайт](https://iupac.github.io/WFChemCookbook/intro.html)
* PubChem_SDQ_Bibliometrics / Винсент Ф. Скальфани, Серена С. Ральф, Али Аль Альшейх, Джейсон Э. Бара. — Текст : электронный // GitHub Pages : [сайт](https://vfscalfani.github.io/MATLAB-cheminformatics/live_scripts_html/PubChem_SDQ_Bibliometrics.html)
* PubChem_SDQ_LitSearch / Винсент Ф. Скальфани, Серена С. Ральф, Али Аль Альшейх, Джейсон Э. Бара. — Текст : электронный // GitHub Pages : [сайт](https://vfscalfani.github.io/MATLAB-cheminformatics/live_scripts_html/PubChem_SDQ_LitSearch.html)
### Notebooks submodules (used, but removed from repo):
* IUPAC WFChemCookbook repository / International Union of Pure and Applied Chemistry. — Текст : электронный // GitHub : [сайт](https://github.com/IUPAC/WFChemCookbook)
* FionaEBI ChEMBL notebooks repository / FionaEBI. — Текст : электронный // GitHub : [сайт](https://github.com/chembl/notebooks)