LoginSignup
1
1

CAFA 5 Protein Function Prediction やりたいことメモ(2023/06/30)

Last updated at Posted at 2023-06-30

はじめに

以下のkaggle コンペについての覚書です。

目次

  1. 問題設定
  2. お手本になるノート
  3. やりたいこと
  4. 参考文献

問題設定

タンパク質(? DNAかも?)のアミノ酸配列からタンパク質の機能を予測したい。

[予測元]
アミノ酸配列はFASTA形式というのを使う。
以下の例はkaggleで提供されているデータベースの中のID P20536 というタンパク質のアミノ酸配列を示している。

>P20536 sp|P20536|UNG_VACCC Uracil-DNA glycosylase OS=Vaccinia virus (strain Copenhagen) OX=10249 GN=UNG PE=1 SV=1
MNSVTVSHAPYTITYHDDWEPVMSQLVEFYNEVASWLLRDETSPIPDKFFIQLKQPLRNK
RVCVCGIDPYPKDGTGVPFESPNFTKKSIKEIASSISRLTGVIDYKGYNLNIIDGVIPWN
YYLSCKLGETKSHAIYWDKISKLLLQHITKHVSVLYCLGKTDFSNIRAKLESPVTTIVGY
HPAARDRQFEKDRSFEIINVLLELDNKVPINWAQGFIY

sp|P20536|UNG_VACCC というのはデータの出典元である UniProtKB の中でのID。sp から始まっていたら実測結果あり、tr から始まっていたら計算による予測のみ。
IDの後にはsp-シリーズのみ慣用名とかが書いてあり、その下の行がアミノ酸配列。

[予測対象]
予測したいものは遺伝子オントロジー(GO)。
タンパク質の機能と GO term が一意に紐づいている。
GO term は大分類、小分類みたいな順序関係が入った半順序集合。
obonet っていう python ライブラリで networkX 形式で見られる。グラフは有向非巡回グラフ(DAG)となる。

やることは、FASTA形式のアミノ酸配列を与えられて、発現するGO term とその発現確率を求めること。

お手本になるノート

中の文章からのコピペ↓

  1. 学習済みのタンパク質機能予測モデル(T5、ProtBERT、EMS2)から埋め込みベクトルを収集する。

  2. train_termsファイルからラベルを生成:全タンパク質セットで上位600個の頻出GO用語を考慮し、K個のGO用語がタンパク質に含まれる真の確率(0または1)を示す長さKのスパースベクトルを各タンパク質について生成する。

  3. Protein IDとエンベッディングを扱えるPytorch Datasetクラスを作成する。

  4. 予測用のPytorch Modelクラスを作成:ここではMultiLayerPerceptronとConvNN1d Networksを検討。

  5. 重みとバイアスパッケージ(Wandb)を使って、F-1メジャーを使った交差検証を行い、ハイパーパラメータのチューニングを行う。

このノートでは目的変数のデータは自分で作ることになっているけど、同じものを作ってくれている人がいるのでそれを使えばいい。
https://www.kaggle.com/datasets/siddhvr/train-targets-top500

やりたいこと

  • 現状 GO terms の親子関係を活かせていない。「子の GO term をもつ ⇒ 親の GO term をもつ」となるはずだから、親の GO をもつデータに制限すれば子の GO を持つ割合も上がって予測しやすくなりそう。
  • ハイパラチューニングができる気がしない。AutoMLで何か使えないか探す。
  • 一度embeddingをしたから見えなくなっているけど説明変数に外れ値がある。異様に長い配列とか、ぜんぜん出現しないアミノ酸が登場するとか。ここらへんのお掃除もちゃんとしたほうがいいと思う。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1