网络药理学:3、网药全流程:筛选疾病靶点之GeneCards、OMIM、TTD数据库使用教程

1.前言

从本篇博客之后的几篇博客,都是走一遍 单药 对 单疾病 的网药流程+分子对接+分子动力学模拟。

药物是吴茱萸,疾病是食管癌(英文名:esophageal cancer)。

1.1.本文涉及网站地址

  • GeneCards网站首页:https://www.genecards.org/
  • OMIM网站首页:https://www.omim.org/(建议直接去到OMIM geneMap页面)
  • OMIM geneMap页面:https://www.omim.org/search/advanced/geneMap

1.2.本文复现的步骤

本文复现的步骤是【筛选疾病靶点】

2.GeneCards数据库筛选疾病作用靶点

2.1.网站首页和搜索

进入GeneCards网站首页后,搜索食管癌英文"esophageal cancer",随后点击搜索。

在这里插入图片描述

2.2.搜索结果下载

点击Export后点击Export to Excel(这个的下载会有点慢,可以先做下一步DisGeNET
在这里插入图片描述

2.3.搜索结果处理

Genecards下载的文件名也默认都是GeneCards-SearchResults.csv,下载文件如下:
在这里插入图片描述


然后我们需要选中表头,然后点击“筛选”下的“筛选”。
在这里插入图片描述

之后就可以看到表头的每一个都出现了筛选图标。
在这里插入图片描述
随后我们需要将表格列宽调整到合适的列宽。
对于office选手,选中表头后,按住Alt键,然后依次按下H(表示“主页”选项卡)、O(表示“格式”菜单)、I(表示“自动调整列宽”)。
对于wps选手,我就不知道hhh,欢迎评论区留言。

因为GeneCards会对数据打分,根据相关性评分(Relevance score)筛选,规则可以是如下:

  • ≥ 1.0
  • ≥中位数
  • >1.0
  • >中位数(个人阅读文献下来,感觉这个最常用)
  • 或者直接不筛

在这我们以≥1做示范,点击Relevance score的筛选图标后选择“数字筛选”。而后出现如下面板,筛选后表格的最下方显示我们从2743条中筛选出了1232条,之后将这些数据复制到新的excel文件中。
在这里插入图片描述
在这里插入图片描述

2.4.引用相关

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
NLM格式的如下:

Stelzer G, Rosen N, Plaschkes I, Zimmerman S, Twik M, Fishilevich S, Stein TI, Nudel R, Lieder I, Mazor Y, Kaplan S, Dahary D, Warshawsky D, Guan-Golan Y, Kohn A, Rappaport N, Safran M, Lancet D. The GeneCards Suite: From Gene Data Mining to Disease Genome Sequence Analyses. Curr Protoc Bioinformatics. 2016 Jun 20;54:1.30.1-1.30.33. doi: 10.1002/cpbi.5. PMID: 27322403.

发表时间:2016年 被引次数:3853

2.5.搜索和打分规则

请注意,OMIM的检索关键词区分大小写。如果加上英文的双引号,则是精准匹配。
支持ANDOR检索。

对于打分规则,OMIM的原理主要是基于大数据搜索(才知道它用的是Elasticsearch 7.11hhh)并推断其权重。

3.OMIM数据库筛选疾病作用靶点

3.1.网站首页和搜索

直接来到OMIM geneMap页面,搜索食管癌英文esophageal cancer,随后点击搜索。

在这里插入图片描述

或者你可以通过首页来到gene Map页面
在这里插入图片描述

3.2.下载搜索结果

如下下载搜索结果
在这里插入图片描述

3.3.搜索结果处理

OMIM下载的数据的文件名称都是OMIM-Entry-Retrieval.xlsx
我们点开来看,如下,我们只需要关注或者说,提取Gene/Locus这一列即可。

excel相关快捷键:按住键盘的SHIFT + CTRL不放开,然后按下下箭头即可选中当前列的所有数据,再按ctrl + C复制。

最终数据的格式是:将逗号和前后空格都删除,并去重,一个基因名就占一行。

在这里插入图片描述
你可以选择如下两种方法之一:

3.3.1.excel处理

在这里插入图片描述
选中所有数据后,选择【分列】。然后选中【分隔符号】【逗号+空格】【常规】【完成】,可以看到数据变成类似如下格式:
在这里插入图片描述

分别选中每列数据,选择【删除重复值】,在这里我们是为了删除空格。
在这里插入图片描述
当一列数据的右边存在数据时,可能冒出弹窗如下:
在这里插入图片描述
选择【以当前选定区域排序】即可。

然后将所有列全部移到一列下,则得到我们想要的格式的表格文件了。

注意最后还是要遍历一遍整个表格,有什么小问题手动操作一下。

3.3.2.代码处理

我写了一个python脚本,只需要在主函数里面修改你的输入文件名和你想要的输出文件名即可。代码如下:

# @Time    : 2025/1/16
# @Author  : shanshan
# @CSDN    : https://blog.csdn.net/zhiaidaidai
# Copyright (c) 2024, shanshan Group All Rights Reserved.

import pandas as pd

def get_gene_from_OMIM(OMIM_file_name, output_name):
    df = pd.read_excel(OMIM_file_name, skiprows=4)  # 跳过前4行非数据行
    gene_locus_column = df['Gene/Locus'].dropna()
    cleaned_genes = []
    for item in gene_locus_column:
        # 检查是否为字符串类型
        if isinstance(item, str):
            # 去除双引号并去除两端空格
            item = item.replace('"', '').strip()
            # 分割基因名并去除每个基因名两端的空格
            genes = [gene.strip() for gene in item.split(',')]
            cleaned_genes.extend(genes)
    gene_df = pd.DataFrame(cleaned_genes, columns=['Gene/Locus'])
    print("omim_df 's row is: ", len(gene_df))
    gene_df.to_csv(output_name, index=False)
    return gene_df


if __name__ == '__main__':
    get_gene_from_OMIM(OMIM_file_name='OMIM-Gene-Map-Retrieval.xlsx', output_name='OMIM.csv')

3.4.引用相关

点击顶部导航栏的help找到如下信息:
在这里插入图片描述
以下是GB/T 7714格式的引用

Hamosh A, Scott A F, Amberger J S, et al. Online Mendelian Inheritance in Man (OMIM), a knowledgebase of human genes and genetic disorders[J]. Nucleic acids research, 2005, 33(suppl_1): D514-D517.

发表时间:2005-01-01 被引次数:3387

4.TTD数据库筛选疾病作用靶点

4.1.全流程

网站首页如下:
在这里插入图片描述
Search for Targets中输入疾病名称后点击搜索。
这个数据库数据量较少,搜出来一般只有几条到几十条,如下:
在这里插入图片描述
而且需要自己复制靶点基因名,即方框中的内容。
当然,你觉得麻烦的话可以看本人的4.2.自动爬虫,运行后可以自动打开网站,输入疾病名称且搜索,将所有基因名输出表格文件。

4.2.自动爬虫

# @Time    : 2025/1/16
# @Author  : shanshan
# @CSDN    : https://blog.csdn.net/zhiaidaidai
# Copyright (c) 2024, shanshan Group All Rights Reserved.
import csv

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.edge.service import Service
from bs4 import BeautifulSoup
import time
import re

# ------------------------修改输入------------------------------
disease_name = "Esophageal cancer"  # 替换为你要搜索的疾病名称
edge_driver_path = 'msedgedriver.exe'  # 替换为你的 Edge 驱动路径
output_filename = 'TTD.csv' # 替换为你想要的输出文件名
# ------------------------修改输入完毕--------------------------

service = Service(edge_driver_path)
driver = webdriver.Edge(service=service)

# 打开目标网站首页
base_url = "https://db.idrblab.net/ttd/"
driver.get(base_url)

# 搜索
search_box = driver.find_element(By.NAME, "search_api_fulltext")
search_box.send_keys(disease_name)
search_box.send_keys(Keys.RETURN)
time.sleep(2)

# 获取页面 HTML
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
genes = []

# 提取所有带有特定class的表格
gene_tables = soup.find_all('table', {'class': 'ttd-table table table-bordered ttd-result-item'})

if not gene_tables:
    print("未找到表格内容,请检查页面结构或搜索条件。")
else:
    for gene_table in gene_tables:
        for row in gene_table.find_all('tr'):  # 跳过表头
            cols = row.find_all('td')
            if cols:
                gene_name_full = cols[0].get_text(strip=True)  # 假设基因名在第一列

                # 使用正则表达式提取括号内的基因名
                match = re.search(r'\(([^)]+)\)', gene_name_full)
                if match:
                    gene_name = match.group(1)
                    genes.append(gene_name)

# 翻页提取基因名
page_number = 0
while True:
    try:
        next_page_link = driver.find_element(By.CSS_SELECTOR, 'ul.pager__items li.pager__item--next a')
        if next_page_link and next_page_link.get_attribute('href'):
            next_page_link.click()
            time.sleep(2)

            html = driver.page_source
            soup = BeautifulSoup(html, 'html.parser')
            gene_tables = soup.find_all('table', {'class': 'ttd-table table table-bordered ttd-result-item'})

            for gene_table in gene_tables:
                for row in gene_table.find_all('tr'):  # 跳过表头
                    cols = row.find_all('td')
                    if cols:
                        gene_name_full = cols[0].get_text(strip=True)  # 假设基因名在第一列

                        # 使用正则表达式提取括号内的基因名
                        match = re.search(r'\(([^)]+)\)', gene_name_full)
                        if match:
                            gene_name = match.group(1)
                            genes.append(gene_name)
        else:
            break
    except Exception as e:
        print(f"Error occurred: {e}")
        break


driver.quit()


# 打印所有页的基因名
print("所有页基因名列表:")
for gene in genes:
    print(gene)

# 输出为CSV文件
with open(output_filename, 'w', newline='') as csvfile:
    csvwriter = csv.writer(csvfile)
    csvwriter.writerow(['Gene Name'])  # 写入标题
    for gene in genes:
        csvwriter.writerow([gene])

4.3.引用

TTD首页或者搜索页面的最下方都存在
在这里插入图片描述
发表时间:2024年 被引次数:166

国内外在基于深度学习的蛋白质语言模型在蛋白质相互作用及药物靶点筛选的研究方面已经取得了一些重要的进展。 在蛋白质相互作用预测方面,一些研究采用了卷积神经网络(Convolutional Neural Networks,CNN)和循环神经网络(Recurrent Neural Networks,RNN)等深度学习模型来预测蛋白质之间的相互作用。这些模型通过对蛋白质序列和结构进行编码,可以捕捉到蛋白质之间的关联性和相互作用特征。例如,一些研究利用深度学习模型预测蛋白质复合物的组成和结构。 在药物靶点筛选方面,深度学习模型也被广泛应用。研究人员利用深度学习模型对药物化合物和蛋白质序列进行特征提取,然后通过模型预测药物与蛋白质之间的结合情况。这可以帮助研发人员在药物筛选过程中快速识别潜在的药物靶点,并加速药物研发的过程。 此外,还有一些研究将深度学习与其他方法相结合,如图神经网络(Graph Neural Networks,GNN)和迁移学习等,进一步提高了蛋白质相互作用和药物靶点筛选的准确性和效率。 在国内,一些大型科研机构和高校开展了相关研究,取得了一些重要成果。国外的研究机构和公司也在这个领域进行了大量的研究工作,推动了蛋白质相互作用和药物靶点筛选领域的发展。 尽管已经取得了一些进展,但蛋白质相互作用和药物靶点筛选是一个复杂而具有挑战性的问题,仍然需要进一步的研究和探索。未来,随着深度学习和相关技术的不断发展,我们可以期待更多创新的模型和方法的出现,为蛋白质相互作用及药物靶点筛选提供更精确和高效的解决方案。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shanshandeisu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值