mecobalamin’s diary

人間万事塞翁が馬

https://help.hatenablog.com/entry/developer-option

apt-getでファイルがダウンロードできない

ライブラリを追加したくてapt-getを使ったら
ファイルがダウンロードできずにエラーが出たので
解決方法のメモしとく

欲しかったのはlibGL.so.1

opencv_createsamplesをインストールして実行したら
libGL.so.1がないってエラーが出た

パッケージの探し方もよくわからず。。。
ググるとパッケージ検索のサイトが見つかった
Ubuntu – Ubuntu Packages Search


"パッケージの内容を検索"
でキーワードに
"libGL.so.1"
を入れて
"キーワードに似た名前のファイルが含まれるパッケージ"
を探す
Ubuntu – Package Contents Search Results -- libGL.so.1

libgl1で良さそうなのでapt-getでインストール

$ apt-get install libgl1

だけど404エラーがでて必要なファイルがダウンロードできず。。。

解決方法がよくわからなかったけど、
apt-getのupdateで良かったらしい

$ sudo apt-get update

update後にapt-getを実行

$ sudo apt-get install libgl1

今回はエラーも出ず、
無事インストールできた

ググると出てきたのはインストール元を指定するファイルが
古くてダウンロードできないときの解決方法が多いみたいだった
apt-get updateが404で動かない場合もあるらしい
https://server.etutsplus.com/apt-get-404-not-found/

メモ: リードカウントデータの正規化について

17 May 2019追記
メモした内容で実際に正規化してみた
mecobalamin.hatenablog.com
mecobalamin.hatenablog.com

追記ここまで

featureCountsでリードカウントしたあとに
複数のデータを比較する場合、
カウントの正規化が必要らしい

まだ良くわかってないので
参考にしているサイトのリンクを張っておく

ペアエンドのサンプルをリードカウントするときのコマンドがあった
featureCounts
RNA seqのリードカウント featureCounts - macでインフォマティクス

正規化の方法にはRLE正規化とTMM正規化があって、
求める正規化のファクターが異なる
これらの正規化方法を利用してるのがDESeq/DESeq2やedgeRで、
Rのライブラリーとして配布されている

DESeq/DESeq2はRLE正規化を使う
RLE正規化
RLE 正規化 | DESeq/DESeq2 に実装されている RNA-Seq カウントデータの正規化法

edgeRはTMM正規化を使う
TMM正規化
TMM 正規化 | edgeR で発現変動遺伝子を検出する際に利用する RNA-Seq データの正規化法

DESeq2を使った正規化でサンプルの処理をしている
サルマップ2018 (3) DESeq2による標準化と可視化まで
サルマップ2018 (3) DESeq2による標準化と可視化まで - ノンコーディングRNAネオタクソノミ

こっちはedgeR
edgeR - macでインフォマティクス

28 April 2019追記
edgeR: リードカウントから発現変動遺伝子を検出 - Heavy Watal
こちらにあったがedgeRのUser's Guideが詳しい
まだ読んでる途中だがCase Studiesもある

library(edgeR)
edgeRUsersGuide(view=TRUE)

でpdfを表示できる
なおedgeR、DESeq2ともにアップデートがあったようだ
それについてはこの記事の最後に追記した
追記ここまで

edgeRとDESeq2はbioconductorを使ってインストールする
Bioconductor - Home
パッケージマネージャーのBiocManagerをインストールしてから
ライブラリをインストールする

RはwindowsのRGuiを使っていて
versionは3.5.2

BiocManagerのインストール
Bioconductor - Install

edgeRのインストール
Bioconductor - edgeR

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("edgeR", version = "3.8")

DESeq2のインストール
Bioconductor - DESeq2

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("DESeq2", version = "3.8")

とりあえずライブラリのインストールまで済んだ

28 April 2019追記、その2
edgeR、DESeq2ともにアップデートがあったようだ
インストールのコマンド

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("edgeR", version = "3.8")

を再実行するといくつかのパッケージがアップデートされた
それに伴いRのパッケージも手動でアップデートする必要があった

例えば

library(edgeR)

