预备知识

关于蛋白质对中可能相互作用域的数目的计算这篇论文

Ensemble learning prediction of protein–protein interactions using proteins functional annotations 只提到下面这句话
46参考的是下面这篇文章

DOMINE a comprehensive collection of known and predicted domain-domain interactions

这是一个在线的web数据库,主要是已知的和预测的蛋白质结构域的相互作用数据。
DOMINE 总共包含26219对域间的相互作用(包含5410个域),6634对是从PDB推断的,21620对是通过最新的计算方法预测得来的。
在这21620对域之中,2989对是高信度的预测,2537对是中信度的预测,剩下的16094是低信度的预测。
网址在这: http://domine.utdallas.edu/cgi-bin/Domine?page=start

蛋白质域相互作用数据的准备

它这网站也提供数据下载了。目前最新的是2010年版本的。(感觉似乎不会更新了。

下载下来后我们得到 domine-tables-2.0.zip 这个文件,解压后我们可以得到6个文件

里面竟然没有readme
PGMAP.txt:存放的是Pfam ID和GO ID的映射关系。
PFAM.txt:存放的是Pfam数据的基本信息,也就是域的一些描述。
INTERACTION.txt:存放的是相互作用域的信息。
GO.txt:存放的GO的基本信息。
create.sql:存放的是sql语句,具体就是上面4个表的结构

command.sh:linux下的一个脚本。

1.首先我们先把数据导入到mysql

他提供的 create.sql文件代码有问题。具体代码如下
这里我使用的mysql可视化界面是Navicat
  1. CREATE TABLE PFAM
  2. (
  3. DomainAccchar(7) PRIMARY KEY,
  4. DomainId varchar(256),
  5. DomainDesc varchar(256),
  6. InterproIdchar(10)
  7. );
  8. CREATE TABLE GO
  9. (
  10. GoTermchar(10) PRIMARY KEY,
  11. Ontology varchar(256),
  12. GoDesc varchar(256)
  13. );
  14. CREATE TABLE PGMAP
  15. (
  16. DomainAccchar(7),
  17. GoTermchar(10),
  18. PRIMARY KEY (DomainAcc,GoTerm),
  19. );
  20. CREATE TABLE INTERACTION
  21. (
  22. Domain1char(7),
  23. Domain2char(7),
  24. iPfam boolean,
  25. 3didboolean,
  26. ME boolean,
  27. RCDP boolean,
  28. Pvalueboolean,
  29. Fusionboolean,
  30. DPEA boolean,
  31. PE boolean,
  32. GPE boolean,
  33. DIPD boolean,
  34. RDFF boolean,
  35. KGIDDI boolean,
  36. INSITE boolean,
  37. DomainGAboolean,
  38. PP boolean,
  39. PredictionConfidencechar(2),
  40. SameGOboolean,
  41. PRIMARY KEY (Domain1,Domain2),
  42. );
我们用上面语句先把数据的表创建好。

然后我们把PGMAP.txt、PFAM.txt、INTERACTION.txt、GO.txt四个文件分别导入到对应的表中。

2.获得Gene ontology IDs和论文的uniport id 数据

然后我们从uniport上下载所有酵母蛋白的Gene ontology IDs

 yeast.csv

Ensemble learning prediction of protein–protein interactions using proteins functional annotations
 获取论文的 uniprot codes列(idA,idB)
yeast_gold_protein_pair.csv
到这里我们的数据已经准备完成了。下面开始写代码!

代码的设计

关于蛋白质对中可能相互作用域的数目的计算,一开始是无从下手的。
但是domine这个网站提供了Pfam id 和GO id的映射。这样我们就可以间接获得蛋白质域间的相互作用
1. 首先我们可以从uniport上获得蛋白质的GO id,一个蛋白对应对多GO id 
2.根据 Pfam id 和GO id的映射关系,我们可以得到一个GO  id 对应多个Pfam id,也就是说,一个基因本体对应多个域
总的来说就是,一个蛋白质有多个GO,一个GO又有多个域。这样我们就可以间接获得一个蛋白有多少个域。
最后再通过interaction表统计两个蛋白中有多少个域是相互作用的。
代码如下:
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Nov 04 15:40:03 2016
  4. @author: sun
  5. """
  6. importMySQLdb
  7. import pandas as pd
  8. import re
  9. yeast_gold_protein_pair=pd.read_csv('yeast_gold_protein_pair.csv',usecols=['idA','idB'])
  10. yeast=pd.read_csv('yeast.csv',usecols=['Entry','Gene ontology IDs'],index_col=0)
  11. idA=yeast.loc[yeast_gold_protein_pair.idA,:]
  12. idB=yeast.loc[yeast_gold_protein_pair.idB,:]
  13. idA.index=range(len(idA))
  14. idB.index=range(len(idB))
  15. db =MySQLdb.connect("127.0.0.1","root","123","domine")
  16. cursor = db.cursor()
  17. results=[]
  18. for i in range(len(idA)):
  19. go_a=tuple(re.findall(r"GO:\d{7}",str(idA.loc[i])))
  20. go_a='\',\''.join(go_a)
  21. go_b=tuple(re.findall(r"GO:\d{7}",str(idB.loc[i])))
  22. go_b='\',\''.join(go_b)
  23. sql_a ="select * from pgmap where goterm in ('%s')"% go_a
  24. sql_b ="select * from pgmap where goterm in ('%s')"% go_b
  25. # 执行SQL语句
  26. a=cursor.execute(sql_a)
  27. results_a = cursor.fetchall()
  28. b=cursor.execute(sql_b)
  29. results_b = cursor.fetchall()
  30. if(len(results_a)!=0and len(results_b)!=0):
  31. results_a=tuple(re.findall(r"PF\d{5}",str(results_a)))
  32. results_a='\',\''.join(results_a)
  33. results_b=tuple(re.findall(r"PF\d{5}",str(results_b)))
  34. results_b='\',\''.join(results_b)
  35. sql="select * from interaction where domain1 in ('%s') and domain2 in ('%s')"%(results_a,results_b)
  36. result=cursor.execute(sql)
  37. results.append(result)
  38. else:
  39. results.append(0)
  40. yeast_gold_protein_pair['domain']=results
  41. yeast_gold_protein_pair.to_csv('domain.csv',index=False)
  42. # 关闭数据库连接
  43. db.close()

最后结果

domain.csv
但是和 原论文 提供的数据相差太大了。

结论

1. 结果相差那么大我也不知道什么原因。关于原论文数据的说明文章里也就那一句话。
2.整个过程我想我应该没理解错。
3.从上面那个图我们可以看到P00572和P00812这两个蛋白是自相互作用的。 但是他们的 可能相互作用域的数目竟然为0 。
这应该怎么理解呢?同一条蛋白, 序列 应该是相同的,其他数据应该也是一样的才对啊。为什么会有自己跟自己相互作用呢。这又是怎么判断的?
 

来自为知笔记(Wiz)

附件列表

转载于:https://www.cnblogs.com/ahusun/p/6068926.html

蛋白质对中可能相互作用域的数目计算相关推荐

  1. c语言变量作用域生命周期,C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期...

    谭浩强书: 从存储模型可以看到,谭浩强和钱能的模型有一定的对应关系: 静态存储区  ->  全局数据区 动态存储区  ->  栈(stack) 变量的类型: 1. 局部变量和全局变量 局部 ...

  2. (二)线程同步_3---在类中使用相互独立的属性同步

    2019独角兽企业重金招聘Python工程师标准>>> 在类中使用相互独立的属性同步 当使用synchronized关键字去同步一个代码块时,我们必须传递一个引用,通常情况下可以使用 ...

  3. python中函数的作用域_Python中的函数作用域

    在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...

  4. python中变量的作用域有几种_Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  5. 【Python】Python中令人头疼的变量作用域问题,终于弄清楚了

    [Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客-CSDN博客 [Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客 ...

  6. Angular 中得 scope 作用域梳理

    2019独角兽企业重金招聘Python工程师标准>>> $scope 的使用贯穿整个 Angular App 应用,它与数据模型相关联,同时也是表达式执行的上下文.有了 $scope ...

  7. Javascript中闭包的作用域链

    作用域定义了在当前上下文中能够被访问到的成员,在Javascript中分为全局作用域和函数作用域,通过函数嵌套可以实现嵌套作用域. 闭包一般发生在嵌套作用域中.闭包是JavaScript最强大的特性之 ...

  8. B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序...

    B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序 select a.*,count(*) as c from a left join b on a.id=b.ai ...

  9. Python函数中的变量作用域

    目录 一.变量作用域 二.全局变量和局部变量 一.变量作用域 变量作用域,其实就是变量可以在哪些范围内可以使用,哪些范围内不可以使用.这里只讲函数中变量的作用域,局部变量和全局变量 面向过程编程就涉及 ...

最新文章

  1. UE4中的主要材料和光线跟踪
  2. Python测试程序用时时长(运行时间测试)
  3. 【Linux】VirtualBox安装ubuntu排错LowGraphic
  4. redhat和ubuntu系统下挂载ntfs文件系统的方法(转载)
  5. 谈谈WCF中的Data Contract(2):WCF Data Contract对Generic的支持
  6. 八数码问题c语言,启发式搜索算法解决八数码问题(C语言)
  7. python判断图片是不是火车票_12306验证码图像识别程序源码-Python识别12306验证码 - PS下...
  8. 使用Cloudflare给域名添加跳转/301重定向
  9. 使用Selenium模拟登陆百度盘
  10. 怎样配置炒股用的计算机,炒股专用电脑配置
  11. vivo是安卓手机吗_vivo新机Y73s评测:谁说买手机一定要买旗舰机?_安卓手机
  12. 因增强导致BDC录屏执行异常的梗
  13. 谷歌扩展工具下载网址---最新
  14. 医疗器械软件注册申报-核心算法
  15. 大学生计算机入学考试试题,大学生统考计算机一级考试试题题库.doc
  16. 《深入理解redis》之三:内存管理的建议与技巧
  17. 基于JAVA服装连锁店后台管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  18. 主动学习(Active Learning)简介综述汇总以及主流技术方案
  19. 检测钻石的边缘,以及确定钻石顶点的位置
  20. 联发科发布全新旗舰5G芯片;全球半数雇主计划加薪并恢复至正常招聘水平 | 美通企业日报...

热门文章

  1. js中的直接赋值和引用赋值
  2. linux桌面版下载官网下载软件,Ubuntu桌面版 64位
  3. hexdump-format
  4. 基于STM32的常用数码管芯片TM1637驱动
  5. 树莓派+USB摄像头自制网络摄像头
  6. 游戏开发完整学习路线
  7. 卷烟流水线工人超30%是研究生,不是双一流,连进厂的资格都没有了?!
  8. 村庄规划中的GIS应用之地形分析
  9. oracle的rowid和rownum,Oracle的ROWID和ROWNUM
  10. 少说话多写代码之Python学习016——get方法练习