Bash on Ubuntu on WindowsでSingle-cell RNA sequence解析　②NGSデータのダウンロードとクオリティチェック

#※記事を読んでくださるみなさまへ
・対象は**プログラミングもバイオインフォ解析も全く未経験のバイオ研究者**です
・筆者は基礎研究を初めて約1年3ヶ月の大学院生です
・いわゆる”DRY”な研究を始めたのは約5ヶ月前からです
・そのため記事の内容にはとんでもない間違いやずっと良い別の方法が存在するかもしれません
・また、筆者と同じレベルの人が0から始めるときの参考になるよう、説明は結構まだるっこいです
・ご指摘の度に記事をブラッシュアップしていきたいです、よろしくお願いします

過去記事一覧
[①環境構築まで](http://qiita.com/rouninnomi/items/d92d9fb65d52ed4353e4)
[②NGSデータのダウンロードとクオリティチェック](http://qiita.com/rouninnomi/items/88a24ad1eb454e78e99d)
[③NGSデータのトリミング](http://qiita.com/rouninnomi/items/9244e54785ab58b0f114)
[④Pipeline (hisat2, samtools, stringtie)](http://qiita.com/rouninnomi/items/5441bef2f50780035127)
[⑤番外編：コードのブラッシュアップ](http://qiita.com/rouninnomi/items/f8328ece9388b7870138)
[⑥Rによる発現解析](http://qiita.com/rouninnomi/items/439bdced092cffbc3c36)

# 前回からの続き：NGSデータのダウンロード
では基本的な動作の練習をしながら[前回の論文](http://www.nature.com/nprot/journal/v11/n9/full/nprot.2016.095.html)のサンプルデータをダウンロードしてみましょう。

```
# ホームディレクトリ（起点となるフォルダのこと）に移動
# 現在自分がいるディレクトリを確認
cd
pwd

# ホームディレクトリの中身を確認（miniconda2のディレクトリだけが表示されます）
ls

# サンプルデータを入れるディレクトリを作成
# そのディレクトリの中に移動
# 居場所確認
mkdir data
cd data
pwd

# サンプルデータのダウンロード
# 解凍
wget -c ftp://ftp.ccb.jhu.edu/pub/RNAseq_protocol/chrX_data.tar.gz
tar xvzf chrX_data.tar.gz
```
wgetは後ろのアドレスからデータをダウンロードできるプログラムです。-cは「オプション」の一つで、ダウンロードが中断したときでも、このように入力すればダウンロードを途中から再開できます。tarはtar, tar.gzという圧縮ファイルを解凍したり、逆にこの形式の圧縮ファイルを作れるプログラムです。オプションのxvzfをつけるとtar.gzファイルを解凍という意味になるみたいです。オプションの詳細はグーグル検索してみてください。

作ったdataというディレクトリの中にデータがダウンロードされるはずです。次に、クオリティチェックをしたい、リードデータのところまで行きます。最初は中身を確認しながら行きましょう。

```
cd chrX_data
ls
cd samples
ls

# 慣れた人は以下のように
cd chrX_data/samples
```
このディレクトリの中には
>ERR〇〇〇〇_chrX_〇.fastq.gz

と名付けられたファイルがたくさんあるはずです。gzは一種の圧縮方法を示す拡張子です。fastqという拡張子は、「リードデータ＋クオリティデータ」を示す拡張子です。では、これらのうち
>ERR188044_chrX_1.fastq.gz

のシーケンスクオリティを確認してみましょう。

```
fastqc ERR188044_chrX_1.fastq.gz
```

すると、
>〇〇/bin/java: Syntax error: end of file unexpected (expecting ")")

という意味不明のエラーが出ます。ググって調べるとどうやらjavaというプログラムコマンドが正常に機能していないようです。

```
# そもそもjavaは入っているのか
which java

# 表示された居場所を確認（~はホームディレクトリの意味）
ls ~/miniconda2/bin

```
ちゃんとjavaというプログラム自体は存在していそうです。このような場合、いくつかの原因があるようなのですがまず一つはjavaのバージョンが古い場合、もう一つは「パスが通っていない」（後述）場合です。前者はパッケージ管理プログラムだとあり得ることで、相互の依存関係を考慮してわざと古いバージョンのままになってしまうことがあるみたいです。後者は、その他のcondaパッケージが普通に動くことを別途確認できるため、違うようです。では、biocondaに頼らずに最新バージョンのjavaプログラムをインストールしてみましょう。

```
# 途中質問には全てy
sudo apt-get install default-jre
```

じつを言うとこのままではうまく機能しません。先述した「パスが通っていない」状態なので、bash君がjavaプログラムがどこにあるのか理解してくれていないのです。「パスを通して」みましょう。

```
# 現行使用できるjavaの居場所を表示
sudo update-alternatives --list java

# 表示されたjavaの居場所をPATHという「環境変数」に書き込む
# そのままだと一度BoWを終了すると設定が消えてしまうので、今の文章を出力し.bashrcというbashの個人設定ファイルに書き込み、毎回の起動の度にやらなくてよいようにする
echo 'export PATH=/usr/lib/jvm/java-7-openjdk-amd64/jre/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
```

ざっくり説明すると、BoWを起動したときに様々な設定がなされるのですが、環境変数とはそれらの指示書です。例えば＄PATHの先には、ls, cdなどのコマンドを入力したときに、その本体のプログラムの居場所たちが記載されています。bashがコマンドをもらったとき、bashは＄PATHの中身を検索して、プラグラムを実行します。export PATH=（居場所）でPATHを設定するようなのですが、もともとの＄PATHも再帰的に指示してあげるのが良いようです。このとき：で間をつなぎます。

echoは後ろの''の内容を出力します。これを >> の後ろのファイルに書き込みます。.bashrcは先に述べた環境変数＄PATHの中身が記載されているファイルのうち、個人用のファイルです。これは弄って壊れたとしても取り返しがつくので、このファイルに書き込みましょう。

参考ページ
http://www.linuxmania.jp/apt-install-java.html

#シーケンスデータのクオリティチェック
では満を持してクオリティチェックを試しにやってみましょう。

```
fastqc ERR188044_chrX_1.fastq.gz

```

これで
> ERR188044_chrX_1_fastqc.zip
> ERR188044_chrX_1_fastqc.html

という結果ファイルと圧縮ファイルが完成します。このままでは中身を閲覧できないので、bashが主に支配しているハードディスクの世界から、Windowsが主に支配している世界にこのファイルを連れ出してあげましょう。

```
mv ERR188044_chrX_1_fastqc.html /mnt/c/Users/（ユーザー名）/Desktop/
```
mvは後ろのファイルを、次の/以下で示したディレクトリに移動するコマンドです。/はLinuxの世界の本来のホームディレクトリで、その下に各ユーザーのディレクトリなどが設定されています。BoWではcdで移動するホームディレクトリではありませんので、逐一指定する必要があります。BoWでは/mnt/cでWindowsの支配するCドライブの中を探検することができます。自分のWindowsのユーザー名がわからなければlsコマンドなどで適宜確認しながらディレクトリの中を潜っていってください。

このhtmlをデスクトップに見つけて開くと、シーケンスクオリティのサマリが表示されます。各項目の評価方法は成書や各種Webサイトに譲ります。

長くなったので以降は[次回](http://qiita.com/rouninnomi/items/9244e54785ab58b0f114)に続きます。