2026年11月8日日曜日

AI が蛋白質の NMR 解析を全部やってくれた、けれど。

タンパク質の構造決定では、NMR スペクトルを取得するのも大変なのですが、その後の帰属や NOE 解析なども、なかなか大変です。そこにはある程度の経験も必要なため、個人差がかなり出てしまうところでもあります。

ところが、一連の3次元スペクトルとアミノ酸配列だけを Claude に投げて、「構造決定して」と頼んでみると、翌朝にはきれいな立体構造が画面に出ていました。超驚きです。

それでは、ということで、非標識の 30~40 残基程度のペプチドでも可能なのだろうかと、2D TOCSY、NOESY、COSY などを入れて依頼してみました。ところが、今度はかなり間違いの多い帰属結果を出してきました。

なぜそうなったのかな?と思っていろいろ調べてみると、どうもピークトップをきちんと拾えていないのです(ピークの重なりが激しく、S/N 比も悪かった)。確かに「畳み込みニューラルネットワーク」を使ったツールなどでも、このあたりはあまり上手くいっていないようです。

そこで、そのような「文句」を Claude に投げてみたところ、Claude もいろいろと悩み始めました。そして、「それではピークの等高線を補完しながら、強度の 30% を使ってフィッティングして……」などと、いろいろな方法を試し始めました。画面に表示される「つぶやき」を見ていると、まるで悩める幽霊がいるかのようです。

そして、10 分ほど経った頃、「これでどうでしょうか? 自信があります」といったセリフとともに提出してきたピークリストは、見事なものでした。「やればできるじゃないか!」と思ったのですが、その後の請求書もまた、すさまじいものでした。

それを成し遂げてくれたプログラムを見てみると、「この TOCSY スペクトルには使えるけれど、また別の感度をもったスペクトルには使えないのでは?」と思わせるような変数が、ちょこちょこと見られるのです。まあ、かなり付け焼刃でやっつけたような感じです。

そこで考えたのですが、ピークトップを拾うこと自体は、もう 35 年前の PIPP でもちゃんとできていて、今の Poky や CCPN では何の苦労もなくきれいにやってのける。なので、これをわざわざ Claude などにさせて喜ぶのは、せいぜい一回限りにしておいて、その後は Poky/CCPN に任せればよいのでは?と。そうすれば、人の目で見ながらピークの取捨選択も確認できる。

もし、どうしても AI を使いたいというのであれば、CCPN/Poky は Python やマクロを読み込めるので、そのようなマクロ的な Python を AI に作らせる。そうしたら、CCPN/Poky が目の前で勝手に動き始めるはず。それもまたうれしい。

でも、それも、何十個もの帰属を明日までに終わらせたいというのであれば分かるけれど、たまに出てくるタンパク質の帰属をちょっとやらせるのに、そこまで必要なのだろうか。Poky だったら、カーソルでスペクトル全体をぱっと囲み、あとは余計なピークリストを消したり、足りないものを追加したりすればよいだけ。

そして、そこで出来上がったピークテーブルを MARS や FLYA 用に書き換えてもらうのは、それこそ AI に頼めばよい。この入力・出力ファイルの変換プログラムこそ、我々が今まで苦労して、やれ Perl だ、やれ Sed/Awk だといって作っていた部分で、そういったところこそ AI に任せてしまうのがよいのでは?と思う。

そうすれば、連鎖帰属について、古くからあるソフトウェアも含めていろいろと試し、比較できますよね。そして、「それらを比較しながら、Excel にまとめて」というところは AI に任せる。

全部 AI にさせるのは、透明人間が仕事をしているのを見ているようで面白いのだけれど、おそろしくトークンを消費する。実際、相応の計算資源や電力を使っているのだから、仕方がないのかもしれない。そして、そうした計算コストを考えると、これが今後ひたすら安くなっていくとも思いにくい。なので、今後、個人がエージェントを使って、もちろん多少は使うにしても、それだけでバリバリ仕事をするというのは、なかなか難しいのではないか?と思う。

一方、プログラムを書かせるだけなら、ふつうの Chat レベルでも十分に可能だし、トークンもそれほど消費しない(だろう)。スペクトルのような巨大なファイルを読み込ませると、一気に消費してしまうように感じる(スペクトル自体はバイナリなので、実際にどの程度トークンとして消費しているのかは分からないが)。

Claude Code も、もともとは、その「Code」という名称が示すように、プログラムを書くことを大きな目的としたツールだった。プログラムを作った時点で、その後は AI に逐一判断させるのではなく、基本的には数学的処理の現場となる。

すみません、もちろん AI の処理も数学がベースなのですが、ここで言いたいのは、いわゆる Attention + Transformer の仕組みを使った AI の推論に、その都度任せる必要があるかどうか、という意味です。

全部を AI の Attention 的な処理に任せるのではなく、従来の数学的処理で扱えるところは、線形であれ非線形であれ、それでやっていけばよい。AI に任せるところと、従来型のプログラムに任せるところ、そして人間が自分の目で判断するところを、うまく分けていけばよいのではないかと思う。

そうでないと、人類がこれまで築いてきたソフトウェアやアルゴリズムという過去の遺産が、まるで全部不要だったかのようになってしまうし、そして究極的には、本当に人間まで不要になってしまいそうなので。

あっ、それからこれは何処か別のところにも書いたかもしれないが、AI に処理をさせて嬉しいのは最初の数回だけで、その後は、なんというか虚無感のようなものが漂う。達成感がないのである。自分が行ったことは AI に指示を出しただけ。今は prompt の書き方などにも工夫のし甲斐があり、エージェントを効率よく動かすのに、ある程度の知識が必要ではあるが、そんなものは数年も経てば誰でもできるようになってしまい、そもそも AI を動かすのなんて携帯電話をかける程度のものになってしまうだろう。これをずっと繰り返していくと、理系(いや文系もか)人間には跡にどのような智慧が残るのだろうか?もちろん、効率を高めて余った時間を他のことに有効に使えるぐらい有能であれば、話は別であるが(私はそこまで器用ではないなあ)。

0 件のコメント: