如何使用Perl文件处理计算灵敏度和特异性

时间:2014-05-05 04:18:00

标签: perl file-io scripting subroutine

  • 灵敏度= TP /(TP + FN)
  • 特异性= TN /(TN + FP)

我有2个文件,我需要分别计算Sp和Sn。

这两个文件都有不同类型的数据模式。

第一个文件句柄包含我需要使用第二个文件句柄验证的数据。

例如假设这是我的第一个文件句柄的模式

($pattern=~/(\w)\s+(\w)\s+(\w+\_\w\_\w+\_\w+\_\w+)\s+(\d+)\s+\d+\.\d+\s+(\d+\.\d+)\s+[-]?\d+\.\d+\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)/)

和文件:

E   R   1OSP_L_PDBID_CHAIN_SEQUENCE 18  0.530   121.256 0.890   0.021   0.451   0.528   
E   K   1AHK_A_PDBID_CHAIN_SEQUENCE 96  0.590   121.260 -0.653  0.004   0.514   0.481   
E   R   1BZI_A_PDBID_CHAIN_SEQUENCE 103 0.530   121.278 1.365   0.018   0.047   0.935   
E   R   1JEQ_A_PDBID_CHAIN_SEQUENCE 258 0.530   121.278 0.217   0.125   0.227   0.648
E   K   1AHK_A_PDBID_CHAIN_SEQUENCE 100 0.575   118.298 -0.180  0.020   0.205   0.775

第二个文件句柄包含以下数据,并且有趣地预测我上面提到的两个预测值是正确的,即没有96和100。

例如,假设

A   95  PRO 8   -1.145  -1.933  <=Vd
A   96  LYS 1   -0.877  -0.891  <=Vd
A   97  ILE 29  -1.786  -4.916
A   98  ALA 9   -1.595  -2.447  <=Vd
A   99  PRO 2   -1.690  -1.726  <=Vd
A   100 LYS 1   -2.936  -2.713  <=Vd

使用以上数据:

  • TP = 2
  • TN =所有值 - 既未预测也未经验证的值=所有Pd&amp; Vd值 - 公共值{Pd U Vd - Pd.Vd} [假设所有值= 100] = 100 - 12 = 88
  • FP =预测 - TP = 5-2 = 3
  • FN =未预测的验证值= 6-2 = 4

所以我的

  • Sn = TP /(TP + FN)= 2/2 + 4 = 2/6 = 0.33
  • Sp = TN /(TN + FP)= 88/88 + 3 = 88/91 = 0.96

我也想知道我是否可以直接使用linux shell viz。 cat filename.pl | grep'#&gt;&amp;'| wc命令直接使用cmd或终端计算。

但我认为我需要使用perl脚本来进行更好的分析。

0 个答案:

没有答案