実験医学別冊:改訂 独習Pythonバイオ情報解析〜生成AI時代に活きるJupyter、NumPy、pandas、Matplotlib、Scanpyの基礎を身につけ、シングルセル、RNA-Seqデータ解析を自分の手で
実験医学別冊

改訂 独習Pythonバイオ情報解析

生成AI時代に活きるJupyter、NumPy、pandas、Matplotlib、Scanpyの基礎を身につけ、シングルセル、RNA-Seqデータ解析を自分の手で

  • 先進ゲノム解析研究推進プラットフォーム/編
  • 2025年01月24日発行
  • AB判
  • 446ページ
  • ISBN 978-4-7581-2278-8
  • 7,150(本体6,500円+税)
  • 在庫:あり
本書を一部お読みいただけます

第4章 Python 速習コース

新海典夫
(理化学研究所/国立がん研究センター)

さて,本章ではPython3の基本文法について「軽く」さらっておきます.あくまで本書を読み進めるうえで,押さえておいたほうがよい文法などについて述べておく,というものです.すでにPythonを習得済みの方にとっては,当然ご存知の事項も多く,退屈に感じられるかもしれません(もちろん飛ばしてしまってもかまいません).このままお読みになる方は,次の段階への準備運動,次の章からの講義への露払いということで,しばしお付き合いいただけましたら幸いです.

一方,まだPythonはちょっと……とか,興味があるけど触ったことはないな……という感じの人でも,ここの内容をこなせばとりあえず次の章への準備はできます.CやPerl,Rなど,他の言語を知っている人も,Pythonの違いを知ることができると思います.ともあれ,「どっかでやった」程度の認識って大きいです.紙面の都合上,詳細な解説は類書に譲りますが,まぁこんなもの,というのはやっていればたぶんわかってくるかと.本章の本題は,あくまで「道具として」Python3を使えるように押さえておく,ということなのですから.

お願いしたいのは,プログラミングが初めての方は,ぜひJupyter Notebookで新しいノートを立ち上げ,コピペではなく,自分でコードを打ち込んで動きを実感してみてください,ということです.とにかくタイピングでコードを打ち込むことに慣れるのを目的に,ひたすら打ち込んでいっていただければ幸いです.要は指の運動です.細かい説明は気にせず,とにかく打ち込む.そして,プログラムがその通りに動くことを実感する.それで今は大丈夫です.そのほうが慣れます.

また,本章を読む際には,ぜひ,「第2章生成AIを用いたプログラミング」の内容も意識していただきながら,実際にこちらの実習にとり組むとよいでしょう.

参照先ではLLMを用いて,本書の後半でとりあげるようなかなり高度なプログラミング実装支援をさせる事例が紹介されています.ちゃんと使えばこういうこともできるとなりますね.一方,言い方はあれですが,もっとプリミティブな,原始的な運用でも十分LLMは役に立ってくれます

本章を読むと最初にabs(-7)という部分が出てきます.まあ当然本の中で説明しますが,試しにchatGPT等にこのまま聞いてしまいましょう.「abs(-7)って何?」と.何かしら答えてくれることかと思います.この程度でもよい.というか恥ずかしがらずに聞けるのがよい.雑でよいのです.「""(ダブルクォーテーション)と''(シングルクオーテーション)でのテキスト行の違いは?」(後で簡単に説明します) みたいなものだっていい.エラーメッセージが吐かれたら,「英語は読みたくない」と言ってそれをそのまま張り付けて「これ何よ?」って聞いたってよいんです.お気軽に行きましょう.そこから,きちんと高度な運用に進んでいきましょう.

もちろん,ハルシネーション(AIによる幻覚)等,常にその内容が正しいかどうかという問題は付き纏います.だからこそこういったきちんとした教科書で勉強するのも大切,となるのかもしれません.

なお,本章の内容は,講習会では1時間半の講義時間で,受講者の皆さんに,説明しながら実際に打ち込んでもらいました.つまり本書を読んでいる皆さんも,本章部分は1~4時間か,それくらいの時間でひとまず通せるはずです.大丈夫!注1)

それと,本章において,脚注の形でいくつか説明や参考文献などを参照する場合がありますが,とりあえずは気にせずどんどん進んでください.あとで細かい話を見ておきたかったら見直す程度で問題ありません.疑問点が出てくる場合,類書を見たりググったりすればその解消もできると思いますが,それは,それこそ本書の後半部分までトライしてからでよいかな,と個人的には思います.本章は,今後の章に向けての露払いなわけですから.

というわけで頑張ってタイピングしよう!

4.1はじめに

さて,Jupyter Notebookの画面を開きましょう.なお,プログラミングは初めてといった方に補足しておきますと,以下の打ち込みにおいて,

val_int = 1 # これで1を紐づけします

のようにある場合には,#(ハッシュ)以下はコメントですので,入力しなくて大丈夫です.何かメモを書き込んでも無視されるので,皆さんが勉強する際に必要に応じて使ってみてください.なお,

