ウェブブラウザで利用可能なChatGPT等のチャットボットは皆さん使ったことがあると思います(ありますよね?)。より自動化されるように外部プログラムを自由に使う権限を持たせたエージェントというプログラムがここ半年ほどで急速に進化してきて、8月に発表されたChatGPT5と組み合わせたCodex CLIという自動コマンドライン操作プログラムはもはや新人のプログラマーを駆逐しています。アメリカではすでにプログラマーの求人が2割ほど減っているとか。
ここではChatGPTを研究で使う例を紹介しつつ、新人プログラマー以上の能力を持つCodex CLIを使ってデータ解析を行う方法を紹介したいと思います。
2024年度は大学で契約しているMicrosoft Copilot Educationと有料版のChatGPT Plusはそんなに違いがなかったけど、最近は明らかにChatGPTのほうが深く考えて(計算リソースをたくさん使ってくれて)、回答の精度が高い印象。無料版のChatGPTは計算リソースをほとんど使えないので、有料版のChatGPT Plusを使いましょう。
普段使う分には特に変更は必要ないけど、網羅的に最新情報を調べたい場合、例えば実験計画を考えているときにこういう条件で先行研究はあるかな?とかを調べたいときはDeep Researchが有効(具体例:「環境DNAで高等動物を網羅的に検出可能なプライマーは?」、「免疫染色してシングルセル化は可能か?回答例(←細胞を分けてから染色するんだよときちんと回答してくれているように見える。通常モードではこの聞き方では知りたいプロトコールは出てこないと思う。)」など)。ただし、複数個所から同時に同じアカウントにログインしているときなどはDeep Researchボタンを押してもDeep Researchをしてくれないみたい。Deep Researchの上限は1か月で25回まで。
Deep Researchほどたくさんの文献を調べる必要はないけど、もっと長く考えてほしい場合(例:「論文を要約しないで元の文章の通りに日本語訳をして」とか、「ChatGPTにアップロードした表に書いてある学名(100件ほど)を和名に変換して」とか)は、Thinkingモードをあらかじめ指定しておくほうが無難かも。標準(Auto)でも自動で切り替えてくれているとは思う。
自立実行型のAIで、うまく指示を出してあげると自動でほとんどやってくれます。適切に指示を出してあげたら、人類以上の速度で解析プログラムを作ってくれたり、面倒な解析環境のセットアップを自動でしてくれるので、私自身は今は何か新しく解析しようと思ったらまずはCodex CLIに投げています。ただし、何人かに使ってもらった様子を見ているとうまくいくケースといかないケースがありました。
上手くいくケース:指示を出す人が作業内容を具体的にイメージできているとき。少なくとも最初のほうは自分でやってみようとしてコマンド、ライブラリーを勉強していた場合。
上手くいかないケース:指示を出す人が部分的にでも手動で結果を計算することが出来ていない状態。必要なファイルや具体的な処理フローが一切わかっていない場合。
まだ現時点ではAIは新人データサイエンティスト程度だと思って、色々と教えてあげるものだと思ったほうが良いでしょう。(来年はもう違うかもしれませんが…)
codexを使う基本的な流れは、まず研究室のサーバに接続して、適当なフォルダーを作ってその中に必要なシーケンスデータなど解析に必要なプライベートなファイルを入れておきます。そして、
codex --dangerously-bypass-approvals-and-sandbox --search
と入力してcodexを起動し、例えば
「このフォルダーにあるFASTQファイルはアコヤガイを使った実験1時間後と12時間後のRNA-seqのデータです。これらのファイルを解析して」
などと入力すると、codexは起動したフォルダー以下のファイルを丁寧に調べて解析してくれます。
その際の注意事項というか、行ったほうが良いこととして、解析が完了して結果ファイルが出力されても、解析の手順は出力されないことが多いです。ですので、「これまでに行った解析手順を入力ファイルを変更しても実行できるようにスクリプトとして保存して」などと指示を出して、解析手順を保存させましょう。その際、別のターミナルを開いて、そのスクリプトで本当に再現できるのかをまずは確認しておきましょう。
codexに解析してもらった際の悩みどころとしては、結果自体は嘘か本当かわからないけど出てくるので、それが正しいのか検証しないといけないことです。他人の書いたスクリプトを読んで理解するのはどんな人でも時間のかかる作業なので、AIがたくさん書いてくるスクリプトを人類が読んで検証するのは(今はまだ可能かもしれないけど)今後は現実的ではないでしょう。現時点でなら一部だけ読んで修正したほうが修正が速い場合もかろうじてありましたが、まだ自立型AIへの指示の出し方を私がわかっていないだけという気もします。 さて、そんな状況で現実的にはどうやってAIが書いたプログラムや解析方法が正しいのか確認するかですが、おそらくAIに楽に任せられるほうから紹介すると、
「1.メタゲノム解析(アンプリコン)」は学生実験で毎年行っている題材で、解析フローも単純なので、具体的に何をしないといけないかイメージできるのではないかと思います。それをやってみて、あとは2~4の中で自身の研究に近いテーマを解析してみてください。それぞれツールのセットアップ等含めてCodex CLIが数時間以上自動実行してくれることになるでしょう。
使用するデータ:2019年の学生実験のデータ
指示(プロンプト)の例:「このフォルダにあるfqファイルはバクテリアの16S rRNAアンプリコンシーケンスデータです。ナノポアでシーケンスしています。これらをSILVAのメタゲノムデータベースを使って解析してください。」
この例はAIにとっても簡単なようで、ある程度ナノポアに適切なツールや閾値で解析フローを組んでくれると思います。ただ、AIは指示に対して再現性があるわけではないので、皆さんがどのような結果を見ることになるのかはわかりません。。。
解析が終わると、上のような結果が出てきます。そうしたら、「今回の解析を再現するために解析手順をスクリプトにまとめて」と指示しておきましょう。
使用するデータ:サーバにログインするとアクセスできる下記のフォルダーにあるfastq.gzファイルたち /suikou/files/m64g/backup/rawdata/2023-04-04_Rabeb-Metagenome/JN00012444/rawdata/
欲しい結果:ショットガンメタゲノムの解析で、KEGGのエンリッチメント解析を行い、各サンプルで有意に充実しているKEGGモジュール
多分使うように指定すると良いメタゲノム解析パイプライン:https://github.com/borenstein-lab/MetaLAFFA
使用するデータ:https://www.mdpi.com/2079-7737/8/2/21 (研究室OGのWaraporn Kraitavinさんの論文)
論文の中で使用されているデータを取得して、といえば自動でデータをSRAからダウンロードしてくれるでしょう。
欲しい結果:図2にあるようなgillとfinで有意に遺伝子発現の変化がみられるGene Ontology (GO)のリスト。RNA-seqの解析ツールはWarapornさんの論文以降も進歩してきているので、論文に書いている解析フローを再現してほしいというよりは、最近の解析フローで再解析しても同じ結果が得られるのか見てほしいという意図です。
使用するデータ、解析フロー: https://www.frontiersin.org/journals/marine-science/articles/10.3389/fmars.2021.730556/full (研究室OBのSongqian Huangさんの論文)
論文の中で使用されているデータを取得して、といえば自動でデータをSRAからダウンロードしてくれるでしょう。
欲しい結果:論文の図3のピンポンペアの検証図
codex --dangerously-bypass-approvals-and-sandbox --search resumeとすると、どの会話の続きを行いたいか選択肢が出てくるので、続けたい会話を選べばよい。Codexが解析に行き詰ってきたら、思考モードをmediumからhighに変更する(プロンプトで/modelと入力してから選択)と乗り越えられることがあるかもしれません。私は回答精度が上がっているかはよくわかりませんでしたが、highが良いと言っている人と、mediumのほうで十分だと言っている人たちがいます。