Brenda应用(2.0) - 构建(酶, 物质, 关系)0-1表格用于NBI推断新关系
本文是《Brenda应用(2) - 构建(酶, 物质, 关系) 0-1表格用于NBI推断新关系》的第一篇:数据获取。
目录
- 目标
- 输出
- 实现
- 数据来源
- 问题
- 应用/测试
- 针对于感兴趣的十种酶进行数据生成
- 代码
- 问题
- 本地记录不全
- 数据清洗
- 目标
- 实现
- 问题
- TODO
- 网络结构深化
- 酶空间
- 化学空间
目标
提取Brenda的底物、产物表内容,构建(酶, 物质, 关系)0-1表格用于NBI推断新关系。
输出
得到的文件均放在文件夹里,文件夹是一个二级的文件夹(如下图):
【Product】/【Substrate】-【3.1.1.3】(EC号命名的文件夹)
产出三个表:
- [Chemicals.tsv]
Cj name
- [Enzymes.tsv]
Ei EC name
- [ECIs.tsv]
Ei Cj [num]
[num] 表示关系在数据库中的计数
希望实现的效果是,在各级EC等级,如EC3, EC3.1, EC3.1.1, EC3.1.1.3上可以用统一的接口整理出三个表。
def genECI(EC, brenda, table, path):'''EC = '3', '3.1', '3.1.1', '3.1.1.3' 等,table = 'Substrate', 'Product'等,在os.path.join(path, table)路径下新建名为*EC*的文件夹,其中包含了Chemicals.tsv, Enzymes.tsv 和 ECIs.tsv 文件。(暂不实现:并且返回对象Chemicals, Enzymes 和 ECIs.)'''pass
实现
数据来源
Substrate表
Substrate
{ 'reactionPartners': "1-(4'-fluorophenyl)ethanol + NAD+ = 1-(4'-fluorophenyl)ethanone + NADH + H+", 'substrate': "1-(4'-fluorophenyl)ethanol", 'organism': 'Thermus thermophilus', 'ecNumber': '1.1.1.1', 'ligandStructureId': 210894
}
Product表
Product
{ 'organism': 'Leifsonia sp.', 'product': '1-(3-chlorophenyl)ethanol', 'reactionPartners': "3'-chloroacetophenone + NADH + H+ = 1-(3-chlorophenyl)ethanol + NAD+", 'ecNumber': '1.1.1.1', 'ligandStructureId': 134094
}
同样的,还有 NaturalSubstrate 和 NaturalProduct 表,内容类似。
从这个表里提取信息并整理的方法是简单的,下面是伪代码:
def genECI(EC, brenda, table, path):ECs = EC_candidate(EC, brenda, table) # 根据输入的EC str 返回ECs list.results = _genECI(brenda, table, ECs) # 根据ECs从Brenda中整理相应信息,返回results dict. writeFiles(results, path) # 将 results 保存到 path 所指定的文件夹中
那么是不是也需要一个文件读入接口呢?
(未实现)
def readFile(EC, path):_path = _pathjoin(EC, path)results = _readFile(_path)return results
那么有必要规定一下results的格式了。既然如此,何不使用python中现有的图工具包来做呢?
(未实现)
问题
- 需要维护一个合理的tables的取值范围,并且维护提取信息的键名称。如下:
TABLE_SCHEMA = {'Product':('product','ecNumber','organism'),'Substrate':('substrate', 'ecNumber','organism'),'NaturalProduct':('naturalProduct', 'ecNumber','organism'),'NaturalSubstrate':('naturalSubstrate', 'ecNumber','organism'),
}
- 利用OrderedDict来同时实现Set和List的功能:
import collections'==略=='results = {}results['Chemicals'] = collections.OrderedDict()results['Enzymes'] = collections.OrderedDict()results['ECIs'] = collections.OrderedDict()
应用/测试
针对于感兴趣的十种酶进行数据生成
酶名称 | 主要EC号 | 命名 | 主要类型 |
---|---|---|---|
P450酶 | [‘1.1.1.B57’, ‘1.11.2’, ‘1.13’, ‘1.14’] | P450 | 氧化还原酶类 |
卤化酶 | [‘1.14.19’] | O2->2 Water, oxidoreductase | 氧化还原酶类 |
单萜合酶 | [‘4.2.3.118’] | 2-methylisoborneol synthase | 裂合酶类 |
甲基化酶 | [‘2.1.1’] | methyltransferase | 转移酶类 |
异戊烯基转移酶 | [‘2.5.1.112’, ‘2.5.1.27’, ‘2.5.1.75’, ‘2.5.1.8’] | isopentenyltransferase | 转移酶类 |
环化酶 | [‘4.2.1’, ‘4.2.3’] | Hydro-lyases; or Acting on phosphate, C-O lyases | 裂合酶类 |
C-糖基转移酶 | [‘2.4.1’] | hexosyltransferases | 转移酶类 |
β-氨基酸合成酶 | [‘4.3.1’] | ammonia lyase | 裂合酶类 |
氨基转移酶(酰胺水解酶) | [‘3.5.1’] | linear amides hydrolases | 水解酶类 |
延胡索酸酶 | [‘4.2.1.2’] | fumarate hydratase | 裂合酶类 |
漆酶 | [‘1.10.3.2’] | laccase | 氧化还原酶类 |
脂肪酶 | [‘3.1.1’, ‘3.1.1.3’] | carboxylic-ester hydrolases | 水解酶类 |
代码
## 设定用户名,路径 ##
brenda = brenda_soap.Brenda(EMAIL, PASSWORD, PATH)
path_eci = os.path.join(PATH,'ECI')
tables = ['Product', 'Substrate']
ECs = ['1.1.1.B57', '1.11.2', '1.13', '1.14', '1.14.19','4.2.3.118','2.1.1','2.5.1.112', '2.5.1.27', '2.5.1.75', '2.5.1.8','4.2.1', '4.2.3', '2.4.1','4.3.1','4.2.1.2','1.10.3.2','3.1.1','3.1.1.3',
]
for table in ['Product']:for EC in ECs:genECI(EC, brenda, table, path_eci)
问题
本地记录不全
发现在本地跑的时候,'4.2.1’出了问题,翻阅日志,发现是之前下载Brenda数据的时候,有中间断网的情况,所以对于某几个表,本地数据是不全的。对于Product,3.4.23.20之后的数据不在本地;Substrate/NaturalProduct/NaturalSubstrate的数据是全的。日志文件的记录如下:
对于 table = Product,有如下ECs并未被加入表中:
ecs = [‘2.1.1.B114’,‘2.3.1.97’,‘3.4.23.20’, (略), ‘7.6.2.B1’]
对于 table = RecommendedName,有如下ECs并未被加入表中:
ecs = [‘6.3.2.13’, (略), ‘7.6.2.B1’]
对于 table = Substrate,有如下ECs并未被加入表中:
ecs = [‘2.1.1.B114’,‘2.3.1.97’,‘7.6.2.B1’]
通过设置brenda的模式来解决:
if ec > '3.4.23.20' and table == 'Product':brenda.mode = 'soap'## 代码 ##brenda.mode = 'default'
之后可以抽空把Product表补全。
table = 'Product'
ecs = brenda.getEcNumbers(table)
brenda.mode = 'soap'
for ec in ecs:if ec > '3.4.23.20':brenda.getContent(table, ec)
数据清洗
brenda的记录略显粗糙,如之前所述,有些带有计量数的,有些是非常常规的分子,如H2O, more, ? 等。需要对ECI表进行数据清洗以赋予数据意义。
目标
- 除去无意义物质记录,如 more 和 ?
- 辨识/除去常见底物,如异戊烯基转移酶产物中的 diphosphate等
- 频数统计,进行简单分析
实现
在genECI()中加入。
nonsense_chemicals = ['?','more']## 略 ##if chemical in nonsense_chemicals:continue
在外部同样写了一个函数:
def refineByChem(results, chemicals_list):# 删除chemicals_list中的物质和相应关系。
问题
问题在于确定哪些是需要删除的。实际上不是那么明显与好选择。
TODO
网络结构深化
酶空间
类似于DTI中的T空间,之前有从发育学的角度关联的;是否能将其方法引入?
化学空间
类似于DTI中的Drug空间,如何从化学名称出发,对应到【化学物质】,再引入网络关系?
Brenda应用(2.0) - 构建(酶, 物质, 关系)0-1表格用于NBI推断新关系相关推荐
- 【新手教程】51Sim-One Cloud 2.0 构建标准案例2.0场景
此教学讲述如何编辑出OpenSCENARIO官方案例"两次变道"(DoubleLaneChanger),用户将学会如何创建出符合OpenSCENARIO标准测试场景的全流程.包括标 ...
- WR:Tetrasphaera PAO 代谢中的储能物质与微生物多样性及除磷效能之间的关系
点击蓝字 关注我们 编译:王慧 校稿:袁凌 论文ID 原名:The storage compounds associated with Tetrasphaera PAO metabolism ...
- 从0构建AI推荐系统demo(数据准备)
前言 推荐系统一直以来都是人工智能领域中较为火热的研究方向之一,最近公司需要构建常见的资讯类推荐系统,本人也从无到有.从0开始构建AI推荐系统demo版.此篇主要讲述最基本的数据准备中,最最最最基本的 ...
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...
- 通过构建城市来解释HTML,CSS和JavaScript之间的关系
by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 通过构建城市来解释HTML,CSS和JavaScript之间的关系 (The relationship betw ...
- 怎样搞定分类表格数据?有人用TF2.0构建了一套神经网络 | 技术头条
作者 | 王树义 来源 | 玉树芝兰(ID:nkwangshuyi) 以客户流失数据为例,看 Tensorflow 2.0 版本如何帮助我们快速构建表格(结构化)数据的神经网络分类模型. 变化 表格数 ...
- 探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
前言 首先说明这并不是一个教程贴,而记事本应用是网上早有的案例,对于学习 vuex 非常有帮助.我的目的是探索 vuex 2.0 ,然后使用 vue 2.0 + vuex 2.0 重写这个应用,其中最 ...
- 探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用23
前言 首先说明这并不是一个教程贴,而记事本应用是网上早有的案例,对于学习 vuex 非常有帮助.我的目的是探索 vuex 2.0 ,然后使用 vuejs 2.0 + vuex 2.0 重写这个应用,其 ...
- LINUX 下构建OpenGL ES 3.0
Ubuntu LINUX 下构建OpenGL ES 3.0 Category : OpenGL LINUX 下构建OpenGL ES 3.0 软件:PowerVRSDKSetup-4.0.run-x6 ...
最新文章
- [PSP]通向5.50-D3的倒数计时
- Linux免密登陆(CentOS7.2为例)
- python好学吗 小木虫-25行Python代码完成人脸识别
- python重复执行_关于计时器:在Python中每x秒重复执行一次函数的最佳方法是什么?...
- 百度地图同时显示多个路书
- u大侠pe系统桌面计算机,详解各种PE启动的过程
- C# 系统应用之Cookie\Session基础知识及php读取Cookie\Session
- Equipment download - No data contained in BDoc
- 太极虚拟服务器,太极 中标 云服务器
- 201521123059 《Java程序设计》第八周学习总结
- 学习ROS过程中遇到的一些小问题以及解决办法的记录
- 微信自动抢红包软件被判赔475万
- Maven学习总结(21)——Maven常用的几个核心概念
- dell m610刀片查看日志及更换内存
- java中src_java中garadle工程没有src问题
- 使用delphi 开发多层应用(十四)使用Basic4android 显示kbmMW server数据
- 【无标题】C基础 2
- IE浏览器连不上网电脑无法联网
- AI 换脸术「Deepfakes」进化简史
- 偶遇 防火墙,IDS,IPS三个老兄争吵