mecobalamin’s diary

人間万事塞翁が馬

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

Atomでscript

普段使っているエディターはAtom
殆どいじっていないが、
pythonとRを実行できるようにしてある
必要なpackageは
scriptとlanguage-r

packageをインストールしたら
windowsのシステム環境変数
Rscriptのディレクトリにパスを通す

\R-3.5.0\bin

windowsの設定 -> 環境変数を検索 -> システムのプロパティ -> 環境変数
または
コントロールパネル -> システム -> システムのプロパティ -> 環境変数
からpathを編集する

やってたはずだけど
windows10を再インストールしたときに
やり忘れてたみたいなので

これどっかに書いてあったはずだけど。。。

あとlanguage-rはそのままだとエラーが出たはず
ファイルの記入ミスだったと思う
修正方法を載せたサイト見つけたら追記予定

27 May 2019追記
まずcummulative maxでエラーが出る件についてはここを参考に修正する
Atom editor r-language error - Failed to load snippets - Stack Overflow
Duplicate key 'Cummulative max' · Issue #17 · REditorSupport/atom-language-r · GitHub

次にgrepのところでエラーが出るが、
同じキーが有るのが良くないっぽい

  'Grep':
    'prefix': 'grep'
    'body': 'grep(${1:pattern}, ${2:x}, ${3:ignore.case = ${4:FALSE}}, ${5:perl = ${6:FALSE}})'
  'Grep':
    'prefix': 'grep'
    'body': 'grep(${1:pattern}, ${2:x}, ${3:ignore.case = ${4:FALSE}}, ${5:perl = ${6:FALSE}}, ${7:value = ${8:FALSE}}, ${9:fixed = ${10:TRUE}})'

最初のGrepgrepをGrepaとgrepaに変更

これでとりあえずエラーは出なくなった

追記ここまで

16 October 2020 追記
Atomの出力に日本語を表示する
言語ごとに設定が違うっぽいが
pythonの場合は

[file] -> [initial script] -> init.coffee]

process.env.PYTHONIOENCODING = "utf-8";
を追記する

追記ここまで

メモ: コマンドのリンク先とWSLのCPU使用率

condaでパッケージをインストールするときの注意点
pythonとパッケージをインストールしたはずなんだけど
コマンド実行中にモジュールが見つからないってエラーが出ることがある

実際Trinityを使っててnumpyがないってエラーがでた
パッケージを入れてあるか確認。

$ conda list

numpyの1.15.4がインストールされてる。
pythonは3.6.8

pythonを実行して確認するとバージョンが違う

$ python --version
Python 2.7.15rc1

/usr/binにインストールされてるpythonを使っていたようだ
ubuntuには予めpythonがインストールされてて
condaで入れたpython/packageとは別になる
さてどうしよう。。。

このときは~/bin以下にminiconda3で入れたpythonのリンクを貼った

~/.bashrcにこんな感じでpathを記入して~/binにpathを通す
すでに書かれている場合は追記で。
前ほど優先順位が高いので、他のプログラムで使っているコマンドとの兼ね合いもある

export PATH="$HOME/bin:/usr/bin:$HOME/miniconda3/bin:$PATH"

~/binにpythonリンクを貼る

$ ln -s $HOME/miniconda3/bin/python $HOME/bin

これでcondaで入れたpythonとパッケージを使えるようになる

それとWSLの問題について
WSLでコマンドを実行中にwindowsのタスクマネージャーを見ると
CPUの使用率がやたらと高い時がある
perlだったりubuntuだったりならわかるが
windows defender antivirus serviceの使用率が
30-40%程度になることがある

ググるwindowsに以前からある問題らしい
ここを参考に設定をした
Windows10の重い遅い対策 - Qiita

やったのはMsMpEng.exeを検疫対象から外して
WSLのdataが入るディレクトリを丸ごと除外した

書き込んだファイルをすべてチェックしようとするため
書き込みの多いコマンドを使うとチェックが続いて
結果CPUの使用率が上がる
Trinityでは大量にfastqファイルが生成されるらしく
それがいちいち検疫される

この設定の結果、windows defender antivirus serviceの
CPU使用率がやや下がった
常に使用率1番だったのが順位が入れ替わるようになって
10-20%台まで落ちてる
少しでも他にリソースが回せるようになったのは助かる

