PVM(同源验证方法)
PVM来自于
Protein Interactions
TWO METHODS FOR ASSESSMENT OF THE RELIABILITY OF HIGH THROUGHPUT OBSERVATIONS这篇论文
![](https://i-blog.csdnimg.cn/blog_migrate/d9f8c26620ae031968fa5b13a44fbb65.jpeg)
PVM的计算方式
给你两个蛋白P1和P2,考虑P1和P2的同源蛋白,然后在DIP数据库统计这些同源蛋白相互作用的个数
,不包括P1和P2。这个数量就是相互作用分数。
上图的P1和P2的分数是2。如果这个分数大于0,就认为是相互作用的。
PVM网址
![](https://i-blog.csdnimg.cn/blog_migrate/c727cc9c342b0029e900ea2a84180c1a.png)
DIP提供的在线工具,一次只能提交1000对蛋白。他上传文件的格式要求是 DIP codes、YPD codes或者酵母基因代码。
目前
YPD codes或者酵母基因代码不好找。我们的输入可以使用
DIP codes这个比较方便点。
实验
1.下载酵母蛋白数据
首先我们从DIP数据库下载酵母蛋白数据(DIP20160731)
![](https://i-blog.csdnimg.cn/blog_migrate/69cafe693296dba9117af82feedbc867.png)
2.提取DIP codes和uniprot codes
我们用EXCEL打开下载的数据可以看到,ID interactor A 包含DIP codes、refseq codes、和uniprot codes。
目前我们需要
DIP codes和
uniprot codes两个数据。
![](https://i-blog.csdnimg.cn/blog_migrate/f377ff2bd9083cd6412185a7202ee317.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://i-blog.csdnimg.cn/blog_migrate/3167853300e69970b14ef2c288cfa6c7.png)
然后我们统计出
DIP codes和
uniprot codes一对一的关系。
uid_dip.csv
![](https://i-blog.csdnimg.cn/blog_migrate/b3779325b2e1dbe63234bcd4071085f2.png)
3.获取原论文的数据
Ensemble learning prediction of protein–protein interactions using proteins functional annotations
获取原论文的
uniprot codes列和PVM列
![](https://i-blog.csdnimg.cn/blog_migrate/bc4f2cafc37cdaf356c0f042e96a3b48.png)
uid.csv
![](https://i-blog.csdnimg.cn/blog_migrate/60583ca92d8d907d890bff1238f8cf5f.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://i-blog.csdnimg.cn/blog_migrate/5532348f4eef6d0bbc04bfc2c974c794.png)
dip_no_na.txt
![](https://i-blog.csdnimg.cn/blog_migrate/73bf0fe7a6a27ff2b4b7c63fecbe595b.png)
5.获取PVM
然后我们把上面获得dip_no_na.txt文件每1000个样本分成一个文件上传到下面这个网站。获取PVM值。
最后我们获得pvm分数。
![](https://i-blog.csdnimg.cn/blog_migrate/563fa5632b11631c638d0257d97a5742.png)
6.结果比较
![](https://i-blog.csdnimg.cn/blog_migrate/903a759d7f5296d00ebc73836a658d3c.png)
最终跑出来的数据跟原论文提供的数据不太一样。至于与原因,我想应该是DIP数据库更新引起的。
总结
- 首先这个PVM是2002提出的,有点旧。
- 这个工具只有web端的,没有客户端,而且一次只能处理1000个样本。限制太大,不适合大样本的处理。
- 上传文件的格式只能是 DIP codes、YPD codes或者酵母基因代码这3类,并没有提供一一对应的关系。操作起来比较复杂。
- 小样本可以使用这个特征,大样本建议丢弃这个特征。
附件列表