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
的检索关键词区分大小写。如果加上英文的双引号,则是精准匹配。
支持AND
和OR
检索。
对于打分规则,OMIM
的原理主要是基于大数据搜索(才知道它用的是Elasticsearch 7.11
hhh)并推断其权重。
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