RNA-seqその2、データのダウンロードと変換

シークエンスのデータの入手方法には

  1. 公共のデータベースからシークエンスデータをダウンロードする
  2. シークエンスを行う

などがある。

今回は公共のデータベースのデータを使う
公共データベースによって登録されているファイル形式は異なる
NCBIはSRA、DDBJ/EMBLEはfastq形式である
シークエンスの結果は一般にはfastq形式で
SRAはFastqに情報を追加して圧縮した形式である

解析にはFastq形式を使用するので、ツールを用いてSRAからFastqに変換をする必要がある。
解析に使用するシークエンスデータが複数ある場合
ファイル名を記入したリストファイルの作成してあると一括で処理できる。

まずはダウンロード。
Home - SRA - NCBI

例題としてHeLaのRNAseqを探す
検索窓に"HeLa RNAseq"と入れて検索すると312個引っかかった

試しにこのデータを使ってみる
RNA-seq of HeLa cells - SRA - NCBI
しかし、データの評価の仕方がまだよくわからない
これを選んだのはなんとなく。。。
データのアクセッションナンバーはSRR6799791で、
アドレスはここで探せる
SRA Explorer

実際に探したアドレスを使ってファイルをダウンロード

$ cd $HOME/usr/data/
$ mkdir ./sra/
$ cd ./sra/
$ wget ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByRun/sra/SRR/SRR679/SRR6799791/SRR6799791.sra

サイズが2.9 GBあるので時間がそれなりに掛かる
"$HOME"は、チルダで書くのがいいんだろうけど
スクリプト内で"$HOME"を使っているのでこの表記で。

SRA Toolkitを入れてればコマンドも使えるようだけど
使ったことがないので割愛
SRA Toolkit 使い方 公開データのダウンロードとsra fastq変換 – バイオインフォ 道場 [bioinfo-Dojo]

ダウンロードしたファイルはSRA Toolkitsに含まれる
fastq-dumpを使ってfastqに変換する
SRA Toolkitは前回インストール済み
RNA-seqその1、インストール - mecobalamin’s diary

16 April 2020 追記
SRA Explorerで生成したアドレスではダウンロードできなくなっているっぽい
SRA toolkitのprefetchでダウンロードする
prefetchを実行する前にvdb-confingを実行する
Toolkit Documentation : Software : Sequence Read Archive : NCBI/NLM/NIH
vdb-configのあるディレクトリで以下のように実行する

./vdb-config -i

RAMのサイズ以外は変更していない

追記ここまで

fastq-dumpで変換しただけでは動かないコマンドがあったりする
実際Trinityが動かなかった
NCBI SRA Toolkitの使い方 - アメリエフのブログ
Trinityはアセンブルを行うツール
詳しくはまた今度。

で、sraファイルを複数置換できるようにスクリプトを書いた
まずsraファイルのリストを作成

$ ls $HOME/usr/data/sra/ > $HOME/usr/scripts/list_sra.txt

以下のスクリプトこの名前"RNAseq01_SratoFastq.sh"で保存
保存場所は$HOME/usr/scripts/

#!/bin/bash

echo "change directory to $HOME/usr/scripts/"
cd $HOME/usr/scripts/

w_dir="$HOME/usr/data"
scripts_dir="$HOME/usr/scripts"
sra_dir="${w_dir}/sra"
out_dir="${w_dir}/raw"

list_name="list_sra.txt"
list_dir="$HOME/usr/scripts"

echo "making directory"
mkdir -p ${out_dir}

echo "run fastq-dump"
for i in $(cat ${list_dir}/${list_name} | sed 's/\.sra//g')
  do
    file=${list_dir}/${i}.sra
    fastq-dump \
      --split-files \
      --defline-seq '@$sn[_$rn]/$ri' \
      --outdir ${out_dir} \
      ${sra_dir}/${i}.sra
    sed -i -e 's/_forward//' ${out_dir}/${i}_1.fastq
    sed -i -e 's/_reverse//' ${out_dir}/${i}_2.fastq
  done