コード文 # コメント

という形のコメントをインラインコメント

# コメント
コード文
コード文

という形のコメントをブロックコメントと言います.そして,Pythonのコードを記載していくスタイル注2)としては,あまりインラインコメントは多用しないことが推奨されていたりもします.

本稿ではコードに細かな説明を付けていくという目的から,まさにインラインコメントを「多用」してしまっておりますが,皆さんがコメントを記載する際はブロックコメントを基本に,ぐらいの意識は持っていてもよいかも,とも思います.

4.2関数とメソッド

まず,ほとんど前置きとして「関数とメソッド」について簡単に説明しておきます(これらが大体何のことかわかる,という人は飛ばしても大丈夫です).本書では操作の中で,関数メソッドという単語を使います.

4.2.1関数(functions)

どちらもデータの処理に関するものと受け取っておいてください注3).とりあえず,関数は,

関数名(中に何かを書くか,もしくは空白)

というふうに,関数名+()(丸カッコ)内に変数など,という形で記載します.以下に関数の例を示します.入力して実行(セル内でShift-Return/Enter)してみてください.

これはabs()関数といって,値の絶対値を返す関数です.-7を入力とし,絶対値の7が出力されています.

こんなふうに,普通に正の値を入力した場合はそのまま返すわけです注4)

もう少しだけ.print()関数というものがあります注5).簡単に言うと,括弧内の「値」を出力します(オプションをいろいろと指定すれば,いろいろな表現が可能になりますが,それはひとまず置いておきます).

ここでは,test_strの中身(文字列'Hello Bio!')を出力しろ,という命令を実行しています.これで画面への出力を行うわけです.ただし,Jupyter Notebookの場合は,変数を入力するとそのまま中身を返してくれたりもするので,以下のように書くだけでも大丈夫だったりします.

先ほどと微妙に表記が違っているのは,あくまでセルの中身を評価した結果が返ってくるので,「str型(文字列)」としての'Hello Bio!'が返ってきているからです.この違いをもう少しだけ見ておきましょう.ちょっと次のコードを打ってみてください.細かい意味については今は気にしなくて大丈夫です(入力4-6はコードの実行に成功しても画面に表示はありません).

さて,array1print()してみましょう.

後ほど触れますが,これは2行2列の行列です.さて次に,先ほどと同様に,シンプルにarray1と打ってみます.

先ほどと違って,arrayという表記がついています.これは,この中身自体がarray型というものである,といった意味になるわけです.他にもこんな違いもあります.Jupyter Notebookではコードセルを実行すればその結果が返ってきますが,それは最後の行の結果になります(第3章3.1.3参照).すなわち,

などと1つのコードセル内に記入すれば,

というふうに最終行のval_bのみが返ってくることになります.実行する1つのコードセル内で両方を表示させたければ,

といったやり方等を行うこととなるわけです(ただし,以下では話を簡単にするために,基本的には,結果を得る際にprint()関数を使わない方向でやっていきます).

なお,このような,abs()print()のようにはじめから用意されている関数を組み込み関数(built-in function)注6)と言います.あとから説明しますが,自分で関数を作ることもできます.それと区別した言い方なわけですね.

4.2.2メソッド(method)

一方メソッド

変数etc. メソッド名(何か書いたり,書かなかったり)

というふうに,間に.(ピリオド)を置き,その後ろにメソッド名という形で記載します.メソッドの例です.入力してみてください.

ここで使っているのは,str型のメソッドupper()です.ご覧の通り,文字列を大文字に変換したものを出力します.さらに,こんなふうにも書けます.

replace()メソッドは,文字列を置換するメソッドです.ここでは「'Hello Bio'を大文字化したもの」に対して,「BIO→INFOへの置換」を行っています.

こんなふうに重ねがけみたいな書き方もできるわけです(メソッドチェーン第6章6.2.1も参照).もう1つ付け加えておくと,メソッドは,ある対象に「付属する機能」とも捉えられます.upper()replace()はここではstr型に「付属する機能」として実行しています.とりあえず,「そういうもの」として受け取っておいていただければ幸いです(なお,こういった「はじめから用意されている」メソッドもまた,関数同様に「組み込みメソッド」という言い方もします).さぁ,最低限の前置きはこれくらいとして,次に行きましょう.

続きは書籍にてご覧ください
書籍概略はこちら
実験医学別冊:改訂 独習Pythonバイオ情報解析〜生成AI時代に活きるJupyter、NumPy、pandas、Matplotlib、Scanpyの基礎を身につけ、シングルセル、RNA-Seqデータ解析を自分の手で
実験医学別冊

改訂 独習Pythonバイオ情報解析

生成AI時代に活きるJupyter、NumPy、pandas、Matplotlib、Scanpyの基礎を身につけ、シングルセル、RNA-Seqデータ解析を自分の手で

  • 先進ゲノム解析研究推進プラットフォーム/編
  • 7,150(本体6,500円+税)
  • 在庫:あり
拡大画像