でlibraryを読み込ませたときに
足りないパッケージが表示される
(Rccpだったかな。。。)

RGuiの場合はツールバーから
[パッケージ]->[パッケージのインストール]を選択
先にCRANのミラーサイトを選択する
次にパッケージを選んでインストールする

コマンドラインからだと

install.packages("Rccp", dependencies = TRUE)

でインストールできる
このときCRANのミラーサイトが選ばれていなければ
選択するウィンドウが表示される

追記ここまで

hg38のfastaとgtf/gff3

GRCh38とhg38はヒトゲノムのシークエンスデータ
ほとんど一緒らしい。
前にも引用させてもらったけどここに説明がある。
GRCh38とhg38の違い(含むミトコンドリア)

GRCh38染色体名(ヘッダ行)が長く(gi|568815597|ref|NC_000001.11|)、hg38は簡潔(chr1)。

ヘッダ行に違いがあるのはやや問題で、
JBrowseで表示させたりfeatureCountsでリードカウントするときに
スムーズにできないことがあった

そこで簡潔な表示で揃えてfastaとgtf/gff3を作成する

まずはシークエンスデータのダウンロード
UCSC Genome Browser Downloads

リンクをたどるといくつかファイルが見つかる
chromosomeごとに分かれているデータを使う
Index of /goldenPath/hg38/bigZips

ファイルの説明はこちら

hg38.chromFa.tar.gz - The assembly sequence in one file per chromosome.
Repeats from RepeatMasker and Tandem Repeats Finder (with period
of 12 or less) are shown in lower case; non-repeating sequence is
shown in upper case.

ダウンロードと展開

$ wget http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.chromFa.tar.gz
$ gzip -d hg38.chromFa.tar.gz
$ tar -xvf hg38.chromFa.tar

展開するとパッチを含めて450ファイルぐらいある
パッチは取り扱いがよくわからないので
とりあえずchromosomeのファイルだけマージして使う

$ :> merge_chrom.fa
$ for i in {1..22}; do cat chr${i}.fa >> merge_chrom.fa; done
$ cat chrX.fa >> merge_chrom.fa
$ cat chrY.fa >> merge_chrom.fa

このfastaファイルをhisat2-build及びhisat2に使う
mecobalamin.hatenablog.com

次にhg38のgtfファイルを作成する
Gene annotation データを用意する(gtf形式) - Palmsonntagmorgen

NCBIからダウンロードできるgffファイルは詳しい表記のヘッダなので、
UCSCのサイトからgtfファイルをダウンロードしてgff3に変換する

Table Browser@UCSC
Table Browser

設定はこうした・・・ハズ。
clade: Mammal
genome: Human
assembry: Dec. 2013 (GRch38/hg38)
group: Gene and Gene Predictions
track: NCBI RefSeq
table: RefSeq All (ncbiRefSeq)
region: genome
output format: GTF - gene transfer format (limited)
output file: UCSC.hg38.gtf.gz
file type returned: gzip compressed

gtfファイルをgffreadをつかってgff3に変換する

$ gffread -E UCSC.hg38.gtf -o- > UCSC.hg38.gff3

このファイルはパッチで修正?された配列を含む
つまりパッチとchromosomeの間に重複がある
正しいやり方かよくわからないがパッチ側の重複した配列を除く
取り除かないと通らないコマンドがあった
bam2wigだったかな

$ cat UCSC.hg38.gff3 | awk '(a[$9]++ < 1000) && ($1 !~/[_alt]/) {print}' > rename_UCSC.hg38.gff3

exonやCDSで同じ名前のエントリーがあるので
1000個以上の重複で"_alt"を含む場合に除く
コードでは重複が1000個以下でかつ"_alt"を含まない行をファイルに出力している
1000個以上重複している配列はなさそうだったので、
使った感じでは取りこぼしはなさそう

今度はgff3をgtfに変換する

$  gffread rename_UCSC.hg38.gff3 -T -o- > rename_UCSC.hg38.gtf

gtfはfeatureCountsに、gff3はJBrowseに使う

ファイルの中身はこんな感じ
rename_UCSC.hg38.gtf