"--defline-seq"でRead1とRead2の区別がつくように、
配列名の最後に/1または/2をつけている
NCBI SRA Toolkitの使い方 - アメリエフのブログ
元データがペアエンドのデータなので"--split-files"を指定する

シェルスクリプトの実行方法はこちら

$ cd $HOME/usr/scripts/
$ bash RNAseq01_SratoFastq.sh

ファイルに実行権限を与えて実行しても良い

$ cd $HOME/usr/scripts/
$ chmod 755 RNAseq01_SratoFastq.sh
$ ./RNAseq01_SratoFastq.sh

chmodの実行は最初の一回だけ行う
【 chmod 】コマンド――ファイル/ディレクトリのパーミッション(許可属性)を変更する:Linux基本コマンドTips(14) - @IT

結果はrawに保存される
ファイル名はSRR6799791_1.fastq及びSRR6799791_2.fastqとなる
1、2には対になるリードがそれぞれ保存されている

十分にメモリとストレージがあれば、このままでいいのだが、
使っている環境に対してファイルサイズが大きすぎるのでファイルを分割する
fastq形式は1つのリードを4行で表示するので
4行単位で分割する
ここを参考にしてスクリプトを書いた
大きいfastqファイルを分割マッピング(tophat, linux) - script of bioinformatics
fastqを分割するツールもあった
fastq / fastaの操作ツール seqkit - macでインフォマティクス

とりあえずファイルを10分割する
ファイル名は"RNAseq02_divideFastqFiles.sh"
このスクリプトを実行すると10個に分割されたfastqと
ファイルリストのファイル"list_div_SRR6799791"が作成される

#!/bin/bash

echo "change directory to $HOME/usr/data/raw/"
cd $HOME/usr/data/raw/
scripts_dir="$HOME/usr/scripts"

w_dir="$HOME/usr/data"
out_dir="${w_dir}/raw"

list_name="list_sra.txt"
list_dir="$HOME/usr/scripts"

n=10

for i in $(cat ${scripts_dir}/list_sra.txt | sed 's/\.sra//g')
  do
    div_file="div_${i}"
    echo "count row number"
    read=$(grep "\+${i}" $HOME/usr/data/raw/${i}_1.fastq | wc -l)

    sp=$(expr \( \( ${read} \/ ${n} \) + 1 \) \* 4)

    echo "making directory"
    mkdir -p $HOME/usr/data/raw/${div_file}/
    echo "read=${read}, sp=${sp}"
    echo "dividing fastq file"

    for j in {1..2}
      do
        split --numeric-suffixes=01 -l ${sp} $HOME/usr/data/raw/${i}_${j}.fastq ${div_file}_${j}_
        mv ${div_file}_${j}_* ./${div_file}
      done
    ls ${out_dir}/${div_file}/ > ${out_dir}/${div_file}/list_${div_file}.txt
  done

RNA-seqその1、インストール

wsl上でRNA-seqの解析を行う
手順を教えてもらったのでそのメモ

メモするのは

  1. コマンドのインストール(このページ)
  2. RNA-seqその2、データのダウンロードと変換 - mecobalamin’s diary
  3. RNA-seqその3、trimmomatic - mecobalamin’s diary
  4. RNA-seqその4、Fastqファイルのマージ - mecobalamin’s diary
  5. RNA-seqその5、Hisat2でマッピング - mecobalamin’s diary
  6. RNA-seqその6、featureCountsでリードカウント - mecobalamin’s diary
  7. RNA-seqその7、TrinityでアセンブルしてBlastにかける - mecobalamin’s diary
  8. RNA-seqその8、edgeRを使ったTMM正規化 - mecobalamin’s diary
  9. RNA-seqその9、DESeq2を使った正規化 - mecobalamin’s diary
  10. RNA-seqその10、Dockerで環境構築 - mecobalamin’s diary

教えてもらったのは1-7まで。
8と9はウェブから情報を集めて自分でやってみた。

それと表示に必要なJBrowseのインストールなど

  1. JBrowseのインストール、三度目の正直 - mecobalamin’s diary
  2. JBrowseでbamファイルを表示する - mecobalamin’s diary
  3. bigwigの作成と表示 - mecobalamin’s diary
  4. JBrowseにplug-inを追加する - mecobalamin’s diary
  5. hg38のfastaとgtf/gff3 - mecobalamin’s diary

