-
Notifications
You must be signed in to change notification settings - Fork 0
Биология
Обычно исполнители прикрепляю ноутбук к комментарию в задаче. Сейчас мы переносим ноутбуки в отдельный репозиторий: https://github.com/open-genes/open-genes-notebooks
Называйте ноутбуки в таком формате: номер задачи + короткое описание.
Не забывайте описывать то, что вы делаете в каждом блоке.
Если ноутбук создавался локально и у вас есть зависимости в проекте, не забывайте добавлять перед импортами команды для установки соответствующих пакетов.
!pip install имя_пакета
Чтобы быстро и просто генерировать датасеты, не обязательно скачивать много TSV файлов с сайта или делать запросы в API, а потом обрабатывать ответ. Вы можете скачать всю базу данных и работать с ней:
Самый простой способ работать с БД, ничего не настраивая — установить клиент c визуальным интерфейсом. Например TablePlus.
Подключитесь к БД из скаченного с сайта дампа. Теперь вы можете просматривать содержимое БД в виде таблиц и делать запросы через консоль. А самое главное, вы сможете экспортировать результат в CSV датасет.
Интерфейс TablePlus
Так как все сущности, относящиеся к генам, связаны с генами по реляции через таблицы, вам понадобится использовать оператор JOIN.
Если вы не умеете писать SQL запросы, этот урок в W3 Schools просто и наглядно объясняет как использовать JOIN.
При помощи простого SQL запроса мы сгенерируем датасет из id и HGNC гена и уровня достоверности:
SELECT
gene.id,
gene.symbol,
confidence_level.name_en
FROM
gene_to_confidence_level
INNER JOIN confidence_level ON gene_to_confidence_level.confidence_level_id=confidence_level.id
INNER JOIN gene ON gene_to_confidence_level.gene_id=gene.id;
SELECT
gene.id,
gene.symbol,
gene.orthologs,
model_organism.name_en
FROM
gene_to_ortholog
INNER JOIN gene ON gene_to_ortholog.gene_id = gene.id
INNER JOIN ortholog ON gene_to_ortholog.ortholog_id = ortholog.id
INNER JOIN model_organism ON ortholog.model_organism_id = model_organism.id;
SELECT
gene.id,
gene.symbol,
comment_cause.name_en
FROM
gene_to_comment_cause
INNER JOIN comment_cause ON gene_to_comment_cause.comment_cause_id = comment_cause.id
INNER JOIN gene ON gene_to_comment_cause.gene_id = gene.id;
SELECT DISTINCT
gene.id,
gene.symbol,
aging_mechanism.name_en
FROM
gene
LEFT JOIN gene_to_ontology ON gene.id = gene_to_ontology.gene_id
LEFT JOIN gene_ontology_to_aging_mechanism_visible ON gene_to_ontology.gene_ontology_id = gene_ontology_to_aging_mechanism_visible.gene_ontology_id
INNER JOIN aging_mechanism ON gene_ontology_to_aging_mechanism_visible.aging_mechanism_id = aging_mechanism.id
AND aging_mechanism.name_en != ''