chr1    hg38_ncbiRefSeq exon    11874   12227   .       +       .       transcript_id "NR_046018.2"; gene_id "NR_046018.2";
chr1    hg38_ncbiRefSeq exon    12613   12721   .       +       .       transcript_id "NR_046018.2"; gene_id "NR_046018.2";
chr1    hg38_ncbiRefSeq exon    13221   14409   .       +       .       transcript_id "NR_046018.2"; gene_id "NR_046018.2";
chr1    hg38_ncbiRefSeq exon    14362   14829   .       -       .       transcript_id "NR_024540.1"; gene_id "NR_024540.1";
chr1    hg38_ncbiRefSeq exon    14970   15038   .       -       .       transcript_id "NR_024540.1"; gene_id "NR_024540.1";

rename_UCSC.hg38.gff3

# gffread -E UCSC.hg38.gtf -o-
# gffread v0.10.6
##gff-version 3
chr1    hg38_ncbiRefSeq transcript      11874   14409   .       +       .       ID=NR_046018.2;geneID=NR_046018.2
chr1    hg38_ncbiRefSeq exon    11874   12227   .       +       .       Parent=NR_046018.2
chr1    hg38_ncbiRefSeq exon    12613   12721   .       +       .       Parent=NR_046018.2
chr1    hg38_ncbiRefSeq exon    13221   14409   .       +       .       Parent=NR_046018.2
chr1    hg38_ncbiRefSeq transcript      14362   29370   .       -       .       ID=NR_024540.1;geneID=NR_024540.1
chr1    hg38_ncbiRefSeq exon    14362   14829   .       -       .       Parent=NR_024540.1
chr1    hg38_ncbiRefSeq exon    14970   15038   .       -       .       Parent=NR_024540.1

bigwigの作成と表示

JBrowseでbamを表示させるとリードがずらーっと並ぶ
実際にいくつあるのかわかりやすくするために
ヒストグラムで表示したい

bamをbigwig形式にする
bam2wigとwigToBigWigを使う
ここを参考にした
bamからbigWigとWiggle Formatに変換するツール - macでインフォマティクス

コマンドはここからダウンロード
bam2wig: bamからwigを作成
GitHub - MikeAxtell/bam2wig: Conversion of a BAM alignment to wiggle and bigwig coverage files, with flexible reporting options
wigToBigWig: wigからbigwigを作成
Index of /admin/exe/linux.x86_64
両方にパスを通す
wigToBigWigにパスが通っていたら
bam2wigは自動でwigToBigWigも実行する

変換はbam2wigにbamを読み込ませるだけ

$ bam2wig hogehoge.bam

こんな名前のディレクトリhogehoge_bam2wigが
作られてbigwigも出力される

できたbigwigファイルをjbrowseで表示するには
jbrowseのデータのあるディレクトリにコピーして
スクリプトで取り込ませる

How do I set up a BigWig file?
JBrowse FAQ - GMOD

$ add-bw-track.pl --label mybw --bam_url file.bw

Example BigWig-based Wiggle XY-Plot Track Configuration
JBrowse Configuration Guide - GMOD

例えば作ったファイルhogehoge.bigwigが
以下のディレクトリに存在する場合

$ /var/www/html/jbrowse/hogehoge/bw

コマンドを以下のように実行した
trackList.jsonのあるディレクトリに移動して
スクリプトを実行するのが良さそう

$ cd /var/www/html/jbrowse/hogehoge/
$ ../bin/add-bw-track.pl --label hogehoge_bigwig --bw_url bw/hogehoge.bigwig --in ./trackList.json

trackList.jsonvimで編集
hogehoge.bigwigのあるエントリーで
typeの項目を書き換える
"type" : "JBrowse/View/Track/Wiggle/XYPlot"

登録した結果はこんな感じ
f:id:mecobalamin:20190306132702p:plain
青のヒストグラムがbigwig
ヒストグラムの下の部分は
ヒトゲノムのgff3を表示している
ちなみに異なる3種類のbigwigファイルを表示しているので
ヒストグラムが3段ある