ファイルの整形だったりクオリティのチェックだったり
他にもやっているけど大まかにはこんなところ
目的は実行に使うコマンドが動くコードを記録すること
教えてもらった元のコードはクラスターコンピュータで動いていた
そのコードをノートPCのwslで動くように書き換えた
コードの検証のため計算結果とグラフを載せるが、
結果の検証は実力不足でできてない(特に自分でやってみた正規化のあたり)
コードが動く ≠ 計算結果が正しい、ということに注意したい

Dockerで環境を統一できたら
結果の検証に集中できると思う(けどやってない)

ここではwslでの実行に必要なコマンドのインストールと設定を記載する

このあたりのサイトも参考にした
RNA-Seq | 遺伝子発現量解析

使用しているpcのスペック
CPU: Intel Core i5-7200U CPU @ 2.5 GHz
Memory: 24.0 GB (8 GB + 16 GB)
Storage: 250 GB SSD + 500 GB HDD -> 960 GB SDD + 1 T SSD
OS: Windows 10 Home version 1803 build 17134.523
WSL: 18.04.1 LTS

メモリを増設してあるがいたって普通のノートPC、
と思っているけどそうでもないらしい
【山田祥平のRe:config.sys】普通のPCが普通に買えない - PC Watch

CPUはこのスペックでも1日とかで終わってくれる
メモリとストレージは多いほどいいけどノートPCだとちょっと厳しいか
SSDも安くなってきてるからいずれ交換できればいいが。
それとwslはファイルのやり取りがものすごく遅いらしいので
HDDよりはSDD、外付けよりも内蔵のストレージを使いたいが問題がある

いくつかのコマンドはファイルの読み書きがとても多く
タスクマネージャーを見てるとSSDの寿命に影響しそう
1日中ディスクにアクセスとかやってくれる
なのでRAMディスク、外付けストレージをうまく使う

あとwslを使うときの注意点がある
ファイルシステムの関係でwindows側からwslのファイルを編集してはいけないらしい
実際ファイルがおかしくなったことがあった
今後のアップデートで変わる可能性があるらしいけど、現状は不可っぽい
出力されたファイルや設定ファイルなどをwindowsのエディタ等から編集しない
編集する場合はファイルをコピーして行う

次にコマンド・プログラムのインストールについて。
wslでインストールするコマンドと
windowsにインストールするプログラムとがある

wslにインストールするのは

  • Linuxで動くコマンドのバイナリ
  • minicondaからインストールするpythonコマンド

windowsにインストールするのは

  • R
  • Rのライブラリ


まずwslで使用するコマンドのインストールする
アーカイブのダウンロードして、解凍、リンクを貼る、
ということをコマンド毎にする

コマンドのダウンロードはwgetを使う
【 wget 】コマンド――URLを指定してファイルをダウンロードする:Linux基本コマンドTips(24) - @IT
ダウンローダーは他にもあるようですが。。。

解凍は圧縮形式に合わせる
【 tar 】コマンド――アーカイブファイルを作成する/展開する:Linux基本コマンドTips(40) - @IT
【 unzip 】コマンド――ZIPファイルからファイルを取り出す:Linux基本コマンドTips(35) - @IT

リンクは$HOME/usr/localに展開したコマンドファイルから
パスの通っている$HOME/binにシンボリックリンクを貼っている
細かいルールを知らないので自己流かもだけど。。。

ちなみにwslでパスは$HOME/.bashrcに記入する

export PATH="$HOME/bin:$HOME/miniconda3/bin:$PATH"

ファイルがなければ作る
bashでパスを書く設定ファイルの選び方にも
なんかルールがあるっぽいがとりあえず。
パスは先に書かれている方から優先順位が高い



実際にコマンドをインストールする

  • sra toolkit

NCBIにアップロードされている
シークエンスのデータはsra形式になっている
これを展開するにはsra toolkitを使う
ダウンロード先と参考にしたサイトはこちら
https://www.ncbi.nlm.nih.gov/sra/docs/toolkitsoft/
NCBI SRA Toolkitの使い方 - アメリエフのブログ

