Drkcore

12 01 2010 chemoinformatics Python Tweet

Topological Fragment Index

Topological Fragment Indexというものが気になったので。

論文はこれでToFIを尤度として捉えているらしい。

式は

ToFI

ここで、nは全ボンド数。kはフラグメントについてる余計なボンド。lをフラグメントのボンド数としてm=k+lとなっている。

def combination(n,m):
    if m == 0: 
        return 1.0
    else:
        return reduce(lambda x,y:x*y,range(n-m+1,n+1)) / float(reduce(lambda x,y:x*y,range(1,m+1)))

def tofi(n,m,k):
    sum = 0.0
    for i in range(n-m+1): 
        sum +=  combination(n-m,i) / combination(n,k+i)
    return sum/(n+1)

で、整数にするために1*10^6という定数をかけるらしいのだが、なにがしたいのかよくわからん。

lが一定でkが増えるとToFIが減る

>>> tofi.tofi(23,17,5) * 1000000
8.9779501544207427
>>> tofi.tofi(23,18,6) * 1000000
2.8351421540276029
>>> tofi.tofi(23,19,7) * 1000000
0.99229975390966119

kが一定でlが減るとToFIが増える

>>> tofi.tofi(23,17,5) * 1000000
8.9779501544207427
>>> tofi.tofi(23,16,5) * 1000000
13.466925231631114
>>> tofi.tofi(23,15,5) * 1000000
20.812520812520813

後者はなんとなく理解できるけど、切断面が大きくなるほどToFIが減るってのがわからん。

計算間違ってるのかなぁ。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021