ヒトゲノムのfastaファイルとgffは
以前作ったファイルとは変わっている
前にもちょっと書いたけど公開されているヒトゲノムは
ヘッダーの書き方に違いがある
GRCh38とhg38の違い(含むミトコンドリア)
これはhisatで作ったbamファイルのラベルが変わってくる

あと、gtfファイルはUCSCのゲノムブラウザを使って作成する
Gene annotation データを用意する(gtf形式) - Palmsonntagmorgen
Table Browser
gtfファイルはgffreadを使ってgffに変換する

$ gffread -E hg38_ucsc.gtf -o- > hg38_ucsc.gff3

ちなみに逆もできる

$ gffread rename_UCSC.hg38.gff3 -T -o- > rename_UCSC.hg38.gtf

このgffファイルにはシークエンスデータのパッチも含まれる
これが意外に厄介でパッチで追加された配列に重複があると
いろいろ変換ができなくなる

問題ありそうだけど重複部分を削除することにした
良くないんだろうけど。。。
ゲノムデータのパッチの取扱がよくわからない。

重複部分の削除とJBrowseの登録はこんな感じ

$ cat UCSC.hg38.gff3 | awk '(a[$9]++ < 1000) && ($1 !~/[_alt]/) {print}' > rename_UCSC.hg38.gff3
$ bin/flatfile-to-json.pl --gff ~/usr/data/db/rename_UCSC.hg38.gff3 --trackType CanvasFeatures --out hogehoge --trackLabel ref_hg38_ch

詳しくはまたあとで。

20 April 2019追記
作り直したhg38のgtfファイルについてはここにまとめてある
mecobalamin.hatenablog.com
このファイルをJBrowseに登録したり
マッピングに使ったりした

追記ここまで

RNA-seqその6、featureCountsでリードカウント

前回作ったbamファイルを使って発現量を調べる
mecobalamin.hatenablog.com

使うコマンドはfeatureCount

こちらのサイトを参考にした
featureCount で bam と gtf からリードカウントを得る | Tips for NGS Data Analysis
https://ncrna.jp/blog/item/387-featurecount-2018

featureCountで検索かけるとRを使った解析ソフトウェア群の
Bioconductorが見つかる
Bioconductor - Home
BiocManagerというパッケージマネージャーもある。
(biocLiteはバージョンの古いマネージャー)

featureCountはRsubreadに含まれるが
こちらのwslでは動かなかった

なのでコマンドライン版のfeatureCountを使う
The Subread package
ここからダウンロードできる。
最新の1.6.3と、1.5.0-p2はこちらの環境では動かなかった
1.6.3は実行後エラーが出てすぐに止まった
1.5.0-p2はエラーメッセージが表示され続けた

1.5.3は動いたのでこのバージョンを使う
ファイルを展開後makeして$HOME/binにリンクを張った
WEHI Bioinformatics - Subread package

31 May 2019追記
最新版1.6.4が公開済みだった
アーカイブをダウンロードして展開
バイナリが含まれていたので$HOME/binにリンクを張った
ちゃんと動いた
追記ここまで

gtfファイルとbamファイルを読み込ませて実行する
結果はcounts.txtに出力される

$ featureCounts -p -O -T 4 -t exon -g gene_id -a ref_GRCh38.p12_top_level.gtf -o counts.txt hogehoge.bam

6 March 2019追記

  • pと-Oオプションを追加
  • pはペアエンド、-Oは重なりがあるリードがあるときに指定するらしい。

Assign reads to all their overlapping meta-features (or features if -f is specified).
featureCounts | 各遺伝子にマッピングされたリード数を計数
WEHI Bioinformatics - featureCounts
追記ここまで

このcounts.txtをRに読み込ませて解析するが、
とりあえずヒストグラムを作る

ここからはRで作業する
counts.txtのあるディレクトリに作業ディレクトリを移動し、
read.table()でファイルを読み込ませる
一行目のコメントとヘッダーを飛ばして、
タブ区切りにする

どれがカウントデータかよくわからないけど
colnames()で確認すると

[1] "Geneid"              "Chr"                 "Start"               "End"                 "Strand"             
[6] "Length"              "hogehoge.bam"

