{"id":23315196,"url":"https://github.com/umbrellaleaf5/drugdesign_data_analysis","last_synced_at":"2025-08-15T14:13:33.095Z","repository":{"id":268154346,"uuid":"903479312","full_name":"UmbrellaLeaf5/DrugDesign_data_analysis","owner":"UmbrellaLeaf5","description":"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","archived":false,"fork":false,"pushed_at":"2025-06-21T22:53:16.000Z","size":604,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-21T23:27:35.792Z","etag":null,"topics":["chembl","chemistry","dafe","data-analysis","doxygen-documentation","mipt","pubchem","python","requests"],"latest_commit_sha":null,"homepage":"https://umbrellaleaf5.github.io/DrugDesign_data_analysis/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/UmbrellaLeaf5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-14T17:51:04.000Z","updated_at":"2025-06-21T22:53:20.000Z","dependencies_parsed_at":"2024-12-14T19:17:57.356Z","dependency_job_id":"93a9b0e5-3832-4f8d-9d91-87cbe5701382","html_url":"https://github.com/UmbrellaLeaf5/DrugDesign_data_analysis","commit_stats":null,"previous_names":["umbrellaleaf5/drugdesign_data_analysis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/UmbrellaLeaf5/DrugDesign_data_analysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2FDrugDesign_data_analysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2FDrugDesign_data_analysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2FDrugDesign_data_analysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2FDrugDesign_data_analysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/UmbrellaLeaf5","download_url":"https://codeload.github.com/UmbrellaLeaf5/DrugDesign_data_analysis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/UmbrellaLeaf5%2FDrugDesign_data_analysis/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265846868,"owners_count":23838159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chembl","chemistry","dafe","data-analysis","doxygen-documentation","mipt","pubchem","python","requests"],"created_at":"2024-12-20T15:32:44.081Z","updated_at":"2025-07-18T22:33:57.262Z","avatar_url":"https://github.com/UmbrellaLeaf5.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DrugDesign Data Analysis\n\n[![License: Unlicense](https://img.shields.io/badge/license-Unlicense-green.svg)](http://unlicense.org/)\n[![Contributing](https://img.shields.io/badge/contributing-.md-blue.svg)](./CONTRIBUTING.md)\n\ntemplated: generated from [UmbrellaLeaf5/template_python_usual](https://github.com/UmbrellaLeaf5/template_python_usual)\n\n___\n\n## Contents\n  * [Description](#description)\n  * [Documentation](#documentation)\n  * [Installation](#installation)\n  * [Configurations](#configurations)\n  * [Sources](#sources)\n\n## Description\n\nЭтот модуль отвечает за загрузку и предварительную обработку данных из [ChEMBL](#sources) и [PubChem](#sources), необходимых для дальнейшего моделирования и анализа при разработке лекарств.\n\nЦель модуля:\n* Автоматическое скачивание данных о соединениях, активностях и мишенях\n  из базы данных ChEMBL, а также данных о токсичности соединений из PubChem ChemIDplus.\n* Преобразование данных в формат, пригодный для обучения моделей машинного\n  обучения.\n* Фильтрация и очистка данных для повышения качества моделей.\n\n## Documentation\n\n[Документация](https://umbrellaleaf5.github.io/DrugDesign_data_analysis), созданная с помощью [Doxygen](https://www.doxygen.nl).\n\n## Installation\n\n0.  **Клонирование репозитория:**\n\n    Перед тем как начать, вам необходимо клонировать репозиторий с исходным кодом проекта.\n \n    ```bash\n    git clone https://gitlab.com/UmbrellaLeaf5/drugdesign_parsing.git\n    ```\n\n    Перейдите в директорию, куда был клонирован репозиторий:\n\n    ```bash\n    cd DrugDesign_data_analysis\n    ``` \n\n\n1.  **Создание виртуального окружения:**\n\n    Откройте терминал или командную строку в корневой директории вашего проекта (там, где находится файл `requirements.txt`) и выполните следующую команду для создания виртуального окружения с именем `.venv`:\n\n    ```bash\n    python3 -m venv .venv\n    ```\n\n    или\n\n    ```bash\n    python -m venv .venv\n    ```\n\n    *   Если у вас установлена только версия `Python 3`, можете использовать `python` вместо `python3`.\n    *   Если виртуальное окружение уже существует (вы его создавали ранее), пропустите этот шаг.\n\n\n2.  **Активация виртуального окружения:**\n\n    Активируйте виртуальное окружение, чтобы `Python` использовал библиотеки, установленные внутри него:\n\n    *   **Linux/macOS:**\n\n        ```bash\n        source .venv/bin/activate\n        ```\n\n    *   **Windows (Command Prompt):**\n\n        ```cmd\n        .venv\\Scripts\\activate\n        ```\n\n    *   **Windows (PowerShell):**\n\n        ```powershell\n        .venv\\Scripts\\Activate.ps1\n        ```\n\n    После активации вы увидите `(.venv)` в начале строки терминала, указывающее на то, что виртуальное окружение активно.\n\n\n3.  **Установка зависимостей из `requirements.txt`:**\n\n    Установите все библиотеки, перечисленные в файле `requirements.txt`, выполнив следующую команду:\n\n    ```bash\n    ./.venv/Scripts/pip install -r requirements.txt\n    ```\n\n    или просто:\n\n    ```bash\n    pip install -r requirements.txt\n    ```\n**Или просто используйте [`uv`](https://github.com/astral-sh/uv):**\n\n```bash\nuv venv .venv\n```\n\n*   **Linux/macOS:**\n\n    ```bash\n    source .venv/bin/activate\n    ```\n\n*   **Windows (Git Bash):**\n\n    ```bash\n    source .venv/Scripts/activate\n    ```\n\n*   **Windows (Command Prompt):**\n\n    ```cmd\n    .venv\\Scripts\\activate\n    ```\n\n*   **Windows (PowerShell):**\n\n    ```powershell\n    .venv\\Scripts\\Activate.ps1\n    ```\n\n```bash\nuv pip install -r requirements.txt\n```\n\nP.S. одной строкой:\n```bash\nuv venv .venv \u0026\u0026 source .venv/Scripts/activate \u0026\u0026 uv pip install -r requirements.txt\n```\n\n## Configurations\n\nФайл [`config.json`](./Configurations/config.json) содержит параметры конфигурации для загрузки и обработки данных, в основном сфокусированного на базах данных `ChEMBL` и `PubChem`. Он определяет настройки для загрузки соединений, активностей, клеточных линий и информации о мишенях из `ChEMBL`, а также данных о токсичности из `PubChem`.\n\n### Общие настройки\n\n*   `testing_flag`: *boolean* - логический флаг, который, когда установлен в `true`, включает режим тестирования (ограничивает количество загружаемых данных для ускорения тестирования). При рабочей эксплуатации должен быть установлен в `false`.\n*   `skip_downloaded`: *boolean* - логический флаг, указывающий, следует ли пропускать загрузку, если файлы уже существуют (полезно для повторного запуска скрипта без перезагрузки данных).\n*   `csv_separator`: *string* - строка, определяющая разделитель полей в CSV-файлах (например, \",\" или \";\").\n*   `keyboard_end_message`: *string* - сообщение, которое выводится при завершении загрузки по нажатию клавиш (`Ctrl+C`/`Ctrl+Z`).\n\n### ChEMBL\n\n#### ChEMBL_download_activities\n\nПодзадача загрузки активностей с ChEMBL для различных мишеней и клеточных линий, которая выполняется при включении определенных флагов в других задачах.\n\n*   `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей (для идентификации в логах).\n*   `logger_color`: *string* - цветовой код для вывода журнала.\n*   `results_folder_name`: *string* - имя папки для хранения загруженных данных об активности.\n*   `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли догружать соединения в формате SDF.\n*   `filtering`: *dictionary* - словарь, содержащий параметры фильтрации данных об активностях.\n    *   `targets`: *dictionary* - фильтрация для активностей мишеней.\n        *   `standard_relation`: *list[string]* - список соотношений (например, `=`).\n        *   `standard_units`: *list[string]* - список единиц измерения.\n        *   `target_organism`: *list[string]* - список типов организмов.\n        *   `standard_type`: *list[string]* - список типов измерений.\n        *   `assay_type`: *list[string]* - список типов биологических тестов.\n    *   `cell_lines`: *dictionary* - фильтрация для активностей клеточных линий.\n        *   `standard_relation`: *list[string]* - список соотношений (например, `=`).\n        *   `standard_units`: *list[string]* - список единиц измерения.\n        *   `assay_organism`: *list[string]* - список типов организмов.\n        *   `standard_type`: *list[string]* - список типов измерений.\n        *   `assay_type`: *list[string]* - список типов биологических тестов.\n\n#### ChEMBL_download_cell_lines\n\nЗадача по загрузке клеточных линий с ChEMBL.\n\n*   `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.\n*   `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.\n*   `logger_color`: *string* - цветовой код для вывода журнала.\n*   `results_folder_name`: *string* - имя папки для хранения загруженных данных о клеточных линиях.\n*   `results_file_name`: *string* - имя файла для сохранения данных о клеточных линиях.\n*   `download_activities`: *boolean* - логический флаг, указывающий, следует ли загружать данные об активности для клеточных линий.\n*   `raw_csv_folder_name`: *string* - имя папки для хранения необработанных данных в формате .csv.\n*   `raw_csv_g_drive_id`: *string* - идентификатор Google.Drive архива, в котором лежат неочищенные файлы с необходимыми активностями (необходим, так как активности к клеточным линиям через интерфейс `chembl_webresource_client` или API ChEMBL - не вышло).\n*   `download_all`: *boolean* - логический флаг, указывающий, следует ли загружать данные для всех клеточных линий или только для клеточных линий, указанных в `id_list`.\n*   `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли загружать соединения в формате .sdf.\n*   `id_list`: *list[string]* - список ChEMBL_ID для конкретных клеточных линий, для которых необходимо загрузить данные.\n\n#### ChEMBL_download_compounds\n\nЗадача по загрузке соединений с ChEMBL.\n\n*   `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.\n*   `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.\n*   `logger_color`: *string* - цветовой код для вывода журнала.\n*   `results_folder_name`: *string* - имя папки для хранения загруженных данных о соединениях.\n*   `molfiles_folder_name`: *string* - имя папки для хранения mol- и sdf-файлов соединений.\n*   `combined_file_name`: *string* - имя файла для сохранения объединенных данных о соединениях.\n*   `need_combining`: *boolean* - логический флаг, указывающий, нужно ли объединять соединения в один файл.\n*   `delete_after_combining`: *boolean* - логический флаг, указывающий, следует ли удалять оставшиеся данные после объединения.\n*   `mw_ranges`: *list[lists[float]]* - список диапазонов молекулярной массы, используемых для фильтрации загрузки соединений.\n\n#### ChEMBL_download_targets\n\nЗадача по загрузке мишеней с ChEMBL.\n\n*   `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.\n*   `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.\n*   `logger_color`: *string* - цветовой код для вывода журнала.\n*   `results_folder_name`: *string* - имя папки для хранения загруженных данных о мишенях.\n*   `results_file_name`: *string* - имя файла для сохранения данных о мишенях.\n*   `download_activities`: *boolean* - логический флаг, указывающий, следует ли загружать данные об активностях для мишеней.\n*   `download_all`: *boolean* - логический флаг, указывающий, следует ли загружать данные для всех мишеней или только для мишеней, указанных в `id_list`.\n*   `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли загружать соединения в формате SDF.\n*   `id_list`: *list[string]* - список ChEMBL_ID для конкретных мишеней, для которых необходимо загрузить данные.\n\n### PubChem\n\n#### PubChem_download_toxicity\n\nЗадача по загрузке токсичности соединений линий с PubChem (ChemIDPlus).\n\n*   `download`: *boolean* - логический флаг, указывающий, следует выполнять эту задачу в текущем запуске программы.\n*   `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.\n*   `logger_color`: *string* - цветовой код для вывода журнала.\n*   `results_folder_name`: *string* - имя папки для хранения загруженных данных о токсичности.\n*   `molfiles_folder_name`: *string* - имя папки для хранения mol- и sdf-файлов соединений.\n*   `results_file_name`: *string* - имя файла для сохранения данных о токсичности.\n*   `combined_file_name`: *string* - имя файла для сохранения объединенных данных о токсичности.\n*   `need_combining`: *boolean* - логический флаг, указывающий, нужно ли объединять данные.\n*   `delete_after_combining`: *boolean* - логический флаг, указывающий, следует ли удалять оставшиеся данные после объединения.\n*   `download_compounds_sdf`: *boolean* - логический флаг, указывающий, следует ли загружать соединения в формате SDF.\n*   `filtering`: *dictionary* - словарь, содержащий параметры фильтрации данных о токсичности.\n    *   `kg`: *dictionary* - фильтрация для дозы, указанной в `mg/kg`.\n        *   `organism`: *list[string]* - список организмов для фильтрации.\n        *   `route`: *list[string]* - список способов введения для фильтрации.\n        *   `testtype`: *list[string]* - список типов тестирования для фильтрации.\n    *   `m3`: *dictionary* - фильтрация для дозы, указанной в `mg/m3`.\n        *   `organism`: *list[string]* - список организмов для фильтрации.\n        *   `route`: *list[string]* - список способов введения для фильтрации.\n        *   `testtype`: *list[string]* - список типов тестирования для фильтрации.\n    *   `need_filtering_by_characteristics`: *boolean* - логический флаг, указывающий, следует сохранять отфильтрованные по количеству вхождений характеристик выборки токсичности.\n    *   `occurrence_characteristics_number`: *integer* - минимальное количество вхождений характеристик в соотв. выборки.\n    *   `characteristics_subfolder_name`: *string* - имя подпапки для хранения отфильтрованных по количеству вхождений характеристик выборок токсичности.\n*   `sleep_time`: *float* - число с плавающей точкой, представляющее время ожидания между запросами (в секундах, для предотвращения блокировки со стороны PubChem).\n*   `start_page`: *integer* - число, представляющее начальную страницу данных о токсичности.\n*   `end_page`: *integer* - число, представляющее последнюю страницу данных о токсичности.\n*   `limit`: *integer* - число, представляющее лимит для кол-ва данных за 1 запрос.\n\n### Utils\n\n#### CombineCSVInFolder\n\n*   `logger_label`: *string* - метка, используемая для сообщений журнала, связанных с этой задачей.\n*   `logger_color`: *string* - цветовой код для вывода журнала.\n\n#### VerboseLogger\n\n*   `verbose_print`: *boolean* - логический флаг, указывающий, включен ли подробный вывод в консоль.\n*   `message_ljust`: *integer* - ширина левого выравнивания для сообщений лога.\n*   `exceptions_file`: *string* - имя файла для записи исключений.\n*   `output_to_exceptions_file`: *boolean* - логический флаг, указывающий, следует ли выводить весь вывод только в файл для записи исключений.\n\n#### ReTry\n\n*   `attempts_amount`: *integer* - количество попыток по умолчанию.\n*   `sleep_time`: *float* - время ожидания между попытками (в секундах) по умолчанию.\n\n## Sources\n\n### Official Python libraries documentation:\n\n  * PubChemPy documentation. — Текст : электронный // Read the Docs : [сайт](https://pubchempy.readthedocs.io/en/latest)\n  * Requests: HTTP for Humans™. — Текст : электронный // Read the Docs : [сайт](https://requests.readthedocs.io/en/latest)\n  * Loguru. Python loggig made (stupidly) simple. — Текст : электронный // Read the Docs : [сайт](https://loguru.readthedocs.io/en/stable)\n\n\u003chr\u003e\u003c/hr\u003e\n\n### ChEMBL sources:\n\n  * 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)\n  * Explore Chemistry. Quickly find chemical information from authoritative sources. — Текст : электронный // PubChem: An official website of the United States government : [сайт](https://pubchem.ncbi.nlm.nih.gov)\n  * 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)\n\n\u003chr\u003e\u003c/hr\u003e\n\n### PubChem sources:\n\n  * Welcome to the IUPAC FAIR Chemistry Cookbook / International Union of Pure and Applied Chemistry. — Текст : электронный // GitHub Pages : [сайт](https://iupac.github.io/WFChemCookbook/intro.html)\n  * PubChem_SDQ_Bibliometrics / Винсент Ф. Скальфани, Серена С. Ральф, Али Аль Альшейх, Джейсон Э. Бара. — Текст : электронный // GitHub Pages : [сайт](https://vfscalfani.github.io/MATLAB-cheminformatics/live_scripts_html/PubChem_SDQ_Bibliometrics.html)\n  * PubChem_SDQ_LitSearch / Винсент Ф. Скальфани, Серена С. Ральф, Али Аль Альшейх, Джейсон Э. Бара. — Текст : электронный // GitHub Pages : [сайт](https://vfscalfani.github.io/MATLAB-cheminformatics/live_scripts_html/PubChem_SDQ_LitSearch.html)\n\n\u003chr\u003e\u003c/hr\u003e\n\n### Notebooks submodules (used, but removed from repo):\n\n  * IUPAC WFChemCookbook repository / International Union of Pure and Applied Chemistry. — Текст : электронный // GitHub : [сайт](https://github.com/IUPAC/WFChemCookbook)\n  * FionaEBI ChEMBL notebooks repository / FionaEBI. — Текст : электронный // GitHub : [сайт](https://github.com/chembl/notebooks)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumbrellaleaf5%2Fdrugdesign_data_analysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumbrellaleaf5%2Fdrugdesign_data_analysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumbrellaleaf5%2Fdrugdesign_data_analysis/lists"}