wgetアーカイブをダウンロードしてtarで解凍

$ wget https://ftp-trace.ncbi.nlm.nih.gov/sra/sdk/current/sratoolkit.current-ubuntu64.tar.gz
$ tar -zxvf sratoolkit.current-ubuntu64.tar.gz

シンボリックリンクを貼る

$ cp sratoolkit.2.9.2-ubuntu64/ ~/usr/local/
$ cd ~/bin
$ ln -fs $HOME/usr/local/sratoolkit.2.9.2-ubuntu64/bin/fastq-dump ./
  • prinseq-lite, FastQC, featureCount

prinseq-liteとFastQCもインストールしてリンクを貼る
prinseq-lite
PRINSEQ - Browse /standalone at SourceForge.net
PRINSEQ @ SourceForge.net
[Download] -> [Standalone] -> [prinseq-lite-0.20.4.tar.gz]をダウンロードする
prinseq-lite.plのパーミッションを変更する

FastQC
Babraham Bioinformatics - FastQC A Quality Control tool for High Throughput Sequence Data
[Download Now] -> [FastQC v0.11.8 (Win/Linux zip file)]をダウンロードする
展開したファイルのfastqcのパーミッションを変更する

$ chmod 755 fastqc

featureCountも同様にインストールする
mecobalamin.hatenablog.com

  • miniconda

次にminicondaを使ってpythonコマンドをインストールする
trimmomaticとtrinityはbiocondaのパッケージのひとつで、
minicondaをまずインストールして必要なパッケージを追加する

anacondaとminicondaの比較
https://echomist.com/anaconda-vs-miniconda/

minicondaは3.x系をインストールする
RNA-seqで使うコマンドによっては2.x系が必要な場合もあるが、
その時は2.x系の環境をつくってインストールする
念の為minicondaのpython3から$HOME/binにリンクを張って3.x系を使うようにしておく

$ ln -s $HOME/miniconda/bin/python $HOME/bin

minicondaの配布元とインストール用シェルスクリプトのアドレス
Miniconda — Conda documentation
https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

シェルスクリプトをダウンロードして実行する

$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh

実行後はターミナルを再起動してパスを読み込ませる
.bashrcにパスが書かれている場合はを.bashrcを再読込する
.bashrcの再読込のコマンドはこれ

$ source $HOME/.bashrc
  • anaconda package, Trinity、fastq-stats、numpy、hisat2及びstringtie

パッケージはここからインストール元を探す
https://anaconda.org/
パッケージ名で検索をかけてダウンロード方法を探す
例えばtrimmomaticならインストール元はここで
Trimmomatic :: Anaconda Cloud
インストール方法を見るとこう書かれてる

$ conda install -c bioconda trimmomatic

biocondaはchannel名で、trimmomaticがpackage名で、
channelが登録されているかを確認するには

$ conda config --get channel

登録されてなければ次のようにして登録する

$ conda config --add channel <channel名>

チャンネルによってインストールされる内容が違っていたりする
一緒にインストールされるパッケージのバージョンが変わったり
インストールされたりされなかったりもある
必要なパッケージが揃っているかの確認も必要

追加するのはTrinity、ea-utils、fastq-stats、numpy、hisat2及びstringtie

$ conda install -c bioconda trinity
$ conda install -c bioconda ea-utils
$ conda install -c bioconda numpy
$ conda install -c bioconda hisat2
$ conda install -c bioconda stringtie
  • salmon

trinityでsalmonを使うが、biocondaから配布されているのは
バージョンが古い(v0.8.1)のでオリジナルの配布元から
binaryをダウロードして使う(v.0.12.0)
Overview – Salmon: Fast, accurate and bias-aware transcript quantification from RNA-seq data

$ wget https://github.com/COMBINE-lab/salmon/releases/download/v0.12.0/salmon-0.12.0_linux_x86_64.tar.gz

miniconda3/binにリンクを貼る

$ cp salmon-0.12.0_linux_x86_64/ $HOME/usr/local/
$ ln -s $HOME/usr/local/salmon-0.12.0_linux_x86_64/bin/salmon $HOME/miniconda3/bin/

先にv0.8.1のリンクがbinに貼られている場合はlnコマンドの前にリンクを解除する