なのでおそらく最後のカラム

試しにコピー数が3から30のだけを取り出して
ヒストグラムにする

setwd("/path/to/counts.txt")
fc <- read.table("counts.txt", header = TRUE, skip = 1, sep="\t")
d <- subset(fc, fc$hogehoge.bam < 30)
d <- subset(d, d$hogehoge.bam > 3)
h <- hist(d$hogehoge.bam)

結果はこんな感じ
f:id:mecobalamin:20190310000502p:plain

ちなみにpng形式で保存するには
Rに表示されているグラフを消してから
png()のコマンドでファイル名とサイズを宣言
hist()を実行、そしてdev.off()でファイルを閉じる

png("histogram.png", width = 600, height = 450)
h <- hist(d$hogehoge.bam, main = "", xlab= "hogehoge.bam")
dev.off()

10 March 2019修正
dev.off()が抜けてたので追加
必要ならpng()の前にもdev.off()を実行して

null device 
          1

が表示されてから上記のコマンドを実行する

hにはhistogramのパラメータが入っている
$breaksはhist()の引数breaksを指定することで
変更可能でbin幅が変えられる

> h
$breaks
 [1]  4  6  8 10 12 14 16 18 20 22 24 26 28 30

$counts
 [1] 1114  358  250  196  154  134   87  104   93   64   54   51   34

$density
 [1] 0.206832529 0.066468622 0.046416636 0.036390642 0.028592648 0.024879317 0.016152989
 [8] 0.019309320 0.017266988 0.011882659 0.010025993 0.009468994 0.006312662

$mids
 [1]  5  7  9 11 13 15 17 19 21 23 25 27 29

$xname
[1] "d$hogehoge.bam"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

次は目的の遺伝子がいくつあるか
グラフ化したい

11 March 2019追記
HeLaのbamファイルとhg38のgtfファイルを使ってfeatureCountsを試した
hg38のfastaとgtfはリンク先を参照
mecobalamin.hatenablog.com
HeLaのsraファイルはSRR6799791で、
hg38のシークエンスデータにhisat2を使ってマッピングした
できたファイルがHeLa.bam

featureCountsを実行する

$ featureCounts -p -B -T 4 -O -t exon -g gene_id -a rename_UCSC.hg38.gtf -o counts.txt HeLa.bam

できたcounts.txtから試しにEGFRの数を抜き出してみる
https://www.ncbi.nlm.nih.gov/gene/1956
上皮成長因子受容体 - Wikipedia

EGFRにはスプライシングバリアントがある
それぞれのaccession numberでカウントをcounts.txtから抜き出す
Rを使う

acc.egfr <- c("NM_005228", "NM_201282", "NM_201283", "NM_201284", "NM_001346897", "NM_001346898", "NM_001346899", "NM_001346900", "NM_001346941")
iso.egfr <- c("a", "b", "c", "d", "e", "f", "g", "h", "i")
var.egfr <- t(rbind(acc.egfr, iso.egfr))

fc <- read.table("counts.txt", header = TRUE, skip = 1, sep="\t")

egfr <- c()
for(i in var.egfr[,1]){egfr <- rbind(egfr, subset(fc, grepl(i, fc$Geneid)))}
cbind(iso.egfr, egfr[c(1,7)])

結果はこうなったけど
これをそのままmRNAのコピー数としていいのか。。。?

       iso.egfr         Geneid            HeLa.bam
134652        a    NM_005228.4                 981
134654        b    NM_201282.1                 254
134653        c    NM_201283.1                 190
134655        d    NM_201284.1                 255
134648        e NM_001346897.1                 494
134649        f NM_001346898.1                 494
134650        g NM_001346899.1                 981
134657        h NM_001346900.1                 963
134651        i NM_001346941.1                 945

RNA-seqその5、Hisat2でマッピング

RNAseqの結果をリファレンス配列にマッピングする
mecobalamin.hatenablog.com

レファレンスデータはヒトのゲノムデータ
Human Genome Resources at NCBI - NCBI
ここからReference Genome Sequenceをダウンロード

