- 農見俊明
- 約 2,100 文字
- 400 View
はじめに
こんにちは。SAIG所属の農見と申します。
この度、研究で用いたB細胞エピトープ予測用データセットとサンプルコードを公開したので、その解説をしようと思います。(これのプレスリリース)
データセットについて
簡単に言うと、B細胞エピトープが分かればワクチン作成の大きな助けになる、だからCOVID-19の原因ウィルスであるSARS-CoV-2が持つタンパク質のB細胞エピトープを予測して、ワクチン開発の役に立てようぜというデータセットです。
B細胞エピトープについてもう少し詳しく知りたい方は我々の論文を読むか免疫学の本を読んでみるといいと思います。
サンプルコードについて
では本題のサンプルコードの解説をしていきます。
INPUT_DIR = '../input/epitope-prediction' |
最初の部分でデータがどんなものなのかということを見ています。基本中の基本ですね、データがどんなものなのかということが分からないと方針の立てようがないです。
各カラムは…
parent_protein_id: タンパク質のUniProt IDprotein_seq: タンパク質の配列start_position: エピトープの開始位置end_position: エピトープの終了位置peptide_seq: エピトープ配列chou_fasman: エピトープ特徴量, $\beta$ ターンemini: エピトープ特徴量, relative surface accessibilitykolaskar_tongaonkar: エピトープ特徴量, 抗原性parker: エピトープ特徴量, 疎水性isoelectric_point: タンパク質特徴量, 等電点aromacity: タンパク質特徴量, 芳香族アミノ酸の割合hydrophobicity: タンパク質特徴量, 疎水性stability: タンパク質特徴量, 安定性target: 抗体価
となっています。予測したいものはtarget(抗体価)でこれは0と1のbinaryの値を取ることが分かります。
np.sum(bcell_sars.isnull()) |
また、欠損値があるかどうかのチェックもしました。幸いこのデータには欠損値はないので、そのままデータを使うことが出来ます。ということで早速B-cellのデータを利用してCOVID-19に近いとされるSARSのBcellエピトープ予測しました。
Task1 : SARS予測
Bcellデータセットのみを使用してSARSデータセットの抗体価を予測するタスク。
SARS-CoVとSARS-CoV-2は配列に類似性があるためTask1ではSARSを予測している。
# create length columns |
lengthという特徴量を作成して、普通に5-fold cross validationしているだけですが、注目すべき部分はGroupKFoldを使っている点です。ただ、GroupKFoldを知らない人もいると思うので先にGroupKFoldの説明をします。
これを見てみるとGroupKFoldはKFoldと異なりGroupをまたぐことのない分け方をしていることが分かります。
で、今回何故parent_protein_idをgroupとしてGroupKFoldをしているかというとタンパク質ごとに分けないと不当に精度が高くなる恐れがあるためです。これは単純な理由でtargetに1しかないタンパク質や0しかないタンパク質というものが存在します。これをtrainとvalidationに混在させてしまうとより精度が高くなるというのは想像に難くないと思います。
select = [i != "feature" for i in feature_importance.columns] |
LightGBMではFeature importanceという指標で、どの特徴量がより予測に寄与したのかを見ることが出来ます。
今回の例で見ると予測に一番重要だったのはhydrophobicity(タンパク質の疎水性)であることが分かります。
またSARSは正解データがあるので予測がどれだけあたっていたかも見てみましょう。
from sklearn.metrics import accuracy_score, classification_report |
Accuracy: 0.7403846153846154 |
これを見ると1に対するrecallがとても低く改善の余地があることが分かります。
Task2 : SARS-CoV-2 (COVID-19) 予測
BcellとSARSのデータセットを利用して、SARS-CoV-2の抗体価を予測するタスク。
SARS-CoV-2には抗体価データがないところが難しいポイントです。
kf = GroupKFold(n_splits = 5) |
SARS-CoV-2への予測も同様にして予測結果を出力しますが、正解データがないので良し悪しの判断は難しいです。この部分は今後の生体内での実験で得られるB細胞エピトープの情報を踏まえた上で判断することになると思います。
まとめ
今回のデータセット、ソースコード、論文の公開により、医学の知見を持たないAI研究者でも容易にワクチン開発用データで実験することが出来るようになりました。このデータセットを使用して得られた知見をKaggle notebook等で公開していただけると幸いです。