$ unlink $HOME/miniconda/bin/salmon

29 May 2019追記
hisat2とstringtieを上記のコマンドでインストールすると
pythonのバージョンを2.7にしていたようだ
確認不足だった
この2つのコマンドはバイナリーを使ったほうがいいかも

hisat2
https://ccb.jhu.edu/software/hisat2/index.shtml
バイナリーのリンク
http://ccb.jhu.edu/software/hisat2/dl/hisat2-2.1.0-Linux_x86_64.zip

stringtie
StringTie
バイナリーのリンク
http://ccb.jhu.edu/software/stringtie/dl/stringtie-1.3.6.Linux_x86_64.tar.gz

それぞれwgetでダウンロードしてファイルを展開、
$HOME/binにシンボリックリンクを貼る

condaでインストールして使う場合はpython3とpython2の環境を分ける
別に記事を書く
mecobalamin.hatenablog.com

追記ここまで

23 April 2020 追記
Hisat2とstringtieをインストールしたら
python3にインストールされた
もしかしたら切り替えが必要なくなったのかも

追記ここまで


これで全部、のはず。。。
足りないのは適宜インストールする
インストールしたはずのパッケージが見つからない時がある
condaは3.xでそっちにインストールしているのに
wslに元から入っているpythonが2.xだったりして
パスの関係でwslのpythonで実行されていると見つからないってなる
以前そんな事があって、そのときはパスの優先順位を変えた
mecobalamin.hatenablog.com

pipを使う方法もあるが、anacondaと併用してはいけないそうだ
注意することかも
condaとpip:混ぜるな危険 - onoz000’s blog



次にwindowsで動かすプログラム

  • R

Windows版をインストールする
The Comprehensive R Archive Network
RGuiか、AtomでR scriptでRのスクリプトを実行できるようにする

  • edgeR

Rに必要なライブラリをインストールする
bioconductorを利用してインストールする
mecobalamin.hatenablog.com

  • Atom (必要なら)

エディタで、パッケージの追加でRコマンドをスクリプトを書きつつ実行できる
atom.io
学生の頃はEmacsだったけど宗旨替え
wslではvi

/path/to/R/R-3.x.x/Rscript.exeにwindows環境変数でパスを通す
Rのアップデートをするたびに通し直す
mecobalamin.hatenablog.com

  • script

スクリプトの実行に必要なパッケージ
script

  • language-r

scriptでRを実行するのに必要
ATOMをR言語に対応させる方法 - Qiita
パッケージの更新が遅れているようで
設定ファイルにエラーが残ってるがそのままでも問題ない
修正方法もあったので直してあるけどそのサイトが見つからない。。。

JBrowseのインストール 続き

24 February 2019 追記
やり直したので新しい方のリンク
mecobalamin.hatenablog.com

xlocale.hがなくてJBrowseのインストールで詰まった

前回も参照したサイトに方法があった。
xlocale.h not found on Ubuntu while installing · Issue #16 · agracio/electron-edge-js · GitHub

無理やりだけどリンクを貼る。

$ sudo ln -s /usr/include/locale.h /usr/include/xlocale.h

今度はdb.hがない
まとめてエラー出してくれよ―
あってるかわからないけどminicondaのlibdbに同じ名前のがあったので
これもリンクを貼る

$ sudo ln -s /home/hogehoge/miniconda3/pkgs/libdb-6.1.26-0/include/db.h /usr/include/

condaでlibdbのパッケージをインストールしても良さそう

$ conda install -c bioconda libdb 

と、ここまで書いてみたのだが、
実際いろいろやってて忘れてきてるので
ざっとまとめてみる

手順は

  1. JBrowseのアーカイブを展開し、/var/www/html/以下などに移動する
  2. JBrowseのディレクトリのオーナーを変更する
  3. 必要なpluginを/jbrowse/pluginにコピーする
  4. package.jsonとyarn.lockを別ディレクトリにコピーをとっておく
  5. node.jsをインストールする
  6. /jbrowse/setup.shを実行する
  7. volvoxとyeastのデータディレクトリができれば成功
  8. データの入ったディレクトリを/jbrowse/にコピーする
  9. ウェブサーバー経由でブラウザに表示する

