投稿

1月, 2018の投稿を表示しています

minimac3のビルドとダイナミックリンクライブラリエラー

minimac3 をbuildしたいが、gcc7.2ではbuildがうまくいかなかった。どうやら内部でlibStatGenというライブラリを使用しているが、これが古い記法で書かれているらしく、gcc7.2では逆に下のエラーが出てbuildできなかった。 Parameters.cpp: In member function ‘virtual void LongParameters::Status()’: Parameters.cpp:573:25: error: use of an operand of type ‘bool’ in ‘operator++’ is deprecated [-Werror=deprecated] legacy_count++; ^~ cc1plus: all warnings being treated as errors make[3]: *** [obj/Parameters.o] Error 1 make[2]: *** [general] Error 2 make[1]: *** [../Library/libStatGenForMinimac3/libStatGen.a] Error 2 make[1]: Leaving directory `/home/Minimac3/src' make: *** [src] Error 2 探すと legacy_count の型を int にしたらよいとかいうのも見つけたけど、そこを直してもまたエラーが。結局やったことは libStatgen をcloneしてきてlibStatgen/generalをMinimac3/Liberary/libStatgenforMinimac/generalと入れ替えて再度build。通ったと思ったけど実行しようとすると ./Minimac3: /opt/gcc-4.9.1/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./Minimac3) みたいなエラー。ダイナミックリンクライブラリが古い(‘Д’) これには以前も遭遇しており、解決したいところではあった。調...

rmarkdown on mac

気合いをいれてエントリを作りましたが大変簡単でした。 brew install pandoc R > install.packages("rmarkdown") > render("my_first_rmarkdown.rmd")

quoteつきのCSVをなんとかしたい

CSVファイルのアイテムに , を入れたいときに " でくくるときがある。通常のUNIXコマンドはこれを認識できない。なんやかやする方法はあるが、調べると csvquote というコマンドがある。 github からclone(なりダウンロード)なりして。レポジトリディレクトリ内で make sudo make install で csvquote というコマンドが使える。一次的にquote内の , を ⋅ \cdot ⋅ に置き換えることで他のコマンドによるご認識を避けているようだ。大体において cat を csvquote で置き換えることで目標は大体達成される。戻すのは csvquote -u csvquote quoted.csv | cut -d, -f 2-3 | csvquote -u とかすればquoteつき(quote内に , が含まれる)のcsvからうまく2-3列目のみ取ってくることができる。 関係ないが、以下のような記載があった。 Run-time Speed comparison Time spent processing a 100 MB CSV file on my laptop. python ~ 100 seconds lua ~ 60 awk ~ 14 luajit ~ 3.5 go ~ 1.2 C ~ 1.0 go速し

Vimれべるあっぷ

shortcut action . 直前の動作の繰り返し ; 直前のfによる移動の繰り返し f<x> 次のxまで移動 F<x> 前のxまで移動 w 次の単語まで移動 b 前の単語まで移動

gitでコミットを取り消す

git commit してから取り消したくなった。すべてを。 該当レポジトリ内で git reset --hard <commit no > で行けるらしい。でも <commit no> なんてわかりませんよ。 git log - - oneline - - graph で左から二列目の現れる7桁の英数交じりの <commit no> を使えば、その時点まで戻ることができる。 [alias] graph = log --graph --date-order -C -M --pretty= format :\ "< %h > %ad [ %an ] %Cgreen %d %Creset %s \" --all --date=short を ~/.gitconfig にコピペしておけば git graph でツリーがみられます。

プロンプトの変更

プロンプトを カレントディレクトリ みたいにしたい。カレントディレクトリのところを色付きにしておけば色々捗る。以下のように ~/.bashrc に記載すれば良い PS1=' \e [ 0;33m \] \w \e [ 0m \] \n '

Cygwin novice

修行のためCygwinをインストールしてみることにした。 公式サイト から、”Run setup-x86_64.exe any time you want to update or install a Cygwin package for 64-bit windows. ” を全部デフォルトでいく。そうすると、Cドライブ直下にCygwin64というディレクトリが作成され、その中にhomeとかがある。apt-cygはgithubにあってwgetで…ってwgetがない。当然gitも入っていない。 setup-x86_64.exe がとりあえずのパッケージインストールツールになるらしい。再度立ち上げて途中に出てくるパッケージインストールのところでwgetを探してチェック(バイナリにした)して進める。もういちどcygwinがインストールされそうで気持ち悪い。wgetが手に入ったらapt-cygというパッケージ管理ソフトをインストールする。 wget https: //github.com/transcode-open/apt-cyg/archive/master.zip cd apt -cyg -master install apt -cyg /usr/ local /bin apt -cyg update これでいろいろ入る。また、Cygwin外で書いたスクリプトなどを持っていくとCRを誤認識してまともに動かない export SHELLOPTS set -o igncr を~/.bash_profile等に記載すればよい。 いろいろ大変。

GNU parallel

シェルの作業を並列化したいときにparallelが便利らしい。&のみで何百も並列するとload averageがやばいことになっていってやがて落ちる。例えばたくさんのvcfファイルに一度にvcftoolsをかけたい時などに使える。 ../vcfs にgz.vcfファイルをたくさん持っていて、これらをすべてvcftoolsでINFO(ACとする)を取り出して ../INFOs/ ディレクトリに収めたい場合 ls -l ../vcfs/ | gawk '{ if ( 9 != "" ){printf( "../vcfs/" 9 " " ); gsub( ".vcf.gz" , "" , 9 ); printf( "../INFOs/" 9 "\n" )}; }' > infile.txt でスペース区切りで第一引数(入力ファイル名)、第二引数(出力ファイル名)を収めた infile.txt を作成する。 これを第一引数に入力ファイル名を、第二引数に出力ファイル名をとるシェル関数 vcf2info に対して以下のように食わす parallels --colsep ' ' -a infile.txt vcf2info いきなり実行するのに自信がなければ parallels -- colsep ' ' -a infile . txt -- dry -run vcf2info とすれば実行されるスクリプトが表示される。 と思ったが、自作関数をparallelに投げるには環境変数(?)にエクスポート(??)する必要があるらしい。bashだと先に export -f vcf2info とすれば上記コマンドは実行されるが zshだと簡単にはできない そうです・・・。