JBrowseのインストール 続き

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 

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

基本はこれ
jbrowse.org

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

インストールされてればいいけど、node.jsが必要。
npmも一緒にインストールされる。
nodejs.org
忘れずにパスを通す。

Perlubuntuにはじめから入っている(/usr/bin/)のがよさげ。
setup.shがエラーを吐かなかった。
minicondaに入ってるのはエラーが出る

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

ただしうまくインストールできなくて何度か実行していると
依存関係がおかしくなるのか、ますますエラーがひどくなるので
アーカイブを展開し直してインストールするのがいいかも。
package.jsonとyarn.lockのコピーを別のディレクトリに残しておいて
setup.shを再実行するときにはそれと置き換えるとエラーがないので、
なにか追記されているみたい。
setup.shは今の所JBrowseのディレクトリ以外にアクセスしていない様子。

最終的にvolvoxとyeastのデータができれば成功らしいが。。。
jbrowseのディレクトリにあるindex.htmlをwindowsのブラウザに
ドロップしても、アドレスを直接打ち込んでもだめ。

mecobalamin.hatenablog.com
以前やったみたいにpowershellpythonを使って
ウェブサーバーを立ち上げて、
サーバー経由でファイルを読み込ませるとうまくいった

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

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

JBrowseのインストール

ゲノムデータをブラウザで表示するツールに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

$ 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

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

コードにシンタックスハイライト

コードに色付してPowerPointに貼り付けたい。
リッチテキスト形式であれば
シンタックスハイライトをつけたまま
貼り付けられるそうだ。
Keynote(Mac版パワポも)にソースコードを貼る - Qiita

普段使っているエディタがAtomなので
copy-as-rtfをインストール
copy-as-rtf

しかし・・・
シェルスクリプトではうまくコピーできない。

Package error (copy-as-rtf)
Error calling `pygmentize`: Error: no lexer for alias 'shell script' found

がでる。
解決法があったのだが、理解できてないので修正できなかった。
Error calling `pygmentize`: Error: no lexer for alias 'typescript' found · Issue #30 · lucasmazza/copy-as-rtf · GitHub

Atomでコードファイルの種類をpythonとかRに変えてしまえば
シンタックスハイライトがついたままコピーできて
PowerPointに貼り付けられたのでとりあえずこれで。

Pythonのpygmentsを使っているらしいのだが、
これを使うとcat/lessコマンドでもハイライトを付けて
表示できるらしい。

cat, less コマンドの表示を Syntax Highlight させる - xykのブログ
あとで試す。

tmux

ターミナルをいくつか立ち上げてると
タブもいいんだけど画面が分割できたらべんりだなーって
思っていたらtmuxってのがあった
ターミナルマルチプレクサ tmux をカスタマイズする - Qiita
tmuxのすすめ - catatsuy's Blog


ペイン間の移動もキーボードからなんだけど、
マウスでできる方法もあった
tmux v2.1からmouse関連の設定が変わった - Qiita
Linux - WSL環境上のtmuxにてマウスホイールスクロールが出来ない|teratail
bash on windowsってすごーい!powerlineとTmuxを駆使してMacのターミナルっぽくする(Tera Termも卒業する) - Qiita

いろいろ写させてもらって
結果がこれ
.tmux.conf

# デフォルトのシェルを設定する
set-option -g default-shell /bin/bash
set-option -g default-command /bin/bash

# ウィンドウのインデックスを1から始める
set -g base-index 1

# ペインのインデックスを1から始める
setw -g pane-base-index 1

# 設定ファイルをリロードする
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# マウスを使用する
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

# 256色端末を使用する
set -g default-terminal "screen-256color"

# ステータスバーの色を設定する
set -g status-fg white
set -g status-bg black

# ウィンドウリストの色を設定する
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim
# アクティブなウィンドウを目立たせる
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

# ペインボーダーの色を設定する
set -g pane-border-fg green
set -g pane-border-bg black
# アクティブなペインを目立たせる
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

# コマンドラインの色を設定する
set -g message-fg white
set -g message-bg black
set -g message-attr bright

# ステータスバーを設定する
## 左パネルを設定する
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
## 右パネルを設定する
set -g status-right "#[fg=cyan][%Y-%m-%d(%a) %H:%M]"
## リフレッシュの間隔を設定する(デフォルト 15秒)
set -g status-interval 60
## ウィンドウリストの位置を中心寄せにする
set -g status-justify centre
## ヴィジュアルノーティフィケーションを有効にする
setw -g monitor-activity on
set -g visual-activity on
## ステータスバーを上部に表示する
set -g status-position top

