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