JBrowseの配布元はここ
jbrowse.org

setup.shを動かす前までの作業も紹介されてる
こんな感じ。

curl -O https://github.com/GMOD/jbrowse/releases/download/1.16.1-release/JBrowse-1.16.1.zip
unzip JBrowse-1.16.1.zip
sudo mv JBrowse-1.16.1 /var/www/html/jbrowse
cd /var/www/html
sudo chown `whoami` jbrowse
cd jbrowse
./setup.sh # don't do sudo ./setup.sh

JBrowseのアーカイブにはpackage.jsonが含まれていて、
setup.shを実行するとpackage.jsonをもとに
必要なパッケージをインストールしてくれる

node.jsはここ
nodejs.org
npmも一緒にインストールされる
忘れずにパスを通す

前回も書いたけど、使うperlでエラーが出たりした。
Perlubuntuにはじめから入っている(/usr/bin/)のが問題なさそう。
setup.shがエラーを吐かなかった。
minicondaのはコンパイラを示すディレクトリがなんか変で
コンパイルエラーが出る

インストールに問題があってやり直すときの注意点。
setup.shを何度も実行するとインストールされる
パッケージの依存関係がおかしくなる様子。
追記があるのかpackage.jsonとyarn.lockのサイズが変わってく。
なので、setup.shを実行する前に
package.jsonとyarn.lockを削除して、
アーカイブ展開直後の変更の加えられていない
ファイルと置き換えるとうまくいった

それと、setup.shの実行にsudoを使ってはいけないらしい
まずJBrowseのディレクトリ以下についてオーナーを変更する
それからsetup.shを実行する

つくられたvolvoxとyeastのデータはブラウザで表示できる
以前やったみたいにpowershellpythonを使って
ウェブサーバーを立ち上げる
mecobalamin.hatenablog.com
サーバー経由でファイルを読み込ませるとうまくいった

http://192.168.100.110:8080/jbrowse-1.16.1-release/index.html?data=sample_data%2Fjson%2Fvolvox

こんな感じに表示される
f:id:mecobalamin:20190118200501p:plain

JBrowseのインストール

24 February 2019 追記
やり直したので新しい方のリンク
mecobalamin.hatenablog.com

ゲノムデータをブラウザで表示するツールにJBrowseがある。
JBrowse · A fast, embeddable genome browser built with HTML5 and JavaScript
元論文はこちら
JBrowse · A fast, embeddable genome browser built with HTML5 and JavaScript

仕事で必要なので、試しにwslにインストールした。

JBrowseのアーカイブをダウンロードして展開。

$ wget https://github.com/GMOD/jbrowse/archive/1.16.1-release.tar.gz
$ tar -zxvf 1.16.1-release.tar.gz

で、できたディレクトリjbrowse-1.16.1にある
setup.shを実行するだけで、セットアップ終了、
のはずなのだが、それ以外のところでいろいろ引っかかった。

このシェルスクリプトを動かすにはperlが必要。
別件でインストール済みだったminicondaの
perlをそのまま使うことにした。
結局perl入れなおすことになるのだが。

ちなみにminicondaのインストール方法は配布元から
シェルスクリプトを落としてきて実行するだけ。
配布元はこちら
Miniconda — Conda documentation

$ cd ~/
$ cd mkdir ./tmp
$ cd ./tmp
$ wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh

perlも含まれている。

これでオッケーのはずだったのだが、
perl moduleのコンパイルエラーが出る。
logファイルにはこんな感じで出力されてる。

/bin/sh: 1: /tmp/build/80754af9/perl_1527832170752/_build_env/bin/x86_64-conda_cos6-linux-gnu-gcc: not found

x86_64-conda_cos6-linux-gnu-gccが見つからない。
condaでインストールできるらしい
x86_64-conda_cos6-linux-gnu-c++ command not found · Issue #770 · RcppCore/Rcpp · GitHub

minicondaにパッケージをインストールするときは、
ここから探す
:: Anaconda Cloud

$ conda install -c conda-forge/label/gcc7 gxx_linux-64

jbrowse-1.16.1/setup.shを実行するが、
まだコンパイルエラーが出る。。。

