PVM(同源验证方法)
PVM来自于
Protein Interactions
TWO METHODS FOR ASSESSMENT OF THE RELIABILITY OF HIGH THROUGHPUT OBSERVATIONS这篇论文
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114804138-1622345251.jpg)
PVM的计算方式
给你两个蛋白P1和P2,考虑P1和P2的同源蛋白,然后在DIP数据库统计这些同源蛋白相互作用的个数
,不包括P1和P2。这个数量就是相互作用分数。
上图的P1和P2的分数是2。如果这个分数大于0,就认为是相互作用的。
PVM网址
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114804545-2059552258.png)
DIP提供的在线工具,一次只能提交1000对蛋白。他上传文件的格式要求是 DIP codes、YPD codes或者酵母基因代码。
目前
YPD codes或者酵母基因代码不好找。我们的输入可以使用
DIP codes这个比较方便点。
实验
1.下载酵母蛋白数据
首先我们从DIP数据库下载酵母蛋白数据(DIP20160731)
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114804842-437049576.png)
2.提取DIP codes和uniprot codes
我们用EXCEL打开下载的数据可以看到,ID interactor A 包含DIP codes、refseq codes、和uniprot codes。
目前我们需要
DIP codes和
uniprot codes两个数据。
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114805388-68669037.png)
在EXCEL中我们使用两个代码获得
ID interactor A
的
DIP codes和
uniprot codes,同理也可以获得
ID interactor B的
DIP codes和
uniprot codes
=RIGHT(C2,6)
=MID(C2,1,FIND("N",C2))
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114805967-1469239710.png)
然后我们统计出
DIP codes和
uniprot codes一对一的关系。
uid_dip.csv
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114806201-449312114.png)
3.获取原论文的数据
Ensemble learning prediction of protein–protein interactions using proteins functional annotations
获取原论文的
uniprot codes列和PVM列
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114806607-264187804.png)
uid.csv
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114807029-163836044.png)
4.获取DIP codes
然后我们根据第2步得到的
DIP codes和
uniprot codes一对一的关系,获取论文数据的
DIP codes
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 01 15:32:44 2016
@author: sun
"""
import pandas as pd
import numpy as np
uid_dip=pd.read_csv('uid_dip.csv',header=None,index_col=0)
uid=pd.read_csv('uid.csv')
dip_a=uid_dip.loc[uid.idA,:]
dip_b=uid_dip.loc[uid.idB,:]
dip_a.index=np.arange(3006)
dip_b.index=np.arange(3006)
dip=pd.concat([dip_a,dip_b,uid],axis=1)
dip.to_csv('dip_with_na.csv',index=False,header=False)
dip_no_na=pd.concat([dip_a,dip_b],axis=1)
dip_no_na=dip_no_na.dropna(how='any')#删除有nan值的所有行
dip_no_na.to_csv('dip_no_na.txt',index=False,header=False,sep=' ')
最后我们得到两个文件
dip_with_na.csv
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114807529-361927372.png)
dip_no_na.txt
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114807873-803043167.png)
5.获取PVM
然后我们把上面获得dip_no_na.txt文件每1000个样本分成一个文件上传到下面这个网站。获取PVM值。
最后我们获得pvm分数。
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114808357-959424584.png)
6.结果比较
![](https://images2015.cnblogs.com/blog/833360/201611/833360-20161116114809092-1519450478.png)
最终跑出来的数据跟原论文提供的数据不太一样。至于与原因,我想应该是DIP数据库更新引起的。
总结
- 首先这个PVM是2002提出的,有点旧。
- 这个工具只有web端的,没有客户端,而且一次只能处理1000个样本。限制太大,不适合大样本的处理。
- 上传文件的格式只能是 DIP codes、YPD codes或者酵母基因代码这3类,并没有提供一一对应的关系。操作起来比较复杂。
- 小样本可以使用这个特征,大样本建议丢弃这个特征。
附件列表