差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| aiを使ったデータ解析入門2025 [2025/09/18 16:45] – suikou | aiを使ったデータ解析入門2025 [2025/10/10 02:38] (現在) – suikou | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| # AIを使ったデータ解析入門 | # AIを使ったデータ解析入門 | ||
| - | ウェブブラウザで利用可能なChatGPT等のチャットボットは皆さん使ったことがあると思います(ありますよね?)。より自動化されるように外部プログラムを自由に使う権限を持たせたエージェントというプログラムがここ半年ほどで急速に進化してきて、8月に発表されたChatGPT5と組み合わせたCodex CLIという自動コマンドライン操作プログラムはもはや新人のプログラマーを駆逐しています(アメリカではすでにプログラマーの求人が2割ほど減っているとか)。 | + | ウェブブラウザで利用可能なChatGPT等のチャットボットは皆さん使ったことがあると思います(ありますよね?)。より自動化されるように外部プログラムを自由に使う権限を持たせたエージェントというプログラムがここ半年ほどで急速に進化してきて、8月に発表されたChatGPT5と組み合わせたCodex CLIという自動コマンドライン操作プログラムはもはや新人のプログラマーを駆逐しています。アメリカではすでにプログラマーの求人が2割ほど減っているとか。 |
| ここではChatGPTを研究で使う例を紹介しつつ、新人プログラマー以上の能力を持つCodex CLIを使ってデータ解析を行う方法を紹介したいと思います。 | ここではChatGPTを研究で使う例を紹介しつつ、新人プログラマー以上の能力を持つCodex CLIを使ってデータ解析を行う方法を紹介したいと思います。 | ||
| 行 11: | 行 12: | ||
| {{: | {{: | ||
| + | |||
| + | Deep Researchほどたくさんの文献を調べる必要はないけど、もっと長く考えてほしい場合(例:「論文を要約しないで元の文章の通りに日本語訳をして」とか、「ChatGPTにアップロードした表に書いてある学名(100件ほど)を和名に変換して」とか)は、Thinkingモードをあらかじめ指定しておくほうが無難かも。標準(Auto)でも自動で切り替えてくれているとは思う。 | ||
| + | |||
| + | {{: | ||
| + | |||
| ## Codex CLIの利用例 | ## Codex CLIの利用例 | ||
| - | 自立実行型のAIで、うまく指示を出してあげると自動でほとんどやってくれます。適切に指示を出してあげたら、人類以上の速度で解析プログラムを作ってくれたり、面倒な解析環境のセットアップを自動でしてくれるので、私自身は今は何か新しく解析しようと思ったらまずはCodex CLIに投げています。ただし、何人かに使ってもらった様子を見ているとうまくいくケースといかないケースがあったので、書いてみると | + | 自立実行型のAIで、うまく指示を出してあげると自動でほとんどやってくれます。適切に指示を出してあげたら、人類以上の速度で解析プログラムを作ってくれたり、面倒な解析環境のセットアップを自動でしてくれるので、私自身は今は何か新しく解析しようと思ったらまずはCodex CLIに投げています。ただし、何人かに使ってもらった様子を見ているとうまくいくケースといかないケースがありました。 |
| 上手くいくケース:指示を出す人が作業内容を具体的にイメージできているとき。少なくとも最初のほうは自分でやってみようとしてコマンド、ライブラリーを勉強していた場合。 | 上手くいくケース:指示を出す人が作業内容を具体的にイメージできているとき。少なくとも最初のほうは自分でやってみようとしてコマンド、ライブラリーを勉強していた場合。 | ||
| 行 24: | 行 30: | ||
| codexを使う基本的な流れは、まず研究室のサーバに接続して、適当なフォルダーを作ってその中に必要なシーケンスデータなど解析に必要なプライベートなファイルを入れておきます。そして、 | codexを使う基本的な流れは、まず研究室のサーバに接続して、適当なフォルダーを作ってその中に必要なシーケンスデータなど解析に必要なプライベートなファイルを入れておきます。そして、 | ||
| ``` | ``` | ||
| - | cocdex | + | codex --dangerously-bypass-approvals-and-sandbox --search |
| ``` | ``` | ||
| と入力してcodexを起動し、例えば | と入力してcodexを起動し、例えば | ||
| 行 34: | 行 40: | ||
| その際の注意事項というか、行ったほうが良いこととして、解析が完了して結果ファイルが出力されても、解析の手順は出力されないことが多いです。ですので、「これまでに行った解析手順を入力ファイルを変更しても実行できるようにスクリプトとして保存して」などと指示を出して、解析手順を保存させましょう。その際、別のターミナルを開いて、そのスクリプトで本当に再現できるのかをまずは確認しておきましょう。 | その際の注意事項というか、行ったほうが良いこととして、解析が完了して結果ファイルが出力されても、解析の手順は出力されないことが多いです。ですので、「これまでに行った解析手順を入力ファイルを変更しても実行できるようにスクリプトとして保存して」などと指示を出して、解析手順を保存させましょう。その際、別のターミナルを開いて、そのスクリプトで本当に再現できるのかをまずは確認しておきましょう。 | ||
| - | codexに解析してもらった際の悩みどころとしては、結果自体は嘘か本当かわからないけど出てくるので、それが正しいのか検証しないといけないことです。他人の書いたスクリプトを読んで理解するのはどんな人でも時間のかかる作業なので、AIがたくさん書いてくるスクリプトを人類が読んで検証するのは現実的ではありません。(もちろん大事そうなところを読んで理解しようとしたりはしますが、せいぜい使っているツール名やライブラリー名を見る程度です。) | + | codexに解析してもらった際の悩みどころとしては、結果自体は嘘か本当かわからないけど出てくるので、それが正しいのか検証しないといけないことです。他人の書いたスクリプトを読んで理解するのはどんな人でも時間のかかる作業なので、AIがたくさん書いてくるスクリプトを人類が読んで検証するのは(今はまだ可能かもしれないけど)今後は現実的ではないでしょう。現時点でなら一部だけ読んで修正したほうが修正が速い場合もかろうじてありましたが、まだ自立型AIへの指示の出し方を私がわかっていないだけという気もします。 |
| - | そこで、現実的にはどうやって確認するかですが、おそらくAIに楽に任せられるほうから紹介すると、 | + | さて、そんな状況で現実的にはどうやってAIが書いたプログラムや解析方法が正しいのか確認するかですが、おそらくAIに楽に任せられるほうから紹介すると、 |
| - | - 1.正解がわかっているデータを既知の解析フローで処理させて、正解と同じ結果が得られるかどうかを見る。正解と違う場合は正解を教えて解析フローのバグを直すように伝えると、ほとんどの場合完全自動で解析フローを再現してくれます。(論文のデータを使って解析フローを作ってから、自分のデータを処理する場合など。なるべく具体的な解析フローや生の結果が出ている論文を選ぶのが良い) | + | - 1.正解のわかっているデータを既知の解析フローで処理させて、正解と同じ結果が得られるかどうかを見る。正解と違う結果が出た場合、正解を具体的に教えて解析フローのバグを直すように伝えると、ほとんどの場合完全自動で解析フローを再現してくれます。(なるべく具体的な解析フローや生の結果が出ている論文を選ぶのが良い。つまり、パイプラインを作ったというような論文をWEB版のChatGPTで検索して、そのパイプラインをセットアップして、パイプラインのテストデータで解析を実行して、と頼む感じ。) |
| - | - 2.そもそも解析フローを新規に作る必要があって本番データの正解がわからない場合は、まずは小さなデータで良いので、想定される全パターンを網羅した正しいテスト結果を手作業などで作成しておいてから、codexにそのデータを使って解析するように指示する。(プログラミングにおける、いわゆるテスターのお仕事ですね。お仕事としては嫌がる人が多かったのですが、今後はテスターが一番大事なのかなと思う今日この頃。) | + | - 2.単一のツールをとりあえず動かしたいとき。そのツールのセットアップ&READMEに書いてある内容のまま実行で良ければ、ほぼ問題なく実行してくれる。私はここまでの1,2の使いかたが中心です。 |
| - | - 3.codex自身に正しい結果なのかをわかりやすく示すためのサマリーや図を作らせる。この方法は結果が正しいかどうかを人間が判断してフィードバックする必要があるので、人間側の対応コストが高い。解析フローの具体的なイメージがほとんどない状態で始めた解析はこのパターンになりがち。指示が的確で、解析フローをわかりやすくcodexに伝えることが出来る技量があればこの方法でも問題はない。ただ、AIに的確に指示を出すというのはなかなか難しく、最低限使用するツールやデータベースは指定するほうが無難。つまり自分で手動で解析できる程度の知識は必要ともいえる。 | + | - 3.ちょっとした解析プログラムを新規に作る必要があって、完全には正解がわからない場合。なるべく誤解なくAIに伝えるために、何をしてほしいのかプログラムの中身を具体的に丁寧に説明すること。プログラミングをしていない人には本当の意味でピンと来ないかもしれないけど、プログラムというのは書いたとおりにしか動きません。例えば「塩基配列の相同性検索をして」という場合、相補鎖はどうするのか、ACGT以外のNとか縮重塩基表記が来た場合はどうしたいのか、などなど、自分が入力するデータの中にある例外パターンはすべて書いてあげないと、少なくとも現時点では不十分な実装になることが多いです。これも来年はかなり考慮してくれるようになっているのかもしれませんが。。。完全な正解がわからなくても、別の解析ツールで一部は解析した結果が有ったり、部分的には手作業で正解データが作れる場合は、色々と指示を出しつつ、そのような結果になるように解析プログラムを作ってというのが手っ取り早いと思われます。(1.と同じですが、とにかくテストデータを作ること!) |
| - | - 4.codexが出してくる結果(の一部)を人間が手作業(といってもawkなど)で検証したり、スクリプトの中身を読んで非常に良い指示を追加する。AIが賢くなるほど、人間が検証するよりはAIに任せたほうが間違いないような気はするけど、現状ではAIに指示を変えて5回ほど修正を命じても、結果が修正されなくなる時があり、その時はこうした対応が必須。AIへの伝え方が悪いと言われたらそうかもしれない。 | + | - 4.正しい結果(テストデータ)がわかっておらず、ぼんやりと期待するイメージがある状態で、2個以上のツールを組み合わせて結果を出したい場合。(例:このFASTQファイルを使ってRNA-seq解析をして!とか) 結構よさげな結果を出してくれるけど、やはりどこかに問題があることが多い。また結果がよさげに見えるので、なおさら何が問題なのか気が付きにくい。対応としては、なるべく解析を小分けにして問題ないか確認できるようにする…ことだけど、そもそも全部の解析が終わらないと気が付かないことも多い。それでも、1ステップずつ検証用データを出力させて検証すべきだと思う。例えばRNA-seq解析をするなら、ステップ1:フィルタリング、ステップ2:マッピング、ステップ3:発現量算出、ステップ4:統計検定、といった解析が通常行われる。ここで、この例ならステップ1:フィルタリングで除去されたリード数割合、ステップ2:マッピングされたリード数割合、などをきちんと(あとからでも良いので)出力させる。例えば、マッピングされたリード数が10%しかない、と判明した場合、やはり何かおかしいと思って調べてみる感性が大事。codexは適切に聞けば教えてくれたり考慮して解析してくれることが多いけど、「なぜマップ率が10%しかないのですか?」みたいなぼんやりした質問では正解にたどり着けるか微妙な感じ。マッピングされないリードというのはどういう可能性を考えているのか具体化してそれを検証させるべき。例えば、コンタミがあってマップ率が低いと思うならコンタミの調査を命令する。もっと具体的にコンタミしていそうな生物名がわかるならばそういう情報も与えておく。ほかにもマップ率が低い原因として、ゲノムの完成度が低く欠損が多い、シーケンスデータとマッピングツールの組み合わせが悪い、などなど具体的に挙げてあげるとより正確に調査が進む。 |
| - | その他、codexが解析に行き詰ってきたら、思考モードをmediumからhighに変更する(プロンプトで/ | + | ## Codex CLIの練習問題 |
| - | {{: | + | 「1.メタゲノム解析(アンプリコン)」は学生実験で毎年行っている題材で、解析フローも単純なので、具体的に何をしないといけないかイメージできるのではないかと思います。それをやってみて、あとは2~4の中で自身の研究に近いテーマを解析してみてください。それぞれツールのセットアップ等含めてCodex CLIが数時間以上自動実行してくれることになるでしょう。 |
| - | ## Codex CLIの練習問題 | + | ### 1. メタゲノム解析(アンプリコン)の場合(実行時間:30分ほど) |
| - | 「1.メタゲノム解析(アンプリコン)」は学生実験で毎年行っている題材で、解析フローも単純なので、具体的に何をしないといけないかイメージできるのではないかと思います。それをやってみて、あとは2~4の中で自身の研究に近いテーマを解析してみてください。 | + | 使用するデータ:[[https:// |
| - | ### 1. メタゲノム解析(アンプリコン)の場合 | + | 指示(プロンプト)の例:「このフォルダにあるfqファイルはバクテリアの16S rRNAアンプリコンシーケンスデータです。ナノポアでシーケンスしています。これらをSILVAのメタゲノムデータベースを使って解析してください。」 |
| + | この例はAIにとっても簡単なようで、ある程度ナノポアに適切なツールや閾値で解析フローを組んでくれると思います。ただ、AIは指示に対して再現性があるわけではないので、皆さんがどのような結果を見ることになるのかはわかりません。。。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | 解析が終わると、上のような結果が出てきます。そうしたら、「今回の解析を再現するために解析手順をスクリプトにまとめて」と指示しておきましょう。 | ||
| ### 2. メタゲノム解析(ショットガン)の場合 | ### 2. メタゲノム解析(ショットガン)の場合 | ||
| + | 使用するデータ:サーバにログインするとアクセスできる下記のフォルダーにあるfastq.gzファイルたち `/ | ||
| + | 欲しい結果:ショットガンメタゲノムの解析で、KEGGのエンリッチメント解析を行い、各サンプルで有意に充実しているKEGGモジュール | ||
| + | |||
| + | 多分使うように指定すると良いメタゲノム解析パイプライン:https:// | ||
| ### 3. RNA-seqの場合 | ### 3. RNA-seqの場合 | ||
| + | 使用するデータ:https:// | ||
| + | 論文の中で使用されているデータを取得して、といえば自動でデータをSRAからダウンロードしてくれるでしょう。 | ||
| + | |||
| + | 欲しい結果:図2にあるようなgillとfinで有意に遺伝子発現の変化がみられるGene Ontology (GO)のリスト。RNA-seqの解析ツールはWarapornさんの論文以降も進歩してきているので、論文に書いている解析フローを再現してほしいというよりは、最近の解析フローで再解析しても同じ結果が得られるのか見てほしいという意図です。 | ||
| ### 4. small RNA解析の場合 | ### 4. small RNA解析の場合 | ||
| + | 使用するデータ、解析フロー: https:// | ||
| + | |||
| + | 論文の中で使用されているデータを取得して、といえば自動でデータをSRAからダウンロードしてくれるでしょう。 | ||
| + | |||
| + | 欲しい結果:論文の図3のピンポンペアの検証図 | ||
| + | |||
| + | |||
| + | |||
| + | ## Tips | ||
| + | |||
| + | ### 再開 | ||
| + | |||
| + | - Codex CLIを停止させるときCtrl-cを使うけど、間違ってCtrl-cを押して停止させてしまった場合に、前回の続きからCodex CLIとの対話を再開したい場合は、```codex --dangerously-bypass-approvals-and-sandbox --search resume```とすると、どの会話の続きを行いたいか選択肢が出てくるので、続けたい会話を選べばよい。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ### より賢くする | ||
| + | |||
| + | Codexが解析に行き詰ってきたら、思考モードをmediumからhighに変更する(プロンプトで/ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ### リモートデスクトップで日本語入力をする | ||
| + | 画面右上に「あ」、「_A」といったアイコンが表示されているか確認する。表示されていないと日本語入力できないので表示されていない人は教えてください。 | ||
| + | {{: | ||
| + | 日本語入力切替はCtrl-Space, | ||