「同じタンパク質をコードしてるのに、発現量が10倍違う」
ミハイルが二つの配列を比較していた。
「コドンの違い?」英司が推測する。
「そう。遺伝コードの縮重性。同じアミノ酸でも、複数のコドンがある」
リナが興味を示した。「でも、結果は同じタンパク質なのに、なぜ発現量が違うの?」
「翻訳効率が違うからだ。すべてのコドンが、等しく効率的なわけじゃない」
ミハイルは表を見せた。「これ、コドン使用頻度。生物種ごとに、好まれるコドンが違う」
「大腸菌と哺乳類で、全然違いますね」リナが観察した。
「そう。大腸菌で頻繁に使われるコドンを、哺乳類で使うと、対応tRNAが少なくて翻訳が遅れる」
英司が理解した。「だから、発現系に合わせてコドンを最適化する」
「正確。これがコドン最適化だ」
リナが質問した。「単純に、頻度が高いコドンに置き換えればいい?」
「そう単純じゃない」ミハイルが笑った。「他にも多くの要因がある」
「例えば?」
「mRNAの二次構造。リボソームが詰まりやすい配列を避ける必要がある」
ミハイルは折り畳み予測を見せた。複雑なステムループ構造。
「この構造、翻訳開始部位を隠してる。だから発現が低い」
英司が提案した。「じゃあ、二次構造を崩すようにコドンを変える」
「そう。でも、タンパク質の配列は変えられない。同義コドンの中で選ぶしかない」
リナが考えた。「制約付き最適化問題ですね」
「まさに。そして、最近は機械学習で解いてる」
ミハイルはモデルの図を見せた。「入力はmRNA配列、出力は翻訳効率の予測値」
「どんなモデル?」
「Transformerベースの深層学習。配列の文脈を捉えられる」
英司が興味を示した。「学習データは?」
「大規模な発現実験データ。数万のmRNA配列と、それぞれの発現量」
リナが質問した。「でも、発現量には、他の要因もあるのでは?」
「ある。mRNA安定性、5'UTR、3'UTR、ポリAテール長。すべて影響する」
「複雑すぎませんか?」
「複雑だ。だから、深層学習が適してる。非線形な関係を学習できる」
ミハイルは最適化プロセスを説明した。「モデルで翻訳効率を予測しながら、配列を最適化する」
「遺伝的アルゴリズム?」英司が推測する。
「それも使える。でも、最近は勾配ベースの最適化も試されてる」
「離散的な配列で、勾配?」
「One-hot表現を連続化して、勾配を計算する。そして、最も改善するコドンを選ぶ」
リナが感心した。「数学的に美しい」
ミハイルが別の画面を開いた。「これが、最適化前と最適化後の配列」
「見た目は…ほとんど同じ?」英司が言う。
「アミノ酸配列は完全に同じ。でも、コドンは30パーセント変わってる」
「結果は?」
「翻訳効率が5倍向上。医薬品レベルの発現量になった」
リナが実用性を確認した。「mRNAワクチンにも使われてる技術?」
「そう。COVID-19ワクチンのmRNAも、徹底的に最適化されてる」
「どんな最適化?」
「コドン最適化、二次構造の調整、修飾ヌクレオチドの導入」
英司が追加した。「免疫原性を下げることも重要だ」
「正確。mRNAが免疫系に認識されにくくする工夫」
ミハイルは別の例を示した。「これ、同じスパイクタンパク質をコードする配列。野生型とワクチン型」
「GとCの含量が、全然違う」リナが気づいた。
「GC含量を上げると、mRNAが安定化する。でも、高すぎると二次構造が増える」
「また、トレードオフ」英司が言った。
「すべてはバランス。最適化は、多目的最適化なんだ」
リナが質問した。「目的関数は?」
「翻訳効率最大化、二次構造最小化、GC含量の適正範囲、免疫原性最小化」
「これ全部を同時に?」
「パレート最適解を探す。すべてを最大化はできないけど、バランスの良い解を見つける」
英司が感心した。「mRNA設計って、こんなに深いんだな」
「生命の言語を、最適化してる」ミハイルが静かに言った。「配列という情報に、設計図が隠されてる」
リナが微笑んだ。「隠された設計図を読み解く。それが、私たちの仕事ですね」
「そう。そして、より良い設計図を描く」
三人は、mRNA配列という四文字の言語に、無限の可能性を見ていた。