差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
| aiを使ったデータ解析入門2025 [2025/09/18 15:09] – 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を使ってデータ解析を行う方法を紹介したいと思います。 | ||
| ## ChatGPTの利用例 | ## ChatGPTの利用例 | ||
| - | 2024年度は大学で契約しているMicrosoft Copilotと有料版のChatGPT Plusはそんなに違いがなかったけど、最近は明らかにChatGPTのほうが深く考えて(計算リソースをたくさん使ってくれて)、回答の精度が高い印象。無料版のChatGPTは計算リソースをほとんど使えないので、有料版のChatGPT Plusを使いましょう。 | + | 2024年度は大学で契約しているMicrosoft Copilot |
| - | 普段使う分には特に変更は必要ないけど、網羅的に最新情報を調べたい場合、例えば実験計画を考えているときにこういう条件で先行研究はあるかな?とかを調べたいときはDeep Researchが有効(具体例:「環境DNAで高等動物を網羅的に検出可能なプライマーは?」、「免疫染色してシングルセル化は可能か?([[https:// | + | 普段使う分には特に変更は必要ないけど、網羅的に最新情報を調べたい場合、例えば実験計画を考えているときにこういう条件で先行研究はあるかな?とかを調べたいときはDeep Researchが有効(具体例:「環境DNAで高等動物を網羅的に検出可能なプライマーは?」、「免疫染色してシングルセル化は可能か?[[https:// |
| {{: | {{: | ||
| + | Deep Researchほどたくさんの文献を調べる必要はないけど、もっと長く考えてほしい場合(例:「論文を要約しないで元の文章の通りに日本語訳をして」とか、「ChatGPTにアップロードした表に書いてある学名(100件ほど)を和名に変換して」とか)は、Thinkingモードをあらかじめ指定しておくほうが無難かも。標準(Auto)でも自動で切り替えてくれているとは思う。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | ## Codex CLIの利用例 | ||
| + | |||
| + | 自立実行型の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.正解のわかっているデータを既知の解析フローで処理させて、正解と同じ結果が得られるかどうかを見る。正解と違う結果が出た場合、正解を具体的に教えて解析フローのバグを直すように伝えると、ほとんどの場合完全自動で解析フローを再現してくれます。(なるべく具体的な解析フローや生の結果が出ている論文を選ぶのが良い。つまり、パイプラインを作ったというような論文をWEB版のChatGPTで検索して、そのパイプラインをセットアップして、パイプラインのテストデータで解析を実行して、と頼む感じ。) | ||
| + | |||
| + | - 2.単一のツールをとりあえず動かしたいとき。そのツールのセットアップ&READMEに書いてある内容のまま実行で良ければ、ほぼ問題なく実行してくれる。私はここまでの1,2の使いかたが中心です。 | ||
| + | |||
| + | - 3.ちょっとした解析プログラムを新規に作る必要があって、完全には正解がわからない場合。なるべく誤解なくAIに伝えるために、何をしてほしいのかプログラムの中身を具体的に丁寧に説明すること。プログラミングをしていない人には本当の意味でピンと来ないかもしれないけど、プログラムというのは書いたとおりにしか動きません。例えば「塩基配列の相同性検索をして」という場合、相補鎖はどうするのか、ACGT以外のNとか縮重塩基表記が来た場合はどうしたいのか、などなど、自分が入力するデータの中にある例外パターンはすべて書いてあげないと、少なくとも現時点では不十分な実装になることが多いです。これも来年はかなり考慮してくれるようになっているのかもしれませんが。。。完全な正解がわからなくても、別の解析ツールで一部は解析した結果が有ったり、部分的には手作業で正解データが作れる場合は、色々と指示を出しつつ、そのような結果になるように解析プログラムを作ってというのが手っ取り早いと思われます。(1.と同じですが、とにかくテストデータを作ること!) | ||
| + | |||
| + | - 4.正しい結果(テストデータ)がわかっておらず、ぼんやりと期待するイメージがある状態で、2個以上のツールを組み合わせて結果を出したい場合。(例:このFASTQファイルを使ってRNA-seq解析をして!とか) 結構よさげな結果を出してくれるけど、やはりどこかに問題があることが多い。また結果がよさげに見えるので、なおさら何が問題なのか気が付きにくい。対応としては、なるべく解析を小分けにして問題ないか確認できるようにする…ことだけど、そもそも全部の解析が終わらないと気が付かないことも多い。それでも、1ステップずつ検証用データを出力させて検証すべきだと思う。例えばRNA-seq解析をするなら、ステップ1:フィルタリング、ステップ2:マッピング、ステップ3:発現量算出、ステップ4:統計検定、といった解析が通常行われる。ここで、この例ならステップ1:フィルタリングで除去されたリード数割合、ステップ2:マッピングされたリード数割合、などをきちんと(あとからでも良いので)出力させる。例えば、マッピングされたリード数が10%しかない、と判明した場合、やはり何かおかしいと思って調べてみる感性が大事。codexは適切に聞けば教えてくれたり考慮して解析してくれることが多いけど、「なぜマップ率が10%しかないのですか?」みたいなぼんやりした質問では正解にたどり着けるか微妙な感じ。マッピングされないリードというのはどういう可能性を考えているのか具体化してそれを検証させるべき。例えば、コンタミがあってマップ率が低いと思うならコンタミの調査を命令する。もっと具体的にコンタミしていそうな生物名がわかるならばそういう情報も与えておく。ほかにもマップ率が低い原因として、ゲノムの完成度が低く欠損が多い、シーケンスデータとマッピングツールの組み合わせが悪い、などなど具体的に挙げてあげるとより正確に調査が進む。 | ||
| + | |||
| + | ## Codex CLIの練習問題 | ||
| + | |||
| + | 「1.メタゲノム解析(アンプリコン)」は学生実験で毎年行っている題材で、解析フローも単純なので、具体的に何をしないといけないかイメージできるのではないかと思います。それをやってみて、あとは2~4の中で自身の研究に近いテーマを解析してみてください。それぞれツールのセットアップ等含めてCodex CLIが数時間以上自動実行してくれることになるでしょう。 | ||
| + | |||
| + | ### 1. メタゲノム解析(アンプリコン)の場合(実行時間:30分ほど) | ||
| + | |||
| + | 使用するデータ:[[https:// | ||
| + | |||
| + | 指示(プロンプト)の例:「このフォルダにあるfqファイルはバクテリアの16S rRNAアンプリコンシーケンスデータです。ナノポアでシーケンスしています。これらをSILVAのメタゲノムデータベースを使って解析してください。」 | ||
| + | |||
| + | この例はAIにとっても簡単なようで、ある程度ナノポアに適切なツールや閾値で解析フローを組んでくれると思います。ただ、AIは指示に対して再現性があるわけではないので、皆さんがどのような結果を見ることになるのかはわかりません。。。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | 解析が終わると、上のような結果が出てきます。そうしたら、「今回の解析を再現するために解析手順をスクリプトにまとめて」と指示しておきましょう。 | ||
| + | |||
| + | |||
| + | ### 2. メタゲノム解析(ショットガン)の場合 | ||
| + | |||
| + | 使用するデータ:サーバにログインするとアクセスできる下記のフォルダーにあるfastq.gzファイルたち `/ | ||
| + | |||
| + | 欲しい結果:ショットガンメタゲノムの解析で、KEGGのエンリッチメント解析を行い、各サンプルで有意に充実しているKEGGモジュール | ||
| + | |||
| + | 多分使うように指定すると良いメタゲノム解析パイプライン:https:// | ||
| + | |||
| + | ### 3. RNA-seqの場合 | ||
| + | |||
| + | 使用するデータ:https:// | ||
| + | |||
| + | 論文の中で使用されているデータを取得して、といえば自動でデータをSRAからダウンロードしてくれるでしょう。 | ||
| + | |||
| + | 欲しい結果:図2にあるようなgillとfinで有意に遺伝子発現の変化がみられるGene Ontology (GO)のリスト。RNA-seqの解析ツールはWarapornさんの論文以降も進歩してきているので、論文に書いている解析フローを再現してほしいというよりは、最近の解析フローで再解析しても同じ結果が得られるのか見てほしいという意図です。 | ||
| + | |||
| + | ### 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, | ||