码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-11-16 14:50:49      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:har   附件   size   序列   data   creat   分享   erp   信息   

预备知识

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

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是低信度的预测。
 

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

它这网站也提供数据下载了。目前最新的是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 。
这应该怎么理解呢?同一条蛋白,序列应该是相同的,其他数据应该也是一样的才对啊。为什么会有自己跟自己相互作用呢。这又是怎么判断的?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 





附件列表

 

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

标签:har   附件   size   序列   data   creat   分享   erp   信息   

原文地址:http://www.cnblogs.com/ahusun/p/6068926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!