mecobalamin’s diary

人間万事塞翁が馬

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

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

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

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

コードに色付して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のブログ
あとで試す。

6 March 2019追記
windows + atom + copy-as-rtfでは
alt + rでatomからコードをコピー
ctrl + vでPowerPointに色付きで貼り付け

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 linux - パテで実行中のtmuxからwindowsクリップボードにコピーする方法 - CODE Q&A 問題解決

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

VcXsrvの自動起動


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

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

http://www.straightrunning.com/XmingNotes/IDH_FINISH.htm
コンフィグファイルを指定して起動もできるらしい

xlaunchを起動するといくつか設定パネルが出てくる
デフォルトのまま次に進めて



設定を"config.xlaunch"という名前で
xlaunch.exeのあるフォルダに保存する

xlaunch.exeのショートカットを作成して、
実行ファイルにconfig.xlaunchを読み込ませる設定をする

ショートカットを[右クリック]してプロパティを開き、
[リンク先]に-run config.xlaunchを加える

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

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

windows10の場合は左下のスタートボタンを右クリックし、
メニューから[ファイル名を指定して実行]をクリックすると
ダイアログが出てくる

ダイアログのボックスに

shell:startup


を入れてOKをクリックするとスタートアップフォルダが
開くのでショートカットをコピペ

これで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環境を構築
https://www.yokoweb.net/2018/05/04/ubuntu-18_04-gcc-makme-install/

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

$ 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ディレクトリっていろいろあってなにがなんだか。
インストール先とかソースコードの保存先とかここを参考にした
Linuxの基本の基本。Linuxの基本的なディレクトリ構成 | OXY NOTES

Windowsクリップボードを使うときは
VcXsrvが必要

ここを参考にVcXsrvを入れて起動
Windows Subsystem Linux - Make VIM use the clipboard? - Super User
VcXsrvの自動起動についての記事を書いた
mecobalamin.hatenablog.com

.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:アルク

2 February 2020 追記
実際にコピーするときは
コマンドモード(esc)からビジュアルモード(v)に入って
コピーしたい範囲を選択する
そしてレジスタを使ってヤンクする
具体的には以下のキーを順に押す

"+y

または、siftを押してコピーモードに入って
マウスで選択したら選択範囲を右クリック

追記ここまで