28 Feb. 2019追記
ヒトゲノムデータにはデータの書き方の違いで2種類あるらしい
GRCh38とhg38の違い(含むミトコンドリア)
chromosomeの記述の仕方に違いがある
JBrowseで表示したり解析に使うにはhg38がいいのかも
Index of /goldenPath/hg38/bigZips

追記ここまで

20 April 2019追記
ヒトゲノムのデータを作り直した
mecobalamin.hatenablog.com
問題あるかもだけどchromosoneのファイルだけ一つにまとめて
インデックスファイルの作成に使用した
以下のスクリプトではname_dbとpostfixを書き換える

追記ここまで

まずヒトゲノムをhisat2-buildでインデックスファイルに変換する

#!/bin/bash

echo "hisat2 build began"

dir_scripts="$HOME/usr/scripts"
dir_working="$HOME/usr/data"
dir_db="${dir_working}/db"
name_db="GRCh38_latest_genomic"
postfix="fna"

hisat2-build ${dir_db}/${name_db}.${postfix} ${name_db}

input file + 数字 + .ht2という形式で複数のファイルが出力される
GRCh38_latest_genomic.1.ht2
今回は8個だったけどいつも同じファイル数か不明

インデックスファイルができたらいよいよマッピング
hisat2の引数にインデックスファイルのパスと
ファイル名の数字の前までを指定する
マージしたFastqもリード1、2のオプションを付けて読み込ませる
samファイルで出力される

マッピングが終わるとsamtoolsでsamからbamにして
ソートしてindexをつける

stringtieでアノテーションを付ける、
とのことなんだけどよくわかってない
出力されたgtfファイルを見ると
bamに含まれる遺伝子名や場所をまとめたファイルのようだ
transcripだけ読めばカウントできそうだけどどうだろう

#!/bin/bash

echo "hisat2 analysis"

echo "set directories"
dir_scripts="$HOME/usr/scripts"
dir_working="$HOME/usr/data"
dir_db="${dir_working}/db"
name_db="GRCh38_latest_genomic"

echo "open list sra"
dir_list_sra=${dir_scripts}
name_sra="list_sra.txt"
list_filename=$(cat ${dir_list_sra}/${name_sra} | sed 's/\.sra//g')

for i in ${list_filename}
  do
    echo "analyze ${i}"
    dir_out="hisat_${i}"

    mkdir -p ${dir_working}/${dir_out}

    echo "hisat began"
    hisat2 \
      -p 4 \
      -x ${dir_db}/${name_db} \
      --rna-strandness RF \
      --dta \
      -1 ${dir_working}/trim_${i}/ps/ps_${i}_gd_1.fastq \
      -2 ${dir_working}/trim_${i}/ps/ps_${i}_gd_2.fastq \
      -S ${dir_working}/${dir_out}/hisat_${i}.sam \

    echo "samtools began"
    samtools view -bS -@ 4 ${dir_working}/${dir_out}/hisat_${i}.sam |\
    samtools fixmate -@ 4 - ${dir_working}/${dir_out}/fixmate_${i}.bam
    samtools sort ${dir_working}/${dir_out}/fixmate_${i}.bam \
      -o ${dir_working}/${dir_out}/sort_${i}.bam \
      -m 10G \
      -@ 4
    samtools index ${dir_working}/${dir_out}/sort_${i}.bam

    echo "stringtie began"
    stringtie \
      ${dir_working}/${dir_out}/sort_${i}.bam \
      -p 4 \
      -o ${dir_working}/${dir_out}/stringtie_${i}.gtf \
      -l stiringtie_${i}

    echo "analysis finished"

  done

こうやってできたbamファイルをJBrowseで表示した

mecobalamin.hatenablog.com

18 April 2019追記
ファイルのサイズが大きい時にエラーが出てスクリプトが止まる
samtool sort の時とstringtieで起きた

samtool sortのメモリ指定を変えたほうがいいかも
ヘルプによると-m optionはmemory per threadとのこと
Windowsを起動して空きメモリは16〜20ぐらいなので
4Gとか5Gを指定するのがいいかも
試した感じでは止まらずに動いた

