minimal Hypergeometric (mHG)

読んだ。
Cell. 2016 Sep 8;166(6):1500-1511.e9
TIL (Tumor infiltrating lymphocyte) の発現解析をして、Activate/Dysfunction の順位付けをしている。
その中でminimal hypergeometric というものがあった。
Gene Ontology 解析ではannotation が有意に出現回数が多いかどうか、という検定が超幾何分布を使って行われる。袋の中にカードがあってそれを繰り返し非復元抽出する、というシチュエーションでよく使われる。
PCA をしてPC1 とPC2 でそれぞれActivate/Dysfunction, ActivateかつDyfunction/neither の2軸4パターンに分ける。
これはy=-x とy=x の対角線で軸を構成しており、x軸との相関係数がスコアとする。
このとき、四隅にある遺伝子がクラスター内で上位にくるかどうかをmHG の拡張であるXL-mHG test で検定している。
 
そもそもmHG はなにか、というと、PLoS Comput.Biol.,3(2007),p.e39 でシークエンスのモチーフ解析をしている。モチーフがあれば標識されて蛍光強度が強く検出されがちだから、得られた配列をシグナルでソートして、上位をtarget, 下位をbackground として、モチーフがあるかを1、ないかを0 とする。target とする、のシグナル閾値は適当に設定できる。
全体の配列数をN, そのうちの真のモチーフをもつ配列がB, target に分類した配列数をn, n のうちの真のモチーフ数をb とすると、target のなかで真のモチーフ数の
変数X
P(x=b)=\frac{\begin{pmatrix}n\\b\end{pmatrix}\begin{pmatrix}N-n\\B-b\end{pmatrix}}{\begin{pmatrix}N\\B\end{pmatrix}}
X はいろいろ動かせるから多重検定補正が必要になるが、あとはなんやかんややってmHG score とp値が出せる。
R だとmHG パッケージでできる。
 
上位からいろんなパターンを試せるsemiparametric な手法なのでお手軽だが、試せすぎて柔軟すぎる感があるということで、1がいくつ含まれるかのX と上位どれだけかのL のふたつの変数を加えたXL-mHG test というものがあるらしい。
The XL-mHG test for enrichment: Algorithms, bounds, and power
The XL-mHG Test For Enrichment: A Technical Report
PLoS One. 2015 Nov 17;10(11):e0143196
Python だとxlmhg でできる。