インストールされてないのはこれら。

 ! Installing the dependencies failed: Module 'Devel::Size' is not installed, Module 'DB_File' is not installed, Module 'Bio::FeatureIO' is not installed, Module 'DBD::SQLite' is not installed, Module 'Bio::SeqFeature::Annotated' is not installed, Module 'Heap::Simple::XS' is not installed, Module 'JSON::XS' is not installed, Module 'PerlIO::gzip' is not installed, Module 'DBI' is not installed

perl moduleのコンパイルエラーなので、
cpanを使ったインストールを試したけどそれもだめ。
ちなみにcpanとは
CPAN - Wikipedia
cpanのインストール方法は

$ perl -MCPAN -e shell

perl moduleのインストールは

$ cpan
cpan[1]> install PerlIO::gzip

みたいにする

それでも同じようにコンパイルエラーが出る
上でも出したけどよくよく見るとコンパイラのpathがおかしい
こんなディレクトリないな

 /tmp/build/80754af9/perl_1527832170752/_build_env/

perlで使うコンパイラディレクトリは

~/miniconda3/lib/5.26.2/x86_64-linux-thread-multi/Config.pm

で指定されてるけどなんかいろいろ変だ。

別のPCに入れてあったminicondaを確認すると同じように
変なpathだったので、書き換えてしまったわけではなさそう。
Perlの入れ直しをする

$ conda install -c conda-forge perl

Config.pmで指定されているpathは"/usr/local/lib"になった
これでsetup.shを実行するとコンパイラは見つかったっぽいが。。。
今度はincludeファイルがないときた。。。

perl.h:738:13: fatal error: xlocale.h: そのようなファイルやディレクトリはありません
 #   include <xlocale.h>

配布がなくなったみたい
xlocale.h not found on Ubuntu while installing · Issue #16 · agracio/electron-edge-js · GitHub

さてどうしたものか。。。
続きます

sedの使い方

ファイルサイズが10 MBで中身が10万行を
超えるようなテキストファイルで、
列のラベルによって置換する文字を
変えるシェルスクリプトを書いた

例えばn列がhogehogeの場合、m列をaaaからbbbに変えて
n列がhugahugaの場合、m列をaaaからcccに変えるような
シェルスクリプト

まずはgrepで置換する行を選んで、
sedで置換する方法でやった
一行ずつ結果を出力を書き込むので
時間がかかる。。。。

#!/bin/bash

dir=`pwd`
filename=largetext.txt

filein=${dir}/${filename}
fileout=${dir}/rename_${filename}
filetmp=${dir}/tmp_${filename}

:> $fileout
while read line; do
        if echo $line | grep hogehoge > ./null; then
                echo $line | sed 's/aaa/bbb/' >> $fileout
        else
                echo $line >> $fileout
        fi
done < $filein

mv $fileout $filetmp

:> $fileout

while read line; do
        if echo $line | grep hugahuga > ./null; then
                echo $line | sed 's/aaa/ccc/' >> $fileout
        else
                echo $line >> $fileout
        fi
done < $filetmp

人に聞いたらこのサイトを教えてもらった
sedでこういう時はどう書く? - Qiita
sedで特定の文字列を含む場合の条件付ができる

sed -e '/[パターン]/s/[置換前]/[置換後]/'

パターンにマッチする場合に
置換前の文字列を置換後の文字列に置換する
オプションを-rに変えると拡張正規表現
パターンマッチができる

書き直したスクリプトがこれ

#!/bin/bash

dir=`pwd`
filename=largetext.txt

filein=${dir}/${filename}
fileout=${dir}/rename_${filename}
filetmp=${dir}/tmp_${filename}

cat ${filein} | sed '/hogehoge/s/aaa/bbb/' > ${fileout}

mv ${fileout} ${filetmp}
:> ${fileout}

cat ${filetmp} | sed -e '/hugahuga/s/aaa/ccc/' > ${fileout}
:> ${filetmp}

実行結果が分のオーダーから秒のオーダーまで短縮
スクリプトもスッキリしたし知らないって不幸

catの結果をsedで読み込んでいるけど
sedは引数にファイルを取れるので
もうちょっときれいに書けるかも

あと":"は何もしないってコマンドらしい

:> filename

で空のファイルを出力する