Stringtieは-cと-jオプションを使うといいらしい
github.com
どの程度の値がちょうど良いのか
生物学的な意味があるかもしれないが
とりあえず倍にした

-c 5 (default 2.5)
-j 2 (default 1)

これでプログラム的にはオッケー
止まっていたファイルでも動くようになった

RNA-seqその4、Fastqファイルのマージ

クリーニングしたFastqファイルを一つにまとめる
mecobalamin.hatenablog.com

plinseq-liteで評価の良かったリードだけをマージする
ファイル名に"gd"を含むファイルを使うことになる
read 1とread 2を区別する

マージしたファイルは、マージ前と同じディレクトリに保存される

#!/bin/bash

dir_scripts="$HOME/usr/scripts/"
dir_working="$HOME/usr/data/"

dir_list_sra=${dir_scripts}
name_sra="list_sra.txt"
list_filename=$(cat ${dir_list_sra}/${name_sra} | sed 's/\.sra//g')

for i in ${list_filename}
  do
    dir_div_file="${dir_working}/raw/div_${i}"
    list_div_file="list_div_${i}.txt"
    list_read_1=$(cat ${dir_div_file}/${list_div_file} | grep _1_)
    list_read_2=$(cat ${dir_div_file}/${list_div_file} | grep _2_)

    echo "merge read 1"
    :> ${dir_working}/trim_${i}/ps/ps_${i}_gd_1.fastq
    for j in ${list_read_1}
      do
        cat ${dir_working}/trim_${i}/ps/ps_${j/_1_/_}_gd_1.fastq >> \
          ${dir_working}/trim_${i}/ps/ps_${i}_gd_1.fastq
        #echo ${i}, ${j/_1_/_}
      done

    echo "merge read 2"
    :> ${dir_working}/trim_${i}/ps/ps_${i}_gd_2.fastq
    for j in ${list_read_2}
      do
        cat ${dir_working}/trim_${i}/ps/ps_${j/_2_/_}_gd_2.fastq >> \
          ${dir_working}/trim_${i}/ps/ps_${i}_gd_2.fastq
      done
  done


14 April 2019追記
複数のファイルを処理していたら
trimmomaticのあとディスクの容量が足りなくなった
いくつか中間ファイルを消していたら
rawのディレクトリを間違って消してしまって
一緒に分割ファイルのリストも無くなった。。。

次に進めず。。。。

分割ファイルを再作成するスクリプト

mkdir $HOME/usr/data/raw/
f="$HOME/usr/scripts/list_sra.txt"
fn=$(cat ${f} | sed 's/\.sra//g')
for i in ${fn}; do mkdir $HOME/usr/data/raw/div_${i}; done
for i in ${fn}; do for j in {1..2}; do for k in 01 02 03 04 05 06 07 08 09 10; do :> $HOME/usr/data/raw/div_${i}/div_${i}_${j}_${k}; done; done; done
for i in ${fn}; do ls $HOME/usr/data/raw/div_${i}/ > $HOME/usr/data/raw/div_${i}/list_div_${i}.txt; done

空のファイル群を作成raw/に作成したあとに
ファイルのリストを作成する
あまりきれいな書き方ではないが一応大丈夫っぽい
コマンドライン上で動かしていたのでfor文も一行で書いている
このままシェルスクリプトファイルにしても動くかも

追記ここまで


20 April 2019追記
別の処理中にペアエンドのリードの数が1と2で違っている雰囲気があったので確認
前にも確認してたけど念のためもう一度
あとスクリプトの記録

$ cat hogehoge_gd_1.fastq | wc -l
61570060
$ cat hogehoge_gd_2.fastq | wc -l
61570060

リードの数は同じ
4の倍数かどうかも確認
割り算だと整数で返してくるので余りを求める

$ echo $((61570060%4))
0

いくつかマージ後のファイルを調べたけど大丈夫そう
マージ前は?

$ for i in 01 02 03 04 05 06 07 08 09 10; do echo $(($(cat hogehoge_${i}_gd_1.fastq | wc -l)%4)); done

こっちも問題なさそう

追記ここまで