ToB企服应用市场:ToB评测及商务社交产业平台

标题: 网络药理学:3、网药全流程:筛选疾病靶点之GeneCards、OMIM、TTD数据库使 [打印本页]

作者: 瑞星    时间: 2025-1-24 22:22
标题: 网络药理学:3、网药全流程:筛选疾病靶点之GeneCards、OMIM、TTD数据库使
1.前言

从本篇博客之后的几篇博客,都是走一遍 单药 对 单疾病 的网药流程+分子对接+分子动力学模仿。
药物是吴茱萸,疾病是食管癌(英文名:esophageal cancer)。
1.1.本文涉及网站地址


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做示范,点击Relevance score的筛选图标后选择“数字筛选”。而后出现如下面板,筛选后表格的最下方显示我们从2743条中筛选出了1232条,之后将这些数据复制到新的excel文件中。


2.4.引用干系




NLM格式的如下:
  1. 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.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脚本,只必要在主函数里面修改你的输入文件名和你想要的输出文件名即可。代码如下:
  1. # @Time    : 2025/1/16
  2. # @Author  : shanshan
  3. # @CSDN    : https://blog.csdn.net/zhiaidaidai
  4. # Copyright (c) 2024, shanshan Group All Rights Reserved.
  5. import pandas as pd
  6. def get_gene_from_OMIM(OMIM_file_name, output_name):
  7.     df = pd.read_excel(OMIM_file_name, skiprows=4)  # 跳过前4行非数据行
  8.     gene_locus_column = df['Gene/Locus'].dropna()
  9.     cleaned_genes = []
  10.     for item in gene_locus_column:
  11.         # 检查是否为字符串类型
  12.         if isinstance(item, str):
  13.             # 去除双引号并去除两端空格
  14.             item = item.replace('"', '').strip()
  15.             # 分割基因名并去除每个基因名两端的空格
  16.             genes = [gene.strip() for gene in item.split(',')]
  17.             cleaned_genes.extend(genes)
  18.     gene_df = pd.DataFrame(cleaned_genes, columns=['Gene/Locus'])
  19.     print("omim_df 's row is: ", len(gene_df))
  20.     gene_df.to_csv(output_name, index=False)
  21.     return gene_df
  22. if __name__ == '__main__':
  23.     get_gene_from_OMIM(OMIM_file_name='OMIM-Gene-Map-Retrieval.xlsx', output_name='OMIM.csv')
复制代码
3.4.引用干系

点击顶部导航栏的help找到如下信息:

以下是GB/T 7714格式的引用
  1. 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.主动爬虫

  1. # @Time    : 2025/1/16
  2. # @Author  : shanshan
  3. # @CSDN    : https://blog.csdn.net/zhiaidaidai
  4. # Copyright (c) 2024, shanshan Group All Rights Reserved.
  5. import csv
  6. from selenium import webdriver
  7. from selenium.webdriver.common.by import By
  8. from selenium.webdriver.common.keys import Keys
  9. from selenium.webdriver.edge.service import Service
  10. from bs4 import BeautifulSoup
  11. import time
  12. import re
  13. # ------------------------修改输入------------------------------
  14. disease_name = "Esophageal cancer"  # 替换为你要搜索的疾病名称
  15. edge_driver_path = 'msedgedriver.exe'  # 替换为你的 Edge 驱动路径
  16. output_filename = 'TTD.csv' # 替换为你想要的输出文件名
  17. # ------------------------修改输入完毕--------------------------
  18. service = Service(edge_driver_path)
  19. driver = webdriver.Edge(service=service)
  20. # 打开目标网站首页
  21. base_url = "https://db.idrblab.net/ttd/"
  22. driver.get(base_url)
  23. # 搜索
  24. search_box = driver.find_element(By.NAME, "search_api_fulltext")
  25. search_box.send_keys(disease_name)
  26. search_box.send_keys(Keys.RETURN)
  27. time.sleep(2)
  28. # 获取页面 HTML
  29. html = driver.page_source
  30. soup = BeautifulSoup(html, 'html.parser')
  31. genes = []
  32. # 提取所有带有特定class的表格
  33. gene_tables = soup.find_all('table', {'class': 'ttd-table table table-bordered ttd-result-item'})
  34. if not gene_tables:
  35.     print("未找到表格内容,请检查页面结构或搜索条件。")
  36. else:
  37.     for gene_table in gene_tables:
  38.         for row in gene_table.find_all('tr'):  # 跳过表头
  39.             cols = row.find_all('td')
  40.             if cols:
  41.                 gene_name_full = cols[0].get_text(strip=True)  # 假设基因名在第一列
  42.                 # 使用正则表达式提取括号内的基因名
  43.                 match = re.search(r'\(([^)]+)\)', gene_name_full)
  44.                 if match:
  45.                     gene_name = match.group(1)
  46.                     genes.append(gene_name)
  47. # 翻页提取基因名
  48. page_number = 0
  49. while True:
  50.     try:
  51.         next_page_link = driver.find_element(By.CSS_SELECTOR, 'ul.pager__items li.pager__item--next a')
  52.         if next_page_link and next_page_link.get_attribute('href'):
  53.             next_page_link.click()
  54.             time.sleep(2)
  55.             html = driver.page_source
  56.             soup = BeautifulSoup(html, 'html.parser')
  57.             gene_tables = soup.find_all('table', {'class': 'ttd-table table table-bordered ttd-result-item'})
  58.             for gene_table in gene_tables:
  59.                 for row in gene_table.find_all('tr'):  # 跳过表头
  60.                     cols = row.find_all('td')
  61.                     if cols:
  62.                         gene_name_full = cols[0].get_text(strip=True)  # 假设基因名在第一列
  63.                         # 使用正则表达式提取括号内的基因名
  64.                         match = re.search(r'\(([^)]+)\)', gene_name_full)
  65.                         if match:
  66.                             gene_name = match.group(1)
  67.                             genes.append(gene_name)
  68.         else:
  69.             break
  70.     except Exception as e:
  71.         print(f"Error occurred: {e}")
  72.         break
  73. driver.quit()
  74. # 打印所有页的基因名
  75. print("所有页基因名列表:")
  76. for gene in genes:
  77.     print(gene)
  78. # 输出为CSV文件
  79. with open(output_filename, 'w', newline='') as csvfile:
  80.     csvwriter = csv.writer(csvfile)
  81.     csvwriter.writerow(['Gene Name'])  # 写入标题
  82.     for gene in genes:
  83.         csvwriter.writerow([gene])
复制代码
4.3.引用

TTD首页或者搜刮页面的最下方都存在

发表时间:2024年 被引次数:166

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4