ユーザーインターフェース

2.4. ユーザーインターフェース#

コンピュータを利用してデータを解析するにあたり、何らかの方法でデータや解析手順をコンピュータに伝える必要があります。このとき、コンピュータと人間のやり取りを仲介する仕組みをユーザーインターフェースuser interface)と呼びます。ユーザーインターフェースには大きく分けて 2 種類あり、1 つはグラフィカルユーザーインターフェースgraphical user interface; GUI)、もう 1 つは キャラクターユーザーインターフェースcharacter user interface; CUI)または コマンドラインインターフェースcommand line interface; CLI)です。

2.4.1. GUI#

私たちは普段、コンピュータに命令を与える際、画面を見ながらマウスやキーボード、タッチパネルなどを使って操作しています。このような操作方法は GUI と呼ばれます。GUI は直感的で分かりやすく、多くのソフトウェアで採用されています。

しかし、GUI 操作は大量のデータを扱う場面では、必ずしも効率的とは言えません。ここでは、バイオインフォマティクスでよく扱われる「遺伝子発現量データ」を例に考えてみましょう。RNA-seq 解析の結果は、次のような CSV 形式の表として出力されることがよくあります。この表では、1 行が 1 つの遺伝子に対応しており、各サンプルにおける発現量が数値として記録されています。

gene,control_1,control_2,control_3,stress_1,stress_2,stress_3
gene_1,120,98,130,215,195,310
gene_2,560,610,590,580,600,570
gene_3,8206,7980,9142,10501,9949,12084
gene_4,8501,9921,8132,9314,8395,7571
...

例えば、あるディレクトリ(フォルダ)の下に、このような発現量データファイルが多数保存されているとします。ここで、それぞれのファイルに何行のデータが含まれているかを調べたい場合を考えてみましょう。GUI では、ファイルを 1 つずつ開き、行数を確認してメモなどに記録していく必要があります。この作業は手間がかかるだけでなく、ファイル数が多ければ多いほどミスも発生しやすくなります。このように、GUI は直感的で使いやすい反面、このような大量のデータを扱う場面では効率が悪くなることがあります。

2.4.2. CUI#

文字だけでコンピュータに命令を与える操作を CUI または CLI と呼びます。例えば、各ファイルの行数を調べるために、wc と呼ばれる命令を使えば、数秒で全ファイルの行数を取得できます。

wc -l *.csv > gene_counts.txt

さらに、すべてのファイルについて、control 群の平均発現量が 1,000 以上の遺伝子だけを抽出して新しいファイルに保存したいとします。GUI 操作では、各ファイルを開き、条件に合う行を手作業で探してコピーし、新しいファイルに貼り付ける必要があり、非常に手間のかかる作業です。しかし、CUI を介してコンピュータに命令を与えれば、次のように処理を自動化できます。

for f in *.csv; do
  awk -F ',' 'NR==1{print;next}{if((($2+$3+$4)/3)>=1000)print}' "$f" > "high_$f"
done

ここに書かれた命令では、各 CSV ファイルについて control_1、control_2、control_3 の 3 列の平均値を計算し、その値が 1,000 以上である行だけを抽出しています。また、閾値を 1,000 から 500 に変更したい場合でも、スクリプト内の数値を 500 に書き換えるだけで簡単に対応できます。

この一連の命令において、wcコマンド と呼ばれるものであり、forindo などは シェル と呼ばれる仕組みの一部です。また、awk はテキスト処理に特化した簡易なプログラミング言語の 1 つで、表形式データから特定の列を抽出したり、条件に基づいて行をフィルタリングしたりするのに非常に便利です。このように、コマンドとシェル、そして様々な簡易なプログラミング言語を組み合わせることで、GUI では困難な大量データの処理を効率的に行うことができます。

ちなみに、ここだけの話ですが、ハイテクな GUI ツールでどんぐりの棚卸しをしていたリスは、冬眠のタイミングを完全に見失っていたとか。