どうしてもPBHoneyをmacOS Sierraで動かしたい時
ゴール: macOS SierraでPBHoneyを動かす。
Softwares
Environment
Install Blasr
blasr 1.3.1をインストールする。ただし、Blasr 1.3.1はclangでビルドできない。
macOSのgccはclangなので、まずGCC 5を入れる。 5を入れたのは上のリンクで成功したと言っている人がいたから。
brew install gcc@5
次に、HDF5 1.8.14 をビルドして、brewのCellerに突っ込んでlinkしておく。
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.14/src/hdf5-1.8.14.tar.gz tar -xvvzf hdf5-1.8.14.tar.gz cd hdf5-1.8.14 mkdir -p /usr/local/Cellar/hdf5/1.8.14 CC=gcc-5 CXX=g++-5 ./configure --prefix /usr/local/Cellar/hdf5/1.8.14 --enable-cxx make make install brew link hdf5 # hdf5をインストールして**いない**場合 brew switch hdf5 1.8.14 # hdf5をインストールして**いる**場合
Blasrをインストールする
mkdir -p /usr/local/Cellar/blasr/2.2 cd blasr-smrtanalysis-2.2/ make HDF5INCLUDEDIR=/usr/local/opt/hdf5/include \ HDF5LIBDIR=/usr/local/opt/hdf5/lib \ CC=gcc-5 CXX=g++-5 # Homebrewはblasrのバージョンをurlから推測するので、 # Homebrew的には2.2 make install PREFIX=/usr/local/Cellar/blasr/2.2 brew link blasr
確認
blasr -version
以下の通り表示されれば成功
blasr 1.3.1
Install Samtools
samtools (0.1.17)をインストールする。
mkdir -p /usr/local/Cellar/samtools/0.1.17/bin/ wget -Osamtools-0.1.17.tar.gz https://github.com/samtools/samtools/archive/0.1.17.tar.gz tar -xvvzf samtools-0.1.17.tar.gz cd samtools-0.1.17 make CC=gcc-5 cp samtools /usr/local/Cellar/samtools/0.1.17/bin/ brew link samtools
Install pysam, numpy, h5py
pip install pysam numpy h5py
Install PBSuite
HOMEBREW_CC=gcc-5 HOMEBREW_CXX=g++-5 brew install pbsuite
~/.bash_profile
(もしくは使ってるシェルの設定)にPYTHONPATHを書いておく
export PYTHONPATH=/usr/local/opt/pbsuite:$PYTHONPATH
反映する
source ~/.bash_profile
Run Workflow
HoneyReadme.txt
を読む。
pyenv
のようなものを使っている人は2.7系にスイッチしておくこと。
pyenv shell 2.7.13
試しにワークフローを走らせる。
cd /usr/local/Cellar/pbsuite/14.7.14/docs/honeyExample ./workflow.sh
特にエラーがでなければOK. 以下の通り。
Mapping [INFO] 2017-03-11T15:06:44 [blasr] started. [INFO] 2017-03-11T15:07:21 [blasr] ended. Extracting Tails 2017-03-11 15:07:21,634 [INFO] Running /usr/local/bin/Honey.py pie mapping.sam lambda_modified.fasta 2017-03-11 15:07:21,634 [INFO] Extracting tails 2017-03-11 15:07:21,904 [INFO] Parsed 413 reads 2017-03-11 15:07:21,905 [INFO] Found 250 tails 2017-03-11 15:07:21,905 [INFO] 13 reads had double tails 2017-03-11 15:07:21,905 [INFO] Mapping Tails 2017-03-11 15:07:29,754 [INFO] [0, '[INFO] 2017-03-11T15:07:21 [blasr] started.\n[INFO] 2017-03-11T15:07:29 [blasr] ended.\n', None] 2017-03-11 15:07:29,754 [INFO] Consolidating alignments 2017-03-11 15:07:29,796 [INFO] 170 tails mapped Sam To Bam [samopen] SAM header is present: 1 sequences. Calling MD Tag [fai_load] build FASTA index. Calling Tails 2017-03-11 15:07:31,010 [INFO] Running /usr/local/bin/Honey.py tails mappingFinal.bam 2017-03-11 15:07:31,012 [INFO] Parsing Reads 2017-03-11 15:07:31,039 [INFO] Writing Results 2017-03-11 15:07:31,039 [INFO] Chrom lambda_NEB3011_lambda_NEB3011 made 113 pre-filter clusters 2017-03-11 15:07:31,041 [INFO] Chrom lambda_NEB3011_lambda_NEB3011 made 5 post-filter clusters 2017-03-11 15:07:31,041 [INFO] Finished Calling Spots 2017-03-11 15:07:31,662 [INFO] Running /usr/local/bin/Honey.py spots mappingFinal.bam 2017-03-11 15:07:31,678 [INFO] making container for lambda_NEB3011 (lambda_NEB3011:0-48802 48802 bp) 2017-03-11 15:07:31,681 [INFO] parsing bam 2017-03-11 15:07:31,699 [INFO] 583 reads to parse 2017-03-11 15:07:31,746 [INFO] parsed 18 reads (3 % complete) 2017-03-11 15:07:31,766 [INFO] parsed 24 reads (4 % complete) 2017-03-11 15:07:31,786 [INFO] parsed 30 reads (5 % complete) ... 2017-03-11 15:07:32,970 [INFO] parsed 572 reads (98 % complete) 2017-03-11 15:07:32,976 [INFO] parsed 578 reads (99 % complete) 2017-03-11 15:07:32,982 [INFO] parsed 583 reads (100 % complete) 2017-03-11 15:07:32,982 [INFO] parsed 583 reads 2017-03-11 15:07:32,998 [INFO] calling spots 2017-03-11 15:07:33,034 [INFO] MaxCov:32 MeanCov:16 StdCov:5 MinCov:0 2017-03-11 15:07:33,034 [INFO] MIS processing 2017-03-11 15:07:33,046 [INFO] RateMean 0.042394 -- RateStd 0.010260 2017-03-11 15:07:33,049 [INFO] MaxSig: 0.040435 MeanSig: 0.000013 StdSig 0.005060 MinSig: -0.052323 2017-03-11 15:07:33,049 [INFO] 0 MIS entries 2017-03-11 15:07:33,050 [INFO] INS processing 2017-03-11 15:07:33,063 [INFO] RateMean 0.000718 -- RateStd 0.002610 2017-03-11 15:07:33,067 [INFO] MaxSig: 0.045733 MeanSig: 0.000000 StdSig 0.002097 MinSig: -0.046218 2017-03-11 15:07:33,069 [INFO] 1 INS entries 2017-03-11 15:07:33,070 [INFO] DEL processing 2017-03-11 15:07:33,081 [INFO] RateMean 0.044015 -- RateStd 0.052830 2017-03-11 15:07:33,082 [INFO] MaxSig: 0.396365 MeanSig: 0.000004 StdSig 0.024411 MinSig: -0.428616 2017-03-11 15:07:33,083 [INFO] 1 DEL entries 2017-03-11 15:07:33,083 [INFO] Filtering INS results 2017-03-11 15:07:33,121 [INFO] found 1 spots 2017-03-11 15:07:33,131 [INFO] finished 583 reads 2017-03-11 15:07:33,132 [INFO] finished 1 spots
ViennaRNA Package 1.xをmacOS Sierraでビルドする
用があってViennaRNAの1系を使うことがあって、ビルドしようと思ったら通らなかった。
Undefined symbols for architecture x86_64: "_HairpinE", referenced from: _subopt in libRNA.a(libRNA_a-subopt.o) _repeat in libRNA.a(libRNA_a-subopt.o) "_LoopEnergy", referenced from: _subopt in libRNA.a(libRNA_a-subopt.o) _repeat in libRNA.a(libRNA_a-subopt.o) ld: symbol(s) not found for architecture x86_64
リンカーでエラーが出る。nm
でlibRNA_a-fold.o
を確認すると確かにSymbolがundefinedになっていた。
環境
$ gcc --version Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 8.0.0 (clang-800.0.42.1) Target: x86_64-apple-darwin16.4.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
方法
lib/fold.c
に以下のようにINLINEマクロが定義されているので、変更する。
変更前
27 #ifdef __GNUC__ 28 #define INLINE inline 29 #else 30 #define INLINE 31 #endif
変更後
27 #ifdef __GNUC__ 28 #define INLINE 29 #else 30 #define INLINE 31 #endif
原因
https://clang.llvm.org/compatibility.html#inline
GNU C89 mode (used by default in older versions of GCC) is the C89 standard plus a lot of extensions. C89 doesn’t have an inline keyword, but GCC recognizes it as an extension and just treats it as a hint to the optimizer.
GCC C89モードのinlineはおかしいらしい。以下の方法でもビルドできる
$ CFLAGS=" -std=gnu89 " ./configure
2015年
- 作者: ミシェルウエルベック,佐藤優,大塚桃
- 出版社/メーカー: 河出書房新社
- 発売日: 2015/09/11
- メディア: 単行本
- この商品を含むブログ (21件) を見る
前半はあまりコードを書かない年だった。後半はそれなりに書いた気がする。
2015年の後半からコードレビューをする習慣が少しついた。それまでは一人で書き散らかして一人で昔の自分の書き散らしたコードと対峙し続けていたので、人の目が入ってコードが綺麗になっていくのは面白い体験だったし、なんでもっと早くやらなかったんだろうと思った。 そんなわけで後半はクソコードを書きまくっては怒られ続けるみたいな日々が続いた。年の最後の方でようやく、テストを書いてから実装することを覚えた。面白機能を実装してはあちこちから火を吹いていた頃に比べると安心感があって、これも新鮮だった。人とコードを書くというのはこういうことかと思う。
あまり一つのことについて深く考える時間を取れない一年だった気がする。作業するのをやめてずっと考えていたいと思っていたけれど、そうもいかなかった。深く考える時間がなかったのか、注意が散ってしまって結果的に深く考えることができなかったのかはわからない。
夢日記を書くように気をつけていた時期があった。起きてすぐに書いた文章はあまりよくできていないことが多くて、推敲を重ねて多少満足のできるような文章にするのは、それまであまりやったことのないことだったこともあって面白かった。夢日記をつけていたら、夢の中で夢を見て、さらにその中で夢を見るということが何回か続いて、怖くなってしまった。最近はあまり夢を見ないので書いていない。
文章を書くことに慣れようと思って、短い文章をよく書いていた。iPhoneのメモに思いついた端からくだらないことを書き付けていたら、多少文章を書くハードルは下がった気がする。メモはその時に思ったことが曖昧なまま書き付けられていて、読み返すのは厳しい。
ふとしたきっかけで色々なことがわかって、結果的に毎日薬を飲む生活が始まった。薬を飲む前と飲んだ後で多少感覚に違いがあるのは興味深かった。何かが良くなったかと言われると何とも言えないのがつらいところだけど、今のところは続けていこうと思っている。
ウェルベックの服従を読んでいる。年が明ける前に読み終えるつもりだったけれど、結局半分くらい読んだところで年が明けてしまった。プラットフォームを読んだ時にも思ったけれど、主人公の何かを諦めたような、無気力な感じが良い。今年はあまり本を読まなかった。 http://hondana.org/hrykを見ると、数冊しか新しく追加されていない。
カミュ-サルトル論争をカバンに入れっぱなしにして、何回も読んでいたと思う。何回も読んでいると、サルトルの返事がうまいと思えてきた。特に書き出しの文章がいい。こういう文章を送りつけて絶交したいと思った。
新年の抱負は特にないけれど、もっとロボットのようになりたいと思う。
- 作者: 佐藤朔
- 出版社/メーカー: 新潮社
- 発売日: 1969/12/02
- メディア: 文庫
- 購入: 1人 クリック: 25回
- この商品を含むブログ (16件) を見る
高松
高松に行った時の感想が下書きに残っていた。
市内
- 街のサイズがちょうど良くて便利
- 県庁が良い
- 電車に乗って風景を見ていると、サイズが大きいのか小さいのかわからなくなる
- 山があって街があって、いきなり海になる
- とにかくいきなり海になる
- 狭いのか広いのかよくわからなくなる
- 箱庭を見ている感じ
高松、サイズがよくわからなくて、小さい頃に自分の体が異常に大きくなって街を見下ろすような感覚がした時の事を思い出した。
年末年始
山は冬が厳しいので、年末は気候が温暖な実家に行った。
- 作者: ウンベルトエーコ,河島英昭
- 出版社/メーカー: 東京創元社
- 発売日: 1990/02
- メディア: 単行本
- 購入: 11人 クリック: 197回
- この商品を含むブログ (181件) を見る
2015年
去年
2014年最後に見た夢は後部がガラス張りになった飛行機でロシアに向かう途中、ミサイルに追われる夢だった。後部がガラス張りになっていたせいで飛んでくるミサイルがよく見えて緊張感があった。 飛行機にミサイルが当たって、爆発する瞬間に飛行機は加速、無事墜落すること無く地下の滑走路に辿り着いた。
去年
- 襲ってくるゾンビを端から撃ちつつショッピングモールの屋上に追いつめられたところで年が終わったイメージ。
- それなりに本を読んでいたけれど、小説やSFに偏っていた。
- コードを書く時間が十分に取れていなかった。
今年
体感する1年が短くなってきたので、時間をあらかじめ決めて無理矢理何かを進めないと一歩も進まないまま飛んでくる物を撃ち落としているうちに終わると思う。気をつけたい。読書にしても勉強するにしても計画を立てていきたい。
pkgsrcのメモ
Linuxで使えるhomebrewのようなものが無いか探していて、pkgsrcを見つけた。pkgsrcはNetBSDのパッケージマネージャーとして開発されたツールだが、LinuxやMac OS Xでも使う事ができるらしい。NFSでホームディレクトリを共有しているサーバ群で同一の環境を使いたかったので、パッケージを色々と入れてみた。CPUが異なっていたり、GCCのバージョンがそれぞれ違うサーバ上で動作する環境を構築するには若干の設定が必要だったのでメモ。
インストール
インストールにはCVSを使う。homebrewがgitのリポジトリでFormulaを配布しているような感じ。ドキュメント通りにチェックアウトすると、$HOME以下にpkgsrcディレクトリができる。pkgsrcディレクトリ以下にパッケージが入っていて、そこに移動してbmakeするとビルドが実行されるようになっている。
$ cvs -danoncvs@anoncvs.netbsd.org:/cvsroot checkout pkgsrc $ cd pkgsrc/bootstrap $ ./bootstrap --unprivileged
bootstrapスクリプトを走らせるとBSD Make等のパッケージをビルドするのに必要なツールがインストールされる。ルートを持っていないので--unprivilegedオプションを加える。
無事インストールができたらまずGCCをビルドする。使っているサーバはものによってGCCのバージョンが違っているし、古いものばっかりなので新しいものを入れた。
$ cd pkgsrc/lang/gcc48 $ bmake install $ bmake clean
GCC4.8は$HOME/pkg/gcc48にインストールされる。
設定
pkgsrcの設定は$HOME/pkg/etc/mk.confに置いてある。
# Example /home/foo/pkg/etc/mk.conf file produced by bootstrap-pkgsrc # 2013年 11月 02日 土曜日 00:00:00 JST .ifdef BSD_PKG_MK # begin pkgsrc settings UNPRIVILEGED= yes PKG_DBDIR= /home/foo/pkg/var/db/pkg LOCALBASE= /home/foo/pkg VARBASE= /home/foo/pkg/var PKG_TOOLS_BIN= /home/foo/pkg/sbin PKGINFODIR= info PKGMANDIR= man ALLOW_VULNERABLE_PACKAGES= yes # USE_LIBTOOL= yes # 不要 PREFER_PKGSRC=yes CC= /home/foo/pkg/gcc48/bin/cc CXX= /home/foo/pkg/gcc48/bin/g++ # LDFLAGS += -L/home/foo/pkg/lib # 不要 CFLAGS += -mtune=generic -mfpmath=sse MAKE_JOBS = 4 .endif # end pkgsrc settings
PREFER_PKGSRCをyesにしておくとpkgsrcで入っているライブラリが優先的に使われる。USE_LIBTOOLをyesにするとpkgsrcのlibtoolが使われる。この2つは設定しておくと事故が減る。その他、CFLAGSとかLDFLAGSを適当に追加した。
bmake, bootstrap-mk-filesを入れ直す
bmakeはシステムのGCCでビルドされたものなので、入れ直す。
$ cd pkgsrc/devel/bmake
$ bmake reinstall
$ bmake clean
$ cd pkgsrc/pkgtools/bootstrap-mk-files/
$ bmake reinstall
$ bmake clean
pkgfindを入れる
パッケージを探すコマンドは標準でついていないので、pkgfindを入れる。
$ cd pkgsrc/pkgtools/pkgfind $ bmake install $ bmake clean
操作
パッケージを探す
$ pkgfind foovar
インストールされているパッケージの一覧を表示する
$ pkg_info libelf-0.8.13 ELF object file access library gmp-5.1.2 Library for arbitrary precision arithmetic mpfr-3.1.2 GMP-based library for multiple-precision floating-point computations mpcomplex-1.0.1 Multiprecision complex arithmetic library gcc48-4.8.1 The GNU Compiler Collection (GCC) - 4.8 Release Series pkgfind-20111022 Find packages by package name in pkgsrc zlib-1.2.8 General purpose data compression library digest-20121220 Message digest wrapper utility tnftp-20070806 The enhanced FTP client in NetBSD nbpatch-20100124 Patch files using diff output openssl-1.0.1enb2 Secure Socket Layer and cryptographic library pax-20080110nb2 POSIX standard archiver with many extensions gcc48-libs-4.8.1nb3 The GNU Compiler Collection (GCC) support shared libraries. pcre-8.33 Perl Compatible Regular Expressions library libffi-3.0.13 Foreign function interface bootstrap-mk-files-20130912 *.mk files for the bootstrap bmake utility bmake-20110606nb1 Portable (autoconf) version of NetBSD 'make' utility libtool-base-2.4.2nb5 Generic shared library support script (the script itself) libiconv-1.14nb2 Character set conversion library tcp_wrappers-7.6.4 Monitor and filter incoming requests for network services pkg-config-0.28 System for managing library compile/link flags perl-5.18.1nb1 Practical Extraction and Report Language
パッケージをインストールする
$ cd pkgsrc/${category}/${package_name} $ bmake install $ bmake clean # 依存しているパッケージもcleanする $ bmake clean-depends
パッケージを入れ直す
$ cd pkgsrc/${category}/${package_name} $ bmake reinstall
パッケージを削除する
$ pkg_delete package_name
依存パッケージを表示する
$ cd pkgsrc/${category}/${package_name} $ bmake show-depends