1

次の入力ファイル (Input.xls) があります。

マウス No_neigh_mouse ヒト No_neigh_hum 交差 TotalGeneTested
Gm20645 1 lnc3 2 1 8
Gm20645 1 lnc2 1 0 8
Gm20645 1 lnc1 2 1 8
Gm26549 2 lnc3 2 1 8
Gm26549 2 lnc2 1 1 8
Gm26549 2 lnc1 2 1 8

私はしたいと思います:

  1. 各行のハイパージオム p 値を計算します (正常に実行されました)
  2. 次に、p 値補正の fdr (BH と同じ) を計算します。
  3. 調整された p 値を最後の列として追加します。

予想される出力ファイルには 4 つの列があります。1 番目は「Mouse」の値、2 番目は「Human」の値、3 番目は「Hypergeom-pvalue」、4 番目は「Adjusted-pvalue」です。次のコードを使用して、最初の 3 列を生成できます。

output=open("Hypergeom.xls", "w")
output.write("Mouse\tHuman\tHypergeom-pvalue\tAdjusted-pvalue\n")
Input = pd.read_table("Input.xls", sep="\t")

for i in range (0, len(Input.index)):
    hyperg= scipy.stats.hypergeom.sf(Input.ix[i,4], Input.ix[i,5], Input.ix[i,1], Input.ix[i,3],1) #calculates hypergeom p value without a problem
    newline = Input.ix[i,0], Input.ix[i,2], str(hyper)
    output.write('\t'.join(newline)+'\n')
    output.close()

ここまで、スクリプトは正常に動作し、次の出力ファイル ("Hypergeom.xls") を取得します。

マウス ヒト Hypergeom-pvalue 調整済み-pvalue
Gm20645 lnc3 0.25
Gm20645 lnc2 1
Gm20645 lnc1 0.25
Gm26549 lnc3 0.464285714
Gm26549 lnc2 0.25
Gm26549 lnc1 0.464285714

次に、出力ファイルを入力として再度開き、R を利用するユーザーの 1 人によって提案されたコマンドに基づいて fdr を計算することを目指しました: Python で R の p.adjust を実装する方法

私のコード:

import rpy2.robjects as R
pvaluefile = pd.read_table("Hypergeom.xls", sep="\t")
pvalue_list = pvaluefile.ix[:,2].tolist()  #converts the value column series to a list
#Now, i try to apply the command from the SO link above
p_adjusted = R['p.adjust'](R.FloatVector(pvalue_list),method='BH')
for v in p_adjusted:
    print v

ステップ p_adjusted = R [...] でエラーが発生します。エラー: TypeError: 'module' オブジェクトに属性 ' getitem 'がありません

したがって、次の 2 つの問題があります。

  1. このエラーを克服して fdr を計算する方法がわかりません
  2. ファイルの最後に 4 番目の列として fdr 列を追加するにはどうすればよいですか?
4

0 に答える 0