生物化学実験法 Excel/VBA実習 2016/4/11(月)、4/18(月)
担当:豊島 有、飯野
雄一
時間:各回13:00-16:40
実習手順書
<実習の内容はこのマニュアル、プレゼンともにhttp://tinyurl.com/seika-cにあります。早速Webブラウザでアクセスしてブックマークしておきましょう。>
【概要】
Excelの使い方、グラフの書き方、関数による計算をマスターする。
さらに、Excel VBAによる簡単なプログラミングの練習を行う。
酵母の細胞周期のマイクロアレイデータと、Excelのセルを用いた描画を主な題材とします。
サンプルとして各ステップの作成ファイル、結果の例がリンクしてあります。途中でつまずいたら、その後の演習のためにサンプルファイルからスタートして構いません。
0)起動と環境設定
iMac端末のスイッチは、モニタの裏面、表から見て左下の位置に電源ボタンがあります。
電源を入れると、Mac(OS
10.11)とWindows(Windows 10)の選択画面が出ます。本演習はWindows版で行いますが、Macの操作に慣れていて、そちらの方がいいという方はMacを使っても構いません。ただし、教師用PCでお見せする操作はすべてWin版、マニュアルも基本的にWin版での表示となります。
WinかMacを選択すると、ECCSのユーザー名とパスワード入力を求められた後、OSが起動します。
ECCSのWin版、Mac版ともOffice2016(Excel2016)がインストールされています。
注) ECCSのキーボードはキー配置や刻印が少し特殊なので注意してください。
・ キー右下に刻印されている機能は「Fn」キーと同時押しすることで利用できます。(例 Fn + ▶▶ → F5)
Fnキーはキーボードの右側上段のDeleteキーの上にあります。
・ Ctrlキー (Controlキー) はキーボード左端中段にあります。
・ Altキー はキーボード左端下段にあります。
・ Windowsキーは「⌘」と刻印されています(スペースキーの2つ隣)。
【Windows 10の基本操作】
☆ 画面左下隅のWindowsマークをスタートメニューという。これをクリックすることにより、すべてのファイルやアプリケーションに到達することができる。Windowsキー(⌘ キー)を押すのでも同じ。
☆ スタートメニューから右に伸びるバーをタスクバーと言う。よく使うアプリケーションをタスクバーに並べることができる(アプリケーションアイコンをドラッグしてタスクバーに入れる;同様の操作でデスクトップにドラッグして置くこともできる。)
☆ スタートメニューをクリック(またはWindowsキー押下)して開くウィンドウの左の列にアプリケーションやエクスプローラなどが集約されている。右の列はよく使うアプリなどをピン留めしておく場所。
☆ ファイルを探しに行くとき:スタートメニュー左列の「エクスプローラ」をクリックするとファイルが一覧できる。
☆ アプリケーションの起動:スタートメニュー→左列の「すべてのアプリ」をクリック。タスクバーまたはデスクトップにアプリケーションアイコンがあればそれをダブルクリックしてもよい。
☆ ウィンドウがたくさん開いていて、別のウィンドウを手前に表示させたいときは、タスクバーのアプリケーション/フォルダ アイコンをクリック。開いているフォルダを順番に表示させて選択するにはAlt+Tabを押す。
☆ 文字の入力のしかた:スペースキーの左右のキーが全角日本語(右側のKanaキー)と半角英語(左側のキー)の切り替え。全角日本語入力後、F6でひらがな、F7でカタカナ、F8で半角カタカナ、F10で半角英数に変換される。スペースキーにより漢字変換、Shift+矢印で分節区切りの変更、矢印で対象文節の移動。
☆ 他のショートカットキー:コピー=Ctrl+C、ペースト=Ctrl+V、カット=Ctrl+X、すべて選択=Ctrl+A、ウィンドウを閉じる=Ctrl+W(またはウィンドウ右上の赤い×ボタン)、アプリケーション終了=Alt+F4
☆ アプリケーションの強制終了:Shift+Ctrl+Escでタスクマネージャーを開き、終了するアプリケーションを選択して「タスクの終了」。またはCtrl+Alt+Del。タスクバーのアプリケーションアイコンを右クリックして終了を選択してもよい。
☆ 演習用パソコンで動きが極端に遅くなることがあります。この場合はログアウトして再度ログインしてください。
【Excelの設定】
・ Excelの環境設定を行います。Excelを立ち上げ、(Excelブックを選択し)「ファイル」/「オプション」で開くウィンドウの「基本設定」で「新しいワークシートの既定のビュー」を「標準ビュー」にする(たぶんデフォルトでそうなっている)。
・ 次に後で使う数式バーを表示させておきます。「表示」で「数式バー」にチェックを入れます。
【Webページの閲覧とファイルのダウンロードのしかた】
・ Internet Explorerで、リンク先ぺージを新たなウィンドウで開くには、新たなタブで開く方法と新たなウィンドウで開く方法とがある。右クリックで「新しいタブで開く」または「新しいウィンドウで開く」を選択。あるいはShiftを押しながらクリックまたはCtrlを押しながらクリック。うまく使い分けるとよい。ウィンドウを開くだけであればCtrl+NまたはCtrl+T。タブを切り替えるにはCtrl+TabまたはCtrl+Shift+Tab。
・ リンクがファイルへのリンクの場合、クリックすると、「このファイルを開くか、または保存しますか」と聞かれるので、「保存」を選び、保存先フォルダを指定する。または、右クリックで「対象をファイルに保存」を選ぶ。一旦保存した上で、保存先フォルダでファイルを開いて下さい。
1)Excelの練習
よくあるExcelの使いかたは、自分の実験データを入力し、グラフにすることです。練習のため、人口統計のデータを数字だけ入力したものがあるので、それぞれ棒グラフと折れ線グラフにしてみましょう。
population_per_age.xls → 縦棒グラフ
world_population.xls → 折れ線グラフ
(データは統計局ホームページより)
防虫剤の効果を比べた実験の結果 insect_spray.xls
ヒヨコの成長と餌の関係を調べた実験の結果 chick_weight.xls (最初のChick1のところだけグラフにする。)
(Rのサンプルデータより)
方法:データの範囲(項目名も含む)をドラッグにより囲んで選択し、「挿入」タブの「グラフ」で作成したいグラフの種類を選んでクリックするとグラフが表示される。
データ範囲の選択の際に、飛び飛びの領域を選びたい場合はCtrlキーを押しながら各領域を選択していく。
<スライド8〜10参照>
<演習>グラフの書式を変更してみる。
凡例、データ系列、x軸・y軸(各軸の最大値と最小値や目盛間隔)、プロットエリア などの書式設定ができる。たいていグラフ上で該当する部分をダブルクリックすると設定画面が現れる。あるいは、「グラフツール」「レイアウト」タブをクリックするとさまざまな設定が並んでいる。「グラフツール」「デザイン」タブ、「書式」タブも参照。
<演習>いろんな形式のグラフを書いてみる。
グラフの形式には、棒グラフ(縦、横)、折れ線グラフ、円グラフ、面グラフ、散布図など多数が用意されている。生物化学でよく使うのは棒グラフ、折れ線グラフ、散布図。これらの違いと使い方をよく理解して習得すること。
<演習>insect_spray.xlsのデータを使ってエラーバーをつけてみる。
データ範囲の選択の際に、飛び飛びの領域を選びたい場合はCtrlキーを押しながら各領域を選択していく。
<スライド8〜10参照>
<オプション>chick_weight.xlsのすべてのヒヨコをプロットしてみる。餌の違いにより成長は違うか?
ヒント:ピボットテーブルを使うと表の整形が楽になります。
2)マイクロアレイデータ解析
Molecular Cell 2,
65-73 (1998) "A Genome-Wide Transcriptional Analysis of the Mitotic Cell
Cycle"の論文に発表された、酵母の細胞周期のマイクロアレイのデータを解析してみます。
☆マイクロアレイのデータを例にデータ処理の流れを学びます。
<<説明講義がはいります:スライド11〜12>>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
☆☆ 以下、2A〜2C’はスキップします。余裕のある人は読んでみて下さい。☆☆
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
2A)データのダウンロード
論文内で指定されているWebサイトのコピー、「Yeast Cell Cycle Data」を開き、マイクロアレイの全データが載っていることを確認する。
<このデータをExcelで解析したいのだが、どうしたらいい?
— 考えてみましょう。>
すべてを選択し(Ctrl+A)、コピーする(Ctrl+C)。
↓
テキストエディタ(アクセサリ/Accessoriesフォルダ内のメモ帳やワードパッドなど)を開き、ペースト(Ctrl+V)。ペーストしたら、適当な名前をつけ、拡張子を.txtにして好きな場所に保存する。
サンプル → cell_cycle_microarray.txt
6000遺伝子の情報でありデータ量が多いので、一部を切り取って整形したもの(1000遺伝子="mid"、300遺伝子="small")を作ってある。
以下、cell_cycle_microarray….. は全データ(以下、largeとよびます)、cell_cycle_small…..
(smallとよびます)、cell_cycle_mid….. (midとよびます)は軽くしたものをもとにした処理結果。
◎全データだと重すぎて作業の能率が悪いので、実習はsmallを使って進めます。適宜large, midのサンプルファイルをご覧ください。余裕のある人はlargeやmidのデータ処理にトライしても結構です。
2B) Excelへの読み込み
<テキストファイルの読み込み:スライド13−14>
Excel画面から、「ファイル」/「開く」(または「開く」アイコン)で選択対象を「すべての読み込み可能なファイル」として、 cell_cycle_small.txtを開く。
テキストファイルウィザードが開くので、「カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ」をチェック、「次へ」。区切り文字のうち「スペース」をチェックして「完了」。
2C) 表の体裁を整える
列の幅を適当に調整しましょう。(複数列を選択し、「ホーム」/「書式」/「列の幅」)
↓
ウィンドウの下端のタブをダブルクリックして、シートの名前を"data"と変更しておく。
↓
2行目を選択し、「表示」/「ウィンドウ枠の固定」としておく。こうすると、下の方までスクロールしても見出し行は常に表示される。
2C’) 表の体裁を整える(largeデータの場合の参考)
(この作業は面倒臭いだけで大事ではない。cell_cycle_microarray1.xlsをお使いください。)
データが表に読み込まれたが、余計なものがあるので整理する。上の方の余分な行は手動で削除。
↓
次に、すべてを選択し、「データ」/「並べ替え」でいちばん左の行をキーとして「昇順」で並べ替えると、きれいに並ぶ。6601の遺伝子(第2行から第6602行)について、細胞周期の0〜160分まで、10分ごとに各遺伝子の発現量が数字で表されている。"18srRnaa"などが遺伝子名である。
↓
いちばん上に1行挿入し、見出し行として、データの上に数字で左から0, 10, 20 ,,,,,,,, 160と順に入力しておく。0分、10分、、、、の意味である。
↓
列の幅を適当に調整しましょう。(複数列を選択し、「書式」/「列」/「幅…」)
↓
2行目を選択し、「表示」/「ウィンドウ枠の固定」としておく。こうすると、下の方までスクロールしても見出し行は常に表示される。
↓
下のタブをダブルクリックして、シートの名前を"data"と変更しておく(あとでこの名前を使う)。
−−−−−−−−−−−−
☆☆ ここから開始 ☆☆
−−−−−−−−−−−−
以下のファイルをダウンロードする。これは上記論文のマイクロアレイのデータを2A〜2Cの手順でエクセルに読み込んだものである。
ただし、もとのデータは酵母の全遺伝子(約6000遺伝子)のデータで、実習環境で扱うには大きすぎると思われるので、300遺伝子に減らしてある。余裕があり、もとの大きいデータでやってみたい人は以下のデータを使う。以下、同様にcell_cycle_small...は小さくしたデータ、cell_cycle_microarray....はもとの大きなデータ、cell_cycle_mid...は中ぐらいのものである。
参考データ: cell_cycle_microarray1.xls
2D) 関数による平均の計算
あとで必要になるので、横一列のデータの平均値を計算して右端のS列に表示させるようにする。関数AVERAGEを用いる。
(「このデータをリストとして管理できます.....」との表示が出たら「いいえ」を選ぶ。)
<説明講義:Excel関数(スライド17−22)>
練習のため、T列に標準偏差、U列に変動係数を入れてください。変動係数=標準偏差÷平均。
結果の例 → cell_cycle_small2.xls
2E) グラフの描画
上から10個ぐらいの遺伝子について、細胞周期における発現量の変化をグラフにしてみましょう。グラフの形式は「散布図」。
<スライド8および上記1)参照>
2F) ソート
<スライド15参照>
2F-1)平均発現量の大きいものから順に並べかえてみます。並べかえたあとで、上と同様にグラフを書いてみます。
2F-2)平均発現量の小さなものから順に並べかえてみます。どんなものが上に来るでしょうか。largeデータでもやってみて下さい。
2F-3)変動係数の大きなものから順に並べてみます。どういうものが上に来るのでしょうか。
☆遺伝子名でソートするともとに戻ります。
3) プログラミングの第一歩
次にいよいよマクロプログラミングを行います。しばらくマイクロアレイのデータはおいておいて、基本的な練習を行いましょう。最初に述べたように、プログラミングの考え方が一度身についてしまえば、さまざまな操作が自動化できるようになります。今は何の役に立つのかは考えずに我慢して取り組んでください。
(Windows版で作業している人)
Excelのメイン画面に「開発」タブが表示されていなければ、以下の作業のために次の設定が必要です。
「ファイル」タブをクリック → 左の「オプション」をクリック → 左の「リボンのユーザー設定」をクリック → 開いた画面の右半分の上部、「リボンのユーザー設定」に「メインタブ」を表示させ、下の一覧の中の「開発」にチェックを入れる。
今開いているExcelファイルを一旦保存して閉じます。
「ファイル」/「新規作成」で「空白のブック」を開きます。「開発」タブの「Visual Basic Editor」アイコンをクリック。これでVBAエディターが起動する。「挿入」/「標準モジュール」でマクロ入力画面となる。このときに、左のプロジェクトボックスを見ながら行ってください。作成された画面は、Excelのワークブック(「Microsoft Excelオブジェクト」)に付随するモジュールであることがわかると思います。つまり、ワークブックの裏の画面です。プログラムが暴走すると記入したプログラムがパーになるので、必ず実行前に、VBAエディターから「ファイル」/「.........の上書き保存」あるいはExcelに戻って「別名で保存」しておく。
<説明講義(以下の演習と並行して):Excel VBAの使い方、セルの参照と操作、変数、マクロの実行とデバッグ、演算子、For文、If文(スライド26〜53)>
<演習課題>
(講義を聞きながら進めて下さい。) サンプルプログラム(1〜23): enshuu_example.xls
☆以下の簡単なプログラムにより、表示されているワークシートのすべてのセルをクリアできます。この"Clear"プログラムはサンプルプログラムの冒頭にもついていますのでご利用下さい。
Sub Clear()
Cells.Select
Selection.Clear
Cells(1, 1).Select
End Sub
演習:
1)ワークシートの第1行第1列のセルに数字の1を記入。
<スライド34〜38参照>
2)第1行第1列、第1行第2列、第1行第3列のセルにそれぞれ数字の1を記入。
3)第1行第I列のセルに数字の1を記入。但し、Iには予め列番号の数字を代入しておく。例えばI=3とすると第1行第3列に1が記入されるようにする。(変数の使用:スライド39−42)
4)第1行第1列〜第20列のすべてのセルに数字の1を記入。(For文の使用:スライド44−45)
5)第1行第1列には1を、第1行第2列には2を、第1行第3列には3を、、、と第20列まで記入する。
6)第1行第1列には2を、第1行第2列には4を、第1行第3列には6を、、、と第20列まで記入する。
<スライド43参照>
7)第1行第2列には2を、第1行第4列には4を、第1行第6列には6を、、、と第20列までとびとびに記入する。以下のふたつの方法が考えられるので両方やること。
(7−1)I=1, I=2, I=3....とやっていって、Iが偶数のときのみ数字を記入。(剰余の演算子ModとIf文を使う:スライド43, 49-50)
(7−2)I=2, I=4, I=6....とやっていく。(For文でStepを使う:スライド45)
<デバッグの方法の説明:スライド27, 47-48>
8)第1行第2列には2を、第1行第4列には4を、第1行第6列には6を、、、と第20列までの偶数列に記入し、奇数列には0を記入する。7−1の方法で行う。結果は左から0, 2, 0, 4, 0, 6, 0, 8....となる。
9)1から20までの総和を計算し、第1行20列に記入する。(合計を記憶していくために変数Sumを使う)
10)第1行第1列には1を、第1行第2列には1+2=3を、第1行第3列には1+2+3=6を、、、と第n列に1からnまでの合計()を第20列まで記入する。
11)第1行の偶数列についてのみ、第n列に1からnまでの合計(
)を第20列まで記入する。
12)10)と同様に第1行第n列に1からnまでそれぞれの2乗の合計(
)を第20列まで記入する。
13) 4)のプログラムを増やして、第1行第1列〜第20列と第2行第1列〜第20列のすべてのセルに数字の1を記入する。
14) 4)のプログラムを変更し、第J行第1列〜第20列のすべてのセルに数字の1を記入する。Jには行番号の数値を予め代入しておく。例えばJ=3とすると第3行第1列〜第20列のすべてのセルに数字の1が記入されるようにする。
15)第1行第1列〜第20行第20列の400個のセルに数字の1を記入する。(2重のFor文の使用:スライド46)
16)九九の表ならぬインド式20×20の表を作る。つまり第1行第1列〜第20行第20列の各セルに行番号×列番号の値を記入する。
17)第1行第1列〜第20行第20列に関し、第n列に1からnまでそれぞれの二乗の合計()を記入する。つまり、縦一列に同じ数字がはいる(どこにSum=0を書いたらいいか?)
(以下はオプション;時間が余ったらやってみてください。)
18)市松模様にセルを黒く塗る。つまり1行2列、1行4列、1行6列、、、、2行1列、2行3列、2行5列、、、、3行2列、3行4列、3行6列、、、、を20行20列までの範囲で黒くする。
☆セルに色をつける方法の例:
Cells(1,1).Interior.Color =
RGB(0,0,0)
この例では、第一行第一列のセルを黒くする。RGBの次に赤、緑、青の順に各色の明るさを0〜255の範囲で指定する。つまりRGB(255,0,0)は赤、RGB(255,255,255)は白となる。
市松模様を作るにはいくつか方法が考えられる。例えば
(18−1)20行20列のセルを順に調べ、行番号と列番号の合計が奇数の場合にのみセルを黒くする。
(18−2)まず奇数行について偶数番目のセルを黒くし、次に偶数行について奇数番目のセルを黒くする。
→
19)1行目は緑、青、赤、、、、2行目は青、赤、緑、、、、3行目は赤、緑、青、、、の模様に塗る。行番号と列番号の和の剰余を使えば比較的簡単。
20)大きなダイアモンドを描いてみる。大きさは好きでよいが、例えば1行目は10列目のセル一個だけ塗る。2行目は3個、3行目は5個と増やして最大は10行目の19個、以降は順に2個ずつ減らし、19行目が1個になる。色もお好みで。
21)メッセージボックスにHello!と表示させる。(MsgBoxの使用:スライド54)
22)1の総和、2の総和、3の総和、、、と順に10の総和まで、それぞれメッセージボックスに表示させる。
23)1から100までの総和を計算してメッセージボックスで出力する。
24)与えられた数(Iとする)が素数かどうかを判定する(入力を受ける機能はつけなくてよい:Iの値はプログラムの最初で与える)。2009 は素数か?
いろいろなやり方がある。
マクロサンプル practice2.xls Macro1、Macro2
25)1から100の間の素数の数を答える。
マクロサンプル practice3.xls Macro1、Macro2、Macro3
26)1から100までの間の素数をみつけて一個ずつ出力する。出力用のメッセージボックスにキャンセルボタンをつけておく(スライド54参照)。
マクロサンプル practice4.xls
27)1からNまでの間の素数をみつけてリストでメッセージボックスに出力する。
マクロサンプル practice4-1.xls practice4-2.xls
28)1から100万(=N)までの間に素数はいくつあるか?
処理時間はNの二乗に比例する。処理を早めないととても終わらない。
ヒント1: 割る方の数としてはルートNまでで割れば十分。 マクロサンプル practice4-3.xls
ヒント2: 奇数だけ相手にすればいいのでは。 マクロサンプル practice4-4.xls
29)与えられた数を素因数分解して結果を出力する。入力ボックスもつける(方法は後述:スライド66〜72)。
30)ワークシート上のボタンを押すとユーザーフォームが開き、その上に配置されたテキストボックスに数字を入力し実行ボタンを押すと、その約数を順に表示してくれるプログラムを作る。(約数=入力した数字を丁度割り切る数。1やその数自身も約数である。)<スライド73参照>
31)ワークシート上のボタンを押すとユーザーフォームが開き、その上に配置された2つのテキストボックスにそれぞれ数字を入力し実行ボタンを押すと、それらの数の最大公約数を表示してくれるプログラムを作る。(最大公約数=入力した2つの数字の両方を丁度割り切る数のうちで最大のもの)。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
☆☆ 以下、4A〜4Bはスキップします。余裕のある人は読んでみて下さい。☆☆
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
4A) 関数による文字列処理
マイクロアレイのデータ解析の例に戻ります。
<やりたいこと> 遺伝子をみると、YNR043W/MVD1などと書いてある(largeの人は下の方をみてください)。左がゲノム配列から予想されたORFの番号で、右が遺伝学的な遺伝子座名である。今後の作業のために、ORF番号のみを抽出し、右隣の列に挿入する。
A列の右側に2列空白行を挿入する。(「ホーム」/「挿入」/「シートの列を挿入」)
練習問題:コピペをせずに、B2セルに、セルA2に書かれた文字列とセルA3に書かれた文字列を一文字の空白を挟んでつなげた結果を表示させてください。
<説明講義:文字操作関数(スライド23)>
実習:文字操作関数を用いてORF番号のみを抽出し、B列に挿入する。
<答>
例えばB146セルであれば、
= LEFT ( A146 ,
FIND ( "/" , A146) - 1 )
となる。
(参考)
largeのデータの場合、上の方の行のデータは"18srRnaa"などのように、スラッシュがないときにはエラーとなる。この場合は、そのまま同じ名前を入れるようにする。このためには、上記の表現をもとにして、
= IF ( ISERROR (
FIND ( "/" , A146 ) ) , A146 , LEFT ( A146 , FIND ( "/" ,
A146 ) - 1 ))
とする。これを上下にドラッグして全行にコピーしておく。
練習のために、C列にはスラッシュの右側の名前(遺伝子座)を入れてみましょう。
結果の例 → cell_cycle_small3.xls
4B) ハイパーリンクの挿入
<やりたいこと> この表にWebサイトへのハイパーリンクをつけてみる。
C列の右にさらに2列作り、B列の遺伝子名をもとに、それぞれSGD、YPGDのデータベースにリンクして、ワンクリックにより遺伝子情報を見られるようにする。
各データベースの個々の遺伝子のページのURLは、例えばYAL001C遺伝子については以下のとおり。
SGD: http://db.yeastgenome.org/cgi-bin/locus.pl?locus=YAL001C
CYGD: http://mips.gsf.de/genre/proj/yeast/searchEntryAction.do?text=YAL001C
実習:D列、E列に上記リンクをつけてください。<スライド24参照>
−−−−−−−−−−−−
☆☆ ここから開始 ☆☆
−−−−−−−−−−−−
次のファイルをダウンロードする。上記4A〜4Bの細工がしてある。 → cell_cycle_small4.xls
(中、大サイズはこちら cell_cycle_mid4.xls
cell_cycle_microarray4.xls)
4C) VBAマクロによる正規化
次に、マイクロアレイのデータの入ったファイル(cell_cycle_small4.xlsなど)を開きます。ぐちゃぐちゃにしてもいいように、別の名前で保存するようにしましょう。
<やりたいこと> 遺伝子間で発現パターンを較べたいので正規化を行う。<説明:スライド58>
"data"シートのF列〜V列(0分〜160分)のそれぞれの数値を個々の遺伝子の全平均(W列)の絶対値で割り、Z列以降にその値を書きこむ(絶対値をとる理由は、なぜか平均がマイナスになっている遺伝子があるからです)。
演習課題:この計算の作業を関数またはマクロで行って下さい(関数の方が簡単にできますが、余裕があったらぜひマクロで処理してみて下さい)。
・まずはタイトル行のセルF1〜V1を手作業でセルZ1〜AP1にコピーしておいてください。
・「絶対値」はExcel関数でもVBA関数でも「Abs」です。
(関数の場合)
1)セルZ2に、セルF2の数値をセルW2の絶対値で割った値を指定する。
2)この関数を縦横にコピーすれば終わりだが、コピーしたときに、割られる値のセルと割った結果を記入するセルは相対位置を保持するが、W列は固定しないといけない。これに注意してセルZ2の関数を修正した上でコピーしていく。
(マクロの場合)
1)(これは練習)セルF2(6列)の内容をコピーしてセルZ2(26列)に記入してください。
2)セルF2(6列)の数値をセルW2(23列)の絶対値で割った結果をセルZ2(26列)に記入してください。
3)セルF2〜V2(6〜22列)の数値をセルW2(23列)の絶対値で割った結果をセルZ2〜AP2(26〜42列)に記入してください。
4)全行について処理してください。
(オプション)
さらに、smallが終わって余裕がある人は、cell_cycle_mid4.xlsを同様にマクロで処理してみてください。予期しないバグの対処の練習になると思います。
☆midデータとlargeデータの場合、W行の数値(平均)がぴったり0になっている行がありますので注意します。
☆一般的に、コンピュータプログラムで割り算が出たら注意。バグの原因になりやすいです。
プログラム処理上0で割らないようにするにはどうしたらいい? この遺伝子についてはデータに意味がないので適当にあしらってください。
マクロサンプル → cell_cycle_small5.xls Macro1
cell_cycle_mid5.xls Macro1
cell_cycle_microarray5.xls Macro1
実行結果 → cell_cycle_small5'.xls
cell_cycle_mid5'.xls
cell_cycle_microarray5'.xls
(練習)一旦ファイルを保存し、練習のためW行(平均)、X行(標準偏差)、Y行(変動係数)の値を削除し、マクロで計算しなおしてください。
マクロサンプル → cell_cycle_small5.5.xls
(オプションここまで)
4D) 類似パターンの検索
<やりたいこと> CLN2遺伝子(smallでは第298行、largeでは第6364行)を基準として、これに発現パターンの似たものを探す。
CLN2の周辺のいくつかの遺伝子の値をグラフに表示してみる。(これはデモのみ:スライド59)
全遺伝子それぞれの発現量の数値について、CLN2とのユークリッド距離をマクロにより計算、"data"シートのAQ列(第43列)に表示する。
<説明講義:原理(スライド60)>
実習:実際にこれを計算するプログラムをMacro2として作る。
マクロサンプル → cell_cycle_small7.xls Macro2
実行結果 → cell_cycle_small7'.xls
Excelのソート機能により、距離の値の小さいものから順に並べる(スライド16)。いちばん上からいくつかの遺伝子の値をグラフに書いてみる(「1)Excelの練習」参照)。似たパターンのものが選ばれたことがわかる。DNA複製関連の遺伝子が並んでいる。ハイパーリンクをクリックしてみてみるとよい(largeのファイルで同じ操作を試せばよりよくわかる)。
注意:ソートすると順番が変わってしまう(CLN2が298番目でなくなる)ので、繰り返し実行する際は注意してください。
実行結果 → cell_cycle_small8.xls
(オプション)
実習1:CLN2とは別の遺伝子を基準にして同じことを行うプログラムに変えてみる。例えばHSP82(292行目)をキーとして距離を求め、並べ替える。
実習2:プログラムの最初で基準の遺伝子を指定し、TargetRowという変数に代入する形にしてみる。つまり上の例では最初にTargetRow=292と書く。
実習3:ソートまでプログラムにやらせてしまおう。
☆ソートの操作のプログラムの書き方が分からないであろう。ややこしい操作のコーディングが分からないときは「マクロの自動記録」機能を用いる。
<参考:マクロの自動記録(スライド61)>
マクロサンプル → cell_cycle_small8.5.xls
<参考:オブジェクトについて(スライド62−64)>
−−−−−−−−−−−−
☆☆ 以下、参考 ☆☆
−−−−−−−−−−−−
5) 他のVBAの使用例
5-1) ユーザーインターフェース
<やりたいこと> 次に、VBAマクロで入力を受ける。好きな遺伝子を基準にしてそれと似たものを探せるようにする。ワークシート上に入力ボックスを作り、基準とする遺伝子のデータシート上の行番号を入力すると、TargetRow行の値が設定されて上と同じ作業をするようなプログラムを作る。
<フォームとコントロールの使い方(スライド66〜72)>
どうなってもいいファイルを開き、以下の練習を行う。
実習4:「実行」というコマンドボタンを押すとメッセージボックスでHello!と表示するプログラムを作る。
☆プログラムの本体を記述する場所が今までと変わるので注意。「フォーム」に付随したコードとして記述する。
実習5:テキストボックスに数字や文字を入力して「実行」というコマンドボタンを押すと、入力した内容がメッセージボックスで表示されるプログラムを作る。
実習6:テキストボックスに基準とする遺伝子の行番号を入力して「実行」というコマンドボタンを押すと、距離の計算からソートまでを行うプログラムを作る。
実習7:ワークシート上にこのマクロを実行させるためのボタンを作ってみる。(スライド73参照)
サンプル → cell_cycle_small9.xls
(演習)
1)数字以外の無効な入力がされたときに、エラーメッセージを出すようにする。(スライド75参照)
2)行番号でなく遺伝子名あるいはORF名を入力すると、自動的にその遺伝子の行を探して上と同様の処理をするプログラムに変えてみる。
2−1)遺伝子名入力ボックスと、ORF入力ボックスを別々に作る。
2−2)一つのボックスで遺伝子名でもORF名でもいずれも入力できるようにする。
2−3)大文字小文字の違いがあっても検索してくれるようにする。
(入力された名の遺伝子が存在しないときにはエラーメッセージを出す。)
サンプル → cell_cycle_small10.xls
3)グラフに表示する遺伝子の数(似ている順にいくつをグラフに描くか)を指定できるようにする。
4)<ファイル入出力>全6600遺伝子の処理はエクセルには少し重すぎるがデータをシートに表示させないと少し早くなる。そこで、テキストファイルcell_cycle_microarray.txtを直接読み込み、シートには最小限しか表示させないで上で作ったような機能をもつプログラムを作成する。具体的には、入力ボックスで指定した遺伝子と似たパターンの遺伝子10個のみシートにデータを表示し、グラフを書くようにする。入出力等の説明はスライド83〜。
5)今回はマイクロアレイデータについて、特定の遺伝子に近いものを集めたが、この操作を拡張するとクラスタリングになる。smallデータの300遺伝子に対し、以下の操作によりクラスタリング(似たもの同士が隣合うように並べ替え)を行う。
i)300遺伝子の総当たりでユークリッド距離を求め、300×300の配列に格納。ii)この中で最も小さい値を求め、遺伝子ペアを作る。これが最初のクラスタになる。iii)次に距離の小さい遺伝子ペアを求める、、、を繰り返す。新しいペアの一方が既存クラスタに属する場合はそのクラスタの端にもう一方の遺伝子も加える。属さない場合、2遺伝子よりなる新たなクラスタを形成する。ペアの両者が別のクラスタに属する場合、それぞれのクラスタ内の順番を維持したまま、ふたつのクラスタを融合する。iv)すべてがひとつのクラスタになった時点でその順番で遺伝子を並べて新たなシートに記入する。下記3-1のように色づけしてみると近接して並んだ遺伝子のパターンの類似性がわかる。
サンプル → cell_cycle_small12.xls
実行後 → cell_cycle_small12'.xls
5-2) カラー描画
例えばヒートマップ。値の大きさを色であらわしたものを見たことがあると思います。表現していることは同じですが、数字より色の方がパターンを視覚化しやすくなる。上記の結果(例えばcell_cycle_small10.xls)をグラフの代わりにヒートマップカラー表示で表すことができる。(ヒートカラーについてはスライド89参照)
方法1)3)で行ったように、セルに色をつける。もとのデータの配置のままで、セルに数字を入れるかわりに色で表示。
方法2)描画機能を使う。「挿入」/「図形」 から 図形描画 パレットを出して図形を描いてみる。→これをVBAマクロで自動化。
サンプル → cell_cycle_small11.xls
シートdata3, Macro4 : セルに色をつけたもの
シートdrawing, Macro5 : 長方型を描画したもの
実行結果 → cell_cycle_small11'.xls
5-3)連続画像上のSPBのトラッキング結果の解析
if725.movは、酵母の減数分裂時の核(青色)とSPB(微小管形成中心、赤)を約300枚の連続蛍光顕微鏡写真で観察したものである(画像提供:山本研 山下氏、藤田氏)。画像のそれぞれにおいて画像処理でSPBを抽出した結果がOutlines_of_if725.movである。検出されたSPBの位置(X座標、Y座標)のデータが
SPB_Tracking7_Results_for_excecise.xls
である。Sliceが画像の番号。SPBは最初は一個であるが、途中から二個に分かれ、さらにゴミも検出されている。
(進んだ演習)
座標だけを頼りに、混ざっているデータをそれぞれのSPBに分ける。ある画像における一方のSPBの位置は前の画像での同じSPBと最も近い位置にある、という基準で二個のSPBの情報をコンピュータ処理で分けてみる。つまり、Excelの第1列を画像(Slice)番号、第2列〜5列をX1, Y1, X2, Y2と設定する。(X1, Y1)が一個目のSPB、(X2,
Y2)が二個目のSPBとなるようにデータを並べ替える。
(説明が上記エクセルファイルの2枚目にあります)。
サンプルマクロ → SPB_Tracking7_Results.xls
(参考)
線虫のプレートを連続画像で取得し、それぞれの画像において多数の線虫の位置を画像処理で検出したのち、個々の線虫の軌跡を決定する際にも同様のコンピュータ処理を行っている。
5-4) グラフに簡単にエラーバーをつけるマクロ
(デモのみ)Excelでエラーバーをつける操作は煩雑。そこで自動記録などを駆使しながらマクロを組んでみた。
(解読または新作に挑戦してみては?)
5-5) (VBA
for Word) 「テキスト形式でペースト」のマクロ
ワードにコピペするときに書式がついてくるといやな場合がある。手操作では「貼り付け」/「形式を選択して貼り付け」だが、毎回毎回は面倒くさい。こんな簡単な操作も自動記録をもとにマクロ化してしまうとよい。
また、行間を一ポイントずつ広げたり狭めたりする操作もマクロ化しておくと便利。
(注)Excel/Word共通。
・マクロをそのシートではなく自分のPCに記憶させる→いつでも使えるようになる。
「開発」/「マクロの記録」または「表示」/「マクロ」/「マクロの記録」で「マクロの保存先」を「すべての文書」とする。
・マクロをショートカットキーで実行。
同じく「マクロの記録」でショートカットキーを登録する。押してみて、すでに登録されているか空いているかを確認したのちに確定させる。
6) 他のVBの開発環境
6-1) Officeアプリケーションのマクロ
WordやPowerPointにもVBAが用意されている。したがって、これらのアプリケーションの動作も基本的にすべてマクロで書くことができる。使い方はExcelと同様であるが、オブジェクトの体系が異なってくる。例えば、PowerPointではExcelでいう「ワークシート」の代わりに「スライド」があり、「セル」の代わりに一個一個の図形が「スライド」のプロパティとしてのオブジェクトとなる。詳しくはそれぞれのVBAのヘルプを参照。
6-2) Visual Basic, Real Basic
VBAはマイクロソフトのOfficeアプリケーションに付随し、あくまでアプリケーションの操作性を上げるためのマクロとしての使用を念頭においてデザインされているが、もとはBasicというプログラミング言語から来ている。Basicにはいろいろな形があるが、Visual
Basic (Windowsのみ)とREALbasic(Mac, Win両方あり)が一般的。Visual Basic は製品としてはVisual
Studioに統合されている。Real Basicは統合されてReal Studioとなっている。これらを使うとExcelシートに依存せず、例えばアイコンをクリックするとユーザーフォームが開く形のアプリケーションが作成できる。言語体系はVBAとほとんど同じなので、興味のある人は体験版を試してみてください。
7) 課題
本演習の修了認定のために、課題を出します。内容は進みぐあいをみて最終日に決定します。