マウス操作はtmuxのバージョンによって設定が変わる

コピーはshift+右クリック
vim clipboard 有効 - パテで実行中のtmuxからwindowsクリップボードにコピーする方法 - CODE Q&A 問題解決

tmuxのチートシート
tmuxチートシート - Qiita

VcXsrvの自動起動

windowsを起動するときにVcXsrvも起動したい

実行ファイルにオプションを付けたショートカットを
スタートアップフォルダに保存しとけばいいっぽいんだけど
windows起動のたびに設定画面が出てきて若干めんどい

XLaunch - Finish configuration
コンフィグファイルを指定して起動もできるらしい

xlaunchを起動するといくつか設定パネルが出てくる
デフォルトのまま次に進めて
f:id:mecobalamin:20181126214933p:plain
f:id:mecobalamin:20181126214940p:plain
f:id:mecobalamin:20181126214946p:plain
設定を"config.xlaunch"という名前で
xlaunch.exeのあるフォルダに保存する
f:id:mecobalamin:20181126214951p:plain

ショートカットを[右クリック]->[リンク先]で
実行ファイルにconfing.xlaunchを読み込ませて起動

D:\VcXsrv\xlaunch.exe -run config.xlaunch

ショートカットはスタートアップフォルダに保存する
demura.net | WSL: Xサーバーを自動起動しよう!

スタートアップフォルダは、[ファイル名を指定して実行]の
ダイアログのボックスに

shell:startup

を入れて実行すると開く

これでwindows起動時にVcXsrvをタスクトレイに最小化できた

vimのインストール、再び

vimクリップボードを使えるように
インストールを再挑戦
WindowsでLinux commandを動かす - mecobalamin’s diary

前の記事といろいろかぶる

ホームにtmpディレクトリを作ってそこに
gitからソースコードをダウンロード

$ mkdir ~/tmp
$ cd ~/tmp
$ git clone https://github.com/vim/vim.git

vimのビルド
vim-jp » Linuxでのビルド方法

ubuntuでbuild環境を構築
【Ubuntu 18.04 LTS Server】gcc, make などの開発ツールをインストールして使う | The modern stone age.

前回足りなくてエラーが出たライブラリは
前もってインストール

$ sudo apt install build-essential
$ sudo apt install libxmu-dev libgtk2.0-dev libxpm-dev
$ sudo apt-get install ncurses-dev

そこそこ大きいし時間かかる
160 MBと366 MBと1.4 MB

vimのインストール

$ cd /home/hogehoge/tmp/vim/src
$ ./configure --prefix=/home/hogehoge/ --with-features=huge --with-x=yes --enable-gui=yes --enable-gtk2-check --enable-multibyte -enable-fail-if-missing
$ make
$ make install

ちなみに

--prefix; インストール先
--with-x=yes --enable-gui=yes --enable-gtk2-check: +clipboardに必要

やり直すときはこのコマンド

$ make distclean
$ rm ~/tmp/vim/src/auto/config.cache

インストール結果の確認

$ ~/bin/vim --version | grep clipboard
+clipboard         +jumplist          +persistent_undo   +vertsplit
+emacs_tags        +mouse_dec         -sun_workshop      +xterm_clipboard

.bashrcで~/bin/にパスを通してとりあえず終了

linuxディレクトリっていろいろあってなにがなんだか。
インストール先とかソースコードの保存先とかここを参考にした
https://oxynotes.com/?p=5987#17

ここを参考にVcXsrvを入れて起動
Windows Subsystem Linux - Make VIM use the clipboard? - Super User

.vimrcに

set clipboard=unnamed,autoselect

を追加して、

.bashrcに

export DISPLAY=localhost:0.0

を記入して.bashrcを再読込

$ source ~/.bashrc

これでで無事使えるようになった

.vimrcはとりあえずこんな感じ

set clipboard=unnamed,autoselect
set number
set cmdheight=2
set smartindent
set showmatch
set cursorline
set backspace=indent,eol,start
syntax on
set laststatus=2

ところでヤンクってどういう意味なんだろう
yankの意味・使い方|英辞郎 on the WEB:アルク